#include "pass2.h" static int op0[] = { -1 }; static int op1[] = { -1 }; static int op2[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 }; static int op3[] = { -1 }; static int op4[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 }; static int op5[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 }; static int op6[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 }; static int op7[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 }; static int op8[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 }; static int op9[] = { 232, 233, -1 }; static int op10[] = { 68, 69, 70, 71, 72, 73, 74, 75, 76, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 233, -1 }; static int op11[] = { 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 233, -1 }; static int op12[] = { 151, 152, 153, 154, 155, 156, 157, 233, -1 }; static int op13[] = { 158, 159, 160, 161, 162, 233, -1 }; static int op14[] = { 163, 164, 165, 166, 167, 168, 233, -1 }; static int op15[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 183, 184, 185, 186, 187, 188, 189, 233, -1 }; static int op16[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 233, -1 }; static int op17[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 233, -1 }; static int op18[] = { 97, 98, 99, 100, 101, 102, 103, 233, -1 }; static int op19[] = { 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 233, -1 }; static int op20[] = { 210, 211, 212, 213, 232, 233, -1 }; static int op21[] = { -1 }; static int op22[] = { -1 }; static int op23[] = { 169, 170, 171, 172, 173, 174, 175, 227, 232, 233, -1 }; static int op24[] = { 205, 206, 207, 208, 209, 232, 233, -1 }; static int op25[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op26[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op27[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op28[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op29[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op30[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op31[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op32[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op33[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op34[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 }; static int op35[] = { 233, -1 }; static int op36[] = { 230, 232, 233, -1 }; static int op37[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 232, 233, -1 }; static int op38[] = { 1, 232, 233, -1 }; static int op39[] = { 233, -1 }; static int op40[] = { 233, -1 }; static int op41[] = { 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 233, -1 }; static int op42[] = { 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 232, 233, -1 }; static int op43[] = { 233, -1 }; static int op44[] = { 232, 233, -1 }; static int op45[] = { 65, 66, 67, 233, -1 }; static int op46[] = { 62, 63, 64, 232, 233, -1 }; static int op47[] = { 231, 233, -1 }; static int op48[] = { 233, -1 }; static int op49[] = { 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 228, -1 }; static int op50[] = { 150, 229, -1 }; static int op51[] = { 226, 232, 233, -1 }; static int op52[] = { 232, 233, -1 }; static int op53[] = { 233, -1 }; static int op54[] = { 190, 232, 233, -1 }; static int op55[] = { -1 }; static int op56[] = { 233, -1 }; static int op57[] = { 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 232, 233, -1 }; static int op58[] = { 232, 233, -1 }; int *qtable[] = { op0, op1, op2, op3, op4, op5, op6, op7, op8, op9, op10, op11, op12, op13, op14, op15, op16, op17, op18, op19, op20, op21, op22, op23, op24, op25, op26, op27, op28, op29, op30, op31, op32, op33, op34, op35, op36, op37, op38, op39, op40, op41, op42, op43, op44, op45, op46, op47, op48, op49, op50, op51, op52, op53, op54, op55, op56, op57, op58, }; int tempregs[] = { 0, 1, 2, -1 }; int permregs[] = { 3, 4, 5, -1 }; bittype validregs[] = { 0x7fffffff3f, }; static int amap[MAXREGS][NUMCLASS] = { /* 0 */{ 0x1,0x3,0x1f,0x0 }, /* 1 */{ 0x2,0xc,0x1e1,0x0 }, /* 2 */{ 0x4,0x30,0xe22,0x0 }, /* 3 */{ 0x8,0xc0,0x3244,0x0 }, /* 4 */{ 0x10,0x0,0x5488,0x0 }, /* 5 */{ 0x20,0x0,0x6910,0x0 }, /* 6 */{ 0x0,0x0,0x0,0x0 }, /* 7 */{ 0x0,0x0,0x0,0x0 }, /* 8 */{ 0x1,0x1,0x1f,0x0 }, /* 9 */{ 0x1,0x2,0x1f,0x0 }, /* 10 */{ 0x2,0x4,0x1e1,0x0 }, /* 11 */{ 0x2,0x8,0x1e1,0x0 }, /* 12 */{ 0x4,0x10,0xe22,0x0 }, /* 13 */{ 0x4,0x20,0xe22,0x0 }, /* 14 */{ 0x8,0x40,0x3244,0x0 }, /* 15 */{ 0x8,0x80,0x3244,0x0 }, /* 16 */{ 0x3,0xf,0x1ff,0x0 }, /* 17 */{ 0x5,0x33,0xe3f,0x0 }, /* 18 */{ 0x9,0xc3,0x325f,0x0 }, /* 19 */{ 0x11,0x3,0x549f,0x0 }, /* 20 */{ 0x21,0x3,0x691f,0x0 }, /* 21 */{ 0x6,0x3c,0xfe3,0x0 }, /* 22 */{ 0xa,0xcc,0x33e5,0x0 }, /* 23 */{ 0x12,0xc,0x55e9,0x0 }, /* 24 */{ 0x22,0xc,0x69f1,0x0 }, /* 25 */{ 0xc,0xf0,0x3e66,0x0 }, /* 26 */{ 0x14,0x30,0x5eaa,0x0 }, /* 27 */{ 0x24,0x30,0x6f32,0x0 }, /* 28 */{ 0x18,0xc0,0x76cc,0x0 }, /* 29 */{ 0x28,0xc0,0x7b54,0x0 }, /* 30 */{ 0x30,0x0,0x7d98,0x0 }, /* 31 */{ 0x0,0x0,0x0,0x1 }, /* 32 */{ 0x0,0x0,0x0,0x2 }, /* 33 */{ 0x0,0x0,0x0,0x4 }, /* 34 */{ 0x0,0x0,0x0,0x8 }, /* 35 */{ 0x0,0x0,0x0,0x10 }, /* 36 */{ 0x0,0x0,0x0,0x20 }, /* 37 */{ 0x0,0x0,0x0,0x40 }, /* 38 */{ 0x0,0x0,0x0,0x80 }, }; int aliasmap(int class, int regnum) { return amap[regnum][class-1]; } static int rmap[NUMCLASS][15] = { { 0, 1, 2, 3, 4, 5, }, { 8, 9, 10, 11, 12, 13, 14, 15, }, { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, }, { 31, 32, 33, 34, 35, 36, 37, 38, }, }; int color2reg(int color, int class) { return rmap[class-1][color]; } int regK[] = { 0, 6, 8, 15, 8, 0, 0, 0 }; int classmask(int class) { if(class == CLASSA) return 0x3f; if(class == CLASSB) return 0xff; if(class == CLASSC) return 0x7fff; if(class == CLASSD) return 0xff; if(class == CLASSE) return 0x0; if(class == CLASSF) return 0x0; return 0x0; } static bittype ovlarr[MAXREGS][1] = { { 0x1f0301, }, { 0x1e10c02, }, { 0xe223004, }, { 0x3244c008, }, { 0x54880010, }, { 0x69100020, }, { 0x40, }, { 0x80, }, { 0x1f0101, }, { 0x1f0201, }, { 0x1e10402, }, { 0x1e10802, }, { 0xe221004, }, { 0xe222004, }, { 0x32444008, }, { 0x32448008, }, { 0x1ff0f03, }, { 0xe3f3305, }, { 0x325fc309, }, { 0x549f0311, }, { 0x691f0321, }, { 0xfe33c06, }, { 0x33e5cc0a, }, { 0x55e90c12, }, { 0x69f10c22, }, { 0x3e66f00c, }, { 0x5eaa3014, }, { 0x6f323024, }, { 0x76ccc018, }, { 0x7b54c028, }, { 0x7d980030, }, { 0x80000000, }, { 0x1, }, { 0x2, }, { 0x4, }, { 0x8, }, { 0x10, }, { 0x20, }, { 0x40, }, }; int interferes(int reg1, int reg2) { return (TESTBIT(ovlarr[reg1], reg2)) != 0; }