ISA_v82A_A64_xml_00bet3.2 (old)htmldiff from-ISA_v82A_A64_xml_00bet3.2(new) ISA_v82A_A64_xml_00bet3.2_OPT

Top-level encodings for A64

313029282726252423222120191817161514131211109876543210
op0
Decode fields Instruction details
op0
00xx UNALLOCATED
100x Data Processing -- Immediate
101x Branches, Exception Generating and System instructions
x1x0 Loads and Stores
x101 Data Processing -- Register
x111 Data Processing -- Scalar Floating-Point and Advanced SIMD

Data Processing -- Immediate

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
100op0
Decode fields Instruction details
op0
00x PC-rel. addressing
01x Add/subtract (immediate)
100 Logical (immediate)
101 Move wide (immediate)
110 Bitfield
111 Extract

PC-rel. addressing

These instructions are under Data Processing -- Immediate.

313029282726252423222120191817161514131211109876543210
opimmlo10000immhiRd
Decode fields Instruction Details
op
0ADR
1ADRP

Add/subtract (immediate)

These instructions are under Data Processing -- Immediate.

313029282726252423222120191817161514131211109876543210
sfopS10001shiftimm12RnRd
Decode fields Instruction Details
sfopSshift
1xUNALLOCATED
000ADD (immediate)32-bit
001ADDS (immediate)32-bit
010SUB (immediate)32-bit
011SUBS (immediate)32-bit
100ADD (immediate)64-bit
101ADDS (immediate)64-bit
110SUB (immediate)64-bit
111SUBS (immediate)64-bit

Logical (immediate)

These instructions are under Data Processing -- Immediate.

313029282726252423222120191817161514131211109876543210
sfopc100100NimmrimmsRnRd
Decode fields Instruction Details
sfopcN
01UNALLOCATED
0000AND (immediate)32-bit
0010ORR (immediate)32-bit
0100EOR (immediate)32-bit
0110ANDS (immediate)32-bit
100AND (immediate)64-bit
101ORR (immediate)64-bit
110EOR (immediate)64-bit
111ANDS (immediate)64-bit

Move wide (immediate)

These instructions are under Data Processing -- Immediate.

313029282726252423222120191817161514131211109876543210
sfopc100101hwimm16Rd
Decode fields Instruction Details
sfopchw
01UNALLOCATED
01xUNALLOCATED
000MOVN32-bit
010MOVZ32-bit
011MOVK32-bit
100MOVN64-bit
110MOVZ64-bit
111MOVK64-bit

Bitfield

These instructions are under Data Processing -- Immediate.

313029282726252423222120191817161514131211109876543210
sfopc100110NimmrimmsRnRd
Decode fields Instruction Details
sfopcN
11UNALLOCATED
01UNALLOCATED
0000SBFM32-bit
0010BFM32-bit
0100UBFM32-bit
10UNALLOCATED
1001SBFM64-bit
1011BFM64-bit
1101UBFM64-bit

Extract

These instructions are under Data Processing -- Immediate.

313029282726252423222120191817161514131211109876543210
sfop21100111No0RmimmsRnRd
Decode fields Instruction Details
sfop21No0imms
x1UNALLOCATED
001UNALLOCATED
1xUNALLOCATED
01xxxxxUNALLOCATED
01UNALLOCATED
000000xxxxxEXTR32-bit
10UNALLOCATED
10010EXTR64-bit

Branches, Exception Generating and System instructions

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
op0101op1
Decode fields Instruction details
op0op1
010 0xxx Conditional branch (immediate)
010 1xxx UNALLOCATED
110 00xx Exception generation
110 0100 System
110 0101 UNALLOCATED
110 011x UNALLOCATED
110 1xxx Unconditional branch (register)
x00 Unconditional branch (immediate)
x01 0xxx Compare and branch (immediate)
x01 1xxx Test and branch (immediate)
x11 UNALLOCATED

Conditional branch (immediate)

These instructions are under Branches, Exception Generating and System instructions.

313029282726252423222120191817161514131211109876543210
0101010o1imm19o0cond
Decode fields Instruction Details
o1o0
00B.cond
01UNALLOCATED
1UNALLOCATED

Exception generation

These instructions are under Branches, Exception Generating and System instructions.

313029282726252423222120191817161514131211109876543210
11010100opcimm16op2LL
Decode fields Instruction Details
opcop2LL
xx1UNALLOCATED
x1xUNALLOCATED
1xxUNALLOCATED
00000000UNALLOCATED
00000001SVC
00000010HVC
00000011SMC
001000x1UNALLOCATED
00100000BRK
0010001xUNALLOCATED
010000x1UNALLOCATED
01000000HLT
0100001xUNALLOCATED
011000UNALLOCATED
100000UNALLOCATED
10100000UNALLOCATED
10100001DCPS1
10100010DCPS2
10100011DCPS3
11x000UNALLOCATED

System

These instructions are under Branches, Exception Generating and System instructions.

313029282726252423222120191817161514131211109876543210
1101010100Lop0op1CRnCRmop2Rt
Decode fields Instruction Details Architecture Version
Lop0op1CRnCRmop2Rt
000000xUNALLOCATED-
0000100!= 11111UNALLOCATED-
000010011111MSR (immediate)-
0000101UNALLOCATED-
000011xUNALLOCATED-
0001xxxUNALLOCATED-
000xx0001xUNALLOCATED-
000x0x001xUNALLOCATED-
000011001x!= 11111UNALLOCATED-
0000110010!= 00x011111HINThints 8 to 15, and 24 to 127-
0000110010000000011111NOP-
0000110010000000111111YIELD-
0000110010000001011111WFE-
0000110010000001111111WFI-
0000110010000010011111SEV-
0000110010000010111111SEVL-
0000110010000011x11111HINThints 6 and 7-
00001100100010!= 00x11111HINThints 17 to 23-
0000110010001000011111ESBARMv8.2
0000110010001000111111PSB CSYNCARMv8.2
0000110011000UNALLOCATED-
0000110011001UNALLOCATED-
000011001101011111CLREX-
0000110011011UNALLOCATED-
000011001110011111DSB-
000011001110111111DMB-
000011001111011111ISB-
0000110011111UNALLOCATED-
0001xx001xUNALLOCATED-
001SYS-
01xMSR (register)-
100UNALLOCATED-
101SYSL-
11xMRS-

Unconditional branch (register)

These instructions are under Branches, Exception Generating and System instructions.

313029282726252423222120191817161514131211109876543210
1101011opcop2op3Rnop4
Decode fields Instruction Details
opcop2op3Rnop4
!= 00000UNALLOCATED
!= 000000UNALLOCATED
!= 11111UNALLOCATED
00001111100000000000BR
00011111100000000000BLR
00101111100000000000RET
0011UNALLOCATED
010x!= 11111UNALLOCATED
0100111110000001111100000ERET
0101111110000001111100000DRPS
011xUNALLOCATED
1xxxUNALLOCATED

Unconditional branch (immediate)

These instructions are under Branches, Exception Generating and System instructions.

313029282726252423222120191817161514131211109876543210
op00101imm26
Decode fields Instruction Details
op
0B
1BL

Compare and branch (immediate)

These instructions are under Branches, Exception Generating and System instructions.

313029282726252423222120191817161514131211109876543210
sf011010opimm19Rt
Decode fields Instruction Details
sfop
00CBZ32-bit
01CBNZ32-bit
10CBZ64-bit
11CBNZ64-bit

Test and branch (immediate)

These instructions are under Branches, Exception Generating and System instructions.

313029282726252423222120191817161514131211109876543210
b5011011opb40imm14Rt
Decode fields Instruction Details
op
0TBZ
1TBNZ

Loads and Stores

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
op0op11op20op3op4op5
Decode fields Instruction details
op0op1op2op3op4op5
0 00 1 00 000000 Advanced SIMD load/store multiple structures
0 00 1 01 0xxxxx Advanced SIMD load/store multiple structures (post-indexed)
0 00 1 0x 1xxxxx UNALLOCATED
0 00 1 10 x00000 Advanced SIMD load/store single structure
0 00 1 11 Advanced SIMD load/store single structure (post-indexed)
0 00 1 x0 x1xxxx UNALLOCATED
0 00 1 x0 xx1xxx UNALLOCATED
0 00 1 x0 xxx1xx UNALLOCATED
0 00 1 x0 xxxx1x UNALLOCATED
0 00 1 x0 xxxxx1 UNALLOCATED
1 00 1 UNALLOCATED
00 0 0x Load/store exclusive
00 0 1x UNALLOCATED
01 0x Load register (literal)
01 1x UNALLOCATED
10 00 Load/store no-allocate pair (offset)
10 01 Load/store register pair (post-indexed)
10 10 Load/store register pair (offset)
10 11 Load/store register pair (pre-indexed)
11 0x 0xxxxx 00 Load/store register (unscaled immediate)
11 0x 0xxxxx 01 Load/store register (immediate post-indexed)
11 0x 0xxxxx 10 Load/store register (unprivileged)
11 0x 0xxxxx 11 Load/store register (immediate pre-indexed)
11 0x 1xxxxx 00 Atomic memory operations
11 0x 1xxxxx 10 Load/store register (register offset)
11 1x Load/store register (unsigned immediate)

Advanced SIMD load/store multiple structures

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
0Q0011000L000000opcodesizeRnRt
Decode fields Instruction Details
Lopcode
00000ST4 (multiple structures)
00001UNALLOCATED
00010ST1 (multiple structures)four registers
00011UNALLOCATED
00100ST3 (multiple structures)
00101UNALLOCATED
00110ST1 (multiple structures)three registers
00111ST1 (multiple structures)one register
01000ST2 (multiple structures)
01001UNALLOCATED
01010ST1 (multiple structures)two registers
01011UNALLOCATED
011xxUNALLOCATED
10000LD4 (multiple structures)
10001UNALLOCATED
10010LD1 (multiple structures)four registers
10011UNALLOCATED
10100LD3 (multiple structures)
10101UNALLOCATED
10110LD1 (multiple structures)three registers
10111LD1 (multiple structures)one register
11000LD2 (multiple structures)
11001UNALLOCATED
11010LD1 (multiple structures)two registers
11011UNALLOCATED
111xxUNALLOCATED

Advanced SIMD load/store multiple structures (post-indexed)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
0Q0011001L0RmopcodesizeRnRt
Decode fields Instruction Details
LRmopcode
00001UNALLOCATED
00011UNALLOCATED
00101UNALLOCATED
01001UNALLOCATED
01011UNALLOCATED
011xxUNALLOCATED
0!= 111110000ST4 (multiple structures)register offset
0!= 111110010ST1 (multiple structures)four registers, register offset
0!= 111110100ST3 (multiple structures)register offset
0!= 111110110ST1 (multiple structures)three registers, register offset
0!= 111110111ST1 (multiple structures)one register, register offset
0!= 111111000ST2 (multiple structures)register offset
0!= 111111010ST1 (multiple structures)two registers, register offset
0111110000ST4 (multiple structures)immediate offset
0111110010ST1 (multiple structures)four registers, immediate offset
0111110100ST3 (multiple structures)immediate offset
0111110110ST1 (multiple structures)three registers, immediate offset
0111110111ST1 (multiple structures)one register, immediate offset
0111111000ST2 (multiple structures)immediate offset
0111111010ST1 (multiple structures)two registers, immediate offset
10001UNALLOCATED
10011UNALLOCATED
10101UNALLOCATED
11001UNALLOCATED
11011UNALLOCATED
111xxUNALLOCATED
1!= 111110000LD4 (multiple structures)register offset
1!= 111110010LD1 (multiple structures)four registers, register offset
1!= 111110100LD3 (multiple structures)register offset
1!= 111110110LD1 (multiple structures)three registers, register offset
1!= 111110111LD1 (multiple structures)one register, register offset
1!= 111111000LD2 (multiple structures)register offset
1!= 111111010LD1 (multiple structures)two registers, register offset
1111110000LD4 (multiple structures)immediate offset
1111110010LD1 (multiple structures)four registers, immediate offset
1111110100LD3 (multiple structures)immediate offset
1111110110LD1 (multiple structures)three registers, immediate offset
1111110111LD1 (multiple structures)one register, immediate offset
1111111000LD2 (multiple structures)immediate offset
1111111010LD1 (multiple structures)two registers, immediate offset

Advanced SIMD load/store single structure

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
0Q0011010LR00000opcodeSsizeRnRt
Decode fields Instruction Details
LRopcodeSsize
011xUNALLOCATED
00000ST1 (single structure)8-bit
00001ST3 (single structure)8-bit
00010x0ST1 (single structure)16-bit
00010x1UNALLOCATED
00011x0ST3 (single structure)16-bit
00011x1UNALLOCATED
0010000ST1 (single structure)32-bit
001001xUNALLOCATED
00100001ST1 (single structure)64-bit
00100101UNALLOCATED
0010100ST3 (single structure)32-bit
0010110UNALLOCATED
00101001ST3 (single structure)64-bit
00101011UNALLOCATED
001011x1UNALLOCATED
01000ST2 (single structure)8-bit
01001ST4 (single structure)8-bit
01010x0ST2 (single structure)16-bit
01010x1UNALLOCATED
01011x0ST4 (single structure)16-bit
01011x1UNALLOCATED
0110000ST2 (single structure)32-bit
0110010UNALLOCATED
01100001ST2 (single structure)64-bit
01100011UNALLOCATED
011001x1UNALLOCATED
0110100ST4 (single structure)32-bit
0110110UNALLOCATED
01101001ST4 (single structure)64-bit
01101011UNALLOCATED
011011x1UNALLOCATED
10000LD1 (single structure)8-bit
10001LD3 (single structure)8-bit
10010x0LD1 (single structure)16-bit
10010x1UNALLOCATED
10011x0LD3 (single structure)16-bit
10011x1UNALLOCATED
1010000LD1 (single structure)32-bit
101001xUNALLOCATED
10100001LD1 (single structure)64-bit
10100101UNALLOCATED
1010100LD3 (single structure)32-bit
1010110UNALLOCATED
10101001LD3 (single structure)64-bit
10101011UNALLOCATED
101011x1UNALLOCATED
101100LD1R
101101UNALLOCATED
101110LD3R
101111UNALLOCATED
11000LD2 (single structure)8-bit
11001LD4 (single structure)8-bit
11010x0LD2 (single structure)16-bit
11010x1UNALLOCATED
11011x0LD4 (single structure)16-bit
11011x1UNALLOCATED
1110000LD2 (single structure)32-bit
1110010UNALLOCATED
11100001LD2 (single structure)64-bit
11100011UNALLOCATED
111001x1UNALLOCATED
1110100LD4 (single structure)32-bit
1110110UNALLOCATED
11101001LD4 (single structure)64-bit
11101011UNALLOCATED
111011x1UNALLOCATED
111100LD2R
111101UNALLOCATED
111110LD4R
111111UNALLOCATED

Advanced SIMD load/store single structure (post-indexed)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
0Q0011011LRRmopcodeSsizeRnRt
Decode fields Instruction Details
LRRmopcodeSsize
011xUNALLOCATED
00010x1UNALLOCATED
00011x1UNALLOCATED
001001xUNALLOCATED
00100101UNALLOCATED
0010110UNALLOCATED
00101011UNALLOCATED
001011x1UNALLOCATED
00!= 11111000ST1 (single structure)8-bit, register offset
00!= 11111001ST3 (single structure)8-bit, register offset
00!= 11111010x0ST1 (single structure)16-bit, register offset
00!= 11111011x0ST3 (single structure)16-bit, register offset
00!= 1111110000ST1 (single structure)32-bit, register offset
00!= 11111100001ST1 (single structure)64-bit, register offset
00!= 1111110100ST3 (single structure)32-bit, register offset
00!= 11111101001ST3 (single structure)64-bit, register offset
0011111000ST1 (single structure)8-bit, immediate offset
0011111001ST3 (single structure)8-bit, immediate offset
0011111010x0ST1 (single structure)16-bit, immediate offset
0011111011x0ST3 (single structure)16-bit, immediate offset
001111110000ST1 (single structure)32-bit, immediate offset
0011111100001ST1 (single structure)64-bit, immediate offset
001111110100ST3 (single structure)32-bit, immediate offset
0011111101001ST3 (single structure)64-bit, immediate offset
01010x1UNALLOCATED
01011x1UNALLOCATED
0110010UNALLOCATED
01100011UNALLOCATED
011001x1UNALLOCATED
0110110UNALLOCATED
01101011UNALLOCATED
011011x1UNALLOCATED
01!= 11111000ST2 (single structure)8-bit, register offset
01!= 11111001ST4 (single structure)8-bit, register offset
01!= 11111010x0ST2 (single structure)16-bit, register offset
01!= 11111011x0ST4 (single structure)16-bit, register offset
01!= 1111110000ST2 (single structure)32-bit, register offset
01!= 11111100001ST2 (single structure)64-bit, register offset
01!= 1111110100ST4 (single structure)32-bit, register offset
01!= 11111101001ST4 (single structure)64-bit, register offset
0111111000ST2 (single structure)8-bit, immediate offset
0111111001ST4 (single structure)8-bit, immediate offset
0111111010x0ST2 (single structure)16-bit, immediate offset
0111111011x0ST4 (single structure)16-bit, immediate offset
011111110000ST2 (single structure)32-bit, immediate offset
0111111100001ST2 (single structure)64-bit, immediate offset
011111110100ST4 (single structure)32-bit, immediate offset
0111111101001ST4 (single structure)64-bit, immediate offset
10010x1UNALLOCATED
10011x1UNALLOCATED
101001xUNALLOCATED
10100101UNALLOCATED
1010110UNALLOCATED
10101011UNALLOCATED
101011x1UNALLOCATED
101101UNALLOCATED
101111UNALLOCATED
10!= 11111000LD1 (single structure)8-bit, register offset
10!= 11111001LD3 (single structure)8-bit, register offset
10!= 11111010x0LD1 (single structure)16-bit, register offset
10!= 11111011x0LD3 (single structure)16-bit, register offset
10!= 1111110000LD1 (single structure)32-bit, register offset
10!= 11111100001LD1 (single structure)64-bit, register offset
10!= 1111110100LD3 (single structure)32-bit, register offset
10!= 11111101001LD3 (single structure)64-bit, register offset
10!= 111111100LD1Rregister offset
10!= 111111110LD3Rregister offset
1011111000LD1 (single structure)8-bit, immediate offset
1011111001LD3 (single structure)8-bit, immediate offset
1011111010x0LD1 (single structure)16-bit, immediate offset
1011111011x0LD3 (single structure)16-bit, immediate offset
101111110000LD1 (single structure)32-bit, immediate offset
1011111100001LD1 (single structure)64-bit, immediate offset
101111110100LD3 (single structure)32-bit, immediate offset
1011111101001LD3 (single structure)64-bit, immediate offset
10111111100LD1Rimmediate offset
10111111110LD3Rimmediate offset
11010x1UNALLOCATED
11011x1UNALLOCATED
1110010UNALLOCATED
11100011UNALLOCATED
111001x1UNALLOCATED
1110110UNALLOCATED
11101011UNALLOCATED
111011x1UNALLOCATED
111101UNALLOCATED
111111UNALLOCATED
11!= 11111000LD2 (single structure)8-bit, register offset
11!= 11111001LD4 (single structure)8-bit, register offset
11!= 11111010x0LD2 (single structure)16-bit, register offset
11!= 11111011x0LD4 (single structure)16-bit, register offset
11!= 1111110000LD2 (single structure)32-bit, register offset
11!= 11111100001LD2 (single structure)64-bit, register offset
11!= 1111110100LD4 (single structure)32-bit, register offset
11!= 11111101001LD4 (single structure)64-bit, register offset
11!= 111111100LD2Rregister offset
11!= 111111110LD4Rregister offset
1111111000LD2 (single structure)8-bit, immediate offset
1111111001LD4 (single structure)8-bit, immediate offset
1111111010x0LD2 (single structure)16-bit, immediate offset
1111111011x0LD4 (single structure)16-bit, immediate offset
111111110000LD2 (single structure)32-bit, immediate offset
1111111100001LD2 (single structure)64-bit, immediate offset
111111110100LD4 (single structure)32-bit, immediate offset
1111111101001LD4 (single structure)64-bit, immediate offset
11111111100LD2Rimmediate offset
11111111110LD4Rimmediate offset

Load/store exclusive

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
size001000o2Lo1Rso0Rt2RnRt
Decode fields Instruction Details Architecture Version
sizeo2Lo1o0Rt2
11!= 11111UNALLOCATED-
0x01!= 11111UNALLOCATED-
000000STXRB-
000001STLXRB-
00001011111CASP, CASPA, CASPAL, CASPL32-bit, no memory orderingARMv8.1
00001111111CASP, CASPA, CASPAL, CASPL32-bit, releaseARMv8.1
000100LDXRB-
000101LDAXRB-
00011011111CASP, CASPA, CASPAL, CASPL32-bit, acquireARMv8.1
00011111111CASP, CASPA, CASPAL, CASPL32-bit, acquire and releaseARMv8.1
001000STLLRBARMv8.1
001001STLRB-
00101011111CASB, CASAB, CASALB, CASLBno memory orderingARMv8.1
00101111111CASB, CASAB, CASALB, CASLBreleaseARMv8.1
001100LDLARBARMv8.1
001101LDARB-
00111011111CASB, CASAB, CASALB, CASLBacquireARMv8.1
00111111111CASB, CASAB, CASALB, CASLBacquire and releaseARMv8.1
010000STXRH-
010001STLXRH-
01001011111CASP, CASPA, CASPAL, CASPL64-bit, no memory orderingARMv8.1
01001111111CASP, CASPA, CASPAL, CASPL64-bit, releaseARMv8.1
010100LDXRH-
010101LDAXRH-
01011011111CASP, CASPA, CASPAL, CASPL64-bit, acquireARMv8.1
01011111111CASP, CASPA, CASPAL, CASPL64-bit, acquire and releaseARMv8.1
011000STLLRHARMv8.1
011001STLRH-
01101011111CASH, CASAH, CASALH, CASLHno memory orderingARMv8.1
01101111111CASH, CASAH, CASALH, CASLHreleaseARMv8.1
011100LDLARHARMv8.1
011101LDARH-
01111011111CASH, CASAH, CASALH, CASLHacquireARMv8.1
01111111111CASH, CASAH, CASALH, CASLHacquire and releaseARMv8.1
100000STXR32-bit-
100001STLXR32-bit-
100010STXP32-bit-
100011STLXP32-bit-
100100LDXR32-bit-
100101LDAXR32-bit-
100110LDXP32-bit-
100111LDAXP32-bit-
101000STLLR32-bitARMv8.1
101001STLR32-bit-
10101011111CAS, CASA, CASAL, CASL32-bit, no memory orderingARMv8.1
10101111111CAS, CASA, CASAL, CASL32-bit, releaseARMv8.1
101100LDLAR32-bitARMv8.1
101101LDAR32-bit-
10111011111CAS, CASA, CASAL, CASL32-bit, acquireARMv8.1
10111111111CAS, CASA, CASAL, CASL32-bit, acquire and releaseARMv8.1
110000STXR64-bit-
110001STLXR64-bit-
110010STXP64-bit-
110011STLXP64-bit-
110100LDXR64-bit-
110101LDAXR64-bit-
110110LDXP64-bit-
110111LDAXP64-bit-
111000STLLR64-bitARMv8.1
111001STLR64-bit-
11101011111CAS, CASA, CASAL, CASL64-bit, no memory orderingARMv8.1
11101111111CAS, CASA, CASAL, CASL64-bit, releaseARMv8.1
111100LDLAR64-bitARMv8.1
111101LDAR64-bit-
11111011111CAS, CASA, CASAL, CASL64-bit, acquireARMv8.1
11111111111CAS, CASA, CASAL, CASL64-bit, acquire and releaseARMv8.1

Load register (literal)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
opc011V00imm19Rt
Decode fields Instruction Details
opcV
000LDR (literal)32-bit
001LDR (literal, SIMD&FP)32-bit
010LDR (literal)64-bit
011LDR (literal, SIMD&FP)64-bit
100LDRSW (literal)
101LDR (literal, SIMD&FP)128-bit
110PRFM (literal)
111UNALLOCATED

Load/store no-allocate pair (offset)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
opc101V000Limm7Rt2RnRt
Decode fields Instruction Details
opcVL
0000STNP32-bit
0001LDNP32-bit
0010STNP (SIMD&FP)32-bit
0011LDNP (SIMD&FP)32-bit
010UNALLOCATED
0110STNP (SIMD&FP)64-bit
0111LDNP (SIMD&FP)64-bit
1000STNP64-bit
1001LDNP64-bit
1010STNP (SIMD&FP)128-bit
1011LDNP (SIMD&FP)128-bit
11UNALLOCATED

Load/store register pair (post-indexed)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
opc101V001Limm7Rt2RnRt
Decode fields Instruction Details
opcVL
0000STP32-bit
0001LDP32-bit
0010STP (SIMD&FP)32-bit
0011LDP (SIMD&FP)32-bit
0100UNALLOCATED
0101LDPSW
0110STP (SIMD&FP)64-bit
0111LDP (SIMD&FP)64-bit
1000STP64-bit
1001LDP64-bit
1010STP (SIMD&FP)128-bit
1011LDP (SIMD&FP)128-bit
11UNALLOCATED

Load/store register pair (offset)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
opc101V010Limm7Rt2RnRt
Decode fields Instruction Details
opcVL
0000STP32-bit
0001LDP32-bit
0010STP (SIMD&FP)32-bit
0011LDP (SIMD&FP)32-bit
0100UNALLOCATED
0101LDPSW
0110STP (SIMD&FP)64-bit
0111LDP (SIMD&FP)64-bit
1000STP64-bit
1001LDP64-bit
1010STP (SIMD&FP)128-bit
1011LDP (SIMD&FP)128-bit
11UNALLOCATED

Load/store register pair (pre-indexed)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
opc101V011Limm7Rt2RnRt
Decode fields Instruction Details
opcVL
0000STP32-bit
0001LDP32-bit
0010STP (SIMD&FP)32-bit
0011LDP (SIMD&FP)32-bit
0100UNALLOCATED
0101LDPSW
0110STP (SIMD&FP)64-bit
0111LDP (SIMD&FP)64-bit
1000STP64-bit
1001LDP64-bit
1010STP (SIMD&FP)128-bit
1011LDP (SIMD&FP)128-bit
11UNALLOCATED

Load/store register (unscaled immediate)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
size111V00opc0imm900RnRt
Decode fields Instruction Details
sizeVopc
x111xUNALLOCATED
00000STURB
00001LDURB
00010LDURSB64-bit
00011LDURSB32-bit
00100STUR (SIMD&FP)8-bit
00101LDUR (SIMD&FP)8-bit
00110STUR (SIMD&FP)128-bit
00111LDUR (SIMD&FP)128-bit
01000STURH
01001LDURH
01010LDURSH64-bit
01011LDURSH32-bit
01100STUR (SIMD&FP)16-bit
01101LDUR (SIMD&FP)16-bit
1x011UNALLOCATED
1x11xUNALLOCATED
10000STUR32-bit
10001LDUR32-bit
10010LDURSW
10100STUR (SIMD&FP)32-bit
10101LDUR (SIMD&FP)32-bit
11000STUR64-bit
11001LDUR64-bit
11010PRFM (unscaled offset)
11100STUR (SIMD&FP)64-bit
11101LDUR (SIMD&FP)64-bit

Load/store register (immediate post-indexed)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
size111V00opc0imm901RnRt
Decode fields Instruction Details
sizeVopc
x111xUNALLOCATED
00000STRB (immediate)
00001LDRB (immediate)
00010LDRSB (immediate)64-bit
00011LDRSB (immediate)32-bit
00100STR (immediate, SIMD&FP)8-bit
00101LDR (immediate, SIMD&FP)8-bit
00110STR (immediate, SIMD&FP)128-bit
00111LDR (immediate, SIMD&FP)128-bit
01000STRH (immediate)
01001LDRH (immediate)
01010LDRSH (immediate)64-bit
01011LDRSH (immediate)32-bit
01100STR (immediate, SIMD&FP)16-bit
01101LDR (immediate, SIMD&FP)16-bit
1x011UNALLOCATED
1x11xUNALLOCATED
10000STR (immediate)32-bit
10001LDR (immediate)32-bit
10010LDRSW (immediate)
10100STR (immediate, SIMD&FP)32-bit
10101LDR (immediate, SIMD&FP)32-bit
11000STR (immediate)64-bit
11001LDR (immediate)64-bit
11010UNALLOCATED
11100STR (immediate, SIMD&FP)64-bit
11101LDR (immediate, SIMD&FP)64-bit

Load/store register (unprivileged)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
size111V00opc0imm910RnRt
Decode fields Instruction Details
sizeVopc
1UNALLOCATED
00000STTRB
00001LDTRB
00010LDTRSB64-bit
00011LDTRSB32-bit
01000STTRH
01001LDTRH
01010LDTRSH64-bit
01011LDTRSH32-bit
1x011UNALLOCATED
10000STTR32-bit
10001LDTR32-bit
10010LDTRSW
11000STTR64-bit
11001LDTR64-bit
11010UNALLOCATED

Load/store register (immediate pre-indexed)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
size111V00opc0imm911RnRt
Decode fields Instruction Details
sizeVopc
x111xUNALLOCATED
00000STRB (immediate)
00001LDRB (immediate)
00010LDRSB (immediate)64-bit
00011LDRSB (immediate)32-bit
00100STR (immediate, SIMD&FP)8-bit
00101LDR (immediate, SIMD&FP)8-bit
00110STR (immediate, SIMD&FP)128-bit
00111LDR (immediate, SIMD&FP)128-bit
01000STRH (immediate)
01001LDRH (immediate)
01010LDRSH (immediate)64-bit
01011LDRSH (immediate)32-bit
01100STR (immediate, SIMD&FP)16-bit
01101LDR (immediate, SIMD&FP)16-bit
1x011UNALLOCATED
1x11xUNALLOCATED
10000STR (immediate)32-bit
10001LDR (immediate)32-bit
10010LDRSW (immediate)
10100STR (immediate, SIMD&FP)32-bit
10101LDR (immediate, SIMD&FP)32-bit
11000STR (immediate)64-bit
11001LDR (immediate)64-bit
11010UNALLOCATED
11100STR (immediate, SIMD&FP)64-bit
11101LDR (immediate, SIMD&FP)64-bit

Atomic memory operations

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
size111V00AR1Rso3opc00RnRt
Decode fields Instruction Details Architecture Version
sizeVARo3opcRt
01001UNALLOCATED-
0101xUNALLOCATED-
01101UNALLOCATED-
0111xUNALLOCATED-
001100UNALLOCATED-
0111100UNALLOCATED-
1UNALLOCATED-
000000000!= 11111LDADDB, LDADDAB, LDADDALB, LDADDLBno memory orderingARMv8.1
00000000011111STADDB, STADDLBno memory orderingARMv8.1
000000001!= 11111LDCLRB, LDCLRAB, LDCLRALB, LDCLRLBno memory orderingARMv8.1
00000000111111STCLRB, STCLRLBno memory orderingARMv8.1
000000010!= 11111LDEORB, LDEORAB, LDEORALB, LDEORLBno memory orderingARMv8.1
00000001011111STEORB, STEORLBno memory orderingARMv8.1
000000011!= 11111LDSETB, LDSETAB, LDSETALB, LDSETLBno memory orderingARMv8.1
00000001111111STSETB, STSETLBno memory orderingARMv8.1
000000100!= 11111LDSMAXB, LDSMAXAB, LDSMAXALB, LDSMAXLBno memory orderingARMv8.1
00000010011111STSMAXB, STSMAXLBno memory orderingARMv8.1
000000101!= 11111LDSMINB, LDSMINAB, LDSMINALB, LDSMINLBno memory orderingARMv8.1
00000010111111STSMINB, STSMINLBno memory orderingARMv8.1
000000110!= 11111LDUMAXB, LDUMAXAB, LDUMAXALB, LDUMAXLBno memory orderingARMv8.1
00000011011111STUMAXB, STUMAXLBno memory orderingARMv8.1
000000111!= 11111LDUMINB, LDUMINAB, LDUMINALB, LDUMINLBno memory orderingARMv8.1
00000011111111STUMINB, STUMINLBno memory orderingARMv8.1
000001000SWPB, SWPAB, SWPALB, SWPLBno memory orderingARMv8.1
000010000!= 11111LDADDB, LDADDAB, LDADDALB, LDADDLBreleaseARMv8.1
00001000011111STADDB, STADDLBreleaseARMv8.1
000010001!= 11111LDCLRB, LDCLRAB, LDCLRALB, LDCLRLBreleaseARMv8.1
00001000111111STCLRB, STCLRLBreleaseARMv8.1
000010010!= 11111LDEORB, LDEORAB, LDEORALB, LDEORLBreleaseARMv8.1
00001001011111STEORB, STEORLBreleaseARMv8.1
000010011!= 11111LDSETB, LDSETAB, LDSETALB, LDSETLBreleaseARMv8.1
00001001111111STSETB, STSETLBreleaseARMv8.1
000010100!= 11111LDSMAXB, LDSMAXAB, LDSMAXALB, LDSMAXLBreleaseARMv8.1
00001010011111STSMAXB, STSMAXLBreleaseARMv8.1
000010101!= 11111LDSMINB, LDSMINAB, LDSMINALB, LDSMINLBreleaseARMv8.1
00001010111111STSMINB, STSMINLBreleaseARMv8.1
000010110!= 11111LDUMAXB, LDUMAXAB, LDUMAXALB, LDUMAXLBreleaseARMv8.1
00001011011111STUMAXB, STUMAXLBreleaseARMv8.1
000010111!= 11111LDUMINB, LDUMINAB, LDUMINALB, LDUMINLBreleaseARMv8.1
00001011111111STUMINB, STUMINLBreleaseARMv8.1
000011000SWPB, SWPAB, SWPALB, SWPLBreleaseARMv8.1
000100000LDADDB, LDADDAB, LDADDALB, LDADDLBacquireARMv8.1
000100001LDCLRB, LDCLRAB, LDCLRALB, LDCLRLBacquireARMv8.1
000100010LDEORB, LDEORAB, LDEORALB, LDEORLBacquireARMv8.1
000100011LDSETB, LDSETAB, LDSETALB, LDSETLBacquireARMv8.1
000100100LDSMAXB, LDSMAXAB, LDSMAXALB, LDSMAXLBacquireARMv8.1
000100101LDSMINB, LDSMINAB, LDSMINALB, LDSMINLBacquireARMv8.1
000100110LDUMAXB, LDUMAXAB, LDUMAXALB, LDUMAXLBacquireARMv8.1
000100111LDUMINB, LDUMINAB, LDUMINALB, LDUMINLBacquireARMv8.1
000101000SWPB, SWPAB, SWPALB, SWPLBacquireARMv8.1
000110000LDADDB, LDADDAB, LDADDALB, LDADDLBacquire and releaseARMv8.1
000110001LDCLRB, LDCLRAB, LDCLRALB, LDCLRLBacquire and releaseARMv8.1
000110010LDEORB, LDEORAB, LDEORALB, LDEORLBacquire and releaseARMv8.1
000110011LDSETB, LDSETAB, LDSETALB, LDSETLBacquire and releaseARMv8.1
000110100LDSMAXB, LDSMAXAB, LDSMAXALB, LDSMAXLBacquire and releaseARMv8.1
000110101LDSMINB, LDSMINAB, LDSMINALB, LDSMINLBacquire and releaseARMv8.1
000110110LDUMAXB, LDUMAXAB, LDUMAXALB, LDUMAXLBacquire and releaseARMv8.1
000110111LDUMINB, LDUMINAB, LDUMINALB, LDUMINLBacquire and releaseARMv8.1
000111000SWPB, SWPAB, SWPALB, SWPLBacquire and releaseARMv8.1
010000000!= 11111LDADDH, LDADDAH, LDADDALH, LDADDLHno memory orderingARMv8.1
01000000011111STADDH, STADDLHno memory orderingARMv8.1
010000001!= 11111LDCLRH, LDCLRAH, LDCLRALH, LDCLRLHno memory orderingARMv8.1
01000000111111STCLRH, STCLRLHno memory orderingARMv8.1
010000010!= 11111LDEORH, LDEORAH, LDEORALH, LDEORLHno memory orderingARMv8.1
01000001011111STEORH, STEORLHno memory orderingARMv8.1
010000011!= 11111LDSETH, LDSETAH, LDSETALH, LDSETLHno memory orderingARMv8.1
01000001111111STSETH, STSETLHno memory orderingARMv8.1
010000100!= 11111LDSMAXH, LDSMAXAH, LDSMAXALH, LDSMAXLHno memory orderingARMv8.1
01000010011111STSMAXH, STSMAXLHno memory orderingARMv8.1
010000101!= 11111LDSMINH, LDSMINAH, LDSMINALH, LDSMINLHno memory orderingARMv8.1
01000010111111STSMINH, STSMINLHno memory orderingARMv8.1
010000110!= 11111LDUMAXH, LDUMAXAH, LDUMAXALH, LDUMAXLHno memory orderingARMv8.1
01000011011111STUMAXH, STUMAXLHno memory orderingARMv8.1
010000111!= 11111LDUMINH, LDUMINAH, LDUMINALH, LDUMINLHno memory orderingARMv8.1
01000011111111STUMINH, STUMINLHno memory orderingARMv8.1
010001000SWPH, SWPAH, SWPALH, SWPLHno memory orderingARMv8.1
010010000!= 11111LDADDH, LDADDAH, LDADDALH, LDADDLHreleaseARMv8.1
01001000011111STADDH, STADDLHreleaseARMv8.1
010010001!= 11111LDCLRH, LDCLRAH, LDCLRALH, LDCLRLHreleaseARMv8.1
01001000111111STCLRH, STCLRLHreleaseARMv8.1
010010010!= 11111LDEORH, LDEORAH, LDEORALH, LDEORLHreleaseARMv8.1
01001001011111STEORH, STEORLHreleaseARMv8.1
010010011!= 11111LDSETH, LDSETAH, LDSETALH, LDSETLHreleaseARMv8.1
01001001111111STSETH, STSETLHreleaseARMv8.1
010010100!= 11111LDSMAXH, LDSMAXAH, LDSMAXALH, LDSMAXLHreleaseARMv8.1
01001010011111STSMAXH, STSMAXLHreleaseARMv8.1
010010101!= 11111LDSMINH, LDSMINAH, LDSMINALH, LDSMINLHreleaseARMv8.1
01001010111111STSMINH, STSMINLHreleaseARMv8.1
010010110!= 11111LDUMAXH, LDUMAXAH, LDUMAXALH, LDUMAXLHreleaseARMv8.1
01001011011111STUMAXH, STUMAXLHreleaseARMv8.1
010010111!= 11111LDUMINH, LDUMINAH, LDUMINALH, LDUMINLHreleaseARMv8.1
01001011111111STUMINH, STUMINLHreleaseARMv8.1
010011000SWPH, SWPAH, SWPALH, SWPLHreleaseARMv8.1
010100000LDADDH, LDADDAH, LDADDALH, LDADDLHacquireARMv8.1
010100001LDCLRH, LDCLRAH, LDCLRALH, LDCLRLHacquireARMv8.1
010100010LDEORH, LDEORAH, LDEORALH, LDEORLHacquireARMv8.1
010100011LDSETH, LDSETAH, LDSETALH, LDSETLHacquireARMv8.1
010100100LDSMAXH, LDSMAXAH, LDSMAXALH, LDSMAXLHacquireARMv8.1
010100101LDSMINH, LDSMINAH, LDSMINALH, LDSMINLHacquireARMv8.1
010100110LDUMAXH, LDUMAXAH, LDUMAXALH, LDUMAXLHacquireARMv8.1
010100111LDUMINH, LDUMINAH, LDUMINALH, LDUMINLHacquireARMv8.1
010101000SWPH, SWPAH, SWPALH, SWPLHacquireARMv8.1
010110000LDADDH, LDADDAH, LDADDALH, LDADDLHacquire and releaseARMv8.1
010110001LDCLRH, LDCLRAH, LDCLRALH, LDCLRLHacquire and releaseARMv8.1
010110010LDEORH, LDEORAH, LDEORALH, LDEORLHacquire and releaseARMv8.1
010110011LDSETH, LDSETAH, LDSETALH, LDSETLHacquire and releaseARMv8.1
010110100LDSMAXH, LDSMAXAH, LDSMAXALH, LDSMAXLHacquire and releaseARMv8.1
010110101LDSMINH, LDSMINAH, LDSMINALH, LDSMINLHacquire and releaseARMv8.1
010110110LDUMAXH, LDUMAXAH, LDUMAXALH, LDUMAXLHacquire and releaseARMv8.1
010110111LDUMINH, LDUMINAH, LDUMINALH, LDUMINLHacquire and releaseARMv8.1
010111000SWPH, SWPAH, SWPALH, SWPLHacquire and releaseARMv8.1
100000000!= 11111LDADD, LDADDA, LDADDAL, LDADDL32-bit, no memory orderingARMv8.1
10000000011111STADD, STADDL32-bit, no memory orderingARMv8.1
100000001!= 11111LDCLR, LDCLRA, LDCLRAL, LDCLRL32-bit, no memory orderingARMv8.1
10000000111111STCLR, STCLRL32-bit, no memory orderingARMv8.1
100000010!= 11111LDEOR, LDEORA, LDEORAL, LDEORL32-bit, no memory orderingARMv8.1
10000001011111STEOR, STEORL32-bit, no memory orderingARMv8.1
100000011!= 11111LDSET, LDSETA, LDSETAL, LDSETL32-bit, no memory orderingARMv8.1
10000001111111STSET, STSETL32-bit, no memory orderingARMv8.1
100000100!= 11111LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL32-bit, no memory orderingARMv8.1
10000010011111STSMAX, STSMAXL32-bit, no memory orderingARMv8.1
100000101!= 11111LDSMIN, LDSMINA, LDSMINAL, LDSMINL32-bit, no memory orderingARMv8.1
10000010111111STSMIN, STSMINL32-bit, no memory orderingARMv8.1
100000110!= 11111LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL32-bit, no memory orderingARMv8.1
10000011011111STUMAX, STUMAXL32-bit, no memory orderingARMv8.1
100000111!= 11111LDUMIN, LDUMINA, LDUMINAL, LDUMINL32-bit, no memory orderingARMv8.1
10000011111111STUMIN, STUMINL32-bit, no memory orderingARMv8.1
100001000SWP, SWPA, SWPAL, SWPL32-bit, no memory orderingARMv8.1
100010000!= 11111LDADD, LDADDA, LDADDAL, LDADDL32-bit, releaseARMv8.1
10001000011111STADD, STADDL32-bit, releaseARMv8.1
100010001!= 11111LDCLR, LDCLRA, LDCLRAL, LDCLRL32-bit, releaseARMv8.1
10001000111111STCLR, STCLRL32-bit, releaseARMv8.1
100010010!= 11111LDEOR, LDEORA, LDEORAL, LDEORL32-bit, releaseARMv8.1
10001001011111STEOR, STEORL32-bit, releaseARMv8.1
100010011!= 11111LDSET, LDSETA, LDSETAL, LDSETL32-bit, releaseARMv8.1
10001001111111STSET, STSETL32-bit, releaseARMv8.1
100010100!= 11111LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL32-bit, releaseARMv8.1
10001010011111STSMAX, STSMAXL32-bit, releaseARMv8.1
100010101!= 11111LDSMIN, LDSMINA, LDSMINAL, LDSMINL32-bit, releaseARMv8.1
10001010111111STSMIN, STSMINL32-bit, releaseARMv8.1
100010110!= 11111LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL32-bit, releaseARMv8.1
10001011011111STUMAX, STUMAXL32-bit, releaseARMv8.1
100010111!= 11111LDUMIN, LDUMINA, LDUMINAL, LDUMINL32-bit, releaseARMv8.1
10001011111111STUMIN, STUMINL32-bit, releaseARMv8.1
100011000SWP, SWPA, SWPAL, SWPL32-bit, releaseARMv8.1
100100000LDADD, LDADDA, LDADDAL, LDADDL32-bit, acquireARMv8.1
100100001LDCLR, LDCLRA, LDCLRAL, LDCLRL32-bit, acquireARMv8.1
100100010LDEOR, LDEORA, LDEORAL, LDEORL32-bit, acquireARMv8.1
100100011LDSET, LDSETA, LDSETAL, LDSETL32-bit, acquireARMv8.1
100100100LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL32-bit, acquireARMv8.1
100100101LDSMIN, LDSMINA, LDSMINAL, LDSMINL32-bit, acquireARMv8.1
100100110LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL32-bit, acquireARMv8.1
100100111LDUMIN, LDUMINA, LDUMINAL, LDUMINL32-bit, acquireARMv8.1
100101000SWP, SWPA, SWPAL, SWPL32-bit, acquireARMv8.1
100110000LDADD, LDADDA, LDADDAL, LDADDL32-bit, acquire and releaseARMv8.1
100110001LDCLR, LDCLRA, LDCLRAL, LDCLRL32-bit, acquire and releaseARMv8.1
100110010LDEOR, LDEORA, LDEORAL, LDEORL32-bit, acquire and releaseARMv8.1
100110011LDSET, LDSETA, LDSETAL, LDSETL32-bit, acquire and releaseARMv8.1
100110100LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL32-bit, acquire and releaseARMv8.1
100110101LDSMIN, LDSMINA, LDSMINAL, LDSMINL32-bit, acquire and releaseARMv8.1
100110110LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL32-bit, acquire and releaseARMv8.1
100110111LDUMIN, LDUMINA, LDUMINAL, LDUMINL32-bit, acquire and releaseARMv8.1
100111000SWP, SWPA, SWPAL, SWPL32-bit, acquire and releaseARMv8.1
110000000!= 11111LDADD, LDADDA, LDADDAL, LDADDL64-bit, no memory orderingARMv8.1
11000000011111STADD, STADDL64-bit, no memory orderingARMv8.1
110000001!= 11111LDCLR, LDCLRA, LDCLRAL, LDCLRL64-bit, no memory orderingARMv8.1
11000000111111STCLR, STCLRL64-bit, no memory orderingARMv8.1
110000010!= 11111LDEOR, LDEORA, LDEORAL, LDEORL64-bit, no memory orderingARMv8.1
11000001011111STEOR, STEORL64-bit, no memory orderingARMv8.1
110000011!= 11111LDSET, LDSETA, LDSETAL, LDSETL64-bit, no memory orderingARMv8.1
11000001111111STSET, STSETL64-bit, no memory orderingARMv8.1
110000100!= 11111LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL64-bit, no memory orderingARMv8.1
11000010011111STSMAX, STSMAXL64-bit, no memory orderingARMv8.1
110000101!= 11111LDSMIN, LDSMINA, LDSMINAL, LDSMINL64-bit, no memory orderingARMv8.1
11000010111111STSMIN, STSMINL64-bit, no memory orderingARMv8.1
110000110!= 11111LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL64-bit, no memory orderingARMv8.1
11000011011111STUMAX, STUMAXL64-bit, no memory orderingARMv8.1
110000111!= 11111LDUMIN, LDUMINA, LDUMINAL, LDUMINL64-bit, no memory orderingARMv8.1
11000011111111STUMIN, STUMINL64-bit, no memory orderingARMv8.1
110001000SWP, SWPA, SWPAL, SWPL64-bit, no memory orderingARMv8.1
110010000!= 11111LDADD, LDADDA, LDADDAL, LDADDL64-bit, releaseARMv8.1
11001000011111STADD, STADDL64-bit, releaseARMv8.1
110010001!= 11111LDCLR, LDCLRA, LDCLRAL, LDCLRL64-bit, releaseARMv8.1
11001000111111STCLR, STCLRL64-bit, releaseARMv8.1
110010010!= 11111LDEOR, LDEORA, LDEORAL, LDEORL64-bit, releaseARMv8.1
11001001011111STEOR, STEORL64-bit, releaseARMv8.1
110010011!= 11111LDSET, LDSETA, LDSETAL, LDSETL64-bit, releaseARMv8.1
11001001111111STSET, STSETL64-bit, releaseARMv8.1
110010100!= 11111LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL64-bit, releaseARMv8.1
11001010011111STSMAX, STSMAXL64-bit, releaseARMv8.1
110010101!= 11111LDSMIN, LDSMINA, LDSMINAL, LDSMINL64-bit, releaseARMv8.1
11001010111111STSMIN, STSMINL64-bit, releaseARMv8.1
110010110!= 11111LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL64-bit, releaseARMv8.1
11001011011111STUMAX, STUMAXL64-bit, releaseARMv8.1
110010111!= 11111LDUMIN, LDUMINA, LDUMINAL, LDUMINL64-bit, releaseARMv8.1
11001011111111STUMIN, STUMINL64-bit, releaseARMv8.1
110011000SWP, SWPA, SWPAL, SWPL64-bit, releaseARMv8.1
110100000LDADD, LDADDA, LDADDAL, LDADDL64-bit, acquireARMv8.1
110100001LDCLR, LDCLRA, LDCLRAL, LDCLRL64-bit, acquireARMv8.1
110100010LDEOR, LDEORA, LDEORAL, LDEORL64-bit, acquireARMv8.1
110100011LDSET, LDSETA, LDSETAL, LDSETL64-bit, acquireARMv8.1
110100100LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL64-bit, acquireARMv8.1
110100101LDSMIN, LDSMINA, LDSMINAL, LDSMINL64-bit, acquireARMv8.1
110100110LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL64-bit, acquireARMv8.1
110100111LDUMIN, LDUMINA, LDUMINAL, LDUMINL64-bit, acquireARMv8.1
110101000SWP, SWPA, SWPAL, SWPL64-bit, acquireARMv8.1
110110000LDADD, LDADDA, LDADDAL, LDADDL64-bit, acquire and releaseARMv8.1
110110001LDCLR, LDCLRA, LDCLRAL, LDCLRL64-bit, acquire and releaseARMv8.1
110110010LDEOR, LDEORA, LDEORAL, LDEORL64-bit, acquire and releaseARMv8.1
110110011LDSET, LDSETA, LDSETAL, LDSETL64-bit, acquire and releaseARMv8.1
110110100LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL64-bit, acquire and releaseARMv8.1
110110101LDSMIN, LDSMINA, LDSMINAL, LDSMINL64-bit, acquire and releaseARMv8.1
110110110LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL64-bit, acquire and releaseARMv8.1
110110111LDUMIN, LDUMINA, LDUMINAL, LDUMINL64-bit, acquire and releaseARMv8.1
110111000SWP, SWPA, SWPAL, SWPL64-bit, acquire and releaseARMv8.1

Load/store register (register offset)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
size111V00opc1RmoptionS10RnRt
Decode fields Instruction Details
sizeVopcoption
x0xUNALLOCATED
x111xUNALLOCATED
00000!= 011STRB (register)extended register
00000011STRB (register)shifted register
00001!= 011LDRB (register)extended register
00001011LDRB (register)shifted register
00010!= 011LDRSB (register)64-bit with extended register offset
00010011LDRSB (register)64-bit with shifted register offset
00011!= 011LDRSB (register)32-bit with extended register offset
00011011LDRSB (register)32-bit with shifted register offset
00100!= 011STR (register, SIMD&FP)
00100011STR (register, SIMD&FP)
00101!= 011LDR (register, SIMD&FP)
00101011LDR (register, SIMD&FP)
00110STR (register, SIMD&FP)
00111LDR (register, SIMD&FP)
01000STRH (register)
01001LDRH (register)
01010LDRSH (register)64-bit
01011LDRSH (register)32-bit
01100STR (register, SIMD&FP)
01101LDR (register, SIMD&FP)
1x011UNALLOCATED
1x11xUNALLOCATED
10000STR (register)32-bit
10001LDR (register)32-bit
10010LDRSW (register)
10100STR (register, SIMD&FP)
10101LDR (register, SIMD&FP)
11000STR (register)64-bit
11001LDR (register)64-bit
11010PRFM (register)
11100STR (register, SIMD&FP)
11101LDR (register, SIMD&FP)

Load/store register (unsigned immediate)

These instructions are under Loads and Stores.

313029282726252423222120191817161514131211109876543210
size111V01opcimm12RnRt
Decode fields Instruction Details
sizeVopc
x111xUNALLOCATED
00000STRB (immediate)
00001LDRB (immediate)
00010LDRSB (immediate)64-bit
00011LDRSB (immediate)32-bit
00100STR (immediate, SIMD&FP)8-bit
00101LDR (immediate, SIMD&FP)8-bit
00110STR (immediate, SIMD&FP)128-bit
00111LDR (immediate, SIMD&FP)128-bit
01000STRH (immediate)
01001LDRH (immediate)
01010LDRSH (immediate)64-bit
01011LDRSH (immediate)32-bit
01100STR (immediate, SIMD&FP)16-bit
01101LDR (immediate, SIMD&FP)16-bit
1x011UNALLOCATED
1x11xUNALLOCATED
10000STR (immediate)32-bit
10001LDR (immediate)32-bit
10010LDRSW (immediate)
10100STR (immediate, SIMD&FP)32-bit
10101LDR (immediate, SIMD&FP)32-bit
11000STR (immediate)64-bit
11001LDR (immediate)64-bit
11010PRFM (immediate)
11100STR (immediate, SIMD&FP)64-bit
11101LDR (immediate, SIMD&FP)64-bit

Data Processing -- Register

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
op0op1101op2op3
Decode fields Instruction details
op0op1op2op3
0 1 0110 Data-processing (2 source)
1 1 0110 Data-processing (1 source)
0 0xxx Logical (shifted register)
0 1xx0 Add/subtract (shifted register)
0 1xx1 Add/subtract (extended register)
1 0000 Add/subtract (with carry)
1 0010 0 Conditional compare (register)
1 0010 1 Conditional compare (immediate)
1 0100 Conditional select
1 0xx1 UNALLOCATED
1 1xxx Data-processing (3 source)

Data-processing (2 source)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sf0S11010110RmopcodeRnRd
Decode fields Instruction Details
sfSopcode
00000xUNALLOCATED
011xxxUNALLOCATED
1xxxxxUNALLOCATED
00001xxUNALLOCATED
00011xxUNALLOCATED
1UNALLOCATED
00000010UDIV32-bit
00000011SDIV32-bit
00001000LSLV32-bit
00001001LSRV32-bit
00001010ASRV32-bit
00001011RORV32-bit
00010x11UNALLOCATED
00010000CRC32B, CRC32H, CRC32W, CRC32XCRC32B
00010001CRC32B, CRC32H, CRC32W, CRC32XCRC32H
00010010CRC32B, CRC32H, CRC32W, CRC32XCRC32W
00010100CRC32CB, CRC32CH, CRC32CW, CRC32CXCRC32CB
00010101CRC32CB, CRC32CH, CRC32CW, CRC32CXCRC32CH
00010110CRC32CB, CRC32CH, CRC32CW, CRC32CXCRC32CW
10000010UDIV64-bit
10000011SDIV64-bit
10001000LSLV64-bit
10001001LSRV64-bit
10001010ASRV64-bit
10001011RORV64-bit
10010xx0UNALLOCATED
10010x0xUNALLOCATED
10010011CRC32B, CRC32H, CRC32W, CRC32XCRC32X
10010111CRC32CB, CRC32CH, CRC32CW, CRC32CXCRC32CX

Data-processing (1 source)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sf1S11010110opcode2opcodeRnRd
Decode fields Instruction Details
sfSopcode2opcode
xx1xxxUNALLOCATED
x1xxxxUNALLOCATED
1xxxxxUNALLOCATED
xxxx1UNALLOCATED
xxx1xUNALLOCATED
xx1xxUNALLOCATED
x1xxxUNALLOCATED
1xxxxUNALLOCATED
00000000011xUNALLOCATED
1UNALLOCATED
0000000000000RBIT32-bit
0000000000001REV1632-bit
0000000000010REV32-bit
0000000000011UNALLOCATED
0000000000100CLZ32-bit
0000000000101CLS32-bit
1000000000000RBIT64-bit
1000000000001REV1664-bit
1000000000010REV32
1000000000011REV64-bit
1000000000100CLZ64-bit
1000000000101CLS64-bit

Logical (shifted register)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sfopc01010shiftNRmimm6RnRd
Decode fields Instruction Details
sfopcNimm6
01xxxxxUNALLOCATED
0000AND (shifted register)32-bit
0001BIC (shifted register)32-bit
0010ORR (shifted register)32-bit
0011ORN (shifted register)32-bit
0100EOR (shifted register)32-bit
0101EON (shifted register)32-bit
0110ANDS (shifted register)32-bit
0111BICS (shifted register)32-bit
1000AND (shifted register)64-bit
1001BIC (shifted register)64-bit
1010ORR (shifted register)64-bit
1011ORN (shifted register)64-bit
1100EOR (shifted register)64-bit
1101EON (shifted register)64-bit
1110ANDS (shifted register)64-bit
1111BICS (shifted register)64-bit

Add/subtract (shifted register)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sfopS01011shift0Rmimm6RnRd
Decode fields Instruction Details
sfopSshiftimm6
11UNALLOCATED
01xxxxxUNALLOCATED
000ADD (shifted register)32-bit
001ADDS (shifted register)32-bit
010SUB (shifted register)32-bit
011SUBS (shifted register)32-bit
100ADD (shifted register)64-bit
101ADDS (shifted register)64-bit
110SUB (shifted register)64-bit
111SUBS (shifted register)64-bit

Add/subtract (extended register)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sfopS01011opt1Rmoptionimm3RnRd
Decode fields Instruction Details
sfopSoptimm3
1x1UNALLOCATED
11xUNALLOCATED
x1UNALLOCATED
1xUNALLOCATED
00000ADD (extended register)32-bit
00100ADDS (extended register)32-bit
01000SUB (extended register)32-bit
01100SUBS (extended register)32-bit
10000ADD (extended register)64-bit
10100ADDS (extended register)64-bit
11000SUB (extended register)64-bit
11100SUBS (extended register)64-bit

Add/subtract (with carry)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sfopS11010000Rmopcode2RnRd
Decode fields Instruction Details
sfopSopcode2
xxxxx1UNALLOCATED
xxxx1xUNALLOCATED
xxx1xxUNALLOCATED
xx1xxxUNALLOCATED
x1xxxxUNALLOCATED
1xxxxxUNALLOCATED
000000000ADC32-bit
001000000ADCS32-bit
010000000SBC32-bit
011000000SBCS32-bit
100000000ADC64-bit
101000000ADCS64-bit
110000000SBC64-bit
111000000SBCS64-bit

Conditional compare (register)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sfopS11010010Rmcond0o2Rno3nzcv
Decode fields Instruction Details
sfopSo2o3
1UNALLOCATED
1UNALLOCATED
0UNALLOCATED
00100CCMN (register)32-bit
01100CCMP (register)32-bit
10100CCMN (register)64-bit
11100CCMP (register)64-bit

Conditional compare (immediate)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sfopS11010010imm5cond1o2Rno3nzcv
Decode fields Instruction Details
sfopSo2o3
1UNALLOCATED
1UNALLOCATED
0UNALLOCATED
00100CCMN (immediate)32-bit
01100CCMP (immediate)32-bit
10100CCMN (immediate)64-bit
11100CCMP (immediate)64-bit

Conditional select

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sfopS11010100Rmcondop2RnRd
Decode fields Instruction Details
sfopSop2
1xUNALLOCATED
1UNALLOCATED
00000CSEL32-bit
00001CSINC32-bit
01000CSINV32-bit
01001CSNEG32-bit
10000CSEL64-bit
10001CSINC64-bit
11000CSINV64-bit
11001CSNEG64-bit

Data-processing (3 source)

These instructions are under Data Processing -- Register.

313029282726252423222120191817161514131211109876543210
sfop5411011op31Rmo0RaRnRd
Decode fields Instruction Details
sfop54op31o0
000101UNALLOCATED
00011UNALLOCATED
00100UNALLOCATED
001101UNALLOCATED
00111UNALLOCATED
01UNALLOCATED
1xUNALLOCATED
0000000MADD32-bit
0000001MSUB32-bit
0000010UNALLOCATED
0000011UNALLOCATED
0000100UNALLOCATED
0001010UNALLOCATED
0001011UNALLOCATED
0001100UNALLOCATED
1000000MADD64-bit
1000001MSUB64-bit
1000010SMADDL
1000011SMSUBL
1000100SMULH
1001010UMADDL
1001011UMSUBL
1001100UMULH

Data Processing -- Scalar Floating-Point and Advanced SIMD

These instructions are under the top-level.

313029282726252423222120191817161514131211109876543210
op0111op1op2op3op4
Decode fields Instruction details
op0op1op2op3op4
0000 0x x101 00 xxxx10 UNALLOCATED
0010 0x x101 00 xxxx10 UNALLOCATED
0100 0x x101 00 xxxx10 Cryptographic AES
0101 0x x0xx 0xxx00 Cryptographic three-register SHA
0101 0x x0xx 0xxx10 UNALLOCATED
0101 0x x101 00 xxxx10 Cryptographic two-register SHA
0110 0x x101 00 xxxx10 UNALLOCATED
0111 0x x0xx 0xxxx0 UNALLOCATED
0111 0x x101 00 xxxx10 UNALLOCATED
01x1 00 00xx 0xxxx1 Advanced SIMD scalar copy
01x1 01 00xx 0xxxx1 UNALLOCATED
01x1 0x 0111 00 xxxx10 UNALLOCATED
01x1 0x 10xx 00xxx1 Advanced SIMD scalar three same FP16
01x1 0x 10xx 01xxx1 UNALLOCATED
01x1 0x 1111 00 xxxx10 Advanced SIMD scalar two-register miscellaneous FP16
01x1 0x x0xx 1xxxx0 UNALLOCATED
01x1 0x x0xx 1xxxx1 Advanced SIMD scalar three same extra
01x1 0x x100 00 xxxx10 Advanced SIMD scalar two-register miscellaneous
01x1 0x x110 00 xxxx10 Advanced SIMD scalar pairwise
01x1 0x x1xx 1x xxxx10 UNALLOCATED
01x1 0x x1xx x1 xxxx10 UNALLOCATED
01x1 0x x1xx xxxx00 Advanced SIMD scalar three different
01x1 0x x1xx xxxxx1 Advanced SIMD scalar three same
01x1 10 xxxxx1 Advanced SIMD scalar shift by immediate
01x1 11 xxxxx1 UNALLOCATED
01x1 1x xxxxx0 Advanced SIMD scalar x indexed element
0x00 0x x0xx 0xxx00 Advanced SIMD table lookup
0x00 0x x0xx 0xxx10 Advanced SIMD permute
0x10 0x x0xx 0xxxx0 Advanced SIMD extract
0xx0 00 00xx 0xxxx1 Advanced SIMD copy
0xx0 01 00xx 0xxxx1 UNALLOCATED
0xx0 0x 0111 00 xxxx10 UNALLOCATED
0xx0 0x 10xx 00xxx1 Advanced SIMD three same (FP16)
0xx0 0x 10xx 01xxx1 UNALLOCATED
0xx0 0x 1111 00 xxxx10 Advanced SIMD two-register miscellaneous (FP16)
0xx0 0x x0xx 1xxxx0 UNALLOCATED
0xx0 0x x0xx 1xxxx1 Advanced SIMD three same extra
0xx0 0x x100 00 xxxx10 Advanced SIMD two-register miscellaneous
0xx0 0x x110 00 xxxx10 Advanced SIMD across lanes
0xx0 0x x1xx 1x xxxx10 UNALLOCATED
0xx0 0x x1xx x1 xxxx10 UNALLOCATED
0xx0 0x x1xx xxxx00 Advanced SIMD three different
0xx0 0x x1xx xxxxx1 Advanced SIMD three same
0xx0 10 0000 xxxxx1 Advanced SIMD modified immediate
0xx0 10 != 0000 xxxxx1 Advanced SIMD shift by immediate
0xx0 11 xxxxx1 UNALLOCATED
0xx0 1x xxxxx0 Advanced SIMD vector x indexed element
11x1 UNALLOCATED
1xx0 UNALLOCATED
x0x1 0x x0xx Conversion between floating-point and fixed-point
x0x1 0x x1xx 000000 Conversion between floating-point and integer
x0x1 0x x1xx 100000 UNALLOCATED
x0x1 0x x1xx x10000 Floating-point data-processing (1 source)
x0x1 0x x1xx xx1000 Floating-point compare
x0x1 0x x1xx xxx100 Floating-point immediate
x0x1 0x x1xx xxxx01 Floating-point conditional compare
x0x1 0x x1xx xxxx10 Floating-point data-processing (2 source)
x0x1 0x x1xx xxxx11 Floating-point conditional select
x0x1 1x Floating-point data-processing (3 source)

Cryptographic AES

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01001110size10100opcode10RnRd
Decode fields Instruction Details
sizeopcode
x1xxxUNALLOCATED
000xxUNALLOCATED
1xxxxUNALLOCATED
x1UNALLOCATED
0000100AESE
0000101AESD
0000110AESMC
0000111AESIMC
1xUNALLOCATED

Cryptographic three-register SHA

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01011110size0Rm0opcode00RnRd
Decode fields Instruction Details
sizeopcode
111UNALLOCATED
x1UNALLOCATED
00000SHA1C
00001SHA1P
00010SHA1M
00011SHA1SU0
00100SHA256H
00101SHA256H2
00110SHA256SU1
1xUNALLOCATED

Cryptographic two-register SHA

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01011110size10100opcode10RnRd
Decode fields Instruction Details
sizeopcode
xx1xxUNALLOCATED
x1xxxUNALLOCATED
1xxxxUNALLOCATED
x1UNALLOCATED
0000000SHA1H
0000001SHA1SU1
0000010SHA256SU0
0000011UNALLOCATED
1xUNALLOCATED

Advanced SIMD scalar copy

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01op11110000imm50imm41RnRd
Decode fields Instruction Details
opimm5imm4
0xxx1UNALLOCATED
0xx1xUNALLOCATED
0x1xxUNALLOCATED
00000DUP (element)
01xxxUNALLOCATED
0x00000000UNALLOCATED
1UNALLOCATED

Advanced SIMD scalar three same FP16

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U11110a10Rm00opcode1RnRd
Decode fields Instruction Details Architecture Version
Uaopcode
110UNALLOCATED-
1011UNALLOCATED-
00011FMULXARMv8.2
00100FCMEQ (register)ARMv8.2
00101UNALLOCATED-
00111FRECPSARMv8.2
01100UNALLOCATED-
01101UNALLOCATED-
01111FRSQRTSARMv8.2
10011UNALLOCATED-
10100FCMGE (register)ARMv8.2
10101FACGEARMv8.2
10111UNALLOCATED-
11010FABDARMv8.2
11100FCMGT (register)ARMv8.2
11101FACGTARMv8.2
11111UNALLOCATED-

Advanced SIMD scalar two-register miscellaneous FP16

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U11110a111100opcode10RnRd
Decode fields Instruction Details Architecture Version
Uaopcode
00xxxUNALLOCATED-
010xxUNALLOCATED-
10xxxUNALLOCATED-
1100xUNALLOCATED-
11110UNALLOCATED-
0011xxUNALLOCATED-
011111UNALLOCATED-
101111UNALLOCATED-
111100UNALLOCATED-
0011010FCVTNS (vector)ARMv8.2
0011011FCVTMS (vector)ARMv8.2
0011100FCVTAS (vector)ARMv8.2
0011101SCVTF (vector, integer)ARMv8.2
0101100FCMGT (zero)ARMv8.2
0101101FCMEQ (zero)ARMv8.2
0101110FCMLT (zero)ARMv8.2
0111010FCVTPS (vector)ARMv8.2
0111011FCVTZS (vector, integer)ARMv8.2
0111101FRECPEARMv8.2
0111111FRECPXARMv8.2
1011010FCVTNU (vector)ARMv8.2
1011011FCVTMU (vector)ARMv8.2
1011100FCVTAU (vector)ARMv8.2
1011101UCVTF (vector, integer)ARMv8.2
1101100FCMGE (zero)ARMv8.2
1101101FCMLE (zero)ARMv8.2
1101110UNALLOCATED-
1111010FCVTPU (vector)ARMv8.2
1111011FCVTZU (vector, integer)ARMv8.2
1111101FRSQRTEARMv8.2
1111111UNALLOCATED-

Advanced SIMD scalar three same extra

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U11110size0Rm1opcode1RnRd
Decode fields Instruction Details Architecture Version
Uopcode
001xUNALLOCATED-
01xxUNALLOCATED-
1xxxUNALLOCATED-
00000UNALLOCATED-
00001UNALLOCATED-
10000SQRDMLAH (vector)ARMv8.1
10001SQRDMLSH (vector)ARMv8.1

Advanced SIMD scalar two-register miscellaneous

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U11110size10000opcode10RnRd
Decode fields Instruction Details
Usizeopcode
0000xUNALLOCATED
00010UNALLOCATED
0010xUNALLOCATED
00110UNALLOCATED
01111UNALLOCATED
1000xUNALLOCATED
10011UNALLOCATED
10101UNALLOCATED
10111UNALLOCATED
1100xUNALLOCATED
11110UNALLOCATED
0x011xxUNALLOCATED
0x11111UNALLOCATED
1x10110UNALLOCATED
1x11100UNALLOCATED
000011SUQADD
000111SQABS
001000CMGT (zero)
001001CMEQ (zero)
001010CMLT (zero)
001011ABS
010010UNALLOCATED
010100SQXTN, SQXTN2
00x10110UNALLOCATED
00x11010FCVTNS (vector)
00x11011FCVTMS (vector)
00x11100FCVTAS (vector)
00x11101SCVTF (vector, integer)
01x01100FCMGT (zero)
01x01101FCMEQ (zero)
01x01110FCMLT (zero)
01x11010FCVTPS (vector)
01x11011FCVTZS (vector, integer)
01x11101FRECPE
01x11111FRECPX
100011USQADD
100111SQNEG
101000CMGE (zero)
101001CMLE (zero)
101010UNALLOCATED
101011NEG (vector)
110010SQXTUN, SQXTUN2
110100UQXTN, UQXTN2
10x10110FCVTXN, FCVTXN2
10x11010FCVTNU (vector)
10x11011FCVTMU (vector)
10x11100FCVTAU (vector)
10x11101UCVTF (vector, integer)
11x01100FCMGE (zero)
11x01101FCMLE (zero)
11x01110UNALLOCATED
11x11010FCVTPU (vector)
11x11011FCVTZU (vector, integer)
11x11101FRSQRTE
11x11111UNALLOCATED

Advanced SIMD scalar pairwise

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U11110size11000opcode10RnRd
Decode fields Instruction Details Architecture Version
Usizeopcode
00xxxUNALLOCATED-
010xxUNALLOCATED-
01110UNALLOCATED-
10xxxUNALLOCATED-
1100xUNALLOCATED-
11010UNALLOCATED-
111xxUNALLOCATED-
1x01101UNALLOCATED-
011011ADDP (scalar)-
00001100FMAXNMP (scalar)half-precisionARMv8.2
00001101FADDP (scalar)half-precisionARMv8.2
00001111FMAXP (scalar)half-precisionARMv8.2
00101100UNALLOCATED-
00101101UNALLOCATED-
00101111UNALLOCATED-
01001100FMINNMP (scalar)half-precisionARMv8.2
01001111FMINP (scalar)half-precisionARMv8.2
01101100UNALLOCATED-
01101111UNALLOCATED-
111011UNALLOCATED-
10x01100FMAXNMP (scalar)single-precision and double-precision-
10x01101FADDP (scalar)single-precision and double-precision-
10x01111FMAXP (scalar)single-precision and double-precision-
11x01100FMINNMP (scalar)single-precision and double-precision-
11x01111FMINP (scalar)single-precision and double-precision-

Advanced SIMD scalar three different

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U11110size1Rmopcode00RnRd
Decode fields Instruction Details
Uopcode
00xxUNALLOCATED
01xxUNALLOCATED
1000UNALLOCATED
1010UNALLOCATED
1100UNALLOCATED
111xUNALLOCATED
01001SQDMLAL, SQDMLAL2 (vector)
01011SQDMLSL, SQDMLSL2 (vector)
01101SQDMULL, SQDMULL2 (vector)
11001UNALLOCATED
11011UNALLOCATED
11101UNALLOCATED

Advanced SIMD scalar three same

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U11110size1Rmopcode1RnRd
Decode fields Instruction Details
Usizeopcode
00000UNALLOCATED
0001xUNALLOCATED
00100UNALLOCATED
011xxUNALLOCATED
1001xUNALLOCATED
1x11011UNALLOCATED
000001SQADD
000101SQSUB
000110CMGT (register)
000111CMGE (register)
001000SSHL
001001SQSHL (register)
001010SRSHL
001011SQRSHL
010000ADD (vector)
010001CMTST
010100UNALLOCATED
010101UNALLOCATED
010110SQDMULH (vector)
010111UNALLOCATED
00x11000UNALLOCATED
00x11001UNALLOCATED
00x11010UNALLOCATED
00x11011FMULX
00x11100FCMEQ (register)
00x11101UNALLOCATED
00x11110UNALLOCATED
00x11111FRECPS
01x11000UNALLOCATED
01x11001UNALLOCATED
01x11010UNALLOCATED
01x11100UNALLOCATED
01x11101UNALLOCATED
01x11110UNALLOCATED
01x11111FRSQRTS
100001UQADD
100101UQSUB
100110CMHI (register)
100111CMHS (register)
101000USHL
101001UQSHL (register)
101010URSHL
101011UQRSHL
110000SUB (vector)
110001CMEQ (register)
110100UNALLOCATED
110101UNALLOCATED
110110SQRDMULH (vector)
110111UNALLOCATED
10x11000UNALLOCATED
10x11001UNALLOCATED
10x11010UNALLOCATED
10x11011UNALLOCATED
10x11100FCMGE (register)
10x11101FACGE
10x11110UNALLOCATED
10x11111UNALLOCATED
11x11000UNALLOCATED
11x11001UNALLOCATED
11x11010FABD
11x11100FCMGT (register)
11x11101FACGT
11x11110UNALLOCATED
11x11111UNALLOCATED

Advanced SIMD scalar shift by immediate

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U111110immhimmbopcode1RnRd
Decode fields Instruction Details
Uimmhopcode
!= 000000001UNALLOCATED
!= 000000011UNALLOCATED
!= 000000101UNALLOCATED
!= 000000111UNALLOCATED
!= 000001001UNALLOCATED
!= 000001011UNALLOCATED
!= 000001101UNALLOCATED
!= 000001111UNALLOCATED
!= 0000101xxUNALLOCATED
!= 0000110xxUNALLOCATED
!= 000011101UNALLOCATED
!= 000011110UNALLOCATED
0000UNALLOCATED
0!= 000000000SSHR
0!= 000000010SSRA
0!= 000000100SRSHR
0!= 000000110SRSRA
0!= 000001000UNALLOCATED
0!= 000001010SHL
0!= 000001100UNALLOCATED
0!= 000001110SQSHL (immediate)
0!= 000010000UNALLOCATED
0!= 000010001UNALLOCATED
0!= 000010010SQSHRN, SQSHRN2
0!= 000010011SQRSHRN, SQRSHRN2
0!= 000011100SCVTF (vector, fixed-point)
0!= 000011111FCVTZS (vector, fixed-point)
1!= 000000000USHR
1!= 000000010USRA
1!= 000000100URSHR
1!= 000000110URSRA
1!= 000001000SRI
1!= 000001010SLI
1!= 000001100SQSHLU
1!= 000001110UQSHL (immediate)
1!= 000010000SQSHRUN, SQSHRUN2
1!= 000010001SQRSHRUN, SQRSHRUN2
1!= 000010010UQSHRN, UQSHRN2
1!= 000010011UQRSHRN, UQRSHRN2
1!= 000011100UCVTF (vector, fixed-point)
1!= 000011111FCVTZU (vector, fixed-point)

Advanced SIMD scalar x indexed element

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
01U11111sizeLMRmopcodeH0RnRd
Decode fields Instruction Details Architecture Version
Usizeopcode
0000UNALLOCATED-
0010UNALLOCATED-
0100UNALLOCATED-
0110UNALLOCATED-
1000UNALLOCATED-
1010UNALLOCATED-
1110UNALLOCATED-
010001UNALLOCATED-
010101UNALLOCATED-
011001UNALLOCATED-
00011SQDMLAL, SQDMLAL2 (by element)-
00111SQDMLSL, SQDMLSL2 (by element)-
01011SQDMULL, SQDMULL2 (by element)-
01100SQDMULH (by element)-
01101SQRDMULH (by element)-
01111UNALLOCATED-
0000001FMLA (by element)half-precisionARMv8.2
0000101FMLS (by element)half-precisionARMv8.2
0001001FMUL (by element)half-precisionARMv8.2
01x0001FMLA (by element)single-precision and double-precision-
01x0101FMLS (by element)single-precision and double-precision-
01x1001FMUL (by element)single-precision and double-precision-
10011UNALLOCATED-
10111UNALLOCATED-
11011UNALLOCATED-
11100UNALLOCATED-
11101SQRDMLAH (by element)ARMv8.1
11111SQRDMLSH (by element)ARMv8.1
1000001UNALLOCATED-
1000101UNALLOCATED-
1001001FMULX (by element)half-precisionARMv8.2
11x0001UNALLOCATED-
11x0101UNALLOCATED-
11x1001FMULX (by element)single-precision and double-precision-

Advanced SIMD table lookup

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0Q001110op20Rm0lenop00RnRd
Decode fields Instruction Details
op2lenop
x1UNALLOCATED
00000TBLsingle register table
00001TBXsingle register table
00010TBLtwo register table
00011TBXtwo register table
00100TBLthree register table
00101TBXthree register table
00110TBLfour register table
00111TBXfour register table
1xUNALLOCATED

Advanced SIMD permute

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0Q001110size0Rm0opcode10RnRd
Decode fields Instruction Details
opcode
000UNALLOCATED
001UZP1
010TRN1
011ZIP1
100UNALLOCATED
101UZP2
110TRN2
111ZIP2

Advanced SIMD extract

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0Q101110op20Rm0imm40RnRd
Decode fields Instruction Details
op2
x1UNALLOCATED
00EXT
1xUNALLOCATED

Advanced SIMD copy

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0Qop01110000imm50imm41RnRd
Decode fields Instruction Details
Qopimm5imm4
x0000UNALLOCATED
00000DUP (element)
00001DUP (general)
00010UNALLOCATED
00100UNALLOCATED
00110UNALLOCATED
01xxxUNALLOCATED
000011UNALLOCATED
000101SMOV
000111UMOV
01UNALLOCATED
100011INS (general)
100101SMOV
10x10000111UMOV
11INS (element)

Advanced SIMD three same (FP16)

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU01110a10Rm00opcode1RnRd
Decode fields Instruction Details Architecture Version
Uaopcode
00000FMAXNM (vector)ARMv8.2
00001FMLA (vector)ARMv8.2
00010FADD (vector)ARMv8.2
00011FMULXARMv8.2
00100FCMEQ (register)ARMv8.2
00101UNALLOCATED-
00110FMAX (vector)ARMv8.2
00111FRECPSARMv8.2
01000FMINNM (vector)ARMv8.2
01001FMLS (vector)ARMv8.2
01010FSUB (vector)ARMv8.2
01011UNALLOCATED-
01100UNALLOCATED-
01101UNALLOCATED-
01110FMIN (vector)ARMv8.2
01111FRSQRTSARMv8.2
10000FMAXNMP (vector)ARMv8.2
10001UNALLOCATED-
10010FADDP (vector)ARMv8.2
10011FMUL (vector)ARMv8.2
10100FCMGE (register)ARMv8.2
10101FACGEARMv8.2
10110FMAXP (vector)ARMv8.2
10111FDIV (vector)ARMv8.2
11000FMINNMP (vector)ARMv8.2
11001UNALLOCATED-
11010FABDARMv8.2
11011UNALLOCATED-
11100FCMGT (register)ARMv8.2
11101FACGTARMv8.2
11110FMINP (vector)ARMv8.2
11111UNALLOCATED-

Advanced SIMD two-register miscellaneous (FP16)

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU01110a111100opcode10RnRd
Decode fields Instruction Details Architecture Version
Uaopcode
00xxxUNALLOCATED-
010xxUNALLOCATED-
10xxxUNALLOCATED-
11110UNALLOCATED-
0011xxUNALLOCATED-
011111UNALLOCATED-
111100UNALLOCATED-
0011000FRINTN (vector)ARMv8.2
0011001FRINTM (vector)ARMv8.2
0011010FCVTNS (vector)ARMv8.2
0011011FCVTMS (vector)ARMv8.2
0011100FCVTAS (vector)ARMv8.2
0011101SCVTF (vector, integer)ARMv8.2
0101100FCMGT (zero)ARMv8.2
0101101FCMEQ (zero)ARMv8.2
0101110FCMLT (zero)ARMv8.2
0101111FABS (vector)ARMv8.2
0111000FRINTP (vector)ARMv8.2
0111001FRINTZ (vector)ARMv8.2
0111010FCVTPS (vector)ARMv8.2
0111011FCVTZS (vector, integer)ARMv8.2
0111101FRECPEARMv8.2
0111111UNALLOCATED-
1011000FRINTA (vector)ARMv8.2
1011001FRINTX (vector)ARMv8.2
1011010FCVTNU (vector)ARMv8.2
1011011FCVTMU (vector)ARMv8.2
1011100FCVTAU (vector)ARMv8.2
1011101UCVTF (vector, integer)ARMv8.2
1101100FCMGE (zero)ARMv8.2
1101101FCMLE (zero)ARMv8.2
1101110UNALLOCATED-
1101111FNEG (vector)ARMv8.2
1111000UNALLOCATED-
1111001FRINTI (vector)ARMv8.2
1111010FCVTPU (vector)ARMv8.2
1111011FCVTZU (vector, integer)ARMv8.2
1111101FRSQRTEARMv8.2
1111111FSQRT (vector)ARMv8.2

Advanced SIMD three same extra

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU01110size0Rm1opcode1RnRd
Decode fields Instruction Details Architecture Version
Uopcode
001xUNALLOCATED-
01xxUNALLOCATED-
00000UNALLOCATED-
00001UNALLOCATED-
01xxxUNALLOCATED-
10000SQRDMLAH (vector)ARMv8.1
10001SQRDMLSH (vector)ARMv8.1
111x1UNALLOCATED-

Advanced SIMD two-register miscellaneous

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU01110size10000opcode10RnRd
Decode fields Instruction Details
Usizeopcode
1000xUNALLOCATED
10101UNALLOCATED
11110UNALLOCATED
0x011xxUNALLOCATED
0x11111UNALLOCATED
1x10110UNALLOCATED
1x10111UNALLOCATED
000000REV64
000001REV16 (vector)
000010SADDLP
000011SUQADD
000100CLS (vector)
000101CNT
000110SADALP
000111SQABS
001000CMGT (zero)
001001CMEQ (zero)
001010CMLT (zero)
001011ABS
010010XTN, XTN2
010011UNALLOCATED
010100SQXTN, SQXTN2
00x10110FCVTN, FCVTN2
00x10111FCVTL, FCVTL2
00x11000FRINTN (vector)
00x11001FRINTM (vector)
00x11010FCVTNS (vector)
00x11011FCVTMS (vector)
00x11100FCVTAS (vector)
00x11101SCVTF (vector, integer)
01x01100FCMGT (zero)
01x01101FCMEQ (zero)
01x01110FCMLT (zero)
01x01111FABS (vector)
01x11000FRINTP (vector)
01x11001FRINTZ (vector)
01x11010FCVTPS (vector)
01x11011FCVTZS (vector, integer)
01x11100URECPE
01x11101FRECPE
01x11111UNALLOCATED
100000REV32 (vector)
100001UNALLOCATED
100010UADDLP
100011USQADD
100100CLZ (vector)
100110UADALP
100111SQNEG
101000CMGE (zero)
101001CMLE (zero)
101010UNALLOCATED
101011NEG (vector)
110010SQXTUN, SQXTUN2
110011SHLL, SHLL2
110100UQXTN, UQXTN2
10x10110FCVTXN, FCVTXN2
10x10111UNALLOCATED
10x11000FRINTA (vector)
10x11001FRINTX (vector)
10x11010FCVTNU (vector)
10x11011FCVTMU (vector)
10x11100FCVTAU (vector)
10x11101UCVTF (vector, integer)
10000101NOT
10100101RBIT (vector)
11x00101UNALLOCATED
11x01100FCMGE (zero)
11x01101FCMLE (zero)
11x01110UNALLOCATED
11x01111FNEG (vector)
11x11000UNALLOCATED
11x11001FRINTI (vector)
11x11010FCVTPU (vector)
11x11011FCVTZU (vector, integer)
11x11100URSQRTE
11x11101FRSQRTE
11x11111FSQRT (vector)

Advanced SIMD across lanes

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU01110size11000opcode10RnRd
Decode fields Instruction Details Architecture Version
Usizeopcode
0000xUNALLOCATED-
00010UNALLOCATED-
001xxUNALLOCATED-
0100xUNALLOCATED-
01011UNALLOCATED-
01101UNALLOCATED-
01110UNALLOCATED-
10xxxUNALLOCATED-
1100xUNALLOCATED-
111xxUNALLOCATED-
000011SADDLV-
001010SMAXV-
011010SMINV-
011011ADDV-
00001100FMAXNMVhalf-precisionARMv8.2
00001111FMAXVhalf-precisionARMv8.2
00101100UNALLOCATED-
00101111UNALLOCATED-
01001100FMINNMVhalf-precisionARMv8.2
01001111FMINVhalf-precisionARMv8.2
01101100UNALLOCATED-
01101111UNALLOCATED-
100011UADDLV-
101010UMAXV-
111010UMINV-
111011UNALLOCATED-
10x01100FMAXNMVsingle-precision and double-precision-
10x01111FMAXVsingle-precision and double-precision-
11x01100FMINNMVsingle-precision and double-precision-
11x01111FMINVsingle-precision and double-precision-

Advanced SIMD three different

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU01110size1Rmopcode00RnRd
Decode fields Instruction Details
Uopcode
1111UNALLOCATED
00000SADDL, SADDL2
00001SADDW, SADDW2
00010SSUBL, SSUBL2
00011SSUBW, SSUBW2
00100ADDHN, ADDHN2
00101SABAL, SABAL2
00110SUBHN, SUBHN2
00111SABDL, SABDL2
01000SMLAL, SMLAL2 (vector)
01001SQDMLAL, SQDMLAL2 (vector)
01010SMLSL, SMLSL2 (vector)
01011SQDMLSL, SQDMLSL2 (vector)
01100SMULL, SMULL2 (vector)
01101SQDMULL, SQDMULL2 (vector)
01110PMULL, PMULL2
10000UADDL, UADDL2
10001UADDW, UADDW2
10010USUBL, USUBL2
10011USUBW, USUBW2
10100RADDHN, RADDHN2
10101UABAL, UABAL2
10110RSUBHN, RSUBHN2
10111UABDL, UABDL2
11000UMLAL, UMLAL2 (vector)
11001UNALLOCATED
11010UMLSL, UMLSL2 (vector)
11011UNALLOCATED
11100UMULL, UMULL2 (vector)
11101UNALLOCATED
11110UNALLOCATED

Advanced SIMD three same

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU01110size1Rmopcode1RnRd
Decode fields Instruction Details
Usizeopcode
000000SHADD
000001SQADD
000010SRHADD
000100SHSUB
000101SQSUB
000110CMGT (register)
000111CMGE (register)
001000SSHL
001001SQSHL (register)
001010SRSHL
001011SQRSHL
001100SMAX
001101SMIN
001110SABD
001111SABA
010000ADD (vector)
010001CMTST
010010MLA (vector)
010011MUL (vector)
010100SMAXP
010101SMINP
010110SQDMULH (vector)
010111ADDP (vector)
00x11000FMAXNM (vector)
00x11001FMLA (vector)
00x11010FADD (vector)
00x11011FMULX
00x11100FCMEQ (register)
00x11101UNALLOCATED
00x11110FMAX (vector)
00x11111FRECPS
00000011AND (vector)
00100011BIC (vector, register)
01x11000FMINNM (vector)
01x11001FMLS (vector)
01x11010FSUB (vector)
01x11011UNALLOCATED
01x11100UNALLOCATED
01x11101UNALLOCATED
01x11110FMIN (vector)
01x11111FRSQRTS
01000011ORR (vector, register)
01100011ORN (vector)
100000UHADD
100001UQADD
100010URHADD
100100UHSUB
100101UQSUB
100110CMHI (register)
100111CMHS (register)
101000USHL
101001UQSHL (register)
101010URSHL
101011UQRSHL
101100UMAX
101101UMIN
101110UABD
101111UABA
110000SUB (vector)
110001CMEQ (register)
110010MLS (vector)
110011PMUL
110100UMAXP
110101UMINP
110110SQRDMULH (vector)
110111UNALLOCATED
10x11000FMAXNMP (vector)
10x11001UNALLOCATED
10x11010FADDP (vector)
10x11011FMUL (vector)
10x11100FCMGE (register)
10x11101FACGE
10x11110FMAXP (vector)
10x11111FDIV (vector)
10000011EOR (vector)
10100011BSL
11x11000FMINNMP (vector)
11x11001UNALLOCATED
11x11010FABD
11x11011UNALLOCATED
11x11100FCMGT (register)
11x11101FACGT
11x11110FMINP (vector)
11x11111UNALLOCATED
11000011BIT
11100011BIF

Advanced SIMD modified immediate

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0Qop0111100000abccmodeo21defghRd
Decode fields Instruction Details Architecture Version
Qopcmodeo2
00xxx1UNALLOCATED-
00xx00MOVI32-bit shifted immediate-
00xx10ORR (vector, immediate)32-bit-
010xx1UNALLOCATED-
010x00MOVI16-bit shifted immediate-
010x10ORR (vector, immediate)16-bit-
0110x0MOVI32-bit shifting ones-
0110x1UNALLOCATED-
011100MOVI8-bit-
011101UNALLOCATED-
011110FMOV (vector, immediate)single-precision-
011111FMOV (vector, immediate)half-precisionARMv8.2
11UNALLOCATED-
10xx00MVNI32-bit shifted immediate-
10xx10BIC (vector, immediate)32-bit-
110x00MVNI16-bit shifted immediate-
110x10BIC (vector, immediate)16-bit-
1110x0MVNI32-bit shifting ones-
0111100MOVI64-bit scalar-
0111110UNALLOCATED-
1111100MOVI64-bit vector-
1111110FMOV (vector, immediate)double-precision-

Advanced SIMD shift by immediate

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU011110!= 0000immbopcode1RnRd
immh

The following constraints also apply to this encoding: immh != 0000 && immh != 0000

Decode fields Instruction Details
Uopcode
00001UNALLOCATED
00011UNALLOCATED
00101UNALLOCATED
00111UNALLOCATED
01001UNALLOCATED
01011UNALLOCATED
01101UNALLOCATED
01111UNALLOCATED
10101UNALLOCATED
1011xUNALLOCATED
110xxUNALLOCATED
11101UNALLOCATED
11110UNALLOCATED
000000SSHR
000010SSRA
000100SRSHR
000110SRSRA
001000UNALLOCATED
001010SHL
001100UNALLOCATED
001110SQSHL (immediate)
010000SHRN, SHRN2
010001RSHRN, RSHRN2
010010SQSHRN, SQSHRN2
010011SQRSHRN, SQRSHRN2
010100SSHLL, SSHLL2
011100SCVTF (vector, fixed-point)
011111FCVTZS (vector, fixed-point)
100000USHR
100010USRA
100100URSHR
100110URSRA
101000SRI
101010SLI
101100SQSHLU
101110UQSHL (immediate)
110000SQSHRUN, SQSHRUN2
110001SQRSHRUN, SQRSHRUN2
110010UQSHRN, UQSHRN2
110011UQRSHRN, UQRSHRN2
110100USHLL, USHLL2
111100UCVTF (vector, fixed-point)
111111FCVTZU (vector, fixed-point)

Advanced SIMD vector x indexed element

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
0QU01111sizeLMRmopcodeH0RnRd
Decode fields Instruction Details Architecture Version
Usizeopcode
1110UNALLOCATED-
011001UNALLOCATED-
00000UNALLOCATED-
00010SMLAL, SMLAL2 (by element)-
00011SQDMLAL, SQDMLAL2 (by element)-
00100UNALLOCATED-
00110SMLSL, SMLSL2 (by element)-
00111SQDMLSL, SQDMLSL2 (by element)-
01000MUL (by element)-
01010SMULL, SMULL2 (by element)-
01011SQDMULL, SQDMULL2 (by element)-
01100SQDMULH (by element)-
01101SQRDMULH (by element)-
01111UNALLOCATED-
0000001FMLA (by element)half-precisionARMv8.2
0000101FMLS (by element)half-precisionARMv8.2
0001001FMUL (by element)half-precisionARMv8.2
0010001UNALLOCATED-
0010101UNALLOCATED-
01x0001FMLA (by element)single-precision and double-precision-
01x0101FMLS (by element)single-precision and double-precision-
01x1001FMUL (by element)single-precision and double-precision-
10000MLA (by element)-
10010UMLAL, UMLAL2 (by element)-
10100MLS (by element)-
10110UMLSL, UMLSL2 (by element)-
11000UNALLOCATED-
11010UMULL, UMULL2 (by element)-
11011UNALLOCATED-
11100UNALLOCATED-
11101SQRDMLAH (by element)ARMv8.1
11111SQRDMLSH (by element)ARMv8.1
1000001UNALLOCATED-
1000011UNALLOCATED-
1000101UNALLOCATED-
1000111UNALLOCATED-
1001001FMULX (by element)half-precisionARMv8.2
11x0101UNALLOCATED-
11x1001FMULX (by element)single-precision and double-precision-
1110001UNALLOCATED-
1110011UNALLOCATED-
1110111UNALLOCATED-

Conversion between floating-point and fixed-point

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
sf0S11110type0rmodeopcodescaleRnRd
Decode fields Instruction Details Architecture Version
sfStypermodeopcodescale
1xxUNALLOCATED-
x000xUNALLOCATED-
x101xUNALLOCATED-
0x00xUNALLOCATED-
1x01xUNALLOCATED-
10UNALLOCATED-
1UNALLOCATED-
00xxxxxUNALLOCATED-
000000010SCVTF (scalar, fixed-point)32-bit to single-precision-
000000011UCVTF (scalar, fixed-point)32-bit to single-precision-
000011000FCVTZS (scalar, fixed-point)single-precision to 32-bit-
000011001FCVTZU (scalar, fixed-point)single-precision to 32-bit-
000100010SCVTF (scalar, fixed-point)32-bit to double-precision-
000100011UCVTF (scalar, fixed-point)32-bit to double-precision-
000111000FCVTZS (scalar, fixed-point)double-precision to 32-bit-
000111001FCVTZU (scalar, fixed-point)double-precision to 32-bit-
001100010SCVTF (scalar, fixed-point)32-bit to half-precisionARMv8.2
001100011UCVTF (scalar, fixed-point)32-bit to half-precisionARMv8.2
001111000FCVTZS (scalar, fixed-point)half-precision to 32-bitARMv8.2
001111001FCVTZU (scalar, fixed-point)half-precision to 32-bitARMv8.2
100000010SCVTF (scalar, fixed-point)64-bit to single-precision-
100000011UCVTF (scalar, fixed-point)64-bit to single-precision-
100011000FCVTZS (scalar, fixed-point)single-precision to 64-bit-
100011001FCVTZU (scalar, fixed-point)single-precision to 64-bit-
100100010SCVTF (scalar, fixed-point)64-bit to double-precision-
100100011UCVTF (scalar, fixed-point)64-bit to double-precision-
100111000FCVTZS (scalar, fixed-point)double-precision to 64-bit-
100111001FCVTZU (scalar, fixed-point)double-precision to 64-bit-
101100010SCVTF (scalar, fixed-point)64-bit to half-precisionARMv8.2
101100011UCVTF (scalar, fixed-point)64-bit to half-precisionARMv8.2
101111000FCVTZS (scalar, fixed-point)half-precision to 64-bitARMv8.2
101111001FCVTZU (scalar, fixed-point)half-precision to 64-bitARMv8.2

Conversion between floating-point and integer

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
sf0S11110type1rmodeopcode000000RnRd
Decode fields Instruction Details Architecture Version
sfStypermodeopcode
x101xUNALLOCATED-
x110xUNALLOCATED-
1x01xUNALLOCATED-
1x10xUNALLOCATED-
0100xxUNALLOCATED-
01010xUNALLOCATED-
1UNALLOCATED-
0000x111xUNALLOCATED-
000000000FCVTNS (scalar)single-precision to 32-bit-
000000001FCVTNU (scalar)single-precision to 32-bit-
000000010SCVTF (scalar, integer)32-bit to single-precision-
000000011UCVTF (scalar, integer)32-bit to single-precision-
000000100FCVTAS (scalar)single-precision to 32-bit-
000000101FCVTAU (scalar)single-precision to 32-bit-
000000110FMOV (general)single-precision to 32-bit-
000000111FMOV (general)32-bit to single-precision-
000001000FCVTPS (scalar)single-precision to 32-bit-
000001001FCVTPU (scalar)single-precision to 32-bit-
00001x11xUNALLOCATED-
000010000FCVTMS (scalar)single-precision to 32-bit-
000010001FCVTMU (scalar)single-precision to 32-bit-
000011000FCVTZS (scalar, integer)single-precision to 32-bit-
000011001FCVTZU (scalar, integer)single-precision to 32-bit-
00010x11xUNALLOCATED-
000100000FCVTNS (scalar)double-precision to 32-bit-
000100001FCVTNU (scalar)double-precision to 32-bit-
000100010SCVTF (scalar, integer)32-bit to double-precision-
000100011UCVTF (scalar, integer)32-bit to double-precision-
000100100FCVTAS (scalar)double-precision to 32-bit-
000100101FCVTAU (scalar)double-precision to 32-bit-
000101000FCVTPS (scalar)double-precision to 32-bit-
000101001FCVTPU (scalar)double-precision to 32-bit-
000110000FCVTMS (scalar)double-precision to 32-bit-
000110001FCVTMU (scalar)double-precision to 32-bit-
00011011xUNALLOCATED-
000111000FCVTZS (scalar, integer)double-precision to 32-bit-
000111001FCVTZU (scalar, integer)double-precision to 32-bit-
000111111UNALLOCATED-
001011xUNALLOCATED-
001100000FCVTNS (scalar)half-precision to 32-bitARMv8.2
001100001FCVTNU (scalar)half-precision to 32-bitARMv8.2
001100010SCVTF (scalar, integer)32-bit to half-precisionARMv8.2
001100011UCVTF (scalar, integer)32-bit to half-precisionARMv8.2
001100100FCVTAS (scalar)half-precision to 32-bitARMv8.2
001100101FCVTAU (scalar)half-precision to 32-bitARMv8.2
001100110FMOV (general)half-precision to 32-bitARMv8.2
001100111FMOV (general)32-bit to half-precisionARMv8.2
001101000FCVTPS (scalar)half-precision to 32-bitARMv8.2
001101001FCVTPU (scalar)half-precision to 32-bitARMv8.2
001110000FCVTMS (scalar)half-precision to 32-bitARMv8.2
001110001FCVTMU (scalar)half-precision to 32-bitARMv8.2
001111000FCVTZS (scalar, integer)half-precision to 32-bitARMv8.2
001111001FCVTZU (scalar, integer)half-precision to 32-bitARMv8.2
100011xUNALLOCATED-
100000000FCVTNS (scalar)single-precision to 64-bit-
100000001FCVTNU (scalar)single-precision to 64-bit-
100000010SCVTF (scalar, integer)64-bit to single-precision-
100000011UCVTF (scalar, integer)64-bit to single-precision-
100000100FCVTAS (scalar)single-precision to 64-bit-
100000101FCVTAU (scalar)single-precision to 64-bit-
100001000FCVTPS (scalar)single-precision to 64-bit-
100001001FCVTPU (scalar)single-precision to 64-bit-
100010000FCVTMS (scalar)single-precision to 64-bit-
100010001FCVTMU (scalar)single-precision to 64-bit-
100011000FCVTZS (scalar, integer)single-precision to 64-bit-
100011001FCVTZU (scalar, integer)single-precision to 64-bit-
1001x111xUNALLOCATED-
100100000FCVTNS (scalar)double-precision to 64-bit-
100100001FCVTNU (scalar)double-precision to 64-bit-
100100010SCVTF (scalar, integer)64-bit to double-precision-
100100011UCVTF (scalar, integer)64-bit to double-precision-
100100100FCVTAS (scalar)double-precision to 64-bit-
100100101FCVTAU (scalar)double-precision to 64-bit-
100100110FMOV (general)double-precision to 64-bit-
100100111FMOV (general)64-bit to double-precision-
100101000FCVTPS (scalar)double-precision to 64-bit-
100101001FCVTPU (scalar)double-precision to 64-bit-
10011x11xUNALLOCATED-
100110000FCVTMS (scalar)double-precision to 64-bit-
100110001FCVTMU (scalar)double-precision to 64-bit-
100111000FCVTZS (scalar, integer)double-precision to 64-bit-
100111001FCVTZU (scalar, integer)double-precision to 64-bit-
1010x011xUNALLOCATED-
101001110FMOV (general)top half of 128-bit to 64-bit-
101001111FMOV (general)64-bit to top half of 128-bit-
10101x11xUNALLOCATED-
101100000FCVTNS (scalar)half-precision to 64-bitARMv8.2
101100001FCVTNU (scalar)half-precision to 64-bitARMv8.2
101100010SCVTF (scalar, integer)64-bit to half-precisionARMv8.2
101100011UCVTF (scalar, integer)64-bit to half-precisionARMv8.2
101100100FCVTAS (scalar)half-precision to 64-bitARMv8.2
101100101FCVTAU (scalar)half-precision to 64-bitARMv8.2
101100110FMOV (general)half-precision to 64-bitARMv8.2
101100111FMOV (general)64-bit to half-precisionARMv8.2
101101000FCVTPS (scalar)half-precision to 64-bitARMv8.2
101101001FCVTPU (scalar)half-precision to 64-bitARMv8.2
101110000FCVTMS (scalar)half-precision to 64-bitARMv8.2
101110001FCVTMU (scalar)half-precision to 64-bitARMv8.2
101111000FCVTZS (scalar, integer)half-precision to 64-bitARMv8.2
101111001FCVTZU (scalar, integer)half-precision to 64-bitARMv8.2

Floating-point data-processing (1 source)

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
M0S11110type1opcode10000RnRd
Decode fields Instruction Details Architecture Version
MStypeopcode
x1xxxxUNALLOCATED-
1xxxxxUNALLOCATED-
1UNALLOCATED-
0000000000FMOV (register)single-precision-
0000000001FABS (scalar)single-precision-
0000000010FNEG (scalar)single-precision-
0000000011FSQRT (scalar)single-precision-
0000000100UNALLOCATED-
0000000101FCVTsingle-precision to double-precision-
0000000110UNALLOCATED-
0000000111FCVTsingle-precision to half-precision-
0000001000FRINTN (scalar)single-precision-
0000001001FRINTP (scalar)single-precision-
0000001010FRINTM (scalar)single-precision-
0000001011FRINTZ (scalar)single-precision-
0000001100FRINTA (scalar)single-precision-
0000001101UNALLOCATED-
0000001110FRINTX (scalar)single-precision-
0000001111FRINTI (scalar)single-precision-
0001000000FMOV (register)double-precision-
0001000001FABS (scalar)double-precision-
0001000010FNEG (scalar)double-precision-
0001000011FSQRT (scalar)double-precision-
0001000100FCVTdouble-precision to single-precision-
0001000101UNALLOCATED-
0001000110UNALLOCATED-
0001000111FCVTdouble-precision to half-precision-
0001001000FRINTN (scalar)double-precision-
0001001001FRINTP (scalar)double-precision-
0001001010FRINTM (scalar)double-precision-
0001001011FRINTZ (scalar)double-precision-
0001001100FRINTA (scalar)double-precision-
0001001101UNALLOCATED-
0001001110FRINTX (scalar)double-precision-
0001001111FRINTI (scalar)double-precision-
001000xxxxUNALLOCATED-
0011000000FMOV (register)half-precisionARMv8.2
0011000001FABS (scalar)half-precisionARMv8.2
0011000010FNEG (scalar)half-precisionARMv8.2
0011000011FSQRT (scalar)half-precisionARMv8.2
0011000100FCVThalf-precision to single-precision-
0011000101FCVThalf-precision to double-precision-
001100011xUNALLOCATED-
0011001000FRINTN (scalar)half-precisionARMv8.2
0011001001FRINTP (scalar)half-precisionARMv8.2
0011001010FRINTM (scalar)half-precisionARMv8.2
0011001011FRINTZ (scalar)half-precisionARMv8.2
0011001100FRINTA (scalar)half-precisionARMv8.2
0011001101UNALLOCATED-
0011001110FRINTX (scalar)half-precisionARMv8.2
0011001111FRINTI (scalar)half-precisionARMv8.2
1UNALLOCATED-

Floating-point compare

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
M0S11110type1Rmop1000Rnopcode2
Decode fields Instruction Details Architecture Version
MStypeopopcode2
xxxx1UNALLOCATED-
xxx1xUNALLOCATED-
xx1xxUNALLOCATED-
x1UNALLOCATED-
1xUNALLOCATED-
10UNALLOCATED-
1UNALLOCATED-
00000000000FCMP-
00000001000FCMP-
00000010000FCMPE-
00000011000FCMPE-
00010000000FCMP-
00010001000FCMP-
00010010000FCMPE-
00010011000FCMPE-
00110000000FCMPARMv8.2
00110001000FCMPARMv8.2
00110010000FCMPEARMv8.2
00110011000FCMPEARMv8.2
1UNALLOCATED-

Floating-point immediate

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
M0S11110type1imm8100imm5Rd
Decode fields Instruction Details Architecture Version
MStypeimm5
xxxx1UNALLOCATED-
xxx1xUNALLOCATED-
xx1xxUNALLOCATED-
x1xxxUNALLOCATED-
1xxxxUNALLOCATED-
10UNALLOCATED-
1UNALLOCATED-
000000000FMOV (scalar, immediate)single-precision-
000100000FMOV (scalar, immediate)double-precision-
001100000FMOV (scalar, immediate)half-precisionARMv8.2
1UNALLOCATED-

Floating-point conditional compare

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
M0S11110type1Rmcond01Rnopnzcv
Decode fields Instruction Details Architecture Version
MStypeop
10UNALLOCATED-
1UNALLOCATED-
00000FCCMPsingle-precision-
00001FCCMPEsingle-precision-
00010FCCMPdouble-precision-
00011FCCMPEdouble-precision-
00110FCCMPhalf-precisionARMv8.2
00111FCCMPEhalf-precisionARMv8.2
1UNALLOCATED-

Floating-point data-processing (2 source)

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
M0S11110type1Rmopcode10RnRd
Decode fields Instruction Details Architecture Version
MStypeopcode
1xx1UNALLOCATED-
1x1xUNALLOCATED-
11xxUNALLOCATED-
10UNALLOCATED-
1UNALLOCATED-
00000000FMUL (scalar)single-precision-
00000001FDIV (scalar)single-precision-
00000010FADD (scalar)single-precision-
00000011FSUB (scalar)single-precision-
00000100FMAX (scalar)single-precision-
00000101FMIN (scalar)single-precision-
00000110FMAXNM (scalar)single-precision-
00000111FMINNM (scalar)single-precision-
00001000FNMUL (scalar)single-precision-
00010000FMUL (scalar)double-precision-
00010001FDIV (scalar)double-precision-
00010010FADD (scalar)double-precision-
00010011FSUB (scalar)double-precision-
00010100FMAX (scalar)double-precision-
00010101FMIN (scalar)double-precision-
00010110FMAXNM (scalar)double-precision-
00010111FMINNM (scalar)double-precision-
00011000FNMUL (scalar)double-precision-
00110000FMUL (scalar)half-precisionARMv8.2
00110001FDIV (scalar)half-precisionARMv8.2
00110010FADD (scalar)half-precisionARMv8.2
00110011FSUB (scalar)half-precisionARMv8.2
00110100FMAX (scalar)half-precisionARMv8.2
00110101FMIN (scalar)half-precisionARMv8.2
00110110FMAXNM (scalar)half-precisionARMv8.2
00110111FMINNM (scalar)half-precisionARMv8.2
00111000FNMUL (scalar)half-precisionARMv8.2
1UNALLOCATED-

Floating-point conditional select

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
M0S11110type1Rmcond11RnRd
Decode fields Instruction Details Architecture Version
MStype
10UNALLOCATED-
1UNALLOCATED-
0000FCSELsingle-precision-
0001FCSELdouble-precision-
0011FCSELhalf-precisionARMv8.2
1UNALLOCATED-

Floating-point data-processing (3 source)

These instructions are under Data Processing -- Scalar Floating-Point and Advanced SIMD.

313029282726252423222120191817161514131211109876543210
M0S11111typeo1Rmo0RaRnRd
Decode fields Instruction Details Architecture Version
MStypeo1o0
10UNALLOCATED-
1UNALLOCATED-
000000FMADDsingle-precision-
000001FMSUBsingle-precision-
000010FNMADDsingle-precision-
000011FNMSUBsingle-precision-
000100FMADDdouble-precision-
000101FMSUBdouble-precision-
000110FNMADDdouble-precision-
000111FNMSUBdouble-precision-
001100FMADDhalf-precisionARMv8.2
001101FMSUBhalf-precisionARMv8.2
001110FNMADDhalf-precisionARMv8.2
001111FNMSUBhalf-precisionARMv8.2
1UNALLOCATED-

Internal version only: isa v25.07, AdvSIMD v23.0, pseudocode v31.3

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

ISA_v82A_A64_xml_00bet3.2 (old)htmldiff from-ISA_v82A_A64_xml_00bet3.2(new) ISA_v82A_A64_xml_00bet3.2_OPT