246 KiB
VIXL Supported Instruction List
This is a list of the AArch64 instructions supported by the VIXL assembler, disassembler and simulator. The simulator may not support all floating point operations to the precision required by AArch64 - please check the simulator source code for details.
AAch64 integer instructions
a b c d e h i l m n o p r s t u x
AArch64 floating point and NEON instructions
a b c d e f i l m n o p r s t u x z
AArch64 Scalable Vector Extension (SVE) instructions
a b c d e f h i l m n o p r s t u w x z
Additional or pseudo instructions
AArch64 integer instructions
ADC
Add with carry bit.
void adc(const Register& rd, const Register& rn, const Operand& operand)
ADCS
Add with carry bit and update status flags.
void adcs(const Register& rd, const Register& rn, const Operand& operand)
ADD
Add.
void add(const Register& rd, const Register& rn, const Operand& operand)
ADDS
Add and update status flags.
void adds(const Register& rd, const Register& rn, const Operand& operand)
ADR
Calculate the address of a PC offset.
void adr(const Register& xd, int64_t imm21)
ADR
Calculate the address of a label.
void adr(const Register& xd, Label* label)
ADRP
Calculate the page address of a PC offset.
void adrp(const Register& xd, int64_t imm21)
ADRP
Calculate the page address of a label.
void adrp(const Register& xd, Label* label)
AND
Bitwise and (A & B).
void and_(const Register& rd, const Register& rn, const Operand& operand)
ANDS
Bitwise and (A & B) and update status flags.
void ands(const Register& rd, const Register& rn, const Operand& operand)
ASR
Arithmetic shift right.
void asr(const Register& rd, const Register& rn, unsigned shift)
ASRV
Arithmetic shift right by variable.
void asrv(const Register& rd, const Register& rn, const Register& rm)
AUTDA
Authenticate Data address, using key A (Armv8.3).
void autda(const Register& xd, const Register& xn)
AUTDB
Authenticate Data address, using key B (Armv8.3).
void autdb(const Register& xd, const Register& xn)
AUTDZA
Authenticate Data address, using key A and a modifier of zero (Armv8.3).
void autdza(const Register& xd)
AUTDZB
Authenticate Data address, using key B and a modifier of zero (Armv8.3).
void autdzb(const Register& xd)
AUTIA
Authenticate Instruction address, using key A (Armv8.3).
void autia(const Register& xd, const Register& xn)
AUTIA1716
Authenticate Instruction address, using key A, with address in x17 and modifier in x16 (Armv8.3).
void autia1716()
AUTIASP
Authenticate Instruction address, using key A, with address in LR and modifier in SP (Armv8.3).
void autiasp()
AUTIAZ
Authenticate Instruction address, using key A, with address in LR and a modifier of zero (Armv8.3).
void autiaz()
AUTIB
Authenticate Instruction address, using key B (Armv8.3).
void autib(const Register& xd, const Register& xn)
AUTIB1716
Authenticate Instruction address, using key B, with address in x17 and modifier in x16 (Armv8.3).
void autib1716()
AUTIBSP
Authenticate Instruction address, using key B, with address in LR and modifier in SP (Armv8.3).
void autibsp()
AUTIBZ
Authenticate Instruction address, using key B, with address in LR and a modifier of zero (Armv8.3).
void autibz()
AUTIZA
Authenticate Instruction address, using key A and a modifier of zero (Armv8.3).
void autiza(const Register& xd)
AUTIZB
Authenticate Instruction address, using key B and a modifier of zero (Armv8.3).
void autizb(const Register& xd)
AXFLAG
Convert floating-point condition flags from Arm format to alternative format (Armv8.5).
void axflag()
B
Conditional branch to PC offset.
void b(int64_t imm19, Condition cond)
B
Conditional branch to label.
void b(Label* label, Condition cond)
B
Unconditional branch to PC offset.
void b(int64_t imm26)
B
Unconditional branch to label.
void b(Label* label)
BFC
Bitfield clear (Armv8.2).
void bfc(const Register& rd, unsigned lsb, unsigned width)
BFI
Bitfield insert.
void bfi(const Register& rd,
const Register& rn,
unsigned lsb,
unsigned width)
BFM
Bitfield move.
void bfm(const Register& rd,
const Register& rn,
unsigned immr,
unsigned imms)
BFXIL
Bitfield extract and insert low.
void bfxil(const Register& rd,
const Register& rn,
unsigned lsb,
unsigned width)
BIC
Bit clear (A & ~B).
void bic(const Register& rd, const Register& rn, const Operand& operand)
BICS
Bit clear (A & ~B) and update status flags.
void bics(const Register& rd, const Register& rn, const Operand& operand)
BL
Branch with link to PC offset.
void bl(int64_t imm26)
BL
Branch with link to label.
void bl(Label* label)
BLR
Branch with link to register.
void blr(const Register& xn)
BLRAA
Branch with link to register, with pointer authentication. Using key A (Armv8.3).
void blraa(const Register& xn, const Register& xm)
BLRAAZ
Branch with link to register, with pointer authentication. Using key A and a modifier of zero (Armv8.3).
void blraaz(const Register& xn)
BLRAB
Branch with link to register, with pointer authentication. Using key B (Armv8.3).
void blrab(const Register& xn, const Register& xm)
BLRABZ
Branch with link to register, with pointer authentication. Using key B and a modifier of zero (Armv8.3).
void blrabz(const Register& xn)
BR
Branch to register.
void br(const Register& xn)
BRAA
Branch to register, with pointer authentication. Using key A (Armv8.3).
void braa(const Register& xn, const Register& xm)
BRAAZ
Branch to register, with pointer authentication. Using key A and a modifier of zero (Armv8.3).
void braaz(const Register& xn)
BRAB
Branch to register, with pointer authentication. Using key B (Armv8.3).
void brab(const Register& xn, const Register& xm)
BRABZ
Branch to register, with pointer authentication. Using key B and a modifier of zero (Armv8.3).
void brabz(const Register& xn)
BRK
Monitor debug-mode breakpoint.
void brk(int code)
BTI
Branch target identification.
void bti(BranchTargetIdentifier id)
CAS
Compare and Swap word or doubleword in memory (Armv8.1).
void cas(const Register& rs, const Register& rt, const MemOperand& src)
CASA
Compare and Swap word or doubleword in memory (Armv8.1).
void casa(const Register& rs, const Register& rt, const MemOperand& src)
CASAB
Compare and Swap byte in memory (Armv8.1).
void casab(const Register& rs, const Register& rt, const MemOperand& src)
CASAH
Compare and Swap halfword in memory (Armv8.1).
void casah(const Register& rs, const Register& rt, const MemOperand& src)
CASAL
Compare and Swap word or doubleword in memory (Armv8.1).
void casal(const Register& rs, const Register& rt, const MemOperand& src)
CASALB
Compare and Swap byte in memory (Armv8.1).
void casalb(const Register& rs, const Register& rt, const MemOperand& src)
CASALH
Compare and Swap halfword in memory (Armv8.1).
void casalh(const Register& rs, const Register& rt, const MemOperand& src)
CASB
Compare and Swap byte in memory (Armv8.1).
void casb(const Register& rs, const Register& rt, const MemOperand& src)
CASH
Compare and Swap halfword in memory (Armv8.1).
void cash(const Register& rs, const Register& rt, const MemOperand& src)
CASL
Compare and Swap word or doubleword in memory (Armv8.1).
void casl(const Register& rs, const Register& rt, const MemOperand& src)
CASLB
Compare and Swap byte in memory (Armv8.1).
void caslb(const Register& rs, const Register& rt, const MemOperand& src)
CASLH
Compare and Swap halfword in memory (Armv8.1).
void caslh(const Register& rs, const Register& rt, const MemOperand& src)
CASP
Compare and Swap Pair of words or doublewords in memory (Armv8.1).
void casp(const Register& rs,
const Register& rs2,
const Register& rt,
const Register& rt2,
const MemOperand& src)
CASPA
Compare and Swap Pair of words or doublewords in memory (Armv8.1).
void caspa(const Register& rs,
const Register& rs2,
const Register& rt,
const Register& rt2,
const MemOperand& src)
CASPAL
Compare and Swap Pair of words or doublewords in memory (Armv8.1).
void caspal(const Register& rs,
const Register& rs2,
const Register& rt,
const Register& rt2,
const MemOperand& src)
CASPL
Compare and Swap Pair of words or doublewords in memory (Armv8.1).
void caspl(const Register& rs,
const Register& rs2,
const Register& rt,
const Register& rt2,
const MemOperand& src)
CBNZ
Compare and branch to PC offset if not zero.
void cbnz(const Register& rt, int64_t imm19)
CBNZ
Compare and branch to label if not zero.
void cbnz(const Register& rt, Label* label)
CBZ
Compare and branch to PC offset if zero.
void cbz(const Register& rt, int64_t imm19)
CBZ
Compare and branch to label if zero.
void cbz(const Register& rt, Label* label)
CCMN
Conditional compare negative.
void ccmn(const Register& rn,
const Operand& operand,
StatusFlags nzcv,
Condition cond)
CCMP
Conditional compare.
void ccmp(const Register& rn,
const Operand& operand,
StatusFlags nzcv,
Condition cond)
CFINV
Invert carry flag (Armv8.4).
void cfinv()
CINC
Conditional increment: rd = cond ? rn + 1 : rn.
void cinc(const Register& rd, const Register& rn, Condition cond)
CINV
Conditional invert: rd = cond ? ~rn : rn.
void cinv(const Register& rd, const Register& rn, Condition cond)
CLREX
Clear exclusive monitor.
void clrex(int imm4 = 0xf)
CLS
Count leading sign bits.
void cls(const Register& rd, const Register& rn)
CLZ
Count leading zeroes.
void clz(const Register& rd, const Register& rn)
CMN
Compare negative.
void cmn(const Register& rn, const Operand& operand)
CMP
Compare.
void cmp(const Register& rn, const Operand& operand)
CNEG
Conditional negate: rd = cond ? -rn : rn.
void cneg(const Register& rd, const Register& rn, Condition cond)
CRC32B
CRC-32 checksum from byte.
void crc32b(const Register& wd, const Register& wn, const Register& wm)
CRC32CB
CRC-32 C checksum from byte.
void crc32cb(const Register& wd, const Register& wn, const Register& wm)
CRC32CH
CRC-32 C checksum from half-word.
void crc32ch(const Register& wd, const Register& wn, const Register& wm)
CRC32CW
CRC-32 C checksum from word.
void crc32cw(const Register& wd, const Register& wn, const Register& wm)
CRC32CX
CRC-32C checksum from double word.
void crc32cx(const Register& wd, const Register& wn, const Register& xm)
CRC32H
CRC-32 checksum from half-word.
void crc32h(const Register& wd, const Register& wn, const Register& wm)
CRC32W
CRC-32 checksum from word.
void crc32w(const Register& wd, const Register& wn, const Register& wm)
CRC32X
CRC-32 checksum from double word.
void crc32x(const Register& wd, const Register& wn, const Register& xm)
CSDB
Conditional speculation dependency barrier.
void csdb()
CSEL
Conditional select: rd = cond ? rn : rm.
void csel(const Register& rd,
const Register& rn,
const Register& rm,
Condition cond)
CSET
Conditional set: rd = cond ? 1 : 0.
void cset(const Register& rd, Condition cond)
CSETM
Conditional set mask: rd = cond ? -1 : 0.
void csetm(const Register& rd, Condition cond)
CSINC
Conditional select increment: rd = cond ? rn : rm + 1.
void csinc(const Register& rd,
const Register& rn,
const Register& rm,
Condition cond)
CSINV
Conditional select inversion: rd = cond ? rn : ~rm.
void csinv(const Register& rd,
const Register& rn,
const Register& rm,
Condition cond)
CSNEG
Conditional select negation: rd = cond ? rn : -rm.
void csneg(const Register& rd,
const Register& rn,
const Register& rm,
Condition cond)
DC
System data cache operation.
void dc(DataCacheOp op, const Register& rt)
DMB
Data memory barrier.
void dmb(BarrierDomain domain, BarrierType type)
DSB
Data synchronization barrier.
void dsb(BarrierDomain domain, BarrierType type)
EON
Bitwise enor/xnor (A ^ ~B).
void eon(const Register& rd, const Register& rn, const Operand& operand)
EOR
Bitwise eor/xor (A ^ B).
void eor(const Register& rd, const Register& rn, const Operand& operand)
ESB
Error synchronization barrier.
void esb()
EXTR
Extract.
void extr(const Register& rd,
const Register& rn,
const Register& rm,
unsigned lsb)
HINT
System hint (named type).
void hint(SystemHint code)
HINT
System hint (numbered type).
void hint(int imm7)
HLT
Halting debug-mode breakpoint.
void hlt(int code)
IC
System instruction cache operation.
void ic(InstructionCacheOp op, const Register& rt)
ISB
Instruction synchronization barrier.
void isb()
LDADD
Atomic add on word or doubleword in memory (Armv8.1)
void ldadd(const Register& rs, const Register& rt, const MemOperand& src)
LDADDA
Atomic add on word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void ldadda(const Register& rs, const Register& rt, const MemOperand& src)
LDADDAB
Atomic add on byte in memory, with Load-acquire semantics (Armv8.1)
void ldaddab(const Register& rs, const Register& rt, const MemOperand& src)
LDADDAH
Atomic add on halfword in memory, with Load-acquire semantics (Armv8.1)
void ldaddah(const Register& rs, const Register& rt, const MemOperand& src)
LDADDAL
Atomic add on word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldaddal(const Register& rs, const Register& rt, const MemOperand& src)
LDADDALB
Atomic add on byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldaddalb(const Register& rs, const Register& rt, const MemOperand& src)
LDADDALH
Atomic add on halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldaddalh(const Register& rs, const Register& rt, const MemOperand& src)
LDADDB
Atomic add on byte in memory (Armv8.1)
void ldaddb(const Register& rs, const Register& rt, const MemOperand& src)
LDADDH
Atomic add on halfword in memory (Armv8.1)
void ldaddh(const Register& rs, const Register& rt, const MemOperand& src)
LDADDL
Atomic add on word or doubleword in memory, with Store-release semantics (Armv8.1)
void ldaddl(const Register& rs, const Register& rt, const MemOperand& src)
LDADDLB
Atomic add on byte in memory, with Store-release semantics (Armv8.1)
void ldaddlb(const Register& rs, const Register& rt, const MemOperand& src)
LDADDLH
Atomic add on halfword in memory, with Store-release semantics (Armv8.1)
void ldaddlh(const Register& rs, const Register& rt, const MemOperand& src)
LDAPR
Load-Acquire RCpc Register word or doubleword (Armv8.3)
void ldapr(const Register& rt, const MemOperand& src)
LDAPRB
Load-Acquire RCpc Register byte (Armv8.3)
void ldaprb(const Register& rt, const MemOperand& src)
LDAPRH
Load-Acquire RCpc Register halfword (Armv8.3)
void ldaprh(const Register& rt, const MemOperand& src)
LDAPUR
Load-acquire RCpc Register word or double-word (with unscaled offset) (Armv8.4).
void ldapur(const Register& rt, const MemOperand& src)
LDAPURB
Load-acquire RCpc Register byte (with unscaled offset) (Armv8.4).
void ldapurb(const Register& rt, const MemOperand& src)
LDAPURH
Load-acquire RCpc Register half-word (with unscaled offset) (Armv8.4).
void ldapurh(const Register& rt, const MemOperand& src)
LDAPURSB
Load-acquire RCpc Register signed byte (with unscaled offset) (Armv8.4).
void ldapursb(const Register& rt, const MemOperand& src)
LDAPURSH
Load-acquire RCpc Register signed half-word (with unscaled offset) (Armv8.4).
void ldapursh(const Register& rt, const MemOperand& src)
LDAPURSW
Load-acquire RCpc Register signed word (with unscaled offset) (Armv8.4).
void ldapursw(const Register& xt, const MemOperand& src)
LDAR
Load-acquire register.
void ldar(const Register& rt, const MemOperand& src)
LDARB
Load-acquire byte.
void ldarb(const Register& rt, const MemOperand& src)
LDARH
Load-acquire half-word.
void ldarh(const Register& rt, const MemOperand& src)
LDAXP
Load-acquire exclusive register pair.
void ldaxp(const Register& rt, const Register& rt2, const MemOperand& src)
LDAXR
Load-acquire exclusive register.
void ldaxr(const Register& rt, const MemOperand& src)
LDAXRB
Load-acquire exclusive byte.
void ldaxrb(const Register& rt, const MemOperand& src)
LDAXRH
Load-acquire exclusive half-word.
void ldaxrh(const Register& rt, const MemOperand& src)
LDCLR
Atomic bit clear on word or doubleword in memory (Armv8.1)
void ldclr(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRA
Atomic bit clear on word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void ldclra(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRAB
Atomic bit clear on byte in memory, with Load-acquire semantics (Armv8.1)
void ldclrab(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRAH
Atomic bit clear on halfword in memory, with Load-acquire semantics (Armv8.1)
void ldclrah(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRAL
Atomic bit clear on word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldclral(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRALB
Atomic bit clear on byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldclralb(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRALH
Atomic bit clear on halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldclralh(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRB
Atomic bit clear on byte in memory (Armv8.1)
void ldclrb(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRH
Atomic bit clear on halfword in memory (Armv8.1)
void ldclrh(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRL
Atomic bit clear on word or doubleword in memory, with Store-release semantics (Armv8.1)
void ldclrl(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRLB
Atomic bit clear on byte in memory, with Store-release semantics (Armv8.1)
void ldclrlb(const Register& rs, const Register& rt, const MemOperand& src)
LDCLRLH
Atomic bit clear on halfword in memory, with Store-release semantics (Armv8.1)
void ldclrlh(const Register& rs, const Register& rt, const MemOperand& src)
LDEOR
Atomic exclusive OR on word or doubleword in memory (Armv8.1)
void ldeor(const Register& rs, const Register& rt, const MemOperand& src)
LDEORA
Atomic exclusive OR on word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void ldeora(const Register& rs, const Register& rt, const MemOperand& src)
LDEORAB
Atomic exclusive OR on byte in memory, with Load-acquire semantics (Armv8.1)
void ldeorab(const Register& rs, const Register& rt, const MemOperand& src)
LDEORAH
Atomic exclusive OR on halfword in memory, with Load-acquire semantics (Armv8.1)
void ldeorah(const Register& rs, const Register& rt, const MemOperand& src)
LDEORAL
Atomic exclusive OR on word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldeoral(const Register& rs, const Register& rt, const MemOperand& src)
LDEORALB
Atomic exclusive OR on byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldeoralb(const Register& rs, const Register& rt, const MemOperand& src)
LDEORALH
Atomic exclusive OR on halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldeoralh(const Register& rs, const Register& rt, const MemOperand& src)
LDEORB
Atomic exclusive OR on byte in memory (Armv8.1)
void ldeorb(const Register& rs, const Register& rt, const MemOperand& src)
LDEORH
Atomic exclusive OR on halfword in memory (Armv8.1)
void ldeorh(const Register& rs, const Register& rt, const MemOperand& src)
LDEORL
Atomic exclusive OR on word or doubleword in memory, with Store-release semantics (Armv8.1)
void ldeorl(const Register& rs, const Register& rt, const MemOperand& src)
LDEORLB
Atomic exclusive OR on byte in memory, with Store-release semantics (Armv8.1)
void ldeorlb(const Register& rs, const Register& rt, const MemOperand& src)
LDEORLH
Atomic exclusive OR on halfword in memory, with Store-release semantics (Armv8.1)
void ldeorlh(const Register& rs, const Register& rt, const MemOperand& src)
LDLAR
Load LORelease register (Armv8.1).
void ldlar(const Register& rt, const MemOperand& src)
LDLARB
Load LORelease byte (Armv8.1).
void ldlarb(const Register& rt, const MemOperand& src)
LDLARH
Load LORelease half-word (Armv8.1).
void ldlarh(const Register& rt, const MemOperand& src)
LDNP
Load integer or FP register pair, non-temporal.
void ldnp(const CPURegister& rt,
const CPURegister& rt2,
const MemOperand& src)
LDP
Load integer or FP register pair.
void ldp(const CPURegister& rt,
const CPURegister& rt2,
const MemOperand& src)
LDPSW
Load word pair with sign extension.
void ldpsw(const Register& xt, const Register& xt2, const MemOperand& src)
LDR
Load integer or FP register from literal pool.
void ldr(const CPURegister& rt, RawLiteral* literal)
LDR
Load integer or FP register from pc + imm19 << 2.
void ldr(const CPURegister& rt, int64_t imm19)
LDR
Load integer or FP register.
void ldr(const CPURegister& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferScaledOffset)
LDRAA
Load double-word with pointer authentication, using data key A and a modifier of zero (Armv8.3).
void ldraa(const Register& xt, const MemOperand& src)
LDRAB
Load double-word with pointer authentication, using data key B and a modifier of zero (Armv8.3).
void ldrab(const Register& xt, const MemOperand& src)
LDRB
Load byte.
void ldrb(const Register& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferScaledOffset)
LDRH
Load half-word.
void ldrh(const Register& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferScaledOffset)
LDRSB
Load byte with sign extension.
void ldrsb(const Register& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferScaledOffset)
LDRSH
Load half-word with sign extension.
void ldrsh(const Register& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferScaledOffset)
LDRSW
Load word with sign extension from literal pool.
void ldrsw(const Register& xt, RawLiteral* literal)
LDRSW
Load word with sign extension from pc + imm19 << 2.
void ldrsw(const Register& xt, int64_t imm19)
LDRSW
Load word with sign extension.
void ldrsw(const Register& xt,
const MemOperand& src,
LoadStoreScalingOption option = PreferScaledOffset)
LDSET
Atomic bit set on word or doubleword in memory (Armv8.1)
void ldset(const Register& rs, const Register& rt, const MemOperand& src)
LDSETA
Atomic bit set on word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void ldseta(const Register& rs, const Register& rt, const MemOperand& src)
LDSETAB
Atomic bit set on byte in memory, with Load-acquire semantics (Armv8.1)
void ldsetab(const Register& rs, const Register& rt, const MemOperand& src)
LDSETAH
Atomic bit set on halfword in memory, with Load-acquire semantics (Armv8.1)
void ldsetah(const Register& rs, const Register& rt, const MemOperand& src)
LDSETAL
Atomic bit set on word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsetal(const Register& rs, const Register& rt, const MemOperand& src)
LDSETALB
Atomic bit set on byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsetalb(const Register& rs, const Register& rt, const MemOperand& src)
LDSETALH
Atomic bit set on halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsetalh(const Register& rs, const Register& rt, const MemOperand& src)
LDSETB
Atomic bit set on byte in memory (Armv8.1)
void ldsetb(const Register& rs, const Register& rt, const MemOperand& src)
LDSETH
Atomic bit set on halfword in memory (Armv8.1)
void ldseth(const Register& rs, const Register& rt, const MemOperand& src)
LDSETL
Atomic bit set on word or doubleword in memory, with Store-release semantics (Armv8.1)
void ldsetl(const Register& rs, const Register& rt, const MemOperand& src)
LDSETLB
Atomic bit set on byte in memory, with Store-release semantics (Armv8.1)
void ldsetlb(const Register& rs, const Register& rt, const MemOperand& src)
LDSETLH
Atomic bit set on halfword in memory, with Store-release semantics (Armv8.1)
void ldsetlh(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAX
Atomic signed maximum on word or doubleword in memory (Armv8.1)
void ldsmax(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXA
Atomic signed maximum on word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void ldsmaxa(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXAB
Atomic signed maximum on byte in memory, with Load-acquire semantics (Armv8.1)
void ldsmaxab(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXAH
Atomic signed maximum on halfword in memory, with Load-acquire semantics (Armv8.1)
void ldsmaxah(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXAL
Atomic signed maximum on word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsmaxal(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXALB
Atomic signed maximum on byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsmaxalb(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXALH
Atomic signed maximum on halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsmaxalh(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXB
Atomic signed maximum on byte in memory (Armv8.1)
void ldsmaxb(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXH
Atomic signed maximum on halfword in memory (Armv8.1)
void ldsmaxh(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXL
Atomic signed maximum on word or doubleword in memory, with Store-release semantics (Armv8.1)
void ldsmaxl(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXLB
Atomic signed maximum on byte in memory, with Store-release semantics (Armv8.1)
void ldsmaxlb(const Register& rs, const Register& rt, const MemOperand& src)
LDSMAXLH
Atomic signed maximum on halfword in memory, with Store-release semantics (Armv8.1)
void ldsmaxlh(const Register& rs, const Register& rt, const MemOperand& src)
LDSMIN
Atomic signed minimum on word or doubleword in memory (Armv8.1)
void ldsmin(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINA
Atomic signed minimum on word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void ldsmina(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINAB
Atomic signed minimum on byte in memory, with Load-acquire semantics (Armv8.1)
void ldsminab(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINAH
Atomic signed minimum on halfword in memory, with Load-acquire semantics (Armv8.1)
void ldsminah(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINAL
Atomic signed minimum on word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsminal(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINALB
Atomic signed minimum on byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsminalb(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINALH
Atomic signed minimum on halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldsminalh(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINB
Atomic signed minimum on byte in memory (Armv8.1)
void ldsminb(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINH
Atomic signed minimum on halfword in memory (Armv8.1)
void ldsminh(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINL
Atomic signed minimum on word or doubleword in memory, with Store-release semantics (Armv8.1)
void ldsminl(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINLB
Atomic signed minimum on byte in memory, with Store-release semantics (Armv8.1)
void ldsminlb(const Register& rs, const Register& rt, const MemOperand& src)
LDSMINLH
Atomic signed minimum on halfword in memory, with Store-release semantics (Armv8.1)
void ldsminlh(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAX
Atomic unsigned maximum on word or doubleword in memory (Armv8.1)
void ldumax(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXA
Atomic unsigned maximum on word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void ldumaxa(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXAB
Atomic unsigned maximum on byte in memory, with Load-acquire semantics (Armv8.1)
void ldumaxab(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXAH
Atomic unsigned maximum on halfword in memory, with Load-acquire semantics (Armv8.1)
void ldumaxah(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXAL
Atomic unsigned maximum on word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldumaxal(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXALB
Atomic unsigned maximum on byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldumaxalb(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXALH
Atomic unsigned maximum on halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void ldumaxalh(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXB
Atomic unsigned maximum on byte in memory (Armv8.1)
void ldumaxb(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXH
Atomic unsigned maximum on halfword in memory (Armv8.1)
void ldumaxh(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXL
Atomic unsigned maximum on word or doubleword in memory, with Store-release semantics (Armv8.1)
void ldumaxl(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXLB
Atomic unsigned maximum on byte in memory, with Store-release semantics (Armv8.1)
void ldumaxlb(const Register& rs, const Register& rt, const MemOperand& src)
LDUMAXLH
Atomic unsigned maximum on halfword in memory, with Store-release semantics (Armv8.1)
void ldumaxlh(const Register& rs, const Register& rt, const MemOperand& src)
LDUMIN
Atomic unsigned minimum on word or doubleword in memory (Armv8.1)
void ldumin(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINA
Atomic unsigned minimum on word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void ldumina(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINAB
Atomic unsigned minimum on byte in memory, with Load-acquire semantics (Armv8.1)
void lduminab(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINAH
Atomic unsigned minimum on halfword in memory, with Load-acquire semantics (Armv8.1)
void lduminah(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINAL
Atomic unsigned minimum on word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void lduminal(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINALB
Atomic unsigned minimum on byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void lduminalb(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINALH
Atomic unsigned minimum on halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void lduminalh(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINB
Atomic unsigned minimum on byte in memory (Armv8.1)
void lduminb(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINH
Atomic unsigned minimum on halfword in memory (Armv8.1)
void lduminh(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINL
Atomic unsigned minimum on word or doubleword in memory, with Store-release semantics (Armv8.1)
void lduminl(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINLB
Atomic unsigned minimum on byte in memory, with Store-release semantics (Armv8.1)
void lduminlb(const Register& rs, const Register& rt, const MemOperand& src)
LDUMINLH
Atomic unsigned minimum on halfword in memory, with Store-release semantics (Armv8.1)
void lduminlh(const Register& rs, const Register& rt, const MemOperand& src)
LDUR
Load integer or FP register (with unscaled offset).
void ldur(const CPURegister& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferUnscaledOffset)
LDURB
Load byte (with unscaled offset).
void ldurb(const Register& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferUnscaledOffset)
LDURH
Load half-word (with unscaled offset).
void ldurh(const Register& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferUnscaledOffset)
LDURSB
Load byte with sign extension (and unscaled offset).
void ldursb(const Register& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferUnscaledOffset)
LDURSH
Load half-word with sign extension (and unscaled offset).
void ldursh(const Register& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferUnscaledOffset)
LDURSW
Load word with sign extension.
void ldursw(const Register& xt,
const MemOperand& src,
LoadStoreScalingOption option = PreferUnscaledOffset)
LDXP
Load exclusive register pair.
void ldxp(const Register& rt, const Register& rt2, const MemOperand& src)
LDXR
Load exclusive register.
void ldxr(const Register& rt, const MemOperand& src)
LDXRB
Load exclusive byte.
void ldxrb(const Register& rt, const MemOperand& src)
LDXRH
Load exclusive half-word.
void ldxrh(const Register& rt, const MemOperand& src)
LSL
Logical shift left.
void lsl(const Register& rd, const Register& rn, unsigned shift)
LSLV
Logical shift left by variable.
void lslv(const Register& rd, const Register& rn, const Register& rm)
LSR
Logical shift right.
void lsr(const Register& rd, const Register& rn, unsigned shift)
LSRV
Logical shift right by variable.
void lsrv(const Register& rd, const Register& rn, const Register& rm)
MADD
Multiply and accumulate.
void madd(const Register& rd,
const Register& rn,
const Register& rm,
const Register& ra)
MNEG
Negated multiply.
void mneg(const Register& rd, const Register& rn, const Register& rm)
MOV
Move immediate, aliases for movz, movn, orr.
void mov(const Register& rd, uint64_t imm)
MOV
Move register to register.
void mov(const Register& rd, const Register& rn)
MOVK
Move immediate and keep.
void movk(const Register& rd, uint64_t imm, int shift = -1)
MOVN
Move inverted immediate.
void movn(const Register& rd, uint64_t imm, int shift = -1)
MOVZ
Move immediate.
void movz(const Register& rd, uint64_t imm, int shift = -1)
MRS
Move to register from system register.
void mrs(const Register& xt, SystemRegister sysreg)
MSR
Move from register to system register.
void msr(SystemRegister sysreg, const Register& xt)
MSUB
Multiply and subtract.
void msub(const Register& rd,
const Register& rn,
const Register& rm,
const Register& ra)
MUL
Multiply.
void mul(const Register& rd, const Register& rn, const Register& rm)
MVN
Move inverted operand to register.
void mvn(const Register& rd, const Operand& operand)
NEG
Negate.
void neg(const Register& rd, const Operand& operand)
NEGS
Negate and update status flags.
void negs(const Register& rd, const Operand& operand)
NGC
Negate with carry bit.
void ngc(const Register& rd, const Operand& operand)
NGCS
Negate with carry bit and update status flags.
void ngcs(const Register& rd, const Operand& operand)
NOP
No-op.
void nop()
ORN
Bitwise nor (A | ~B).
void orn(const Register& rd, const Register& rn, const Operand& operand)
ORR
Bitwise or (A | B).
void orr(const Register& rd, const Register& rn, const Operand& operand)
PACDA
Pointer Authentication Code for Data address, using key A (Armv8.3).
void pacda(const Register& xd, const Register& xn)
PACDB
Pointer Authentication Code for Data address, using key B (Armv8.3).
void pacdb(const Register& xd, const Register& xn)
PACDZA
Pointer Authentication Code for Data address, using key A and a modifier of zero (Armv8.3).
void pacdza(const Register& xd)
PACDZB
Pointer Authentication Code for Data address, using key B and a modifier of zero (Armv8.3).
void pacdzb(const Register& xd)
PACGA
Pointer Authentication Code, using Generic key (Armv8.3).
void pacga(const Register& xd, const Register& xn, const Register& xm)
PACIA
Pointer Authentication Code for Instruction address, using key A (Armv8.3).
void pacia(const Register& xd, const Register& rn)
PACIA1716
Pointer Authentication Code for Instruction address, using key A, with address in x17 and modifier in x16 (Armv8.3).
void pacia1716()
PACIASP
Pointer Authentication Code for Instruction address, using key A, with address in LR and modifier in SP (Armv8.3).
void paciasp()
PACIAZ
Pointer Authentication Code for Instruction address, using key A, with address in LR and a modifier of zero (Armv8.3).
void paciaz()
PACIB
Pointer Authentication Code for Instruction address, using key B (Armv8.3).
void pacib(const Register& xd, const Register& xn)
PACIB1716
Pointer Authentication Code for Instruction address, using key B, with address in x17 and modifier in x16 (Armv8.3).
void pacib1716()
PACIBSP
Pointer Authentication Code for Instruction address, using key B, with address in LR and modifier in SP (Armv8.3).
void pacibsp()
PACIBZ
Pointer Authentication Code for Instruction address, using key B, with address in LR and a modifier of zero (Armv8.3).
void pacibz()
PACIZA
Pointer Authentication Code for Instruction address, using key A and a modifier of zero (Armv8.3).
void paciza(const Register& xd)
PACIZB
Pointer Authentication Code for Instruction address, using key B and a modifier of zero (Armv8.3).
void pacizb(const Register& xd)
PRFM
Prefetch from pc + imm19 << 2 (allowing unallocated hints).
void prfm(int op, int64_t imm19)
PRFM
Prefetch from pc + imm19 << 2.
void prfm(PrefetchOperation op, int64_t imm19)
PRFM
Prefetch memory (allowing unallocated hints).
void prfm(int op,
const MemOperand& addr,
LoadStoreScalingOption option = PreferScaledOffset)
PRFM
Prefetch memory in the literal pool (allowing unallocated hints).
void prfm(int op, RawLiteral* literal)
PRFM
Prefetch memory in the literal pool.
void prfm(PrefetchOperation op, RawLiteral* literal)
PRFM
Prefetch memory.
void prfm(PrefetchOperation op,
const MemOperand& addr,
LoadStoreScalingOption option = PreferScaledOffset)
PRFUM
Prefetch memory (with unscaled offset).
void prfum(PrefetchOperation op,
const MemOperand& addr,
LoadStoreScalingOption option = PreferUnscaledOffset)
PRFUM
Prefetch memory (with unscaled offset, allowing unallocated hints).
void prfum(int op,
const MemOperand& addr,
LoadStoreScalingOption option = PreferUnscaledOffset)
RBIT
Bit reverse.
void rbit(const Register& rd, const Register& rn)
RET
Branch to register with return hint.
void ret(const Register& xn = lr)
RETAA
Return from subroutine, with pointer authentication. Using key A (Armv8.3).
void retaa()
RETAB
Return from subroutine, with pointer authentication. Using key B (Armv8.3).
void retab()
REV
Reverse bytes.
void rev(const Register& rd, const Register& rn)
REV16
Reverse bytes in 16-bit half words.
void rev16(const Register& rd, const Register& rn)
REV32
Reverse bytes in 32-bit words.
void rev32(const Register& xd, const Register& xn)
REV64
Reverse bytes in 64-bit general purpose register, an alias for rev (Armv8.2).
void rev64(const Register& xd, const Register& xn)
RMIF
Rotate register right and insert into NZCV flags under the control of a mask (Armv8.4).
void rmif(const Register& xn, unsigned rotation, StatusFlags flags)
ROR
Rotate right.
void ror(const Register& rd, const Register& rs, unsigned shift)
RORV
Rotate right by variable.
void rorv(const Register& rd, const Register& rn, const Register& rm)
SBC
Subtract with carry bit.
void sbc(const Register& rd, const Register& rn, const Operand& operand)
SBCS
Subtract with carry bit and update status flags.
void sbcs(const Register& rd, const Register& rn, const Operand& operand)
SBFIZ
Signed bitfield insert with zero at right.
void sbfiz(const Register& rd,
const Register& rn,
unsigned lsb,
unsigned width)
SBFM
Signed bitfield move.
void sbfm(const Register& rd,
const Register& rn,
unsigned immr,
unsigned imms)
SBFX
Signed bitfield extract.
void sbfx(const Register& rd,
const Register& rn,
unsigned lsb,
unsigned width)
SDIV
Signed integer divide.
void sdiv(const Register& rd, const Register& rn, const Register& rm)
SETF16
Set NZCV flags from register, treated as an 16-bit value (Armv8.4).
void setf16(const Register& rn)
SETF8
Set NZCV flags from register, treated as an 8-bit value (Armv8.4).
void setf8(const Register& rn)
SMADDL
Signed long multiply and accumulate: 32 x 32 + 64 -> 64-bit.
void smaddl(const Register& xd,
const Register& wn,
const Register& wm,
const Register& xa)
SMSUBL
Signed long multiply and subtract: 64 - (32 x 32) -> 64-bit.
void smsubl(const Register& xd,
const Register& wn,
const Register& wm,
const Register& xa)
SMULH
Signed multiply high: 64 x 64 -> 64-bit <127:64>.
void smulh(const Register& xd, const Register& xn, const Register& xm)
SMULL
Signed long multiply: 32 x 32 -> 64-bit.
void smull(const Register& xd, const Register& wn, const Register& wm)
STADD
Atomic add on word or doubleword in memory, without return. (Armv8.1)
void stadd(const Register& rs, const MemOperand& src)
STADDB
Atomic add on byte in memory, without return. (Armv8.1)
void staddb(const Register& rs, const MemOperand& src)
STADDH
Atomic add on halfword in memory, without return. (Armv8.1)
void staddh(const Register& rs, const MemOperand& src)
STADDL
Atomic add on word or doubleword in memory, with Store-release semantics and without return. (Armv8.1)
void staddl(const Register& rs, const MemOperand& src)
STADDLB
Atomic add on byte in memory, with Store-release semantics and without return. (Armv8.1)
void staddlb(const Register& rs, const MemOperand& src)
STADDLH
Atomic add on halfword in memory, with Store-release semantics and without return. (Armv8.1)
void staddlh(const Register& rs, const MemOperand& src)
STCLR
Atomic bit clear on word or doubleword in memory, without return. (Armv8.1)
void stclr(const Register& rs, const MemOperand& src)
STCLRB
Atomic bit clear on byte in memory, without return. (Armv8.1)
void stclrb(const Register& rs, const MemOperand& src)
STCLRH
Atomic bit clear on halfword in memory, without return. (Armv8.1)
void stclrh(const Register& rs, const MemOperand& src)
STCLRL
Atomic bit clear on word or doubleword in memory, with Store-release semantics and without return. (Armv8.1)
void stclrl(const Register& rs, const MemOperand& src)
STCLRLB
Atomic bit clear on byte in memory, with Store-release semantics and without return. (Armv8.1)
void stclrlb(const Register& rs, const MemOperand& src)
STCLRLH
Atomic bit clear on halfword in memory, with Store-release semantics and without return. (Armv8.1)
void stclrlh(const Register& rs, const MemOperand& src)
STEOR
Atomic exclusive OR on word or doubleword in memory, without return. (Armv8.1)
void steor(const Register& rs, const MemOperand& src)
STEORB
Atomic exclusive OR on byte in memory, without return. (Armv8.1)
void steorb(const Register& rs, const MemOperand& src)
STEORH
Atomic exclusive OR on halfword in memory, without return. (Armv8.1)
void steorh(const Register& rs, const MemOperand& src)
STEORL
Atomic exclusive OR on word or doubleword in memory, with Store-release semantics and without return. (Armv8.1)
void steorl(const Register& rs, const MemOperand& src)
STEORLB
Atomic exclusive OR on byte in memory, with Store-release semantics and without return. (Armv8.1)
void steorlb(const Register& rs, const MemOperand& src)
STEORLH
Atomic exclusive OR on halfword in memory, with Store-release semantics and without return. (Armv8.1)
void steorlh(const Register& rs, const MemOperand& src)
STLLR
Store LORelease register (Armv8.1).
void stllr(const Register& rt, const MemOperand& dst)
STLLRB
Store LORelease byte (Armv8.1).
void stllrb(const Register& rt, const MemOperand& dst)
STLLRH
Store LORelease half-word (Armv8.1).
void stllrh(const Register& rt, const MemOperand& dst)
STLR
Store-release register.
void stlr(const Register& rt, const MemOperand& dst)
STLRB
Store-release byte.
void stlrb(const Register& rt, const MemOperand& dst)
STLRH
Store-release half-word.
void stlrh(const Register& rt, const MemOperand& dst)
STLUR
Store-release word or double-word (with unscaled offset) (Armv8.4).
void stlur(const Register& rt, const MemOperand& dst)
STLURB
Store-release byte (with unscaled offset) (Armv8.4).
void stlurb(const Register& rt, const MemOperand& dst)
STLURH
Store-release half-word (with unscaled offset) (Armv8.4).
void stlurh(const Register& rt, const MemOperand& dst)
STLXP
Store-release exclusive register pair.
void stlxp(const Register& rs,
const Register& rt,
const Register& rt2,
const MemOperand& dst)
STLXR
Store-release exclusive register.
void stlxr(const Register& rs, const Register& rt, const MemOperand& dst)
STLXRB
Store-release exclusive byte.
void stlxrb(const Register& rs, const Register& rt, const MemOperand& dst)
STLXRH
Store-release exclusive half-word.
void stlxrh(const Register& rs, const Register& rt, const MemOperand& dst)
STNP
Store integer or FP register pair, non-temporal.
void stnp(const CPURegister& rt,
const CPURegister& rt2,
const MemOperand& dst)
STP
Store integer or FP register pair.
void stp(const CPURegister& rt,
const CPURegister& rt2,
const MemOperand& dst)
STR
Store integer or FP register.
void str(const CPURegister& rt,
const MemOperand& dst,
LoadStoreScalingOption option = PreferScaledOffset)
STRB
Store byte.
void strb(const Register& rt,
const MemOperand& dst,
LoadStoreScalingOption option = PreferScaledOffset)
STRH
Store half-word.
void strh(const Register& rt,
const MemOperand& dst,
LoadStoreScalingOption option = PreferScaledOffset)
STSET
Atomic bit set on word or doubleword in memory, without return. (Armv8.1)
void stset(const Register& rs, const MemOperand& src)
STSETB
Atomic bit set on byte in memory, without return. (Armv8.1)
void stsetb(const Register& rs, const MemOperand& src)
STSETH
Atomic bit set on halfword in memory, without return. (Armv8.1)
void stseth(const Register& rs, const MemOperand& src)
STSETL
Atomic bit set on word or doubleword in memory, with Store-release semantics and without return. (Armv8.1)
void stsetl(const Register& rs, const MemOperand& src)
STSETLB
Atomic bit set on byte in memory, with Store-release semantics and without return. (Armv8.1)
void stsetlb(const Register& rs, const MemOperand& src)
STSETLH
Atomic bit set on halfword in memory, with Store-release semantics and without return. (Armv8.1)
void stsetlh(const Register& rs, const MemOperand& src)
STSMAX
Atomic signed maximum on word or doubleword in memory, without return. (Armv8.1)
void stsmax(const Register& rs, const MemOperand& src)
STSMAXB
Atomic signed maximum on byte in memory, without return. (Armv8.1)
void stsmaxb(const Register& rs, const MemOperand& src)
STSMAXH
Atomic signed maximum on halfword in memory, without return. (Armv8.1)
void stsmaxh(const Register& rs, const MemOperand& src)
STSMAXL
Atomic signed maximum on word or doubleword in memory, with Store-release semantics and without return. (Armv8.1)
void stsmaxl(const Register& rs, const MemOperand& src)
STSMAXLB
Atomic signed maximum on byte in memory, with Store-release semantics and without return. (Armv8.1)
void stsmaxlb(const Register& rs, const MemOperand& src)
STSMAXLH
Atomic signed maximum on halfword in memory, with Store-release semantics and without return. (Armv8.1)
void stsmaxlh(const Register& rs, const MemOperand& src)
STSMIN
Atomic signed minimum on word or doubleword in memory, without return. (Armv8.1)
void stsmin(const Register& rs, const MemOperand& src)
STSMINB
Atomic signed minimum on byte in memory, without return. (Armv8.1)
void stsminb(const Register& rs, const MemOperand& src)
STSMINH
Atomic signed minimum on halfword in memory, without return. (Armv8.1)
void stsminh(const Register& rs, const MemOperand& src)
STSMINL
Atomic signed minimum on word or doubleword in memory, with Store-release semantics and without return. semantics (Armv8.1)
void stsminl(const Register& rs, const MemOperand& src)
STSMINLB
Atomic signed minimum on byte in memory, with Store-release semantics and without return. (Armv8.1)
void stsminlb(const Register& rs, const MemOperand& src)
STSMINLH
Atomic signed minimum on halfword in memory, with Store-release semantics and without return. (Armv8.1)
void stsminlh(const Register& rs, const MemOperand& src)
STUMAX
Atomic unsigned maximum on word or doubleword in memory, without return. (Armv8.1)
void stumax(const Register& rs, const MemOperand& src)
STUMAXB
Atomic unsigned maximum on byte in memory, without return. (Armv8.1)
void stumaxb(const Register& rs, const MemOperand& src)
STUMAXH
Atomic unsigned maximum on halfword in memory, without return. (Armv8.1)
void stumaxh(const Register& rs, const MemOperand& src)
STUMAXL
Atomic unsigned maximum on word or doubleword in memory, with Store-release semantics and without return. (Armv8.1)
void stumaxl(const Register& rs, const MemOperand& src)
STUMAXLB
Atomic unsigned maximum on byte in memory, with Store-release semantics and without return. (Armv8.1)
void stumaxlb(const Register& rs, const MemOperand& src)
STUMAXLH
Atomic unsigned maximum on halfword in memory, with Store-release semantics and without return. (Armv8.1)
void stumaxlh(const Register& rs, const MemOperand& src)
STUMIN
Atomic unsigned minimum on word or doubleword in memory, without return. (Armv8.1)
void stumin(const Register& rs, const MemOperand& src)
STUMINB
Atomic unsigned minimum on byte in memory, without return. (Armv8.1)
void stuminb(const Register& rs, const MemOperand& src)
STUMINH
Atomic unsigned minimum on halfword in memory, without return. (Armv8.1)
void stuminh(const Register& rs, const MemOperand& src)
STUMINL
Atomic unsigned minimum on word or doubleword in memory, with Store-release semantics and without return. (Armv8.1)
void stuminl(const Register& rs, const MemOperand& src)
STUMINLB
Atomic unsigned minimum on byte in memory, with Store-release semantics and without return. (Armv8.1)
void stuminlb(const Register& rs, const MemOperand& src)
STUMINLH
Atomic unsigned minimum on halfword in memory, with Store-release semantics and without return. (Armv8.1)
void stuminlh(const Register& rs, const MemOperand& src)
STUR
Store integer or FP register (with unscaled offset).
void stur(const CPURegister& rt,
const MemOperand& src,
LoadStoreScalingOption option = PreferUnscaledOffset)
STURB
Store byte (with unscaled offset).
void sturb(const Register& rt,
const MemOperand& dst,
LoadStoreScalingOption option = PreferUnscaledOffset)
STURH
Store half-word (with unscaled offset).
void sturh(const Register& rt,
const MemOperand& dst,
LoadStoreScalingOption option = PreferUnscaledOffset)
STXP
Store exclusive register pair.
void stxp(const Register& rs,
const Register& rt,
const Register& rt2,
const MemOperand& dst)
STXR
Store exclusive register.
void stxr(const Register& rs, const Register& rt, const MemOperand& dst)
STXRB
Store exclusive byte.
void stxrb(const Register& rs, const Register& rt, const MemOperand& dst)
STXRH
Store exclusive half-word.
void stxrh(const Register& rs, const Register& rt, const MemOperand& dst)
SUB
Subtract.
void sub(const Register& rd, const Register& rn, const Operand& operand)
SUBS
Subtract and update status flags.
void subs(const Register& rd, const Register& rn, const Operand& operand)
SVC
Generate exception targeting EL1.
void svc(int code)
SWP
Swap word or doubleword in memory (Armv8.1)
void swp(const Register& rs, const Register& rt, const MemOperand& src)
SWPA
Swap word or doubleword in memory, with Load-acquire semantics (Armv8.1)
void swpa(const Register& rs, const Register& rt, const MemOperand& src)
SWPAB
Swap byte in memory, with Load-acquire semantics (Armv8.1)
void swpab(const Register& rs, const Register& rt, const MemOperand& src)
SWPAH
Swap halfword in memory, with Load-acquire semantics (Armv8.1)
void swpah(const Register& rs, const Register& rt, const MemOperand& src)
SWPAL
Swap word or doubleword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void swpal(const Register& rs, const Register& rt, const MemOperand& src)
SWPALB
Swap byte in memory, with Load-acquire and Store-release semantics (Armv8.1)
void swpalb(const Register& rs, const Register& rt, const MemOperand& src)
SWPALH
Swap halfword in memory, with Load-acquire and Store-release semantics (Armv8.1)
void swpalh(const Register& rs, const Register& rt, const MemOperand& src)
SWPB
Swap byte in memory (Armv8.1)
void swpb(const Register& rs, const Register& rt, const MemOperand& src)
SWPH
Swap halfword in memory (Armv8.1)
void swph(const Register& rs, const Register& rt, const MemOperand& src)
SWPL
Swap word or doubleword in memory, with Store-release semantics (Armv8.1)
void swpl(const Register& rs, const Register& rt, const MemOperand& src)
SWPLB
Swap byte in memory, with Store-release semantics (Armv8.1)
void swplb(const Register& rs, const Register& rt, const MemOperand& src)
SWPLH
Swap halfword in memory, with Store-release semantics (Armv8.1)
void swplh(const Register& rs, const Register& rt, const MemOperand& src)
SXTB
Signed extend byte.
void sxtb(const Register& rd, const Register& rn)
SXTH
Signed extend halfword.
void sxth(const Register& rd, const Register& rn)
SXTW
Signed extend word.
void sxtw(const Register& rd, const Register& rn)
SYS
System instruction with pre-encoded op (op1:crn:crm:op2).
void sys(int op, const Register& xt = xzr)
SYS
System instruction.
void sys(int op1, int crn, int crm, int op2, const Register& xt = xzr)
TBNZ
Test bit and branch to PC offset if not zero.
void tbnz(const Register& rt, unsigned bit_pos, int64_t imm14)
TBNZ
Test bit and branch to label if not zero.
void tbnz(const Register& rt, unsigned bit_pos, Label* label)
TBZ
Test bit and branch to PC offset if zero.
void tbz(const Register& rt, unsigned bit_pos, int64_t imm14)
TBZ
Test bit and branch to label if zero.
void tbz(const Register& rt, unsigned bit_pos, Label* label)
TST
Bit test and set flags.
void tst(const Register& rn, const Operand& operand)
UBFIZ
Unsigned bitfield insert with zero at right.
void ubfiz(const Register& rd,
const Register& rn,
unsigned lsb,
unsigned width)
UBFM
Unsigned bitfield move.
void ubfm(const Register& rd,
const Register& rn,
unsigned immr,
unsigned imms)
UBFX
Unsigned bitfield extract.
void ubfx(const Register& rd,
const Register& rn,
unsigned lsb,
unsigned width)
UDF
Generate undefined instruction exception.
void udf(int code)
UDIV
Unsigned integer divide.
void udiv(const Register& rd, const Register& rn, const Register& rm)
UMADDL
Unsigned long multiply and accumulate: 32 x 32 + 64 -> 64-bit.
void umaddl(const Register& xd,
const Register& wn,
const Register& wm,
const Register& xa)
UMSUBL
Unsigned long multiply and subtract: 64 - (32 x 32) -> 64-bit.
void umsubl(const Register& xd,
const Register& wn,
const Register& wm,
const Register& xa)
UMULH
Unsigned multiply high: 64 x 64 -> 64-bit <127:64>.
void umulh(const Register& xd, const Register& xn, const Register& xm)
UMULL
Unsigned long multiply: 32 x 32 -> 64-bit.
void umull(const Register& xd, const Register& wn, const Register& wm)
UXTB
Unsigned extend byte.
void uxtb(const Register& rd, const Register& rn)
UXTH
Unsigned extend halfword.
void uxth(const Register& rd, const Register& rn)
UXTW
Unsigned extend word.
void uxtw(const Register& rd, const Register& rn)
XAFLAG
Convert floating-point condition flags from alternative format to Arm format (Armv8.5).
void xaflag()
XPACD
Strip Pointer Authentication Code of Data address (Armv8.3).
void xpacd(const Register& xd)
XPACI
Strip Pointer Authentication Code of Instruction address (Armv8.3).
void xpaci(const Register& xd)
XPACLRI
Strip Pointer Authentication Code of Instruction address in LR (Armv8.3).
void xpaclri()
AArch64 floating point and NEON instructions
ABS
Absolute value.
void abs(const VRegister& vd, const VRegister& vn)
ADD
Add.
void add(const VRegister& vd, const VRegister& vn, const VRegister& vm)
ADDHN
Add narrow returning high half.
void addhn(const VRegister& vd, const VRegister& vn, const VRegister& vm)
ADDHN2
Add narrow returning high half (second part).
void addhn2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
ADDP
Add pair of elements scalar.
void addp(const VRegister& vd, const VRegister& vn)
ADDP
Add pairwise.
void addp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
ADDV
Add across vector.
void addv(const VRegister& vd, const VRegister& vn)
AND
Bitwise and.
void and_(const VRegister& vd, const VRegister& vn, const VRegister& vm)
BIC
Bit clear immediate.
void bic(const VRegister& vd, const int imm8, const int left_shift = 0)
BIC
Bit clear.
void bic(const VRegister& vd, const VRegister& vn, const VRegister& vm)
BIF
Bitwise insert if false.
void bif(const VRegister& vd, const VRegister& vn, const VRegister& vm)
BIT
Bitwise insert if true.
void bit(const VRegister& vd, const VRegister& vn, const VRegister& vm)
BSL
Bitwise select.
void bsl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
CLS
Count leading sign bits.
void cls(const VRegister& vd, const VRegister& vn)
CLZ
Count leading zero bits (vector).
void clz(const VRegister& vd, const VRegister& vn)
CMEQ
Compare bitwise to zero.
void cmeq(const VRegister& vd, const VRegister& vn, int value)
CMEQ
Compare equal.
void cmeq(const VRegister& vd, const VRegister& vn, const VRegister& vm)
CMGE
Compare signed greater than or equal to zero.
void cmge(const VRegister& vd, const VRegister& vn, int value)
CMGE
Compare signed greater than or equal.
void cmge(const VRegister& vd, const VRegister& vn, const VRegister& vm)
CMGT
Compare signed greater than zero.
void cmgt(const VRegister& vd, const VRegister& vn, int value)
CMGT
Compare signed greater than.
void cmgt(const VRegister& vd, const VRegister& vn, const VRegister& vm)
CMHI
Compare unsigned higher.
void cmhi(const VRegister& vd, const VRegister& vn, const VRegister& vm)
CMHS
Compare unsigned higher or same.
void cmhs(const VRegister& vd, const VRegister& vn, const VRegister& vm)
CMLE
Compare signed less than or equal to zero.
void cmle(const VRegister& vd, const VRegister& vn, int value)
CMLT
Compare signed less than zero.
void cmlt(const VRegister& vd, const VRegister& vn, int value)
CMTST
Compare bitwise test bits nonzero.
void cmtst(const VRegister& vd, const VRegister& vn, const VRegister& vm)
CNT
Population count per byte.
void cnt(const VRegister& vd, const VRegister& vn)
DUP
Duplicate general-purpose register to vector.
void dup(const VRegister& vd, const Register& rn)
DUP
Duplicate vector element to vector or scalar.
void dup(const VRegister& vd, const VRegister& vn, int vn_index)
EOR
Bitwise eor.
void eor(const VRegister& vd, const VRegister& vn, const VRegister& vm)
EXT
Extract vector from pair of vectors.
void ext(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int index)
FABD
FP absolute difference.
void fabd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FABS
FP absolute.
void fabs(const VRegister& vd, const VRegister& vn)
FACGE
FP absolute greater than or equal.
void facge(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FACGT
FP absolute greater than.
void facgt(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FADD
FP add.
void fadd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FADDP
FP pairwise add scalar.
void faddp(const VRegister& vd, const VRegister& vn)
FADDP
FP pairwise add vector.
void faddp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FCADD
FP complex add (Armv8.3).
void fcadd(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int rot)
FCCMP
FP conditional compare.
void fccmp(const VRegister& vn,
const VRegister& vm,
StatusFlags nzcv,
Condition cond)
FCCMPE
FP conditional signaling compare.
void fccmpe(const VRegister& vn,
const VRegister& vm,
StatusFlags nzcv,
Condition cond)
FCMEQ
FP compare equal to zero.
void fcmeq(const VRegister& vd, const VRegister& vn, double imm)
FCMEQ
FP compare equal.
void fcmeq(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FCMGE
FP greater than or equal to zero.
void fcmge(const VRegister& vd, const VRegister& vn, double imm)
FCMGE
FP greater than or equal.
void fcmge(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FCMGT
FP greater than zero.
void fcmgt(const VRegister& vd, const VRegister& vn, double imm)
FCMGT
FP greater than.
void fcmgt(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FCMLA
FP complex multiply accumulate (by element) (Armv8.3).
void fcmla(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index,
int rot)
FCMLA
FP complex multiply accumulate (Armv8.3).
void fcmla(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int rot)
FCMLE
FP less than or equal to zero.
void fcmle(const VRegister& vd, const VRegister& vn, double imm)
FCMLT
FP less than to zero.
void fcmlt(const VRegister& vd, const VRegister& vn, double imm)
FCMP
FP compare immediate.
void fcmp(const VRegister& vn, double value)
FCMP
FP compare registers.
void fcmp(const VRegister& vn, const VRegister& vm)
FCMPE
FP signaling compare immediate.
void fcmpe(const VRegister& vn, double value)
FCMPE
FP signaling compare registers.
void fcmpe(const VRegister& vn, const VRegister& vm)
FCSEL
FP conditional select.
void fcsel(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
Condition cond)
FCVT
FP convert between precisions.
void fcvt(const VRegister& vd, const VRegister& vn)
FCVTAS
FP convert to signed integer, nearest with ties to away.
void fcvtas(const Register& rd, const VRegister& vn)
FCVTAS
FP convert to signed integer, nearest with ties to away.
void fcvtas(const VRegister& vd, const VRegister& vn)
FCVTAU
FP convert to unsigned integer, nearest with ties to away.
void fcvtau(const Register& rd, const VRegister& vn)
FCVTAU
FP convert to unsigned integer, nearest with ties to away.
void fcvtau(const VRegister& vd, const VRegister& vn)
FCVTL
FP convert to higher precision.
void fcvtl(const VRegister& vd, const VRegister& vn)
FCVTL2
FP convert to higher precision (second part).
void fcvtl2(const VRegister& vd, const VRegister& vn)
FCVTMS
FP convert to signed integer, round towards -infinity.
void fcvtms(const Register& rd, const VRegister& vn)
FCVTMS
FP convert to signed integer, round towards -infinity.
void fcvtms(const VRegister& vd, const VRegister& vn)
FCVTMU
FP convert to unsigned integer, round towards -infinity.
void fcvtmu(const Register& rd, const VRegister& vn)
FCVTMU
FP convert to unsigned integer, round towards -infinity.
void fcvtmu(const VRegister& vd, const VRegister& vn)
FCVTN
FP convert to lower precision.
void fcvtn(const VRegister& vd, const VRegister& vn)
FCVTN2
FP convert to lower prevision (second part).
void fcvtn2(const VRegister& vd, const VRegister& vn)
FCVTNS
FP convert to signed integer, nearest with ties to even.
void fcvtns(const Register& rd, const VRegister& vn)
FCVTNS
FP convert to signed integer, nearest with ties to even.
void fcvtns(const VRegister& rd, const VRegister& vn)
FCVTNU
FP convert to unsigned integer, nearest with ties to even.
void fcvtnu(const Register& rd, const VRegister& vn)
FCVTNU
FP convert to unsigned integer, nearest with ties to even.
void fcvtnu(const VRegister& rd, const VRegister& vn)
FCVTPS
FP convert to signed integer, round towards +infinity.
void fcvtps(const Register& rd, const VRegister& vn)
FCVTPS
FP convert to signed integer, round towards +infinity.
void fcvtps(const VRegister& vd, const VRegister& vn)
FCVTPU
FP convert to unsigned integer, round towards +infinity.
void fcvtpu(const Register& rd, const VRegister& vn)
FCVTPU
FP convert to unsigned integer, round towards +infinity.
void fcvtpu(const VRegister& vd, const VRegister& vn)
FCVTXN
FP convert to lower precision, rounding to odd.
void fcvtxn(const VRegister& vd, const VRegister& vn)
FCVTXN2
FP convert to lower precision, rounding to odd (second part).
void fcvtxn2(const VRegister& vd, const VRegister& vn)
FCVTZS
FP convert to signed integer or fixed-point, round towards zero.
void fcvtzs(const Register& rd, const VRegister& vn, int fbits = 0)
FCVTZS
FP convert to signed integer or fixed-point, round towards zero.
void fcvtzs(const VRegister& vd, const VRegister& vn, int fbits = 0)
FCVTZU
FP convert to unsigned integer or fixed-point, round towards zero.
void fcvtzu(const Register& rd, const VRegister& vn, int fbits = 0)
FCVTZU
FP convert to unsigned integer or fixed-point, round towards zero.
void fcvtzu(const VRegister& vd, const VRegister& vn, int fbits = 0)
FDIV
FP divide.
void fdiv(const VRegister& vd, const VRegister& fn, const VRegister& vm)
FJCVTZS
FP JavaScript convert to signed integer, rounding toward zero (Armv8.3).
void fjcvtzs(const Register& rd, const VRegister& vn)
FMADD
FP fused multiply-add.
void fmadd(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
const VRegister& va)
FMAX
FP maximum.
void fmax(const VRegister& vd, const VRegister& fn, const VRegister& vm)
FMAXNM
FP maximum number.
void fmaxnm(const VRegister& vd, const VRegister& fn, const VRegister& vm)
FMAXNMP
FP pairwise maximum number scalar.
void fmaxnmp(const VRegister& vd, const VRegister& vn)
FMAXNMP
FP pairwise maximum number vector.
void fmaxnmp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMAXNMV
FP maximum number across vector.
void fmaxnmv(const VRegister& vd, const VRegister& vn)
FMAXP
FP pairwise maximum scalar.
void fmaxp(const VRegister& vd, const VRegister& vn)
FMAXP
FP pairwise maximum vector.
void fmaxp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMAXV
FP maximum across vector.
void fmaxv(const VRegister& vd, const VRegister& vn)
FMIN
FP minimum.
void fmin(const VRegister& vd, const VRegister& fn, const VRegister& vm)
FMINNM
FP minimum number.
void fminnm(const VRegister& vd, const VRegister& fn, const VRegister& vm)
FMINNMP
FP pairwise minimum number scalar.
void fminnmp(const VRegister& vd, const VRegister& vn)
FMINNMP
FP pairwise minimum number vector.
void fminnmp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMINNMV
FP minimum number across vector.
void fminnmv(const VRegister& vd, const VRegister& vn)
FMINP
FP pairwise minimum scalar.
void fminp(const VRegister& vd, const VRegister& vn)
FMINP
FP pairwise minimum vector.
void fminp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMINV
FP minimum across vector.
void fminv(const VRegister& vd, const VRegister& vn)
FMLA
FP fused multiply-add to accumulator by element.
void fmla(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
FMLA
FP vector multiply accumulate.
void fmla(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMLAL
FP fused multiply-add long to accumulator by element.
void fmlal(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
FMLAL
FP fused multiply-add long to accumulator.
void fmlal(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMLAL2
FP fused multiply-add long to accumulator (second part).
void fmlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMLAL2
FP fused multiply-add long to accumulator by element (second part).
void fmlal2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
FMLS
FP fused multiply-sub from accumulator by element.
void fmls(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
FMLS
FP vector multiply subtract.
void fmls(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMLSL
FP fused multiply-subtract long to accumulator by element.
void fmlsl(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
FMLSL
FP fused multiply-subtract long to accumulator.
void fmlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMLSL2
FP fused multiply-subtract long to accumulator (second part).
void fmlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMLSL2
FP fused multiply-subtract long to accumulator by element (second part).
void fmlsl2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
FMOV
Move 64-bit register to top half of 128-bit FP register.
void fmov(const VRegister& vd, int index, const Register& rn)
FMOV
Move FP register to FP register.
void fmov(const VRegister& vd, const VRegister& fn)
FMOV
Move FP register to register.
void fmov(const Register& rd, const VRegister& fn)
FMOV
Move double precision immediate to FP register.
void fmov(const VRegister& vd, double imm)
FMOV
Move half precision immediate to FP register (Armv8.2).
void fmov(const VRegister& vd, Float16 imm)
FMOV
Move register to FP register.
void fmov(const VRegister& vd, const Register& rn)
FMOV
Move single precision immediate to FP register.
void fmov(const VRegister& vd, float imm)
FMOV
Move top half of 128-bit FP register to 64-bit register.
void fmov(const Register& rd, const VRegister& vn, int index)
FMSUB
FP fused multiply-subtract.
void fmsub(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
const VRegister& va)
FMUL
FP multiply by element.
void fmul(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
FMUL
FP multiply.
void fmul(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FMULX
FP multiply extended by element.
void fmulx(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
FMULX
FP vector multiply extended.
void fmulx(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FNEG
FP negate.
void fneg(const VRegister& vd, const VRegister& vn)
FNMADD
FP fused multiply-add and negate.
void fnmadd(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
const VRegister& va)
FNMSUB
FP fused multiply-subtract and negate.
void fnmsub(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
const VRegister& va)
FNMUL
FP multiply-negate scalar.
void fnmul(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FRECPE
FP reciprocal estimate.
void frecpe(const VRegister& vd, const VRegister& vn)
FRECPS
FP reciprocal step.
void frecps(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FRECPX
FP reciprocal exponent scalar.
void frecpx(const VRegister& vd, const VRegister& vn)
FRINT32X
FP round to 32-bit integer, exact, implicit rounding (Armv8.5).
void frint32x(const VRegister& vd, const VRegister& vn)
FRINT32Z
FP round to 32-bit integer, towards zero (Armv8.5).
void frint32z(const VRegister& vd, const VRegister& vn)
FRINT64X
FP round to 64-bit integer, exact, implicit rounding (Armv8.5).
void frint64x(const VRegister& vd, const VRegister& vn)
FRINT64Z
FP round to 64-bit integer, towards zero (Armv8.5).
void frint64z(const VRegister& vd, const VRegister& vn)
FRINTA
FP round to integer, nearest with ties to away.
void frinta(const VRegister& vd, const VRegister& vn)
FRINTI
FP round to integer, implicit rounding.
void frinti(const VRegister& vd, const VRegister& vn)
FRINTM
FP round to integer, toward minus infinity.
void frintm(const VRegister& vd, const VRegister& vn)
FRINTN
FP round to integer, nearest with ties to even.
void frintn(const VRegister& vd, const VRegister& vn)
FRINTP
FP round to integer, toward plus infinity.
void frintp(const VRegister& vd, const VRegister& vn)
FRINTX
FP round to integer, exact, implicit rounding.
void frintx(const VRegister& vd, const VRegister& vn)
FRINTZ
FP round to integer, towards zero.
void frintz(const VRegister& vd, const VRegister& vn)
FRSQRTE
FP reciprocal square root estimate.
void frsqrte(const VRegister& vd, const VRegister& vn)
FRSQRTS
FP reciprocal square root step.
void frsqrts(const VRegister& vd, const VRegister& vn, const VRegister& vm)
FSQRT
FP square root.
void fsqrt(const VRegister& vd, const VRegister& vn)
FSUB
FP subtract.
void fsub(const VRegister& vd, const VRegister& vn, const VRegister& vm)
INS
Insert vector element from another vector element.
void ins(const VRegister& vd,
int vd_index,
const VRegister& vn,
int vn_index)
INS
Insert vector element from general-purpose register.
void ins(const VRegister& vd, int vd_index, const Register& rn)
LD1
One-element single structure load to one lane.
void ld1(const VRegister& vt, int lane, const MemOperand& src)
LD1
One-element structure load to four registers.
void ld1(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const VRegister& vt4,
const MemOperand& src)
LD1
One-element structure load to one register.
void ld1(const VRegister& vt, const MemOperand& src)
LD1
One-element structure load to three registers.
void ld1(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const MemOperand& src)
LD1
One-element structure load to two registers.
void ld1(const VRegister& vt, const VRegister& vt2, const MemOperand& src)
LD1R
One-element single structure load to all lanes.
void ld1r(const VRegister& vt, const MemOperand& src)
LD2
Two-element single structure load to one lane.
void ld2(const VRegister& vt,
const VRegister& vt2,
int lane,
const MemOperand& src)
LD2
Two-element structure load.
void ld2(const VRegister& vt, const VRegister& vt2, const MemOperand& src)
LD2R
Two-element single structure load to all lanes.
void ld2r(const VRegister& vt, const VRegister& vt2, const MemOperand& src)
LD3
Three-element single structure load to one lane.
void ld3(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
int lane,
const MemOperand& src)
LD3
Three-element structure load.
void ld3(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const MemOperand& src)
LD3R
Three-element single structure load to all lanes.
void ld3r(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const MemOperand& src)
LD4
Four-element single structure load to one lane.
void ld4(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const VRegister& vt4,
int lane,
const MemOperand& src)
LD4
Four-element structure load.
void ld4(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const VRegister& vt4,
const MemOperand& src)
LD4R
Four-element single structure load to all lanes.
void ld4r(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const VRegister& vt4,
const MemOperand& src)
MLA
Multiply-add by scalar element.
void mla(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
MLA
Multiply-add to accumulator.
void mla(const VRegister& vd, const VRegister& vn, const VRegister& vm)
MLS
Multiply-subtract by scalar element.
void mls(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
MLS
Multiply-subtract to accumulator.
void mls(const VRegister& vd, const VRegister& vn, const VRegister& vm)
MOV
Move general-purpose register to a vector element.
void mov(const VRegister& vd, int vd_index, const Register& rn)
MOV
Move register to register.
void mov(const VRegister& vd, const VRegister& vn)
MOV
Move vector element to another vector element.
void mov(const VRegister& vd,
int vd_index,
const VRegister& vn,
int vn_index)
MOV
Move vector element to general-purpose register.
void mov(const Register& rd, const VRegister& vn, int vn_index)
MOV
Move vector element to scalar.
void mov(const VRegister& vd, const VRegister& vn, int vn_index)
MOVI
Vector move immediate.
void movi(const VRegister& vd,
const uint64_t imm,
Shift shift = LSL,
const int shift_amount = 0)
MUL
Multiply by scalar element.
void mul(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
MUL
Multiply.
void mul(const VRegister& vd, const VRegister& vn, const VRegister& vm)
MVN
Bitwise not.
void mvn(const VRegister& vd, const VRegister& vn)
MVNI
Vector move inverted immediate.
void mvni(const VRegister& vd,
const int imm8,
Shift shift = LSL,
const int shift_amount = 0)
NEG
Negate.
void neg(const VRegister& vd, const VRegister& vn)
NOT
Bitwise not.
void not_(const VRegister& vd, const VRegister& vn)
ORN
Bitwise orn.
void orn(const VRegister& vd, const VRegister& vn, const VRegister& vm)
ORR
Bitwise or immediate.
void orr(const VRegister& vd, const int imm8, const int left_shift = 0)
ORR
Bitwise or.
void orr(const VRegister& vd, const VRegister& vn, const VRegister& vm)
PMUL
Polynomial multiply.
void pmul(const VRegister& vd, const VRegister& vn, const VRegister& vm)
PMULL
Polynomial multiply long.
void pmull(const VRegister& vd, const VRegister& vn, const VRegister& vm)
PMULL2
Polynomial multiply long (second part).
void pmull2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
RADDHN
Rounding add narrow returning high half.
void raddhn(const VRegister& vd, const VRegister& vn, const VRegister& vm)
RADDHN2
Rounding add narrow returning high half (second part).
void raddhn2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
RBIT
Reverse bit order.
void rbit(const VRegister& vd, const VRegister& vn)
REV16
Reverse elements in 16-bit halfwords.
void rev16(const VRegister& vd, const VRegister& vn)
REV32
Reverse elements in 32-bit words.
void rev32(const VRegister& vd, const VRegister& vn)
REV64
Reverse elements in 64-bit doublewords.
void rev64(const VRegister& vd, const VRegister& vn)
RSHRN
Rounding shift right narrow by immediate.
void rshrn(const VRegister& vd, const VRegister& vn, int shift)
RSHRN2
Rounding shift right narrow by immediate (second part).
void rshrn2(const VRegister& vd, const VRegister& vn, int shift)
RSUBHN
Rounding subtract narrow returning high half.
void rsubhn(const VRegister& vd, const VRegister& vn, const VRegister& vm)
RSUBHN2
Rounding subtract narrow returning high half (second part).
void rsubhn2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SABA
Signed absolute difference and accumulate.
void saba(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SABAL
Signed absolute difference and accumulate long.
void sabal(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SABAL2
Signed absolute difference and accumulate long (second part).
void sabal2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SABD
Signed absolute difference.
void sabd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SABDL
Signed absolute difference long.
void sabdl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SABDL2
Signed absolute difference long (second part).
void sabdl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SADALP
Signed pairwise long add and accumulate.
void sadalp(const VRegister& vd, const VRegister& vn)
SADDL
Signed add long.
void saddl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SADDL2
Signed add long (second part).
void saddl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SADDLP
Signed pairwise long add.
void saddlp(const VRegister& vd, const VRegister& vn)
SADDLV
Signed add long across vector.
void saddlv(const VRegister& vd, const VRegister& vn)
SADDW
Signed add wide.
void saddw(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SADDW2
Signed add wide (second part).
void saddw2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SCVTF
Convert signed integer or fixed point to FP.
void scvtf(const VRegister& fd, const Register& rn, int fbits = 0)
SCVTF
Convert signed integer or fixed-point to FP.
void scvtf(const VRegister& fd, const VRegister& vn, int fbits = 0)
SDOT
Signed dot product (Armv8.2).
void sdot(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SDOT
Signed dot product by element (Armv8.2).
void sdot(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SHADD
Signed halving add.
void shadd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SHL
Shift left by immediate.
void shl(const VRegister& vd, const VRegister& vn, int shift)
SHLL
Shift left long by element size.
void shll(const VRegister& vd, const VRegister& vn, int shift)
SHLL2
Shift left long by element size (second part).
void shll2(const VRegister& vd, const VRegister& vn, int shift)
SHRN
Shift right narrow by immediate.
void shrn(const VRegister& vd, const VRegister& vn, int shift)
SHRN2
Shift right narrow by immediate (second part).
void shrn2(const VRegister& vd, const VRegister& vn, int shift)
SHSUB
Signed halving sub.
void shsub(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SLI
Shift left by immediate and insert.
void sli(const VRegister& vd, const VRegister& vn, int shift)
SMAX
Signed maximum.
void smax(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMAXP
Signed pairwise maximum.
void smaxp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMAXV
Signed maximum across vector.
void smaxv(const VRegister& vd, const VRegister& vn)
SMIN
Signed minimum.
void smin(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMINP
Signed minimum pairwise.
void sminp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMINV
Signed minimum across vector.
void sminv(const VRegister& vd, const VRegister& vn)
SMLAL
Signed long multiply-add by scalar element.
void smlal(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SMLAL
Signed long multiply-add.
void smlal(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMLAL2
Signed long multiply-add (second part).
void smlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMLAL2
Signed long multiply-add by scalar element (second part).
void smlal2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SMLSL
Signed long multiply-sub by scalar element.
void smlsl(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SMLSL
Signed long multiply-sub.
void smlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMLSL2
Signed long multiply-sub (second part).
void smlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMLSL2
Signed long multiply-sub by scalar element (second part).
void smlsl2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SMMLA
Signed 8-bit integer matrix multiply-accumulate (vector).
void smmla(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMOV
Signed move vector element to general-purpose register.
void smov(const Register& rd, const VRegister& vn, int vn_index)
SMULL
Signed long multiply by scalar element.
void smull(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SMULL
Signed long multiply.
void smull(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMULL2
Signed long multiply (second part).
void smull2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SMULL2
Signed long multiply by scalar element (second part).
void smull2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQABS
Signed saturating absolute value.
void sqabs(const VRegister& vd, const VRegister& vn)
SQADD
Signed saturating add.
void sqadd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQDMLAL
Signed saturating doubling long multiply-add by element.
void sqdmlal(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQDMLAL
Signed saturating doubling long multiply-add.
void sqdmlal(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQDMLAL2
Signed saturating doubling long multiply-add (second part).
void sqdmlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQDMLAL2
Signed saturating doubling long multiply-add by element (second part).
void sqdmlal2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQDMLSL
Signed saturating doubling long multiply-sub by element.
void sqdmlsl(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQDMLSL
Signed saturating doubling long multiply-subtract.
void sqdmlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQDMLSL2
Signed saturating doubling long multiply-sub by element (second part).
void sqdmlsl2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQDMLSL2
Signed saturating doubling long multiply-subtract (second part).
void sqdmlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQDMULH
Signed saturating doubling multiply element returning high half.
void sqdmulh(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQDMULH
Signed saturating doubling multiply returning high half.
void sqdmulh(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQDMULL
Signed saturating double long multiply by element.
void sqdmull(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQDMULL
Signed saturating doubling long multiply.
void sqdmull(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQDMULL2
Signed saturating double long multiply by element (second part).
void sqdmull2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQDMULL2
Signed saturating doubling long multiply (second part).
void sqdmull2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQNEG
Signed saturating negate.
void sqneg(const VRegister& vd, const VRegister& vn)
SQRDMLAH
Signed saturating rounding doubling multiply accumulate element returning high half (Armv8.1).
void sqrdmlah(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQRDMLAH
Signed saturating rounding doubling multiply accumulate returning high half (Armv8.1).
void sqrdmlah(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQRDMLSH
Signed saturating rounding doubling multiply subtract element returning high half (Armv8.1).
void sqrdmlsh(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQRDMLSH
Signed saturating rounding doubling multiply subtract returning high half (Armv8.1).
void sqrdmlsh(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQRDMULH
Signed saturating rounding doubling multiply element returning high half.
void sqrdmulh(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SQRDMULH
Signed saturating rounding doubling multiply returning high half.
void sqrdmulh(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQRSHL
Signed saturating rounding shift left by register.
void sqrshl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQRSHRN
Signed saturating rounded shift right narrow by immediate.
void sqrshrn(const VRegister& vd, const VRegister& vn, int shift)
SQRSHRN2
Signed saturating rounded shift right narrow by immediate (second part).
void sqrshrn2(const VRegister& vd, const VRegister& vn, int shift)
SQRSHRUN
Signed sat rounded shift right unsigned narrow by immediate.
void sqrshrun(const VRegister& vd, const VRegister& vn, int shift)
SQRSHRUN2
Signed sat rounded shift right unsigned narrow by immediate (second part).
void sqrshrun2(const VRegister& vd, const VRegister& vn, int shift)
SQSHL
Signed saturating shift left by immediate.
void sqshl(const VRegister& vd, const VRegister& vn, int shift)
SQSHL
Signed saturating shift left by register.
void sqshl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQSHLU
Signed saturating shift left unsigned by immediate.
void sqshlu(const VRegister& vd, const VRegister& vn, int shift)
SQSHRN
Signed saturating shift right narrow by immediate.
void sqshrn(const VRegister& vd, const VRegister& vn, int shift)
SQSHRN2
Signed saturating shift right narrow by immediate (second part).
void sqshrn2(const VRegister& vd, const VRegister& vn, int shift)
SQSHRUN
Signed saturating shift right unsigned narrow by immediate.
void sqshrun(const VRegister& vd, const VRegister& vn, int shift)
SQSHRUN2
Signed saturating shift right unsigned narrow by immediate (second part).
void sqshrun2(const VRegister& vd, const VRegister& vn, int shift)
SQSUB
Signed saturating subtract.
void sqsub(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SQXTN
Signed saturating extract narrow.
void sqxtn(const VRegister& vd, const VRegister& vn)
SQXTN2
Signed saturating extract narrow (second part).
void sqxtn2(const VRegister& vd, const VRegister& vn)
SQXTUN
Signed saturating extract unsigned narrow.
void sqxtun(const VRegister& vd, const VRegister& vn)
SQXTUN2
Signed saturating extract unsigned narrow (second part).
void sqxtun2(const VRegister& vd, const VRegister& vn)
SRHADD
Signed rounding halving add.
void srhadd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SRI
Shift right by immediate and insert.
void sri(const VRegister& vd, const VRegister& vn, int shift)
SRSHL
Signed rounding shift left by register.
void srshl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SRSHR
Signed rounding shift right by immediate.
void srshr(const VRegister& vd, const VRegister& vn, int shift)
SRSRA
Signed rounding shift right by immediate and accumulate.
void srsra(const VRegister& vd, const VRegister& vn, int shift)
SSHL
Signed shift left by register.
void sshl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SSHLL
Signed shift left long by immediate.
void sshll(const VRegister& vd, const VRegister& vn, int shift)
SSHLL2
Signed shift left long by immediate (second part).
void sshll2(const VRegister& vd, const VRegister& vn, int shift)
SSHR
Signed shift right by immediate.
void sshr(const VRegister& vd, const VRegister& vn, int shift)
SSRA
Signed shift right by immediate and accumulate.
void ssra(const VRegister& vd, const VRegister& vn, int shift)
SSUBL
Signed subtract long.
void ssubl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SSUBL2
Signed subtract long (second part).
void ssubl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SSUBW
Signed integer subtract wide.
void ssubw(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SSUBW2
Signed integer subtract wide (second part).
void ssubw2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
ST1
One-element single structure store from one lane.
void st1(const VRegister& vt, int lane, const MemOperand& src)
ST1
One-element structure store from four registers.
void st1(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const VRegister& vt4,
const MemOperand& src)
ST1
One-element structure store from one register.
void st1(const VRegister& vt, const MemOperand& src)
ST1
One-element structure store from three registers.
void st1(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const MemOperand& src)
ST1
One-element structure store from two registers.
void st1(const VRegister& vt, const VRegister& vt2, const MemOperand& src)
ST2
Two-element single structure store from two lanes.
void st2(const VRegister& vt,
const VRegister& vt2,
int lane,
const MemOperand& src)
ST2
Two-element structure store from two registers.
void st2(const VRegister& vt, const VRegister& vt2, const MemOperand& src)
ST3
Three-element single structure store from three lanes.
void st3(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
int lane,
const MemOperand& src)
ST3
Three-element structure store from three registers.
void st3(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const MemOperand& src)
ST4
Four-element single structure store from four lanes.
void st4(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const VRegister& vt4,
int lane,
const MemOperand& src)
ST4
Four-element structure store from four registers.
void st4(const VRegister& vt,
const VRegister& vt2,
const VRegister& vt3,
const VRegister& vt4,
const MemOperand& src)
SUB
Subtract.
void sub(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SUBHN
Subtract narrow returning high half.
void subhn(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SUBHN2
Subtract narrow returning high half (second part).
void subhn2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
SUDOT
Dot product with signed and unsigned integers (vector, by element).
void sudot(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
SUQADD
Signed saturating accumulate of unsigned value.
void suqadd(const VRegister& vd, const VRegister& vn)
SXTL
Signed extend long.
void sxtl(const VRegister& vd, const VRegister& vn)
SXTL2
Signed extend long (second part).
void sxtl2(const VRegister& vd, const VRegister& vn)
TBL
Table lookup from four registers.
void tbl(const VRegister& vd,
const VRegister& vn,
const VRegister& vn2,
const VRegister& vn3,
const VRegister& vn4,
const VRegister& vm)
TBL
Table lookup from one register.
void tbl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
TBL
Table lookup from three registers.
void tbl(const VRegister& vd,
const VRegister& vn,
const VRegister& vn2,
const VRegister& vn3,
const VRegister& vm)
TBL
Table lookup from two registers.
void tbl(const VRegister& vd,
const VRegister& vn,
const VRegister& vn2,
const VRegister& vm)
TBX
Table lookup extension from four registers.
void tbx(const VRegister& vd,
const VRegister& vn,
const VRegister& vn2,
const VRegister& vn3,
const VRegister& vn4,
const VRegister& vm)
TBX
Table lookup extension from one register.
void tbx(const VRegister& vd, const VRegister& vn, const VRegister& vm)
TBX
Table lookup extension from three registers.
void tbx(const VRegister& vd,
const VRegister& vn,
const VRegister& vn2,
const VRegister& vn3,
const VRegister& vm)
TBX
Table lookup extension from two registers.
void tbx(const VRegister& vd,
const VRegister& vn,
const VRegister& vn2,
const VRegister& vm)
TRN1
Transpose vectors (primary).
void trn1(const VRegister& vd, const VRegister& vn, const VRegister& vm)
TRN2
Transpose vectors (secondary).
void trn2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UABA
Unsigned absolute difference and accumulate.
void uaba(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UABAL
Unsigned absolute difference and accumulate long.
void uabal(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UABAL2
Unsigned absolute difference and accumulate long (second part).
void uabal2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UABD
Unsigned absolute difference.
void uabd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UABDL
Unsigned absolute difference long.
void uabdl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UABDL2
Unsigned absolute difference long (second part).
void uabdl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UADALP
Unsigned pairwise long add and accumulate.
void uadalp(const VRegister& vd, const VRegister& vn)
UADDL
Unsigned add long.
void uaddl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UADDL2
Unsigned add long (second part).
void uaddl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UADDLP
Unsigned pairwise long add.
void uaddlp(const VRegister& vd, const VRegister& vn)
UADDLV
Unsigned add long across vector.
void uaddlv(const VRegister& vd, const VRegister& vn)
UADDW
Unsigned add wide.
void uaddw(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UADDW2
Unsigned add wide (second part).
void uaddw2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UCVTF
Convert unsigned integer or fixed point to FP.
void ucvtf(const VRegister& fd, const Register& rn, int fbits = 0)
UCVTF
Convert unsigned integer or fixed-point to FP.
void ucvtf(const VRegister& fd, const VRegister& vn, int fbits = 0)
UDOT
Unsigned dot product (Armv8.2).
void udot(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UDOT
Unsigned dot product by element (Armv8.2).
void udot(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
UHADD
Unsigned halving add.
void uhadd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UHSUB
Unsigned halving sub.
void uhsub(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMAX
Unsigned maximum.
void umax(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMAXP
Unsigned pairwise maximum.
void umaxp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMAXV
Unsigned maximum across vector.
void umaxv(const VRegister& vd, const VRegister& vn)
UMIN
Unsigned minimum.
void umin(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMINP
Unsigned pairwise minimum.
void uminp(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMINV
Unsigned minimum across vector.
void uminv(const VRegister& vd, const VRegister& vn)
UMLAL
Unsigned long multiply-add by scalar element.
void umlal(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
UMLAL
Unsigned long multiply-add.
void umlal(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMLAL2
Unsigned long multiply-add (second part).
void umlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMLAL2
Unsigned long multiply-add by scalar element (second part).
void umlal2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
UMLSL
Unsigned long multiply-sub by scalar element.
void umlsl(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
UMLSL
Unsigned long multiply-sub.
void umlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMLSL2
Unsigned long multiply-sub (second part).
void umlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMLSL2
Unsigned long multiply-sub by scalar element (second part).
void umlsl2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
UMMLA
Unsigned 8-bit integer matrix multiply-accumulate (vector).
void ummla(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMOV
Unsigned move vector element to general-purpose register.
void umov(const Register& rd, const VRegister& vn, int vn_index)
UMULL
Unsigned long multiply by scalar element.
void umull(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
UMULL
Unsigned long multiply long.
void umull(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMULL2
Unsigned long multiply (second part).
void umull2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UMULL2
Unsigned long multiply by scalar element (second part).
void umull2(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
UQADD
Unsigned saturating add.
void uqadd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UQRSHL
Unsigned saturating rounding shift left by register.
void uqrshl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UQRSHRN
Unsigned saturating rounding shift right narrow by immediate.
void uqrshrn(const VRegister& vd, const VRegister& vn, int shift)
UQRSHRN2
Unsigned saturating rounding shift right narrow by immediate (second part).
void uqrshrn2(const VRegister& vd, const VRegister& vn, int shift)
UQSHL
Unsigned saturating shift left by immediate.
void uqshl(const VRegister& vd, const VRegister& vn, int shift)
UQSHL
Unsigned saturating shift left by register.
void uqshl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UQSHRN
Unsigned saturating shift right narrow by immediate.
void uqshrn(const VRegister& vd, const VRegister& vn, int shift)
UQSHRN2
Unsigned saturating shift right narrow by immediate (second part).
void uqshrn2(const VRegister& vd, const VRegister& vn, int shift)
UQSUB
Unsigned saturating subtract.
void uqsub(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UQXTN
Unsigned saturating extract narrow.
void uqxtn(const VRegister& vd, const VRegister& vn)
UQXTN2
Unsigned saturating extract narrow (second part).
void uqxtn2(const VRegister& vd, const VRegister& vn)
URECPE
Unsigned reciprocal estimate.
void urecpe(const VRegister& vd, const VRegister& vn)
URHADD
Unsigned rounding halving add.
void urhadd(const VRegister& vd, const VRegister& vn, const VRegister& vm)
URSHL
Unsigned rounding shift left by register.
void urshl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
URSHR
Unsigned rounding shift right by immediate.
void urshr(const VRegister& vd, const VRegister& vn, int shift)
URSQRTE
Unsigned reciprocal square root estimate.
void ursqrte(const VRegister& vd, const VRegister& vn)
URSRA
Unsigned rounding shift right by immediate and accumulate.
void ursra(const VRegister& vd, const VRegister& vn, int shift)
USDOT
Dot Product with unsigned and signed integers (vector).
void usdot(const VRegister& vd, const VRegister& vn, const VRegister& vm)
USDOT
Dot product with unsigned and signed integers (vector, by element).
void usdot(const VRegister& vd,
const VRegister& vn,
const VRegister& vm,
int vm_index)
USHL
Unsigned shift left by register.
void ushl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
USHLL
Unsigned shift left long by immediate.
void ushll(const VRegister& vd, const VRegister& vn, int shift)
USHLL2
Unsigned shift left long by immediate (second part).
void ushll2(const VRegister& vd, const VRegister& vn, int shift)
USHR
Unsigned shift right by immediate.
void ushr(const VRegister& vd, const VRegister& vn, int shift)
USMMLA
Unsigned and signed 8-bit integer matrix multiply-accumulate (vector).
void usmmla(const VRegister& vd, const VRegister& vn, const VRegister& vm)
USQADD
Unsigned saturating accumulate of signed value.
void usqadd(const VRegister& vd, const VRegister& vn)
USRA
Unsigned shift right by immediate and accumulate.
void usra(const VRegister& vd, const VRegister& vn, int shift)
USUBL
Unsigned subtract long.
void usubl(const VRegister& vd, const VRegister& vn, const VRegister& vm)
USUBL2
Unsigned subtract long (second part).
void usubl2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
USUBW
Unsigned subtract wide.
void usubw(const VRegister& vd, const VRegister& vn, const VRegister& vm)
USUBW2
Unsigned subtract wide (second part).
void usubw2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UXTL
Unsigned extend long.
void uxtl(const VRegister& vd, const VRegister& vn)
UXTL2
Unsigned extend long (second part).
void uxtl2(const VRegister& vd, const VRegister& vn)
UZP1
Unzip vectors (primary).
void uzp1(const VRegister& vd, const VRegister& vn, const VRegister& vm)
UZP2
Unzip vectors (secondary).
void uzp2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
XTN
Extract narrow.
void xtn(const VRegister& vd, const VRegister& vn)
XTN2
Extract narrow (second part).
void xtn2(const VRegister& vd, const VRegister& vn)
ZIP1
Zip vectors (primary).
void zip1(const VRegister& vd, const VRegister& vn, const VRegister& vm)
ZIP2
Zip vectors (secondary).
void zip2(const VRegister& vd, const VRegister& vn, const VRegister& vm)
AArch64 Scalable Vector Extension (SVE) instructions
ABS
Absolute value (predicated).
void abs(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
ADCLB
Add with carry long (bottom).
void adclb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
ADCLT
Add with carry long (top).
void adclt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
ADD
Add immediate (unpredicated).
void add(const ZRegister& zd, const ZRegister& zn, int imm8, int shift = -1)
ADD
Add vectors (predicated).
void add(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
ADD
Add vectors (unpredicated).
void add(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
ADDHNB
Add narrow high part (bottom).
void addhnb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
ADDHNT
Add narrow high part (top).
void addhnt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
ADDP
Add pairwise.
void addp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
ADDPL
Add multiple of predicate register size to scalar register.
void addpl(const Register& xd, const Register& xn, int imm6)
ADDVL
Add multiple of vector register size to scalar register.
void addvl(const Register& xd, const Register& xn, int imm6)
ADR
Compute vector address.
void adr(const ZRegister& zd, const SVEMemOperand& addr)
AND
Bitwise AND predicates.
void and_(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
AND
Bitwise AND vectors (predicated).
void and_(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
AND
Bitwise AND vectors (unpredicated).
void and_(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
AND
Bitwise AND with immediate (unpredicated).
void and_(const ZRegister& zd, const ZRegister& zn, uint64_t imm)
ANDS
Bitwise AND predicates.
void ands(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
ANDV
Bitwise AND reduction to scalar.
void andv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
ASR
Arithmetic shift right by 64-bit wide elements (predicated).
void asr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
ASR
Arithmetic shift right by 64-bit wide elements (unpredicated).
void asr(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
ASR
Arithmetic shift right by immediate (predicated).
void asr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
ASR
Arithmetic shift right by immediate (unpredicated).
void asr(const ZRegister& zd, const ZRegister& zn, int shift)
ASRD
Arithmetic shift right for divide by immediate (predicated).
void asrd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
ASRR
Reversed arithmetic shift right by vector (predicated).
void asrr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
BCAX
Bitwise clear and exclusive OR.
void bcax(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
const ZRegister& zk)
BDEP
Scatter lower bits into positions selected by bitmask.
void bdep(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
BEXT
Gather lower bits from positions selected by bitmask.
void bext(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
BGRP
Group bits to right or left as selected by bitmask.
void bgrp(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
BIC
Bitwise clear bits using immediate (unpredicated).
void bic(const ZRegister& zd, const ZRegister& zn, uint64_t imm)
BIC
Bitwise clear predicates.
void bic(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
BIC
Bitwise clear vectors (predicated).
void bic(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
BIC
Bitwise clear vectors (unpredicated).
void bic(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
BICS
Bitwise clear predicates.
void bics(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
BRKA
Break after first true condition.
void brka(const PRegisterWithLaneSize& pd,
const PRegister& pg,
const PRegisterWithLaneSize& pn)
BRKAS
Break after first true condition.
void brkas(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn)
BRKB
Break before first true condition.
void brkb(const PRegisterWithLaneSize& pd,
const PRegister& pg,
const PRegisterWithLaneSize& pn)
BRKBS
Break before first true condition.
void brkbs(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn)
BRKN
Propagate break to next partition.
void brkn(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
BRKNS
Propagate break to next partition.
void brkns(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
BRKPA
Break after first true condition, propagating from previous partition.
void brkpa(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
BRKPAS
Break after first true condition, propagating from previous partition.
void brkpas(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
BRKPB
Break before first true condition, propagating from previous partition.
void brkpb(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
BRKPBS
Break before first true condition, propagating from previous partition.
void brkpbs(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
BSL
Bitwise select.
void bsl(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
const ZRegister& zk)
BSL1N
Bitwise select with first input inverted.
void bsl1n(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
const ZRegister& zk)
BSL2N
Bitwise select with second input inverted.
void bsl2n(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
const ZRegister& zk)
CADD
Complex integer add with rotate.
void cadd(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int rot)
CDOT
Complex integer dot product (indexed).
void cdot(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index,
int rot)
CDOT
Complex integer dot product.
void cdot(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int rot)
CLASTA
Conditionally extract element after last to SIMD&FP scalar register.
void clasta(const VRegister& vd,
const PRegister& pg,
const VRegister& vn,
const ZRegister& zm)
CLASTA
Conditionally extract element after last to general-purpose register.
void clasta(const Register& rd,
const PRegister& pg,
const Register& rn,
const ZRegister& zm)
CLASTA
Conditionally extract element after last to vector register.
void clasta(const ZRegister& zd,
const PRegister& pg,
const ZRegister& zn,
const ZRegister& zm)
CLASTB
Conditionally extract last element to SIMD&FP scalar register.
void clastb(const VRegister& vd,
const PRegister& pg,
const VRegister& vn,
const ZRegister& zm)
CLASTB
Conditionally extract last element to general-purpose register.
void clastb(const Register& rd,
const PRegister& pg,
const Register& rn,
const ZRegister& zm)
CLASTB
Conditionally extract last element to vector register.
void clastb(const ZRegister& zd,
const PRegister& pg,
const ZRegister& zn,
const ZRegister& zm)
CLS
Count leading sign bits (predicated).
void cls(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
CLZ
Count leading zero bits (predicated).
void clz(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
CMLA
Complex integer multiply-add with rotate (indexed).
void cmla(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index,
int rot)
CMLA
Complex integer multiply-add with rotate.
void cmla(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int rot)
CMP
void cmp(Condition cond,
const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPEQ
Compare vector to 64-bit wide elements.
void cmpeq(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPEQ
Compare vector to immediate.
void cmpeq(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
CMPGE
Compare vector to 64-bit wide elements.
void cmpge(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPGE
Compare vector to immediate.
void cmpge(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
CMPGT
Compare vector to 64-bit wide elements.
void cmpgt(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPGT
Compare vector to immediate.
void cmpgt(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
CMPHI
Compare vector to 64-bit wide elements.
void cmphi(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPHI
Compare vector to immediate.
void cmphi(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
unsigned imm7)
CMPHS
Compare vector to 64-bit wide elements.
void cmphs(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPHS
Compare vector to immediate.
void cmphs(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
unsigned imm7)
CMPLE
Compare vector to 64-bit wide elements.
void cmple(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPLE
Compare vector to immediate.
void cmple(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
CMPLO
Compare vector to 64-bit wide elements.
void cmplo(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPLO
Compare vector to immediate.
void cmplo(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
unsigned imm7)
CMPLS
Compare vector to 64-bit wide elements.
void cmpls(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPLS
Compare vector to immediate.
void cmpls(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
unsigned imm7)
CMPLT
Compare vector to 64-bit wide elements.
void cmplt(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPLT
Compare vector to immediate.
void cmplt(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
CMPNE
Compare vector to 64-bit wide elements.
void cmpne(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
CMPNE
Compare vector to immediate.
void cmpne(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
CNOT
Logically invert boolean condition in vector (predicated).
void cnot(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
CNT
Count non-zero bits (predicated).
void cnt(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
CNTB
Set scalar to multiple of predicate constraint element count.
void cntb(const Register& rd, int pattern = SVE_ALL, int multiplier = 1)
CNTD
Set scalar to multiple of predicate constraint element count.
void cntd(const Register& rd, int pattern = SVE_ALL, int multiplier = 1)
CNTH
Set scalar to multiple of predicate constraint element count.
void cnth(const Register& rd, int pattern = SVE_ALL, int multiplier = 1)
CNTP
Set scalar to active predicate element count.
void cntp(const Register& xd,
const PRegister& pg,
const PRegisterWithLaneSize& pn)
CNTW
Set scalar to multiple of predicate constraint element count.
void cntw(const Register& rd, int pattern = SVE_ALL, int multiplier = 1)
COMPACT
Shuffle active elements of vector to the right and fill with zero.
void compact(const ZRegister& zd, const PRegister& pg, const ZRegister& zn)
CPY
Copy SIMD&FP scalar register to vector elements (predicated).
void cpy(const ZRegister& zd, const PRegisterM& pg, const VRegister& vn)
CPY
Copy general-purpose register to vector elements (predicated).
void cpy(const ZRegister& zd, const PRegisterM& pg, const Register& rn)
CPY
Copy signed integer immediate to vector elements (predicated).
void cpy(const ZRegister& zd, const PRegister& pg, int imm8, int shift = -1)
CTERMEQ
Compare and terminate loop.
void ctermeq(const Register& rn, const Register& rm)
CTERMNE
Compare and terminate loop.
void ctermne(const Register& rn, const Register& rm)
DECB
Decrement scalar by multiple of predicate constraint element count.
void decb(const Register& xdn, int pattern = SVE_ALL, int multiplier = 1)
DECD
Decrement scalar by multiple of predicate constraint element count.
void decd(const Register& xdn, int pattern = SVE_ALL, int multiplier = 1)
DECD
Decrement vector by multiple of predicate constraint element count.
void decd(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
DECH
Decrement scalar by multiple of predicate constraint element count.
void dech(const Register& xdn, int pattern = SVE_ALL, int multiplier = 1)
DECH
Decrement vector by multiple of predicate constraint element count.
void dech(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
DECP
Decrement scalar by active predicate element count.
void decp(const Register& rdn, const PRegisterWithLaneSize& pg)
DECP
Decrement vector by active predicate element count.
void decp(const ZRegister& zdn, const PRegister& pg)
DECW
Decrement scalar by multiple of predicate constraint element count.
void decw(const Register& xdn, int pattern = SVE_ALL, int multiplier = 1)
DECW
Decrement vector by multiple of predicate constraint element count.
void decw(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
DUP
Broadcast general-purpose register to vector elements (unpredicated).
void dup(const ZRegister& zd, const Register& xn)
DUP
Broadcast indexed element to vector (unpredicated).
void dup(const ZRegister& zd, const ZRegister& zn, unsigned index)
DUP
Broadcast signed immediate to vector elements (unpredicated).
void dup(const ZRegister& zd, int imm8, int shift = -1)
DUPM
Broadcast logical bitmask immediate to vector (unpredicated).
void dupm(const ZRegister& zd, uint64_t imm)
EON
Bitwise exclusive OR with inverted immediate (unpredicated).
void eon(const ZRegister& zd, const ZRegister& zn, uint64_t imm)
EOR
Bitwise exclusive OR predicates.
void eor(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
EOR
Bitwise exclusive OR vectors (predicated).
void eor(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
EOR
Bitwise exclusive OR vectors (unpredicated).
void eor(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
EOR
Bitwise exclusive OR with immediate (unpredicated).
void eor(const ZRegister& zd, const ZRegister& zn, uint64_t imm)
EOR3
Bitwise exclusive OR of three vectors.
void eor3(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
const ZRegister& zk)
EORBT
Interleaving exclusive OR (bottom, top).
void eorbt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
EORS
Bitwise exclusive OR predicates.
void eors(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
EORTB
Interleaving exclusive OR (top, bottom).
void eortb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
EORV
Bitwise XOR reduction to scalar.
void eorv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
EXT
Extract vector from pair of vectors.
void ext(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
unsigned offset)
FABD
Floating-point absolute difference (predicated).
void fabd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FABS
Floating-point absolute value (predicated).
void fabs(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FACGE
Floating-point absolute compare vectors.
void facge(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
FACGT
Floating-point absolute compare vectors.
void facgt(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
FADD
Floating-point add immediate (predicated).
void fadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
double imm)
FADD
Floating-point add vector (predicated).
void fadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FADD
Floating-point add vector (unpredicated).
void fadd(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
FADDA
Floating-point add strictly-ordered reduction, accumulating in scalar.
void fadda(const VRegister& vd,
const PRegister& pg,
const VRegister& vn,
const ZRegister& zm)
FADDP
Floating-point add pairwise.
void faddp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FADDV
Floating-point add recursive reduction to scalar.
void faddv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
FCADD
Floating-point complex add with rotate (predicated).
void fcadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm,
int rot)
FCMEQ
Floating-point compare vector with zero.
void fcmeq(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
double zero)
FCMEQ
Floating-point compare vectors.
void fcmeq(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
FCMGE
Floating-point compare vector with zero.
void fcmge(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
double zero)
FCMGE
Floating-point compare vectors.
void fcmge(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
FCMGT
Floating-point compare vector with zero.
void fcmgt(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
double zero)
FCMGT
Floating-point compare vectors.
void fcmgt(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
FCMLA
Floating-point complex multiply-add by indexed values with rotate.
void fcmla(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index,
int rot)
FCMLA
Floating-point complex multiply-add with rotate (predicated).
void fcmla(const ZRegister& zda,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm,
int rot)
FCMLE
Floating-point compare vector with zero.
void fcmle(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
double zero)
FCMLT
Floating-point compare vector with zero.
void fcmlt(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
double zero)
FCMNE
Floating-point compare vector with zero.
void fcmne(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
double zero)
FCMNE
Floating-point compare vectors.
void fcmne(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
FCMUO
Floating-point compare vectors.
void fcmuo(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
FCPY
Copy floating-point immediate to vector elements (predicated).
void fcpy(const ZRegister& zd, const PRegisterM& pg, double imm)
FCPY
Copy half-precision floating-point immediate to vector elements (predicated).
void fcpy(const ZRegister& zd, const PRegisterM& pg, Float16 imm)
FCVT
Floating-point convert precision (predicated).
void fcvt(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FCVTLT
Floating-point up convert long (top, predicated).
void fcvtlt(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FCVTNT
Floating-point down convert and narrow (top, predicated).
void fcvtnt(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FCVTX
Floating-point down convert, rounding to odd (predicated).
void fcvtx(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FCVTXNT
Floating-point down convert, rounding to odd (top, predicated).
void fcvtxnt(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FCVTZS
Floating-point convert to signed integer, rounding toward zero (predicated).
void fcvtzs(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FCVTZU
Floating-point convert to unsigned integer, rounding toward zero (predicated).
void fcvtzu(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FDIV
Floating-point divide by vector (predicated).
void fdiv(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FDIVR
Floating-point reversed divide by vector (predicated).
void fdivr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FDUP
Broadcast floating-point immediate to vector elements.
void fdup(const ZRegister& zd, double imm)
FDUP
Broadcast half-precision floating-point immediate to vector elements.
void fdup(const ZRegister& zd, Float16 imm)
FEXPA
Floating-point exponential accelerator.
void fexpa(const ZRegister& zd, const ZRegister& zn)
FLOGB
Floating-point base 2 logarithm as integer.
void flogb(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FMAD
Floating-point fused multiply-add vectors (predicated), writing multiplicand [Zdn = Za + Zdn * Zm].
void fmad(const ZRegister& zdn,
const PRegisterM& pg,
const ZRegister& zm,
const ZRegister& za)
FMAX
Floating-point maximum (predicated).
void fmax(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMAX
Floating-point maximum with immediate (predicated).
void fmax(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
double imm)
FMAXNM
Floating-point maximum number (predicated).
void fmaxnm(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMAXNM
Floating-point maximum number with immediate (predicated).
void fmaxnm(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
double imm)
FMAXNMP
Floating-point maximum number pairwise.
void fmaxnmp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMAXNMV
Floating-point maximum number recursive reduction to scalar.
void fmaxnmv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
FMAXP
Floating-point maximum pairwise.
void fmaxp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMAXV
Floating-point maximum recursive reduction to scalar.
void fmaxv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
FMIN
Floating-point minimum (predicated).
void fmin(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMIN
Floating-point minimum with immediate (predicated).
void fmin(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
double imm)
FMINNM
Floating-point minimum number (predicated).
void fminnm(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMINNM
Floating-point minimum number with immediate (predicated).
void fminnm(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
double imm)
FMINNMP
Floating-point minimum number pairwise.
void fminnmp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMINNMV
Floating-point minimum number recursive reduction to scalar.
void fminnmv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
FMINP
Floating-point minimum pairwise.
void fminp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMINV
Floating-point minimum recursive reduction to scalar.
void fminv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
FMLA
Floating-point fused multiply-add by indexed elements (Zda = Zda + Zn * Zm[indexed]).
void fmla(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
FMLA
Floating-point fused multiply-add vectors (predicated), writing addend [Zda = Zda + Zn * Zm].
void fmla(const ZRegister& zda,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMLALB
Half-precision floating-point multiply-add long to single-precision (bottom).
void fmlalb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
FMLALB
Half-precision floating-point multiply-add long to single-precision (bottom, indexed).
void fmlalb(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
FMLALT
Half-precision floating-point multiply-add long to single-precision (top).
void fmlalt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
FMLALT
Half-precision floating-point multiply-add long to single-precision (top, indexed).
void fmlalt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
FMLS
Floating-point fused multiply-subtract by indexed elements (Zda = Zda + -Zn * Zm[indexed]).
void fmls(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
FMLS
Floating-point fused multiply-subtract vectors (predicated), writing addend [Zda = Zda + -Zn * Zm].
void fmls(const ZRegister& zda,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMLSLB
Half-precision floating-point multiply-subtract long from single-precision (bottom).
void fmlslb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
FMLSLB
Half-precision floating-point multiply-subtract long from single-precision (bottom, indexed).
void fmlslb(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
FMLSLT
Half-precision floating-point multiply-subtract long from single-precision (top).
void fmlslt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
FMLSLT
Half-precision floating-point multiply-subtract long from single-precision (top, indexed).
void fmlslt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
FMMLA
Floating-point matrix multiply-accumulate.
void fmmla(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
FMOV
Move 8-bit floating-point immediate to vector elements (predicated).
void fmov(const ZRegister& zd, const PRegisterM& pg, double imm)
FMOV
Move 8-bit floating-point immediate to vector elements (unpredicated).
void fmov(const ZRegister& zd, double imm)
FMSB
Floating-point fused multiply-subtract vectors (predicated), writing multiplicand [Zdn = Za + -Zdn * Zm].
void fmsb(const ZRegister& zdn,
const PRegisterM& pg,
const ZRegister& zm,
const ZRegister& za)
FMUL
Floating-point multiply by immediate (predicated).
void fmul(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
double imm)
FMUL
Floating-point multiply by indexed elements.
void fmul(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
unsigned index)
FMUL
Floating-point multiply vectors (predicated).
void fmul(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FMUL
Floating-point multiply vectors (unpredicated).
void fmul(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
FMULX
Floating-point multiply-extended vectors (predicated).
void fmulx(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FNEG
Floating-point negate (predicated).
void fneg(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FNMAD
Floating-point negated fused multiply-add vectors (predicated), writing multiplicand [Zdn = -Za + -Zdn * Zm].
void fnmad(const ZRegister& zdn,
const PRegisterM& pg,
const ZRegister& zm,
const ZRegister& za)
FNMLA
Floating-point negated fused multiply-add vectors (predicated), writing addend [Zda = -Zda + -Zn * Zm].
void fnmla(const ZRegister& zda,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FNMLS
Floating-point negated fused multiply-subtract vectors (predicated), writing addend [Zda = -Zda + Zn * Zm].
void fnmls(const ZRegister& zda,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FNMSB
Floating-point negated fused multiply-subtract vectors (predicated), writing multiplicand [Zdn = -Za + Zdn * Zm].
void fnmsb(const ZRegister& zdn,
const PRegisterM& pg,
const ZRegister& zm,
const ZRegister& za)
FRECPE
Floating-point reciprocal estimate (unpredicated).
void frecpe(const ZRegister& zd, const ZRegister& zn)
FRECPS
Floating-point reciprocal step (unpredicated).
void frecps(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
FRECPX
Floating-point reciprocal exponent (predicated).
void frecpx(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FRINTA
Floating-point round to integral value (predicated).
void frinta(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FRINTI
Floating-point round to integral value (predicated).
void frinti(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FRINTM
Floating-point round to integral value (predicated).
void frintm(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FRINTN
Floating-point round to integral value (predicated).
void frintn(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FRINTP
Floating-point round to integral value (predicated).
void frintp(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FRINTX
Floating-point round to integral value (predicated).
void frintx(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FRINTZ
Floating-point round to integral value (predicated).
void frintz(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FRSQRTE
Floating-point reciprocal square root estimate (unpredicated).
void frsqrte(const ZRegister& zd, const ZRegister& zn)
FRSQRTS
Floating-point reciprocal square root step (unpredicated).
void frsqrts(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
FSCALE
Floating-point adjust exponent by vector (predicated).
void fscale(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FSQRT
Floating-point square root (predicated).
void fsqrt(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
FSUB
Floating-point subtract immediate (predicated).
void fsub(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
double imm)
FSUB
Floating-point subtract vectors (predicated).
void fsub(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FSUB
Floating-point subtract vectors (unpredicated).
void fsub(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
FSUBR
Floating-point reversed subtract from immediate (predicated).
void fsubr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
double imm)
FSUBR
Floating-point reversed subtract vectors (predicated).
void fsubr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
FTMAD
Floating-point trigonometric multiply-add coefficient.
void ftmad(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int imm3)
FTSMUL
Floating-point trigonometric starting value.
void ftsmul(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
FTSSEL
Floating-point trigonometric select coefficient.
void ftssel(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
HISTCNT
Count matching elements in vector.
void histcnt(const ZRegister& zd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
HISTSEG
Count matching elements in vector segments.
void histseg(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
INCB
Increment scalar by multiple of predicate constraint element count.
void incb(const Register& xdn, int pattern = SVE_ALL, int multiplier = 1)
INCD
Increment scalar by multiple of predicate constraint element count.
void incd(const Register& xdn, int pattern = SVE_ALL, int multiplier = 1)
INCD
Increment vector by multiple of predicate constraint element count.
void incd(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
INCH
Increment scalar by multiple of predicate constraint element count.
void inch(const Register& xdn, int pattern = SVE_ALL, int multiplier = 1)
INCH
Increment vector by multiple of predicate constraint element count.
void inch(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
INCP
Increment scalar by active predicate element count.
void incp(const Register& rdn, const PRegisterWithLaneSize& pg)
INCP
Increment vector by active predicate element count.
void incp(const ZRegister& zdn, const PRegister& pg)
INCW
Increment scalar by multiple of predicate constraint element count.
void incw(const Register& xdn, int pattern = SVE_ALL, int multiplier = 1)
INCW
Increment vector by multiple of predicate constraint element count.
void incw(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
INDEX
Create index starting from and incremented by general-purpose register.
void index(const ZRegister& zd, const Register& rn, const Register& rm)
INDEX
Create index starting from and incremented by immediate.
void index(const ZRegister& zd, int start, int step)
INDEX
Create index starting from general-purpose register and incremented by immediate.
void index(const ZRegister& zd, const Register& rn, int imm5)
INDEX
Create index starting from immediate and incremented by general-purpose register.
void index(const ZRegister& zd, int imm5, const Register& rm)
INSR
Insert SIMD&FP scalar register in shifted vector.
void insr(const ZRegister& zdn, const VRegister& vm)
INSR
Insert general-purpose register in shifted vector.
void insr(const ZRegister& zdn, const Register& rm)
LASTA
Extract element after last to SIMD&FP scalar register.
void lasta(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
LASTA
Extract element after last to general-purpose register.
void lasta(const Register& rd, const PRegister& pg, const ZRegister& zn)
LASTB
Extract last element to SIMD&FP scalar register.
void lastb(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
LASTB
Extract last element to general-purpose register.
void lastb(const Register& rd, const PRegister& pg, const ZRegister& zn)
LD1B
Contiguous/gather load bytes to vector.
void ld1b(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1D
Contiguous/gather load doublewords to vector.
void ld1d(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1H
Contiguous/gather load halfwords to vector.
void ld1h(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RB
Load and broadcast unsigned byte to vector.
void ld1rb(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RD
Load and broadcast doubleword to vector.
void ld1rd(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RH
Load and broadcast unsigned halfword to vector.
void ld1rh(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1ROB
Contiguous load and replicate thirty-two bytes.
void ld1rob(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1ROD
Contiguous load and replicate four doublewords.
void ld1rod(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1ROH
Contiguous load and replicate sixteen halfwords.
void ld1roh(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1ROW
Contiguous load and replicate eight words.
void ld1row(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RQB
Contiguous load and replicate sixteen bytes.
void ld1rqb(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RQD
Contiguous load and replicate two doublewords.
void ld1rqd(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RQH
Contiguous load and replicate eight halfwords.
void ld1rqh(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RQW
Contiguous load and replicate four words.
void ld1rqw(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RSB
Load and broadcast signed byte to vector.
void ld1rsb(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RSH
Load and broadcast signed halfword to vector.
void ld1rsh(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RSW
Load and broadcast signed word to vector.
void ld1rsw(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1RW
Load and broadcast unsigned word to vector.
void ld1rw(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1SB
Contiguous/gather load signed bytes to vector.
void ld1sb(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1SH
Contiguous/gather load signed halfwords to vector.
void ld1sh(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1SW
Contiguous/gather load signed words to vector.
void ld1sw(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD1W
Contiguous/gather load words to vector.
void ld1w(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD2B
Contiguous load two-byte structures to two vectors.
void ld2b(const ZRegister& zt1,
const ZRegister& zt2,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD2D
Contiguous load two-doubleword structures to two vectors.
void ld2d(const ZRegister& zt1,
const ZRegister& zt2,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD2H
Contiguous load two-halfword structures to two vectors.
void ld2h(const ZRegister& zt1,
const ZRegister& zt2,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD2W
Contiguous load two-word structures to two vectors.
void ld2w(const ZRegister& zt1,
const ZRegister& zt2,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD3B
Contiguous load three-byte structures to three vectors.
void ld3b(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD3D
Contiguous load three-doubleword structures to three vectors.
void ld3d(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD3H
Contiguous load three-halfword structures to three vectors.
void ld3h(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD3W
Contiguous load three-word structures to three vectors.
void ld3w(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD4B
Contiguous load four-byte structures to four vectors.
void ld4b(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const ZRegister& zt4,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD4D
Contiguous load four-doubleword structures to four vectors.
void ld4d(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const ZRegister& zt4,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD4H
Contiguous load four-halfword structures to four vectors.
void ld4h(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const ZRegister& zt4,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LD4W
Contiguous load four-word structures to four vectors.
void ld4w(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const ZRegister& zt4,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDFF1B
Contiguous load first-fault unsigned bytes to vector.
void ldff1b(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDFF1B
Gather load first-fault unsigned bytes to vector (immediate index).
void ldff1b(const ZRegister& zt,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
LDFF1B
Gather load first-fault unsigned bytes to vector.
void ldff1b(const ZRegister& zt,
const PRegisterZ& pg,
const Register& xn,
const ZRegister& zm)
LDFF1D
Contiguous load first-fault doublewords to vector.
void ldff1d(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDFF1D
Gather load first-fault doublewords to vector (immediate index).
void ldff1d(const ZRegister& zt,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
LDFF1D
Gather load first-fault doublewords to vector (vector index).
void ldff1d(const ZRegister& zt,
const PRegisterZ& pg,
const Register& xn,
const ZRegister& zm)
LDFF1H
Contiguous load first-fault unsigned halfwords to vector.
void ldff1h(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDFF1H
Gather load first-fault unsigned halfwords to vector (immediate index).
void ldff1h(const ZRegister& zt,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
LDFF1H
Gather load first-fault unsigned halfwords to vector (vector index).
void ldff1h(const ZRegister& zt,
const PRegisterZ& pg,
const Register& xn,
const ZRegister& zm)
LDFF1SB
Contiguous load first-fault signed bytes to vector.
void ldff1sb(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDFF1SB
Gather load first-fault signed bytes to vector (immediate index).
void ldff1sb(const ZRegister& zt,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
LDFF1SB
Gather load first-fault signed bytes to vector (vector index).
void ldff1sb(const ZRegister& zt,
const PRegisterZ& pg,
const Register& xn,
const ZRegister& zm)
LDFF1SH
Contiguous load first-fault signed halfwords to vector.
void ldff1sh(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDFF1SH
Gather load first-fault signed halfwords to vector (immediate index).
void ldff1sh(const ZRegister& zt,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
LDFF1SH
Gather load first-fault signed halfwords to vector (vector index).
void ldff1sh(const ZRegister& zt,
const PRegisterZ& pg,
const Register& xn,
const ZRegister& zm)
LDFF1SW
Contiguous load first-fault signed words to vector.
void ldff1sw(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDFF1SW
Gather load first-fault signed words to vector (immediate index).
void ldff1sw(const ZRegister& zt,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
LDFF1SW
Gather load first-fault signed words to vector (vector index).
void ldff1sw(const ZRegister& zt,
const PRegisterZ& pg,
const Register& xn,
const ZRegister& zm)
LDFF1W
Contiguous load first-fault unsigned words to vector.
void ldff1w(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDFF1W
Gather load first-fault unsigned words to vector (immediate index).
void ldff1w(const ZRegister& zt,
const PRegisterZ& pg,
const ZRegister& zn,
int imm5)
LDFF1W
Gather load first-fault unsigned words to vector (vector index).
void ldff1w(const ZRegister& zt,
const PRegisterZ& pg,
const Register& xn,
const ZRegister& zm)
LDNF1B
Contiguous load non-fault unsigned bytes to vector (immediate index).
void ldnf1b(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNF1D
Contiguous load non-fault doublewords to vector (immediate index).
void ldnf1d(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNF1H
Contiguous load non-fault unsigned halfwords to vector (immediate index).
void ldnf1h(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNF1SB
Contiguous load non-fault signed bytes to vector (immediate index).
void ldnf1sb(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNF1SH
Contiguous load non-fault signed halfwords to vector (immediate index).
void ldnf1sh(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNF1SW
Contiguous load non-fault signed words to vector (immediate index).
void ldnf1sw(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNF1W
Contiguous load non-fault unsigned words to vector (immediate index).
void ldnf1w(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNT1B
Contiguous load non-temporal bytes to vector.
void ldnt1b(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNT1D
Contiguous load non-temporal doublewords to vector.
void ldnt1d(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNT1H
Contiguous load non-temporal halfwords to vector.
void ldnt1h(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNT1SB
Gather load non-temporal signed bytes.
void ldnt1sb(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNT1SH
Gather load non-temporal signed halfwords.
void ldnt1sh(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNT1SW
Gather load non-temporal signed words.
void ldnt1sw(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDNT1W
Contiguous load non-temporal words to vector.
void ldnt1w(const ZRegister& zt,
const PRegisterZ& pg,
const SVEMemOperand& addr)
LDR
Load SVE predicate/vector register.
void ldr(const CPURegister& rt, const SVEMemOperand& addr)
LSL
Logical shift left by 64-bit wide elements (predicated).
void lsl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
LSL
Logical shift left by 64-bit wide elements (unpredicated).
void lsl(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
LSL
Logical shift left by immediate (predicated).
void lsl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
LSL
Logical shift left by immediate (unpredicated).
void lsl(const ZRegister& zd, const ZRegister& zn, int shift)
LSLR
Reversed logical shift left by vector (predicated).
void lslr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
LSR
Logical shift right by 64-bit wide elements (predicated).
void lsr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
LSR
Logical shift right by 64-bit wide elements (unpredicated).
void lsr(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
LSR
Logical shift right by immediate (predicated).
void lsr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
LSR
Logical shift right by immediate (unpredicated).
void lsr(const ZRegister& zd, const ZRegister& zn, int shift)
LSRR
Reversed logical shift right by vector (predicated).
void lsrr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
MAD
Multiply-add vectors (predicated), writing multiplicand [Zdn = Za + Zdn * Zm].
void mad(const ZRegister& zdn,
const PRegisterM& pg,
const ZRegister& zm,
const ZRegister& za)
MATCH
Detect any matching elements, setting the condition flags.
void match(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
MLA
Multiply-add to accumulator (indexed).
void mla(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
MLA
Multiply-add vectors (predicated), writing addend [Zda = Zda + Zn * Zm].
void mla(const ZRegister& zda,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
MLS
Multiply-subtract from accumulator (indexed).
void mls(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
MLS
Multiply-subtract vectors (predicated), writing addend [Zda = Zda - Zn * Zm].
void mls(const ZRegister& zda,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
MOV
Move SIMD&FP scalar register to vector elements (predicated)
void mov(const ZRegister& zd, const PRegisterM& pg, const VRegister& vn)
MOV
Move SIMD&FP scalar register to vector elements (unpredicated)
void mov(const ZRegister& zd, const VRegister& vn)
MOV
Move general-purpose register to vector elements (predicated)
void mov(const ZRegister& zd, const PRegisterM& pg, const Register& rn)
MOV
Move general-purpose register to vector elements (unpredicated)
void mov(const ZRegister& zd, const Register& xn)
MOV
Move indexed element to vector elements (unpredicated)
void mov(const ZRegister& zd, const ZRegister& zn, unsigned index)
MOV
Move logical bitmask immediate to vector (unpredicated).
void mov(const ZRegister& zd, uint64_t imm)
MOV
Move predicates (merging)
void mov(const PRegisterWithLaneSize& pd,
const PRegisterM& pg,
const PRegisterWithLaneSize& pn)
MOV
Move predicates (unpredicated)
void mov(const PRegister& pd, const PRegister& pn)
MOV
Move predicates (zeroing)
void mov(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn)
MOV
Move signed immediate to vector elements (unpredicated).
void mov(const ZRegister& zd, int imm8, int shift)
MOV
Move signed integer immediate to vector elements (predicated)
void mov(const ZRegister& zd, const PRegister& pg, int imm8, int shift = -1)
MOV
Move vector elements (predicated)
void mov(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
MOV
Move vector register (unpredicated)
void mov(const ZRegister& zd, const ZRegister& zn)
MOVPRFX
Move prefix (predicated).
void movprfx(const ZRegister& zd, const PRegister& pg, const ZRegister& zn)
MOVPRFX
Move prefix (unpredicated).
void movprfx(const ZRegister& zd, const ZRegister& zn)
MOVS
Move predicate (unpredicated), setting the condition flags
void movs(const PRegister& pd, const PRegister& pn)
MOVS
Move predicates (zeroing), setting the condition flags
void movs(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn)
MSB
Multiply-subtract vectors (predicated), writing multiplicand [Zdn = Za - Zdn * Zm].
void msb(const ZRegister& zdn,
const PRegisterM& pg,
const ZRegister& zm,
const ZRegister& za)
MUL
Multiply (indexed).
void mul(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
MUL
Multiply by immediate (unpredicated).
void mul(const ZRegister& zd, const ZRegister& zn, int imm8)
MUL
Multiply vectors (predicated).
void mul(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
MUL
Multiply vectors (unpredicated).
void mul(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
NAND
Bitwise NAND predicates.
void nand(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
NANDS
Bitwise NAND predicates.
void nands(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
NBSL
Bitwise inverted select.
void nbsl(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
const ZRegister& zk)
NEG
Negate (predicated).
void neg(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
NMATCH
Detect no matching elements, setting the condition flags.
void nmatch(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const ZRegister& zn,
const ZRegister& zm)
NOR
Bitwise NOR predicates.
void nor(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
NORS
Bitwise NOR predicates.
void nors(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
NOT
Bitwise invert predicate.
void not_(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn)
NOT
Bitwise invert vector (predicated).
void not_(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
NOTS
Bitwise invert predicate, setting the condition flags.
void nots(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn)
ORN
Bitwise OR inverted predicate.
void orn(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
ORN
Bitwise OR with inverted immediate (unpredicated).
void orn(const ZRegister& zd, const ZRegister& zn, uint64_t imm)
ORNS
Bitwise OR inverted predicate.
void orns(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
ORR
Bitwise OR predicate.
void orr(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
ORR
Bitwise OR vectors (predicated).
void orr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
ORR
Bitwise OR vectors (unpredicated).
void orr(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
ORR
Bitwise OR with immediate (unpredicated).
void orr(const ZRegister& zd, const ZRegister& zn, uint64_t imm)
ORRS
Bitwise OR predicate.
void orrs(const PRegisterWithLaneSize& pd,
const PRegisterZ& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
ORV
Bitwise OR reduction to scalar.
void orv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
PFALSE
Set all predicate elements to false.
void pfalse(const PRegisterWithLaneSize& pd)
PFIRST
Set the first active predicate element to true.
void pfirst(const PRegisterWithLaneSize& pd,
const PRegister& pg,
const PRegisterWithLaneSize& pn)
PMUL
Polynomial multiply vectors (unpredicated).
void pmul(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
PMULLB
Polynomial multiply long (bottom).
void pmullb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
PMULLT
Polynomial multiply long (top).
void pmullt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
PNEXT
Find next active predicate.
void pnext(const PRegisterWithLaneSize& pd,
const PRegister& pg,
const PRegisterWithLaneSize& pn)
PRFB
Prefetch bytes.
void prfb(PrefetchOperation prfop,
const PRegister& pg,
const SVEMemOperand& addr)
PRFD
Prefetch doublewords.
void prfd(PrefetchOperation prfop,
const PRegister& pg,
const SVEMemOperand& addr)
PRFH
Prefetch halfwords.
void prfh(PrefetchOperation prfop,
const PRegister& pg,
const SVEMemOperand& addr)
PRFW
Prefetch words.
void prfw(PrefetchOperation prfop,
const PRegister& pg,
const SVEMemOperand& addr)
PTEST
Set condition flags for predicate.
void ptest(const PRegister& pg, const PRegisterWithLaneSize& pn)
PTRUE
Initialise predicate from named constraint.
void ptrue(const PRegisterWithLaneSize& pd, int pattern = SVE_ALL)
PTRUES
Initialise predicate from named constraint.
void ptrues(const PRegisterWithLaneSize& pd, int pattern = SVE_ALL)
PUNPKHI
Unpack and widen half of predicate.
void punpkhi(const PRegisterWithLaneSize& pd,
const PRegisterWithLaneSize& pn)
PUNPKLO
Unpack and widen half of predicate.
void punpklo(const PRegisterWithLaneSize& pd,
const PRegisterWithLaneSize& pn)
RADDHNB
Rounding add narrow high part (bottom).
void raddhnb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
RADDHNT
Rounding add narrow high part (top).
void raddhnt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
RBIT
Reverse bits (predicated).
void rbit(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
RDFFR
Read the first-fault register.
void rdffr(const PRegisterWithLaneSize& pd)
RDFFR
Return predicate of succesfully loaded elements.
void rdffr(const PRegisterWithLaneSize& pd, const PRegisterZ& pg)
RDFFRS
Return predicate of succesfully loaded elements.
void rdffrs(const PRegisterWithLaneSize& pd, const PRegisterZ& pg)
RDVL
Read multiple of vector register size to scalar register.
void rdvl(const Register& xd, int imm6)
REV
Reverse all elements in a predicate.
void rev(const PRegisterWithLaneSize& pd, const PRegisterWithLaneSize& pn)
REV
Reverse all elements in a vector (unpredicated).
void rev(const ZRegister& zd, const ZRegister& zn)
REVB
Reverse bytes / halfwords / words within elements (predicated).
void revb(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
REVH
Reverse bytes / halfwords / words within elements (predicated).
void revh(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
REVW
Reverse bytes / halfwords / words within elements (predicated).
void revw(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
RSHRNB
Rounding shift right narrow by immediate (bottom).
void rshrnb(const ZRegister& zd, const ZRegister& zn, int shift)
RSHRNT
Rounding shift right narrow by immediate (top).
void rshrnt(const ZRegister& zd, const ZRegister& zn, int shift)
RSUBHNB
Rounding subtract narrow high part (bottom).
void rsubhnb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
RSUBHNT
Rounding subtract narrow high part (top).
void rsubhnt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SABA
Signed absolute difference and accumulate.
void saba(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SABALB
Signed absolute difference and accumulate long (bottom).
void sabalb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SABALT
Signed absolute difference and accumulate long (top).
void sabalt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SABD
Signed absolute difference (predicated).
void sabd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SABDLB
Signed absolute difference long (bottom).
void sabdlb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SABDLT
Signed absolute difference long (top).
void sabdlt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SADALP
Signed add and accumulate long pairwise.
void sadalp(const ZRegister& zda, const PRegisterM& pg, const ZRegister& zn)
SADDLB
Signed add long (bottom).
void saddlb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SADDLBT
Signed add long (bottom + top).
void saddlbt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SADDLT
Signed add long (top).
void saddlt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SADDV
Signed add reduction to scalar.
void saddv(const VRegister& dd, const PRegister& pg, const ZRegister& zn)
SADDWB
Signed add wide (bottom).
void saddwb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SADDWT
Signed add wide (top).
void saddwt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SBCLB
Subtract with carry long (bottom).
void sbclb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SBCLT
Subtract with carry long (top).
void sbclt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SCVTF
Signed integer convert to floating-point (predicated).
void scvtf(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
SDIV
Signed divide (predicated).
void sdiv(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SDIVR
Signed reversed divide (predicated).
void sdivr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SDOT
Signed dot product by indexed quadtuplet.
void sdot(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SDOT
Signed dot product.
void sdot(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SEL
Conditionally select elements from two predicates.
void sel(const PRegisterWithLaneSize& pd,
const PRegister& pg,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
SEL
Conditionally select elements from two vectors.
void sel(const ZRegister& zd,
const PRegister& pg,
const ZRegister& zn,
const ZRegister& zm)
SETFFR
Initialise the first-fault register to all true.
void setffr()
SHADD
Signed halving addition.
void shadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SHRNB
Shift right narrow by immediate (bottom).
void shrnb(const ZRegister& zd, const ZRegister& zn, int shift)
SHRNT
Shift right narrow by immediate (top).
void shrnt(const ZRegister& zd, const ZRegister& zn, int shift)
SHSUB
Signed halving subtract.
void shsub(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SHSUBR
Signed halving subtract reversed vectors.
void shsubr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SLI
Shift left and insert (immediate).
void sli(const ZRegister& zd, const ZRegister& zn, int shift)
SMAX
Signed maximum vectors (predicated).
void smax(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SMAX
Signed maximum with immediate (unpredicated).
void smax(const ZRegister& zd, const ZRegister& zn, int imm8)
SMAXP
Signed maximum pairwise.
void smaxp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SMAXV
Signed maximum reduction to scalar.
void smaxv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
SMIN
Signed minimum vectors (predicated).
void smin(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SMIN
Signed minimum with immediate (unpredicated).
void smin(const ZRegister& zd, const ZRegister& zn, int imm8)
SMINP
Signed minimum pairwise.
void sminp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SMINV
Signed minimum reduction to scalar.
void sminv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
SMLALB
Signed multiply-add long to accumulator (bottom).
void smlalb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SMLALB
Signed multiply-add long to accumulator (bottom, indexed).
void smlalb(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SMLALT
Signed multiply-add long to accumulator (top).
void smlalt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SMLALT
Signed multiply-add long to accumulator (top, indexed).
void smlalt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SMLSLB
Signed multiply-subtract long from accumulator (bottom).
void smlslb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SMLSLB
Signed multiply-subtract long from accumulator (bottom, indexed).
void smlslb(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SMLSLT
Signed multiply-subtract long from accumulator (top).
void smlslt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SMLSLT
Signed multiply-subtract long from accumulator (top, indexed).
void smlslt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SMMLA
Signed integer matrix multiply-accumulate.
void smmla(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SMULH
Signed multiply returning high half (predicated).
void smulh(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SMULH
Signed multiply returning high half (unpredicated).
void smulh(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SMULLB
Signed multiply long (bottom).
void smullb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SMULLB
Signed multiply long (bottom, indexed).
void smullb(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
SMULLT
Signed multiply long (top).
void smullt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SMULLT
Signed multiply long (top, indexed).
void smullt(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
SPLICE
Splice two vectors under predicate control.
void splice(const ZRegister& zd,
const PRegister& pg,
const ZRegister& zn,
const ZRegister& zm)
SQABS
Signed saturating absolute value.
void sqabs(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
SQADD
Signed saturating add immediate (unpredicated).
void sqadd(const ZRegister& zd,
const ZRegister& zn,
int imm8,
int shift = -1)
SQADD
Signed saturating add vectors (unpredicated).
void sqadd(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SQADD
Signed saturating addition (predicated).
void sqadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SQCADD
Saturating complex integer add with rotate.
void sqcadd(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int rot)
SQDECB
Signed saturating decrement scalar by multiple of 8-bit predicate constraint element count.
void sqdecb(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
SQDECB
Signed saturating decrement scalar by multiple of 8-bit predicate constraint element count.
void sqdecb(const Register& xd,
const Register& wn,
int pattern,
int multiplier)
SQDECD
Signed saturating decrement scalar by multiple of 64-bit predicate constraint element count.
void sqdecd(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
SQDECD
Signed saturating decrement scalar by multiple of 64-bit predicate constraint element count.
void sqdecd(const Register& xd,
const Register& wn,
int pattern = SVE_ALL,
int multiplier = 1)
SQDECD
Signed saturating decrement vector by multiple of 64-bit predicate constraint element count.
void sqdecd(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
SQDECH
Signed saturating decrement scalar by multiple of 16-bit predicate constraint element count.
void sqdech(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
SQDECH
Signed saturating decrement scalar by multiple of 16-bit predicate constraint element count.
void sqdech(const Register& xd,
const Register& wn,
int pattern = SVE_ALL,
int multiplier = 1)
SQDECH
Signed saturating decrement vector by multiple of 16-bit predicate constraint element count.
void sqdech(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
SQDECP
Signed saturating decrement scalar by active predicate element count.
void sqdecp(const Register& xd,
const PRegisterWithLaneSize& pg,
const Register& wn)
SQDECP
Signed saturating decrement scalar by active predicate element count.
void sqdecp(const Register& xdn, const PRegisterWithLaneSize& pg)
SQDECP
Signed saturating decrement vector by active predicate element count.
void sqdecp(const ZRegister& zdn, const PRegister& pg)
SQDECW
Signed saturating decrement scalar by multiple of 32-bit predicate constraint element count.
void sqdecw(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
SQDECW
Signed saturating decrement scalar by multiple of 32-bit predicate constraint element count.
void sqdecw(const Register& xd,
const Register& wn,
int pattern = SVE_ALL,
int multiplier = 1)
SQDECW
Signed saturating decrement vector by multiple of 32-bit predicate constraint element count.
void sqdecw(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
SQDMLALB
Signed saturating doubling multiply-add long to accumulator (bottom).
void sqdmlalb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SQDMLALB
Signed saturating doubling multiply-add long to accumulator (bottom, indexed).
void sqdmlalb(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQDMLALBT
Signed saturating doubling multiply-add long to accumulator (bottom x top).
void sqdmlalbt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm)
SQDMLALT
Signed saturating doubling multiply-add long to accumulator (top).
void sqdmlalt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SQDMLALT
Signed saturating doubling multiply-add long to accumulator (top, indexed).
void sqdmlalt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQDMLSLB
Signed saturating doubling multiply-subtract long from accumulator (bottom).
void sqdmlslb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SQDMLSLB
Signed saturating doubling multiply-subtract long from accumulator (bottom, indexed).
void sqdmlslb(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQDMLSLBT
Signed saturating doubling multiply-subtract long from accumulator (bottom x top).
void sqdmlslbt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm)
SQDMLSLT
Signed saturating doubling multiply-subtract long from accumulator (top).
void sqdmlslt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SQDMLSLT
Signed saturating doubling multiply-subtract long from accumulator (top, indexed).
void sqdmlslt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQDMULH
Signed saturating doubling multiply high (indexed).
void sqdmulh(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQDMULH
Signed saturating doubling multiply high (unpredicated).
void sqdmulh(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SQDMULLB
Signed saturating doubling multiply long (bottom).
void sqdmullb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SQDMULLB
Signed saturating doubling multiply long (bottom, indexed).
void sqdmullb(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQDMULLT
Signed saturating doubling multiply long (top).
void sqdmullt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SQDMULLT
Signed saturating doubling multiply long (top, indexed).
void sqdmullt(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQINCB
Signed saturating increment scalar by multiple of 8-bit predicate constraint element count.
void sqincb(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
SQINCB
Signed saturating increment scalar by multiple of 8-bit predicate constraint element count.
void sqincb(const Register& xd,
const Register& wn,
int pattern = SVE_ALL,
int multiplier = 1)
SQINCD
Signed saturating increment scalar by multiple of 64-bit predicate constraint element count.
void sqincd(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
SQINCD
Signed saturating increment scalar by multiple of 64-bit predicate constraint element count.
void sqincd(const Register& xd,
const Register& wn,
int pattern,
int multiplier)
SQINCD
Signed saturating increment vector by multiple of 64-bit predicate constraint element count.
void sqincd(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
SQINCH
Signed saturating increment scalar by multiple of 16-bit predicate constraint element count.
void sqinch(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
SQINCH
Signed saturating increment scalar by multiple of 16-bit predicate constraint element count.
void sqinch(const Register& xd,
const Register& wn,
int pattern = SVE_ALL,
int multiplier = 1)
SQINCH
Signed saturating increment vector by multiple of 16-bit predicate constraint element count.
void sqinch(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
SQINCP
Signed saturating increment scalar by active predicate element count.
void sqincp(const Register& xd,
const PRegisterWithLaneSize& pg,
const Register& wn)
SQINCP
Signed saturating increment scalar by active predicate element count.
void sqincp(const Register& xdn, const PRegisterWithLaneSize& pg)
SQINCP
Signed saturating increment vector by active predicate element count.
void sqincp(const ZRegister& zdn, const PRegister& pg)
SQINCW
Signed saturating increment scalar by multiple of 32-bit predicate constraint element count.
void sqincw(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
SQINCW
Signed saturating increment scalar by multiple of 32-bit predicate constraint element count.
void sqincw(const Register& xd,
const Register& wn,
int pattern = SVE_ALL,
int multiplier = 1)
SQINCW
Signed saturating increment vector by multiple of 32-bit predicate constraint element count.
void sqincw(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
SQNEG
Signed saturating negate.
void sqneg(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
SQRDCMLAH
Saturating rounding doubling complex integer multiply-add high with rotate (indexed).
void sqrdcmlah(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index,
int rot)
SQRDCMLAH
Saturating rounding doubling complex integer multiply-add high with rotate.
void sqrdcmlah(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int rot)
SQRDMLAH
Signed saturating rounding doubling multiply-add high to accumulator (indexed).
void sqrdmlah(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQRDMLAH
Signed saturating rounding doubling multiply-add high to accumulator (unpredicated).
void sqrdmlah(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SQRDMLSH
Signed saturating rounding doubling multiply-subtract high from accumulator (indexed).
void sqrdmlsh(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQRDMLSH
Signed saturating rounding doubling multiply-subtract high from accumulator (unpredicated).
void sqrdmlsh(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
SQRDMULH
Signed saturating rounding doubling multiply high (indexed).
void sqrdmulh(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
SQRDMULH
Signed saturating rounding doubling multiply high (unpredicated).
void sqrdmulh(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SQRSHL
Signed saturating rounding shift left by vector (predicated).
void sqrshl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SQRSHLR
Signed saturating rounding shift left reversed vectors (predicated).
void sqrshlr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SQRSHRNB
Signed saturating rounding shift right narrow by immediate (bottom).
void sqrshrnb(const ZRegister& zd, const ZRegister& zn, int shift)
SQRSHRNT
Signed saturating rounding shift right narrow by immediate (top).
void sqrshrnt(const ZRegister& zd, const ZRegister& zn, int shift)
SQRSHRUNB
Signed saturating rounding shift right unsigned narrow by immediate (bottom).
void sqrshrunb(const ZRegister& zd, const ZRegister& zn, int shift)
SQRSHRUNT
Signed saturating rounding shift right unsigned narrow by immediate (top).
void sqrshrunt(const ZRegister& zd, const ZRegister& zn, int shift)
SQSHL
Signed saturating shift left by immediate.
void sqshl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
SQSHL
Signed saturating shift left by vector (predicated).
void sqshl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SQSHLR
Signed saturating shift left reversed vectors (predicated).
void sqshlr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SQSHLU
Signed saturating shift left unsigned by immediate.
void sqshlu(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
SQSHRNB
Signed saturating shift right narrow by immediate (bottom).
void sqshrnb(const ZRegister& zd, const ZRegister& zn, int shift)
SQSHRNT
Signed saturating shift right narrow by immediate (top).
void sqshrnt(const ZRegister& zd, const ZRegister& zn, int shift)
SQSHRUNB
Signed saturating shift right unsigned narrow by immediate (bottom).
void sqshrunb(const ZRegister& zd, const ZRegister& zn, int shift)
SQSHRUNT
Signed saturating shift right unsigned narrow by immediate (top).
void sqshrunt(const ZRegister& zd, const ZRegister& zn, int shift)
SQSUB
Signed saturating subtract immediate (unpredicated).
void sqsub(const ZRegister& zd,
const ZRegister& zn,
int imm8,
int shift = -1)
SQSUB
Signed saturating subtract vectors (unpredicated).
void sqsub(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SQSUB
Signed saturating subtraction (predicated).
void sqsub(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SQSUBR
Signed saturating subtraction reversed vectors (predicated).
void sqsubr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SQXTNB
Signed saturating extract narrow (bottom).
void sqxtnb(const ZRegister& zd, const ZRegister& zn)
SQXTNT
Signed saturating extract narrow (top).
void sqxtnt(const ZRegister& zd, const ZRegister& zn)
SQXTUNB
Signed saturating unsigned extract narrow (bottom).
void sqxtunb(const ZRegister& zd, const ZRegister& zn)
SQXTUNT
Signed saturating unsigned extract narrow (top).
void sqxtunt(const ZRegister& zd, const ZRegister& zn)
SRHADD
Signed rounding halving addition.
void srhadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SRI
Shift right and insert (immediate).
void sri(const ZRegister& zd, const ZRegister& zn, int shift)
SRSHL
Signed rounding shift left by vector (predicated).
void srshl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SRSHLR
Signed rounding shift left reversed vectors (predicated).
void srshlr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SRSHR
Signed rounding shift right by immediate.
void srshr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
SRSRA
Signed rounding shift right and accumulate (immediate).
void srsra(const ZRegister& zda, const ZRegister& zn, int shift)
SSHLLB
Signed shift left long by immediate (bottom).
void sshllb(const ZRegister& zd, const ZRegister& zn, int shift)
SSHLLT
Signed shift left long by immediate (top).
void sshllt(const ZRegister& zd, const ZRegister& zn, int shift)
SSRA
Signed shift right and accumulate (immediate).
void ssra(const ZRegister& zda, const ZRegister& zn, int shift)
SSUBLB
Signed subtract long (bottom).
void ssublb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SSUBLBT
Signed subtract long (bottom - top).
void ssublbt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SSUBLT
Signed subtract long (top).
void ssublt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SSUBLTB
Signed subtract long (top - bottom).
void ssubltb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SSUBWB
Signed subtract wide (bottom).
void ssubwb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SSUBWT
Signed subtract wide (top).
void ssubwt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
ST1B
Contiguous/scatter store bytes from vector.
void st1b(const ZRegister& zt,
const PRegister& pg,
const SVEMemOperand& addr)
ST1D
Contiguous/scatter store doublewords from vector.
void st1d(const ZRegister& zt,
const PRegister& pg,
const SVEMemOperand& addr)
ST1H
Contiguous/scatter store halfwords from vector.
void st1h(const ZRegister& zt,
const PRegister& pg,
const SVEMemOperand& addr)
ST1W
Contiguous/scatter store words from vector.
void st1w(const ZRegister& zt,
const PRegister& pg,
const SVEMemOperand& addr)
ST2B
Contiguous store two-byte structures from two vectors.
void st2b(const ZRegister& zt1,
const ZRegister& zt2,
const PRegister& pg,
const SVEMemOperand& addr)
ST2D
Contiguous store two-doubleword structures from two vectors,
void st2d(const ZRegister& zt1,
const ZRegister& zt2,
const PRegister& pg,
const SVEMemOperand& addr)
ST2H
Contiguous store two-halfword structures from two vectors.
void st2h(const ZRegister& zt1,
const ZRegister& zt2,
const PRegister& pg,
const SVEMemOperand& addr)
ST2W
Contiguous store two-word structures from two vectors.
void st2w(const ZRegister& zt1,
const ZRegister& zt2,
const PRegister& pg,
const SVEMemOperand& addr)
ST3B
Contiguous store three-byte structures from three vectors.
void st3b(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const PRegister& pg,
const SVEMemOperand& addr)
ST3D
Contiguous store three-doubleword structures from three vectors.
void st3d(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const PRegister& pg,
const SVEMemOperand& addr)
ST3H
Contiguous store three-halfword structures from three vectors.
void st3h(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const PRegister& pg,
const SVEMemOperand& addr)
ST3W
Contiguous store three-word structures from three vectors.
void st3w(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const PRegister& pg,
const SVEMemOperand& addr)
ST4B
Contiguous store four-byte structures from four vectors.
void st4b(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const ZRegister& zt4,
const PRegister& pg,
const SVEMemOperand& addr)
ST4D
Contiguous store four-doubleword structures from four vectors.
void st4d(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const ZRegister& zt4,
const PRegister& pg,
const SVEMemOperand& addr)
ST4H
Contiguous store four-halfword structures from four vectors.
void st4h(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const ZRegister& zt4,
const PRegister& pg,
const SVEMemOperand& addr)
ST4W
Contiguous store four-word structures from four vectors.
void st4w(const ZRegister& zt1,
const ZRegister& zt2,
const ZRegister& zt3,
const ZRegister& zt4,
const PRegister& pg,
const SVEMemOperand& addr)
STNT1B
Contiguous store non-temporal bytes from vector.
void stnt1b(const ZRegister& zt,
const PRegister& pg,
const SVEMemOperand& addr)
STNT1D
Contiguous store non-temporal doublewords from vector.
void stnt1d(const ZRegister& zt,
const PRegister& pg,
const SVEMemOperand& addr)
STNT1H
Contiguous store non-temporal halfwords from vector.
void stnt1h(const ZRegister& zt,
const PRegister& pg,
const SVEMemOperand& addr)
STNT1W
Contiguous store non-temporal words from vector.
void stnt1w(const ZRegister& zt,
const PRegister& pg,
const SVEMemOperand& addr)
STR
Store SVE predicate/vector register.
void str(const CPURegister& rt, const SVEMemOperand& addr)
SUB
Subtract immediate (unpredicated).
void sub(const ZRegister& zd, const ZRegister& zn, int imm8, int shift = -1)
SUB
Subtract vectors (predicated).
void sub(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SUB
Subtract vectors (unpredicated).
void sub(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SUBHNB
Subtract narrow high part (bottom).
void subhnb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SUBHNT
Subtract narrow high part (top).
void subhnt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
SUBR
Reversed subtract from immediate (unpredicated).
void subr(const ZRegister& zd, const ZRegister& zn, int imm8, int shift = -1)
SUBR
Reversed subtract vectors (predicated).
void subr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SUDOT
Signed by unsigned integer indexed dot product.
void sudot(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
SUNPKHI
Signed unpack and extend half of vector.
void sunpkhi(const ZRegister& zd, const ZRegister& zn)
SUNPKLO
Signed unpack and extend half of vector.
void sunpklo(const ZRegister& zd, const ZRegister& zn)
SUQADD
Signed saturating addition of unsigned value.
void suqadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
SXTB
Signed byte extend (predicated).
void sxtb(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
SXTH
Signed halfword extend (predicated).
void sxth(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
SXTW
Signed word extend (predicated).
void sxtw(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
TBL
Programmable table lookup in one or two vector table (zeroing).
void tbl(const ZRegister& zd,
const ZRegister& zn1,
const ZRegister& zn2,
const ZRegister& zm)
TBL
Programmable table lookup/permute using vector of indices into a vector.
void tbl(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
TBX
Programmable table lookup in single vector table (merging).
void tbx(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
TRN1
Interleave even or odd elements from two predicates.
void trn1(const PRegisterWithLaneSize& pd,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
TRN1
Interleave even or odd elements from two vectors.
void trn1(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
TRN2
Interleave even or odd elements from two predicates.
void trn2(const PRegisterWithLaneSize& pd,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
TRN2
Interleave even or odd elements from two vectors.
void trn2(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UABA
Unsigned absolute difference and accumulate.
void uaba(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UABALB
Unsigned absolute difference and accumulate long (bottom).
void uabalb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UABALT
Unsigned absolute difference and accumulate long (top).
void uabalt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UABD
Unsigned absolute difference (predicated).
void uabd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UABDLB
Unsigned absolute difference long (bottom).
void uabdlb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UABDLT
Unsigned absolute difference long (top).
void uabdlt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UADALP
Unsigned add and accumulate long pairwise.
void uadalp(const ZRegister& zda, const PRegisterM& pg, const ZRegister& zn)
UADDLB
Unsigned add long (bottom).
void uaddlb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UADDLT
Unsigned add long (top).
void uaddlt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UADDV
Unsigned add reduction to scalar.
void uaddv(const VRegister& dd, const PRegister& pg, const ZRegister& zn)
UADDWB
Unsigned add wide (bottom).
void uaddwb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UADDWT
Unsigned add wide (top).
void uaddwt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UCVTF
Unsigned integer convert to floating-point (predicated).
void ucvtf(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
UDIV
Unsigned divide (predicated).
void udiv(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UDIVR
Unsigned reversed divide (predicated).
void udivr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UDOT
Unsigned dot product by indexed quadtuplet.
void udot(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
UDOT
Unsigned dot product.
void udot(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UHADD
Unsigned halving addition.
void uhadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UHSUB
Unsigned halving subtract.
void uhsub(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UHSUBR
Unsigned halving subtract reversed vectors.
void uhsubr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UMAX
Unsigned maximum vectors (predicated).
void umax(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UMAX
Unsigned maximum with immediate (unpredicated).
void umax(const ZRegister& zd, const ZRegister& zn, int imm8)
UMAXP
Unsigned maximum pairwise.
void umaxp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UMAXV
Unsigned maximum reduction to scalar.
void umaxv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
UMIN
Unsigned minimum vectors (predicated).
void umin(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UMIN
Unsigned minimum with immediate (unpredicated).
void umin(const ZRegister& zd, const ZRegister& zn, int imm8)
UMINP
Unsigned minimum pairwise.
void uminp(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UMINV
Unsigned minimum reduction to scalar.
void uminv(const VRegister& vd, const PRegister& pg, const ZRegister& zn)
UMLALB
Unsigned multiply-add long to accumulator (bottom).
void umlalb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UMLALB
Unsigned multiply-add long to accumulator (bottom, indexed).
void umlalb(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
UMLALT
Unsigned multiply-add long to accumulator (top).
void umlalt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UMLALT
Unsigned multiply-add long to accumulator (top, indexed).
void umlalt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
UMLSLB
Unsigned multiply-subtract long from accumulator (bottom).
void umlslb(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UMLSLB
Unsigned multiply-subtract long from accumulator (bottom, indexed).
void umlslb(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
UMLSLT
Unsigned multiply-subtract long from accumulator (top).
void umlslt(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UMLSLT
Unsigned multiply-subtract long from accumulator (top, indexed).
void umlslt(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
UMMLA
Unsigned integer matrix multiply-accumulate.
void ummla(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
UMULH
Unsigned multiply returning high half (predicated).
void umulh(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UMULH
Unsigned multiply returning high half (unpredicated).
void umulh(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UMULLB
Unsigned multiply long (bottom).
void umullb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UMULLB
Unsigned multiply long (bottom, indexed).
void umullb(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
UMULLT
Unsigned multiply long (top).
void umullt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UMULLT
Unsigned multiply long (top, indexed).
void umullt(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int index)
UQADD
Unsigned saturating add immediate (unpredicated).
void uqadd(const ZRegister& zd,
const ZRegister& zn,
int imm8,
int shift = -1)
UQADD
Unsigned saturating add vectors (unpredicated).
void uqadd(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UQADD
Unsigned saturating addition (predicated).
void uqadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UQDECB
Unsigned saturating decrement scalar by multiple of 8-bit predicate constraint element count.
void uqdecb(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
UQDECD
Unsigned saturating decrement scalar by multiple of 64-bit predicate constraint element count.
void uqdecd(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
UQDECD
Unsigned saturating decrement vector by multiple of 64-bit predicate constraint element count.
void uqdecd(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
UQDECH
Unsigned saturating decrement scalar by multiple of 16-bit predicate constraint element count.
void uqdech(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
UQDECH
Unsigned saturating decrement vector by multiple of 16-bit predicate constraint element count.
void uqdech(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
UQDECP
Unsigned saturating decrement scalar by active predicate element count.
void uqdecp(const Register& rdn, const PRegisterWithLaneSize& pg)
UQDECP
Unsigned saturating decrement vector by active predicate element count.
void uqdecp(const ZRegister& zdn, const PRegister& pg)
UQDECW
Unsigned saturating decrement scalar by multiple of 32-bit predicate constraint element count.
void uqdecw(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
UQDECW
Unsigned saturating decrement vector by multiple of 32-bit predicate constraint element count.
void uqdecw(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
UQINCB
Unsigned saturating increment scalar by multiple of 8-bit predicate constraint element count.
void uqincb(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
UQINCD
Unsigned saturating increment scalar by multiple of 64-bit predicate constraint element count.
void uqincd(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
UQINCD
Unsigned saturating increment vector by multiple of 64-bit predicate constraint element count.
void uqincd(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
UQINCH
Unsigned saturating increment scalar by multiple of 16-bit predicate constraint element count.
void uqinch(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
UQINCH
Unsigned saturating increment vector by multiple of 16-bit predicate constraint element count.
void uqinch(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
UQINCP
Unsigned saturating increment scalar by active predicate element count.
void uqincp(const Register& rdn, const PRegisterWithLaneSize& pg)
UQINCP
Unsigned saturating increment vector by active predicate element count.
void uqincp(const ZRegister& zdn, const PRegister& pg)
UQINCW
Unsigned saturating increment scalar by multiple of 32-bit predicate constraint element count.
void uqincw(const Register& rdn, int pattern = SVE_ALL, int multiplier = 1)
UQINCW
Unsigned saturating increment vector by multiple of 32-bit predicate constraint element count.
void uqincw(const ZRegister& zdn, int pattern = SVE_ALL, int multiplier = 1)
UQRSHL
Unsigned saturating rounding shift left by vector (predicated).
void uqrshl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UQRSHLR
Unsigned saturating rounding shift left reversed vectors (predicated).
void uqrshlr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UQRSHRNB
Unsigned saturating rounding shift right narrow by immediate (bottom).
void uqrshrnb(const ZRegister& zd, const ZRegister& zn, int shift)
UQRSHRNT
Unsigned saturating rounding shift right narrow by immediate (top).
void uqrshrnt(const ZRegister& zd, const ZRegister& zn, int shift)
UQSHL
Unsigned saturating shift left by immediate.
void uqshl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
UQSHL
Unsigned saturating shift left by vector (predicated).
void uqshl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UQSHLR
Unsigned saturating shift left reversed vectors (predicated).
void uqshlr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UQSHRNB
Unsigned saturating shift right narrow by immediate (bottom).
void uqshrnb(const ZRegister& zd, const ZRegister& zn, int shift)
UQSHRNT
Unsigned saturating shift right narrow by immediate (top).
void uqshrnt(const ZRegister& zd, const ZRegister& zn, int shift)
UQSUB
Unsigned saturating subtract immediate (unpredicated).
void uqsub(const ZRegister& zd,
const ZRegister& zn,
int imm8,
int shift = -1)
UQSUB
Unsigned saturating subtract vectors (unpredicated).
void uqsub(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UQSUB
Unsigned saturating subtraction (predicated).
void uqsub(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UQSUBR
Unsigned saturating subtraction reversed vectors (predicated).
void uqsubr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
UQXTNB
Unsigned saturating extract narrow (bottom).
void uqxtnb(const ZRegister& zd, const ZRegister& zn)
UQXTNT
Unsigned saturating extract narrow (top).
void uqxtnt(const ZRegister& zd, const ZRegister& zn)
URECPE
Unsigned reciprocal estimate (predicated).
void urecpe(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
URHADD
Unsigned rounding halving addition.
void urhadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
URSHL
Unsigned rounding shift left by vector (predicated).
void urshl(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
URSHLR
Unsigned rounding shift left reversed vectors (predicated).
void urshlr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
URSHR
Unsigned rounding shift right by immediate.
void urshr(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
int shift)
URSQRTE
Unsigned reciprocal square root estimate (predicated).
void ursqrte(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
URSRA
Unsigned rounding shift right and accumulate (immediate).
void ursra(const ZRegister& zda, const ZRegister& zn, int shift)
USDOT
Unsigned by signed integer dot product.
void usdot(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
USDOT
Unsigned by signed integer indexed dot product.
void usdot(const ZRegister& zda,
const ZRegister& zn,
const ZRegister& zm,
int index)
USHLLB
Unsigned shift left long by immediate (bottom).
void ushllb(const ZRegister& zd, const ZRegister& zn, int shift)
USHLLT
Unsigned shift left long by immediate (top).
void ushllt(const ZRegister& zd, const ZRegister& zn, int shift)
USMMLA
Unsigned by signed integer matrix multiply-accumulate.
void usmmla(const ZRegister& zda, const ZRegister& zn, const ZRegister& zm)
USQADD
Unsigned saturating addition of signed value.
void usqadd(const ZRegister& zd,
const PRegisterM& pg,
const ZRegister& zn,
const ZRegister& zm)
USRA
Unsigned shift right and accumulate (immediate).
void usra(const ZRegister& zda, const ZRegister& zn, int shift)
USUBLB
Unsigned subtract long (bottom).
void usublb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
USUBLT
Unsigned subtract long (top).
void usublt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
USUBWB
Unsigned subtract wide (bottom).
void usubwb(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
USUBWT
Unsigned subtract wide (top).
void usubwt(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UUNPKHI
Unsigned unpack and extend half of vector.
void uunpkhi(const ZRegister& zd, const ZRegister& zn)
UUNPKLO
Unsigned unpack and extend half of vector.
void uunpklo(const ZRegister& zd, const ZRegister& zn)
UXTB
Unsigned byte extend (predicated).
void uxtb(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
UXTH
Unsigned halfword extend (predicated).
void uxth(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
UXTW
Unsigned word extend (predicated).
void uxtw(const ZRegister& zd, const PRegisterM& pg, const ZRegister& zn)
UZP1
Concatenate even or odd elements from two predicates.
void uzp1(const PRegisterWithLaneSize& pd,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
UZP1
Concatenate even or odd elements from two vectors.
void uzp1(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
UZP2
Concatenate even or odd elements from two predicates.
void uzp2(const PRegisterWithLaneSize& pd,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
UZP2
Concatenate even or odd elements from two vectors.
void uzp2(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
WHILEGE
While decrementing signed scalar greater than or equal to scalar.
void whilege(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILEGT
While decrementing signed scalar greater than scalar.
void whilegt(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILEHI
While decrementing unsigned scalar higher than scalar.
void whilehi(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILEHS
While decrementing unsigned scalar higher or same as scalar.
void whilehs(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILELE
While incrementing signed scalar less than or equal to scalar.
void whilele(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILELO
While incrementing unsigned scalar lower than scalar.
void whilelo(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILELS
While incrementing unsigned scalar lower or same as scalar.
void whilels(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILELT
While incrementing signed scalar less than scalar.
void whilelt(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILERW
While free of read-after-write conflicts.
void whilerw(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WHILEWR
While free of write-after-read/write conflicts.
void whilewr(const PRegisterWithLaneSize& pd,
const Register& rn,
const Register& rm)
WRFFR
Write the first-fault register.
void wrffr(const PRegisterWithLaneSize& pn)
XAR
Bitwise exclusive OR and rotate right by immediate.
void xar(const ZRegister& zd,
const ZRegister& zn,
const ZRegister& zm,
int shift)
ZIP1
Interleave elements from two half predicates.
void zip1(const PRegisterWithLaneSize& pd,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
ZIP1
Interleave elements from two half vectors.
void zip1(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
ZIP2
Interleave elements from two half predicates.
void zip2(const PRegisterWithLaneSize& pd,
const PRegisterWithLaneSize& pn,
const PRegisterWithLaneSize& pm)
ZIP2
Interleave elements from two half vectors.
void zip2(const ZRegister& zd, const ZRegister& zn, const ZRegister& zm)
Additional or pseudo instructions
BIND
Bind a label to the current PC.
void bind(Label* label)
DC
Emit data in the instruction stream.
void dc(T data)
DC32
Emit 32 bits of data into the instruction stream.
void dc32(uint32_t data)
DC64
Emit 64 bits of data into the instruction stream.
void dc64(uint64_t data)
DCI
Emit raw instructions into the instruction stream.
void dci(Instr raw_inst)
PLACE
Place a literal at the current PC.
void place(RawLiteral* literal)