MOVT (scalar to table)

Move 8 bytes from general-purpose register to ZT0

This instruction moves 8 bytes to the ZT0 register at the byte offset specified by the immediate index from a general-purpose register. This instruction is UNDEFINED in Non-debug state.

Encoding: SME2

Variants: FEAT_SME2 (ARMv9.3)

313029282726252423222120191817161514131211109876543210
110000000100111000011111
off3opcRt

MOVT ZT0[<offs>], <Xt>

Decoding algorithm

if !IsFeatureImplemented(FEAT_SME2) || !Halted() then EndOfDecode(Decode_UNDEF);
constant integer t = UInt(Rt);
constant integer offset = UInt(off3);

Operation

CheckSMEEnabled();
CheckSMEZT0Enabled();
bits(512) result = ZT0[512];

Elem[result, offset, 64] = X[t, 64];
ZT0[512] = result;

Explanations

<offs>: Is the immediate byte offset, a multiple of 8 in the range of 0 to 56, encoded in the "off3" field as <offs>/8.
<Xt>: Is the 64-bit name of the general-purpose register to be transferred, encoded in the "Rt" field.