The check to see if an item was already on the heap was randomly hitting.
[jitcs.git] / tests / test_asm_x86_xx_reg.lcpp
blob7c3867b9a61bf5ae1ece607c84bc0b91ff15c47d
1 #/bin/emblua LUAPREFIX=/*|
2 /*| --VARDELIM=%
3 /*| --CMTDELIM=//
4 /*| --DUMPSCRIPT=true
5 /*| --*/
6 /*| local N = $$$
7 /*| function pred_ipairs(t, pred)
8 /*|   return function(t,k)
9 /*|       local v
10 /*|       repeat
11 /*|         k = k + 1 
12 /*|         v = t[k]
13 /*|       until not v or pred(k, v)
14 /*|       return v and k, v
15 /*|     end, t or {}, 0
16 /*| end
17 /*| function isa(v) return not v[N==32 and "x64" or "x32only"] end
18 /*| function isaN(k,v) return not v[N==32 and "x64" or "x32"] end
19 #include "test_asm_x86_%(N).h"
20 #include "jitcs_machine.h"
21 #include "jitcs_tmpalloc.h"
22 #include "jitcs_memmgr.h"
23 #include "jitcs_function.h"
24 #include "jitcs_int_virtualregister.h"
26 #include <stdio.h>
28 using namespace jitcs;
30 /*| local rdata= runfile("../src/data/x86_reglist.dat")
31 /*| local function hex2(n) return string.format("0x%02x", n) end
32 /*|  --*/
34 void TestAssemblerX86_%(N)::setupRegisterClassNames
35     (std::map<std::string, u32>& m) {
36 /*| for _,cl in pred_ipairs(rdata.refclasses,isaN) do
37   m["%(string.lower(cl.name))"] = x86_%(N)::RCL_%(cl.name);
38 /*| end
39 /*| for _,cl in pred_ipairs(rdata.refclassaliases,isaN) do
40   m["%(string.lower(cl.name))"] = x86_%(N)::RCL_%(cl.name);
41 /*| end
42 /*| --*/
45 /*| local n2c = {}
46 /*| for k,v in ipairs(rdata.classes) do 
47 /*|   n2c[v.name] = v
48 /*| end
49 /*| local c2r, c2ra, n2r = {}, {}, {}
50 /*| for k,v in ipairs(rdata.registers) do 
51 /*|   n2r[v.name] = v
52 /*|   local c = c2r[v.class] or {}
53 /*|   c2r[v.class] = c
54 /*|   c[#c+1] = v
55 /*| end
56 /*| for k,v2 in ipairs(rdata.registeraliases) do 
57 /*|   local v = n2r[v2.dest]
58 /*|   local c = c2ra[v.class] or {}
59 /*|   c2ra[v.class] = c
60 /*|   c[#c+1] = v2
61 /*| end
62 /*|  --*/
63 void TestAssemblerX86_%(N)::setupFixedRegisterNames
64     (std::map<std::string, const VirtualRegister*>& m) {
65 /*| for l,cl in pred_ipairs(rdata.classes,isaN) do
66 /*|   for k,v in pred_ipairs(c2r[cl.name],isaN) do
67   m["%(string.lower(v.name))"] = static_cast<const VirtualRegister*>(x86_%(N)::%(v.name));
68 /*|   end
69 /*|   for k,v in pred_ipairs(c2ra[cl.name],isaN) do
70   m["%(string.lower(v.name))"] = static_cast<const VirtualRegister*>(x86_%(N)::%(v.name));
71 /*|   end
72 /*| end
73 /*|  --*/