You copied the Doc URL to your clipboard.

Instruction Set Reference

Table of Contents

Condition Codes
Conditional execution in A64 code
Condition flags
Updates to the condition flags in A64 code
Floating-point instructions that update the condition flags
Carry flag
Overflow flag
Condition code suffixes
Condition code suffixes and related flags
Optimization for execution speed
A64 General Instructions
A64 instructions in alphabetical order
Register restrictions for A64 instructions
ADC
ADCS
ADD (extended register)
ADD (immediate)
ADD (shifted register)
ADDG
ADDS (extended register)
ADDS (immediate)
ADDS (shifted register)
ADR
ADRP
AND (immediate)
AND (shifted register)
ANDS (immediate)
ANDS (shifted register)
ASR (register)
ASR (immediate)
ASRV
AT
AUTDA, AUTDZA
AUTDB, AUTDZB
AUTIA, AUTIZA, AUTIA1716, AUTIASP, AUTIAZ
AUTIB, AUTIZB, AUTIB1716, AUTIBSP, AUTIBZ
AXFlag
B.cond
B
BFC
BFI
BFM
BFXIL
BIC (shifted register)
BICS (shifted register)
BL
BLR
BLRAA, BLRAAZ, BLRAB, BLRABZ
BR
BRAA, BRAAZ, BRAB, BRABZ
BRK
BTI
CBNZ
CBZ
CCMN (immediate)
CCMN (register)
CCMP (immediate)
CCMP (register)
CINC
CINV
CLREX
CLS
CLZ
CMN (extended register)
CMN (immediate)
CMN (shifted register)
CMP (extended register)
CMP (immediate)
CMP (shifted register)
CMPP
CNEG
CRC32B, CRC32H, CRC32W, CRC32X
CRC32CB, CRC32CH, CRC32CW, CRC32CX
CSDB
CSEL
CSET
CSETM
CSINC
CSINV
CSNEG
DC
DCPS1
DCPS2
DCPS3
DMB
DRPS
DSB
EON (shifted register)
EOR (immediate)
EOR (shifted register)
ERET
ERETAA, ERETAB
ESB
EXTR
GMI
HINT
HLT
HVC
IC
IRG
ISB
LDG
LDGV
LSL (register)
LSL (immediate)
LSLV
LSR (register)
LSR (immediate)
LSRV
MADD
MNEG
MOV (to or from SP)
MOV (inverted wide immediate)
MOV (wide immediate)
MOV (bitmask immediate)
MOV (register)
MOVK
MOVN
MOVZ
MRS
MSR (immediate)
MSR (register)
MSUB
MUL
MVN
NEG (shifted register)
NEGS
NGC
NGCS
NOP
ORN (shifted register)
ORR (immediate)
ORR (shifted register)
PACDA, PACDZA
PACDB, PACDZB
PACGA
PACIA, PACIZA, PACIA1716, PACIASP, PACIAZ
PACIB, PACIZB, PACIB1716, PACIBSP, PACIBZ
PSB
RBIT
RET
RETAA, RETAB
REV16
REV32
REV64
REV
ROR (immediate)
ROR (register)
RORV
SBC
SBCS
SBFIZ
SBFM
SBFX
SDIV
SEV
SEVL
SMADDL
SMC
SMNEGL
SMSUBL
SMULH
SMULL
ST2G
STG
STGP
STGV
STZ2G
STZG
SUB (extended register)
SUB (immediate)
SUB (shifted register)
SUBG
SUBP
SUBPS
SUBS (extended register)
SUBS (immediate)
SUBS (shifted register)
SVC
SXTB
SXTH
SXTW
SYS
SYSL
TBNZ
TBZ
TLBI
TST (immediate)
TST (shifted register)
UBFIZ
UBFM
UBFX
UDIV
UMADDL
UMNEGL
UMSUBL
UMULH
UMULL
UXTB
UXTH
XAFlag
WFE
WFI
XPACD, XPACI, XPACLRI
YIELD
A64 Data Transfer Instructions
A64 data transfer instructions in alphabetical order
CASA, CASAL, CAS, CASL, CASAL, CAS, CASL
CASAB, CASALB, CASB, CASLB
CASAH, CASALH, CASH, CASLH
CASPA, CASPAL, CASP, CASPL, CASPAL, CASP, CASPL
LDADDA, LDADDAL, LDADD, LDADDL, LDADDAL, LDADD, LDADDL
LDADDAB, LDADDALB, LDADDB, LDADDLB
LDADDAH, LDADDALH, LDADDH, LDADDLH
LDAPR
LDAPRB
LDAPRH
LDAR
LDARB
LDARH
LDAXP
LDAXR
LDAXRB
LDAXRH
LDCLRA, LDCLRAL, LDCLR, LDCLRL, LDCLRAL, LDCLR, LDCLRL
LDCLRAB, LDCLRALB, LDCLRB, LDCLRLB
LDCLRAH, LDCLRALH, LDCLRH, LDCLRLH
LDEORA, LDEORAL, LDEOR, LDEORL, LDEORAL, LDEOR, LDEORL
LDEORAB, LDEORALB, LDEORB, LDEORLB
LDEORAH, LDEORALH, LDEORH, LDEORLH
LDLAR
LDLARB
LDLARH
LDNP
LDP
LDPSW
LDR (immediate)
LDR (literal)
LDR (register)
LDRAA, LDRAB, LDRAB
LDRB (immediate)
LDRB (register)
LDRH (immediate)
LDRH (register)
LDRSB (immediate)
LDRSB (register)
LDRSH (immediate)
LDRSH (register)
LDRSW (immediate)
LDRSW (literal)
LDRSW (register)
LDSETA, LDSETAL, LDSET, LDSETL, LDSETAL, LDSET, LDSETL
LDSETAB, LDSETALB, LDSETB, LDSETLB
LDSETAH, LDSETALH, LDSETH, LDSETLH
LDSMAXA, LDSMAXAL, LDSMAX, LDSMAXL, LDSMAXAL, LDSMAX, LDSMAXL
LDSMAXAB, LDSMAXALB, LDSMAXB, LDSMAXLB
LDSMAXAH, LDSMAXALH, LDSMAXH, LDSMAXLH
LDSMINA, LDSMINAL, LDSMIN, LDSMINL, LDSMINAL, LDSMIN, LDSMINL
LDSMINAB, LDSMINALB, LDSMINB, LDSMINLB
LDSMINAH, LDSMINALH, LDSMINH, LDSMINLH
LDTR
LDTRB
LDTRH
LDTRSB
LDTRSH
LDTRSW
LDUMAXA, LDUMAXAL, LDUMAX, LDUMAXL, LDUMAXAL, LDUMAX, LDUMAXL
LDUMAXAB, LDUMAXALB, LDUMAXB, LDUMAXLB
LDUMAXAH, LDUMAXALH, LDUMAXH, LDUMAXLH
LDUMINA, LDUMINAL, LDUMIN, LDUMINL, LDUMINAL, LDUMIN, LDUMINL
LDUMINAB, LDUMINALB, LDUMINB, LDUMINLB
LDUMINAH, LDUMINALH, LDUMINH, LDUMINLH
LDUR
LDURB
LDURH
LDURSB
LDURSH
LDURSW
LDXP
LDXR
LDXRB
LDXRH
PRFM (immediate)
PRFM (literal)
PRFM (register)
PRFUM (unscaled offset)
STADD, STADDL, STADDL
STADDB, STADDLB
STADDH, STADDLH
STCLR, STCLRL, STCLRL
STCLRB, STCLRLB
STCLRH, STCLRLH
STEOR, STEORL, STEORL
STEORB, STEORLB
STEORH, STEORLH
STLLR
STLLRB
STLLRH
STLR
STLRB
STLRH
STLXP
STLXR
STLXRB
STLXRH
STNP
STP
STR (immediate)
STR (register)
STRB (immediate)
STRB (register)
STRH (immediate)
STRH (register)
STSET, STSETL, STSETL
STSETB, STSETLB
STSETH, STSETLH
STSMAX, STSMAXL, STSMAXL
STSMAXB, STSMAXLB
STSMAXH, STSMAXLH
STSMIN, STSMINL, STSMINL
STSMINB, STSMINLB
STSMINH, STSMINLH
STTR
STTRB
STTRH
STUMAX, STUMAXL, STUMAXL
STUMAXB, STUMAXLB
STUMAXH, STUMAXLH
STUMIN, STUMINL, STUMINL
STUMINB, STUMINLB
STUMINH, STUMINLH
STUR
STURB
STURH
STXP
STXR
STXRB
STXRH
SWPA, SWPAL, SWP, SWPL, SWPAL, SWP, SWPL
SWPAB, SWPALB, SWPB, SWPLB
SWPAH, SWPALH, SWPH, SWPLH
A64 Floating-point Instructions
A64 floating-point instructions in alphabetical order
Register restrictions for A64 instructions
FABS (scalar)
FADD (scalar)
FCCMP
FCCMPE
FCMP
FCMPE
FCSEL
FCVT
FCVTAS (scalar)
FCVTAU (scalar)
FCVTMS (scalar)
FCVTMU (scalar)
FCVTNS (scalar)
FCVTNU (scalar)
FCVTPS (scalar)
FCVTPU (scalar)
FCVTZS (scalar, fixed-point)
FCVTZS (scalar, integer)
FCVTZU (scalar, fixed-point)
FCVTZU (scalar, integer)
FDIV (scalar)
FJCVTZS
FMADD
FMAX (scalar)
FMAXNM (scalar)
FMIN (scalar)
FMINNM (scalar)
FMOV (register)
FMOV (general)
FMOV (scalar, immediate)
FMSUB
FMUL (scalar)
FNEG (scalar)
FNMADD
FNMSUB
FNMUL (scalar)
FRINTA (scalar)
FRINTI (scalar)
FRINTM (scalar)
FRINTN (scalar)
FRINTP (scalar)
FRINTX (scalar)
FRINTZ (scalar)
FSQRT (scalar)
FSUB (scalar)
LDNP (SIMD and FP)
LDP (SIMD and FP)
LDR (immediate, SIMD and FP)
LDR (literal, SIMD and FP)
LDR (register, SIMD and FP)
LDUR (SIMD and FP)
SCVTF (scalar, fixed-point)
SCVTF (scalar, integer)
STNP (SIMD and FP)
STP (SIMD and FP)
STR (immediate, SIMD and FP)
STR (register, SIMD and FP)
STUR (SIMD and FP)
UCVTF (scalar, fixed-point)
UCVTF (scalar, integer)
A64 SIMD Scalar Instructions
A64 SIMD scalar instructions in alphabetical order
ABS (scalar)
ADD (scalar)
ADDP (scalar)
CMEQ (scalar, register)
CMEQ (scalar, zero)
CMGE (scalar, register)
CMGE (scalar, zero)
CMGT (scalar, register)
CMGT (scalar, zero)
CMHI (scalar, register)
CMHS (scalar, register)
CMLE (scalar, zero)
CMLT (scalar, zero)
CMTST (scalar)
DUP (scalar, element)
FABD (scalar)
FACGE (scalar)
FACGT (scalar)
FADDP (scalar)
FCMEQ (scalar, register)
FCMEQ (scalar, zero)
FCMGE (scalar, register)
FCMGE (scalar, zero)
FCMGT (scalar, register)
FCMGT (scalar, zero)
FCMLA (scalar, by element)
FCMLE (scalar, zero)
FCMLT (scalar, zero)
FCVTAS (scalar)
FCVTAU (scalar)
FCVTMS (scalar)
FCVTMU (scalar)
FCVTNS (scalar)
FCVTNU (scalar)
FCVTPS (scalar)
FCVTPU (scalar)
FCVTXN (scalar)
FCVTZS (scalar, fixed-point)
FCVTZS (scalar, integer)
FCVTZU (scalar, fixed-point)
FCVTZU (scalar, integer)
FMAXNMP (scalar)
FMAXP (scalar)
FMINNMP (scalar)
FMINP (scalar)
FMLA (scalar, by element)
FMLAL, (scalar, by element)
FMLS (scalar, by element)
FMLSL, (scalar, by element)
FMUL (scalar, by element)
FMULX (scalar, by element)
FMULX (scalar)
FRECPE (scalar)
FRECPS (scalar)
FRSQRTE (scalar)
FRSQRTS (scalar)
MOV (scalar)
NEG (scalar)
SCVTF (scalar, fixed-point)
SCVTF (scalar, integer)
SHL (scalar)
SLI (scalar)
SQABS (scalar)
SQADD (scalar)
SQDMLAL (scalar, by element)
SQDMLAL (scalar)
SQDMLSL (scalar, by element)
SQDMLSL (scalar)
SQDMULH (scalar, by element)
SQDMULH (scalar)
SQDMULL (scalar, by element)
SQDMULL (scalar)
SQNEG (scalar)
SQRDMLAH (scalar, by element)
SQRDMLAH (scalar)
SQRDMLSH (scalar, by element)
SQRDMLSH (scalar)
SQRDMULH (scalar, by element)
SQRDMULH (scalar)
SQRSHL (scalar)
SQRSHRN (scalar)
SQRSHRUN (scalar)
SQSHL (scalar, immediate)
SQSHL (scalar, register)
SQSHLU (scalar)
SQSHRN (scalar)
SQSHRUN (scalar)
SQSUB (scalar)
SQXTN (scalar)
SQXTUN (scalar)
SRI (scalar)
SRSHL (scalar)
SRSHR (scalar)
SRSRA (scalar)
SSHL (scalar)
SSHR (scalar)
SSRA (scalar)
SUB (scalar)
SUQADD (scalar)
UCVTF (scalar, fixed-point)
UCVTF (scalar, integer)
UQADD (scalar)
UQRSHL (scalar)
UQRSHRN (scalar)
UQSHL (scalar, immediate)
UQSHL (scalar, register)
UQSHRN (scalar)
UQSUB (scalar)
UQXTN (scalar)
URSHL (scalar)
URSHR (scalar)
URSRA (scalar)
USHL (scalar)
USHR (scalar)
USQADD (scalar)
USRA (scalar)
A64 SIMD Vector Instructions
A64 SIMD Vector instructions in alphabetical order
ABS (vector)
ADD (vector)
ADDHN, ADDHN2 (vector)
ADDP (vector)
ADDV (vector)
AND (vector)
BIC (vector, immediate)
BIC (vector, register)
BIF (vector)
BIT (vector)
BSL (vector)
CLS (vector)
CLZ (vector)
CMEQ (vector, register)
CMEQ (vector, zero)
CMGE (vector, register)
CMGE (vector, zero)
CMGT (vector, register)
CMGT (vector, zero)
CMHI (vector, register)
CMHS (vector, register)
CMLE (vector, zero)
CMLT (vector, zero)
CMTST (vector)
CNT (vector)
DUP (vector, element)
DUP (vector, general)
EOR (vector)
EXT (vector)
FABD (vector)
FABS (vector)
FACGE (vector)
FACGT (vector)
FADD (vector)
FADDP (vector)
FCADD (vector)
FCMEQ (vector, register)
FCMEQ (vector, zero)
FCMGE (vector, register)
FCMGE (vector, zero)
FCMGT (vector, register)
FCMGT (vector, zero)
FCMLA (vector)
FCMLE (vector, zero)
FCMLT (vector, zero)
FCVTAS (vector)
FCVTAU (vector)
FCVTL, FCVTL2 (vector)
FCVTMS (vector)
FCVTMU (vector)
FCVTN, FCVTN2 (vector)
FCVTNS (vector)
FCVTNU (vector)
FCVTPS (vector)
FCVTPU (vector)
FCVTXN, FCVTXN2 (vector)
FCVTZS (vector, fixed-point)
FCVTZS (vector, integer)
FCVTZU (vector, fixed-point)
FCVTZU (vector, integer)
FDIV (vector)
FMAX (vector)
FMAXNM (vector)
FMAXNMP (vector)
FMAXNMV (vector)
FMAXP (vector)
FMAXV (vector)
FMIN (vector)
FMINNM (vector)
FMINNMP (vector)
FMINNMV (vector)
FMINP (vector)
FMINV (vector)
FMLA (vector, by element)
FMLA (vector)
FMLAL, (vector)
FMLS (vector, by element)
FMLS (vector)
FMLSL, (vector)
FMOV (vector, immediate)
FMUL (vector, by element)
FMUL (vector)
FMULX (vector, by element)
FMULX (vector)
FNEG (vector)
FRECPE (vector)
FRECPS (vector)
FRECPX (vector)
FRINTA (vector)
FRINTI (vector)
FRINTM (vector)
FRINTN (vector)
FRINTP (vector)
FRINTX (vector)
FRINTZ (vector)
FRSQRTE (vector)
FRSQRTS (vector)
FSQRT (vector)
FSUB (vector)
INS (vector, element)
INS (vector, general)
LD1 (vector, multiple structures)
LD1 (vector, single structure)
LD1R (vector)
LD2 (vector, multiple structures)
LD2 (vector, single structure)
LD2R (vector)
LD3 (vector, multiple structures)
LD3 (vector, single structure)
LD3R (vector)
LD4 (vector, multiple structures)
LD4 (vector, single structure)
LD4R (vector)
MLA (vector, by element)
MLA (vector)
MLS (vector, by element)
MLS (vector)
MOV (vector, element)
MOV (vector, from general)
MOV (vector)
MOV (vector, to general)
MOVI (vector)
MUL (vector, by element)
MUL (vector)
MVN (vector)
MVNI (vector)
NEG (vector)
NOT (vector)
ORN (vector)
ORR (vector, immediate)
ORR (vector, register)
PMUL (vector)
PMULL, PMULL2 (vector)
RADDHN, RADDHN2 (vector)
RBIT (vector)
REV16 (vector)
REV32 (vector)
REV64 (vector)
RSHRN, RSHRN2 (vector)
RSUBHN, RSUBHN2 (vector)
SABA (vector)
SABAL, SABAL2 (vector)
SABD (vector)
SABDL, SABDL2 (vector)
SADALP (vector)
SADDL, SADDL2 (vector)
SADDLP (vector)
SADDLV (vector)
SADDW, SADDW2 (vector)
SCVTF (vector, fixed-point)
SCVTF (vector, integer)
SDOT (vector, by element)
SDOT (vector)
SHADD (vector)
SHL (vector)
SHLL, SHLL2 (vector)
SHRN, SHRN2 (vector)
SHSUB (vector)
SLI (vector)
SMAX (vector)
SMAXP (vector)
SMAXV (vector)
SMIN (vector)
SMINP (vector)
SMINV (vector)
SMLAL, SMLAL2 (vector, by element)
SMLAL, SMLAL2 (vector)
SMLSL, SMLSL2 (vector, by element)
SMLSL, SMLSL2 (vector)
SMOV (vector)
SMULL, SMULL2 (vector, by element)
SMULL, SMULL2 (vector)
SQABS (vector)
SQADD (vector)
SQDMLAL, SQDMLAL2 (vector, by element)
SQDMLAL, SQDMLAL2 (vector)
SQDMLSL, SQDMLSL2 (vector, by element)
SQDMLSL, SQDMLSL2 (vector)
SQDMULH (vector, by element)
SQDMULH (vector)
SQDMULL, SQDMULL2 (vector, by element)
SQDMULL, SQDMULL2 (vector)
SQNEG (vector)
SQRDMLAH (vector, by element)
SQRDMLAH (vector)
SQRDMLSH (vector, by element)
SQRDMLSH (vector)
SQRDMULH (vector, by element)
SQRDMULH (vector)
SQRSHL (vector)
SQRSHRN, SQRSHRN2 (vector)
SQRSHRUN, SQRSHRUN2 (vector)
SQSHL (vector, immediate)
SQSHL (vector, register)
SQSHLU (vector)
SQSHRN, SQSHRN2 (vector)
SQSHRUN, SQSHRUN2 (vector)
SQSUB (vector)
SQXTN, SQXTN2 (vector)
SQXTUN, SQXTUN2 (vector)
SRHADD (vector)
SRI (vector)
SRSHL (vector)
SRSHR (vector)
SRSRA (vector)
SSHL (vector)
SSHLL, SSHLL2 (vector)
SSHR (vector)
SSRA (vector)
SSUBL, SSUBL2 (vector)
SSUBW, SSUBW2 (vector)
ST1 (vector, multiple structures)
ST1 (vector, single structure)
ST2 (vector, multiple structures)
ST2 (vector, single structure)
ST3 (vector, multiple structures)
ST3 (vector, single structure)
ST4 (vector, multiple structures)
ST4 (vector, single structure)
SUB (vector)
SUBHN, SUBHN2 (vector)
SUQADD (vector)
SXTL, SXTL2 (vector)
TBL (vector)
TBX (vector)
TRN1 (vector)
TRN2 (vector)
UABA (vector)
UABAL, UABAL2 (vector)
UABD (vector)
UABDL, UABDL2 (vector)
UADALP (vector)
UADDL, UADDL2 (vector)
UADDLP (vector)
UADDLV (vector)
UADDW, UADDW2 (vector)
UCVTF (vector, fixed-point)
UCVTF (vector, integer)
UDOT (vector, by element)
UDOT (vector)
UHADD (vector)
UHSUB (vector)
UMAX (vector)
UMAXP (vector)
UMAXV (vector)
UMIN (vector)
UMINP (vector)
UMINV (vector)
UMLAL, UMLAL2 (vector, by element)
UMLAL, UMLAL2 (vector)
UMLSL, UMLSL2 (vector, by element)
UMLSL, UMLSL2 (vector)
UMOV (vector)
UMULL, UMULL2 (vector, by element)
UMULL, UMULL2 (vector)
UQADD (vector)
UQRSHL (vector)
UQRSHRN, UQRSHRN2 (vector)
UQSHL (vector, immediate)
UQSHL (vector, register)
UQSHRN, UQSHRN2 (vector)
UQSUB (vector)
UQXTN, UQXTN2 (vector)
URECPE (vector)
URHADD (vector)
URSHL (vector)
URSHR (vector)
URSQRTE (vector)
URSRA (vector)
USHL (vector)
USHLL, USHLL2 (vector)
USHR (vector)
USQADD (vector)
USRA (vector)
USUBL, USUBL2 (vector)
USUBW, USUBW2 (vector)
UXTL, UXTL2 (vector)
UZP1 (vector)
UZP2 (vector)
XTN, XTN2 (vector)
ZIP1 (vector)
ZIP2 (vector)
A64 Cryptographic Algorithms
A64 Cryptographic instructions