Revert "Add support for AArch64 trace unit registers."
[deliverable/binutils-gdb.git] / opcodes / i386-reg.tbl
CommitLineData
40b8e679 1// i386 register table.
aa820537 2// Copyright 2007, 2008
9b201bb5
NC
3// Free Software Foundation, Inc.
4//
5// This file is part of the GNU opcodes library.
6//
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)
10// any later version.
11//
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.
16//
17// You should have received a copy of the GNU General Public License
18// along with GAS; see the file COPYING. If not, write to the Free
19// Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
20// 02110-1301, USA.
40b8e679
L
21
22// Make %st first as we test for it.
a60de03c 23st, FloatReg|FloatAcc, 0, 0, 11, 33
40b8e679 24// 8 bit regs
a60de03c
JB
25al, Reg8|Acc|Byte, 0, 0, Dw2Inval, Dw2Inval
26cl, Reg8|ShiftCount, 0, 1, Dw2Inval, Dw2Inval
27dl, Reg8, 0, 2, Dw2Inval, Dw2Inval
28bl, Reg8, 0, 3, Dw2Inval, Dw2Inval
29ah, Reg8, 0, 4, Dw2Inval, Dw2Inval
30ch, Reg8, 0, 5, Dw2Inval, Dw2Inval
31dh, Reg8, 0, 6, Dw2Inval, Dw2Inval
32bh, Reg8, 0, 7, Dw2Inval, Dw2Inval
33axl, Reg8|Acc|Byte, RegRex64, 0, Dw2Inval, Dw2Inval
34cxl, Reg8, RegRex64, 1, Dw2Inval, Dw2Inval
35dxl, Reg8, RegRex64, 2, Dw2Inval, Dw2Inval
36bxl, Reg8, RegRex64, 3, Dw2Inval, Dw2Inval
37spl, Reg8, RegRex64, 4, Dw2Inval, Dw2Inval
38bpl, Reg8, RegRex64, 5, Dw2Inval, Dw2Inval
39sil, Reg8, RegRex64, 6, Dw2Inval, Dw2Inval
40dil, Reg8, RegRex64, 7, Dw2Inval, Dw2Inval
41r8b, Reg8, RegRex|RegRex64, 0, Dw2Inval, Dw2Inval
42r9b, Reg8, RegRex|RegRex64, 1, Dw2Inval, Dw2Inval
43r10b, Reg8, RegRex|RegRex64, 2, Dw2Inval, Dw2Inval
44r11b, Reg8, RegRex|RegRex64, 3, Dw2Inval, Dw2Inval
45r12b, Reg8, RegRex|RegRex64, 4, Dw2Inval, Dw2Inval
46r13b, Reg8, RegRex|RegRex64, 5, Dw2Inval, Dw2Inval
47r14b, Reg8, RegRex|RegRex64, 6, Dw2Inval, Dw2Inval
48r15b, Reg8, RegRex|RegRex64, 7, Dw2Inval, Dw2Inval
40b8e679 49// 16 bit regs
a60de03c
JB
50ax, Reg16|Acc|Word, 0, 0, Dw2Inval, Dw2Inval
51cx, Reg16, 0, 1, Dw2Inval, Dw2Inval
52dx, Reg16|InOutPortReg, 0, 2, Dw2Inval, Dw2Inval
53bx, Reg16|BaseIndex, 0, 3, Dw2Inval, Dw2Inval
54sp, Reg16, 0, 4, Dw2Inval, Dw2Inval
55bp, Reg16|BaseIndex, 0, 5, Dw2Inval, Dw2Inval
56si, Reg16|BaseIndex, 0, 6, Dw2Inval, Dw2Inval
57di, Reg16|BaseIndex, 0, 7, Dw2Inval, Dw2Inval
58r8w, Reg16, RegRex, 0, Dw2Inval, Dw2Inval
59r9w, Reg16, RegRex, 1, Dw2Inval, Dw2Inval
60r10w, Reg16, RegRex, 2, Dw2Inval, Dw2Inval
61r11w, Reg16, RegRex, 3, Dw2Inval, Dw2Inval
62r12w, Reg16, RegRex, 4, Dw2Inval, Dw2Inval
63r13w, Reg16, RegRex, 5, Dw2Inval, Dw2Inval
64r14w, Reg16, RegRex, 6, Dw2Inval, Dw2Inval
65r15w, Reg16, RegRex, 7, Dw2Inval, Dw2Inval
40b8e679 66// 32 bit regs
a60de03c
JB
67eax, Reg32|BaseIndex|Acc|Dword, 0, 0, 0, Dw2Inval
68ecx, Reg32|BaseIndex, 0, 1, 1, Dw2Inval
69edx, Reg32|BaseIndex, 0, 2, 2, Dw2Inval
70ebx, Reg32|BaseIndex, 0, 3, 3, Dw2Inval
71esp, Reg32, 0, 4, 4, Dw2Inval
72ebp, Reg32|BaseIndex, 0, 5, 5, Dw2Inval
73esi, Reg32|BaseIndex, 0, 6, 6, Dw2Inval
74edi, Reg32|BaseIndex, 0, 7, 7, Dw2Inval
75r8d, Reg32|BaseIndex, RegRex, 0, Dw2Inval, Dw2Inval
76r9d, Reg32|BaseIndex, RegRex, 1, Dw2Inval, Dw2Inval
77r10d, Reg32|BaseIndex, RegRex, 2, Dw2Inval, Dw2Inval
78r11d, Reg32|BaseIndex, RegRex, 3, Dw2Inval, Dw2Inval
79r12d, Reg32|BaseIndex, RegRex, 4, Dw2Inval, Dw2Inval
80r13d, Reg32|BaseIndex, RegRex, 5, Dw2Inval, Dw2Inval
81r14d, Reg32|BaseIndex, RegRex, 6, Dw2Inval, Dw2Inval
82r15d, Reg32|BaseIndex, RegRex, 7, Dw2Inval, Dw2Inval
83rax, Reg64|BaseIndex|Acc|Qword, 0, 0, Dw2Inval, 0
84rcx, Reg64|BaseIndex, 0, 1, Dw2Inval, 2
85rdx, Reg64|BaseIndex, 0, 2, Dw2Inval, 1
86rbx, Reg64|BaseIndex, 0, 3, Dw2Inval, 3
87rsp, Reg64, 0, 4, Dw2Inval, 7
88rbp, Reg64|BaseIndex, 0, 5, Dw2Inval, 6
89rsi, Reg64|BaseIndex, 0, 6, Dw2Inval, 4
90rdi, Reg64|BaseIndex, 0, 7, Dw2Inval, 5
91r8, Reg64|BaseIndex, RegRex, 0, Dw2Inval, 8
92r9, Reg64|BaseIndex, RegRex, 1, Dw2Inval, 9
93r10, Reg64|BaseIndex, RegRex, 2, Dw2Inval, 10
94r11, Reg64|BaseIndex, RegRex, 3, Dw2Inval, 11
95r12, Reg64|BaseIndex, RegRex, 4, Dw2Inval, 12
96r13, Reg64|BaseIndex, RegRex, 5, Dw2Inval, 13
97r14, Reg64|BaseIndex, RegRex, 6, Dw2Inval, 14
98r15, Reg64|BaseIndex, RegRex, 7, Dw2Inval, 15
43234a1e
L
99// Vector mask registers.
100k0, RegMask, 0, 0, 93, 118
101k1, RegMask, 0, 1, 94, 119
102k2, RegMask, 0, 2, 95, 120
103k3, RegMask, 0, 3, 96, 121
104k4, RegMask, 0, 4, 97, 122
105k5, RegMask, 0, 5, 98, 123
106k6, RegMask, 0, 6, 99, 124
107k7, RegMask, 0, 7, 100, 125
f85fcb85 108// Segment registers.
a60de03c
JB
109es, SReg2, 0, 0, 40, 50
110cs, SReg2, 0, 1, 41, 51
111ss, SReg2, 0, 2, 42, 52
112ds, SReg2, 0, 3, 43, 53
113fs, SReg3, 0, 4, 44, 54
114gs, SReg3, 0, 5, 45, 55
b7240065 115flat, SReg3, 0, RegFlat, Dw2Inval, Dw2Inval
40b8e679 116// Control registers.
a60de03c
JB
117cr0, Control, 0, 0, Dw2Inval, Dw2Inval
118cr1, Control, 0, 1, Dw2Inval, Dw2Inval
119cr2, Control, 0, 2, Dw2Inval, Dw2Inval
120cr3, Control, 0, 3, Dw2Inval, Dw2Inval
121cr4, Control, 0, 4, Dw2Inval, Dw2Inval
122cr5, Control, 0, 5, Dw2Inval, Dw2Inval
123cr6, Control, 0, 6, Dw2Inval, Dw2Inval
124cr7, Control, 0, 7, Dw2Inval, Dw2Inval
125cr8, Control, RegRex, 0, Dw2Inval, Dw2Inval
126cr9, Control, RegRex, 1, Dw2Inval, Dw2Inval
127cr10, Control, RegRex, 2, Dw2Inval, Dw2Inval
128cr11, Control, RegRex, 3, Dw2Inval, Dw2Inval
129cr12, Control, RegRex, 4, Dw2Inval, Dw2Inval
130cr13, Control, RegRex, 5, Dw2Inval, Dw2Inval
131cr14, Control, RegRex, 6, Dw2Inval, Dw2Inval
132cr15, Control, RegRex, 7, Dw2Inval, Dw2Inval
40b8e679 133// Debug registers.
a60de03c
JB
134db0, Debug, 0, 0, Dw2Inval, Dw2Inval
135db1, Debug, 0, 1, Dw2Inval, Dw2Inval
136db2, Debug, 0, 2, Dw2Inval, Dw2Inval
137db3, Debug, 0, 3, Dw2Inval, Dw2Inval
138db4, Debug, 0, 4, Dw2Inval, Dw2Inval
139db5, Debug, 0, 5, Dw2Inval, Dw2Inval
140db6, Debug, 0, 6, Dw2Inval, Dw2Inval
141db7, Debug, 0, 7, Dw2Inval, Dw2Inval
142db8, Debug, RegRex, 0, Dw2Inval, Dw2Inval
143db9, Debug, RegRex, 1, Dw2Inval, Dw2Inval
144db10, Debug, RegRex, 2, Dw2Inval, Dw2Inval
145db11, Debug, RegRex, 3, Dw2Inval, Dw2Inval
146db12, Debug, RegRex, 4, Dw2Inval, Dw2Inval
147db13, Debug, RegRex, 5, Dw2Inval, Dw2Inval
148db14, Debug, RegRex, 6, Dw2Inval, Dw2Inval
149db15, Debug, RegRex, 7, Dw2Inval, Dw2Inval
150dr0, Debug, 0, 0, Dw2Inval, Dw2Inval
151dr1, Debug, 0, 1, Dw2Inval, Dw2Inval
152dr2, Debug, 0, 2, Dw2Inval, Dw2Inval
153dr3, Debug, 0, 3, Dw2Inval, Dw2Inval
154dr4, Debug, 0, 4, Dw2Inval, Dw2Inval
155dr5, Debug, 0, 5, Dw2Inval, Dw2Inval
156dr6, Debug, 0, 6, Dw2Inval, Dw2Inval
157dr7, Debug, 0, 7, Dw2Inval, Dw2Inval
158dr8, Debug, RegRex, 0, Dw2Inval, Dw2Inval
159dr9, Debug, RegRex, 1, Dw2Inval, Dw2Inval
160dr10, Debug, RegRex, 2, Dw2Inval, Dw2Inval
161dr11, Debug, RegRex, 3, Dw2Inval, Dw2Inval
162dr12, Debug, RegRex, 4, Dw2Inval, Dw2Inval
163dr13, Debug, RegRex, 5, Dw2Inval, Dw2Inval
164dr14, Debug, RegRex, 6, Dw2Inval, Dw2Inval
165dr15, Debug, RegRex, 7, Dw2Inval, Dw2Inval
40b8e679 166// Test registers.
a60de03c
JB
167tr0, Test, 0, 0, Dw2Inval, Dw2Inval
168tr1, Test, 0, 1, Dw2Inval, Dw2Inval
169tr2, Test, 0, 2, Dw2Inval, Dw2Inval
170tr3, Test, 0, 3, Dw2Inval, Dw2Inval
171tr4, Test, 0, 4, Dw2Inval, Dw2Inval
172tr5, Test, 0, 5, Dw2Inval, Dw2Inval
173tr6, Test, 0, 6, Dw2Inval, Dw2Inval
174tr7, Test, 0, 7, Dw2Inval, Dw2Inval
40b8e679 175// MMX and simd registers.
a60de03c
JB
176mm0, RegMMX, 0, 0, 29, 41
177mm1, RegMMX, 0, 1, 30, 42
178mm2, RegMMX, 0, 2, 31, 43
179mm3, RegMMX, 0, 3, 32, 44
180mm4, RegMMX, 0, 4, 33, 45
181mm5, RegMMX, 0, 5, 34, 46
182mm6, RegMMX, 0, 6, 35, 47
183mm7, RegMMX, 0, 7, 36, 48
184xmm0, RegXMM, 0, 0, 21, 17
185xmm1, RegXMM, 0, 1, 22, 18
186xmm2, RegXMM, 0, 2, 23, 19
187xmm3, RegXMM, 0, 3, 24, 20
188xmm4, RegXMM, 0, 4, 25, 21
189xmm5, RegXMM, 0, 5, 26, 22
190xmm6, RegXMM, 0, 6, 27, 23
191xmm7, RegXMM, 0, 7, 28, 24
192xmm8, RegXMM, RegRex, 0, Dw2Inval, 25
193xmm9, RegXMM, RegRex, 1, Dw2Inval, 26
194xmm10, RegXMM, RegRex, 2, Dw2Inval, 27
195xmm11, RegXMM, RegRex, 3, Dw2Inval, 28
196xmm12, RegXMM, RegRex, 4, Dw2Inval, 29
197xmm13, RegXMM, RegRex, 5, Dw2Inval, 30
198xmm14, RegXMM, RegRex, 6, Dw2Inval, 31
199xmm15, RegXMM, RegRex, 7, Dw2Inval, 32
43234a1e
L
200xmm16, RegXMM, RegVRex, 0, Dw2Inval, 67
201xmm17, RegXMM, RegVRex, 1, Dw2Inval, 68
202xmm18, RegXMM, RegVRex, 2, Dw2Inval, 69
203xmm19, RegXMM, RegVRex, 3, Dw2Inval, 70
204xmm20, RegXMM, RegVRex, 4, Dw2Inval, 71
205xmm21, RegXMM, RegVRex, 5, Dw2Inval, 72
206xmm22, RegXMM, RegVRex, 6, Dw2Inval, 73
207xmm23, RegXMM, RegVRex, 7, Dw2Inval, 74
208xmm24, RegXMM, RegVRex|RegRex, 0, Dw2Inval, 75
209xmm25, RegXMM, RegVRex|RegRex, 1, Dw2Inval, 76
210xmm26, RegXMM, RegVRex|RegRex, 2, Dw2Inval, 77
211xmm27, RegXMM, RegVRex|RegRex, 3, Dw2Inval, 78
212xmm28, RegXMM, RegVRex|RegRex, 4, Dw2Inval, 79
213xmm29, RegXMM, RegVRex|RegRex, 5, Dw2Inval, 80
214xmm30, RegXMM, RegVRex|RegRex, 6, Dw2Inval, 81
215xmm31, RegXMM, RegVRex|RegRex, 7, Dw2Inval, 82
c0f3af97 216// AVX registers.
a656ed5b
L
217ymm0, RegYMM, 0, 0, Dw2Inval, Dw2Inval
218ymm1, RegYMM, 0, 1, Dw2Inval, Dw2Inval
219ymm2, RegYMM, 0, 2, Dw2Inval, Dw2Inval
220ymm3, RegYMM, 0, 3, Dw2Inval, Dw2Inval
221ymm4, RegYMM, 0, 4, Dw2Inval, Dw2Inval
222ymm5, RegYMM, 0, 5, Dw2Inval, Dw2Inval
223ymm6, RegYMM, 0, 6, Dw2Inval, Dw2Inval
224ymm7, RegYMM, 0, 7, Dw2Inval, Dw2Inval
225ymm8, RegYMM, RegRex, 0, Dw2Inval, Dw2Inval
226ymm9, RegYMM, RegRex, 1, Dw2Inval, Dw2Inval
227ymm10, RegYMM, RegRex, 2, Dw2Inval, Dw2Inval
228ymm11, RegYMM, RegRex, 3, Dw2Inval, Dw2Inval
229ymm12, RegYMM, RegRex, 4, Dw2Inval, Dw2Inval
230ymm13, RegYMM, RegRex, 5, Dw2Inval, Dw2Inval
231ymm14, RegYMM, RegRex, 6, Dw2Inval, Dw2Inval
232ymm15, RegYMM, RegRex, 7, Dw2Inval, Dw2Inval
43234a1e
L
233ymm16, RegYMM, RegVRex, 0, Dw2Inval, Dw2Inval
234ymm17, RegYMM, RegVRex, 1, Dw2Inval, Dw2Inval
235ymm18, RegYMM, RegVRex, 2, Dw2Inval, Dw2Inval
236ymm19, RegYMM, RegVRex, 3, Dw2Inval, Dw2Inval
237ymm20, RegYMM, RegVRex, 4, Dw2Inval, Dw2Inval
238ymm21, RegYMM, RegVRex, 5, Dw2Inval, Dw2Inval
239ymm22, RegYMM, RegVRex, 6, Dw2Inval, Dw2Inval
240ymm23, RegYMM, RegVRex, 7, Dw2Inval, Dw2Inval
241ymm24, RegYMM, RegVRex|RegRex, 0, Dw2Inval, Dw2Inval
242ymm25, RegYMM, RegVRex|RegRex, 1, Dw2Inval, Dw2Inval
243ymm26, RegYMM, RegVRex|RegRex, 2, Dw2Inval, Dw2Inval
244ymm27, RegYMM, RegVRex|RegRex, 3, Dw2Inval, Dw2Inval
245ymm28, RegYMM, RegVRex|RegRex, 4, Dw2Inval, Dw2Inval
246ymm29, RegYMM, RegVRex|RegRex, 5, Dw2Inval, Dw2Inval
247ymm30, RegYMM, RegVRex|RegRex, 6, Dw2Inval, Dw2Inval
248ymm31, RegYMM, RegVRex|RegRex, 7, Dw2Inval, Dw2Inval
249// AVX512 registers.
250zmm0, RegZMM, 0, 0, Dw2Inval, Dw2Inval
251zmm1, RegZMM, 0, 1, Dw2Inval, Dw2Inval
252zmm2, RegZMM, 0, 2, Dw2Inval, Dw2Inval
253zmm3, RegZMM, 0, 3, Dw2Inval, Dw2Inval
254zmm4, RegZMM, 0, 4, Dw2Inval, Dw2Inval
255zmm5, RegZMM, 0, 5, Dw2Inval, Dw2Inval
256zmm6, RegZMM, 0, 6, Dw2Inval, Dw2Inval
257zmm7, RegZMM, 0, 7, Dw2Inval, Dw2Inval
258zmm8, RegZMM, RegRex, 0, Dw2Inval, Dw2Inval
259zmm9, RegZMM, RegRex, 1, Dw2Inval, Dw2Inval
260zmm10, RegZMM, RegRex, 2, Dw2Inval, Dw2Inval
261zmm11, RegZMM, RegRex, 3, Dw2Inval, Dw2Inval
262zmm12, RegZMM, RegRex, 4, Dw2Inval, Dw2Inval
263zmm13, RegZMM, RegRex, 5, Dw2Inval, Dw2Inval
264zmm14, RegZMM, RegRex, 6, Dw2Inval, Dw2Inval
265zmm15, RegZMM, RegRex, 7, Dw2Inval, Dw2Inval
266zmm16, RegZMM, RegVRex, 0, Dw2Inval, Dw2Inval
267zmm17, RegZMM, RegVRex, 1, Dw2Inval, Dw2Inval
268zmm18, RegZMM, RegVRex, 2, Dw2Inval, Dw2Inval
269zmm19, RegZMM, RegVRex, 3, Dw2Inval, Dw2Inval
270zmm20, RegZMM, RegVRex, 4, Dw2Inval, Dw2Inval
271zmm21, RegZMM, RegVRex, 5, Dw2Inval, Dw2Inval
272zmm22, RegZMM, RegVRex, 6, Dw2Inval, Dw2Inval
273zmm23, RegZMM, RegVRex, 7, Dw2Inval, Dw2Inval
274zmm24, RegZMM, RegVRex|RegRex, 0, Dw2Inval, Dw2Inval
275zmm25, RegZMM, RegVRex|RegRex, 1, Dw2Inval, Dw2Inval
276zmm26, RegZMM, RegVRex|RegRex, 2, Dw2Inval, Dw2Inval
277zmm27, RegZMM, RegVRex|RegRex, 3, Dw2Inval, Dw2Inval
278zmm28, RegZMM, RegVRex|RegRex, 4, Dw2Inval, Dw2Inval
279zmm29, RegZMM, RegVRex|RegRex, 5, Dw2Inval, Dw2Inval
280zmm30, RegZMM, RegVRex|RegRex, 6, Dw2Inval, Dw2Inval
281zmm31, RegZMM, RegVRex|RegRex, 7, Dw2Inval, Dw2Inval
7e8b059b
L
282// Bound registers for MPX
283bnd0, RegBND, 0, 0, Dw2Inval, Dw2Inval
284bnd1, RegBND, 0, 1, Dw2Inval, Dw2Inval
285bnd2, RegBND, 0, 2, Dw2Inval, Dw2Inval
286bnd3, RegBND, 0, 3, Dw2Inval, Dw2Inval
9a04903e
JB
287// No type will make these registers rejected for all purposes except
288// for addressing. This saves creating one extra type for RIP/EIP.
a60de03c
JB
289rip, BaseIndex, RegRex64, RegRip, Dw2Inval, 16
290eip, BaseIndex, RegRex64, RegEip, 8, Dw2Inval
db51cc60
L
291// No type will make these registers rejected for all purposes except
292// for addressing.
99dce992 293riz, BaseIndex, RegRex64, RegRiz, Dw2Inval, Dw2Inval
a60de03c 294eiz, BaseIndex, 0, RegEiz, Dw2Inval, Dw2Inval
40b8e679 295// fp regs.
a60de03c
JB
296st(0), FloatReg|FloatAcc, 0, 0, 11, 33
297st(1), FloatReg, 0, 1, 12, 34
298st(2), FloatReg, 0, 2, 13, 35
299st(3), FloatReg, 0, 3, 14, 36
300st(4), FloatReg, 0, 4, 15, 37
301st(5), FloatReg, 0, 5, 16, 38
302st(6), FloatReg, 0, 6, 17, 39
303st(7), FloatReg, 0, 7, 18, 40
304// Pseudo-register names only used in .cfi_* directives
305eflags, 0, 0, 0, 9, 49
306rflags, 0, 0, 0, Dw2Inval, 49
307fs.base, 0, 0, 0, Dw2Inval, 58
308gs.base, 0, 0, 0, Dw2Inval, 59
309tr, 0, 0, 0, 48, 62
310ldtr, 0, 0, 0, 49, 63
311// st0...7 for backward compatibility
312st0, 0, 0, 0, 11, 33
313st1, 0, 0, 1, 12, 34
314st2, 0, 0, 2, 13, 35
315st3, 0, 0, 3, 14, 36
316st4, 0, 0, 4, 15, 37
317st5, 0, 0, 5, 16, 38
318st6, 0, 0, 6, 17, 39
319st7, 0, 0, 7, 18, 40
320fcw, 0, 0, 0, 37, 65
321fsw, 0, 0, 0, 38, 66
322mxcsr, 0, 0, 0, 39, 64
This page took 0.301486 seconds and 4 git commands to generate.