Top-level encodings for A32

313029282726252423222120191817161514131211109876543210
condop0op1
Decode fieldsInstruction details
condop0op1
!= 1111 00x Data-processing and miscellaneous instructions
!= 1111 010 Load/Store Word, Unsigned Byte (immediate, literal)
!= 1111 011 0 Load/Store Word, Unsigned Byte (register)
!= 1111 011 1 Media instructions
10x Branch, branch with link, and block data transfer
11x System register access, Advanced SIMD, floating-point, and Supervisor call
1111 0xx Unconditional instructions

Data-processing and miscellaneous instructions

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
!= 111100op0op1op2op3op4
Decode fieldsInstruction details
op0op1op2op3op4
0 1 != 00 1 Extra load/store
0 0xxxx 1 00 1 Multiply and Accumulate
0 1xxxx 1 00 1 Synchronization primitives and Load-Acquire/Store-Release
0 10xx0 0 Miscellaneous
0 10xx0 1 0 Halfword Multiply and Accumulate
0 != 10xx0 0 Data-processing register (immediate shift)
0 != 10xx0 0 1 Data-processing register (register shift)
1 Data-processing immediate

Extra load/store

These instructions are under Data-processing and miscellaneous instructions.

313029282726252423222120191817161514131211109876543210
!= 1111000op01!= 001
Decode fieldsInstruction details
op0
0 Load/Store Dual, Half, Signed Byte (register)
1 Load/Store Dual, Half, Signed Byte (immediate, literal)

Load/Store Dual, Half, Signed Byte (register)

These instructions are under Extra load/store.

313029282726252423222120191817161514131211109876543210
!= 1111000PU0Wo1RnRt(0)(0)(0)(0)1!= 001Rm
condop2

The following constraints also apply to this encoding: cond != 1111 && op2 != 00 && cond != 1111 && op2 != 00

Decode fields Instruction Details
P W o1 op2
0 0 0 01 STRH (register)post-indexed
0 0 0 10 LDRD (register)post-indexed
0 0 0 11 STRD (register)post-indexed
0 0 1 01 LDRH (register)post-indexed
0 0 1 10 LDRSB (register)post-indexed
0 0 1 11 LDRSH (register)post-indexed
0 1 0 01 STRHT
0 1 0 10 UNALLOCATED
0 1 0 11 UNALLOCATED
0 1 1 01 LDRHT
0 1 1 10 LDRSBT
0 1 1 11 LDRSHT
1 0 01 STRH (register)pre-indexed
1 0 10 LDRD (register)pre-indexed
1 0 11 STRD (register)pre-indexed
1 1 01 LDRH (register)pre-indexed
1 1 10 LDRSB (register)pre-indexed
1 1 11 LDRSH (register)pre-indexed

Load/Store Dual, Half, Signed Byte (immediate, literal)

These instructions are under Extra load/store.

313029282726252423222120191817161514131211109876543210
!= 1111000PU1Wo1RnRtimm4H1!= 001imm4L
condop2

The following constraints also apply to this encoding: cond != 1111 && op2 != 00 && cond != 1111 && op2 != 00

Decode fields Instruction Details
P:W o1 Rn op2
0 1111 10 LDRD (literal)
!= 01 1 1111 01 LDRH (literal)
!= 01 1 1111 10 LDRSB (literal)
!= 01 1 1111 11 LDRSH (literal)
00 0 != 1111 10 LDRD (immediate)post-indexed
00 0 01 STRH (immediate)post-indexed
00 0 11 STRD (immediate)post-indexed
00 1 != 1111 01 LDRH (immediate)post-indexed
00 1 != 1111 10 LDRSB (immediate)post-indexed
00 1 != 1111 11 LDRSH (immediate)post-indexed
01 0 != 1111 10 UNALLOCATED
01 0 01 STRHT
01 0 11 UNALLOCATED
01 1 01 LDRHT
01 1 10 LDRSBT
01 1 11 LDRSHT
10 0 != 1111 10 LDRD (immediate)offset
10 0 01 STRH (immediate)offset
10 0 11 STRD (immediate)offset
10 1 != 1111 01 LDRH (immediate)offset
10 1 != 1111 10 LDRSB (immediate)offset
10 1 != 1111 11 LDRSH (immediate)offset
11 0 != 1111 10 LDRD (immediate)pre-indexed
11 0 01 STRH (immediate)pre-indexed
11 0 11 STRD (immediate)pre-indexed
11 1 != 1111 01 LDRH (immediate)pre-indexed
11 1 != 1111 10 LDRSB (immediate)pre-indexed
11 1 != 1111 11 LDRSH (immediate)pre-indexed

Multiply and Accumulate

These instructions are under Data-processing and miscellaneous instructions.

313029282726252423222120191817161514131211109876543210
!= 11110000opcSRdHiRdLoRm1001Rn
cond

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

Decode fields Instruction Details
opc S
000 MUL, MULS
001 MLA, MLAS
010 0 UMAAL
010 1 UNALLOCATED
011 0 MLS
011 1 UNALLOCATED
100 UMULL, UMULLS
101 UMLAL, UMLALS
110 SMULL, SMULLS
111 SMLAL, SMLALS

Synchronization primitives and Load-Acquire/Store-Release

These instructions are under Data-processing and miscellaneous instructions.

313029282726252423222120191817161514131211109876543210
!= 11110001op0111001
Decode fieldsInstruction details
op0
0 UNALLOCATED
1 Load/Store Exclusive and Load-Acquire/Store-Release

Load/Store Exclusive and Load-Acquire/Store-Release

These instructions are under Synchronization primitives and Load-Acquire/Store-Release.

313029282726252423222120191817161514131211109876543210
!= 111100011sizeLRnxRd(1)(1)exord1001xRt
cond

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

Decode fields Instruction Details
size L ex ord
00 0 0 0 STL
00 0 0 1 UNALLOCATED
00 0 1 0 STLEX
00 0 1 1 STREX
00 1 0 0 LDA
00 1 0 1 UNALLOCATED
00 1 1 0 LDAEX
00 1 1 1 LDREX
01 0 0 UNALLOCATED
01 0 1 0 STLEXD
01 0 1 1 STREXD
01 1 0 UNALLOCATED
01 1 1 0 LDAEXD
01 1 1 1 LDREXD
10 0 0 0 STLB
10 0 0 1 UNALLOCATED
10 0 1 0 STLEXB
10 0 1 1 STREXB
10 1 0 0 LDAB
10 1 0 1 UNALLOCATED
10 1 1 0 LDAEXB
10 1 1 1 LDREXB
11 0 0 0 STLH
11 0 0 1 UNALLOCATED
11 0 1 0 STLEXH
11 0 1 1 STREXH
11 1 0 0 LDAH
11 1 0 1 UNALLOCATED
11 1 1 0 LDAEXH
11 1 1 1 LDREXH

Miscellaneous

These instructions are under Data-processing and miscellaneous instructions.

313029282726252423222120191817161514131211109876543210
!= 111100010op000op1
Decode fieldsInstruction details
op0op1
00 001 UNALLOCATED
00 010 UNALLOCATED
00 011 UNALLOCATED
00 110 UNALLOCATED
01 001 BX
01 010 BXJ
01 011 BLX (register)
01 110 UNALLOCATED
10 001 UNALLOCATED
10 010 UNALLOCATED
10 011 UNALLOCATED
10 110 UNALLOCATED
11 001 CLZ
11 010 UNALLOCATED
11 011 UNALLOCATED
11 110 ERET
111 Exception Generation
000 Move special register (register)
100 Cyclic Redundancy Check
101 Integer Saturating Arithmetic

Exception Generation

These instructions are under Miscellaneous.

313029282726252423222120191817161514131211109876543210
!= 111100010opc0imm120111imm4
cond

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

Decode fields Instruction Details
opc
00 HLT
01 BKPT
10 HVC
11 SMC

Move special register (register)

These instructions are under Miscellaneous.

313029282726252423222120191817161514131211109876543210
!= 111100010opc0maskRd(0)(0)Bm0000Rn
cond

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

Decode fields Instruction Details
opc B
x0 0 MRS
x0 1 MRS (Banked register)
x1 0 MSR (register)
x1 1 MSR (Banked register)

Cyclic Redundancy Check

These instructions are under Miscellaneous.

313029282726252423222120191817161514131211109876543210
!= 111100010sz0RnRd(0)(0)C(0)0100Rm
cond

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

Decode fields Instruction Details Feature
sz C
00 0 CRC32CRC32BFEAT_CRC32
00 1 CRC32CCRC32CBFEAT_CRC32
01 0 CRC32CRC32HFEAT_CRC32
01 1 CRC32CCRC32CHFEAT_CRC32
10 0 CRC32CRC32WFEAT_CRC32
10 1 CRC32CCRC32CWFEAT_CRC32
11 CONSTRAINED UNPREDICTABLE-

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


Integer Saturating Arithmetic

These instructions are under Miscellaneous.

313029282726252423222120191817161514131211109876543210
!= 111100010opc0RnRd(0)(0)(0)(0)0101Rm
cond

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

Decode fields Instruction Details
opc
00 QADD
01 QSUB
10 QDADD
11 QDSUB

Halfword Multiply and Accumulate

These instructions are under Data-processing and miscellaneous instructions.

313029282726252423222120191817161514131211109876543210
!= 111100010opc0RdRaRm1MN0Rn
cond

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

Decode fields Instruction Details
opc M N
00 SMLABB, SMLABT, SMLATB, SMLATT
01 0 0 SMLAWB, SMLAWTSMLAWB
01 0 1 SMULWB, SMULWTSMULWB
01 1 0 SMLAWB, SMLAWTSMLAWT
01 1 1 SMULWB, SMULWTSMULWT
10 SMLALBB, SMLALBT, SMLALTB, SMLALTT
11 SMULBB, SMULBT, SMULTB, SMULTT

Data-processing register (immediate shift)

These instructions are under Data-processing and miscellaneous instructions.

313029282726252423222120191817161514131211109876543210
!= 1111000op0op10

The following constraints also apply to this encoding: op0:op1 != 100

Decode fieldsInstruction details
op0op1
0x Integer Data Processing (three register, immediate shift)
10 1 Integer Test and Compare (two register, immediate shift)
11 Logical Arithmetic (three register, immediate shift)

Integer Data Processing (three register, immediate shift)

These instructions are under Data-processing register (immediate shift).

313029282726252423222120191817161514131211109876543210
!= 11110000opcSRnRdimm5stype0Rm
cond

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

Decode fields Instruction Details
opc S Rn imm5:stype
000 != 0000011 AND, ANDS (register)shift or rotate by value
000 0000011 AND, ANDS (register)rotate right with extend
001 != 0000011 EOR, EORS (register)shift or rotate by value
001 0000011 EOR, EORS (register)rotate right with extend
010 0 != 1101 != 0000011 SUB, SUBS (register)SUB, shift or rotate by value
010 0 != 1101 0000011 SUB, SUBS (register)SUB, rotate right with extend
010 0 1101 != 0000011 SUB, SUBS (SP minus register)SUB, shift or rotate by value
010 0 1101 0000011 SUB, SUBS (SP minus register)SUB, rotate right with extend
010 1 != 1101 != 0000011 SUB, SUBS (register)SUBS, shift or rotate by value
010 1 != 1101 0000011 SUB, SUBS (register)SUBS, rotate right with extend
010 1 1101 != 0000011 SUB, SUBS (SP minus register)SUBS, shift or rotate by value
010 1 1101 0000011 SUB, SUBS (SP minus register)SUBS, rotate right with extend
011 != 0000011 RSB, RSBS (register)shift or rotate by value
011 0000011 RSB, RSBS (register)rotate right with extend
100 0 != 1101 != 0000011 ADD, ADDS (register)ADD, shift or rotate by value
100 0 != 1101 0000011 ADD, ADDS (register)ADD, rotate right with extend
100 0 1101 != 0000011 ADD, ADDS (SP plus register)ADD, shift or rotate by value
100 0 1101 0000011 ADD, ADDS (SP plus register)ADD, rotate right with extend
100 1 != 1101 != 0000011 ADD, ADDS (register)ADDS, shift or rotate by value
100 1 != 1101 0000011 ADD, ADDS (register)ADDS, rotate right with extend
100 1 1101 != 0000011 ADD, ADDS (SP plus register)ADDS, shift or rotate by value
100 1 1101 0000011 ADD, ADDS (SP plus register)ADDS, rotate right with extend
101 != 0000011 ADC, ADCS (register)shift or rotate by value
101 0000011 ADC, ADCS (register)rotate right with extend
110 != 0000011 SBC, SBCS (register)shift or rotate by value
110 0000011 SBC, SBCS (register)rotate right with extend
111 != 0000011 RSC, RSCS (register)shift or rotate by value
111 0000011 RSC, RSCS (register)rotate right with extend

Integer Test and Compare (two register, immediate shift)

These instructions are under Data-processing register (immediate shift).

313029282726252423222120191817161514131211109876543210
!= 111100010opc1Rn(0)(0)(0)(0)imm5stype0Rm
cond

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

Decode fields Instruction Details
opc imm5:stype
00 != 0000011 TST (register)shift or rotate by value
00 0000011 TST (register)rotate right with extend
01 != 0000011 TEQ (register)shift or rotate by value
01 0000011 TEQ (register)rotate right with extend
10 != 0000011 CMP (register)shift or rotate by value
10 0000011 CMP (register)rotate right with extend
11 != 0000011 CMN (register)shift or rotate by value
11 0000011 CMN (register)rotate right with extend

Logical Arithmetic (three register, immediate shift)

These instructions are under Data-processing register (immediate shift).

313029282726252423222120191817161514131211109876543210
!= 111100011opcSRnRdimm5stype0Rm
cond

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

Decode fields Instruction Details
opc imm5:stype
00 != 0000011 ORR, ORRS (register)shift or rotate by value
00 0000011 ORR, ORRS (register)rotate right with extend
01 != 0000011 MOV, MOVS (register)shift or rotate by value
01 0000011 MOV, MOVS (register)rotate right with extend
10 != 0000011 BIC, BICS (register)shift or rotate by value
10 0000011 BIC, BICS (register)rotate right with extend
11 != 0000011 MVN, MVNS (register)shift or rotate by value
11 0000011 MVN, MVNS (register)rotate right with extend

Data-processing register (register shift)

These instructions are under Data-processing and miscellaneous instructions.

313029282726252423222120191817161514131211109876543210
!= 1111000op0op101

The following constraints also apply to this encoding: op0:op1 != 100

Decode fieldsInstruction details
op0op1
0x Integer Data Processing (three register, register shift)
10 1 Integer Test and Compare (two register, register shift)
11 Logical Arithmetic (three register, register shift)

Integer Data Processing (three register, register shift)

These instructions are under Data-processing register (register shift).

313029282726252423222120191817161514131211109876543210
!= 11110000opcSRnRdRs0stype1Rm
cond

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

Decode fields Instruction Details
opc
000 AND, ANDS (register-shifted register)
001 EOR, EORS (register-shifted register)
010 SUB, SUBS (register-shifted register)
011 RSB, RSBS (register-shifted register)
100 ADD, ADDS (register-shifted register)
101 ADC, ADCS (register-shifted register)
110 SBC, SBCS (register-shifted register)
111 RSC, RSCS (register-shifted register)

Integer Test and Compare (two register, register shift)

These instructions are under Data-processing register (register shift).

313029282726252423222120191817161514131211109876543210
!= 111100010opc1Rn(0)(0)(0)(0)Rs0stype1Rm
cond

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

Decode fields Instruction Details
opc
00 TST (register-shifted register)
01 TEQ (register-shifted register)
10 CMP (register-shifted register)
11 CMN (register-shifted register)

Logical Arithmetic (three register, register shift)

These instructions are under Data-processing register (register shift).

313029282726252423222120191817161514131211109876543210
!= 111100011opcSRnRdRs0stype1Rm
cond

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

Decode fields Instruction Details
opc
00 ORR, ORRS (register-shifted register)
01 MOV, MOVS (register-shifted register)
10 BIC, BICS (register-shifted register)
11 MVN, MVNS (register-shifted register)

Data-processing immediate

These instructions are under Data-processing and miscellaneous instructions.

313029282726252423222120191817161514131211109876543210
!= 1111001op0op1
Decode fieldsInstruction details
op0op1
0x Integer Data Processing (two register and immediate)
10 00 Move Halfword (immediate)
10 10 Move Special Register and Hints (immediate)
10 x1 Integer Test and Compare (one register and immediate)
11 Logical Arithmetic (two register and immediate)

Integer Data Processing (two register and immediate)

These instructions are under Data-processing immediate.

313029282726252423222120191817161514131211109876543210
!= 11110010opcSRnRdimm12
cond

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

Decode fields Instruction Details
opc S Rn
000 AND, ANDS (immediate)
001 EOR, EORS (immediate)
010 0 != 11x1 SUB, SUBS (immediate)SUB
010 0 1101 SUB, SUBS (SP minus immediate)SUB
010 0 1111 ADRA2
010 1 != 1101 SUB, SUBS (immediate)SUBS
010 1 1101 SUB, SUBS (SP minus immediate)SUBS
011 RSB, RSBS (immediate)
100 0 != 11x1 ADD, ADDS (immediate)ADD
100 0 1101 ADD, ADDS (SP plus immediate)ADD
100 0 1111 ADRA1
100 1 != 1101 ADD, ADDS (immediate)ADDS
100 1 1101 ADD, ADDS (SP plus immediate)ADDS
101 ADC, ADCS (immediate)
110 SBC, SBCS (immediate)
111 RSC, RSCS (immediate)

Move Halfword (immediate)

These instructions are under Data-processing immediate.

313029282726252423222120191817161514131211109876543210
!= 111100110H00imm4Rdimm12
cond

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

Decode fields Instruction Details
H
0 MOV, MOVS (immediate)
1 MOVT

Move Special Register and Hints (immediate)

These instructions are under Data-processing immediate.

313029282726252423222120191817161514131211109876543210
!= 111100110R10imm4(1)(1)(1)(1)imm12
cond

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

Decode fields Instruction Details Feature
R:imm4 imm12
!= 00000 MSR (immediate)-
00000 xxxx00000000 NOP-
00000 xxxx00000001 YIELD-
00000 xxxx00000010 WFE-
00000 xxxx00000011 WFI-
00000 xxxx00000100 SEV-
00000 xxxx00000101 SEVL-
00000 xxxx0000011x Reserved hint, behaves as NOP-
00000 xxxx00001xxx Reserved hint, behaves as NOP-
00000 xxxx00010000 ESBFEAT_RAS
00000 xxxx00010001 Reserved hint, behaves as NOP-
00000 xxxx00010010 TSBFEAT_TRF
00000 xxxx00010011 Reserved hint, behaves as NOP-
00000 xxxx00010100 CSDB-
00000 xxxx00010101 Reserved hint, behaves as NOP-
00000 xxxx00010110 CLRBHBFEAT_CLRBHB
00000 xxxx00010111 Reserved hint, behaves as NOP-
00000 xxxx00011xxx Reserved hint, behaves as NOP-
00000 xxxx001xxxxx Reserved hint, behaves as NOP-
00000 xxxx01xxxxxx Reserved hint, behaves as NOP-
00000 xxxx10xxxxxx Reserved hint, behaves as NOP-
00000 xxxx110xxxxx Reserved hint, behaves as NOP-
00000 xxxx1110xxxx Reserved hint, behaves as NOP-
00000 xxxx1111xxxx DBG-

Integer Test and Compare (one register and immediate)

These instructions are under Data-processing immediate.

313029282726252423222120191817161514131211109876543210
!= 111100110opc1Rn(0)(0)(0)(0)imm12
cond

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

Decode fields Instruction Details
opc
00 TST (immediate)
01 TEQ (immediate)
10 CMP (immediate)
11 CMN (immediate)

Logical Arithmetic (two register and immediate)

These instructions are under Data-processing immediate.

313029282726252423222120191817161514131211109876543210
!= 111100111opcSRnRdimm12
cond

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

Decode fields Instruction Details
opc
00 ORR, ORRS (immediate)
01 MOV, MOVS (immediate)
10 BIC, BICS (immediate)
11 MVN, MVNS (immediate)

Load/Store Word, Unsigned Byte (immediate, literal)

313029282726252423222120191817161514131211109876543210
!= 1111010PUo2Wo1RnRtimm12
cond

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

Decode fields Instruction Details
P:W o2 o1 Rn
!= 01 0 1 1111 LDR (literal)
!= 01 1 1 1111 LDRB (literal)
00 0 0 STR (immediate)post-indexed
00 0 1 != 1111 LDR (immediate)post-indexed
00 1 0 STRB (immediate)post-indexed
00 1 1 != 1111 LDRB (immediate)post-indexed
01 0 0 STRT
01 0 1 LDRT
01 1 0 STRBT
01 1 1 LDRBT
10 0 0 STR (immediate)offset
10 0 1 != 1111 LDR (immediate)offset
10 1 0 STRB (immediate)offset
10 1 1 != 1111 LDRB (immediate)offset
11 0 0 STR (immediate)pre-indexed
11 0 1 != 1111 LDR (immediate)pre-indexed
11 1 0 STRB (immediate)pre-indexed
11 1 1 != 1111 LDRB (immediate)pre-indexed

Load/Store Word, Unsigned Byte (register)

313029282726252423222120191817161514131211109876543210
!= 1111011PUo2Wo1RnRtimm5stype0Rm
cond

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

Decode fields Instruction Details
P o2 W o1
0 0 0 0 STR (register)post-indexed
0 0 0 1 LDR (register)post-indexed
0 0 1 0 STRT
0 0 1 1 LDRT
0 1 0 0 STRB (register)post-indexed
0 1 0 1 LDRB (register)post-indexed
0 1 1 0 STRBT
0 1 1 1 LDRBT
1 0 0 STR (register)pre-indexed
1 0 1 LDR (register)pre-indexed
1 1 0 STRB (register)pre-indexed
1 1 1 LDRB (register)pre-indexed

Media instructions

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
!= 1111011op0op11
Decode fieldsInstruction details
op0op1
00xxx Parallel Arithmetic
01000 101 SEL
01000 001 UNALLOCATED
01000 xx0 PKHBT, PKHTB
01001 x01 UNALLOCATED
01001 xx0 UNALLOCATED
0110x x01 UNALLOCATED
0110x xx0 UNALLOCATED
01x10 001 Saturate 16-bit
01x10 101 UNALLOCATED
01x11 x01 Reverse Bit/Byte
01x1x xx0 Saturate 32-bit
01xxx 111 UNALLOCATED
01xxx 011 Extend and Add
10xxx Signed multiply, Divide
11000 000 Unsigned Sum of Absolute Differences
11000 100 UNALLOCATED
11001 x00 UNALLOCATED
1101x x00 UNALLOCATED
110xx 111 UNALLOCATED
1110x 111 UNALLOCATED
1110x x00 Bitfield Insert
11110 111 UNALLOCATED
11111 111 Permanently UNDEFINED
1111x x00 UNALLOCATED
11x0x x10 UNALLOCATED
11x1x x10 Bitfield Extract
11xxx 011 UNALLOCATED
11xxx x01 UNALLOCATED

Parallel Arithmetic

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101100op1RnRd(1)(1)(1)(1)Bop21Rm
cond

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

Decode fields Instruction Details
op1 B op2
000 UNALLOCATED
001 0 00 SADD16
001 0 01 SASX
001 0 10 SSAX
001 0 11 SSUB16
001 1 00 SADD8
001 1 01 UNALLOCATED
001 1 10 UNALLOCATED
001 1 11 SSUB8
010 0 00 QADD16
010 0 01 QASX
010 0 10 QSAX
010 0 11 QSUB16
010 1 00 QADD8
010 1 01 UNALLOCATED
010 1 10 UNALLOCATED
010 1 11 QSUB8
011 0 00 SHADD16
011 0 01 SHASX
011 0 10 SHSAX
011 0 11 SHSUB16
011 1 00 SHADD8
011 1 01 UNALLOCATED
011 1 10 UNALLOCATED
011 1 11 SHSUB8
100 UNALLOCATED
101 0 00 UADD16
101 0 01 UASX
101 0 10 USAX
101 0 11 USUB16
101 1 00 UADD8
101 1 01 UNALLOCATED
101 1 10 UNALLOCATED
101 1 11 USUB8
110 0 00 UQADD16
110 0 01 UQASX
110 0 10 UQSAX
110 0 11 UQSUB16
110 1 00 UQADD8
110 1 01 UNALLOCATED
110 1 10 UNALLOCATED
110 1 11 UQSUB8
111 0 00 UHADD16
111 0 01 UHASX
111 0 10 UHSAX
111 0 11 UHSUB16
111 1 00 UHADD8
111 1 01 UNALLOCATED
111 1 10 UNALLOCATED
111 1 11 UHSUB8

Saturate 16-bit

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101101U10sat_immRd(1)(1)(1)(1)0011Rn
cond

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

Decode fields Instruction Details
U
0 SSAT16
1 USAT16

Reverse Bit/Byte

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101101o111(1)(1)(1)(1)Rd(1)(1)(1)(1)o2011Rm
cond

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

Decode fields Instruction Details
o1 o2
0 0 REV
0 1 REV16
1 0 RBIT
1 1 REVSH

Saturate 32-bit

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101101U1sat_immRdimm5sh01Rn
cond

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

Decode fields Instruction Details
U
0 SSAT
1 USAT

Extend and Add

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101101UopRnRdrotate(0)(0)0111Rm
cond

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

Decode fields Instruction Details
U op Rn
0 00 != 1111 SXTAB16
0 00 1111 SXTB16
0 10 != 1111 SXTAB
0 10 1111 SXTB
0 11 != 1111 SXTAH
0 11 1111 SXTH
1 00 != 1111 UXTAB16
1 00 1111 UXTB16
1 10 != 1111 UXTAB
1 10 1111 UXTB
1 11 != 1111 UXTAH
1 11 1111 UXTH

Signed multiply, Divide

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101110op1RdRaRmop21Rn
cond

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

Decode fields Instruction Details
op1 Ra op2
000 != 1111 000 SMLAD, SMLADXSMLAD
000 != 1111 001 SMLAD, SMLADXSMLADX
000 != 1111 010 SMLSD, SMLSDXSMLSD
000 != 1111 011 SMLSD, SMLSDXSMLSDX
000 1xx UNALLOCATED
000 1111 000 SMUAD, SMUADXSMUAD
000 1111 001 SMUAD, SMUADXSMUADX
000 1111 010 SMUSD, SMUSDXSMUSD
000 1111 011 SMUSD, SMUSDXSMUSDX
001 000 SDIV
001 != 000 UNALLOCATED
010 UNALLOCATED
011 000 UDIV
011 != 000 UNALLOCATED
100 000 SMLALD, SMLALDXSMLALD
100 001 SMLALD, SMLALDXSMLALDX
100 010 SMLSLD, SMLSLDXSMLSLD
100 011 SMLSLD, SMLSLDXSMLSLDX
100 1xx UNALLOCATED
101 != 1111 000 SMMLA, SMMLARSMMLA
101 != 1111 001 SMMLA, SMMLARSMMLAR
101 01x UNALLOCATED
101 10x UNALLOCATED
101 110 SMMLS, SMMLSRSMMLS
101 111 SMMLS, SMMLSRSMMLSR
101 1111 000 SMMUL, SMMULRSMMUL
101 1111 001 SMMUL, SMMULRSMMULR
11x UNALLOCATED

Unsigned Sum of Absolute Differences

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101111000RdRaRm0001Rn
cond

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

Decode fields Instruction Details
Ra
!= 1111 USADA8
1111 USAD8

Bitfield Insert

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 11110111110msbRdlsb001Rn
cond

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

Decode fields Instruction Details
Rn
!= 1111 BFI
1111 BFC

Permanently UNDEFINED

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101111111imm121111imm4
cond

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

Decode fields Instruction Details
cond
0xxx UNALLOCATED
10xx UNALLOCATED
110x UNALLOCATED
1110 UDF

Bitfield Extract

These instructions are under Media instructions.

313029282726252423222120191817161514131211109876543210
!= 111101111U1widthm1Rdlsb101Rn
cond

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

Decode fields Instruction Details
U
0 SBFX
1 UBFX

Branch, branch with link, and block data transfer

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
cond10op0
Decode fieldsInstruction details
condop0
1111 0 Exception Save/Restore
!= 1111 0 Load/Store Multiple
1 Branch (immediate)

Exception Save/Restore

These instructions are under Branch, branch with link, and block data transfer.

313029282726252423222120191817161514131211109876543210
1111100PUSWLRnopmode
Decode fields Instruction Details
P U S L
0 0 UNALLOCATED
0 0 0 1 RFE, RFEDA, RFEDB, RFEIA, RFEIBDecrement After
0 0 1 0 SRS, SRSDA, SRSDB, SRSIA, SRSIBDecrement After
0 1 0 1 RFE, RFEDA, RFEDB, RFEIA, RFEIBIncrement After
0 1 1 0 SRS, SRSDA, SRSDB, SRSIA, SRSIBIncrement After
1 0 0 1 RFE, RFEDA, RFEDB, RFEIA, RFEIBDecrement Before
1 0 1 0 SRS, SRSDA, SRSDB, SRSIA, SRSIBDecrement Before
1 1 UNALLOCATED
1 1 0 1 RFE, RFEDA, RFEDB, RFEIA, RFEIBIncrement Before
1 1 1 0 SRS, SRSDA, SRSDB, SRSIA, SRSIBIncrement Before

Load/Store Multiple

These instructions are under Branch, branch with link, and block data transfer.

313029282726252423222120191817161514131211109876543210
!= 1111100PUopWLRnregister_list
cond

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

Decode fields Instruction Details
P U op L register_list
0 0 0 0 STMDA, STMED
0 0 0 1 LDMDA, LDMFA
0 1 0 0 STM, STMIA, STMEA
0 1 0 1 LDM, LDMIA, LDMFD
1 0 STM (User registers)
1 0 0 0 STMDB, STMFD
1 0 0 1 LDMDB, LDMEA
1 1 0xxxxxxxxxxxxxxx LDM (User registers)
1 1 0 0 STMIB, STMFA
1 1 0 1 LDMIB, LDMED
1 1 1xxxxxxxxxxxxxxx LDM (exception return)

Branch (immediate)

These instructions are under Branch, branch with link, and block data transfer.

313029282726252423222120191817161514131211109876543210
cond101Himm24
Decode fields Instruction Details
cond H
!= 1111 0 B
!= 1111 1 BL, BLX (immediate)A1
1111 BL, BLX (immediate)A2

System register access, Advanced SIMD, floating-point, and Supervisor call

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
cond11op0op1op2
Decode fieldsInstruction details
condop0op1op2
0x 0x UNALLOCATED
10 0x UNALLOCATED
11 Supervisor call
1111 != 11 1x Unconditional Advanced SIMD and floating-point instructions
!= 1111 0x 1x Advanced SIMD and System register load/store and 64-bit move
!= 1111 10 1x 1 Advanced SIMD and System register 32-bit move
!= 1111 10 10 0 Floating-point data-processing
!= 1111 10 11 0 UNALLOCATED

Supervisor call

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

313029282726252423222120191817161514131211109876543210
cond1111
Decode fieldsInstruction details
cond
1111 UNALLOCATED
!= 1111 SVC

Unconditional Advanced SIMD and floating-point instructions

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

313029282726252423222120191817161514131211109876543210
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 Unconditional Advanced SIMD and floating-point instructions.

313029282726252423222120191817161514131211109876543210
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 Unconditional Advanced SIMD and floating-point instructions.

313029282726252423222120191817161514131211109876543210
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 Unconditional Advanced SIMD and floating-point instructions.

313029282726252423222120191817161514131211109876543210
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 Unconditional Advanced SIMD and floating-point instructions.

313029282726252423222120191817161514131211109876543210
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 Unconditional Advanced SIMD and floating-point instructions.

313029282726252423222120191817161514131211109876543210
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 Unconditional Advanced SIMD and floating-point instructions.

313029282726252423222120191817161514131211109876543210
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 Unconditional Advanced SIMD and floating-point instructions.

313029282726252423222120191817161514131211109876543210
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-

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

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

313029282726252423222120191817161514131211109876543210
!= 1111110op01op1
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.

313029282726252423222120191817161514131211109876543210
!= 111111000D0opRt2Rt10sizeopc2Mo3Vm
cond

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

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.

313029282726252423222120191817161514131211109876543210
!= 111111000D0LRt2Rt111cp15opc1CRm
cond

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

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.

313029282726252423222120191817161514131211109876543210
!= 1111110PUDWLRnVd10sizeimm8
cond

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

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.

313029282726252423222120191817161514131211109876543210
!= 1111110PUDWLRnCRd111cp15imm8
cond

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

Decode fields Instruction Details
P:U:W D L Rn CRd cp15
!= 000 0 != 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, floating-point, and Supervisor call.

313029282726252423222120191817161514131211109876543210
!= 11111110op01op11
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.

313029282726252423222120191817161514131211109876543210
!= 11111110111LregRt1010(0)(0)(0)1(0)(0)(0)(0)
cond

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

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.

313029282726252423222120191817161514131211109876543210
!= 11111110opc1LVnRt1011Nopc21(0)(0)(0)(0)
cond

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

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.

313029282726252423222120191817161514131211109876543210
!= 11111110opc1LCRnRt111cp15opc21CRm
cond

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

Decode fields Instruction Details
L
0 MCR
1 MRC

Floating-point data-processing

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

313029282726252423222120191817161514131211109876543210
!= 11111110op010op10
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.

313029282726252423222120191817161514131211109876543210
!= 111111101D11o1opc2Vd10sizeo31M0Vm
cond

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

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.

313029282726252423222120191817161514131211109876543210
!= 111111101D11imm4HVd10size(0)0(0)0imm4L
cond

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

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.

313029282726252423222120191817161514131211109876543210
!= 11111110o0Do1VnVd10sizeNo2M0Vm
cond

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

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-

Unconditional instructions

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
11110op0op1
Decode fieldsInstruction details
op0op1
00x Miscellaneous
01x Advanced SIMD data-processing
1xx 1 Memory hints and barriers
100 0 Advanced SIMD element or structure load/store
101 0 UNALLOCATED
11x 0 UNALLOCATED

Miscellaneous

These instructions are under Unconditional instructions.

313029282726252423222120191817161514131211109876543210
1111000op0op1
Decode fieldsInstruction detailsFeature
op0op1
0xxxx UNALLOCATED-
10000 xx0x Change Process State-
10001 1000 UNALLOCATED-
10001 x100 UNALLOCATED-
10001 xx01 UNALLOCATED-
10001 0000 SETPANFEAT_PAN
1000x 0111 UNALLOCATED-
10010 0111 CONSTRAINED UNPREDICTABLE-
10011 0111 UNALLOCATED-
1001x xx0x UNALLOCATED-
100xx 0011 UNALLOCATED-
100xx 0x10 UNALLOCATED-
100xx 1x1x UNALLOCATED-
101xx UNALLOCATED-
11xxx UNALLOCATED-

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


Change Process State

These instructions are under Miscellaneous.

313029282726252423222120191817161514131211109876543210
111100010000imodMop(0)(0)(0)(0)(0)(0)EAIF0mode
Decode fields Instruction Details
imod M op I F mode
1 0 0 0xxxx SETEND
00 1 0 CPS, CPSID, CPSIEchange mode
10 0 CPS, CPSID, CPSIEinterrupt enable and change mode
1 0 0 1xxxx UNALLOCATED
1 0 1 UNALLOCATED
1 1 UNALLOCATED
11 0 CPS, CPSID, CPSIEinterrupt disable and change mode

Advanced SIMD data-processing

These instructions are under Unconditional instructions.

313029282726252423222120191817161514131211109876543210
1111001op0op1
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.

313029282726252423222120191817161514131211109876543210
1111001U0DsizeVnVdopcNQMo1Vm
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)A2-
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)A1-
0011 1 VCGE (register)A1-
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)A2-
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)A2-
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)A1-
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.

313029282726252423222120191817161514131211109876543210
1111001op01op1op2op30
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.

313029282726252423222120191817161514131211109876543210
111100111D11sizeopc1Vd0opc2QM0Vm
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.

313029282726252423222120191817161514131211109876543210
111100111D11imm4Vd11opcQM0Vm
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.

313029282726252423222120191817161514131211109876543210
1111001U1D!= 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.

313029282726252423222120191817161514131211109876543210
1111001Q1D!= 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.

313029282726252423222120191817161514131211109876543210
11110011op01
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.

313029282726252423222120191817161514131211109876543210
1111001i1D000imm3Vdcmode0Qop1imm4
Decode fields Instruction Details
cmode op
0xx0 0 VMOV (immediate)A1
0xx0 1 VMVN (immediate)A1
0xx1 0 VORR (immediate)A1
0xx1 1 VBIC (immediate)A1
10x0 0 VMOV (immediate)A3
10x0 1 VMVN (immediate)A2
10x1 0 VORR (immediate)A2
10x1 1 VBIC (immediate)A2
11xx 0 VMOV (immediate)A4
110x 1 VMVN (immediate)A3
1110 1 VMOV (immediate)A5
1111 1 UNALLOCATED

Advanced SIMD two registers and shift amount

These instructions are under Advanced SIMD shifts and immediate generation.

313029282726252423222120191817161514131211109876543210
1111001U1Dimm3Himm3LVdopcLQM1Vm

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

Memory hints and barriers

These instructions are under Unconditional instructions.

313029282726252423222120191817161514131211109876543210
111101op01op1
Decode fieldsInstruction details
op0op1
00xx1 CONSTRAINED UNPREDICTABLE
01001 CONSTRAINED UNPREDICTABLE
01011 Barriers
011x1 CONSTRAINED UNPREDICTABLE
0xxx0 Preload (immediate)
1xxx0 0 Preload (register)
1xxx1 0 CONSTRAINED UNPREDICTABLE
1xxxx 1 UNALLOCATED

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


Barriers

These instructions are under Memory hints and barriers.

313029282726252423222120191817161514131211109876543210
111101010111(1)(1)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)opcodeoption
Decode fields Instruction Details Feature
opcode option
0000 CONSTRAINED UNPREDICTABLE-
0001 CLREX-
001x CONSTRAINED UNPREDICTABLE-
0100 != 0x00 DSB-
0100 0000 SSBB-
0100 0100 PSSBB-
0101 DMB-
0110 ISB-
0111 SBFEAT_SB
1xxx CONSTRAINED UNPREDICTABLE-

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


Preload (immediate)

These instructions are under Memory hints and barriers.

313029282726252423222120191817161514131211109876543210
1111010DUR01Rn(1)(1)(1)(1)imm12
Decode fields Instruction Details
D R Rn
0 0 Reserved hint, behaves as NOP
0 1 PLI (immediate, literal)
1 1111 PLD (literal)
1 0 != 1111 PLD, PLDW (immediate)preload write
1 1 != 1111 PLD, PLDW (immediate)preload read

Preload (register)

These instructions are under Memory hints and barriers.

313029282726252423222120191817161514131211109876543210
1111011DUo201Rn(1)(1)(1)(1)imm5stype0Rm
Decode fields Instruction Details
D o2 imm5:stype
0 0 Reserved hint, behaves as NOP
0 1 != 0000011 PLI (register)shift or rotate by value
0 1 0000011 PLI (register)rotate right with extend
1 0 != 0000011 PLD, PLDW (register)preload write, optional shift or rotate
1 0 0000011 PLD, PLDW (register)preload write, rotate right with extend
1 1 != 0000011 PLD, PLDW (register)preload read, optional shift or rotate
1 1 0000011 PLD, PLDW (register)preload read, rotate right with extend

Advanced SIMD element or structure load/store

These instructions are under Unconditional instructions.

313029282726252423222120191817161514131211109876543210
11110100op00op1
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.

313029282726252423222120191817161514131211109876543210
111101000DL0RnVditypesizealignRm
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.

313029282726252423222120191817161514131211109876543210
111101001DL0RnVd11NsizeTaRm
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.

313029282726252423222120191817161514131211109876543210
111101001DL0RnVd!= 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)

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.