13e12c5d1SDavid du Colombier #include "l.h" 23e12c5d1SDavid du Colombier 33e12c5d1SDavid du Colombier void 43e12c5d1SDavid du Colombier span(void) 53e12c5d1SDavid du Colombier { 63e12c5d1SDavid du Colombier Prog *p; 73e12c5d1SDavid du Colombier Sym *setext; 83e12c5d1SDavid du Colombier Optab *o; 93e12c5d1SDavid du Colombier int m; 103e12c5d1SDavid du Colombier long c; 113e12c5d1SDavid du Colombier 123e12c5d1SDavid du Colombier if(debug['v']) 133e12c5d1SDavid du Colombier Bprint(&bso, "%5.2f span\n", cputime()); 143e12c5d1SDavid du Colombier Bflush(&bso); 153e12c5d1SDavid du Colombier c = INITTEXT; 163e12c5d1SDavid du Colombier for(p = firstp; p != P; p = p->link) { 173e12c5d1SDavid du Colombier p->pc = c; 183e12c5d1SDavid du Colombier o = oplook(p); 193e12c5d1SDavid du Colombier m = o->size; 203e12c5d1SDavid du Colombier if(m == 0) { 213e12c5d1SDavid du Colombier if(p->as == ATEXT) { 223e12c5d1SDavid du Colombier curtext = p; 233e12c5d1SDavid du Colombier autosize = p->to.offset + 4; 243e12c5d1SDavid du Colombier if(p->from.sym != S) 253e12c5d1SDavid du Colombier p->from.sym->value = c; 263e12c5d1SDavid du Colombier continue; 273e12c5d1SDavid du Colombier } 283e12c5d1SDavid du Colombier if(p->as != ANOP) 293e12c5d1SDavid du Colombier diag("zero-width instruction\n%P\n", p); 303e12c5d1SDavid du Colombier continue; 313e12c5d1SDavid du Colombier } 323e12c5d1SDavid du Colombier c += m; 333e12c5d1SDavid du Colombier } 343e12c5d1SDavid du Colombier c = rnd(c, 8); 353e12c5d1SDavid du Colombier 363e12c5d1SDavid du Colombier setext = lookup("etext", 0); 373e12c5d1SDavid du Colombier if(setext != S) { 383e12c5d1SDavid du Colombier setext->value = c; 393e12c5d1SDavid du Colombier textsize = c - INITTEXT; 403e12c5d1SDavid du Colombier } 413e12c5d1SDavid du Colombier if(INITRND) 423e12c5d1SDavid du Colombier INITDAT = rnd(c, INITRND); 433e12c5d1SDavid du Colombier if(debug['v']) 443e12c5d1SDavid du Colombier Bprint(&bso, "tsize = %lux\n", textsize); 453e12c5d1SDavid du Colombier Bflush(&bso); 463e12c5d1SDavid du Colombier } 473e12c5d1SDavid du Colombier 483e12c5d1SDavid du Colombier void 493e12c5d1SDavid du Colombier xdefine(char *p, int t, long v) 503e12c5d1SDavid du Colombier { 513e12c5d1SDavid du Colombier Sym *s; 523e12c5d1SDavid du Colombier 533e12c5d1SDavid du Colombier s = lookup(p, 0); 543e12c5d1SDavid du Colombier if(s->type == 0 || s->type == SXREF) { 553e12c5d1SDavid du Colombier s->type = t; 563e12c5d1SDavid du Colombier s->value = v; 573e12c5d1SDavid du Colombier } 583e12c5d1SDavid du Colombier } 593e12c5d1SDavid du Colombier 603e12c5d1SDavid du Colombier long 613e12c5d1SDavid du Colombier regoff(Adr *a) 623e12c5d1SDavid du Colombier { 633e12c5d1SDavid du Colombier 64*7dd7cddfSDavid du Colombier instoffset = 0; 653e12c5d1SDavid du Colombier aclass(a); 66*7dd7cddfSDavid du Colombier return instoffset; 673e12c5d1SDavid du Colombier } 683e12c5d1SDavid du Colombier 693e12c5d1SDavid du Colombier int 703e12c5d1SDavid du Colombier aclass(Adr *a) 713e12c5d1SDavid du Colombier { 723e12c5d1SDavid du Colombier Sym *s; 733e12c5d1SDavid du Colombier int t; 743e12c5d1SDavid du Colombier 753e12c5d1SDavid du Colombier switch(a->type) { 763e12c5d1SDavid du Colombier case D_NONE: 773e12c5d1SDavid du Colombier return C_NONE; 783e12c5d1SDavid du Colombier 793e12c5d1SDavid du Colombier case D_REG: 803e12c5d1SDavid du Colombier return C_REG; 813e12c5d1SDavid du Colombier 823e12c5d1SDavid du Colombier case D_FREG: 833e12c5d1SDavid du Colombier return C_FREG; 843e12c5d1SDavid du Colombier 853e12c5d1SDavid du Colombier case D_CREG: 863e12c5d1SDavid du Colombier return C_CREG; 873e12c5d1SDavid du Colombier 883e12c5d1SDavid du Colombier case D_PREG: 893e12c5d1SDavid du Colombier if(a->reg == D_FSR) 903e12c5d1SDavid du Colombier return C_FSR; 913e12c5d1SDavid du Colombier if(a->reg == D_FPQ) 923e12c5d1SDavid du Colombier return C_FQ; 933e12c5d1SDavid du Colombier return C_PREG; 943e12c5d1SDavid du Colombier 953e12c5d1SDavid du Colombier case D_OREG: 963e12c5d1SDavid du Colombier switch(a->name) { 973e12c5d1SDavid du Colombier case D_EXTERN: 983e12c5d1SDavid du Colombier case D_STATIC: 99219b2ee8SDavid du Colombier if(a->sym == S) 100219b2ee8SDavid du Colombier break; 1013e12c5d1SDavid du Colombier t = a->sym->type; 1023e12c5d1SDavid du Colombier if(t == 0 || t == SXREF) { 1033e12c5d1SDavid du Colombier diag("undefined external: %s in %s\n", 1043e12c5d1SDavid du Colombier a->sym->name, TNAME); 1053e12c5d1SDavid du Colombier a->sym->type = SDATA; 1063e12c5d1SDavid du Colombier } 107*7dd7cddfSDavid du Colombier instoffset = a->sym->value + a->offset - BIG; 108*7dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG) { 109*7dd7cddfSDavid du Colombier if(instoffset & 7) 1103e12c5d1SDavid du Colombier return C_OSEXT; 1113e12c5d1SDavid du Colombier return C_ESEXT; 1123e12c5d1SDavid du Colombier } 113*7dd7cddfSDavid du Colombier if(instoffset & 7) 1143e12c5d1SDavid du Colombier return C_OLEXT; 1153e12c5d1SDavid du Colombier return C_ELEXT; 1163e12c5d1SDavid du Colombier case D_AUTO: 117*7dd7cddfSDavid du Colombier instoffset = autosize + a->offset; 1183e12c5d1SDavid du Colombier goto dauto; 1193e12c5d1SDavid du Colombier 1203e12c5d1SDavid du Colombier case D_PARAM: 121*7dd7cddfSDavid du Colombier instoffset = autosize + a->offset + 4L; 1223e12c5d1SDavid du Colombier dauto: 123*7dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG) { 124*7dd7cddfSDavid du Colombier if(instoffset & 7) 1253e12c5d1SDavid du Colombier return C_OSAUTO; 1263e12c5d1SDavid du Colombier return C_ESAUTO; 1273e12c5d1SDavid du Colombier } 128*7dd7cddfSDavid du Colombier if(instoffset & 7) 1293e12c5d1SDavid du Colombier return C_OLAUTO; 1303e12c5d1SDavid du Colombier return C_ELAUTO; 1313e12c5d1SDavid du Colombier case D_NONE: 132*7dd7cddfSDavid du Colombier instoffset = a->offset; 133*7dd7cddfSDavid du Colombier if(instoffset == 0) 1343e12c5d1SDavid du Colombier return C_ZOREG; 135*7dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG) 1363e12c5d1SDavid du Colombier return C_SOREG; 1373e12c5d1SDavid du Colombier return C_LOREG; 1383e12c5d1SDavid du Colombier } 1393e12c5d1SDavid du Colombier return C_GOK; 1403e12c5d1SDavid du Colombier 1413e12c5d1SDavid du Colombier case D_ASI: 1423e12c5d1SDavid du Colombier if(a->name == D_NONE) 1433e12c5d1SDavid du Colombier return C_ASI; 1443e12c5d1SDavid du Colombier return C_GOK; 1453e12c5d1SDavid du Colombier 1463e12c5d1SDavid du Colombier case D_CONST: 1473e12c5d1SDavid du Colombier switch(a->name) { 1483e12c5d1SDavid du Colombier 1493e12c5d1SDavid du Colombier case D_NONE: 150*7dd7cddfSDavid du Colombier instoffset = a->offset; 151219b2ee8SDavid du Colombier consize: 152*7dd7cddfSDavid du Colombier if(instoffset == 0) 1533e12c5d1SDavid du Colombier return C_ZCON; 154*7dd7cddfSDavid du Colombier if(instoffset >= -0x1000 && instoffset <= 0xfff) 1553e12c5d1SDavid du Colombier return C_SCON; 156*7dd7cddfSDavid du Colombier if((instoffset & 0x3ff) == 0) 1573e12c5d1SDavid du Colombier return C_UCON; 1583e12c5d1SDavid du Colombier return C_LCON; 1593e12c5d1SDavid du Colombier 1603e12c5d1SDavid du Colombier case D_EXTERN: 1613e12c5d1SDavid du Colombier case D_STATIC: 1623e12c5d1SDavid du Colombier s = a->sym; 163219b2ee8SDavid du Colombier if(s == S) 164219b2ee8SDavid du Colombier break; 1653e12c5d1SDavid du Colombier t = s->type; 1663e12c5d1SDavid du Colombier if(t == 0 || t == SXREF) { 1673e12c5d1SDavid du Colombier diag("undefined external: %s in %s\n", 1683e12c5d1SDavid du Colombier s->name, TNAME); 1693e12c5d1SDavid du Colombier s->type = SDATA; 1703e12c5d1SDavid du Colombier } 1713e12c5d1SDavid du Colombier if(s->type == STEXT || s->type == SLEAF) { 172*7dd7cddfSDavid du Colombier instoffset = s->value + a->offset; 1733e12c5d1SDavid du Colombier return C_LCON; 1743e12c5d1SDavid du Colombier } 175219b2ee8SDavid du Colombier if(s->type == SCONST) { 176*7dd7cddfSDavid du Colombier instoffset = s->value + a->offset; 177219b2ee8SDavid du Colombier goto consize; 178219b2ee8SDavid du Colombier } 179*7dd7cddfSDavid du Colombier instoffset = s->value + a->offset - BIG; 180*7dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG && instoffset != 0) 1813e12c5d1SDavid du Colombier return C_SECON; 182*7dd7cddfSDavid du Colombier instoffset = s->value + a->offset + INITDAT; 1833e12c5d1SDavid du Colombier /* not sure why this barfs */ 1843e12c5d1SDavid du Colombier return C_LCON; 185*7dd7cddfSDavid du Colombier if(instoffset == 0) 1863e12c5d1SDavid du Colombier return C_ZCON; 187*7dd7cddfSDavid du Colombier if(instoffset >= -0x1000 && instoffset <= 0xfff) 1883e12c5d1SDavid du Colombier return C_SCON; 189*7dd7cddfSDavid du Colombier if((instoffset & 0x3ff) == 0) 1903e12c5d1SDavid du Colombier return C_UCON; 1913e12c5d1SDavid du Colombier return C_LCON; 1923e12c5d1SDavid du Colombier 1933e12c5d1SDavid du Colombier case D_AUTO: 194*7dd7cddfSDavid du Colombier instoffset = autosize + a->offset; 195*7dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG) 1963e12c5d1SDavid du Colombier return C_SACON; 1973e12c5d1SDavid du Colombier return C_LACON; 1983e12c5d1SDavid du Colombier 1993e12c5d1SDavid du Colombier case D_PARAM: 200*7dd7cddfSDavid du Colombier instoffset = autosize + a->offset + 4L; 201*7dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG) 2023e12c5d1SDavid du Colombier return C_SACON; 2033e12c5d1SDavid du Colombier return C_LACON; 2043e12c5d1SDavid du Colombier } 2053e12c5d1SDavid du Colombier return C_GOK; 2063e12c5d1SDavid du Colombier 2073e12c5d1SDavid du Colombier case D_BRANCH: 2083e12c5d1SDavid du Colombier return C_SBRA; 2093e12c5d1SDavid du Colombier } 2103e12c5d1SDavid du Colombier return C_GOK; 2113e12c5d1SDavid du Colombier } 2123e12c5d1SDavid du Colombier 2133e12c5d1SDavid du Colombier Optab* 2143e12c5d1SDavid du Colombier oplook(Prog *p) 2153e12c5d1SDavid du Colombier { 2163e12c5d1SDavid du Colombier int a1, a2, a3, r; 2173e12c5d1SDavid du Colombier char *c1, *c3; 2183e12c5d1SDavid du Colombier Optab *o, *e; 2193e12c5d1SDavid du Colombier 2203e12c5d1SDavid du Colombier a1 = p->optab; 2213e12c5d1SDavid du Colombier if(a1) 2223e12c5d1SDavid du Colombier return optab+(a1-1); 2233e12c5d1SDavid du Colombier a1 = p->from.class; 2243e12c5d1SDavid du Colombier if(a1 == 0) { 2253e12c5d1SDavid du Colombier a1 = aclass(&p->from) + 1; 2263e12c5d1SDavid du Colombier p->from.class = a1; 2273e12c5d1SDavid du Colombier } 2283e12c5d1SDavid du Colombier a1--; 2293e12c5d1SDavid du Colombier a3 = p->to.class; 2303e12c5d1SDavid du Colombier if(a3 == 0) { 2313e12c5d1SDavid du Colombier a3 = aclass(&p->to) + 1; 2323e12c5d1SDavid du Colombier p->to.class = a3; 2333e12c5d1SDavid du Colombier } 2343e12c5d1SDavid du Colombier a3--; 2353e12c5d1SDavid du Colombier a2 = C_NONE; 2363e12c5d1SDavid du Colombier if(p->reg != NREG) 2373e12c5d1SDavid du Colombier a2 = C_REG; 2383e12c5d1SDavid du Colombier r = p->as; 2393e12c5d1SDavid du Colombier o = oprange[r].start; 2403e12c5d1SDavid du Colombier if(o == 0) 2413e12c5d1SDavid du Colombier o = oprange[r].stop; /* just generate an error */ 2423e12c5d1SDavid du Colombier e = oprange[r].stop; 2433e12c5d1SDavid du Colombier c1 = xcmp[a1]; 2443e12c5d1SDavid du Colombier c3 = xcmp[a3]; 2453e12c5d1SDavid du Colombier for(; o<e; o++) 2463e12c5d1SDavid du Colombier if(o->a2 == a2) 2473e12c5d1SDavid du Colombier if(c1[o->a1]) 2483e12c5d1SDavid du Colombier if(c3[o->a3]) { 2493e12c5d1SDavid du Colombier p->optab = (o-optab)+1; 2503e12c5d1SDavid du Colombier return o; 2513e12c5d1SDavid du Colombier } 2523e12c5d1SDavid du Colombier diag("illegal combination %A %d %d %d\n", 2533e12c5d1SDavid du Colombier p->as, a1, a2, a3); 2543e12c5d1SDavid du Colombier if(1||!debug['a']) 2553e12c5d1SDavid du Colombier prasm(p); 2563e12c5d1SDavid du Colombier if(o == 0) 2573e12c5d1SDavid du Colombier errorexit(); 2583e12c5d1SDavid du Colombier return o; 2593e12c5d1SDavid du Colombier } 2603e12c5d1SDavid du Colombier 2613e12c5d1SDavid du Colombier int 2623e12c5d1SDavid du Colombier cmp(int a, int b) 2633e12c5d1SDavid du Colombier { 2643e12c5d1SDavid du Colombier 2653e12c5d1SDavid du Colombier if(a == b) 2663e12c5d1SDavid du Colombier return 1; 2673e12c5d1SDavid du Colombier switch(a) { 2683e12c5d1SDavid du Colombier case C_LCON: 2693e12c5d1SDavid du Colombier if(b == C_ZCON || b == C_SCON || b == C_UCON) 2703e12c5d1SDavid du Colombier return 1; 2713e12c5d1SDavid du Colombier break; 2723e12c5d1SDavid du Colombier case C_UCON: 2733e12c5d1SDavid du Colombier if(b == C_ZCON) 2743e12c5d1SDavid du Colombier return 1; 2753e12c5d1SDavid du Colombier break; 2763e12c5d1SDavid du Colombier case C_SCON: 2773e12c5d1SDavid du Colombier if(b == C_ZCON) 2783e12c5d1SDavid du Colombier return 1; 2793e12c5d1SDavid du Colombier break; 2803e12c5d1SDavid du Colombier case C_LACON: 2813e12c5d1SDavid du Colombier if(b == C_SACON) 2823e12c5d1SDavid du Colombier return 1; 2833e12c5d1SDavid du Colombier break; 2843e12c5d1SDavid du Colombier case C_LBRA: 2853e12c5d1SDavid du Colombier if(b == C_SBRA) 2863e12c5d1SDavid du Colombier return 1; 2873e12c5d1SDavid du Colombier break; 2883e12c5d1SDavid du Colombier case C_ELEXT: 2893e12c5d1SDavid du Colombier if(b == C_ESEXT) 2903e12c5d1SDavid du Colombier return 1; 2913e12c5d1SDavid du Colombier break; 2923e12c5d1SDavid du Colombier case C_LEXT: 2933e12c5d1SDavid du Colombier if(b == C_SEXT || 2943e12c5d1SDavid du Colombier b == C_ESEXT || b == C_OSEXT || 2953e12c5d1SDavid du Colombier b == C_ELEXT || b == C_OLEXT) 2963e12c5d1SDavid du Colombier return 1; 2973e12c5d1SDavid du Colombier break; 2983e12c5d1SDavid du Colombier case C_SEXT: 2993e12c5d1SDavid du Colombier if(b == C_ESEXT || b == C_OSEXT) 3003e12c5d1SDavid du Colombier return 1; 3013e12c5d1SDavid du Colombier break; 3023e12c5d1SDavid du Colombier case C_ELAUTO: 3033e12c5d1SDavid du Colombier if(b == C_ESAUTO) 3043e12c5d1SDavid du Colombier return 1; 3053e12c5d1SDavid du Colombier break; 3063e12c5d1SDavid du Colombier case C_LAUTO: 3073e12c5d1SDavid du Colombier if(b == C_SAUTO || 3083e12c5d1SDavid du Colombier b == C_ESAUTO || b == C_OSAUTO || 3093e12c5d1SDavid du Colombier b == C_ELAUTO || b == C_OLAUTO) 3103e12c5d1SDavid du Colombier return 1; 3113e12c5d1SDavid du Colombier break; 3123e12c5d1SDavid du Colombier case C_SAUTO: 3133e12c5d1SDavid du Colombier if(b == C_ESAUTO || b == C_OSAUTO) 3143e12c5d1SDavid du Colombier return 1; 3153e12c5d1SDavid du Colombier break; 3163e12c5d1SDavid du Colombier case C_REG: 3173e12c5d1SDavid du Colombier if(b == C_ZCON) 3183e12c5d1SDavid du Colombier return 1; 3193e12c5d1SDavid du Colombier break; 3203e12c5d1SDavid du Colombier case C_LOREG: 3213e12c5d1SDavid du Colombier if(b == C_ZOREG || b == C_SOREG) 3223e12c5d1SDavid du Colombier return 1; 3233e12c5d1SDavid du Colombier break; 3243e12c5d1SDavid du Colombier case C_SOREG: 3253e12c5d1SDavid du Colombier if(b == C_ZOREG) 3263e12c5d1SDavid du Colombier return 1; 3273e12c5d1SDavid du Colombier break; 3283e12c5d1SDavid du Colombier 3293e12c5d1SDavid du Colombier case C_ANY: 3303e12c5d1SDavid du Colombier return 1; 3313e12c5d1SDavid du Colombier } 3323e12c5d1SDavid du Colombier return 0; 3333e12c5d1SDavid du Colombier } 3343e12c5d1SDavid du Colombier 3353e12c5d1SDavid du Colombier int 336*7dd7cddfSDavid du Colombier ocmp(const void *a1, const void *a2) 3373e12c5d1SDavid du Colombier { 3383e12c5d1SDavid du Colombier Optab *p1, *p2; 3393e12c5d1SDavid du Colombier int n; 3403e12c5d1SDavid du Colombier 341*7dd7cddfSDavid du Colombier p1 = (Optab*)a1; 342*7dd7cddfSDavid du Colombier p2 = (Optab*)a2; 3433e12c5d1SDavid du Colombier n = p1->as - p2->as; 3443e12c5d1SDavid du Colombier if(n) 3453e12c5d1SDavid du Colombier return n; 3463e12c5d1SDavid du Colombier n = p1->a1 - p2->a1; 3473e12c5d1SDavid du Colombier if(n) 3483e12c5d1SDavid du Colombier return n; 3493e12c5d1SDavid du Colombier n = p1->a2 - p2->a2; 3503e12c5d1SDavid du Colombier if(n) 3513e12c5d1SDavid du Colombier return n; 3523e12c5d1SDavid du Colombier n = p1->a3 - p2->a3; 3533e12c5d1SDavid du Colombier if(n) 3543e12c5d1SDavid du Colombier return n; 3553e12c5d1SDavid du Colombier return 0; 3563e12c5d1SDavid du Colombier } 3573e12c5d1SDavid du Colombier 3583e12c5d1SDavid du Colombier void 3593e12c5d1SDavid du Colombier buildop(void) 3603e12c5d1SDavid du Colombier { 3613e12c5d1SDavid du Colombier int i, n, r; 3623e12c5d1SDavid du Colombier 3633e12c5d1SDavid du Colombier for(i=0; i<C_NCLASS; i++) 3643e12c5d1SDavid du Colombier for(n=0; n<C_NCLASS; n++) 3653e12c5d1SDavid du Colombier xcmp[i][n] = cmp(n, i); 3663e12c5d1SDavid du Colombier for(n=0; optab[n].as != AXXX; n++) 3673e12c5d1SDavid du Colombier ; 3683e12c5d1SDavid du Colombier qsort(optab, n, sizeof(optab[0]), ocmp); 3693e12c5d1SDavid du Colombier for(i=0; i<n; i++) { 3703e12c5d1SDavid du Colombier r = optab[i].as; 3713e12c5d1SDavid du Colombier oprange[r].start = optab+i; 3723e12c5d1SDavid du Colombier while(optab[i].as == r) 3733e12c5d1SDavid du Colombier i++; 3743e12c5d1SDavid du Colombier oprange[r].stop = optab+i; 3753e12c5d1SDavid du Colombier i--; 3763e12c5d1SDavid du Colombier 3773e12c5d1SDavid du Colombier switch(r) 3783e12c5d1SDavid du Colombier { 3793e12c5d1SDavid du Colombier default: 3803e12c5d1SDavid du Colombier diag("unknown op in build: %A\n", r); 3813e12c5d1SDavid du Colombier errorexit(); 3823e12c5d1SDavid du Colombier case AADD: 383219b2ee8SDavid du Colombier oprange[AADDX] = oprange[r]; 3843e12c5d1SDavid du Colombier oprange[ASUB] = oprange[r]; 385219b2ee8SDavid du Colombier oprange[ASUBX] = oprange[r]; 3863e12c5d1SDavid du Colombier oprange[AMUL] = oprange[r]; 3873e12c5d1SDavid du Colombier oprange[AXOR] = oprange[r]; 3883e12c5d1SDavid du Colombier oprange[AXNOR] = oprange[r]; 3893e12c5d1SDavid du Colombier oprange[AAND] = oprange[r]; 3903e12c5d1SDavid du Colombier oprange[AANDN] = oprange[r]; 3913e12c5d1SDavid du Colombier oprange[AOR] = oprange[r]; 3923e12c5d1SDavid du Colombier oprange[AORN] = oprange[r]; 3933e12c5d1SDavid du Colombier oprange[ASLL] = oprange[r]; 3943e12c5d1SDavid du Colombier oprange[ASRL] = oprange[r]; 3953e12c5d1SDavid du Colombier oprange[ASRA] = oprange[r]; 396219b2ee8SDavid du Colombier oprange[AADDCC] = oprange[r]; 397219b2ee8SDavid du Colombier oprange[AADDXCC] = oprange[r]; 398219b2ee8SDavid du Colombier oprange[ATADDCC] = oprange[r]; 399219b2ee8SDavid du Colombier oprange[ATADDCCTV] = oprange[r]; 4003e12c5d1SDavid du Colombier oprange[ASUBCC] = oprange[r]; 401219b2ee8SDavid du Colombier oprange[ASUBXCC] = oprange[r]; 402219b2ee8SDavid du Colombier oprange[ATSUBCC] = oprange[r]; 403219b2ee8SDavid du Colombier oprange[ATSUBCCTV] = oprange[r]; 4043e12c5d1SDavid du Colombier oprange[AXORCC] = oprange[r]; 4053e12c5d1SDavid du Colombier oprange[AXNORCC] = oprange[r]; 4063e12c5d1SDavid du Colombier oprange[AANDCC] = oprange[r]; 4073e12c5d1SDavid du Colombier oprange[AANDNCC] = oprange[r]; 4083e12c5d1SDavid du Colombier oprange[AORCC] = oprange[r]; 4093e12c5d1SDavid du Colombier oprange[AORNCC] = oprange[r]; 4103e12c5d1SDavid du Colombier oprange[AMULSCC] = oprange[r]; 4113e12c5d1SDavid du Colombier oprange[ASAVE] = oprange[r]; 4123e12c5d1SDavid du Colombier oprange[ARESTORE] = oprange[r]; 4133e12c5d1SDavid du Colombier break; 4143e12c5d1SDavid du Colombier case AMOVB: 4153e12c5d1SDavid du Colombier oprange[AMOVH] = oprange[r]; 4163e12c5d1SDavid du Colombier oprange[AMOVHU] = oprange[r]; 4173e12c5d1SDavid du Colombier oprange[AMOVBU] = oprange[r]; 4183e12c5d1SDavid du Colombier oprange[ASWAP] = oprange[r]; 4193e12c5d1SDavid du Colombier oprange[ATAS] = oprange[r]; 4203e12c5d1SDavid du Colombier break; 4213e12c5d1SDavid du Colombier case ABA: 4223e12c5d1SDavid du Colombier oprange[ABN] = oprange[r]; 4233e12c5d1SDavid du Colombier oprange[AFBA] = oprange[r]; 4243e12c5d1SDavid du Colombier oprange[AFBN] = oprange[r]; 4253e12c5d1SDavid du Colombier break; 4263e12c5d1SDavid du Colombier case ABE: 4273e12c5d1SDavid du Colombier oprange[ABCC] = oprange[r]; 4283e12c5d1SDavid du Colombier oprange[ABCS] = oprange[r]; 4293e12c5d1SDavid du Colombier oprange[ABGE] = oprange[r]; 4303e12c5d1SDavid du Colombier oprange[ABGU] = oprange[r]; 4313e12c5d1SDavid du Colombier oprange[ABG] = oprange[r]; 4323e12c5d1SDavid du Colombier oprange[ABLEU] = oprange[r]; 4333e12c5d1SDavid du Colombier oprange[ABLE] = oprange[r]; 4343e12c5d1SDavid du Colombier oprange[ABL] = oprange[r]; 4353e12c5d1SDavid du Colombier oprange[ABNEG] = oprange[r]; 4363e12c5d1SDavid du Colombier oprange[ABNE] = oprange[r]; 4373e12c5d1SDavid du Colombier oprange[ABPOS] = oprange[r]; 4383e12c5d1SDavid du Colombier oprange[ABVC] = oprange[r]; 4393e12c5d1SDavid du Colombier oprange[ABVS] = oprange[r]; 4403e12c5d1SDavid du Colombier 4413e12c5d1SDavid du Colombier oprange[AFBE] = oprange[r]; 4423e12c5d1SDavid du Colombier oprange[AFBG] = oprange[r]; 4433e12c5d1SDavid du Colombier oprange[AFBGE] = oprange[r]; 4443e12c5d1SDavid du Colombier oprange[AFBL] = oprange[r]; 4453e12c5d1SDavid du Colombier oprange[AFBLE] = oprange[r]; 4463e12c5d1SDavid du Colombier oprange[AFBLG] = oprange[r]; 4473e12c5d1SDavid du Colombier oprange[AFBNE] = oprange[r]; 4483e12c5d1SDavid du Colombier oprange[AFBO] = oprange[r]; 4493e12c5d1SDavid du Colombier oprange[AFBU] = oprange[r]; 4503e12c5d1SDavid du Colombier oprange[AFBUE] = oprange[r]; 4513e12c5d1SDavid du Colombier oprange[AFBUG] = oprange[r]; 4523e12c5d1SDavid du Colombier oprange[AFBUGE] = oprange[r]; 4533e12c5d1SDavid du Colombier oprange[AFBUL] = oprange[r]; 4543e12c5d1SDavid du Colombier oprange[AFBULE] = oprange[r]; 4553e12c5d1SDavid du Colombier break; 4563e12c5d1SDavid du Colombier case ATA: 4573e12c5d1SDavid du Colombier oprange[ATCC] = oprange[r]; 4583e12c5d1SDavid du Colombier oprange[ATCS] = oprange[r]; 4593e12c5d1SDavid du Colombier oprange[ATE] = oprange[r]; 4603e12c5d1SDavid du Colombier oprange[ATGE] = oprange[r]; 4613e12c5d1SDavid du Colombier oprange[ATGU] = oprange[r]; 4623e12c5d1SDavid du Colombier oprange[ATG] = oprange[r]; 4633e12c5d1SDavid du Colombier oprange[ATLEU] = oprange[r]; 4643e12c5d1SDavid du Colombier oprange[ATLE] = oprange[r]; 4653e12c5d1SDavid du Colombier oprange[ATL] = oprange[r]; 4663e12c5d1SDavid du Colombier oprange[ATNEG] = oprange[r]; 4673e12c5d1SDavid du Colombier oprange[ATNE] = oprange[r]; 4683e12c5d1SDavid du Colombier oprange[ATN] = oprange[r]; 4693e12c5d1SDavid du Colombier oprange[ATPOS] = oprange[r]; 4703e12c5d1SDavid du Colombier oprange[ATVC] = oprange[r]; 4713e12c5d1SDavid du Colombier oprange[ATVS] = oprange[r]; 4723e12c5d1SDavid du Colombier break; 4733e12c5d1SDavid du Colombier case AFADDD: 4743e12c5d1SDavid du Colombier oprange[AFADDF] = oprange[r]; 4753e12c5d1SDavid du Colombier oprange[AFADDX] = oprange[r]; 4763e12c5d1SDavid du Colombier oprange[AFDIVD] = oprange[r]; 4773e12c5d1SDavid du Colombier oprange[AFDIVF] = oprange[r]; 4783e12c5d1SDavid du Colombier oprange[AFDIVX] = oprange[r]; 4793e12c5d1SDavid du Colombier oprange[AFMULD] = oprange[r]; 4803e12c5d1SDavid du Colombier oprange[AFMULF] = oprange[r]; 4813e12c5d1SDavid du Colombier oprange[AFMULX] = oprange[r]; 4823e12c5d1SDavid du Colombier oprange[AFSUBD] = oprange[r]; 4833e12c5d1SDavid du Colombier oprange[AFSUBF] = oprange[r]; 4843e12c5d1SDavid du Colombier oprange[AFSUBX] = oprange[r]; 4853e12c5d1SDavid du Colombier break; 4863e12c5d1SDavid du Colombier case AFCMPD: 4873e12c5d1SDavid du Colombier oprange[AFCMPF] = oprange[r]; 4883e12c5d1SDavid du Colombier oprange[AFCMPX] = oprange[r]; 4893e12c5d1SDavid du Colombier oprange[AFCMPED] = oprange[r]; 4903e12c5d1SDavid du Colombier oprange[AFCMPEF] = oprange[r]; 4913e12c5d1SDavid du Colombier oprange[AFCMPEX] = oprange[r]; 4923e12c5d1SDavid du Colombier break; 4933e12c5d1SDavid du Colombier case AFABSF: 4943e12c5d1SDavid du Colombier oprange[AFMOVDF] = oprange[r]; 4953e12c5d1SDavid du Colombier oprange[AFMOVDW] = oprange[r]; 4963e12c5d1SDavid du Colombier oprange[AFMOVFD] = oprange[r]; 4973e12c5d1SDavid du Colombier oprange[AFMOVFW] = oprange[r]; 4983e12c5d1SDavid du Colombier oprange[AFMOVWD] = oprange[r]; 4993e12c5d1SDavid du Colombier oprange[AFMOVWF] = oprange[r]; 5003e12c5d1SDavid du Colombier oprange[AFNEGF] = oprange[r]; 5013e12c5d1SDavid du Colombier oprange[AFSQRTD] = oprange[r]; 5023e12c5d1SDavid du Colombier oprange[AFSQRTF] = oprange[r]; 5033e12c5d1SDavid du Colombier break; 5043e12c5d1SDavid du Colombier case AFMOVF: 5053e12c5d1SDavid du Colombier case AFMOVD: 5063e12c5d1SDavid du Colombier case AMOVW: 5073e12c5d1SDavid du Colombier case AMOVD: 5083e12c5d1SDavid du Colombier case AWORD: 5093e12c5d1SDavid du Colombier case ARETT: 5103e12c5d1SDavid du Colombier case AJMPL: 5113e12c5d1SDavid du Colombier case AJMP: 5123e12c5d1SDavid du Colombier case ACMP: 5133e12c5d1SDavid du Colombier case ANOP: 5143e12c5d1SDavid du Colombier case ATEXT: 5153e12c5d1SDavid du Colombier case ADIV: 5163e12c5d1SDavid du Colombier case ADIVL: 5173e12c5d1SDavid du Colombier case AMOD: 5183e12c5d1SDavid du Colombier case AMODL: 5193e12c5d1SDavid du Colombier break; 5203e12c5d1SDavid du Colombier } 5213e12c5d1SDavid du Colombier } 5223e12c5d1SDavid du Colombier } 523