SVE Instructions
120 ARM instructions in this extension - showing 100 per page, page 1 of 2 - click any row for encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Summary |
|---|---|---|---|
| abs | ABS <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE Integer Unary | Calculates absolute value of integers. |
| add | ADD <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Integer Binary | Adds two vectors under predicate control. |
| and | AND <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Logic | Bitwise AND of two vectors under predicate. |
| andv | ANDV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | ANDs all active elements into a scalar. |
| asr | ASR <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Shift | Shifts elements right arithmetically under predicate. |
| bic | BIC <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Logic | Bitwise AND NOT of two vectors under predicate. |
| brka | BRKA <Pd>.B, <Pg>/Z, <Pn>.B | SVE Predicate | Sets predicates up to and including the first active element. |
| brkb | BRKB <Pd>.B, <Pg>/Z, <Pn>.B | SVE Predicate | Sets predicates up to (but excluding) the first active element. |
| clasta | CLASTA <Rdn>, <Pg>, <Rdn>, <Zm>.<T> | SVE Extract | Extracts element after the last active element. |
| clastb | CLASTB <Rdn>, <Pg>, <Rdn>, <Zm>.<T> | SVE Extract | Extracts the last active element. |
| cmpeq | CMPEQ <Pd>.<T>, <Pg>/Z, <Zn>.<T>, <Zm>.<T> | SVE Compare | Sets predicate bits where elements are equal. |
| cmpgt | CMPGT <Pd>.<T>, <Pg>/Z, <Zn>.<T>, <Zm>.<T> | SVE Compare | Sets predicate bits where Zn > Zm. |
| cntp | CNTP <Xn>, <Pg>, <Pn>.<T> | SVE Count | Counts the number of true elements in a predicate. |
| compact | COMPACT <Zd>.<T>, <Pg>, <Zn>.<T> | SVE Permute | Packs active elements to the bottom of the vector. |
| cpy | CPY <Zd>.<T>, <Pg>/M, <R><n> | SVE Move | Copies scalar value to active vector elements (Alias for DUP predicated). |
| decb | DECB <Xdn>, <pattern> {, MUL #<imm>} | SVE Inc/Dec | Decrements a register by the number of active bytes. |
| decd | DECD <Xdn>, <pattern> {, MUL #<imm>} | SVE Inc/Dec | Decrements a register by the number of active doublewords. |
| decw | DECW <Xdn>, <pattern> {, MUL #<imm>} | SVE Inc/Dec | Decrements a register by the number of active words. |
| dup | DUP <Zd>.<T>, <R><n|m> | SVE Move | Broadcasts a scalar register or immediate to all active vector elements. |
| eor | EOR <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Logic | Bitwise XOR of two vectors under predicate. |
| eorv | EORV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | XORs all active elements into a scalar. |
| ext | EXT <Zdn>.<T>, <Zdn>.<T>, <Zm>.<T>, #<imm> | SVE Permute | Extracts a vector from a pair (sliding window) using immediate byte index. |
| fabs | FABS <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE FP Unary | Calculates absolute value of floats. |
| fadd | FADD <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE FP Binary | Adds floating-point elements under predicate. |
| faddv | FADDV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | Sums all active floating-point elements into a scalar result. |
| fcadd | FCADD <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T>, #<rot> | SVE FP Complex | Performs complex addition with rotation. |
| fcmeq | FCMEQ <Pd>.<T>, <Pg>/Z, <Zn>.<T>, <Zm>.<T> | SVE FP Compare | Sets predicate bits where float elements are equal. |
| fcmgt | FCMGT <Pd>.<T>, <Pg>/Z, <Zn>.<T>, <Zm>.<T> | SVE FP Compare | Sets predicate bits where float Zn > Zm. |
| fcmla | FCMLA <Zda>.<T>, <Pg>/M, <Zn>.<T>, <Zm>.<T>, #<rot> | SVE FP Complex | Performs complex multiply-accumulate. |
| fcvtzs | FCVTZS <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE Conversion | Converts floats to signed integers (Truncate). |
| fcvtzu | FCVTZU <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE Conversion | Converts floats to unsigned integers (Truncate). |
| fdiv | FDIV <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE FP Binary | Divides floating-point elements under predicate. |
| fmax | FMAX <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE FP Binary | Determines maximum value of active float elements. |
| fmaxv | FMAXV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | Finds max float in vector. |
| fmin | FMIN <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE FP Binary | Determines minimum value of active float elements. |
| fminv | FMINV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | Finds min float in vector. |
| fmla | FMLA <Zda>.<T>, <Pg>/M, <Zn>.<T>, <Zm>.<T> | SVE FP Ternary | Calculates (Zda + Zn * Zm) under predicate. |
| fmls | FMLS <Zda>.<T>, <Pg>/M, <Zn>.<T>, <Zm>.<T> | SVE FP Ternary | Calculates (Zda - Zn * Zm) under predicate. |
| fmul | FMUL <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE FP Binary | Multiplies floating-point elements under predicate. |
| fneg | FNEG <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE FP Unary | Negates floats. |
| fsqrt | FSQRT <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE FP Unary | Calculates square root of floats. |
| fsub | FSUB <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE FP Binary | Subtracts floating-point elements under predicate. |
| incb | INCB <Xdn>, <pattern> {, MUL #<imm>} | SVE Inc/Dec | Increments a general-purpose register by the number of active bytes in the pattern. |
| incd | INCD <Xdn>, <pattern> {, MUL #<imm>} | SVE Inc/Dec | Increments a register by the number of active doublewords. |
| incw | INCW <Xdn>, <pattern> {, MUL #<imm>} | SVE Inc/Dec | Increments a register by the number of active words. |
| index | INDEX <Zd>.<T>, <Start>, <Step> | SVE Index | Generates a vector of indices: V[i] = Start + i * Step. |
| insr | INSR <Zdn>.<T>, <R><m> | SVE Move | Inserts scalar into bottom of vector, shifting other elements up. |
| lasta | LASTA <Vd>.<T>, <Pg>, <Zn>.<T> | SVE Extract | Extracts element after last active (SIMD scalar destination). |
| lastb | LASTB <Vd>.<T>, <Pg>, <Zn>.<T> | SVE Extract | Extracts last active element (SIMD scalar destination). |
| ld1b | LD1B { <Zt>.B }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads bytes from memory into a vector under predicate control. |
| ld1d | LD1D { <Zt>.D }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads doublewords from memory into a vector under predicate control. |
| ld1h | LD1H { <Zt>.H }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads halfwords from memory into a vector under predicate control. |
| ld1w | LD1W { <Zt>.S }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads words from memory into a vector under predicate control. |
| ld1w | LD1W { <Zt>.S }, <Pg>/Z, [<Xn|SP>, <Zm>.S, SXTW #<shift>] | SVE Gather | Loads words from non-contiguous addresses (Scatter-Gather). |
| ldff1b | LDFF1B { <Zt>.B }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads bytes speculatively; suppresses faults after the first active element. |
| ldff1d | LDFF1D { <Zt>.D }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads doublewords speculatively; suppresses faults after the first active element. |
| ldff1h | LDFF1H { <Zt>.H }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads halfwords speculatively; suppresses faults after the first active element. |
| ldff1w | LDFF1W { <Zt>.S }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads words speculatively; suppresses faults after the first active element. |
| ldnf1b | LDNF1B { <Zt>.B }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads bytes without faulting; returns 0 if fault occurs. |
| ldnf1d | LDNF1D { <Zt>.D }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads doublewords without faulting. |
| ldnf1h | LDNF1H { <Zt>.H }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads halfwords without faulting. |
| ldnf1w | LDNF1W { <Zt>.S }, <Pg>/Z, [<Xn|SP>] | SVE Load | Loads words without faulting. |
| lsl | LSL <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Shift | Shifts elements left under predicate. |
| lsr | LSR <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Shift | Shifts elements right logically under predicate. |
| mul | MUL <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Integer Binary | Multiplies two vectors under predicate. |
| neg | NEG <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE Integer Unary | Negates integers. |
| not | NOT <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE Integer Unary | Inverts bits. |
| orr | ORR <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Logic | Bitwise OR of two vectors under predicate. |
| orv | ORV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | ORs all active elements into a scalar. |
| pfalse | PFALSE <Pd>.B | SVE Predicate | Clears all elements of the predicate register. |
| pfirst | PFIRST <Pd>.B, <Pg>, <Pn>.B | SVE Predicate | Sets destination predicate to true only at the first active element. |
| pnext | PNEXT <Pdn>.<T>, <Pg>, <Pdn>.<T> | SVE Predicate | Finds the next active predicate bit. |
| ptest | PTEST <Pg>, <Pn>.B | SVE Predicate | Updates processor flags (NZCV) based on predicate state. |
| ptrue | PTRUE <Pd>.<T> {, <pattern>} | SVE Predicate | Sets elements of the predicate register to true (all active). |
| rbit | RBIT <Zd>.<T>, <Pg>/M, <Zn>.<T> | SVE Permute | Reverses bits in each element. |
| rev | REV <Zd>.<T>, <Zn>.<T> | SVE Permute | Reverses the order of elements in the vector. |
| revb | REVB <Zd>.<T>, <Pg>/M, <Zn>.<T> | SVE Permute | Reverses bytes within 16/32/64-bit elements. |
| revh | REVH <Zd>.<T>, <Pg>/M, <Zn>.<T> | SVE Permute | Reverses halfwords within 32/64-bit elements. |
| revw | REVW <Zd>.D, <Pg>/M, <Zn>.D | SVE Permute | Reverses words within 64-bit elements. |
| saddv | SADDV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | Sums all active signed elements into a scalar result. |
| scvtf | SCVTF <Zdn>.<T>, <Pg>/M, <Zdn>.<T> | SVE Conversion | Converts signed integers to floats. |
| sdiv | SDIV <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Integer Binary | Divides signed integers. |
| sdot | SDOT <Zda>.<T>, <Zn>.<Tb>, <Zm>.<Tb> | SVE Dot Product | Computes dot product of signed integers (AI Acceleration). |
| sel | SEL <Zd>.<T>, <Pg>, <Zn>.<T>, <Zm>.<T> | SVE Select | Selects elements from Zn or Zm based on predicate. |
| smax | SMAX <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Integer Binary | Determines maximum signed value per element. |
| smaxv | SMAXV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | Finds max signed element in vector. |
| smin | SMIN <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Integer Binary | Determines minimum signed value per element. |
| sminv | SMINV <Vd>, <Pg>, <Zn>.<T> | SVE Reduction | Finds min signed element in vector. |
| splice | SPLICE <Zdn>.<T>, <Pg>, <Zdn>.<T>, <Zm>.<T> | SVE Permute | Splices two vectors based on the last active element of the first. |
| st1b | ST1B { <Zt>.B }, <Pg>, [<Xn|SP>] | SVE Store | Stores active bytes from vector to memory. |
| st1d | ST1D { <Zt>.D }, <Pg>, [<Xn|SP>] | SVE Store | Stores active doublewords from vector to memory. |
| st1h | ST1H { <Zt>.H }, <Pg>, [<Xn|SP>] | SVE Store | Stores active halfwords from vector to memory. |
| st1w | ST1W { <Zt>.S }, <Pg>, [<Xn|SP>] | SVE Store | Stores active words from vector to memory. |
| st1w | ST1W { <Zt>.S }, <Pg>, [<Xn|SP>, <Zm>.S, SXTW #<shift>] | SVE Scatter | Stores words to non-contiguous addresses. |
| sub | SUB <Zdn>.<T>, <Pg>/M, <Zdn>.<T>, <Zm>.<T> | SVE Integer Binary | Subtracts vector Zm from Zdn under predicate. |
| sunpkhi | SUNPKHI <Zd>.<T>, <Zn>.<Tb> | SVE Permute | Unpacks and sign-extends upper half of vector elements. |
| sunpklo | SUNPKLO <Zd>.<T>, <Zn>.<Tb> | SVE Permute | Unpacks and sign-extends lower half of vector elements. |
| tbl | TBL <Zd>.<T>, <Zn>.<T>, <Zm>.<T> | SVE Permute | Looks up elements in a vector table using indices. |
| trn1 | TRN1 <Zd>.<T>, <Zn>.<T>, <Zm>.<T> | SVE Permute | Interleaves even elements from two vectors. |
| trn2 | TRN2 <Zd>.<T>, <Zn>.<T>, <Zm>.<T> | SVE Permute | Interleaves odd elements from two vectors. |