Changed current relation from BasicBlock to BasicBlockImpl, and Function
[jitcs.git] / src / data / x86_reglist.ltxt
blob2c7b689b7f3d25f547c3790fb70d64d29e91c2a1
1 #/bin/emblua LUAPREFIX=/*| 
2 /*| --VARDELIM=%
3 /*| --CMTDELIM=//
4 /*| --XDUMPSCRIPT=true
5 /*| -----------------------------------
6 /*| local regsacdb = { "A", "C", "D", "B" }
7 /*| local regsx = { "SP", "BP", "SI", "DI" }
8 /*| local function hex2(n) return string.format("%02x", n) end
9 :classes
10 FLAGSRC
11 GRC8L : partial
12 GRC8H : partial
13 GRC8X : partial; x64
14 GRC16 : partial
15 GRC32
16 GRC64; x64
17 GRC = GR32; x32
18 GRC = GR64; x64
19 VRC128
20 VRC256
21 VRC512
22 :registers
23 FLAGS = 0x01, FLAGSRC, 16; x32
24 FLAGS = 0x01, FLAGSRC, 48; x64
25 /*| for k,r in ipairs(regsacdb) do
26 %(r)L  = 0x%(hex2(32+k-1)), GRC8L, %(k-1)
27 %(r)H  = 0x%(hex2(32+4+k-1)), GRC8H, %(k-1)
28 %(r)X  = 0x%(hex2(64+k-1)), GRC16, %(k-1)
29 E%(r)X  = 0x%(hex2(16+k-1)), GRC32, %(k-1)
30 R%(r)X  = 0x%(hex2(80+k-1)), GRC64, %(k-1); x64
31 /*| end
32 /*| for k,r in ipairs(regsx) do
33 %(r)L = 0x%(hex2(48+4+k-1)), GRC8X, %(4+k-1); x64
34 %(r) = 0x%(hex2(64+4+k-1)), GRC16, %(4+k-1)
35 E%(r) = 0x%(hex2(16+4+k-1)), GRC32, %(4+k-1)
36 R%(r) = 0x%(hex2(80+4+k-1)), GRC64, %(4+k-1); x64
37 /*| end
38 /*| for k = 0, 7 do
39 XMM%(k) = 0x%(hex2(96+k)), VRC128, %(8+k); x32
40 YMM%(k) = 0x%(hex2(128+k)), VRC256, %(8+k); x32
41 ZMM%(k) = 0x%(hex2(160+k)), VRC512, %(8+k); x32
42 XMM%(k) = 0x%(hex2(96+k)), VRC128, %(16+k); x64
43 YMM%(k) = 0x%(hex2(128+k)), VRC256, %(16+k); x64
44 ZMM%(k) = 0x%(hex2(160+k)), VRC512, %(16+k); x64
45 /*| end --*/
46 /*| for k = 8, 15 do
47 R%(k)L = 0x%(hex2(48+k)), GR8X, %(k); x64
48 R%(k)W = 0x%(hex2(64+k)), GR16, %(k); x64
49 R%(k)D = 0x%(hex2(48+k)), GR32, %(k); x64
50 R%(k) = 0x%(hex2(48+k)), GR64, %(k); x64
51 XMM%(k) = 0x%(hex2(96+k)), VR128, %(16+k); x64
52 YMM%(k) = 0x%(hex2(128+k)), VR256, %(16+k); x64
53 ZMM%(k) = 0x%(hex2(160+k)), VR512, %(16+k); x64
54 /*| end --*/
55 /*| for k = 16, 31 do
56 XMM%(k) = 0x%(hex2(96+k)), VR128, %(16+k); x64
57 YMM%(k) = 0x%(hex2(128+k)), VR256, %(16+k); x64
58 ZMM%(k) = 0x%(hex2(160+k)), VR512, %(16+k); x64
59 /*| end --*/
60 :aliases
61 /*| for k,r in ipairs(regsacdb) do
62 R%(k-1)L = %(r)L
63 R%(k-1)H = %(r)H
64 R%(k-1)W = %(r)X
65 R%(k-1)D = E%(r)X
66 R%(k-1)  = E%(r)X; x32
67 R%(k-1)  = R%(r)X; x64
68 R%(r)X  = E%(r)X; x32
69 /*| end
70 /*| for k,r in ipairs(regsx) do
71 R%(4+k-1)L = %(r)L
72 R%(4+k-1)W = %(r)
73 R%(4+k-1)D = E%(r)
74 R%(4+k-1) = E%(r); x32
75 R%(4+k-1) = R%(r); x64
76 R%(r)  = E%(r); x32
77 /*| end
78 :superclasses
79 GRC16 -> GRC32
80 GRC32 -> GRC64
81 VRC128 -> VRC256
82 VRC256 -> VRC512
83 :allocation
84 GRC8 = 0-3; x32
85 GRC8 = 0-3, 8-15; x64
86 GRC16 = 0-7; x32
87 GRC16 = 0-15; x64
88 GRC32 = 0-7; x32
89 GRC32 = 0-15; x64
90 GRC64 = 0-15; x64
91 VRC128 = 8-15; x32
92 VRC128 = 16-47; x64
93 VRC256 = 8-15; x32
94 VRC256 = 16-47; x64
95 VRC512 = 8-15; x32
96 VRC512 = 16-47; x64
97 :deallocation
98 GRC8 = 0-3:AL; x32
99 GRC8 = 0-3:AL, 8-15:R8L; x64
100 GRC16 = 0-15:AX
101 GRC32 = 0-15:EAX
102 GRC64 = 0-15:RAX
103 VRC128 = 16-47:XMM0
104 VRC256 = 16-47:YMM0
105 VRC512 = 16-47:ZMM0