Update year range in copyright notice of binutils files
[binutils-gdb.git] / opcodes / i386-reg.tbl
blob5b80ee6026e5fe30f7373cb0aa96f5f959f5410c
1 // i386 register table.
2 // Copyright (C) 2007-2024 Free Software Foundation, Inc.
3 //
4 // This file is part of the GNU opcodes library.
5 //
6 // This library is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 3, or (at your option)
9 // any later version.
11 // It is distributed in the hope that it will be useful, but WITHOUT
12 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 // or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
14 // License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with GAS; see the file COPYING.  If not, write to the Free
18 // Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
19 // 02110-1301, USA.
21 // 8 bit regs
22 al, Class=Reg|Instance=Accum|Byte, 0, 0, Dw2Inval, Dw2Inval
23 cl, Class=Reg|Instance=RegC|Byte, 0, 1, Dw2Inval, Dw2Inval
24 dl, Class=Reg|Byte, 0, 2, Dw2Inval, Dw2Inval
25 bl, Class=Reg|Byte, 0, 3, Dw2Inval, Dw2Inval
26 ah, Class=Reg|Byte, 0, 4, Dw2Inval, Dw2Inval
27 ch, Class=Reg|Byte, 0, 5, Dw2Inval, Dw2Inval
28 dh, Class=Reg|Byte, 0, 6, Dw2Inval, Dw2Inval
29 bh, Class=Reg|Byte, 0, 7, Dw2Inval, Dw2Inval
30 axl, Class=Reg|Byte, RegRex64, 0, Dw2Inval, Dw2Inval
31 cxl, Class=Reg|Byte, RegRex64, 1, Dw2Inval, Dw2Inval
32 dxl, Class=Reg|Byte, RegRex64, 2, Dw2Inval, Dw2Inval
33 bxl, Class=Reg|Byte, RegRex64, 3, Dw2Inval, Dw2Inval
34 spl, Class=Reg|Byte, RegRex64, 4, Dw2Inval, Dw2Inval
35 bpl, Class=Reg|Byte, RegRex64, 5, Dw2Inval, Dw2Inval
36 sil, Class=Reg|Byte, RegRex64, 6, Dw2Inval, Dw2Inval
37 dil, Class=Reg|Byte, RegRex64, 7, Dw2Inval, Dw2Inval
38 r8b, Class=Reg|Byte, RegRex|RegRex64, 0, Dw2Inval, Dw2Inval
39 r9b, Class=Reg|Byte, RegRex|RegRex64, 1, Dw2Inval, Dw2Inval
40 r10b, Class=Reg|Byte, RegRex|RegRex64, 2, Dw2Inval, Dw2Inval
41 r11b, Class=Reg|Byte, RegRex|RegRex64, 3, Dw2Inval, Dw2Inval
42 r12b, Class=Reg|Byte, RegRex|RegRex64, 4, Dw2Inval, Dw2Inval
43 r13b, Class=Reg|Byte, RegRex|RegRex64, 5, Dw2Inval, Dw2Inval
44 r14b, Class=Reg|Byte, RegRex|RegRex64, 6, Dw2Inval, Dw2Inval
45 r15b, Class=Reg|Byte, RegRex|RegRex64, 7, Dw2Inval, Dw2Inval
46 r16b, Class=Reg|Byte, RegRex2|RegRex64, 0, Dw2Inval, Dw2Inval
47 r17b, Class=Reg|Byte, RegRex2|RegRex64, 1, Dw2Inval, Dw2Inval
48 r18b, Class=Reg|Byte, RegRex2|RegRex64, 2, Dw2Inval, Dw2Inval
49 r19b, Class=Reg|Byte, RegRex2|RegRex64, 3, Dw2Inval, Dw2Inval
50 r20b, Class=Reg|Byte, RegRex2|RegRex64, 4, Dw2Inval, Dw2Inval
51 r21b, Class=Reg|Byte, RegRex2|RegRex64, 5, Dw2Inval, Dw2Inval
52 r22b, Class=Reg|Byte, RegRex2|RegRex64, 6, Dw2Inval, Dw2Inval
53 r23b, Class=Reg|Byte, RegRex2|RegRex64, 7, Dw2Inval, Dw2Inval
54 r24b, Class=Reg|Byte, RegRex2|RegRex64|RegRex, 0, Dw2Inval, Dw2Inval
55 r25b, Class=Reg|Byte, RegRex2|RegRex64|RegRex, 1, Dw2Inval, Dw2Inval
56 r26b, Class=Reg|Byte, RegRex2|RegRex64|RegRex, 2, Dw2Inval, Dw2Inval
57 r27b, Class=Reg|Byte, RegRex2|RegRex64|RegRex, 3, Dw2Inval, Dw2Inval
58 r28b, Class=Reg|Byte, RegRex2|RegRex64|RegRex, 4, Dw2Inval, Dw2Inval
59 r29b, Class=Reg|Byte, RegRex2|RegRex64|RegRex, 5, Dw2Inval, Dw2Inval
60 r30b, Class=Reg|Byte, RegRex2|RegRex64|RegRex, 6, Dw2Inval, Dw2Inval
61 r31b, Class=Reg|Byte, RegRex2|RegRex64|RegRex, 7, Dw2Inval, Dw2Inval
62 // 16 bit regs
63 ax, Class=Reg|Instance=Accum|Word, 0, 0, Dw2Inval, Dw2Inval
64 cx, Class=Reg|Word, 0, 1, Dw2Inval, Dw2Inval
65 dx, Class=Reg|Instance=RegD|Word, 0, 2, Dw2Inval, Dw2Inval
66 bx, Class=Reg|Word|BaseIndex, 0, 3, Dw2Inval, Dw2Inval
67 sp, Class=Reg|Word, 0, 4, Dw2Inval, Dw2Inval
68 bp, Class=Reg|Word|BaseIndex, 0, 5, Dw2Inval, Dw2Inval
69 si, Class=Reg|Word|BaseIndex, 0, 6, Dw2Inval, Dw2Inval
70 di, Class=Reg|Word|BaseIndex, 0, 7, Dw2Inval, Dw2Inval
71 r8w, Class=Reg|Word, RegRex, 0, Dw2Inval, Dw2Inval
72 r9w, Class=Reg|Word, RegRex, 1, Dw2Inval, Dw2Inval
73 r10w, Class=Reg|Word, RegRex, 2, Dw2Inval, Dw2Inval
74 r11w, Class=Reg|Word, RegRex, 3, Dw2Inval, Dw2Inval
75 r12w, Class=Reg|Word, RegRex, 4, Dw2Inval, Dw2Inval
76 r13w, Class=Reg|Word, RegRex, 5, Dw2Inval, Dw2Inval
77 r14w, Class=Reg|Word, RegRex, 6, Dw2Inval, Dw2Inval
78 r15w, Class=Reg|Word, RegRex, 7, Dw2Inval, Dw2Inval
79 r16w, Class=Reg|Word, RegRex2, 0, Dw2Inval, Dw2Inval
80 r17w, Class=Reg|Word, RegRex2, 1, Dw2Inval, Dw2Inval
81 r18w, Class=Reg|Word, RegRex2, 2, Dw2Inval, Dw2Inval
82 r19w, Class=Reg|Word, RegRex2, 3, Dw2Inval, Dw2Inval
83 r20w, Class=Reg|Word, RegRex2, 4, Dw2Inval, Dw2Inval
84 r21w, Class=Reg|Word, RegRex2, 5, Dw2Inval, Dw2Inval
85 r22w, Class=Reg|Word, RegRex2, 6, Dw2Inval, Dw2Inval
86 r23w, Class=Reg|Word, RegRex2, 7, Dw2Inval, Dw2Inval
87 r24w, Class=Reg|Word, RegRex2|RegRex, 0, Dw2Inval, Dw2Inval
88 r25w, Class=Reg|Word, RegRex2|RegRex, 1, Dw2Inval, Dw2Inval
89 r26w, Class=Reg|Word, RegRex2|RegRex, 2, Dw2Inval, Dw2Inval
90 r27w, Class=Reg|Word, RegRex2|RegRex, 3, Dw2Inval, Dw2Inval
91 r28w, Class=Reg|Word, RegRex2|RegRex, 4, Dw2Inval, Dw2Inval
92 r29w, Class=Reg|Word, RegRex2|RegRex, 5, Dw2Inval, Dw2Inval
93 r30w, Class=Reg|Word, RegRex2|RegRex, 6, Dw2Inval, Dw2Inval
94 r31w, Class=Reg|Word, RegRex2|RegRex, 7, Dw2Inval, Dw2Inval
95 // 32 bit regs
96 eax, Class=Reg|Instance=Accum|Dword|BaseIndex, 0, 0, 0, Dw2Inval
97 ecx, Class=Reg|Instance=RegC|Dword|BaseIndex, 0, 1, 1, Dw2Inval
98 edx, Class=Reg|Instance=RegD|Dword|BaseIndex, 0, 2, 2, Dw2Inval
99 ebx, Class=Reg|Instance=RegB|Dword|BaseIndex, 0, 3, 3, Dw2Inval
100 esp, Class=Reg|Dword, 0, 4, 4, Dw2Inval
101 ebp, Class=Reg|Dword|BaseIndex, 0, 5, 5, Dw2Inval
102 esi, Class=Reg|Dword|BaseIndex, 0, 6, 6, Dw2Inval
103 edi, Class=Reg|Dword|BaseIndex, 0, 7, 7, Dw2Inval
104 r8d, Class=Reg|Dword|BaseIndex, RegRex, 0, Dw2Inval, Dw2Inval
105 r9d, Class=Reg|Dword|BaseIndex, RegRex, 1, Dw2Inval, Dw2Inval
106 r10d, Class=Reg|Dword|BaseIndex, RegRex, 2, Dw2Inval, Dw2Inval
107 r11d, Class=Reg|Dword|BaseIndex, RegRex, 3, Dw2Inval, Dw2Inval
108 r12d, Class=Reg|Dword|BaseIndex, RegRex, 4, Dw2Inval, Dw2Inval
109 r13d, Class=Reg|Dword|BaseIndex, RegRex, 5, Dw2Inval, Dw2Inval
110 r14d, Class=Reg|Dword|BaseIndex, RegRex, 6, Dw2Inval, Dw2Inval
111 r15d, Class=Reg|Dword|BaseIndex, RegRex, 7, Dw2Inval, Dw2Inval
112 r16d, Class=Reg|Dword|BaseIndex, RegRex2, 0, Dw2Inval, Dw2Inval
113 r17d, Class=Reg|Dword|BaseIndex, RegRex2, 1, Dw2Inval, Dw2Inval
114 r18d, Class=Reg|Dword|BaseIndex, RegRex2, 2, Dw2Inval, Dw2Inval
115 r19d, Class=Reg|Dword|BaseIndex, RegRex2, 3, Dw2Inval, Dw2Inval
116 r20d, Class=Reg|Dword|BaseIndex, RegRex2, 4, Dw2Inval, Dw2Inval
117 r21d, Class=Reg|Dword|BaseIndex, RegRex2, 5, Dw2Inval, Dw2Inval
118 r22d, Class=Reg|Dword|BaseIndex, RegRex2, 6, Dw2Inval, Dw2Inval
119 r23d, Class=Reg|Dword|BaseIndex, RegRex2, 7, Dw2Inval, Dw2Inval
120 r24d, Class=Reg|Dword|BaseIndex, RegRex2|RegRex, 0, Dw2Inval, Dw2Inval
121 r25d, Class=Reg|Dword|BaseIndex, RegRex2|RegRex, 1, Dw2Inval, Dw2Inval
122 r26d, Class=Reg|Dword|BaseIndex, RegRex2|RegRex, 2, Dw2Inval, Dw2Inval
123 r27d, Class=Reg|Dword|BaseIndex, RegRex2|RegRex, 3, Dw2Inval, Dw2Inval
124 r28d, Class=Reg|Dword|BaseIndex, RegRex2|RegRex, 4, Dw2Inval, Dw2Inval
125 r29d, Class=Reg|Dword|BaseIndex, RegRex2|RegRex, 5, Dw2Inval, Dw2Inval
126 r30d, Class=Reg|Dword|BaseIndex, RegRex2|RegRex, 6, Dw2Inval, Dw2Inval
127 r31d, Class=Reg|Dword|BaseIndex, RegRex2|RegRex, 7, Dw2Inval, Dw2Inval
128 rax, Class=Reg|Instance=Accum|Qword|BaseIndex, 0, 0, Dw2Inval, 0
129 rcx, Class=Reg|Instance=RegC|Qword|BaseIndex, 0, 1, Dw2Inval, 2
130 rdx, Class=Reg|Instance=RegD|Qword|BaseIndex, 0, 2, Dw2Inval, 1
131 rbx, Class=Reg|Instance=RegB|Qword|BaseIndex, 0, 3, Dw2Inval, 3
132 rsp, Class=Reg|Qword, 0, 4, Dw2Inval, 7
133 rbp, Class=Reg|Qword|BaseIndex, 0, 5, Dw2Inval, 6
134 rsi, Class=Reg|Qword|BaseIndex, 0, 6, Dw2Inval, 4
135 rdi, Class=Reg|Qword|BaseIndex, 0, 7, Dw2Inval, 5
136 r8, Class=Reg|Qword|BaseIndex, RegRex, 0, Dw2Inval, 8
137 r9, Class=Reg|Qword|BaseIndex, RegRex, 1, Dw2Inval, 9
138 r10, Class=Reg|Qword|BaseIndex, RegRex, 2, Dw2Inval, 10
139 r11, Class=Reg|Qword|BaseIndex, RegRex, 3, Dw2Inval, 11
140 r12, Class=Reg|Qword|BaseIndex, RegRex, 4, Dw2Inval, 12
141 r13, Class=Reg|Qword|BaseIndex, RegRex, 5, Dw2Inval, 13
142 r14, Class=Reg|Qword|BaseIndex, RegRex, 6, Dw2Inval, 14
143 r15, Class=Reg|Qword|BaseIndex, RegRex, 7, Dw2Inval, 15
144 r16, Class=Reg|Qword|BaseIndex, RegRex2, 0, Dw2Inval, 130
145 r17, Class=Reg|Qword|BaseIndex, RegRex2, 1, Dw2Inval, 131
146 r18, Class=Reg|Qword|BaseIndex, RegRex2, 2, Dw2Inval, 132
147 r19, Class=Reg|Qword|BaseIndex, RegRex2, 3, Dw2Inval, 133
148 r20, Class=Reg|Qword|BaseIndex, RegRex2, 4, Dw2Inval, 134
149 r21, Class=Reg|Qword|BaseIndex, RegRex2, 5, Dw2Inval, 135
150 r22, Class=Reg|Qword|BaseIndex, RegRex2, 6, Dw2Inval, 136
151 r23, Class=Reg|Qword|BaseIndex, RegRex2, 7, Dw2Inval, 137
152 r24, Class=Reg|Qword|BaseIndex, RegRex2|RegRex, 0, Dw2Inval, 138
153 r25, Class=Reg|Qword|BaseIndex, RegRex2|RegRex, 1, Dw2Inval, 139
154 r26, Class=Reg|Qword|BaseIndex, RegRex2|RegRex, 2, Dw2Inval, 140
155 r27, Class=Reg|Qword|BaseIndex, RegRex2|RegRex, 3, Dw2Inval, 141
156 r28, Class=Reg|Qword|BaseIndex, RegRex2|RegRex, 4, Dw2Inval, 142
157 r29, Class=Reg|Qword|BaseIndex, RegRex2|RegRex, 5, Dw2Inval, 143
158 r30, Class=Reg|Qword|BaseIndex, RegRex2|RegRex, 6, Dw2Inval, 144
159 r31, Class=Reg|Qword|BaseIndex, RegRex2|RegRex, 7, Dw2Inval, 145
160 // Vector mask registers.
161 k0, Class=RegMask, 0, 0, 93, 118
162 k1, Class=RegMask, 0, 1, 94, 119
163 k2, Class=RegMask, 0, 2, 95, 120
164 k3, Class=RegMask, 0, 3, 96, 121
165 k4, Class=RegMask, 0, 4, 97, 122
166 k5, Class=RegMask, 0, 5, 98, 123
167 k6, Class=RegMask, 0, 6, 99, 124
168 k7, Class=RegMask, 0, 7, 100, 125
169 // Segment registers.
170 es, Class=SReg, 0, 0, 40, 50
171 cs, Class=SReg, 0, 1, 41, 51
172 ss, Class=SReg, 0, 2, 42, 52
173 ds, Class=SReg, 0, 3, 43, 53
174 fs, Class=SReg, 0, 4, 44, 54
175 gs, Class=SReg, 0, 5, 45, 55
176 flat, Class=SReg, 0, RegFlat, Dw2Inval, Dw2Inval
177 // Control registers.
178 cr0, Class=RegCR, 0, 0, Dw2Inval, Dw2Inval
179 cr1, Class=RegCR, 0, 1, Dw2Inval, Dw2Inval
180 cr2, Class=RegCR, 0, 2, Dw2Inval, Dw2Inval
181 cr3, Class=RegCR, 0, 3, Dw2Inval, Dw2Inval
182 cr4, Class=RegCR, 0, 4, Dw2Inval, Dw2Inval
183 cr5, Class=RegCR, 0, 5, Dw2Inval, Dw2Inval
184 cr6, Class=RegCR, 0, 6, Dw2Inval, Dw2Inval
185 cr7, Class=RegCR, 0, 7, Dw2Inval, Dw2Inval
186 cr8, Class=RegCR, RegRex, 0, Dw2Inval, Dw2Inval
187 cr9, Class=RegCR, RegRex, 1, Dw2Inval, Dw2Inval
188 cr10, Class=RegCR, RegRex, 2, Dw2Inval, Dw2Inval
189 cr11, Class=RegCR, RegRex, 3, Dw2Inval, Dw2Inval
190 cr12, Class=RegCR, RegRex, 4, Dw2Inval, Dw2Inval
191 cr13, Class=RegCR, RegRex, 5, Dw2Inval, Dw2Inval
192 cr14, Class=RegCR, RegRex, 6, Dw2Inval, Dw2Inval
193 cr15, Class=RegCR, RegRex, 7, Dw2Inval, Dw2Inval
194 // Debug registers.
195 db0, Class=RegDR, 0, 0, Dw2Inval, Dw2Inval
196 db1, Class=RegDR, 0, 1, Dw2Inval, Dw2Inval
197 db2, Class=RegDR, 0, 2, Dw2Inval, Dw2Inval
198 db3, Class=RegDR, 0, 3, Dw2Inval, Dw2Inval
199 db4, Class=RegDR, 0, 4, Dw2Inval, Dw2Inval
200 db5, Class=RegDR, 0, 5, Dw2Inval, Dw2Inval
201 db6, Class=RegDR, 0, 6, Dw2Inval, Dw2Inval
202 db7, Class=RegDR, 0, 7, Dw2Inval, Dw2Inval
203 db8, Class=RegDR, RegRex, 0, Dw2Inval, Dw2Inval
204 db9, Class=RegDR, RegRex, 1, Dw2Inval, Dw2Inval
205 db10, Class=RegDR, RegRex, 2, Dw2Inval, Dw2Inval
206 db11, Class=RegDR, RegRex, 3, Dw2Inval, Dw2Inval
207 db12, Class=RegDR, RegRex, 4, Dw2Inval, Dw2Inval
208 db13, Class=RegDR, RegRex, 5, Dw2Inval, Dw2Inval
209 db14, Class=RegDR, RegRex, 6, Dw2Inval, Dw2Inval
210 db15, Class=RegDR, RegRex, 7, Dw2Inval, Dw2Inval
211 dr0, Class=RegDR, 0, 0, Dw2Inval, Dw2Inval
212 dr1, Class=RegDR, 0, 1, Dw2Inval, Dw2Inval
213 dr2, Class=RegDR, 0, 2, Dw2Inval, Dw2Inval
214 dr3, Class=RegDR, 0, 3, Dw2Inval, Dw2Inval
215 dr4, Class=RegDR, 0, 4, Dw2Inval, Dw2Inval
216 dr5, Class=RegDR, 0, 5, Dw2Inval, Dw2Inval
217 dr6, Class=RegDR, 0, 6, Dw2Inval, Dw2Inval
218 dr7, Class=RegDR, 0, 7, Dw2Inval, Dw2Inval
219 dr8, Class=RegDR, RegRex, 0, Dw2Inval, Dw2Inval
220 dr9, Class=RegDR, RegRex, 1, Dw2Inval, Dw2Inval
221 dr10, Class=RegDR, RegRex, 2, Dw2Inval, Dw2Inval
222 dr11, Class=RegDR, RegRex, 3, Dw2Inval, Dw2Inval
223 dr12, Class=RegDR, RegRex, 4, Dw2Inval, Dw2Inval
224 dr13, Class=RegDR, RegRex, 5, Dw2Inval, Dw2Inval
225 dr14, Class=RegDR, RegRex, 6, Dw2Inval, Dw2Inval
226 dr15, Class=RegDR, RegRex, 7, Dw2Inval, Dw2Inval
227 // Test registers.
228 tr0, Class=RegTR, 0, 0, Dw2Inval, Dw2Inval
229 tr1, Class=RegTR, 0, 1, Dw2Inval, Dw2Inval
230 tr2, Class=RegTR, 0, 2, Dw2Inval, Dw2Inval
231 tr3, Class=RegTR, 0, 3, Dw2Inval, Dw2Inval
232 tr4, Class=RegTR, 0, 4, Dw2Inval, Dw2Inval
233 tr5, Class=RegTR, 0, 5, Dw2Inval, Dw2Inval
234 tr6, Class=RegTR, 0, 6, Dw2Inval, Dw2Inval
235 tr7, Class=RegTR, 0, 7, Dw2Inval, Dw2Inval
236 // MMX and simd registers.
237 mm0, Class=RegMMX, 0, 0, 29, 41
238 mm1, Class=RegMMX, 0, 1, 30, 42
239 mm2, Class=RegMMX, 0, 2, 31, 43
240 mm3, Class=RegMMX, 0, 3, 32, 44
241 mm4, Class=RegMMX, 0, 4, 33, 45
242 mm5, Class=RegMMX, 0, 5, 34, 46
243 mm6, Class=RegMMX, 0, 6, 35, 47
244 mm7, Class=RegMMX, 0, 7, 36, 48
245 xmm0, Class=RegSIMD|Instance=Accum|Xmmword, 0, 0, 21, 17
246 xmm1, Class=RegSIMD|Xmmword, 0, 1, 22, 18
247 xmm2, Class=RegSIMD|Xmmword, 0, 2, 23, 19
248 xmm3, Class=RegSIMD|Xmmword, 0, 3, 24, 20
249 xmm4, Class=RegSIMD|Xmmword, 0, 4, 25, 21
250 xmm5, Class=RegSIMD|Xmmword, 0, 5, 26, 22
251 xmm6, Class=RegSIMD|Xmmword, 0, 6, 27, 23
252 xmm7, Class=RegSIMD|Xmmword, 0, 7, 28, 24
253 xmm8, Class=RegSIMD|Xmmword, RegRex, 0, Dw2Inval, 25
254 xmm9, Class=RegSIMD|Xmmword, RegRex, 1, Dw2Inval, 26
255 xmm10, Class=RegSIMD|Xmmword, RegRex, 2, Dw2Inval, 27
256 xmm11, Class=RegSIMD|Xmmword, RegRex, 3, Dw2Inval, 28
257 xmm12, Class=RegSIMD|Xmmword, RegRex, 4, Dw2Inval, 29
258 xmm13, Class=RegSIMD|Xmmword, RegRex, 5, Dw2Inval, 30
259 xmm14, Class=RegSIMD|Xmmword, RegRex, 6, Dw2Inval, 31
260 xmm15, Class=RegSIMD|Xmmword, RegRex, 7, Dw2Inval, 32
261 xmm16, Class=RegSIMD|Xmmword, RegVRex, 0, Dw2Inval, 67
262 xmm17, Class=RegSIMD|Xmmword, RegVRex, 1, Dw2Inval, 68
263 xmm18, Class=RegSIMD|Xmmword, RegVRex, 2, Dw2Inval, 69
264 xmm19, Class=RegSIMD|Xmmword, RegVRex, 3, Dw2Inval, 70
265 xmm20, Class=RegSIMD|Xmmword, RegVRex, 4, Dw2Inval, 71
266 xmm21, Class=RegSIMD|Xmmword, RegVRex, 5, Dw2Inval, 72
267 xmm22, Class=RegSIMD|Xmmword, RegVRex, 6, Dw2Inval, 73
268 xmm23, Class=RegSIMD|Xmmword, RegVRex, 7, Dw2Inval, 74
269 xmm24, Class=RegSIMD|Xmmword, RegVRex|RegRex, 0, Dw2Inval, 75
270 xmm25, Class=RegSIMD|Xmmword, RegVRex|RegRex, 1, Dw2Inval, 76
271 xmm26, Class=RegSIMD|Xmmword, RegVRex|RegRex, 2, Dw2Inval, 77
272 xmm27, Class=RegSIMD|Xmmword, RegVRex|RegRex, 3, Dw2Inval, 78
273 xmm28, Class=RegSIMD|Xmmword, RegVRex|RegRex, 4, Dw2Inval, 79
274 xmm29, Class=RegSIMD|Xmmword, RegVRex|RegRex, 5, Dw2Inval, 80
275 xmm30, Class=RegSIMD|Xmmword, RegVRex|RegRex, 6, Dw2Inval, 81
276 xmm31, Class=RegSIMD|Xmmword, RegVRex|RegRex, 7, Dw2Inval, 82
277 // AVX registers.
278 ymm0, Class=RegSIMD|Ymmword, 0, 0, Dw2Inval, Dw2Inval
279 ymm1, Class=RegSIMD|Ymmword, 0, 1, Dw2Inval, Dw2Inval
280 ymm2, Class=RegSIMD|Ymmword, 0, 2, Dw2Inval, Dw2Inval
281 ymm3, Class=RegSIMD|Ymmword, 0, 3, Dw2Inval, Dw2Inval
282 ymm4, Class=RegSIMD|Ymmword, 0, 4, Dw2Inval, Dw2Inval
283 ymm5, Class=RegSIMD|Ymmword, 0, 5, Dw2Inval, Dw2Inval
284 ymm6, Class=RegSIMD|Ymmword, 0, 6, Dw2Inval, Dw2Inval
285 ymm7, Class=RegSIMD|Ymmword, 0, 7, Dw2Inval, Dw2Inval
286 ymm8, Class=RegSIMD|Ymmword, RegRex, 0, Dw2Inval, Dw2Inval
287 ymm9, Class=RegSIMD|Ymmword, RegRex, 1, Dw2Inval, Dw2Inval
288 ymm10, Class=RegSIMD|Ymmword, RegRex, 2, Dw2Inval, Dw2Inval
289 ymm11, Class=RegSIMD|Ymmword, RegRex, 3, Dw2Inval, Dw2Inval
290 ymm12, Class=RegSIMD|Ymmword, RegRex, 4, Dw2Inval, Dw2Inval
291 ymm13, Class=RegSIMD|Ymmword, RegRex, 5, Dw2Inval, Dw2Inval
292 ymm14, Class=RegSIMD|Ymmword, RegRex, 6, Dw2Inval, Dw2Inval
293 ymm15, Class=RegSIMD|Ymmword, RegRex, 7, Dw2Inval, Dw2Inval
294 ymm16, Class=RegSIMD|Ymmword, RegVRex, 0, Dw2Inval, Dw2Inval
295 ymm17, Class=RegSIMD|Ymmword, RegVRex, 1, Dw2Inval, Dw2Inval
296 ymm18, Class=RegSIMD|Ymmword, RegVRex, 2, Dw2Inval, Dw2Inval
297 ymm19, Class=RegSIMD|Ymmword, RegVRex, 3, Dw2Inval, Dw2Inval
298 ymm20, Class=RegSIMD|Ymmword, RegVRex, 4, Dw2Inval, Dw2Inval
299 ymm21, Class=RegSIMD|Ymmword, RegVRex, 5, Dw2Inval, Dw2Inval
300 ymm22, Class=RegSIMD|Ymmword, RegVRex, 6, Dw2Inval, Dw2Inval
301 ymm23, Class=RegSIMD|Ymmword, RegVRex, 7, Dw2Inval, Dw2Inval
302 ymm24, Class=RegSIMD|Ymmword, RegVRex|RegRex, 0, Dw2Inval, Dw2Inval
303 ymm25, Class=RegSIMD|Ymmword, RegVRex|RegRex, 1, Dw2Inval, Dw2Inval
304 ymm26, Class=RegSIMD|Ymmword, RegVRex|RegRex, 2, Dw2Inval, Dw2Inval
305 ymm27, Class=RegSIMD|Ymmword, RegVRex|RegRex, 3, Dw2Inval, Dw2Inval
306 ymm28, Class=RegSIMD|Ymmword, RegVRex|RegRex, 4, Dw2Inval, Dw2Inval
307 ymm29, Class=RegSIMD|Ymmword, RegVRex|RegRex, 5, Dw2Inval, Dw2Inval
308 ymm30, Class=RegSIMD|Ymmword, RegVRex|RegRex, 6, Dw2Inval, Dw2Inval
309 ymm31, Class=RegSIMD|Ymmword, RegVRex|RegRex, 7, Dw2Inval, Dw2Inval
310 // AVX512 registers.
311 zmm0, Class=RegSIMD|Zmmword, 0, 0, Dw2Inval, Dw2Inval
312 zmm1, Class=RegSIMD|Zmmword, 0, 1, Dw2Inval, Dw2Inval
313 zmm2, Class=RegSIMD|Zmmword, 0, 2, Dw2Inval, Dw2Inval
314 zmm3, Class=RegSIMD|Zmmword, 0, 3, Dw2Inval, Dw2Inval
315 zmm4, Class=RegSIMD|Zmmword, 0, 4, Dw2Inval, Dw2Inval
316 zmm5, Class=RegSIMD|Zmmword, 0, 5, Dw2Inval, Dw2Inval
317 zmm6, Class=RegSIMD|Zmmword, 0, 6, Dw2Inval, Dw2Inval
318 zmm7, Class=RegSIMD|Zmmword, 0, 7, Dw2Inval, Dw2Inval
319 zmm8, Class=RegSIMD|Zmmword, RegRex, 0, Dw2Inval, Dw2Inval
320 zmm9, Class=RegSIMD|Zmmword, RegRex, 1, Dw2Inval, Dw2Inval
321 zmm10, Class=RegSIMD|Zmmword, RegRex, 2, Dw2Inval, Dw2Inval
322 zmm11, Class=RegSIMD|Zmmword, RegRex, 3, Dw2Inval, Dw2Inval
323 zmm12, Class=RegSIMD|Zmmword, RegRex, 4, Dw2Inval, Dw2Inval
324 zmm13, Class=RegSIMD|Zmmword, RegRex, 5, Dw2Inval, Dw2Inval
325 zmm14, Class=RegSIMD|Zmmword, RegRex, 6, Dw2Inval, Dw2Inval
326 zmm15, Class=RegSIMD|Zmmword, RegRex, 7, Dw2Inval, Dw2Inval
327 zmm16, Class=RegSIMD|Zmmword, RegVRex, 0, Dw2Inval, Dw2Inval
328 zmm17, Class=RegSIMD|Zmmword, RegVRex, 1, Dw2Inval, Dw2Inval
329 zmm18, Class=RegSIMD|Zmmword, RegVRex, 2, Dw2Inval, Dw2Inval
330 zmm19, Class=RegSIMD|Zmmword, RegVRex, 3, Dw2Inval, Dw2Inval
331 zmm20, Class=RegSIMD|Zmmword, RegVRex, 4, Dw2Inval, Dw2Inval
332 zmm21, Class=RegSIMD|Zmmword, RegVRex, 5, Dw2Inval, Dw2Inval
333 zmm22, Class=RegSIMD|Zmmword, RegVRex, 6, Dw2Inval, Dw2Inval
334 zmm23, Class=RegSIMD|Zmmword, RegVRex, 7, Dw2Inval, Dw2Inval
335 zmm24, Class=RegSIMD|Zmmword, RegVRex|RegRex, 0, Dw2Inval, Dw2Inval
336 zmm25, Class=RegSIMD|Zmmword, RegVRex|RegRex, 1, Dw2Inval, Dw2Inval
337 zmm26, Class=RegSIMD|Zmmword, RegVRex|RegRex, 2, Dw2Inval, Dw2Inval
338 zmm27, Class=RegSIMD|Zmmword, RegVRex|RegRex, 3, Dw2Inval, Dw2Inval
339 zmm28, Class=RegSIMD|Zmmword, RegVRex|RegRex, 4, Dw2Inval, Dw2Inval
340 zmm29, Class=RegSIMD|Zmmword, RegVRex|RegRex, 5, Dw2Inval, Dw2Inval
341 zmm30, Class=RegSIMD|Zmmword, RegVRex|RegRex, 6, Dw2Inval, Dw2Inval
342 zmm31, Class=RegSIMD|Zmmword, RegVRex|RegRex, 7, Dw2Inval, Dw2Inval
343 // TMM registers for AMX
344 tmm0, Class=RegSIMD|Tmmword, 0, 0, Dw2Inval, Dw2Inval
345 tmm1, Class=RegSIMD|Tmmword, 0, 1, Dw2Inval, Dw2Inval
346 tmm2, Class=RegSIMD|Tmmword, 0, 2, Dw2Inval, Dw2Inval
347 tmm3, Class=RegSIMD|Tmmword, 0, 3, Dw2Inval, Dw2Inval
348 tmm4, Class=RegSIMD|Tmmword, 0, 4, Dw2Inval, Dw2Inval
349 tmm5, Class=RegSIMD|Tmmword, 0, 5, Dw2Inval, Dw2Inval
350 tmm6, Class=RegSIMD|Tmmword, 0, 6, Dw2Inval, Dw2Inval
351 tmm7, Class=RegSIMD|Tmmword, 0, 7, Dw2Inval, Dw2Inval
352 // Bound registers for MPX
353 bnd0, Class=RegBND, 0, 0, Dw2Inval, Dw2Inval
354 bnd1, Class=RegBND, 0, 1, Dw2Inval, Dw2Inval
355 bnd2, Class=RegBND, 0, 2, Dw2Inval, Dw2Inval
356 bnd3, Class=RegBND, 0, 3, Dw2Inval, Dw2Inval
357 // No Class=Reg will make these registers rejected for all purposes except
358 // for addressing.  This saves creating one extra type for RIP/EIP.
359 rip, Qword, RegRex64, RegIP, Dw2Inval, 16
360 eip, Dword, RegRex64, RegIP, 8, Dw2Inval
361 // No Class=Reg will make these registers rejected for all purposes except
362 // for addressing.
363 riz, Qword|BaseIndex, RegRex64, RegIZ, Dw2Inval, Dw2Inval
364 eiz, Dword|BaseIndex, 0, RegIZ, Dw2Inval, Dw2Inval
365 // fp regs. No need for an explicit st(0) here.
366 st, Class=Reg|Instance=Accum|Tbyte, 0, 0, 11, 33
367 st(1), Class=Reg|Tbyte, 0, 1, 12, 34
368 st(2), Class=Reg|Tbyte, 0, 2, 13, 35
369 st(3), Class=Reg|Tbyte, 0, 3, 14, 36
370 st(4), Class=Reg|Tbyte, 0, 4, 15, 37
371 st(5), Class=Reg|Tbyte, 0, 5, 16, 38
372 st(6), Class=Reg|Tbyte, 0, 6, 17, 39
373 st(7), Class=Reg|Tbyte, 0, 7, 18, 40
374 // Pseudo-register names only used in .cfi_* directives
375 eflags, 0, 0, 0, 9, 49
376 rflags, 0, 0, 0, Dw2Inval, 49
377 fs.base, 0, 0, 0, Dw2Inval, 58
378 gs.base, 0, 0, 0, Dw2Inval, 59
379 tr, 0, 0, 0, 48, 62
380 ldtr, 0, 0, 0, 49, 63
381 // st0...7 for backward compatibility
382 st0, 0, 0, 0, 11, 33
383 st1, 0, 0, 1, 12, 34
384 st2, 0, 0, 2, 13, 35
385 st3, 0, 0, 3, 14, 36
386 st4, 0, 0, 4, 15, 37
387 st5, 0, 0, 5, 16, 38
388 st6, 0, 0, 6, 17, 39
389 st7, 0, 0, 7, 18, 40
390 fcw, 0, 0, 0, 37, 65
391 fsw, 0, 0, 0, 38, 66
392 mxcsr, 0, 0, 0, 39, 64