1 // i386 register table.
3 // Make %st first as we test for it.
4 st, FloatReg|FloatAcc, 0, 0
7 cl, Reg8|ShiftCount, 0, 1
14 axl, Reg8|Acc, RegRex64, 0
15 cxl, Reg8, RegRex64, 1
16 dxl, Reg8, RegRex64, 2
17 bxl, Reg8, RegRex64, 3
18 spl, Reg8, RegRex64, 4
19 bpl, Reg8, RegRex64, 5
20 sil, Reg8, RegRex64, 6
21 dil, Reg8, RegRex64, 7
22 r8b, Reg8, RegRex|RegRex64, 0
23 r9b, Reg8, RegRex|RegRex64, 1
24 r10b, Reg8, RegRex|RegRex64, 2
25 r11b, Reg8, RegRex|RegRex64, 3
26 r12b, Reg8, RegRex|RegRex64, 4
27 r13b, Reg8, RegRex|RegRex64, 5
28 r14b, Reg8, RegRex|RegRex64, 6
29 r15b, Reg8, RegRex|RegRex64, 7
33 dx, Reg16|InOutPortReg, 0, 2
34 bx, Reg16|BaseIndex, 0, 3
36 bp, Reg16|BaseIndex, 0, 5
37 si, Reg16|BaseIndex, 0, 6
38 di, Reg16|BaseIndex, 0, 7
41 r10w, Reg16, RegRex, 2
42 r11w, Reg16, RegRex, 3
43 r12w, Reg16, RegRex, 4
44 r13w, Reg16, RegRex, 5
45 r14w, Reg16, RegRex, 6
46 r15w, Reg16, RegRex, 7
48 eax, Reg32|BaseIndex|Acc, 0, 0
49 ecx, Reg32|BaseIndex, 0, 1
50 edx, Reg32|BaseIndex, 0, 2
51 ebx, Reg32|BaseIndex, 0, 3
53 ebp, Reg32|BaseIndex, 0, 5
54 esi, Reg32|BaseIndex, 0, 6
55 edi, Reg32|BaseIndex, 0, 7
56 r8d, Reg32|BaseIndex, RegRex, 0
57 r9d, Reg32|BaseIndex, RegRex, 1
58 r10d, Reg32|BaseIndex, RegRex, 2
59 r11d, Reg32|BaseIndex, RegRex, 3
60 r12d, Reg32|BaseIndex, RegRex, 4
61 r13d, Reg32|BaseIndex, RegRex, 5
62 r14d, Reg32|BaseIndex, RegRex, 6
63 r15d, Reg32|BaseIndex, RegRex, 7
64 rax, Reg64|BaseIndex|Acc, 0, 0
65 rcx, Reg64|BaseIndex, 0, 1
66 rdx, Reg64|BaseIndex, 0, 2
67 rbx, Reg64|BaseIndex, 0, 3
69 rbp, Reg64|BaseIndex, 0, 5
70 rsi, Reg64|BaseIndex, 0, 6
71 rdi, Reg64|BaseIndex, 0, 7
72 r8, Reg64|BaseIndex, RegRex, 0
73 r9, Reg64|BaseIndex, RegRex, 1
74 r10, Reg64|BaseIndex, RegRex, 2
75 r11, Reg64|BaseIndex, RegRex, 3
76 r12, Reg64|BaseIndex, RegRex, 4
77 r13, Reg64|BaseIndex, RegRex, 5
78 r14, Reg64|BaseIndex, RegRex, 6
79 r15, Reg64|BaseIndex, RegRex, 7
96 cr8, Control, RegRex, 0
97 cr9, Control, RegRex, 1
98 cr10, Control, RegRex, 2
99 cr11, Control, RegRex, 3
100 cr12, Control, RegRex, 4
101 cr13, Control, RegRex, 5
102 cr14, Control, RegRex, 6
103 cr15, Control, RegRex, 7
113 db8, Debug, RegRex, 0
114 db9, Debug, RegRex, 1
115 db10, Debug, RegRex, 2
116 db11, Debug, RegRex, 3
117 db12, Debug, RegRex, 4
118 db13, Debug, RegRex, 5
119 db14, Debug, RegRex, 6
120 db15, Debug, RegRex, 7
129 dr8, Debug, RegRex, 0
130 dr9, Debug, RegRex, 1
131 dr10, Debug, RegRex, 2
132 dr11, Debug, RegRex, 3
133 dr12, Debug, RegRex, 4
134 dr13, Debug, RegRex, 5
135 dr14, Debug, RegRex, 6
136 dr15, Debug, RegRex, 7
146 // MMX and simd registers.
163 xmm8, RegXMM, RegRex, 0
164 xmm9, RegXMM, RegRex, 1
165 xmm10, RegXMM, RegRex, 2
166 xmm11, RegXMM, RegRex, 3
167 xmm12, RegXMM, RegRex, 4
168 xmm13, RegXMM, RegRex, 5
169 xmm14, RegXMM, RegRex, 6
170 xmm15, RegXMM, RegRex, 7
171 // No type will make this register rejected for all purposes except
172 // for addressing. This saves creating one extra type for RIP.
175 st(0), FloatReg|FloatAcc, 0, 0
176 st(1), FloatReg, 0, 1
177 st(2), FloatReg, 0, 2
178 st(3), FloatReg, 0, 3
179 st(4), FloatReg, 0, 4
180 st(5), FloatReg, 0, 5
181 st(6), FloatReg, 0, 6
182 st(7), FloatReg, 0, 7