MOVT (vector to table)

Move vector register to ZT0

Copy the source vector register to ZT0 at the vector length offset specified by the immediate index. When the index is zero, the instruction writes zeroes to the most significant (512-VL) bits of the ZT0 register. When the index is not zero, the unindexed portions of ZT0 remain unchanged.

This instruction is unpredicated.

SME2
(FEAT_SME_LUTv2)

313029282726252423222120191817161514131211109876543210
110000000100111100off20011111Zt

MOVT ZT0{[<offs>, MUL VL]}, <Zt>

if !HaveSME2() || !IsFeatureImplemented(FEAT_SME_LUTv2) then UNDEFINED; integer t = UInt(Zt); integer imm = UInt(off2);

Assembler Symbols

<offs>

Is the vector length offset, in the range 0 to 3, defaulting to 0 when omitted, encoded in the "off2" field.

<Zt>

Is the name of the scalable vector register to be transferred, encoded in the "Zt" field.

Operation

CheckSMEEnabled(); CheckSMEZT0Enabled(); constant integer VL = CurrentVL; constant integer tsize = if VL <= 512 then VL else 512; constant integer offset = imm MOD (512 DIV tsize); bits(512) result = if imm == 0 then Zeros(512) else ZT0[512]; Elem[result, offset, tsize] = Z[t, VL]<tsize-1:0>; ZT0[512] = result;

Operational information

If PSTATE.DIT is 1:


Internal version only: aarchmrs v2023-12_rel, pseudocode v2023-12_rel, sve v2023-12_rel ; Build timestamp: 2023-12-15T16:46

Copyright © 2010-2023 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.