A method of processing a current instruction comprising: receiving, for metadata processing, the current instruction; and performing metadata processing for the current instruction in a metadata processing domain isolated from a code execution domain including the current instruction, said current instruction referencing a first memory location having a first metadata tag used in the metadata processing, said metadata processing for the current instruction including: performing processing to retrieve the first metadata tag from memory; prior to receiving the first metadata tag for the first memory location from the memory, determining a predicted value of the first metadata tag of the first memory location; determining, using the predicted value of the first metadata tag of the first memory location, a first result metadata tag for a result operand of the current instruction; receiving, from the memory, the first metadata tag; determining whether the first metadata tag matches the predicted value of the first metadata tag; and responsive to determining that the first metadata tag matches the predicted value of the first metadata tag, using the first result metadata tag as a final result metadata tag for the result operand. receiving, for metadata processing, the current instruction; and performing metadata processing for the current instruction in a metadata processing domain isolated from a code execution domain including the current instruction, said current instruction referencing a first memory location having a first metadata tag used in the metadata processing, said metadata processing for the current instruction including: performing processing to retrieve the first metadata tag from memory; prior to receiving the first metadata tag for the first memory location from the memory, determining a predicted value of the first metadata tag of the first memory location; determining, using the predicted value of the first metadata tag of the first memory location, a first result metadata tag for a result operand of the current instruction; receiving, from the memory, the first metadata tag; determining whether the first metadata tag matches the predicted value of the first metadata tag; and responsive to determining that the first metadata tag matches the predicted value of the first metadata tag, using the first result metadata tag as a final result metadata tag for the result operand. performing processing to retrieve the first metadata tag from memory; prior to receiving the first metadata tag for the first memory location from the memory, determining a predicted value of the first metadata tag of the first memory location; determining, using the predicted value of the first metadata tag of the first memory location, a first result metadata tag for a result operand of the current instruction; receiving, from the memory, the first metadata tag; determining whether the first metadata tag matches the predicted value of the first metadata tag; and responsive to determining that the first metadata tag matches the predicted value of the first metadata tag, using the first result metadata tag as a final result metadata tag for the result operand. <EOS>