Top-level encodings for T32

15141312111098765432101514131211109876543210
op0op1
Decode fieldsInstruction details
op0op1
!= 111 16-bit
111 00 BT2
111 != 00 32-bit

16-bit

These instructions are under the top-level.

1514131211109876543210
op0

The following constraints also apply to this encoding: op0<5:3> != 111

Decode fieldsInstruction details
op0
00xxxx Shift (immediate), add, subtract, move, and compare
010000 Data-processing (two low registers)
010001 Special data instructions and branch and exchange
01001x LDR (literal)T1
0101xx Load/store (register offset)
011xxx Load/store word/byte (immediate offset)
1000xx Load/store halfword (immediate offset)
1001xx Load/store (SP-relative)
1010xx Add PC/SP (immediate)
1011xx Miscellaneous 16-bit instructions
1100xx Load/store multiple
1101xx Conditional branch, and Supervisor Call

Shift (immediate), add, subtract, move, and compare

These instructions are under 16-bit.

1514131211109876543210
00op0op1op2
Decode fieldsInstruction details
op0op1op2
0 11 0 Add, subtract (three low registers)
0 11 1 Add, subtract (two low registers and immediate)
0 != 11 MOV, MOVS (register)T2
1 Add, subtract, compare, move (one low register and immediate)

Add, subtract (three low registers)

These instructions are under Shift (immediate), add, subtract, move, and compare.

1514131211109876543210
000110SRmRnRd
Decode fields Instruction Details
S
0 ADD, ADDS (register)
1 SUB, SUBS (register)

Add, subtract (two low registers and immediate)

These instructions are under Shift (immediate), add, subtract, move, and compare.

1514131211109876543210
000111Simm3RnRd
Decode fields Instruction Details
S
0 ADD, ADDS (immediate)
1 SUB, SUBS (immediate)

Add, subtract, compare, move (one low register and immediate)

These instructions are under Shift (immediate), add, subtract, move, and compare.

1514131211109876543210
001opRdimm8
Decode fields Instruction Details
op
00 MOV, MOVS (immediate)
01 CMP (immediate)
10 ADD, ADDS (immediate)
11 SUB, SUBS (immediate)

Data-processing (two low registers)

These instructions are under 16-bit.

1514131211109876543210
010000opRsRd
Decode fields Instruction Details
op
0000 AND, ANDS (register)
0001 EOR, EORS (register)
0010 MOV, MOVS (register-shifted register)logical shift left
0011 MOV, MOVS (register-shifted register)logical shift right
0100 MOV, MOVS (register-shifted register)arithmetic shift right
0101 ADC, ADCS (register)
0110 SBC, SBCS (register)
0111 MOV, MOVS (register-shifted register)rotate right
1000 TST (register)
1001 RSB, RSBS (immediate)
1010 CMP (register)
1011 CMN (register)
1100 ORR, ORRS (register)
1101 MUL, MULS
1110 BIC, BICS (register)
1111 MVN, MVNS (register)

Special data instructions and branch and exchange

These instructions are under 16-bit.

1514131211109876543210
010001op0
Decode fieldsInstruction details
op0
11 Branch and exchange
!= 11 Add, subtract, compare, move (two high registers)

Branch and exchange

These instructions are under Special data instructions and branch and exchange.

1514131211109876543210
01000111LRm(0)(0)(0)
Decode fields Instruction Details
L
0 BX
1 BLX (register)

Add, subtract, compare, move (two high registers)

These instructions are under Special data instructions and branch and exchange.

1514131211109876543210
010001!= 11DRsRd
op

The following constraints also apply to this encoding: op != 11 && op != 11

Decode fields Instruction Details
op D:Rd Rs
00 != 1101 != 1101 ADD, ADDS (register)
00 1101 ADD, ADDS (SP plus register)T1
00 1101 != 1101 ADD, ADDS (SP plus register)T2
01 CMP (register)
10 MOV, MOVS (register)

Load/store (register offset)

These instructions are under 16-bit.

1514131211109876543210
0101LBHRmRnRt
Decode fields Instruction Details
L B H
0 0 0 STR (register)
0 0 1 STRH (register)
0 1 0 STRB (register)
0 1 1 LDRSB (register)
1 0 0 LDR (register)
1 0 1 LDRH (register)
1 1 0 LDRB (register)
1 1 1 LDRSH (register)

Load/store word/byte (immediate offset)

These instructions are under 16-bit.

1514131211109876543210
011BLimm5RnRt
Decode fields Instruction Details
B L
0 0 STR (immediate)
0 1 LDR (immediate)
1 0 STRB (immediate)
1 1 LDRB (immediate)

Load/store halfword (immediate offset)

These instructions are under 16-bit.

1514131211109876543210
1000Limm5RnRt
Decode fields Instruction Details
L
0 STRH (immediate)
1 LDRH (immediate)

Load/store (SP-relative)

These instructions are under 16-bit.

1514131211109876543210
1001LRtimm8
Decode fields Instruction Details
L
0 STR (immediate)
1 LDR (immediate)

Add PC/SP (immediate)

These instructions are under 16-bit.

1514131211109876543210
1010SPRdimm8
Decode fields Instruction Details
SP
0 ADR
1 ADD, ADDS (SP plus immediate)

Miscellaneous 16-bit instructions

These instructions are under 16-bit.

1514131211109876543210
1011op0op1op2op3
Decode fieldsInstruction detailsFeature
op0op1op2op3
0000 Adjust SP (immediate)-
0010 Extend-
0110 00 0 SETPANFEAT_PAN
0110 00 1 UNALLOCATED-
0110 01 Change Processor State-
0110 1x UNALLOCATED-
0111 UNALLOCATED-
1000 UNALLOCATED-
1010 10 HLT-
1010 != 10 Reverse bytes-
1110 BKPT-
1111 0000 Hints-
1111 != 0000 IT-
x0x1 CBNZ, CBZ-
x10x Push and Pop-

Adjust SP (immediate)

These instructions are under Miscellaneous 16-bit instructions.

1514131211109876543210
10110000Simm7
Decode fields Instruction Details
S
0 ADD, ADDS (SP plus immediate)
1 SUB, SUBS (SP minus immediate)

Extend

These instructions are under Miscellaneous 16-bit instructions.

1514131211109876543210
10110010UBRmRd
Decode fields Instruction Details
U B
0 0 SXTH
0 1 SXTB
1 0 UXTH
1 1 UXTB

Change Processor State

These instructions are under Miscellaneous 16-bit instructions.

1514131211109876543210
1011011001opflags
Decode fields Instruction Details
op flags
0 SETEND
1 0xxxx CPS, CPSID, CPSIEinterrupt enable
1 1xxxx CPS, CPSID, CPSIEinterrupt disable

Reverse bytes

These instructions are under Miscellaneous 16-bit instructions.

1514131211109876543210
10111010!= 10RmRd
op

The following constraints also apply to this encoding: op != 10 && op != 10

Decode fields Instruction Details
op
00 REV
01 REV16
11 REVSH

Hints

These instructions are under Miscellaneous 16-bit instructions.

1514131211109876543210
10111111hint0000
Decode fields Instruction Details
hint
0000 NOP
0001 YIELD
0010 WFE
0011 WFI
0100 SEV
0101 SEVL
011x Reserved hint, behaves as NOP
1xxx Reserved hint, behaves as NOP

Push and Pop

These instructions are under Miscellaneous 16-bit instructions.

1514131211109876543210
1011L10Pregister_list
Decode fields Instruction Details
L
0 PUSH
1 POP

Load/store multiple

These instructions are under 16-bit.

1514131211109876543210
1100LRnregister_list
Decode fields Instruction Details
L
0 STM, STMIA, STMEA
1 LDM, LDMIA, LDMFD

Conditional branch, and Supervisor Call

These instructions are under 16-bit.

1514131211109876543210
1101op0
Decode fieldsInstruction details
op0
111x Exception generation
!= 111x BT1

Exception generation

These instructions are under Conditional branch, and Supervisor Call.

1514131211109876543210
1101111Simm8
Decode fields Instruction Details
S
0 UDF
1 SVC

32-bit

These instructions are under the top-level.

15141312111098765432101514131211109876543210
111op0op1op3

The following constraints also apply to this encoding: op0<3:2> != 00

Decode fieldsInstruction details
op0op1op3
x11x System register access, Advanced SIMD, and floating-point
0100 xx0xx Load/store multiple
0100 xx1xx Load/store dual, load/store exclusive, load-acquire/store-release, and table branch
0101 Data-processing (shifted register)
10xx 1 Branches and miscellaneous control
10x0 0 Data-processing (modified immediate)
10x1 xxxx0 0 Data-processing (plain binary immediate)
10x1 xxxx1 0 UNALLOCATED
1100 1xxx0 Advanced SIMD element or structure load/store
1100 != 1xxx0 Load/store single
1101 0xxxx Data-processing (register)
1101 10xxx Multiply, multiply accumulate, and absolute difference
1101 11xxx Long multiply and divide

System register access, Advanced SIMD, and floating-point

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
111op011op1op2op3
Decode fieldsInstruction details
op0op1op2op3
0x 0x UNALLOCATED
10 0x UNALLOCATED
11 Advanced SIMD data-processing
0 0x 1x Advanced SIMD and System register load/store and 64-bit move
0 10 1x 1 Advanced SIMD and System register 32-bit move
0 10 10 0 Floating-point data-processing
0 10 11 0 UNALLOCATED
1 != 11 1x Additional Advanced SIMD and floating-point instructions

Advanced SIMD data-processing

These instructions are under System register access, Advanced SIMD, and floating-point.

15141312111098765432101514131211109876543210
1111111op0op1
Decode fieldsInstruction details
op0op1
0 Advanced SIMD three registers of the same length
1 0 Advanced SIMD two registers, or three registers of different lengths
1 1 Advanced SIMD shifts and immediate generation

Advanced SIMD three registers of the same length

These instructions are under Advanced SIMD data-processing.

15141312111098765432101514131211109876543210
111U11110DsizeVnVdopcNQMo1Vm
Decode fields Instruction Details Feature
U size opc Q o1
0 0x 1100 1 VFMA-
0 0x 1101 0 VADD (floating-point)-
0 0x 1101 1 VMLA (floating-point)-
0 0x 1110 0 VCEQ (register)T2-
0 0x 1111 0 VMAX (floating-point)-
0 0x 1111 1 VRECPS-
0000 0 VHADD-
0 00 0001 1 VAND (register)-
0000 1 VQADD-
0001 0 VRHADD-
0 00 1100 0 SHA1CFEAT_SHA1
0010 0 VHSUB-
0 01 0001 1 VBIC (register)-
0010 1 VQSUB-
0011 0 VCGT (register)T1-
0011 1 VCGE (register)T1-
0 01 1100 0 SHA1PFEAT_SHA1
0 1x 1100 1 VFMS-
0 1x 1101 0 VSUB (floating-point)-
0 1x 1101 1 VMLS (floating-point)-
0 1x 1110 0 UNALLOCATED-
0 1x 1111 0 VMIN (floating-point)-
0 1x 1111 1 VRSQRTS-
0100 0 VSHL (register)-
0 1000 0 VADD (integer)-
0 10 0001 1 VORR (register)-
0 1000 1 VTST-
0100 1 VQSHL (register)-
0 1001 0 VMLA (integer)-
0101 0 VRSHL-
0101 1 VQRSHL-
0 1011 0 VQDMULH-
0 10 1100 0 SHA1MFEAT_SHA1
0 1011 1 VPADD (integer)-
0110 0 VMAX (integer)-
0 11 0001 1 VORN (register)-
0110 1 VMIN (integer)-
0111 0 VABD (integer)-
0111 1 VABA-
0 11 1100 0 SHA1SU0FEAT_SHA1
1 0x 1101 0 VPADD (floating-point)-
1 0x 1101 1 VMUL (floating-point)-
1 0x 1110 0 VCGE (register)T2-
1 0x 1110 1 VACGE-
1 0x 1111 0 0 VPMAX (floating-point)-
1 0x 1111 1 VMAXNM-
1 00 0001 1 VEOR-
1001 1 VMUL (integer and polynomial)-
1 00 1100 0 SHA256HFEAT_SHA256
1010 0 0 VPMAX (integer)-
1 01 0001 1 VBSL-
1010 0 1 VPMIN (integer)-
1010 1 UNALLOCATED-
1 01 1100 0 SHA256H2FEAT_SHA256
1 1x 1101 0 VABD (floating-point)-
1 1x 1110 0 VCGT (register)T2-
1 1x 1110 1 VACGT-
1 1x 1111 0 0 VPMIN (floating-point)-
1 1x 1111 1 VMINNM-
1 1000 0 VSUB (integer)-
1 10 0001 1 VBIT-
1 1000 1 VCEQ (register)T1-
1 1001 0 VMLS (integer)-
1 1011 0 VQRDMULH-
1 10 1100 0 SHA256SU1FEAT_SHA256
1 1011 1 VQRDMLAHFEAT_RDM
1 11 0001 1 VBIF-
1 1100 1 VQRDMLSHFEAT_RDM
1 1111 1 0 UNALLOCATED-

Advanced SIMD two registers, or three registers of different lengths

These instructions are under Advanced SIMD data-processing.

15141312111098765432101514131211109876543210
111op011111op1op2op30
Decode fieldsInstruction details
op0op1op2op3
0 11 VEXT (byte elements)
1 11 0x Advanced SIMD two registers misc
1 11 10 VTBL, VTBX
1 11 11 Advanced SIMD duplicate (scalar)
!= 11 0 Advanced SIMD three registers of different lengths
!= 11 1 Advanced SIMD two registers and a scalar

Advanced SIMD two registers misc

These instructions are under Advanced SIMD two registers, or three registers of different lengths.

15141312111098765432101514131211109876543210
111111111D11sizeopc1Vd0opc2QM0Vm
Decode fields Instruction Details Feature
size opc1 opc2 Q
00 0000 VREV64-
00 0001 VREV32-
00 0010 VREV16-
00 0011 UNALLOCATED-
00 010x VPADDL-
00 0110 0 AESEFEAT_AES
00 0110 1 AESDFEAT_AES
00 0111 0 AESMCFEAT_AES
00 0111 1 AESIMCFEAT_AES
00 1000 VCLS-
00 10 0000 VSWP-
00 1001 VCLZ-
00 1010 VCNT-
00 1011 VMVN (register)-
00 10 1100 1 UNALLOCATED-
00 110x VPADAL-
00 1110 VQABS-
00 1111 VQNEG-
01 x000 VCGT (immediate #0)-
01 x001 VCGE (immediate #0)-
01 x010 VCEQ (immediate #0)-
01 x011 VCLE (immediate #0)-
01 x100 VCLT (immediate #0)-
01 x110 VABS-
01 x111 VNEG-
01 0101 1 SHA1HFEAT_SHA1
01 10 1100 1 VCVT (from single-precision to BFloat16, Advanced SIMD)FEAT_AA32BF16
10 0001 VTRN-
10 0010 VUZP-
10 0011 VZIP-
10 0100 0 VMOVN-
10 0100 1 VQMOVN, VQMOVUNVQMOVUN-
10 0101 VQMOVN, VQMOVUNVQMOVN-
10 0110 0 VSHLL-
10 0111 0 SHA1SU1FEAT_SHA1
10 0111 1 SHA256SU0FEAT_SHA256
10 1000 VRINTN (Advanced SIMD)-
10 1001 VRINTX (Advanced SIMD)-
10 1010 VRINTA (Advanced SIMD)-
10 1011 VRINTZ (Advanced SIMD)-
10 10 1100 1 UNALLOCATED-
10 1100 0 VCVT (between half-precision and single-precision, Advanced SIMD)single-precision to half-precision-
10 1101 VRINTM (Advanced SIMD)-
10 1110 0 VCVT (between half-precision and single-precision, Advanced SIMD)half-precision to single-precision-
10 1110 1 UNALLOCATED-
10 1111 VRINTP (Advanced SIMD)-
11 000x VCVTA (Advanced SIMD)-
11 001x VCVTN (Advanced SIMD)-
11 010x VCVTP (Advanced SIMD)-
11 011x VCVTM (Advanced SIMD)-
11 10x0 VRECPE-
11 10x1 VRSQRTE-
11 10 1100 1 UNALLOCATED-
11 11xx VCVT (between floating-point and integer, Advanced SIMD)-

Advanced SIMD duplicate (scalar)

These instructions are under Advanced SIMD two registers, or three registers of different lengths.

15141312111098765432101514131211109876543210
111111111D11imm4Vd11opcQM0Vm
Decode fields Instruction Details
opc
000 VDUP (scalar)
001 UNALLOCATED
01x UNALLOCATED
1xx UNALLOCATED

Advanced SIMD three registers of different lengths

These instructions are under Advanced SIMD two registers, or three registers of different lengths.

15141312111098765432101514131211109876543210
111U11111D!= 11VnVdopcN0M0Vm
size

The following constraints also apply to this encoding: size != 11 && size != 11

Decode fields Instruction Details
U opc
0000 VADDL
0001 VADDW
0010 VSUBL
0 0100 VADDHN
0011 VSUBW
0 0110 VSUBHN
0 1001 VQDMLAL
0101 VABAL
0 1011 VQDMLSL
0 1101 VQDMULL
0111 VABDL (integer)
1000 VMLAL (integer)
1010 VMLSL (integer)
1 0100 VRADDHN
1 0110 VRSUBHN
11x0 VMULL (integer and polynomial)
1 1001 UNALLOCATED
1 1011 UNALLOCATED
1 1101 UNALLOCATED
1111 UNALLOCATED

Advanced SIMD two registers and a scalar

These instructions are under Advanced SIMD two registers, or three registers of different lengths.

15141312111098765432101514131211109876543210
111Q11111D!= 11VnVdopcN1M0Vm
size

The following constraints also apply to this encoding: size != 11 && size != 11

Decode fields Instruction Details Feature
Q opc
000x VMLA (by scalar)-
0 0011 VQDMLAL-
0010 VMLAL (by scalar)-
0 0111 VQDMLSL-
010x VMLS (by scalar)-
0 1011 VQDMULL-
0110 VMLSL (by scalar)-
100x VMUL (by scalar)-
1 0011 UNALLOCATED-
1010 VMULL (by scalar)-
1 0111 UNALLOCATED-
1100 VQDMULH-
1101 VQRDMULH-
1 1011 UNALLOCATED-
1110 VQRDMLAHFEAT_RDM
1111 VQRDMLSHFEAT_RDM

Advanced SIMD shifts and immediate generation

These instructions are under Advanced SIMD data-processing.

15141312111098765432101514131211109876543210
11111111op01
Decode fieldsInstruction details
op0
000xxxxxxxxxxx0 Advanced SIMD one register and modified immediate
!= 000xxxxxxxxxxx0 Advanced SIMD two registers and shift amount

Advanced SIMD one register and modified immediate

These instructions are under Advanced SIMD shifts and immediate generation.

15141312111098765432101514131211109876543210
111i11111D000imm3Vdcmode0Qop1imm4
Decode fields Instruction Details
cmode op
0xx0 0 VMOV (immediate)T1
0xx0 1 VMVN (immediate)T1
0xx1 0 VORR (immediate)T1
0xx1 1 VBIC (immediate)T1
10x0 0 VMOV (immediate)T3
10x0 1 VMVN (immediate)T2
10x1 0 VORR (immediate)T2
10x1 1 VBIC (immediate)T2
11xx 0 VMOV (immediate)T4
110x 1 VMVN (immediate)T3
1110 1 VMOV (immediate)T5
1111 1 UNALLOCATED

Advanced SIMD two registers and shift amount

These instructions are under Advanced SIMD shifts and immediate generation.

15141312111098765432101514131211109876543210
111U11111Dimm3Himm3LVdopcLQM1Vm

The following constraints also apply to this encoding: imm3H:imm3L:Vd:opc:L != 000xxxxxxxxxxx0

Decode fields Instruction Details
U imm3H:L imm3L opc Q
!= 0000 0000 VSHR
!= 0000 0001 VSRA
!= 0000 000 1010 0 VMOVL
!= 0000 0010 VRSHR
!= 0000 0011 VRSRA
!= 0000 0111 VQSHL, VQSHLU (immediate)VQSHL
!= 0000 1001 0 VQSHRN, VQSHRUNVQSHRN
!= 0000 1001 1 VQRSHRN, VQRSHRUNVQRSHRN
!= 0000 1010 0 VSHLL
!= 0000 11xx VCVT (between floating-point and fixed-point, Advanced SIMD)
0 != 0000 0101 VSHL (immediate)
0 != 0000 1000 0 VSHRN
0 != 0000 1000 1 VRSHRN
1 != 0000 0100 VSRI
1 != 0000 0101 VSLI
1 != 0000 0110 VQSHL, VQSHLU (immediate)VQSHLU
1 != 0000 1000 0 VQSHRN, VQSHRUNVQSHRUN
1 != 0000 1000 1 VQRSHRN, VQRSHRUNVQRSHRUN

Advanced SIMD and System register load/store and 64-bit move

These instructions are under System register access, Advanced SIMD, and floating-point.

15141312111098765432101514131211109876543210
1110110op01op1
Decode fieldsInstruction details
op0op1
00x0 0x Advanced SIMD and floating-point 64-bit move
00x0 11 System register 64-bit move
!= 00x0 0x Advanced SIMD and floating-point load/store
!= 00x0 11 System register Load/Store
10 UNALLOCATED

Advanced SIMD and floating-point 64-bit move

These instructions are under Advanced SIMD and System register load/store and 64-bit move.

15141312111098765432101514131211109876543210
111011000D0opRt2Rt10sizeopc2Mo3Vm
Decode fields Instruction Details
D op size opc2 o3
0 UNALLOCATED
1 0 UNALLOCATED
1 0x 00 1 UNALLOCATED
1 01 UNALLOCATED
1 0 10 00 1 VMOV (between two general-purpose registers and two single-precision registers)from general-purpose registers
1 0 11 00 1 VMOV (between two general-purpose registers and a doubleword floating-point register)from general-purpose registers
1 1x UNALLOCATED
1 1 10 00 1 VMOV (between two general-purpose registers and two single-precision registers)to general-purpose registers
1 1 11 00 1 VMOV (between two general-purpose registers and a doubleword floating-point register)to general-purpose registers

System register 64-bit move

These instructions are under Advanced SIMD and System register load/store and 64-bit move.

15141312111098765432101514131211109876543210
111011000D0LRt2Rt111cp15opc1CRm
Decode fields Instruction Details
D L
0 UNALLOCATED
1 0 MCRR
1 1 MRRC

Advanced SIMD and floating-point load/store

These instructions are under Advanced SIMD and System register load/store and 64-bit move.

15141312111098765432101514131211109876543210
1110110PUDWLRnVd10sizeimm8

The following constraints also apply to this encoding: P:U:D:W != 00x0

Decode fields Instruction Details Feature
P U W L Rn size imm8
0 0 1 UNALLOCATED-
0 1 0x UNALLOCATED-
0 1 0 10 VSTM, VSTMDB, VSTMIAsingle-precision scalar-
0 1 0 11 xxxxxxx0 VSTM, VSTMDB, VSTMIAdouble-precision scalar-
0 1 0 11 xxxxxxx1 FSTMDBX, FSTMIAXIncrement After-
0 1 1 10 VLDM, VLDMDB, VLDMIAsingle-precision scalar-
0 1 1 11 xxxxxxx0 VLDM, VLDMDB, VLDMIAdouble-precision scalar-
0 1 1 11 xxxxxxx1 FLDM*X (FLDMDBX, FLDMIAX)Increment After-
1 0 0 01 VSTRhalf-precision scalarFEAT_FP16
1 0 0 10 VSTRsingle-precision scalar-
1 0 0 11 VSTRdouble-precision scalar-
1 0 1 != 1111 01 VLDR (immediate)half-precision scalarFEAT_FP16
1 0 1 != 1111 10 VLDR (immediate)single-precision scalar-
1 0 1 != 1111 11 VLDR (immediate)double-precision scalar-
1 0 1 0x UNALLOCATED-
1 0 1 0 10 VSTM, VSTMDB, VSTMIAsingle-precision scalar-
1 0 1 0 11 xxxxxxx0 VSTM, VSTMDB, VSTMIAdouble-precision scalar-
1 0 1 0 11 xxxxxxx1 FSTMDBX, FSTMIAXDecrement Before-
1 0 1 1 10 VLDM, VLDMDB, VLDMIAsingle-precision scalar-
1 0 1 1 11 xxxxxxx0 VLDM, VLDMDB, VLDMIAdouble-precision scalar-
1 0 1 1 11 xxxxxxx1 FLDM*X (FLDMDBX, FLDMIAX)Decrement Before-
1 0 1 1111 01 VLDR (literal)half-precision scalarFEAT_FP16
1 0 1 1111 10 VLDR (literal)single-precision scalar-
1 0 1 1111 11 VLDR (literal)double-precision scalar-
1 1 1 UNALLOCATED-

System register Load/Store

These instructions are under Advanced SIMD and System register load/store and 64-bit move.

15141312111098765432101514131211109876543210
1110110PUDWLRnCRd111cp15imm8

The following constraints also apply to this encoding: P:U:D:W != 00x0

Decode fields Instruction Details
P:U:W D L Rn CRd cp15
!= 000 != 0101 0 UNALLOCATED
!= 000 0 1 1111 0101 0 LDC (literal)
!= 000 1 UNALLOCATED
!= 000 1 0101 0 UNALLOCATED
0x1 0 0 0101 0 STCpost-indexed
0x1 0 1 != 1111 0101 0 LDC (immediate)post-indexed
010 0 0 0101 0 STCunindexed
010 0 1 != 1111 0101 0 LDC (immediate)unindexed
1x0 0 0 0101 0 STCoffset
1x0 0 1 != 1111 0101 0 LDC (immediate)offset
1x1 0 0 0101 0 STCpre-indexed
1x1 0 1 != 1111 0101 0 LDC (immediate)pre-indexed

Advanced SIMD and System register 32-bit move

These instructions are under System register access, Advanced SIMD, and floating-point.

15141312111098765432101514131211109876543210
11101110op01op11
Decode fieldsInstruction detailsFeature
op0op1
000 000 UNALLOCATED-
000 001 VMOV (between general-purpose register and half-precision)FEAT_FP16
000 010 VMOV (between general-purpose register and single-precision)-
001 010 UNALLOCATED-
01x 010 UNALLOCATED-
10x 010 UNALLOCATED-
110 010 UNALLOCATED-
111 010 Floating-point move special register-
011 Advanced SIMD 8/16/32-bit element move/duplicate-
10x UNALLOCATED-
11x System register 32-bit move-

Floating-point move special register

These instructions are under Advanced SIMD and System register 32-bit move.

15141312111098765432101514131211109876543210
11101110111LregRt1010(0)(0)(0)1(0)(0)(0)(0)
Decode fields Instruction Details
L
0 VMSR
1 VMRS

Advanced SIMD 8/16/32-bit element move/duplicate

These instructions are under Advanced SIMD and System register 32-bit move.

15141312111098765432101514131211109876543210
11101110opc1LVnRt1011Nopc21(0)(0)(0)(0)
Decode fields Instruction Details
opc1 L opc2
0xx 0 VMOV (general-purpose register to scalar)
1 VMOV (scalar to general-purpose register)
1xx 0 0x VDUP (general-purpose register)
1xx 0 1x UNALLOCATED

System register 32-bit move

These instructions are under Advanced SIMD and System register 32-bit move.

15141312111098765432101514131211109876543210
11101110opc1LCRnRt111cp15opc21CRm
Decode fields Instruction Details
L
0 MCR
1 MRC

Floating-point data-processing

These instructions are under System register access, Advanced SIMD, and floating-point.

15141312111098765432101514131211109876543210
11101110op010op10
Decode fieldsInstruction details
op0op1
1x11 1 Floating-point data-processing (two registers)
1x11 0 Floating-point move immediate
!= 1x11 Floating-point data-processing (three registers)

Floating-point data-processing (two registers)

These instructions are under Floating-point data-processing.

15141312111098765432101514131211109876543210
111011101D11o1opc2Vd10sizeo31M0Vm
Decode fields Instruction Details Feature
o1 opc2 size o3
00 UNALLOCATED-
0 000 01 0 UNALLOCATED-
0 000 01 1 VABShalf-precision scalarFEAT_FP16
0 000 10 0 VMOV (register)single-precision scalar-
0 000 10 1 VABSsingle-precision scalar-
0 000 11 0 VMOV (register)double-precision scalar-
0 000 11 1 VABSdouble-precision scalar-
0 001 01 0 VNEGhalf-precision scalarFEAT_FP16
0 001 01 1 VSQRThalf-precision scalarFEAT_FP16
0 001 10 0 VNEGsingle-precision scalar-
0 001 10 1 VSQRTsingle-precision scalar-
0 001 11 0 VNEGdouble-precision scalar-
0 001 11 1 VSQRTdouble-precision scalar-
0 010 01 UNALLOCATED-
0 010 10 0 VCVTBhalf-precision to single-precision-
0 010 10 1 VCVTThalf-precision to single-precision-
0 010 11 0 VCVTBhalf-precision to double-precision-
0 010 11 1 VCVTThalf-precision to double-precision-
0 011 01 0 VCVTB (BFloat16)FEAT_AA32BF16
0 011 01 1 VCVTT (BFloat16)FEAT_AA32BF16
0 011 10 0 VCVTBsingle-precision to half-precision-
0 011 10 1 VCVTTsingle-precision to half-precision-
0 011 11 0 VCVTBdouble-precision to half-precision-
0 011 11 1 VCVTTdouble-precision to half-precision-
0 100 01 0 VCMPFEAT_FP16
0 100 01 1 VCMPEFEAT_FP16
0 100 10 0 VCMP-
0 100 10 1 VCMPE-
0 100 11 0 VCMP-
0 100 11 1 VCMPE-
0 101 01 0 VCMPFEAT_FP16
0 101 01 1 VCMPEFEAT_FP16
0 101 10 0 VCMP-
0 101 10 1 VCMPE-
0 101 11 0 VCMP-
0 101 11 1 VCMPE-
0 110 01 0 VRINTRhalf-precision scalarFEAT_FP16
0 110 01 1 VRINTZ (floating-point)half-precision scalarFEAT_FP16
0 110 10 0 VRINTRsingle-precision scalar-
0 110 10 1 VRINTZ (floating-point)single-precision scalar-
0 110 11 0 VRINTRdouble-precision scalar-
0 110 11 1 VRINTZ (floating-point)double-precision scalar-
0 111 01 0 VRINTX (floating-point)half-precision scalarFEAT_FP16
0 111 01 1 UNALLOCATED-
0 111 10 0 VRINTX (floating-point)single-precision scalar-
0 111 10 1 VCVT (between double-precision and single-precision)single-precision to double-precision-
0 111 11 0 VRINTX (floating-point)double-precision scalar-
0 111 11 1 VCVT (between double-precision and single-precision)double-precision to single-precision-
1 000 01 VCVT (integer to floating-point, floating-point)half-precision scalarFEAT_FP16
1 000 10 VCVT (integer to floating-point, floating-point)single-precision scalar-
1 000 11 VCVT (integer to floating-point, floating-point)double-precision scalar-
1 001 01 UNALLOCATED-
1 001 10 UNALLOCATED-
1 001 11 0 UNALLOCATED-
1 001 11 1 VJCVTFEAT_JSCVT
1 01x 01 VCVT (between floating-point and fixed-point, floating-point)FEAT_FP16
1 01x 10 VCVT (between floating-point and fixed-point, floating-point)-
1 01x 11 VCVT (between floating-point and fixed-point, floating-point)-
1 100 01 0 VCVTRFEAT_FP16
1 100 01 1 VCVT (floating-point to integer, floating-point)FEAT_FP16
1 100 10 0 VCVTR-
1 100 10 1 VCVT (floating-point to integer, floating-point)-
1 100 11 0 VCVTR-
1 100 11 1 VCVT (floating-point to integer, floating-point)-
1 101 01 0 VCVTRFEAT_FP16
1 101 01 1 VCVT (floating-point to integer, floating-point)FEAT_FP16
1 101 10 0 VCVTR-
1 101 10 1 VCVT (floating-point to integer, floating-point)-
1 101 11 0 VCVTR-
1 101 11 1 VCVT (floating-point to integer, floating-point)-
1 11x 01 VCVT (between floating-point and fixed-point, floating-point)FEAT_FP16
1 11x 10 VCVT (between floating-point and fixed-point, floating-point)-
1 11x 11 VCVT (between floating-point and fixed-point, floating-point)-

Floating-point move immediate

These instructions are under Floating-point data-processing.

15141312111098765432101514131211109876543210
111011101D11imm4HVd10size(0)0(0)0imm4L
Decode fields Instruction Details Feature
size
00 UNALLOCATED-
01 VMOV (immediate)half-precision scalarFEAT_FP16
10 VMOV (immediate)single-precision scalar-
11 VMOV (immediate)double-precision scalar-

Floating-point data-processing (three registers)

These instructions are under Floating-point data-processing.

15141312111098765432101514131211109876543210
11101110o0Do1VnVd10sizeNo2M0Vm

The following constraints also apply to this encoding: o0:D:o1 != 1x11

Decode fields Instruction Details Feature
o0:o1 size o2
!= 111 00 UNALLOCATED-
000 01 0 VMLA (floating-point)half-precision scalarFEAT_FP16
000 01 1 VMLS (floating-point)half-precision scalarFEAT_FP16
000 10 0 VMLA (floating-point)single-precision scalar-
000 10 1 VMLS (floating-point)single-precision scalar-
000 11 0 VMLA (floating-point)double-precision scalar-
000 11 1 VMLS (floating-point)double-precision scalar-
001 01 0 VNMLShalf-precision scalarFEAT_FP16
001 01 1 VNMLAhalf-precision scalarFEAT_FP16
001 10 0 VNMLSsingle-precision scalar-
001 10 1 VNMLAsingle-precision scalar-
001 11 0 VNMLSdouble-precision scalar-
001 11 1 VNMLAdouble-precision scalar-
010 01 0 VMUL (floating-point)half-precision scalarFEAT_FP16
010 01 1 VNMULhalf-precision scalarFEAT_FP16
010 10 0 VMUL (floating-point)single-precision scalar-
010 10 1 VNMULsingle-precision scalar-
010 11 0 VMUL (floating-point)double-precision scalar-
010 11 1 VNMULdouble-precision scalar-
011 01 0 VADD (floating-point)half-precision scalarFEAT_FP16
011 01 1 VSUB (floating-point)half-precision scalarFEAT_FP16
011 10 0 VADD (floating-point)single-precision scalar-
011 10 1 VSUB (floating-point)single-precision scalar-
011 11 0 VADD (floating-point)double-precision scalar-
011 11 1 VSUB (floating-point)double-precision scalar-
100 01 0 VDIVhalf-precision scalarFEAT_FP16
100 10 0 VDIVsingle-precision scalar-
100 11 0 VDIVdouble-precision scalar-
101 01 0 VFNMShalf-precision scalarFEAT_FP16
101 01 1 VFNMAhalf-precision scalarFEAT_FP16
101 10 0 VFNMSsingle-precision scalar-
101 10 1 VFNMAsingle-precision scalar-
101 11 0 VFNMSdouble-precision scalar-
101 11 1 VFNMAdouble-precision scalar-
110 01 0 VFMAhalf-precision scalarFEAT_FP16
110 01 1 VFMShalf-precision scalarFEAT_FP16
110 10 0 VFMAsingle-precision scalar-
110 10 1 VFMSsingle-precision scalar-
110 11 0 VFMAdouble-precision scalar-
110 11 1 VFMSdouble-precision scalar-

Additional Advanced SIMD and floating-point instructions

These instructions are under System register access, Advanced SIMD, and floating-point.

15141312111098765432101514131211109876543210
111111op0op11op2op3op4op5

The following constraints also apply to this encoding: op0<2:1> != 11

Decode fieldsInstruction details
op0op1op2op3op4op5
0xx 0x Advanced SIMD three registers of the same length extension
100 0 != 00 0 0 Floating-point conditional select
101 00xxxx 0 != 00 0 Floating-point minNum/maxNum
101 110000 0 != 00 1 0 Floating-point extraction and insertion
101 111xxx 0 != 00 1 0 Floating-point directed convert to integer
10x 0 00 Advanced SIMD and floating-point multiply with accumulate
10x 1 0x Advanced SIMD and floating-point dot product

Advanced SIMD three registers of the same length extension

These instructions are under Additional Advanced SIMD and floating-point instructions.

15141312111098765432101514131211109876543210
1111110op1Dop2VnVd1op30op4NQMUVm
Decode fields Instruction Details Feature
op1 op2 op3 op4 Q U
x1 0x 0 0 0 0 VCADD64-bit SIMD vectorFEAT_FCMA
x1 0x 0 0 0 1 UNALLOCATED-
x1 0x 0 0 1 0 VCADD128-bit SIMD vectorFEAT_FCMA
x1 0x 0 0 1 1 UNALLOCATED-
00 0x 0 0 UNALLOCATED-
00 0x 0 1 UNALLOCATED-
00 00 1 0 0 0 UNALLOCATED-
00 00 1 0 0 1 UNALLOCATED-
00 00 1 0 1 0 VMMLAFEAT_AA32BF16
00 00 1 0 1 1 UNALLOCATED-
00 00 1 1 0 0 VDOT (vector)64-bit SIMD vectorFEAT_AA32BF16
00 00 1 1 0 1 UNALLOCATED-
00 00 1 1 1 0 VDOT (vector)128-bit SIMD vectorFEAT_AA32BF16
00 00 1 1 1 1 UNALLOCATED-
00 01 1 0 UNALLOCATED-
00 01 1 1 UNALLOCATED-
00 10 0 0 1 VFMAL (vector)FEAT_FHM
00 10 0 1 UNALLOCATED-
00 10 1 0 0 UNALLOCATED-
00 10 1 0 1 0 VSMMLAFEAT_AA32I8MM
00 10 1 0 1 1 VUMMLAFEAT_AA32I8MM
00 10 1 1 0 0 VSDOT (vector)64-bit SIMD vectorFEAT_DotProd
00 10 1 1 0 1 VUDOT (vector)64-bit SIMD vectorFEAT_DotProd
00 10 1 1 1 0 VSDOT (vector)128-bit SIMD vectorFEAT_DotProd
00 10 1 1 1 1 VUDOT (vector)128-bit SIMD vectorFEAT_DotProd
00 11 0 0 1 VFMAB, VFMAT (BFloat16, vector)FEAT_AA32BF16
00 11 0 1 UNALLOCATED-
00 11 1 0 UNALLOCATED-
00 11 1 1 UNALLOCATED-
01 10 0 0 1 VFMSL (vector)FEAT_FHM
01 10 0 1 UNALLOCATED-
01 10 1 0 0 UNALLOCATED-
01 10 1 0 1 0 VUSMMLAFEAT_AA32I8MM
01 10 1 0 1 1 UNALLOCATED-
01 10 1 1 0 0 VUSDOT (vector)64-bit SIMD vectorFEAT_AA32I8MM
01 10 1 1 1 UNALLOCATED-
01 10 1 1 1 0 VUSDOT (vector)128-bit SIMD vectorFEAT_AA32I8MM
01 11 0 1 UNALLOCATED-
01 11 1 0 UNALLOCATED-
01 11 1 1 UNALLOCATED-
1x 0 0 0 VCMLAFEAT_FCMA
10 11 0 1 UNALLOCATED-
10 11 1 0 UNALLOCATED-
10 11 1 1 UNALLOCATED-
11 11 0 1 UNALLOCATED-
11 11 1 0 UNALLOCATED-
11 11 1 1 UNALLOCATED-

Floating-point conditional select

These instructions are under Additional Advanced SIMD and floating-point instructions.

15141312111098765432101514131211109876543210
111111100DccVnVd10!= 00N0M0Vm
size

The following constraints also apply to this encoding: size != 00 && size != 00

Decode fields Instruction Details Feature
size
01 VSELEQ, VSELGE, VSELGT, VSELVShalf-precision scalarFEAT_FP16
10 VSELEQ, VSELGE, VSELGT, VSELVSsingle-precision scalar-
11 VSELEQ, VSELGE, VSELGT, VSELVSdouble-precision scalar-

Floating-point minNum/maxNum

These instructions are under Additional Advanced SIMD and floating-point instructions.

15141312111098765432101514131211109876543210
111111101D00VnVd10!= 00NopM0Vm
size

The following constraints also apply to this encoding: size != 00 && size != 00

Decode fields Instruction Details Feature
size op
01 0 VMAXNMhalf-precision scalarFEAT_FP16
01 1 VMINNMhalf-precision scalarFEAT_FP16
10 0 VMAXNMsingle-precision scalar-
10 1 VMINNMsingle-precision scalar-
11 0 VMAXNMdouble-precision scalar-
11 1 VMINNMdouble-precision scalar-

Floating-point extraction and insertion

These instructions are under Additional Advanced SIMD and floating-point instructions.

15141312111098765432101514131211109876543210
111111101D110000Vd10!= 00op1M0Vm
size

The following constraints also apply to this encoding: size != 00 && size != 00

Decode fields Instruction Details Feature
size op
01 UNALLOCATED-
10 0 VMOVXFEAT_FP16
10 1 VINSFEAT_FP16
11 UNALLOCATED-

Floating-point directed convert to integer

These instructions are under Additional Advanced SIMD and floating-point instructions.

15141312111098765432101514131211109876543210
111111101D111o1RMVd10!= 00op1M0Vm
size

The following constraints also apply to this encoding: size != 00 && size != 00

Decode fields Instruction Details Feature
o1 RM size op
0 != 00 1 UNALLOCATED-
0 00 01 0 VRINTA (floating-point)half-precision scalarFEAT_FP16
0 00 10 0 VRINTA (floating-point)single-precision scalar-
0 00 11 0 VRINTA (floating-point)double-precision scalar-
0 01 01 0 VRINTN (floating-point)half-precision scalarFEAT_FP16
0 01 10 0 VRINTN (floating-point)single-precision scalar-
0 01 11 0 VRINTN (floating-point)double-precision scalar-
0 10 01 0 VRINTP (floating-point)half-precision scalarFEAT_FP16
0 10 10 0 VRINTP (floating-point)single-precision scalar-
0 10 11 0 VRINTP (floating-point)double-precision scalar-
0 11 01 0 VRINTM (floating-point)half-precision scalarFEAT_FP16
0 11 10 0 VRINTM (floating-point)single-precision scalar-
0 11 11 0 VRINTM (floating-point)double-precision scalar-
1 00 01 VCVTA (floating-point)half-precision scalarFEAT_FP16
1 00 10 VCVTA (floating-point)single-precision scalar-
1 00 11 VCVTA (floating-point)double-precision scalar-
1 01 01 VCVTN (floating-point)half-precision scalarFEAT_FP16
1 01 10 VCVTN (floating-point)single-precision scalar-
1 01 11 VCVTN (floating-point)double-precision scalar-
1 10 01 VCVTP (floating-point)half-precision scalarFEAT_FP16
1 10 10 VCVTP (floating-point)single-precision scalar-
1 10 11 VCVTP (floating-point)double-precision scalar-
1 11 01 VCVTM (floating-point)half-precision scalarFEAT_FP16
1 11 10 VCVTM (floating-point)single-precision scalar-
1 11 11 VCVTM (floating-point)double-precision scalar-

Advanced SIMD and floating-point multiply with accumulate

These instructions are under Additional Advanced SIMD and floating-point instructions.

15141312111098765432101514131211109876543210
11111110op1Dop2VnVd1000NQMUVm
Decode fields Instruction Details Feature
op1 op2 Q U
0 0 VCMLA (by element)128-bit SIMD vector of half-precision floating-pointFEAT_FCMA
0 00 1 VFMAL (by scalar)FEAT_FHM
0 01 1 VFMSL (by scalar)FEAT_FHM
0 10 1 UNALLOCATED-
0 11 1 VFMAB, VFMAT (BFloat16, by scalar)FEAT_AA32BF16
1 0 0 VCMLA (by element)64-bit SIMD vector of single-precision floating-pointFEAT_FCMA
1 1 UNALLOCATED-
1 1 0 VCMLA (by element)128-bit SIMD vector of single-precision floating-pointFEAT_FCMA

Advanced SIMD and floating-point dot product

These instructions are under Additional Advanced SIMD and floating-point instructions.

15141312111098765432101514131211109876543210
11111110op1Dop2VnVd110op4NQMUVm
Decode fields Instruction Details Feature
op1 op2 op4 Q U
0 00 0 UNALLOCATED-
0 00 1 0 0 VDOT (by element)64-bit SIMD vectorFEAT_AA32BF16
0 00 1 1 UNALLOCATED-
0 00 1 1 0 VDOT (by element)128-bit SIMD vectorFEAT_AA32BF16
0 01 0 UNALLOCATED-
0 10 0 UNALLOCATED-
0 10 1 0 0 VSDOT (by element)64-bit SIMD vectorFEAT_DotProd
0 10 1 0 1 VUDOT (by element)64-bit SIMD vectorFEAT_DotProd
0 10 1 1 0 VSDOT (by element)128-bit SIMD vectorFEAT_DotProd
0 10 1 1 1 VUDOT (by element)128-bit SIMD vectorFEAT_DotProd
0 11 UNALLOCATED-
1 0 UNALLOCATED-
1 00 1 0 0 VUSDOT (by element)64-bit SIMD vectorFEAT_AA32I8MM
1 00 1 0 1 VSUDOT (by element)64-bit SIMD vectorFEAT_AA32I8MM
1 00 1 1 0 VUSDOT (by element)128-bit SIMD vectorFEAT_AA32I8MM
1 00 1 1 1 VSUDOT (by element)128-bit SIMD vectorFEAT_AA32I8MM
1 01 1 UNALLOCATED-
1 1x 1 UNALLOCATED-

Load/store multiple

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
1110100opc0WLRnPMregister_list
Decode fields Instruction Details
opc L
00 0 SRS, SRSDA, SRSDB, SRSIA, SRSIBT1
00 1 RFE, RFEDA, RFEDB, RFEIA, RFEIBT1
01 0 STM, STMIA, STMEA
01 1 LDM, LDMIA, LDMFD
10 0 STMDB, STMFD
10 1 LDMDB, LDMEA
11 0 SRS, SRSDA, SRSDB, SRSIA, SRSIBT2
11 1 RFE, RFEDA, RFEDB, RFEIA, RFEIBT2

Load/store dual, load/store exclusive, load-acquire/store-release, and table branch

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
1110100op0op1op2op3

The following constraints also apply to this encoding: op0<1> == 1

Decode fieldsInstruction details
op0op1op2op3
0010 Load/store exclusive
0110 0 000 UNALLOCATED
0110 1 000 TBB, TBH
0110 01x Load/store exclusive byte/half/dual
0110 1xx Load-acquire / Store-release
0x11 != 1111 Load/store dual (immediate, post-indexed)
1x10 != 1111 Load/store dual (immediate)
1x11 != 1111 Load/store dual (immediate, pre-indexed)
!= 0xx0 1111 LDRD (literal)

Load/store exclusive

These instructions are under Load/store dual, load/store exclusive, load-acquire/store-release, and table branch.

15141312111098765432101514131211109876543210
11101000010LRnRtRdimm8
Decode fields Instruction Details
L
0 STREX
1 LDREX

Load/store exclusive byte/half/dual

These instructions are under Load/store dual, load/store exclusive, load-acquire/store-release, and table branch.

15141312111098765432101514131211109876543210
11101000110LRnRtRt201szRd
Decode fields Instruction Details
L sz
0 00 STREXB
0 01 STREXH
0 10 UNALLOCATED
0 11 STREXD
1 00 LDREXB
1 01 LDREXH
1 10 UNALLOCATED
1 11 LDREXD

Load-acquire / Store-release

These instructions are under Load/store dual, load/store exclusive, load-acquire/store-release, and table branch.

15141312111098765432101514131211109876543210
11101000110LRnRtRt21opszRd
Decode fields Instruction Details
L op sz
0 0 00 STLB
0 0 01 STLH
0 0 10 STL
0 0 11 UNALLOCATED
0 1 00 STLEXB
0 1 01 STLEXH
0 1 10 STLEX
0 1 11 STLEXD
1 0 00 LDAB
1 0 01 LDAH
1 0 10 LDA
1 0 11 UNALLOCATED
1 1 00 LDAEXB
1 1 01 LDAEXH
1 1 10 LDAEX
1 1 11 LDAEXD

Load/store dual (immediate, post-indexed)

These instructions are under Load/store dual, load/store exclusive, load-acquire/store-release, and table branch.

15141312111098765432101514131211109876543210
11101000U11L!= 1111RtRt2imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
L
0 STRD (immediate)
1 LDRD (immediate)

Load/store dual (immediate)

These instructions are under Load/store dual, load/store exclusive, load-acquire/store-release, and table branch.

15141312111098765432101514131211109876543210
11101001U10L!= 1111RtRt2imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
L
0 STRD (immediate)
1 LDRD (immediate)

Load/store dual (immediate, pre-indexed)

These instructions are under Load/store dual, load/store exclusive, load-acquire/store-release, and table branch.

15141312111098765432101514131211109876543210
11101001U11L!= 1111RtRt2imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
L
0 STRD (immediate)
1 LDRD (immediate)

Data-processing (shifted register)

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
1110101op1SRn(0)imm3Rdimm2stypeRm
Decode fields Instruction Details
op1 S Rn imm3:imm2:stype Rd
0000 0 != 0000011 AND, ANDS (register)AND, shift or rotate by value
0000 0 0000011 AND, ANDS (register)AND, rotate right with extend
0000 1 != 0000011 != 1111 AND, ANDS (register)ANDS, shift or rotate by value
0000 1 != 0000011 1111 TST (register)shift or rotate by value
0000 1 0000011 != 1111 AND, ANDS (register)ANDS, rotate right with extend
0000 1 0000011 1111 TST (register)rotate right with extend
0001 != 0000011 BIC, BICS (register)shift or rotate by value
0001 0000011 BIC, BICS (register)rotate right with extend
0010 0 != 1111 != 0000011 ORR, ORRS (register)ORR, shift or rotate by value
0010 0 != 1111 0000011 ORR, ORRS (register)ORR, rotate right with extend
0010 0 1111 != 0000011 MOV, MOVS (register)MOV, shift or rotate by value
0010 0 1111 0000011 MOV, MOVS (register)MOV, rotate right with extend
0010 1 != 1111 != 0000011 ORR, ORRS (register)ORRS, shift or rotate by value
0010 1 != 1111 0000011 ORR, ORRS (register)ORRS, rotate right with extend
0010 1 1111 != 0000011 MOV, MOVS (register)MOVS, shift or rotate by value
0010 1 1111 0000011 MOV, MOVS (register)MOVS, rotate right with extend
0011 0 != 1111 != 0000011 ORN, ORNS (register)ORN, shift or rotate by value
0011 0 != 1111 0000011 ORN, ORNS (register)ORN, rotate right with extend
0011 0 1111 != 0000011 MVN, MVNS (register)MVN, shift or rotate by value
0011 0 1111 0000011 MVN, MVNS (register)MVN, rotate right with extend
0011 1 != 1111 != 0000011 ORN, ORNS (register)ORNS, shift or rotate by value
0011 1 != 1111 0000011 ORN, ORNS (register)ORNS, rotate right with extend
0011 1 1111 != 0000011 MVN, MVNS (register)MVNS, shift or rotate by value
0011 1 1111 0000011 MVN, MVNS (register)MVNS, rotate right with extend
0100 0 != 0000011 EOR, EORS (register)EOR, shift or rotate by value
0100 0 0000011 EOR, EORS (register)EOR, rotate right with extend
0100 1 != 0000011 != 1111 EOR, EORS (register)EORS, shift or rotate by value
0100 1 != 0000011 1111 TEQ (register)shift or rotate by value
0100 1 0000011 != 1111 EOR, EORS (register)EORS, rotate right with extend
0100 1 0000011 1111 TEQ (register)rotate right with extend
0101 UNALLOCATED
0110 0 xxxxx00 PKHBT, PKHTBPKHBT
0110 0 xxxxx01 UNALLOCATED
0110 0 xxxxx10 PKHBT, PKHTBPKHTB
0110 0 xxxxx11 UNALLOCATED
0111 UNALLOCATED
1000 0 != 1101 != 0000011 ADD, ADDS (register)ADD, shift or rotate by value
1000 0 != 1101 0000011 ADD, ADDS (register)ADD, rotate right with extend
1000 0 1101 != 0000011 ADD, ADDS (SP plus register)ADD, shift or rotate by value
1000 0 1101 0000011 ADD, ADDS (SP plus register)ADD, rotate right with extend
1000 1 != 0000011 1111 CMN (register)shift or rotate by value
1000 1 != 1101 != 0000011 != 1111 ADD, ADDS (register)ADDS, shift or rotate by value
1000 1 != 1101 0000011 != 1111 ADD, ADDS (register)ADDS, rotate right with extend
1000 1 0000011 1111 CMN (register)rotate right with extend
1000 1 1101 != 0000011 != 1111 ADD, ADDS (SP plus register)ADDS, shift or rotate by value
1000 1 1101 0000011 != 1111 ADD, ADDS (SP plus register)ADDS, rotate right with extend
1001 UNALLOCATED
1010 != 0000011 ADC, ADCS (register)shift or rotate by value
1010 0000011 ADC, ADCS (register)rotate right with extend
1011 != 0000011 SBC, SBCS (register)shift or rotate by value
1011 0000011 SBC, SBCS (register)rotate right with extend
1100 UNALLOCATED
1101 0 != 1101 != 0000011 SUB, SUBS (register)SUB, shift or rotate by value
1101 0 != 1101 0000011 SUB, SUBS (register)SUB, rotate right with extend
1101 0 1101 != 0000011 SUB, SUBS (SP minus register)SUB, shift or rotate by value
1101 0 1101 0000011 SUB, SUBS (SP minus register)SUB, rotate right with extend
1101 1 != 0000011 1111 CMP (register)shift or rotate by value
1101 1 != 1101 != 0000011 != 1111 SUB, SUBS (register)SUBS, shift or rotate by value
1101 1 != 1101 0000011 != 1111 SUB, SUBS (register)SUBS, rotate right with extend
1101 1 0000011 1111 CMP (register)rotate right with extend
1101 1 1101 != 0000011 != 1111 SUB, SUBS (SP minus register)SUBS, shift or rotate by value
1101 1 1101 0000011 != 1111 SUB, SUBS (SP minus register)SUBS, rotate right with extend
1110 != 0000011 RSB, RSBS (register)shift or rotate by value
1110 0000011 RSB, RSBS (register)rotate right with extend
1111 UNALLOCATED

Branches and miscellaneous control

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
11110op0op1op21op3op4op5
Decode fieldsInstruction details
op0op1op2op3op4op5
0 1110 0x 0x0 0 MSR (register)
0 1110 0x 0x0 1 MSR (Banked register)
0 1110 10 0x0 000 Hints
0 1110 10 0x0 != 000 Change processor state
0 1110 11 0x0 Miscellaneous system
0 1111 00 0x0 BXJ
0 1111 01 0x0 Exception return
0 1111 1x 0x0 0 MRS
0 1111 1x 0x0 1 MRS (Banked register)
1 1110 00 000 DCPS
1 1110 00 010 UNALLOCATED
1 1110 01 0x0 UNALLOCATED
1 1110 1x 0x0 UNALLOCATED
1 1111 0x 0x0 UNALLOCATED
1 1111 1x 0x0 Exception generation
!= 111x 0x0 BT3
0x1 BT4
1x0 BL, BLX (immediate)T2
1x1 BL, BLX (immediate)T1

Hints

These instructions are under Branches and miscellaneous control.

15141312111098765432101514131211109876543210
111100111010(1)(1)(1)(1)10(0)0(0)000hintoption
Decode fields Instruction Details Feature
hint option
0000 0000 NOP-
0000 0001 YIELD-
0000 0010 WFE-
0000 0011 WFI-
0000 0100 SEV-
0000 0101 SEVL-
0000 011x Reserved hint, behaves as NOP-
0000 1xxx Reserved hint, behaves as NOP-
0001 0000 ESBFEAT_RAS
0001 0001 Reserved hint, behaves as NOP-
0001 0010 TSBFEAT_TRF
0001 0011 Reserved hint, behaves as NOP-
0001 0100 CSDB-
0001 0101 Reserved hint, behaves as NOP-
0001 0110 CLRBHBFEAT_CLRBHB
0001 0111 Reserved hint, behaves as NOP-
0001 1xxx Reserved hint, behaves as NOP-
001x Reserved hint, behaves as NOP-
01xx Reserved hint, behaves as NOP-
10xx Reserved hint, behaves as NOP-
110x Reserved hint, behaves as NOP-
1110 Reserved hint, behaves as NOP-
1111 DBG-

Change processor state

These instructions are under Branches and miscellaneous control.

15141312111098765432101514131211109876543210
111100111010(1)(1)(1)(1)10(0)0(0)imodMAIFmode

The following constraints also apply to this encoding: imod:M != 000

Decode fields Instruction Details
imod M
00 1 CPS, CPSID, CPSIEchange mode
01 UNALLOCATED
10 CPS, CPSID, CPSIEinterrupt enable and change mode
11 CPS, CPSID, CPSIEinterrupt disable and change mode

Miscellaneous system

These instructions are under Branches and miscellaneous control.

15141312111098765432101514131211109876543210
111100111011(1)(1)(1)(1)10(0)0(1)(1)(1)(1)opcoption
Decode fields Instruction Details Feature
opc option
000x UNALLOCATED-
0010 CLREX-
0011 UNALLOCATED-
0100 != 0x00 DSB-
0100 0000 SSBB-
0100 0100 PSSBB-
0101 DMB-
0110 ISB-
0111 SBFEAT_SB
1xxx UNALLOCATED-

Exception return

These instructions are under Branches and miscellaneous control.

15141312111098765432101514131211109876543210
111100111101Rn10(0)0(1)(1)(1)(1)imm8
Decode fields Instruction Details
Rn:imm8
!= 111000000000 SUB, SUBS (immediate)
111000000000 ERET

DCPS

These instructions are under Branches and miscellaneous control.

15141312111098765432101514131211109876543210
111101111000imm41000imm10opt
Decode fields Instruction Details
imm4 imm10 opt
!= 1111 UNALLOCATED
1111 != 0000000000 UNALLOCATED
1111 0000000000 00 UNALLOCATED
1111 0000000000 01 DCPS1
1111 0000000000 10 DCPS2
1111 0000000000 11 DCPS3

Exception generation

These instructions are under Branches and miscellaneous control.

15141312111098765432101514131211109876543210
11110111111o1imm410o20imm12
Decode fields Instruction Details
o1 o2
0 0 HVC
0 1 UNALLOCATED
1 0 SMC
1 1 UDF

Data-processing (modified immediate)

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
11110i0op1SRn0imm3Rdimm8
Decode fields Instruction Details
op1 S Rn Rd
0000 0 AND, ANDS (immediate)AND
0000 1 != 1111 AND, ANDS (immediate)ANDS
0000 1 1111 TST (immediate)
0001 BIC, BICS (immediate)
0010 0 != 1111 ORR, ORRS (immediate)ORR
0010 0 1111 MOV, MOVS (immediate)MOV
0010 1 != 1111 ORR, ORRS (immediate)ORRS
0010 1 1111 MOV, MOVS (immediate)MOVS
0011 0 != 1111 ORN, ORNS (immediate)not flag setting
0011 0 1111 MVN, MVNS (immediate)MVN
0011 1 != 1111 ORN, ORNS (immediate)flag setting
0011 1 1111 MVN, MVNS (immediate)MVNS
0100 0 EOR, EORS (immediate)EOR
0100 1 != 1111 EOR, EORS (immediate)EORS
0100 1 1111 TEQ (immediate)
0101 UNALLOCATED
011x UNALLOCATED
1000 0 != 1101 ADD, ADDS (immediate)ADD
1000 0 1101 ADD, ADDS (SP plus immediate)ADD
1000 1 != 1101 != 1111 ADD, ADDS (immediate)ADDS
1000 1 1101 != 1111 ADD, ADDS (SP plus immediate)ADDS
1000 1 1111 CMN (immediate)
1001 UNALLOCATED
1010 ADC, ADCS (immediate)
1011 SBC, SBCS (immediate)
1100 UNALLOCATED
1101 0 != 1101 SUB, SUBS (immediate)SUB
1101 0 1101 SUB, SUBS (SP minus immediate)SUB
1101 1 != 1101 != 1111 SUB, SUBS (immediate)SUBS
1101 1 1101 != 1111 SUB, SUBS (SP minus immediate)SUBS
1101 1 1111 CMP (immediate)
1110 RSB, RSBS (immediate)
1111 UNALLOCATED

Data-processing (plain binary immediate)

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
111101op0op100
Decode fieldsInstruction details
op0op1
0 0x Data-processing (simple immediate)
0 10 Move Wide (16-bit immediate)
0 11 UNALLOCATED
1 Saturate, Bitfield

Data-processing (simple immediate)

These instructions are under Data-processing (plain binary immediate).

15141312111098765432101514131211109876543210
11110i10o10o20Rn0imm3Rdimm8
Decode fields Instruction Details
o1 o2 Rn
0 0 != 11x1 ADD, ADDS (immediate)
0 0 1101 ADD, ADDS (SP plus immediate)
0 0 1111 ADRT3
0 1 UNALLOCATED
1 0 UNALLOCATED
1 1 != 11x1 SUB, SUBS (immediate)
1 1 1101 SUB, SUBS (SP minus immediate)
1 1 1111 ADRT2

Move Wide (16-bit immediate)

These instructions are under Data-processing (plain binary immediate).

15141312111098765432101514131211109876543210
11110i10o1100imm40imm3Rdimm8
Decode fields Instruction Details
o1
0 MOV, MOVS (immediate)
1 MOVT

Saturate, Bitfield

These instructions are under Data-processing (plain binary immediate).

15141312111098765432101514131211109876543210
11110(0)11op10Rn0imm3Rdimm2(0)widthm1
Decode fields Instruction Details
op1 Rn imm3:imm2
000 SSATlogical shift left
001 != 00000 SSATarithmetic shift right
001 00000 SSAT16
010 SBFX
011 != 1111 BFI
011 1111 BFC
100 USATlogical shift left
101 != 00000 USATarithmetic shift right
101 00000 USAT16
110 UBFX
111 UNALLOCATED

Advanced SIMD element or structure load/store

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
11111001op00op1
Decode fieldsInstruction details
op0op1
0 Advanced SIMD load/store multiple structures
1 11 Advanced SIMD load single structure to all lanes
1 != 11 Advanced SIMD load/store single structure to one lane

Advanced SIMD load/store multiple structures

These instructions are under Advanced SIMD element or structure load/store.

15141312111098765432101514131211109876543210
111110010DL0RnVditypesizealignRm
Decode fields Instruction Details
L itype Rm
0 000x != 11x1 VST4 (multiple 4-element structures)
0 000x 1101 VST4 (multiple 4-element structures)
0 000x 1111 VST4 (multiple 4-element structures)
0 0010 != 11x1 VST1 (multiple single elements)
0 0010 1101 VST1 (multiple single elements)
0 0010 1111 VST1 (multiple single elements)
0 0011 != 11x1 VST2 (multiple 2-element structures)
0 0011 1101 VST2 (multiple 2-element structures)
0 0011 1111 VST2 (multiple 2-element structures)
0 010x != 11x1 VST3 (multiple 3-element structures)
0 010x 1101 VST3 (multiple 3-element structures)
0 010x 1111 VST3 (multiple 3-element structures)
0 0110 != 11x1 VST1 (multiple single elements)
0 0110 1101 VST1 (multiple single elements)
0 0110 1111 VST1 (multiple single elements)
0 0111 != 11x1 VST1 (multiple single elements)
0 0111 1101 VST1 (multiple single elements)
0 0111 1111 VST1 (multiple single elements)
0 100x != 11x1 VST2 (multiple 2-element structures)
0 100x 1101 VST2 (multiple 2-element structures)
0 100x 1111 VST2 (multiple 2-element structures)
0 1010 != 11x1 VST1 (multiple single elements)
0 1010 1101 VST1 (multiple single elements)
0 1010 1111 VST1 (multiple single elements)
1 000x != 11x1 VLD4 (multiple 4-element structures)
1 000x 1101 VLD4 (multiple 4-element structures)
1 000x 1111 VLD4 (multiple 4-element structures)
1 0010 != 11x1 VLD1 (multiple single elements)
1 0010 1101 VLD1 (multiple single elements)
1 0010 1111 VLD1 (multiple single elements)
1 0011 != 11x1 VLD2 (multiple 2-element structures)
1 0011 1101 VLD2 (multiple 2-element structures)
1 0011 1111 VLD2 (multiple 2-element structures)
1 010x != 11x1 VLD3 (multiple 3-element structures)
1 010x 1101 VLD3 (multiple 3-element structures)
1 010x 1111 VLD3 (multiple 3-element structures)
1011 UNALLOCATED
1 0110 != 11x1 VLD1 (multiple single elements)
1 0110 1101 VLD1 (multiple single elements)
1 0110 1111 VLD1 (multiple single elements)
1 0111 != 11x1 VLD1 (multiple single elements)
1 0111 1101 VLD1 (multiple single elements)
1 0111 1111 VLD1 (multiple single elements)
11xx UNALLOCATED
1 100x != 11x1 VLD2 (multiple 2-element structures)
1 100x 1101 VLD2 (multiple 2-element structures)
1 100x 1111 VLD2 (multiple 2-element structures)
1 1010 != 11x1 VLD1 (multiple single elements)
1 1010 1101 VLD1 (multiple single elements)
1 1010 1111 VLD1 (multiple single elements)

Advanced SIMD load single structure to all lanes

These instructions are under Advanced SIMD element or structure load/store.

15141312111098765432101514131211109876543210
111110011DL0RnVd11NsizeTaRm
Decode fields Instruction Details
L N a Rm
0 UNALLOCATED
1 00 != 11x1 VLD1 (single element to all lanes)
1 00 1101 VLD1 (single element to all lanes)
1 00 1111 VLD1 (single element to all lanes)
1 01 != 11x1 VLD2 (single 2-element structure to all lanes)
1 01 1101 VLD2 (single 2-element structure to all lanes)
1 01 1111 VLD2 (single 2-element structure to all lanes)
1 10 0 != 11x1 VLD3 (single 3-element structure to all lanes)
1 10 0 1101 VLD3 (single 3-element structure to all lanes)
1 10 0 1111 VLD3 (single 3-element structure to all lanes)
1 10 1 UNALLOCATED
1 11 != 11x1 VLD4 (single 4-element structure to all lanes)
1 11 1101 VLD4 (single 4-element structure to all lanes)
1 11 1111 VLD4 (single 4-element structure to all lanes)

Advanced SIMD load/store single structure to one lane

These instructions are under Advanced SIMD element or structure load/store.

15141312111098765432101514131211109876543210
111110011DL0RnVd!= 11Nindex_alignRm
size

The following constraints also apply to this encoding: size != 11 && size != 11

Decode fields Instruction Details
L size N Rm
0 00 00 != 11x1 VST1 (single element from one lane)
0 00 00 1101 VST1 (single element from one lane)
0 00 00 1111 VST1 (single element from one lane)
0 00 01 != 11x1 VST2 (single 2-element structure from one lane)
0 00 01 1101 VST2 (single 2-element structure from one lane)
0 00 01 1111 VST2 (single 2-element structure from one lane)
0 00 10 != 11x1 VST3 (single 3-element structure from one lane)
0 00 10 1101 VST3 (single 3-element structure from one lane)
0 00 10 1111 VST3 (single 3-element structure from one lane)
0 00 11 != 11x1 VST4 (single 4-element structure from one lane)
0 00 11 1101 VST4 (single 4-element structure from one lane)
0 00 11 1111 VST4 (single 4-element structure from one lane)
0 01 00 != 11x1 VST1 (single element from one lane)
0 01 00 1101 VST1 (single element from one lane)
0 01 00 1111 VST1 (single element from one lane)
0 01 01 != 11x1 VST2 (single 2-element structure from one lane)
0 01 01 1101 VST2 (single 2-element structure from one lane)
0 01 01 1111 VST2 (single 2-element structure from one lane)
0 01 10 != 11x1 VST3 (single 3-element structure from one lane)
0 01 10 1101 VST3 (single 3-element structure from one lane)
0 01 10 1111 VST3 (single 3-element structure from one lane)
0 01 11 != 11x1 VST4 (single 4-element structure from one lane)
0 01 11 1101 VST4 (single 4-element structure from one lane)
0 01 11 1111 VST4 (single 4-element structure from one lane)
0 10 00 != 11x1 VST1 (single element from one lane)
0 10 00 1101 VST1 (single element from one lane)
0 10 00 1111 VST1 (single element from one lane)
0 10 01 != 11x1 VST2 (single 2-element structure from one lane)
0 10 01 1101 VST2 (single 2-element structure from one lane)
0 10 01 1111 VST2 (single 2-element structure from one lane)
0 10 10 != 11x1 VST3 (single 3-element structure from one lane)
0 10 10 1101 VST3 (single 3-element structure from one lane)
0 10 10 1111 VST3 (single 3-element structure from one lane)
0 10 11 != 11x1 VST4 (single 4-element structure from one lane)
0 10 11 1101 VST4 (single 4-element structure from one lane)
0 10 11 1111 VST4 (single 4-element structure from one lane)
1 00 00 != 11x1 VLD1 (single element to one lane)
1 00 00 1101 VLD1 (single element to one lane)
1 00 00 1111 VLD1 (single element to one lane)
1 00 01 != 11x1 VLD2 (single 2-element structure to one lane)
1 00 01 1101 VLD2 (single 2-element structure to one lane)
1 00 01 1111 VLD2 (single 2-element structure to one lane)
1 00 10 != 11x1 VLD3 (single 3-element structure to one lane)
1 00 10 1101 VLD3 (single 3-element structure to one lane)
1 00 10 1111 VLD3 (single 3-element structure to one lane)
1 00 11 != 11x1 VLD4 (single 4-element structure to one lane)
1 00 11 1101 VLD4 (single 4-element structure to one lane)
1 00 11 1111 VLD4 (single 4-element structure to one lane)
1 01 00 != 11x1 VLD1 (single element to one lane)
1 01 00 1101 VLD1 (single element to one lane)
1 01 00 1111 VLD1 (single element to one lane)
1 01 01 != 11x1 VLD2 (single 2-element structure to one lane)
1 01 01 1101 VLD2 (single 2-element structure to one lane)
1 01 01 1111 VLD2 (single 2-element structure to one lane)
1 01 10 != 11x1 VLD3 (single 3-element structure to one lane)
1 01 10 1101 VLD3 (single 3-element structure to one lane)
1 01 10 1111 VLD3 (single 3-element structure to one lane)
1 01 11 != 11x1 VLD4 (single 4-element structure to one lane)
1 01 11 1101 VLD4 (single 4-element structure to one lane)
1 01 11 1111 VLD4 (single 4-element structure to one lane)
1 10 00 != 11x1 VLD1 (single element to one lane)
1 10 00 1101 VLD1 (single element to one lane)
1 10 00 1111 VLD1 (single element to one lane)
1 10 01 != 11x1 VLD2 (single 2-element structure to one lane)
1 10 01 1101 VLD2 (single 2-element structure to one lane)
1 10 01 1111 VLD2 (single 2-element structure to one lane)
1 10 10 != 11x1 VLD3 (single 3-element structure to one lane)
1 10 10 1101 VLD3 (single 3-element structure to one lane)
1 10 10 1111 VLD3 (single 3-element structure to one lane)
1 10 11 != 11x1 VLD4 (single 4-element structure to one lane)
1 10 11 1101 VLD4 (single 4-element structure to one lane)
1 10 11 1111 VLD4 (single 4-element structure to one lane)

Load/store single

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
1111100op0op1op2op3

The following constraints also apply to this encoding: op0<1>:op1 != 10

Decode fieldsInstruction details
op0op1op2op3
00 != 1111 000000 Load/store, unsigned (register offset)
00 != 1111 000001 UNALLOCATED
00 != 1111 00001x UNALLOCATED
00 != 1111 0001xx UNALLOCATED
00 != 1111 001xxx UNALLOCATED
00 != 1111 01xxxx UNALLOCATED
00 != 1111 10x0xx UNALLOCATED
00 != 1111 10x1xx Load/store, unsigned (immediate, post-indexed)
00 != 1111 1100xx Load/store, unsigned (negative immediate)
00 != 1111 1110xx Load/store, unsigned (unprivileged)
00 != 1111 11x1xx Load/store, unsigned (immediate, pre-indexed)
01 != 1111 Load/store, unsigned (positive immediate)
0x 1111 Load, unsigned (literal)
10 1 != 1111 000000 Load/store, signed (register offset)
10 1 != 1111 000001 UNALLOCATED
10 1 != 1111 00001x UNALLOCATED
10 1 != 1111 0001xx UNALLOCATED
10 1 != 1111 001xxx UNALLOCATED
10 1 != 1111 01xxxx UNALLOCATED
10 1 != 1111 10x0xx UNALLOCATED
10 1 != 1111 10x1xx Load/store, signed (immediate, post-indexed)
10 1 != 1111 1100xx Load/store, signed (negative immediate)
10 1 != 1111 1110xx Load/store, signed (unprivileged)
10 1 != 1111 11x1xx Load/store, signed (immediate, pre-indexed)
11 1 != 1111 Load/store, signed (positive immediate)
1x 1 1111 Load, signed (literal)

Load/store, unsigned (register offset)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110000sizeL!= 1111Rt000000imm2Rm
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size L Rt
00 0 STRB (register)
00 1 != 1111 LDRB (register)
00 1 1111 PLD, PLDW (register)preload read
01 0 STRH (register)
01 1 != 1111 LDRH (register)
01 1 1111 PLD, PLDW (register)preload write
10 0 STR (register)
10 1 LDR (register)
11 UNALLOCATED

Load/store, unsigned (immediate, post-indexed)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110000sizeL!= 1111Rt10U1imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size L
00 0 STRB (immediate)
00 1 LDRB (immediate)
01 0 STRH (immediate)
01 1 LDRH (immediate)
10 0 STR (immediate)
10 1 LDR (immediate)
11 UNALLOCATED

Load/store, unsigned (negative immediate)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110000sizeL!= 1111Rt1100imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size L Rt
00 0 STRB (immediate)
00 1 != 1111 LDRB (immediate)
00 1 1111 PLD, PLDW (immediate)preload read
01 0 STRH (immediate)
01 1 != 1111 LDRH (immediate)
01 1 1111 PLD, PLDW (immediate)preload write
10 0 STR (immediate)
10 1 LDR (immediate)
11 UNALLOCATED

Load/store, unsigned (unprivileged)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110000sizeL!= 1111Rt1110imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size L
00 0 STRBT
00 1 LDRBT
01 0 STRHT
01 1 LDRHT
10 0 STRT
10 1 LDRT
11 UNALLOCATED

Load/store, unsigned (immediate, pre-indexed)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110000sizeL!= 1111Rt11U1imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size L
00 0 STRB (immediate)
00 1 LDRB (immediate)
01 0 STRH (immediate)
01 1 LDRH (immediate)
10 0 STR (immediate)
10 1 LDR (immediate)
11 UNALLOCATED

Load/store, unsigned (positive immediate)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110001sizeL!= 1111Rtimm12
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size L Rt
00 0 STRB (immediate)
00 1 != 1111 LDRB (immediate)
00 1 1111 PLD, PLDW (immediate)preload read
01 0 STRH (immediate)
01 1 != 1111 LDRH (immediate)
01 1 1111 PLD, PLDW (immediate)preload write
10 0 STR (immediate)
10 1 LDR (immediate)

Load, unsigned (literal)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
11111000UsizeL1111Rtimm12
Decode fields Instruction Details
size L Rt
0x 1 1111 PLD (literal)
00 1 != 1111 LDRB (literal)
01 1 != 1111 LDRH (literal)
10 1 LDR (literal)
11 UNALLOCATED

Load/store, signed (register offset)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110010size1!= 1111Rt000000imm2Rm
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size Rt
00 != 1111 LDRSB (register)
00 1111 PLI (register)
01 != 1111 LDRSH (register)
01 1111 Reserved hint, behaves as NOP
1x UNALLOCATED

Load/store, signed (immediate, post-indexed)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110010size1!= 1111Rt10U1imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size
00 LDRSB (immediate)
01 LDRSH (immediate)
1x UNALLOCATED

Load/store, signed (negative immediate)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110010size1!= 1111Rt1100imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size Rt
00 != 1111 LDRSB (immediate)
00 1111 PLI (immediate, literal)
01 != 1111 LDRSH (immediate)
01 1111 Reserved hint, behaves as NOP
1x UNALLOCATED

Load/store, signed (unprivileged)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110010size1!= 1111Rt1110imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size
00 LDRSBT
01 LDRSHT
1x UNALLOCATED

Load/store, signed (immediate, pre-indexed)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110010size1!= 1111Rt11U1imm8
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size
00 LDRSB (immediate)
01 LDRSH (immediate)
1x UNALLOCATED

Load/store, signed (positive immediate)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
111110011size1!= 1111Rtimm12
Rn

The following constraints also apply to this encoding: Rn != 1111 && Rn != 1111

Decode fields Instruction Details
size Rt
00 != 1111 LDRSB (immediate)
00 1111 PLI (immediate, literal)
01 != 1111 LDRSH (immediate)
01 1111 Reserved hint, behaves as NOP

Load, signed (literal)

These instructions are under Load/store single.

15141312111098765432101514131211109876543210
11111001Usize11111Rtimm12
Decode fields Instruction Details
size Rt
00 != 1111 LDRSB (literal)
00 1111 PLI (immediate, literal)
01 != 1111 LDRSH (literal)
01 1111 Reserved hint, behaves as NOP
1x UNALLOCATED

Data-processing (register)

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
11111010op0op1op2
Decode fieldsInstruction details
op0op1op2
0 1111 0000 MOV, MOVS (register-shifted register)T2, Flag setting
0 1111 0001 UNALLOCATED
0 1111 001x UNALLOCATED
0 1111 01xx UNALLOCATED
0 1111 1xxx Register extends
1 1111 0xxx Parallel add-subtract
1 1111 10xx Data-processing (two source registers)
1 1111 11xx UNALLOCATED
!= 1111 UNALLOCATED

Register extends

These instructions are under Data-processing (register).

15141312111098765432101514131211109876543210
111110100op1URn1111Rd1(0)rotateRm
Decode fields Instruction Details
op1 U Rn
00 0 != 1111 SXTAH
00 0 1111 SXTH
00 1 != 1111 UXTAH
00 1 1111 UXTH
01 0 != 1111 SXTAB16
01 0 1111 SXTB16
01 1 != 1111 UXTAB16
01 1 1111 UXTB16
10 0 != 1111 SXTAB
10 0 1111 SXTB
10 1 != 1111 UXTAB
10 1 1111 UXTB
11 UNALLOCATED

Parallel add-subtract

These instructions are under Data-processing (register).

15141312111098765432101514131211109876543210
111110101op1Rn1111Rd0UHSRm
Decode fields Instruction Details
op1 U H S
000 0 0 0 SADD8
000 0 0 1 QADD8
000 0 1 0 SHADD8
000 0 1 1 UNALLOCATED
000 1 0 0 UADD8
000 1 0 1 UQADD8
000 1 1 0 UHADD8
000 1 1 1 UNALLOCATED
001 0 0 0 SADD16
001 0 0 1 QADD16
001 0 1 0 SHADD16
001 0 1 1 UNALLOCATED
001 1 0 0 UADD16
001 1 0 1 UQADD16
001 1 1 0 UHADD16
001 1 1 1 UNALLOCATED
010 0 0 0 SASX
010 0 0 1 QASX
010 0 1 0 SHASX
010 0 1 1 UNALLOCATED
010 1 0 0 UASX
010 1 0 1 UQASX
010 1 1 0 UHASX
010 1 1 1 UNALLOCATED
100 0 0 0 SSUB8
100 0 0 1 QSUB8
100 0 1 0 SHSUB8
100 0 1 1 UNALLOCATED
100 1 0 0 USUB8
100 1 0 1 UQSUB8
100 1 1 0 UHSUB8
100 1 1 1 UNALLOCATED
101 0 0 0 SSUB16
101 0 0 1 QSUB16
101 0 1 0 SHSUB16
101 0 1 1 UNALLOCATED
101 1 0 0 USUB16
101 1 0 1 UQSUB16
101 1 1 0 UHSUB16
101 1 1 1 UNALLOCATED
110 0 0 0 SSAX
110 0 0 1 QSAX
110 0 1 0 SHSAX
110 0 1 1 UNALLOCATED
110 1 0 0 USAX
110 1 0 1 UQSAX
110 1 1 0 UHSAX
110 1 1 1 UNALLOCATED
111 UNALLOCATED

Data-processing (two source registers)

These instructions are under Data-processing (register).

15141312111098765432101514131211109876543210
111110101op1Rn1111Rd10op2Rm
Decode fields Instruction Details Feature
op1 op2
000 00 QADD-
000 01 QDADD-
000 10 QSUB-
000 11 QDSUB-
001 00 REV-
001 01 REV16-
001 10 RBIT-
001 11 REVSH-
010 00 SEL-
010 01 UNALLOCATED-
010 1x UNALLOCATED-
011 00 CLZ-
011 01 UNALLOCATED-
011 1x UNALLOCATED-
100 00 CRC32CRC32BFEAT_CRC32
100 01 CRC32CRC32HFEAT_CRC32
100 10 CRC32CRC32WFEAT_CRC32
100 11 CONSTRAINED UNPREDICTABLE-
101 00 CRC32CCRC32CBFEAT_CRC32
101 01 CRC32CCRC32CHFEAT_CRC32
101 10 CRC32CCRC32CWFEAT_CRC32
101 11 CONSTRAINED UNPREDICTABLE-
11x UNALLOCATED-

The behavior of the CONSTRAINED UNPREDICTABLE encodings in this table is described in CONSTRAINED UNPREDICTABLE behavior for A32 and T32 instruction encodings


Multiply, multiply accumulate, and absolute difference

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
111110110op0
Decode fieldsInstruction details
op0
00 Multiply and absolute difference
01 UNALLOCATED
1x UNALLOCATED

Multiply and absolute difference

These instructions are under Multiply, multiply accumulate, and absolute difference.

15141312111098765432101514131211109876543210
111110110op1RnRaRd00op2Rm
Decode fields Instruction Details
op1 Ra op2
000 != 1111 00 MLA, MLAS
000 01 MLS
000 1x UNALLOCATED
000 1111 00 MUL, MULS
001 != 1111 00 SMLABB, SMLABT, SMLATB, SMLATTSMLABB
001 != 1111 01 SMLABB, SMLABT, SMLATB, SMLATTSMLABT
001 != 1111 10 SMLABB, SMLABT, SMLATB, SMLATTSMLATB
001 != 1111 11 SMLABB, SMLABT, SMLATB, SMLATTSMLATT
001 1111 00 SMULBB, SMULBT, SMULTB, SMULTTSMULBB
001 1111 01 SMULBB, SMULBT, SMULTB, SMULTTSMULBT
001 1111 10 SMULBB, SMULBT, SMULTB, SMULTTSMULTB
001 1111 11 SMULBB, SMULBT, SMULTB, SMULTTSMULTT
010 != 1111 00 SMLAD, SMLADXSMLAD
010 != 1111 01 SMLAD, SMLADXSMLADX
010 1x UNALLOCATED
010 1111 00 SMUAD, SMUADXSMUAD
010 1111 01 SMUAD, SMUADXSMUADX
011 != 1111 00 SMLAWB, SMLAWTSMLAWB
011 != 1111 01 SMLAWB, SMLAWTSMLAWT
011 1x UNALLOCATED
011 1111 00 SMULWB, SMULWTSMULWB
011 1111 01 SMULWB, SMULWTSMULWT
100 != 1111 00 SMLSD, SMLSDXSMLSD
100 != 1111 01 SMLSD, SMLSDXSMLSDX
100 1x UNALLOCATED
100 1111 00 SMUSD, SMUSDXSMUSD
100 1111 01 SMUSD, SMUSDXSMUSDX
101 != 1111 00 SMMLA, SMMLARSMMLA
101 != 1111 01 SMMLA, SMMLARSMMLAR
101 1x UNALLOCATED
101 1111 00 SMMUL, SMMULRSMMUL
101 1111 01 SMMUL, SMMULRSMMULR
110 00 SMMLS, SMMLSRSMMLS
110 01 SMMLS, SMMLSRSMMLSR
110 1x UNALLOCATED
111 != 1111 00 USADA8
111 01 UNALLOCATED
111 1x UNALLOCATED
111 1111 00 USAD8

Long multiply and divide

These instructions are under 32-bit.

15141312111098765432101514131211109876543210
111110111op1RnRdLoRdHiop2Rm
Decode fields Instruction Details
op1 op2
000 != 0000 UNALLOCATED
000 0000 SMULL, SMULLS
001 != 1111 UNALLOCATED
001 1111 SDIV
010 != 0000 UNALLOCATED
010 0000 UMULL, UMULLS
011 != 1111 UNALLOCATED
011 1111 UDIV
100 0000 SMLAL, SMLALS
100 0001 UNALLOCATED
100 001x UNALLOCATED
100 01xx UNALLOCATED
100 1000 SMLALBB, SMLALBT, SMLALTB, SMLALTTSMLALBB
100 1001 SMLALBB, SMLALBT, SMLALTB, SMLALTTSMLALBT
100 1010 SMLALBB, SMLALBT, SMLALTB, SMLALTTSMLALTB
100 1011 SMLALBB, SMLALBT, SMLALTB, SMLALTTSMLALTT
100 1100 SMLALD, SMLALDXSMLALD
100 1101 SMLALD, SMLALDXSMLALDX
100 111x UNALLOCATED
101 0xxx UNALLOCATED
101 10xx UNALLOCATED
101 1100 SMLSLD, SMLSLDXSMLSLD
101 1101 SMLSLD, SMLSLDXSMLSLDX
101 111x UNALLOCATED
110 0000 UMLAL, UMLALS
110 0001 UNALLOCATED
110 001x UNALLOCATED
110 010x UNALLOCATED
110 0110 UMAAL
110 0111 UNALLOCATED
110 1xxx UNALLOCATED
111 UNALLOCATED

Internal version only: isa v01_31, pseudocode v2024-03_rel ; Build timestamp: 2024-03-25T10:05

Copyright © 2010-2024 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.