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