1 /* This file is automatically generated by aarch64-gen. Do not edit! */
2 /* Copyright (C) 2012-2024 Free Software Foundation, Inc.
3 Contributed by ARM Ltd.
5 This file is part of the GNU opcodes library.
7 This library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
12 It is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; see the file COPYING3. If not,
19 see <http://www.gnu.org/licenses/>. */
22 #include "aarch64-opc.h"
25 const struct aarch64_operand aarch64_operands
[] =
27 {AARCH64_OPND_CLASS_NIL
, "", 0, {0}, "<none>"},
28 {AARCH64_OPND_CLASS_INT_REG
, "Rd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rd
}, "an integer register"},
29 {AARCH64_OPND_CLASS_INT_REG
, "Rn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an integer register"},
30 {AARCH64_OPND_CLASS_INT_REG
, "Rm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
}, "an integer register"},
31 {AARCH64_OPND_CLASS_INT_REG
, "Rt", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rt
}, "an integer register"},
32 {AARCH64_OPND_CLASS_INT_REG
, "Rt2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rt2
}, "an integer register"},
33 {AARCH64_OPND_CLASS_INT_REG
, "X16", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "X16"},
34 {AARCH64_OPND_CLASS_INT_REG
, "Rt_LS64", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rt
}, "an integer register"},
35 {AARCH64_OPND_CLASS_INT_REG
, "Rt_SP", OPD_F_MAYBE_SP
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rt
}, "an integer or stack pointer register"},
36 {AARCH64_OPND_CLASS_INT_REG
, "Rs", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rs
}, "an integer register"},
37 {AARCH64_OPND_CLASS_INT_REG
, "Ra", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Ra
}, "an integer register"},
38 {AARCH64_OPND_CLASS_INT_REG
, "Rt_SYS", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rt
}, "an integer register"},
39 {AARCH64_OPND_CLASS_INT_REG
, "Rd_SP", OPD_F_MAYBE_SP
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rd
}, "an integer or stack pointer register"},
40 {AARCH64_OPND_CLASS_INT_REG
, "Rn_SP", OPD_F_MAYBE_SP
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an integer or stack pointer register"},
41 {AARCH64_OPND_CLASS_INT_REG
, "Rm_SP", OPD_F_MAYBE_SP
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
}, "an integer or stack pointer register"},
42 {AARCH64_OPND_CLASS_INT_REG
, "PAIRREG", OPD_F_HAS_EXTRACTOR
, {}, "the second reg of a pair"},
43 {AARCH64_OPND_CLASS_INT_REG
, "PAIRREG_OR_XZR", OPD_F_HAS_EXTRACTOR
, {}, "the second reg of a pair"},
44 {AARCH64_OPND_CLASS_MODIFIED_REG
, "Rm_EXT", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an integer register with optional extension"},
45 {AARCH64_OPND_CLASS_MODIFIED_REG
, "Rm_SFT", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an integer register with optional shift"},
46 {AARCH64_OPND_CLASS_MODIFIED_REG
, "Rm_LSL", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an integer register with optional LSL shift"},
47 {AARCH64_OPND_CLASS_FP_REG
, "Fd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rd
}, "a floating-point register"},
48 {AARCH64_OPND_CLASS_FP_REG
, "Fn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "a floating-point register"},
49 {AARCH64_OPND_CLASS_FP_REG
, "Fm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
}, "a floating-point register"},
50 {AARCH64_OPND_CLASS_FP_REG
, "Fa", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Ra
}, "a floating-point register"},
51 {AARCH64_OPND_CLASS_FP_REG
, "Ft", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rt
}, "a floating-point register"},
52 {AARCH64_OPND_CLASS_FP_REG
, "Ft2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rt2
}, "a floating-point register"},
53 {AARCH64_OPND_CLASS_SISD_REG
, "Sd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rd
}, "a SIMD scalar register"},
54 {AARCH64_OPND_CLASS_SISD_REG
, "Sn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "a SIMD scalar register"},
55 {AARCH64_OPND_CLASS_SISD_REG
, "Sm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
}, "a SIMD scalar register"},
56 {AARCH64_OPND_CLASS_SIMD_REG
, "Va", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Ra
}, "a SIMD vector register"},
57 {AARCH64_OPND_CLASS_SIMD_REG
, "Vd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rd
}, "a SIMD vector register"},
58 {AARCH64_OPND_CLASS_SIMD_REG
, "Vn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "a SIMD vector register"},
59 {AARCH64_OPND_CLASS_SIMD_REG
, "Vm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
}, "a SIMD vector register"},
60 {AARCH64_OPND_CLASS_FP_REG
, "VdD1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rd
}, "the top half of a 128-bit FP/SIMD register"},
61 {AARCH64_OPND_CLASS_FP_REG
, "VnD1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "the top half of a 128-bit FP/SIMD register"},
62 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "Ed", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rd
}, "a SIMD vector element"},
63 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "En", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "a SIMD vector element"},
64 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "Em", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
}, "a SIMD vector element"},
65 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "Em16", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
}, "a SIMD vector element limited to V0-V15"},
66 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "Em8", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
}, "a SIMD vector element limited to V0-V7"},
67 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "Em_INDEX1_14", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
, FLD_imm1_14
}, "a SIMD vector without a type qualifier encoding a bit index"},
68 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "Em_INDEX2_13", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
, FLD_imm2_13
}, "a SIMD vector without a type qualifier encoding a bit index"},
69 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "Em_INDEX3_12", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rm
, FLD_imm3_12
}, "a SIMD vector without a type qualifier encoding a bit index"},
70 {AARCH64_OPND_CLASS_SIMD_REGLIST
, "LVn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "a SIMD vector register list"},
71 {AARCH64_OPND_CLASS_SIMD_REGLIST
, "LVt", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a SIMD vector register list"},
72 {AARCH64_OPND_CLASS_SIMD_REGLIST
, "LVt_AL", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a SIMD vector register list"},
73 {AARCH64_OPND_CLASS_SIMD_REGLIST
, "LVn_LUT", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "a SIMD vector register list"},
74 {AARCH64_OPND_CLASS_SIMD_REGLIST
, "LEt", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a SIMD vector element list"},
75 {AARCH64_OPND_CLASS_IMMEDIATE
, "CRn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_CRn
}, "a 4-bit opcode field named for historical reasons C0 - C15"},
76 {AARCH64_OPND_CLASS_IMMEDIATE
, "CRm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_CRm
}, "a 4-bit opcode field named for historical reasons C0 - C15"},
77 {AARCH64_OPND_CLASS_IMMEDIATE
, "IDX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm4_11
}, "an immediate as the index of the least significant byte"},
78 {AARCH64_OPND_CLASS_IMMEDIATE
, "MASK", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm4_0
}, "an immediate as the index of the least significant byte"},
79 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM_VLSL", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a left shift amount for an AdvSIMD register"},
80 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM_VLSR", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a right shift amount for an AdvSIMD register"},
81 {AARCH64_OPND_CLASS_IMMEDIATE
, "SIMD_IMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an immediate"},
82 {AARCH64_OPND_CLASS_IMMEDIATE
, "SIMD_IMM_SFT", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an 8-bit unsigned immediate with optional shift"},
83 {AARCH64_OPND_CLASS_IMMEDIATE
, "SIMD_FPIMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an 8-bit floating-point constant"},
84 {AARCH64_OPND_CLASS_IMMEDIATE
, "SHLL_IMM", OPD_F_HAS_EXTRACTOR
, {}, "an immediate shift amount of 8, 16 or 32"},
85 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM0", 0, {}, "0"},
86 {AARCH64_OPND_CLASS_IMMEDIATE
, "FPIMM0", 0, {}, "0.0"},
87 {AARCH64_OPND_CLASS_IMMEDIATE
, "FPIMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm8
}, "an 8-bit floating-point constant"},
88 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMMR", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_immr
}, "the right rotate amount"},
89 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMMS", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm6_10
}, "the leftmost bit number to be moved from the source"},
90 {AARCH64_OPND_CLASS_IMMEDIATE
, "WIDTH", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm6_10
}, "the width of the bit-field"},
91 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm6_10
}, "an immediate"},
92 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM_2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm6_15
}, "an immediate"},
93 {AARCH64_OPND_CLASS_IMMEDIATE
, "UIMM3_OP1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_op1
}, "a 3-bit unsigned immediate"},
94 {AARCH64_OPND_CLASS_IMMEDIATE
, "UIMM3_OP2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_op2
}, "a 3-bit unsigned immediate"},
95 {AARCH64_OPND_CLASS_IMMEDIATE
, "UIMM4", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_CRm
}, "a 4-bit unsigned immediate"},
96 {AARCH64_OPND_CLASS_IMMEDIATE
, "UIMM4_ADDG", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm4_10
}, "a 4-bit unsigned Logical Address Tag modifier"},
97 {AARCH64_OPND_CLASS_IMMEDIATE
, "UIMM7", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_CRm
, FLD_op2
}, "a 7-bit unsigned immediate"},
98 {AARCH64_OPND_CLASS_IMMEDIATE
, "UIMM10", OPD_F_SHIFT_BY_4
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_immr
}, "a 10-bit unsigned multiple of 16"},
99 {AARCH64_OPND_CLASS_IMMEDIATE
, "BIT_NUM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_b5
, FLD_b40
}, "the bit number to be tested"},
100 {AARCH64_OPND_CLASS_IMMEDIATE
, "EXCEPTION", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm16_5
}, "a 16-bit unsigned immediate"},
101 {AARCH64_OPND_CLASS_IMMEDIATE
, "UNDEFINED", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm16_0
}, "a 16-bit unsigned immediate"},
102 {AARCH64_OPND_CLASS_IMMEDIATE
, "CCMP_IMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm5
}, "a 5-bit unsigned immediate"},
103 {AARCH64_OPND_CLASS_IMMEDIATE
, "SIMM5", OPD_F_SEXT
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm5
}, "a 5-bit signed immediate"},
104 {AARCH64_OPND_CLASS_IMMEDIATE
, "NZCV", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_nzcv
}, "a flag bit specifier giving an alternative value for each flag"},
105 {AARCH64_OPND_CLASS_IMMEDIATE
, "LIMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_N
,FLD_immr
,FLD_imms
}, "Logical immediate"},
106 {AARCH64_OPND_CLASS_IMMEDIATE
, "AIMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_shift
,FLD_imm12
}, "a 12-bit unsigned immediate with optional left shift of 12 bits"},
107 {AARCH64_OPND_CLASS_IMMEDIATE
, "HALF", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm16_5
}, "a 16-bit immediate with optional left shift"},
108 {AARCH64_OPND_CLASS_IMMEDIATE
, "FBITS", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_scale
}, "the number of bits after the binary point in the fixed-point value"},
109 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM_MOV", 0, {}, "an immediate"},
110 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM_ROT1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_rotate1
}, "a 2-bit rotation specifier for complex arithmetic operations"},
111 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM_ROT2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_rotate2
}, "a 2-bit rotation specifier for complex arithmetic operations"},
112 {AARCH64_OPND_CLASS_IMMEDIATE
, "IMM_ROT3", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_rotate3
}, "a 1-bit rotation specifier for complex arithmetic operations"},
113 {AARCH64_OPND_CLASS_COND
, "COND", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a condition"},
114 {AARCH64_OPND_CLASS_COND
, "COND1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "one of the standard conditions, excluding AL and NV."},
115 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_ADRP", OPD_F_SEXT
| OPD_F_HAS_EXTRACTOR
, {FLD_immhi
, FLD_immlo
}, "21-bit PC-relative address of a 4KB page"},
116 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_PCREL14", OPD_F_SEXT
| OPD_F_SHIFT_BY_2
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm14
}, "14-bit PC-relative address"},
117 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_PCREL19", OPD_F_SEXT
| OPD_F_SHIFT_BY_2
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm19
}, "19-bit PC-relative address"},
118 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_PCREL21", OPD_F_SEXT
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_immhi
,FLD_immlo
}, "21-bit PC-relative address"},
119 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_PCREL26", OPD_F_SEXT
| OPD_F_SHIFT_BY_2
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm26
}, "26-bit PC-relative address"},
120 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_SIMPLE", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an address with base register (no offset)"},
121 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_REGOFF", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an address with register offset"},
122 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_SIMM7", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm7
,FLD_index2
}, "an address with 7-bit signed immediate offset"},
123 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_SIMM9", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm9
,FLD_index
}, "an address with 9-bit signed immediate offset"},
124 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_SIMM9_2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm9
,FLD_index
}, "an address with 9-bit negative or unaligned immediate offset"},
125 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_SIMM10", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_S_imm10
,FLD_imm9
,FLD_index
}, "an address with an optional 10-bit scaled, signed immediate offset"},
126 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_SIMM11", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm7
,FLD_index2
}, "an address with 11-bit signed immediate (multiple of 16) offset"},
127 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_UIMM12", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_imm12
}, "an address with scaled, unsigned immediate offset"},
128 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_SIMM13", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm9
,FLD_index
}, "an address with 13-bit signed immediate (multiple of 16) offset"},
129 {AARCH64_OPND_CLASS_ADDRESS
, "SIMD_ADDR_SIMPLE", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an address with base register (no offset)"},
130 {AARCH64_OPND_CLASS_ADDRESS
, "ADDR_OFFSET", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_imm9
,FLD_index
}, "an address with an optional 8-bit signed immediate offset"},
131 {AARCH64_OPND_CLASS_ADDRESS
, "SIMD_ADDR_POST", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a post-indexed address with immediate or register increment"},
132 {AARCH64_OPND_CLASS_SYSTEM
, "SYSREG", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a system register"},
133 {AARCH64_OPND_CLASS_SYSTEM
, "SYSREG128", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a 128-bit system register"},
134 {AARCH64_OPND_CLASS_SYSTEM
, "PSTATEFIELD", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a PSTATE field name"},
135 {AARCH64_OPND_CLASS_SYSTEM
, "SYSREG_AT", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an address translation operation specifier"},
136 {AARCH64_OPND_CLASS_SYSTEM
, "SYSREG_DC", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a data cache maintenance operation specifier"},
137 {AARCH64_OPND_CLASS_SYSTEM
, "SYSREG_IC", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an instruction cache maintenance operation specifier"},
138 {AARCH64_OPND_CLASS_SYSTEM
, "SYSREG_TLBI", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a TBL invalidation operation specifier"},
139 {AARCH64_OPND_CLASS_SYSTEM
, "SYSREG_TLBIP", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a 128-bit TBL invalidation operation specifier"},
140 {AARCH64_OPND_CLASS_SYSTEM
, "SYSREG_SR", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a Speculation Restriction option name (RCTX)"},
141 {AARCH64_OPND_CLASS_SYSTEM
, "BARRIER", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a barrier option name"},
142 {AARCH64_OPND_CLASS_SYSTEM
, "BARRIER_DSB_NXS", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "the DSB nXS option qualifier name SY, ISH, NSH, OSH or an optional 5-bit unsigned immediate"},
143 {AARCH64_OPND_CLASS_SYSTEM
, "BARRIER_ISB", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "the ISB option name SY or an optional 4-bit unsigned immediate"},
144 {AARCH64_OPND_CLASS_SYSTEM
, "PRFOP", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "a prefetch operation specifier"},
145 {AARCH64_OPND_CLASS_SYSTEM
, "RPRFMOP", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm1_15
, FLD_imm2_12
, FLD_imm3_0
}, "a range prefetch operation specifier"},
146 {AARCH64_OPND_CLASS_SYSTEM
, "BARRIER_PSB", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "the PSB/TSB option name CSYNC"},
147 {AARCH64_OPND_CLASS_SYSTEM
, "BARRIER_GCSB", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "the GCSB option name DSYNC"},
148 {AARCH64_OPND_CLASS_SYSTEM
, "BTI_TARGET", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "BTI targets j/c/jc"},
149 {AARCH64_OPND_CLASS_SYSTEM
, "BRBOP", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_brbop
}, "Branch Record Buffer operation operand"},
150 {AARCH64_OPND_CLASS_INT_REG
, "Rt_IN_SYS_ALIASES", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rt
}, "Rt register with defaults for SYS aliases"},
151 {AARCH64_OPND_CLASS_INT_REG
, "LSE128_Rt", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_LSE128_Rt
}, "an integer register"},
152 {AARCH64_OPND_CLASS_INT_REG
, "LSE128_Rt2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_LSE128_Rt2
}, "an integer register"},
153 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_S4x16", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 4-bit signed offset, multiplied by 16"},
154 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_S4x32", 5 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 4-bit signed offset, multiplied by 32"},
155 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_S4xVL", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 4-bit signed offset, multiplied by VL"},
156 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_S4x2xVL", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 4-bit signed offset, multiplied by 2*VL"},
157 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_S4x3xVL", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 4-bit signed offset, multiplied by 3*VL"},
158 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_S4x4xVL", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 4-bit signed offset, multiplied by 4*VL"},
159 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_S6xVL", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 6-bit signed offset, multiplied by VL"},
160 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_S9xVL", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 9-bit signed offset, multiplied by VL"},
161 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_U6", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 6-bit unsigned offset"},
162 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_U6x2", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 6-bit unsigned offset, multiplied by 2"},
163 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_U6x4", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 6-bit unsigned offset, multiplied by 4"},
164 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RI_U6x8", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an address with a 6-bit unsigned offset, multiplied by 8"},
165 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_R", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with an optional scalar register offset"},
166 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RR", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
167 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RR_LSL1", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
168 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RR_LSL2", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
169 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RR_LSL3", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
170 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RR_LSL4", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
171 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RX", (0 << OPD_F_OD_LSB
) | OPD_F_NO_ZR
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
172 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RX_LSL1", (1 << OPD_F_OD_LSB
) | OPD_F_NO_ZR
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
173 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RX_LSL2", (2 << OPD_F_OD_LSB
) | OPD_F_NO_ZR
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
174 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RX_LSL3", (3 << OPD_F_OD_LSB
) | OPD_F_NO_ZR
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
175 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RX_LSL4", (4 << OPD_F_OD_LSB
) | OPD_F_NO_ZR
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_Rm
}, "an address with a scalar register offset"},
176 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_ZX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
,FLD_Rm
}, "vector of address with a scalar register offset"},
177 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
}, "an address with a vector register offset"},
178 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_LSL1", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
}, "an address with a vector register offset"},
179 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_LSL2", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
}, "an address with a vector register offset"},
180 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_LSL3", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
}, "an address with a vector register offset"},
181 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_XTW_14", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
,FLD_SVE_xs_14
}, "an address with a vector register offset"},
182 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_XTW_22", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
,FLD_SVE_xs_22
}, "an address with a vector register offset"},
183 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_XTW1_14", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
,FLD_SVE_xs_14
}, "an address with a vector register offset"},
184 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_XTW1_22", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
,FLD_SVE_xs_22
}, "an address with a vector register offset"},
185 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_XTW2_14", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
,FLD_SVE_xs_14
}, "an address with a vector register offset"},
186 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_XTW2_22", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
,FLD_SVE_xs_22
}, "an address with a vector register offset"},
187 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_XTW3_14", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
,FLD_SVE_xs_14
}, "an address with a vector register offset"},
188 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_RZ_XTW3_22", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_SVE_Zm_16
,FLD_SVE_xs_22
}, "an address with a vector register offset"},
189 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_ZI_U5", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
}, "an address with a 5-bit unsigned offset"},
190 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_ZI_U5x2", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
}, "an address with a 5-bit unsigned offset, multiplied by 2"},
191 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_ZI_U5x4", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
}, "an address with a 5-bit unsigned offset, multiplied by 4"},
192 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_ZI_U5x8", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
}, "an address with a 5-bit unsigned offset, multiplied by 8"},
193 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_ZZ_LSL", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
,FLD_SVE_Zm_16
}, "an address with a vector register offset"},
194 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_ZZ_SXTW", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
,FLD_SVE_Zm_16
}, "an address with a vector register offset"},
195 {AARCH64_OPND_CLASS_ADDRESS
, "SVE_ADDR_ZZ_UXTW", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
,FLD_SVE_Zm_16
}, "an address with a vector register offset"},
196 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_AIMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm9
}, "a 9-bit unsigned arithmetic operand"},
197 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_ASIMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm9
}, "a 9-bit signed arithmetic operand"},
198 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_FPIMM8", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm8
}, "an 8-bit floating-point immediate"},
199 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_I1_HALF_ONE", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_i1
}, "either 0.5 or 1.0"},
200 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_I1_HALF_TWO", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_i1
}, "either 0.5 or 2.0"},
201 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_I1_ZERO_ONE", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_i1
}, "either 0.0 or 1.0"},
202 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_IMM_ROT1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_rot1
}, "a 1-bit rotation specifier for complex arithmetic operations"},
203 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_IMM_ROT2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_rot2
}, "a 2-bit rotation specifier for complex arithmetic operations"},
204 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_IMM_ROT3", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_rot3
}, "a 1-bit rotation specifier for complex arithmetic operations"},
205 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_INV_LIMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_N
,FLD_SVE_immr
,FLD_SVE_imms
}, "an inverted 13-bit logical immediate"},
206 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_LIMM", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_N
,FLD_SVE_immr
,FLD_SVE_imms
}, "a 13-bit logical immediate"},
207 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_LIMM_MOV", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_N
,FLD_SVE_immr
,FLD_SVE_imms
}, "a 13-bit logical move immediate"},
208 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_PATTERN", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_pattern
}, "an enumeration value such as POW2"},
209 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_PATTERN_SCALED", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_pattern
}, "an enumeration value such as POW2"},
210 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_PRFOP", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_prfop
}, "an enumeration value such as PLDL1KEEP"},
211 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_Pd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pd
}, "an SVE predicate register"},
212 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_PNd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pd
}, "an SVE predicate-as-counter register"},
213 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_Pg3", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pg3
}, "an SVE predicate register"},
214 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_Pg4_5", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pg4_5
}, "an SVE predicate register"},
215 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_Pg4_10", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pg4_10
}, "an SVE predicate register"},
216 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_PNg4_10", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pg4_10
}, "an SVE predicate-as-counter register"},
217 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_Pg4_16", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pg4_16
}, "an SVE predicate register"},
218 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_Pm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pm
}, "an SVE predicate register"},
219 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_Pn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pn
}, "an SVE predicate register"},
220 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_PNn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pn
}, "an SVE predicate register"},
221 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_Pt", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pt
}, "an SVE predicate register"},
222 {AARCH64_OPND_CLASS_PRED_REG
, "SVE_PNt", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pt
}, "an SVE predicate register"},
223 {AARCH64_OPND_CLASS_INT_REG
, "SVE_Rm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Rm
}, "an integer register or zero"},
224 {AARCH64_OPND_CLASS_INT_REG
, "SVE_Rn_SP", OPD_F_MAYBE_SP
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Rn
}, "an integer register or SP"},
225 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SHLIMM_PRED", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_tszh
,FLD_SVE_imm5
}, "a shift-left immediate operand"},
226 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SHLIMM_UNPRED", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_tszh
,FLD_imm5
}, "a shift-left immediate operand"},
227 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SHLIMM_UNPRED_22", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_sz
, FLD_SVE_tszl_19
, FLD_SVE_imm3
}, "a shift-left immediate operand"},
228 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SHRIMM_PRED", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_tszh
,FLD_SVE_imm5
}, "a shift-right immediate operand"},
229 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SHRIMM_UNPRED", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_tszh
,FLD_imm5
}, "a shift-right immediate operand"},
230 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SHRIMM_UNPRED_22", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_sz
, FLD_SVE_tszl_19
, FLD_SVE_imm3
}, "a shift-right immediate operand"},
231 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SIMM5", OPD_F_SEXT
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm5
}, "a 5-bit signed immediate"},
232 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SIMM5B", OPD_F_SEXT
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm5b
}, "a 5-bit signed immediate"},
233 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SIMM6", OPD_F_SEXT
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imms
}, "a 6-bit signed immediate"},
234 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_SIMM8", OPD_F_SEXT
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm8
}, "an 8-bit signed immediate"},
235 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_UIMM3", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm3
}, "a 3-bit unsigned immediate"},
236 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_UIMM7", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm7
}, "a 7-bit unsigned immediate"},
237 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_UIMM8", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm8
}, "an 8-bit unsigned immediate"},
238 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_UIMM8_53", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm5
,FLD_imm3_10
}, "an 8-bit unsigned immediate"},
239 {AARCH64_OPND_CLASS_IMMEDIATE
, "SVE_UIMM4", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm4
}, "a 4-bit unsigned immediate"},
240 {AARCH64_OPND_CLASS_SIMD_REG
, "SVE_VZn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
}, "a SIMD register"},
241 {AARCH64_OPND_CLASS_SIMD_REG
, "SVE_Vd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Vd
}, "a SIMD register"},
242 {AARCH64_OPND_CLASS_SIMD_REG
, "SVE_Vm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Vm
}, "a SIMD register"},
243 {AARCH64_OPND_CLASS_SIMD_REG
, "SVE_Vn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Vn
}, "a SIMD register"},
244 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_vrsb_1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_off3
}, "ZA0 tile"},
245 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_vrsh_1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_ZAn_1
,FLD_off2
}, "1 bit ZA tile"},
246 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_vrss_1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_ZAn_2
,FLD_ol
}, "2 ZA tile"},
247 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_vrsd_1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_ZAn_3
}, "3 ZA tile"},
248 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_vrsb_2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_off2
}, "ZA0 tile"},
249 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_vrsh_2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_ZAn
,FLD_ol
}, "1 bit ZA tile"},
250 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_vrss_2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_off2
}, "2 bit ZA tile"},
251 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_vrsd_2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_ZAn_3
}, "3 bit ZA tile"},
252 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_ARRAY4", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
}, "ZA tile to vector register"},
253 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Za_5", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Za_5
}, "an SVE vector register"},
254 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Za_16", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Za_16
}, "an SVE vector register"},
255 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zd
}, "an SVE vector register"},
256 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm_5", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zm_5
}, "an SVE vector register"},
257 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm_16", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zm_16
}, "an SVE vector register"},
258 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm1_23_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zm_16
, FLD_SVE_i1_23
}, "an indexed SVE vector register"},
259 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm2_22_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zm_16
, FLD_SVE_i2
}, "an indexed SVE vector register"},
260 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm3_INDEX", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zm_16
}, "an indexed SVE vector register"},
261 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm3_11_INDEX", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_i3h2
, FLD_SVE_i3l
, FLD_SVE_imm3
}, "an indexed SVE vector register"},
262 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm3_12_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zm_16
, FLD_SVE_i3h3
, FLD_SVE_i3l2
}, "an indexed SVE vector register"},
263 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm3_19_INDEX", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm2_19
, FLD_SVE_imm3
}, "an indexed SVE vector register"},
264 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm3_22_INDEX", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_i3h
, FLD_SVE_Zm_16
}, "an indexed SVE vector register"},
265 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm3_10_INDEX", 3 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_i3h2
, FLD_SVE_i4l2
, FLD_SVE_imm3
}, "an indexed SVE vector register"},
266 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm4_11_INDEX", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_i2h
, FLD_SVE_i3l
, FLD_SVE_imm4
}, "an indexed SVE vector register"},
267 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zm4_INDEX", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zm_16
}, "an indexed SVE vector register"},
268 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
}, "an SVE vector register"},
269 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zn_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_SVE_tszh
, FLD_imm5
}, "an indexed SVE vector register"},
270 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zn_5_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm5
}, "a 5 bit indexed SVE vector register"},
271 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SVE_ZnxN", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
}, "a list of SVE vector registers"},
272 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zt", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zt
}, "an SVE vector register"},
273 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SVE_ZtxN", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zt
}, "a list of SVE vector registers"},
274 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Zdnx2", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zdn2
}, "a list of SVE vector registers"},
275 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Zdnx4", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zdn4
}, "a list of SVE vector registers"},
276 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Zdnx4_STRIDED", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_ZdnT
, FLD_SME_Zdn2_0
}, "a list of SVE vector registers"},
277 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
}, "an SVE vector register"},
278 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Zmx2", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm2
}, "a list of SVE vector registers"},
279 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Zmx4", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm4
}, "a list of SVE vector registers"},
280 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Znx2", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zn2
}, "a list of SVE vector registers"},
281 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Znx2_BIT_INDEX", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zn2
}, "a list of SVE vector registers"},
282 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Znx4", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zn4
}, "a list of SVE vector registers"},
283 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Ztx2_STRIDED", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_ZtT
, FLD_SME_Zt3
}, "a list of SVE vector registers"},
284 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Ztx4_STRIDED", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_ZtT
, FLD_SME_Zt2
}, "a list of SVE vector registers"},
285 {AARCH64_OPND_CLASS_SVE_REG
, "SME_ZAda_1b", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_ZAda_1b
}, "an SME ZA tile ZA0-ZA1"},
286 {AARCH64_OPND_CLASS_SVE_REG
, "SME_ZAda_2b", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_ZAda_2b
}, "an SME ZA tile ZA0-ZA3"},
287 {AARCH64_OPND_CLASS_SVE_REG
, "SME_ZAda_3b", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_ZAda_3b
}, "an SME ZA tile ZA0-ZA7"},
288 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_HV_idx_src", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_size_22
,FLD_SME_Q
,FLD_SME_V
,FLD_SME_Rv
,FLD_imm4_5
}, "an SME horizontal or vertical vector access register"},
289 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_HV_idx_srcxN", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_imm3_5
}, "an SME horizontal or vertical vector access register"},
290 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_HV_idx_dest", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_size_22
,FLD_SME_Q
,FLD_SME_V
,FLD_SME_Rv
,FLD_imm4_0
}, "an SME horizontal or vertical vector access register"},
291 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_HV_idx_destxN", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_V
,FLD_SME_Rv
,FLD_imm3_0
}, "an SME horizontal or vertical vector access register"},
292 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_Pdx2", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Pdx2
}, "a list of SVE predicate registers"},
293 {AARCH64_OPND_CLASS_SVE_REGLIST
, "SME_PdxN", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pd
}, "a list of SVE predicate registers"},
294 {AARCH64_OPND_CLASS_PRED_REG
, "SME_Pm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Pm
}, "an SVE predicate register"},
295 {AARCH64_OPND_CLASS_PRED_REG
, "SME_PNd3", 8 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_PNd3
}, "an SVE predicate-as-counter register"},
296 {AARCH64_OPND_CLASS_PRED_REG
, "SME_PNg3", 8 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pg3
}, "an SVE predicate-as-counter register"},
297 {AARCH64_OPND_CLASS_PRED_REG
, "SME_PNn", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Pn
}, "an SVE predicate-as-counter register"},
298 {AARCH64_OPND_CLASS_SVE_REG
, "SME_PNn3_INDEX1", 8 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_PNn3
, FLD_imm1_8
}, "an indexed SVE predicate-as-counter register"},
299 {AARCH64_OPND_CLASS_SVE_REG
, "SME_PNn3_INDEX2", 8 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_PNn3
, FLD_imm2_8
}, "an indexed SVE predicate-as-counter register"},
300 {AARCH64_OPND_CLASS_SVE_REG
, "SME_list_of_64bit_tiles", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_zero_mask
}, "a list of 64-bit ZA element tiles"},
301 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_HV_idx_ldstr", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_size_22
,FLD_index2
,FLD_SME_V
,FLD_SME_Rv
,FLD_imm4_0
}, "an SME horizontal or vertical vector access register"},
302 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_off1x4", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Rv
,FLD_imm1_0
}, "ZA array"},
303 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_off2x2", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Rv
,FLD_imm2_0
}, "ZA array"},
304 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_off2x4", 4 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Rv
,FLD_imm2_0
}, "ZA array"},
305 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_off3_0", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Rv
,FLD_imm3_0
}, "ZA array"},
306 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_off3_5", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Rv
,FLD_imm3_5
}, "ZA array"},
307 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_off3x2", 2 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Rv
,FLD_imm3_0
}, "ZA array"},
308 {AARCH64_OPND_CLASS_ZA_ACCESS
, "SME_ZA_array_off4", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Rv
,FLD_imm4_0
}, "ZA array"},
309 {AARCH64_OPND_CLASS_ADDRESS
, "SME_ADDR_RI_U4xVL", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_imm4_0
}, "memory offset"},
310 {AARCH64_OPND_CLASS_ADDRESS
, "SME_SM_ZA", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_CRm
}, "streaming mode"},
311 {AARCH64_OPND_CLASS_SVE_REG
, "SME_PnT_Wm_imm", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Rm
,FLD_SVE_Pn
,FLD_SME_i1
,FLD_SME_tszh
,FLD_SME_tszl
}, "Source scalable predicate register with index "},
312 {AARCH64_OPND_CLASS_IMMEDIATE
, "SME_SHRIMM4", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_imm4
}, "a shift-right immediate operand"},
313 {AARCH64_OPND_CLASS_IMMEDIATE
, "SME_SHRIMM5", 1 << OPD_F_OD_LSB
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_tszh
,FLD_SVE_imm5b
}, "a shift-right immediate operand"},
314 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm1_10
}, "an indexed SVE vector register"},
315 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm2_10
}, "an indexed SVE vector register"},
316 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX2_3", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm1_10
, FLD_imm1_3
}, "an indexed SVE vector register"},
317 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX3_1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm1_10
, FLD_imm2_1
}, "an indexed SVE vector register"},
318 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX3_2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm2_10
, FLD_imm1_2
}, "an indexed SVE vector register"},
319 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX3_3", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm2_10
, FLD_imm1_3
}, "an indexed SVE vector register"},
320 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX3_10", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm1_15
, FLD_imm2_10
}, "an indexed SVE vector register"},
321 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX4_1", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm2_10
, FLD_imm2_1
}, "an indexed SVE vector register"},
322 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX4_2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm2_10
, FLD_imm2_2
}, "an indexed SVE vector register"},
323 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX4_3", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm1_15
, FLD_imm2_10
, FLD_imm1_3
}, "an indexed SVE vector register"},
324 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zm_INDEX4_10", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_Zm
, FLD_imm1_15
, FLD_imm3_10
}, "an indexed SVE vector register"},
325 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zn_INDEX1_16", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm1_16
}, "an indexed SVE vector register"},
326 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zn_INDEX2_15", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm2_15
}, "an indexed SVE vector register"},
327 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zn_INDEX2_16", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm2_16
}, "an indexed SVE vector register"},
328 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zn_INDEX3_14", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm3_14
}, "an indexed SVE vector register"},
329 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zn_INDEX3_15", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm3_15
}, "an indexed SVE vector register"},
330 {AARCH64_OPND_CLASS_SVE_REG
, "SME_Zn_INDEX4_14", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm4_14
}, "an indexed SVE vector register"},
331 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zn0_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
}, "an SVE vector register with option zero index"},
332 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zn1_17_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm17_1
}, "an SVE vector register with optional one bit index"},
333 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zn2_18_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_imm17_2
}, "an SVE vector register with optional two bit index"},
334 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zn3_22_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zn
, FLD_SVE_i3h
, FLD_imm17_2
}, "an SVE vector register with optional three bit index"},
335 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zd0_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zd
}, "an SVE vector register with option zero index"},
336 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zd1_17_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zd
, FLD_imm17_1
}, "an SVE vector register with optional one bit index"},
337 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zd2_18_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zd
, FLD_imm17_2
}, "an SVE vector register with optional two bit index"},
338 {AARCH64_OPND_CLASS_SVE_REG
, "SVE_Zd3_22_INDEX", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SVE_Zd
, FLD_SVE_i3h
, FLD_imm17_2
}, "an SVE vector register with optional three bit index"},
339 {AARCH64_OPND_CLASS_IMMEDIATE
, "SME_VLxN_10", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_VL_10
}, "VLx2 or VLx4"},
340 {AARCH64_OPND_CLASS_IMMEDIATE
, "SME_VLxN_13", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SME_VL_13
}, "VLx2 or VLx4"},
341 {AARCH64_OPND_CLASS_SYSTEM
, "SME_ZT0", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "ZT0"},
342 {AARCH64_OPND_CLASS_IMMEDIATE
, "SME_ZT0_INDEX", OPD_F_SHIFT_BY_3
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm3_12
}, "a ZT0 index"},
343 {AARCH64_OPND_CLASS_IMMEDIATE
, "SME_ZT0_INDEX2_12", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm3_12
}, "a ZT0 index"},
344 {AARCH64_OPND_CLASS_SYSTEM
, "SME_ZT0_LIST", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "{ ZT0 }"},
345 {AARCH64_OPND_CLASS_IMMEDIATE
, "TME_UIMM16", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_imm16_5
}, "a 16-bit unsigned immediate for TME tcancel"},
346 {AARCH64_OPND_CLASS_SIMD_ELEMENT
, "SM3_IMM2", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_SM3_imm2
}, "an indexed SM3 vector immediate"},
347 {AARCH64_OPND_CLASS_INT_REG
, "MOPS_ADDR_Rd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rd
}, "a register destination address with writeback"},
348 {AARCH64_OPND_CLASS_INT_REG
, "MOPS_ADDR_Rs", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rs
}, "a register source address with writeback"},
349 {AARCH64_OPND_CLASS_INT_REG
, "MOPS_WB_Rd", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
}, "an integer register with writeback"},
350 {AARCH64_OPND_CLASS_IMMEDIATE
, "CSSC_SIMM8", OPD_F_SEXT
| OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_CSSC_imm8
}, "an 8-bit signed immediate"},
351 {AARCH64_OPND_CLASS_IMMEDIATE
, "CSSC_UIMM8", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_CSSC_imm8
}, "an 8-bit unsigned immediate"},
352 {AARCH64_OPND_CLASS_ADDRESS
, "RCPC3_ADDR_OPT_POSTIND", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_opc2
}, "an address with post-incrementing by ammount of loaded bytes"},
353 {AARCH64_OPND_CLASS_ADDRESS
, "RCPC3_ADDR_OPT_PREIND_WB", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_opc2
}, "an address with pre-incrementing with write-back by ammount of stored bytes"},
354 {AARCH64_OPND_CLASS_ADDRESS
, "RCPC3_ADDR_POSTIND", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an address with post-incrementing by ammount of loaded bytes"},
355 {AARCH64_OPND_CLASS_ADDRESS
, "RCPC3_ADDR_PREIND_WB", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {}, "an address with pre-incrementing with write-back by ammount of stored bytes"},
356 {AARCH64_OPND_CLASS_ADDRESS
, "RCPC3_ADDR_OFFSET", OPD_F_HAS_INSERTER
| OPD_F_HAS_EXTRACTOR
, {FLD_Rn
,FLD_imm9
}, "an address with an optional 8-bit signed immediate offset"},
357 {AARCH64_OPND_CLASS_NIL
, "", 0, {0}, "DUMMY"},
360 /* Indexed by an enum aarch64_op enumerator, the value is the offset of
361 the corresponding aarch64_opcode entry in the aarch64_opcode_table. */
363 static const unsigned op_enum_table
[] =
449 /* Given the opcode enumerator OP, return the pointer to the corresponding
452 const aarch64_opcode
*
453 aarch64_get_opcode (enum aarch64_op op
)
455 return aarch64_opcode_table
+ op_enum_table
[op
];