ORR (immediate)
Bitwise inclusive OR with immediate (unpredicated)
Bitwise inclusive OR an immediate with each 64-bit element of the source vector, and destructively place the results in the corresponding elements of the source vector. The immediate is a 64-bit value consisting of a single run of ones or zeros repeating every 2, 4, 8, 16, 32 or 64 bits. This instruction is unpredicated.
Green
False
True
True
This instruction is used by the alias
ORN (immediate)
Never
See
below for details of when the alias is preferred.
0
0
0
0
0
1
0
1
0
0
0
0
0
0
ORR <Zdn>.<T>, <Zdn>.<T>, #<const>
if !IsFeatureImplemented(FEAT_SVE) && !IsFeatureImplemented(FEAT_SME) then UNDEFINED;
constant integer dn = UInt(Zdn);
bits(64) imm;
(imm, -) = DecodeBitMasks(imm13<12>, imm13<5:0>, imm13<11:6>, TRUE, 64);
<Zdn>
Is the name of the source and destination scalable vector register, encoded in the "Zdn" field.
<T>
Is the size specifier,
imm13<12>
imm13<5:0>
<T>
0
0xxxxx
S
0
10xxxx
H
0
110xxx
B
0
1110xx
B
0
11110x
B
0
111110
RESERVED
0
111111
RESERVED
1
xxxxxx
D
<const>
Is a 64, 32, 16 or 8-bit bitmask consisting of replicated 2, 4, 8, 16, 32 or 64 bit fields, each field containing a rotated run of non-zero bits, encoded in the "imm13" field.
Alias Conditions
CheckSVEEnabled();
constant integer VL = CurrentVL;
constant integer PL = VL DIV 8;
constant integer elements = VL DIV 64;
constant bits(VL) operand = Z[dn, VL];
bits(VL) result;
for e = 0 to elements-1
constant bits(64) element1 = Elem[operand, e, 64];
Elem[result, e, 64] = element1 OR imm;
Z[dn, VL] = result;