Tag mask insert
This instruction inserts the tag in the first source register into the excluded set specified in the second source register, writing the new excluded set to the destination register.
Variants: FEAT_MTE (ARMv8.5)
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | |||||||||||||||
sf | S | Rm | opcode | Rn | Rd |
---|
if !IsFeatureImplemented(FEAT_MTE) then EndOfDecode(Decode_UNDEF); constant integer d = UInt(Rd); constant integer n = UInt(Rn); constant integer m = UInt(Rm);
constant bits(64) address = if n == 31 then SP[64] else X[n, 64]; bits(64) mask = X[m, 64]; constant bits(4) tag = AArch64.AllocationTagFromAddress(address); mask<UInt(tag)> = '1'; X[d, 64] = mask;