1 /*% c99 -O3 -Wall -o # %
11 "add", "sub", "neg", "div", "rem", "udiv", "urem", "mul",
12 "and", "or", "xor", "sar", "shr", "shl", "stored",
13 "stores", "storel", "storew", "storeh", "storeb",
14 "load", "loadsw", "loaduw", "loadsh", "loaduh",
15 "loadsb", "loadub", "extsw", "extuw", "extsh",
16 "extuh", "extsb", "extub", "exts", "truncd",
17 "stosi", "dtosi", "stoui", "dtoui", "uwtof",
18 "ultof", "swtof", "sltof", "cast", "copy",
19 "alloc4", "alloc8", "alloc16", "culew", "cultw",
20 "cslew", "csltw", "csgtw", "csgew", "cugtw",
21 "cugew", "ceqw", "cnew", "culel", "cultl", "cslel",
22 "csltl", "csgtl", "csgel", "cugtl", "cugel",
23 "ceql", "cnel", "cles", "clts", "cgts", "cges",
24 "cnes", "ceqs", "cos", "cuos", "cled", "cltd",
25 "cgtd", "cged", "cned", "ceqd", "cod", "cuod",
26 "vaarg", "vastart", "...", "env",
28 "call", "phi", "jmp", "jnz", "ret", "export",
29 "function", "type", "data", "section", "align",
30 "l", "w", "h", "b", "d", "s", "z", "loadw", "loadl",
31 "loads", "loadd", "alloc1", "alloc2",
35 Ntok
= sizeof tok
/ sizeof tok
[0]
58 bmap
= malloc(1u << 31);
60 for (i
=0; i
<Ntok
; ++i
) {
64 printf("error: hash()\n");
65 printf("\t%s\n", tok
[i
]);
66 printf("\t%s\n", tok
[j
]);
72 for (i
=0; 1<<i
< Ntok
; ++i
);
76 printf("trying M=%d...\n", M
);
79 memset(bmap
, 0, 1 << (32 - M
));
80 for (i
=0; i
<Ntok
; ++i
) {
87 printf("found K=%d for M=%d\n", K
, M
);