i386-reg.tbl revision 256281
11553Srgrimes// i386 register table. 21553Srgrimes 31553Srgrimes// Make %st first as we test for it. 41553Srgrimesst, FloatReg|FloatAcc, 0, 0 51553Srgrimes// 8 bit regs 61553Srgrimesal, Reg8|Acc, 0, 0 71553Srgrimescl, Reg8|ShiftCount, 0, 1 81553Srgrimesdl, Reg8, 0, 2 91553Srgrimesbl, Reg8, 0, 3 101553Srgrimesah, Reg8, 0, 4 111553Srgrimesch, Reg8, 0, 5 121553Srgrimesdh, Reg8, 0, 6 131553Srgrimesbh, Reg8, 0, 7 141553Srgrimesaxl, Reg8|Acc, RegRex64, 0 151553Srgrimescxl, Reg8, RegRex64, 1 161553Srgrimesdxl, Reg8, RegRex64, 2 171553Srgrimesbxl, Reg8, RegRex64, 3 181553Srgrimesspl, Reg8, RegRex64, 4 191553Srgrimesbpl, Reg8, RegRex64, 5 201553Srgrimessil, Reg8, RegRex64, 6 211553Srgrimesdil, Reg8, RegRex64, 7 221553Srgrimesr8b, Reg8, RegRex|RegRex64, 0 231553Srgrimesr9b, Reg8, RegRex|RegRex64, 1 241553Srgrimesr10b, Reg8, RegRex|RegRex64, 2 251553Srgrimesr11b, Reg8, RegRex|RegRex64, 3 261553Srgrimesr12b, Reg8, RegRex|RegRex64, 4 271553Srgrimesr13b, Reg8, RegRex|RegRex64, 5 281553Srgrimesr14b, Reg8, RegRex|RegRex64, 6 2950479Speterr15b, Reg8, RegRex|RegRex64, 7 301553Srgrimes// 16 bit regs 311553Srgrimesax, Reg16|Acc, 0, 0 321553Srgrimescx, Reg16, 0, 1 3379537Srudx, Reg16|InOutPortReg, 0, 2 341553Srgrimesbx, Reg16|BaseIndex, 0, 3 351553Srgrimessp, Reg16, 0, 4 361553Srgrimesbp, Reg16|BaseIndex, 0, 5 371553Srgrimessi, Reg16|BaseIndex, 0, 6 3868965Srudi, Reg16|BaseIndex, 0, 7 391553Srgrimesr8w, Reg16, RegRex, 0 401553Srgrimesr9w, Reg16, RegRex, 1 411553Srgrimesr10w, Reg16, RegRex, 2 4295127Scharnierr11w, Reg16, RegRex, 3 4395127Scharnierr12w, Reg16, RegRex, 4 4495127Scharnierr13w, Reg16, RegRex, 5 451553Srgrimesr14w, Reg16, RegRex, 6 461553Srgrimesr15w, Reg16, RegRex, 7 471553Srgrimes// 32 bit regs 481553Srgrimeseax, Reg32|BaseIndex|Acc, 0, 0 491553Srgrimesecx, Reg32|BaseIndex, 0, 1 501553Srgrimesedx, Reg32|BaseIndex, 0, 2 511553Srgrimesebx, Reg32|BaseIndex, 0, 3 521553Srgrimesesp, Reg32, 0, 4 531553Srgrimesebp, Reg32|BaseIndex, 0, 5 541553Srgrimesesi, Reg32|BaseIndex, 0, 6 551553Srgrimesedi, Reg32|BaseIndex, 0, 7 561553Srgrimesr8d, Reg32|BaseIndex, RegRex, 0 571553Srgrimesr9d, Reg32|BaseIndex, RegRex, 1 581553Srgrimesr10d, Reg32|BaseIndex, RegRex, 2 591553Srgrimesr11d, Reg32|BaseIndex, RegRex, 3 601553Srgrimesr12d, Reg32|BaseIndex, RegRex, 4 611553Srgrimesr13d, Reg32|BaseIndex, RegRex, 5 621553Srgrimesr14d, Reg32|BaseIndex, RegRex, 6 631553Srgrimesr15d, Reg32|BaseIndex, RegRex, 7 641553Srgrimesrax, Reg64|BaseIndex|Acc, 0, 0 651553Srgrimesrcx, Reg64|BaseIndex, 0, 1 661553Srgrimesrdx, Reg64|BaseIndex, 0, 2 671553Srgrimesrbx, Reg64|BaseIndex, 0, 3 681553Srgrimesrsp, Reg64, 0, 4 691553Srgrimesrbp, Reg64|BaseIndex, 0, 5 7095127Scharnierrsi, Reg64|BaseIndex, 0, 6 7195127Scharnierrdi, Reg64|BaseIndex, 0, 7 7295127Scharnierr8, Reg64|BaseIndex, RegRex, 0 731553Srgrimesr9, Reg64|BaseIndex, RegRex, 1 74r10, Reg64|BaseIndex, RegRex, 2 75r11, Reg64|BaseIndex, RegRex, 3 76r12, Reg64|BaseIndex, RegRex, 4 77r13, Reg64|BaseIndex, RegRex, 5 78r14, Reg64|BaseIndex, RegRex, 6 79r15, Reg64|BaseIndex, RegRex, 7 80// Segment registers. 81es, SReg2, 0, 0 82cs, SReg2, 0, 1 83ss, SReg2, 0, 2 84ds, SReg2, 0, 3 85fs, SReg3, 0, 4 86gs, SReg3, 0, 5 87// Control registers. 88cr0, Control, 0, 0 89cr1, Control, 0, 1 90cr2, Control, 0, 2 91cr3, Control, 0, 3 92cr4, Control, 0, 4 93cr5, Control, 0, 5 94cr6, Control, 0, 6 95cr7, Control, 0, 7 96cr8, Control, RegRex, 0 97cr9, Control, RegRex, 1 98cr10, Control, RegRex, 2 99cr11, Control, RegRex, 3 100cr12, Control, RegRex, 4 101cr13, Control, RegRex, 5 102cr14, Control, RegRex, 6 103cr15, Control, RegRex, 7 104// Debug registers. 105db0, Debug, 0, 0 106db1, Debug, 0, 1 107db2, Debug, 0, 2 108db3, Debug, 0, 3 109db4, Debug, 0, 4 110db5, Debug, 0, 5 111db6, Debug, 0, 6 112db7, Debug, 0, 7 113db8, Debug, RegRex, 0 114db9, Debug, RegRex, 1 115db10, Debug, RegRex, 2 116db11, Debug, RegRex, 3 117db12, Debug, RegRex, 4 118db13, Debug, RegRex, 5 119db14, Debug, RegRex, 6 120db15, Debug, RegRex, 7 121dr0, Debug, 0, 0 122dr1, Debug, 0, 1 123dr2, Debug, 0, 2 124dr3, Debug, 0, 3 125dr4, Debug, 0, 4 126dr5, Debug, 0, 5 127dr6, Debug, 0, 6 128dr7, Debug, 0, 7 129dr8, Debug, RegRex, 0 130dr9, Debug, RegRex, 1 131dr10, Debug, RegRex, 2 132dr11, Debug, RegRex, 3 133dr12, Debug, RegRex, 4 134dr13, Debug, RegRex, 5 135dr14, Debug, RegRex, 6 136dr15, Debug, RegRex, 7 137// Test registers. 138tr0, Test, 0, 0 139tr1, Test, 0, 1 140tr2, Test, 0, 2 141tr3, Test, 0, 3 142tr4, Test, 0, 4 143tr5, Test, 0, 5 144tr6, Test, 0, 6 145tr7, Test, 0, 7 146// MMX and simd registers. 147mm0, RegMMX, 0, 0 148mm1, RegMMX, 0, 1 149mm2, RegMMX, 0, 2 150mm3, RegMMX, 0, 3 151mm4, RegMMX, 0, 4 152mm5, RegMMX, 0, 5 153mm6, RegMMX, 0, 6 154mm7, RegMMX, 0, 7 155xmm0, RegXMM, 0, 0 156xmm1, RegXMM, 0, 1 157xmm2, RegXMM, 0, 2 158xmm3, RegXMM, 0, 3 159xmm4, RegXMM, 0, 4 160xmm5, RegXMM, 0, 5 161xmm6, RegXMM, 0, 6 162xmm7, RegXMM, 0, 7 163xmm8, RegXMM, RegRex, 0 164xmm9, RegXMM, RegRex, 1 165xmm10, RegXMM, RegRex, 2 166xmm11, RegXMM, RegRex, 3 167xmm12, RegXMM, RegRex, 4 168xmm13, RegXMM, RegRex, 5 169xmm14, RegXMM, RegRex, 6 170xmm15, 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. 173rip, BaseIndex, 0, 0 174// fp regs. 175st(0), FloatReg|FloatAcc, 0, 0 176st(1), FloatReg, 0, 1 177st(2), FloatReg, 0, 2 178st(3), FloatReg, 0, 3 179st(4), FloatReg, 0, 4 180st(5), FloatReg, 0, 5 181st(6), FloatReg, 0, 6 182st(7), FloatReg, 0, 7 183