DUP (scalar) Broadcast general-purpose register to vector elements (unpredicated) Unconditionally broadcast the general-purpose scalar source register into each element of the destination vector. This instruction is unpredicated. Green False True This instruction is used by the alias MOV (scalar, unpredicated) Unconditionally The alias is always the preferred disassembly. 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 DUP <Zd>.<T>, <R><n|SP> if !IsFeatureImplemented(FEAT_SVE) && !IsFeatureImplemented(FEAT_SME) then UNDEFINED; constant integer esize = 8 << UInt(size); constant integer n = UInt(Rn); constant integer d = UInt(Zd); <Zd> Is the name of the destination scalable vector register, encoded in the "Zd" field. <T> Is the size specifier, size <T> 00 B 01 H 10 S 11 D
<R> Is a width specifier, size <R> 01 W x0 W 11 X
<n|SP> Is the number [0-30] of the general-purpose source register or the name SP (31), encoded in the "Rn" field.
CheckSVEEnabled(); constant integer VL = CurrentVL; constant integer elements = VL DIV esize; constant integer PL = VL DIV 8; bits(64) operand; if n == 31 then operand = SP[]; else operand = X[n, 64]; bits(VL) result; for e = 0 to elements-1 Elem[result, e, esize] = operand<esize-1:0>; Z[d, VL] = result;