Move vector register to ZT0
This instruction copies 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.
| 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 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | off2 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | Zt | |||||
| opc | |||||||||||||||||||||||||||||||
if !IsFeatureImplemented(FEAT_SME_LUTv2) then EndOfDecode(Decode_UNDEF); end; let t : integer = UInt(Zt); let imm : integer = UInt(off2);
| <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. |
CheckStreamingSVEEnabled(); CheckSMEZT0Enabled(); let VL : integer{} = CurrentVL(); let tsize : integer{} = (if VL <= 512 then VL else 512) as integer{128, 256, 512}; let offset : integer = imm MOD (512 DIV tsize); var result : bits(512) = if imm == 0 then Zeros{512} else ZT0{512}(); result[offset*:tsize] = Z{VL}(t)[tsize-1:0]; ZT0{512}() = result;
This instruction is a data-independent-time instruction as described in About PSTATE.DIT.
2026-03_rel 2026-03-26 20:48:11
Copyright © 2010-2026 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.