incd
SVE Increment Scalar by Doubleword Count
INCD <Xdn>, <pattern> {, MUL #<imm>}
Increments a register by the number of active doublewords.
Details
Increments a 64-bit scalar register by the count of active doublewords in the SVE vector length, optionally multiplied by an immediate. The increment amount is calculated as VL/8 (number of 64-bit elements) times an optional multiplier (1-16). No condition flags are affected. AArch64-only instruction requiring SVE extension.
Pseudocode Operation
count ← CountActiveDoublewords(pattern)
multiplier ← imm4 if imm4 != 0 else 1
Xdn ← Xdn + (count * multiplier)
Example
INCD Xdn, pattern
Encoding
Binary Layout
00000100
1
1
11
imm4
11100
0
pattern
Rdn
Operands
-
Xdn
Register -
pattern
Predicate Pattern
Reference (Arm A64 ISA)
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0x04F0E000 | INCD <Xdn>{, <pattern>{, MUL #<imm>}} | A64 | 00000100 | 1 | 1 | 11 | imm4 | 11100 | 0 | pattern | Rdn | ||
| 0x04F0C000 | INCD <Zdn>.D{, <pattern>{, MUL #<imm>}} | A64 | 00000100 | 1 | 1 | 11 | imm4 | 11000 | 0 | pattern | Zdn |
Description
Determines the number of active elements implied by the named predicate constraint, multiplies that by an immediate in the range 1 to 16 inclusive, and then uses the result to increment the scalar destination.
The named predicate constraint limits the number of active elements in a single predicate to:
Unspecified or out of range constraint encodings generate an empty predicate or zero element count rather than Undefined Instruction exception.
Operation
CheckSVEEnabled(); integer count = DecodePredCount(pat, esize); constant integer VL = CurrentVL; bits(64) operand1 = X[dn, 64]; X[dn, 64] = operand1 + (count * imm);