13e12c5d1SDavid du Colombier #include "l.h"
23e12c5d1SDavid du Colombier
33e12c5d1SDavid du Colombier void
span(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)
296b6b9ac8SDavid du Colombier diag("zero-width instruction\n%P", 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
xdefine(char * p,int t,long v)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
regoff(Adr * a)613e12c5d1SDavid du Colombier regoff(Adr *a)
623e12c5d1SDavid du Colombier {
633e12c5d1SDavid du Colombier
647dd7cddfSDavid du Colombier instoffset = 0;
653e12c5d1SDavid du Colombier aclass(a);
667dd7cddfSDavid du Colombier return instoffset;
673e12c5d1SDavid du Colombier }
683e12c5d1SDavid du Colombier
693e12c5d1SDavid du Colombier int
aclass(Adr * a)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) {
1036b6b9ac8SDavid du Colombier diag("undefined external: %s in %s",
1043e12c5d1SDavid du Colombier a->sym->name, TNAME);
1053e12c5d1SDavid du Colombier a->sym->type = SDATA;
1063e12c5d1SDavid du Colombier }
1077dd7cddfSDavid du Colombier instoffset = a->sym->value + a->offset - BIG;
1087dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG) {
1097dd7cddfSDavid du Colombier if(instoffset & 7)
1103e12c5d1SDavid du Colombier return C_OSEXT;
1113e12c5d1SDavid du Colombier return C_ESEXT;
1123e12c5d1SDavid du Colombier }
1137dd7cddfSDavid du Colombier if(instoffset & 7)
1143e12c5d1SDavid du Colombier return C_OLEXT;
1153e12c5d1SDavid du Colombier return C_ELEXT;
1163e12c5d1SDavid du Colombier case D_AUTO:
1177dd7cddfSDavid du Colombier instoffset = autosize + a->offset;
1183e12c5d1SDavid du Colombier goto dauto;
1193e12c5d1SDavid du Colombier
1203e12c5d1SDavid du Colombier case D_PARAM:
1217dd7cddfSDavid du Colombier instoffset = autosize + a->offset + 4L;
1223e12c5d1SDavid du Colombier dauto:
1237dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG) {
1247dd7cddfSDavid du Colombier if(instoffset & 7)
1253e12c5d1SDavid du Colombier return C_OSAUTO;
1263e12c5d1SDavid du Colombier return C_ESAUTO;
1273e12c5d1SDavid du Colombier }
1287dd7cddfSDavid du Colombier if(instoffset & 7)
1293e12c5d1SDavid du Colombier return C_OLAUTO;
1303e12c5d1SDavid du Colombier return C_ELAUTO;
1313e12c5d1SDavid du Colombier case D_NONE:
1327dd7cddfSDavid du Colombier instoffset = a->offset;
1337dd7cddfSDavid du Colombier if(instoffset == 0)
1343e12c5d1SDavid du Colombier return C_ZOREG;
1357dd7cddfSDavid 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:
1507dd7cddfSDavid du Colombier instoffset = a->offset;
151219b2ee8SDavid du Colombier consize:
1527dd7cddfSDavid du Colombier if(instoffset == 0)
1533e12c5d1SDavid du Colombier return C_ZCON;
1547dd7cddfSDavid du Colombier if(instoffset >= -0x1000 && instoffset <= 0xfff)
1553e12c5d1SDavid du Colombier return C_SCON;
1567dd7cddfSDavid 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) {
1676b6b9ac8SDavid du Colombier diag("undefined external: %s in %s",
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) {
1727dd7cddfSDavid du Colombier instoffset = s->value + a->offset;
1733e12c5d1SDavid du Colombier return C_LCON;
1743e12c5d1SDavid du Colombier }
175219b2ee8SDavid du Colombier if(s->type == SCONST) {
1767dd7cddfSDavid du Colombier instoffset = s->value + a->offset;
177219b2ee8SDavid du Colombier goto consize;
178219b2ee8SDavid du Colombier }
1797dd7cddfSDavid du Colombier instoffset = s->value + a->offset - BIG;
1807dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG && instoffset != 0)
1813e12c5d1SDavid du Colombier return C_SECON;
1827dd7cddfSDavid du Colombier instoffset = s->value + a->offset + INITDAT;
1833e12c5d1SDavid du Colombier /* not sure why this barfs */
1843e12c5d1SDavid du Colombier return C_LCON;
185*b85a8364SDavid du Colombier /*
1867dd7cddfSDavid du Colombier if(instoffset == 0)
1873e12c5d1SDavid du Colombier return C_ZCON;
1887dd7cddfSDavid du Colombier if(instoffset >= -0x1000 && instoffset <= 0xfff)
1893e12c5d1SDavid du Colombier return C_SCON;
1907dd7cddfSDavid du Colombier if((instoffset & 0x3ff) == 0)
1913e12c5d1SDavid du Colombier return C_UCON;
1923e12c5d1SDavid du Colombier return C_LCON;
193*b85a8364SDavid du Colombier */
1943e12c5d1SDavid du Colombier
1953e12c5d1SDavid du Colombier case D_AUTO:
1967dd7cddfSDavid du Colombier instoffset = autosize + a->offset;
1977dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG)
1983e12c5d1SDavid du Colombier return C_SACON;
1993e12c5d1SDavid du Colombier return C_LACON;
2003e12c5d1SDavid du Colombier
2013e12c5d1SDavid du Colombier case D_PARAM:
2027dd7cddfSDavid du Colombier instoffset = autosize + a->offset + 4L;
2037dd7cddfSDavid du Colombier if(instoffset >= -BIG && instoffset < BIG)
2043e12c5d1SDavid du Colombier return C_SACON;
2053e12c5d1SDavid du Colombier return C_LACON;
2063e12c5d1SDavid du Colombier }
2073e12c5d1SDavid du Colombier return C_GOK;
2083e12c5d1SDavid du Colombier
2093e12c5d1SDavid du Colombier case D_BRANCH:
2103e12c5d1SDavid du Colombier return C_SBRA;
2113e12c5d1SDavid du Colombier }
2123e12c5d1SDavid du Colombier return C_GOK;
2133e12c5d1SDavid du Colombier }
2143e12c5d1SDavid du Colombier
2153e12c5d1SDavid du Colombier Optab*
oplook(Prog * p)2163e12c5d1SDavid du Colombier oplook(Prog *p)
2173e12c5d1SDavid du Colombier {
2183e12c5d1SDavid du Colombier int a1, a2, a3, r;
2193e12c5d1SDavid du Colombier char *c1, *c3;
2203e12c5d1SDavid du Colombier Optab *o, *e;
2213e12c5d1SDavid du Colombier
2223e12c5d1SDavid du Colombier a1 = p->optab;
2233e12c5d1SDavid du Colombier if(a1)
2243e12c5d1SDavid du Colombier return optab+(a1-1);
2253e12c5d1SDavid du Colombier a1 = p->from.class;
2263e12c5d1SDavid du Colombier if(a1 == 0) {
2273e12c5d1SDavid du Colombier a1 = aclass(&p->from) + 1;
2283e12c5d1SDavid du Colombier p->from.class = a1;
2293e12c5d1SDavid du Colombier }
2303e12c5d1SDavid du Colombier a1--;
2313e12c5d1SDavid du Colombier a3 = p->to.class;
2323e12c5d1SDavid du Colombier if(a3 == 0) {
2333e12c5d1SDavid du Colombier a3 = aclass(&p->to) + 1;
2343e12c5d1SDavid du Colombier p->to.class = a3;
2353e12c5d1SDavid du Colombier }
2363e12c5d1SDavid du Colombier a3--;
2373e12c5d1SDavid du Colombier a2 = C_NONE;
2383e12c5d1SDavid du Colombier if(p->reg != NREG)
2393e12c5d1SDavid du Colombier a2 = C_REG;
2403e12c5d1SDavid du Colombier r = p->as;
2413e12c5d1SDavid du Colombier o = oprange[r].start;
2423e12c5d1SDavid du Colombier if(o == 0)
2433e12c5d1SDavid du Colombier o = oprange[r].stop; /* just generate an error */
2443e12c5d1SDavid du Colombier e = oprange[r].stop;
2453e12c5d1SDavid du Colombier c1 = xcmp[a1];
2463e12c5d1SDavid du Colombier c3 = xcmp[a3];
2473e12c5d1SDavid du Colombier for(; o<e; o++)
2483e12c5d1SDavid du Colombier if(o->a2 == a2)
2493e12c5d1SDavid du Colombier if(c1[o->a1])
2503e12c5d1SDavid du Colombier if(c3[o->a3]) {
2513e12c5d1SDavid du Colombier p->optab = (o-optab)+1;
2523e12c5d1SDavid du Colombier return o;
2533e12c5d1SDavid du Colombier }
2546b6b9ac8SDavid du Colombier diag("illegal combination %A %d %d %d",
2553e12c5d1SDavid du Colombier p->as, a1, a2, a3);
2563e12c5d1SDavid du Colombier if(1||!debug['a'])
2573e12c5d1SDavid du Colombier prasm(p);
2583e12c5d1SDavid du Colombier if(o == 0)
2593e12c5d1SDavid du Colombier errorexit();
2603e12c5d1SDavid du Colombier return o;
2613e12c5d1SDavid du Colombier }
2623e12c5d1SDavid du Colombier
2633e12c5d1SDavid du Colombier int
cmp(int a,int b)2643e12c5d1SDavid du Colombier cmp(int a, int b)
2653e12c5d1SDavid du Colombier {
2663e12c5d1SDavid du Colombier
2673e12c5d1SDavid du Colombier if(a == b)
2683e12c5d1SDavid du Colombier return 1;
2693e12c5d1SDavid du Colombier switch(a) {
2703e12c5d1SDavid du Colombier case C_LCON:
2713e12c5d1SDavid du Colombier if(b == C_ZCON || b == C_SCON || b == C_UCON)
2723e12c5d1SDavid du Colombier return 1;
2733e12c5d1SDavid du Colombier break;
2743e12c5d1SDavid du Colombier case C_UCON:
2753e12c5d1SDavid du Colombier if(b == C_ZCON)
2763e12c5d1SDavid du Colombier return 1;
2773e12c5d1SDavid du Colombier break;
2783e12c5d1SDavid du Colombier case C_SCON:
2793e12c5d1SDavid du Colombier if(b == C_ZCON)
2803e12c5d1SDavid du Colombier return 1;
2813e12c5d1SDavid du Colombier break;
2823e12c5d1SDavid du Colombier case C_LACON:
2833e12c5d1SDavid du Colombier if(b == C_SACON)
2843e12c5d1SDavid du Colombier return 1;
2853e12c5d1SDavid du Colombier break;
2863e12c5d1SDavid du Colombier case C_LBRA:
2873e12c5d1SDavid du Colombier if(b == C_SBRA)
2883e12c5d1SDavid du Colombier return 1;
2893e12c5d1SDavid du Colombier break;
2903e12c5d1SDavid du Colombier case C_ELEXT:
2913e12c5d1SDavid du Colombier if(b == C_ESEXT)
2923e12c5d1SDavid du Colombier return 1;
2933e12c5d1SDavid du Colombier break;
2943e12c5d1SDavid du Colombier case C_LEXT:
2953e12c5d1SDavid du Colombier if(b == C_SEXT ||
2963e12c5d1SDavid du Colombier b == C_ESEXT || b == C_OSEXT ||
2973e12c5d1SDavid du Colombier b == C_ELEXT || b == C_OLEXT)
2983e12c5d1SDavid du Colombier return 1;
2993e12c5d1SDavid du Colombier break;
3003e12c5d1SDavid du Colombier case C_SEXT:
3013e12c5d1SDavid du Colombier if(b == C_ESEXT || b == C_OSEXT)
3023e12c5d1SDavid du Colombier return 1;
3033e12c5d1SDavid du Colombier break;
3043e12c5d1SDavid du Colombier case C_ELAUTO:
3053e12c5d1SDavid du Colombier if(b == C_ESAUTO)
3063e12c5d1SDavid du Colombier return 1;
3073e12c5d1SDavid du Colombier break;
3083e12c5d1SDavid du Colombier case C_LAUTO:
3093e12c5d1SDavid du Colombier if(b == C_SAUTO ||
3103e12c5d1SDavid du Colombier b == C_ESAUTO || b == C_OSAUTO ||
3113e12c5d1SDavid du Colombier b == C_ELAUTO || b == C_OLAUTO)
3123e12c5d1SDavid du Colombier return 1;
3133e12c5d1SDavid du Colombier break;
3143e12c5d1SDavid du Colombier case C_SAUTO:
3153e12c5d1SDavid du Colombier if(b == C_ESAUTO || b == C_OSAUTO)
3163e12c5d1SDavid du Colombier return 1;
3173e12c5d1SDavid du Colombier break;
3183e12c5d1SDavid du Colombier case C_REG:
3193e12c5d1SDavid du Colombier if(b == C_ZCON)
3203e12c5d1SDavid du Colombier return 1;
3213e12c5d1SDavid du Colombier break;
3223e12c5d1SDavid du Colombier case C_LOREG:
3233e12c5d1SDavid du Colombier if(b == C_ZOREG || b == C_SOREG)
3243e12c5d1SDavid du Colombier return 1;
3253e12c5d1SDavid du Colombier break;
3263e12c5d1SDavid du Colombier case C_SOREG:
3273e12c5d1SDavid du Colombier if(b == C_ZOREG)
3283e12c5d1SDavid du Colombier return 1;
3293e12c5d1SDavid du Colombier break;
3303e12c5d1SDavid du Colombier
3313e12c5d1SDavid du Colombier case C_ANY:
3323e12c5d1SDavid du Colombier return 1;
3333e12c5d1SDavid du Colombier }
3343e12c5d1SDavid du Colombier return 0;
3353e12c5d1SDavid du Colombier }
3363e12c5d1SDavid du Colombier
3373e12c5d1SDavid du Colombier int
ocmp(const void * a1,const void * a2)3387dd7cddfSDavid du Colombier ocmp(const void *a1, const void *a2)
3393e12c5d1SDavid du Colombier {
3403e12c5d1SDavid du Colombier Optab *p1, *p2;
3413e12c5d1SDavid du Colombier int n;
3423e12c5d1SDavid du Colombier
3437dd7cddfSDavid du Colombier p1 = (Optab*)a1;
3447dd7cddfSDavid du Colombier p2 = (Optab*)a2;
3453e12c5d1SDavid du Colombier n = p1->as - p2->as;
3463e12c5d1SDavid du Colombier if(n)
3473e12c5d1SDavid du Colombier return n;
3483e12c5d1SDavid du Colombier n = p1->a1 - p2->a1;
3493e12c5d1SDavid du Colombier if(n)
3503e12c5d1SDavid du Colombier return n;
3513e12c5d1SDavid du Colombier n = p1->a2 - p2->a2;
3523e12c5d1SDavid du Colombier if(n)
3533e12c5d1SDavid du Colombier return n;
3543e12c5d1SDavid du Colombier n = p1->a3 - p2->a3;
3553e12c5d1SDavid du Colombier if(n)
3563e12c5d1SDavid du Colombier return n;
3573e12c5d1SDavid du Colombier return 0;
3583e12c5d1SDavid du Colombier }
3593e12c5d1SDavid du Colombier
3603e12c5d1SDavid du Colombier void
buildop(void)3613e12c5d1SDavid du Colombier buildop(void)
3623e12c5d1SDavid du Colombier {
3633e12c5d1SDavid du Colombier int i, n, r;
3643e12c5d1SDavid du Colombier
3653e12c5d1SDavid du Colombier for(i=0; i<C_NCLASS; i++)
3663e12c5d1SDavid du Colombier for(n=0; n<C_NCLASS; n++)
3673e12c5d1SDavid du Colombier xcmp[i][n] = cmp(n, i);
3683e12c5d1SDavid du Colombier for(n=0; optab[n].as != AXXX; n++)
3693e12c5d1SDavid du Colombier ;
3703e12c5d1SDavid du Colombier qsort(optab, n, sizeof(optab[0]), ocmp);
3713e12c5d1SDavid du Colombier for(i=0; i<n; i++) {
3723e12c5d1SDavid du Colombier r = optab[i].as;
3733e12c5d1SDavid du Colombier oprange[r].start = optab+i;
3743e12c5d1SDavid du Colombier while(optab[i].as == r)
3753e12c5d1SDavid du Colombier i++;
3763e12c5d1SDavid du Colombier oprange[r].stop = optab+i;
3773e12c5d1SDavid du Colombier i--;
3783e12c5d1SDavid du Colombier
3793e12c5d1SDavid du Colombier switch(r)
3803e12c5d1SDavid du Colombier {
3813e12c5d1SDavid du Colombier default:
3826b6b9ac8SDavid du Colombier diag("unknown op in build: %A", r);
3833e12c5d1SDavid du Colombier errorexit();
3843e12c5d1SDavid du Colombier case AADD:
385219b2ee8SDavid du Colombier oprange[AADDX] = oprange[r];
3863e12c5d1SDavid du Colombier oprange[ASUB] = oprange[r];
387219b2ee8SDavid du Colombier oprange[ASUBX] = oprange[r];
3883e12c5d1SDavid du Colombier oprange[AMUL] = oprange[r];
3893e12c5d1SDavid du Colombier oprange[AXOR] = oprange[r];
3903e12c5d1SDavid du Colombier oprange[AXNOR] = oprange[r];
3913e12c5d1SDavid du Colombier oprange[AAND] = oprange[r];
3923e12c5d1SDavid du Colombier oprange[AANDN] = oprange[r];
3933e12c5d1SDavid du Colombier oprange[AOR] = oprange[r];
3943e12c5d1SDavid du Colombier oprange[AORN] = oprange[r];
3953e12c5d1SDavid du Colombier oprange[ASLL] = oprange[r];
3963e12c5d1SDavid du Colombier oprange[ASRL] = oprange[r];
3973e12c5d1SDavid du Colombier oprange[ASRA] = oprange[r];
398219b2ee8SDavid du Colombier oprange[AADDCC] = oprange[r];
399219b2ee8SDavid du Colombier oprange[AADDXCC] = oprange[r];
400219b2ee8SDavid du Colombier oprange[ATADDCC] = oprange[r];
401219b2ee8SDavid du Colombier oprange[ATADDCCTV] = oprange[r];
4023e12c5d1SDavid du Colombier oprange[ASUBCC] = oprange[r];
403219b2ee8SDavid du Colombier oprange[ASUBXCC] = oprange[r];
404219b2ee8SDavid du Colombier oprange[ATSUBCC] = oprange[r];
405219b2ee8SDavid du Colombier oprange[ATSUBCCTV] = oprange[r];
4063e12c5d1SDavid du Colombier oprange[AXORCC] = oprange[r];
4073e12c5d1SDavid du Colombier oprange[AXNORCC] = oprange[r];
4083e12c5d1SDavid du Colombier oprange[AANDCC] = oprange[r];
4093e12c5d1SDavid du Colombier oprange[AANDNCC] = oprange[r];
4103e12c5d1SDavid du Colombier oprange[AORCC] = oprange[r];
4113e12c5d1SDavid du Colombier oprange[AORNCC] = oprange[r];
4123e12c5d1SDavid du Colombier oprange[AMULSCC] = oprange[r];
4133e12c5d1SDavid du Colombier oprange[ASAVE] = oprange[r];
4143e12c5d1SDavid du Colombier oprange[ARESTORE] = oprange[r];
4153e12c5d1SDavid du Colombier break;
4163e12c5d1SDavid du Colombier case AMOVB:
4173e12c5d1SDavid du Colombier oprange[AMOVH] = oprange[r];
4183e12c5d1SDavid du Colombier oprange[AMOVHU] = oprange[r];
4193e12c5d1SDavid du Colombier oprange[AMOVBU] = oprange[r];
4203e12c5d1SDavid du Colombier oprange[ASWAP] = oprange[r];
4213e12c5d1SDavid du Colombier oprange[ATAS] = oprange[r];
4223e12c5d1SDavid du Colombier break;
4233e12c5d1SDavid du Colombier case ABA:
4243e12c5d1SDavid du Colombier oprange[ABN] = oprange[r];
4253e12c5d1SDavid du Colombier oprange[AFBA] = oprange[r];
4263e12c5d1SDavid du Colombier oprange[AFBN] = oprange[r];
4273e12c5d1SDavid du Colombier break;
4283e12c5d1SDavid du Colombier case ABE:
4293e12c5d1SDavid du Colombier oprange[ABCC] = oprange[r];
4303e12c5d1SDavid du Colombier oprange[ABCS] = oprange[r];
4313e12c5d1SDavid du Colombier oprange[ABGE] = oprange[r];
4323e12c5d1SDavid du Colombier oprange[ABGU] = oprange[r];
4333e12c5d1SDavid du Colombier oprange[ABG] = oprange[r];
4343e12c5d1SDavid du Colombier oprange[ABLEU] = oprange[r];
4353e12c5d1SDavid du Colombier oprange[ABLE] = oprange[r];
4363e12c5d1SDavid du Colombier oprange[ABL] = oprange[r];
4373e12c5d1SDavid du Colombier oprange[ABNEG] = oprange[r];
4383e12c5d1SDavid du Colombier oprange[ABNE] = oprange[r];
4393e12c5d1SDavid du Colombier oprange[ABPOS] = oprange[r];
4403e12c5d1SDavid du Colombier oprange[ABVC] = oprange[r];
4413e12c5d1SDavid du Colombier oprange[ABVS] = oprange[r];
4423e12c5d1SDavid du Colombier
4433e12c5d1SDavid du Colombier oprange[AFBE] = oprange[r];
4443e12c5d1SDavid du Colombier oprange[AFBG] = oprange[r];
4453e12c5d1SDavid du Colombier oprange[AFBGE] = oprange[r];
4463e12c5d1SDavid du Colombier oprange[AFBL] = oprange[r];
4473e12c5d1SDavid du Colombier oprange[AFBLE] = oprange[r];
4483e12c5d1SDavid du Colombier oprange[AFBLG] = oprange[r];
4493e12c5d1SDavid du Colombier oprange[AFBNE] = oprange[r];
4503e12c5d1SDavid du Colombier oprange[AFBO] = oprange[r];
4513e12c5d1SDavid du Colombier oprange[AFBU] = oprange[r];
4523e12c5d1SDavid du Colombier oprange[AFBUE] = oprange[r];
4533e12c5d1SDavid du Colombier oprange[AFBUG] = oprange[r];
4543e12c5d1SDavid du Colombier oprange[AFBUGE] = oprange[r];
4553e12c5d1SDavid du Colombier oprange[AFBUL] = oprange[r];
4563e12c5d1SDavid du Colombier oprange[AFBULE] = oprange[r];
4573e12c5d1SDavid du Colombier break;
4583e12c5d1SDavid du Colombier case ATA:
4593e12c5d1SDavid du Colombier oprange[ATCC] = oprange[r];
4603e12c5d1SDavid du Colombier oprange[ATCS] = oprange[r];
4613e12c5d1SDavid du Colombier oprange[ATE] = oprange[r];
4623e12c5d1SDavid du Colombier oprange[ATGE] = oprange[r];
4633e12c5d1SDavid du Colombier oprange[ATGU] = oprange[r];
4643e12c5d1SDavid du Colombier oprange[ATG] = oprange[r];
4653e12c5d1SDavid du Colombier oprange[ATLEU] = oprange[r];
4663e12c5d1SDavid du Colombier oprange[ATLE] = oprange[r];
4673e12c5d1SDavid du Colombier oprange[ATL] = oprange[r];
4683e12c5d1SDavid du Colombier oprange[ATNEG] = oprange[r];
4693e12c5d1SDavid du Colombier oprange[ATNE] = oprange[r];
4703e12c5d1SDavid du Colombier oprange[ATN] = oprange[r];
4713e12c5d1SDavid du Colombier oprange[ATPOS] = oprange[r];
4723e12c5d1SDavid du Colombier oprange[ATVC] = oprange[r];
4733e12c5d1SDavid du Colombier oprange[ATVS] = oprange[r];
4743e12c5d1SDavid du Colombier break;
4753e12c5d1SDavid du Colombier case AFADDD:
4763e12c5d1SDavid du Colombier oprange[AFADDF] = oprange[r];
4773e12c5d1SDavid du Colombier oprange[AFADDX] = oprange[r];
4783e12c5d1SDavid du Colombier oprange[AFDIVD] = oprange[r];
4793e12c5d1SDavid du Colombier oprange[AFDIVF] = oprange[r];
4803e12c5d1SDavid du Colombier oprange[AFDIVX] = oprange[r];
4813e12c5d1SDavid du Colombier oprange[AFMULD] = oprange[r];
4823e12c5d1SDavid du Colombier oprange[AFMULF] = oprange[r];
4833e12c5d1SDavid du Colombier oprange[AFMULX] = oprange[r];
4843e12c5d1SDavid du Colombier oprange[AFSUBD] = oprange[r];
4853e12c5d1SDavid du Colombier oprange[AFSUBF] = oprange[r];
4863e12c5d1SDavid du Colombier oprange[AFSUBX] = oprange[r];
4873e12c5d1SDavid du Colombier break;
4883e12c5d1SDavid du Colombier case AFCMPD:
4893e12c5d1SDavid du Colombier oprange[AFCMPF] = oprange[r];
4903e12c5d1SDavid du Colombier oprange[AFCMPX] = oprange[r];
4913e12c5d1SDavid du Colombier oprange[AFCMPED] = oprange[r];
4923e12c5d1SDavid du Colombier oprange[AFCMPEF] = oprange[r];
4933e12c5d1SDavid du Colombier oprange[AFCMPEX] = oprange[r];
4943e12c5d1SDavid du Colombier break;
4953e12c5d1SDavid du Colombier case AFABSF:
4963e12c5d1SDavid du Colombier oprange[AFMOVDF] = oprange[r];
4973e12c5d1SDavid du Colombier oprange[AFMOVDW] = oprange[r];
4983e12c5d1SDavid du Colombier oprange[AFMOVFD] = oprange[r];
4993e12c5d1SDavid du Colombier oprange[AFMOVFW] = oprange[r];
5003e12c5d1SDavid du Colombier oprange[AFMOVWD] = oprange[r];
5013e12c5d1SDavid du Colombier oprange[AFMOVWF] = oprange[r];
5023e12c5d1SDavid du Colombier oprange[AFNEGF] = oprange[r];
5033e12c5d1SDavid du Colombier oprange[AFSQRTD] = oprange[r];
5043e12c5d1SDavid du Colombier oprange[AFSQRTF] = oprange[r];
5053e12c5d1SDavid du Colombier break;
5063e12c5d1SDavid du Colombier case AFMOVF:
5073e12c5d1SDavid du Colombier case AFMOVD:
5083e12c5d1SDavid du Colombier case AMOVW:
5093e12c5d1SDavid du Colombier case AMOVD:
5103e12c5d1SDavid du Colombier case AWORD:
5113e12c5d1SDavid du Colombier case ARETT:
5123e12c5d1SDavid du Colombier case AJMPL:
5133e12c5d1SDavid du Colombier case AJMP:
5143e12c5d1SDavid du Colombier case ACMP:
5153e12c5d1SDavid du Colombier case ANOP:
5163e12c5d1SDavid du Colombier case ATEXT:
5173e12c5d1SDavid du Colombier case ADIV:
5183e12c5d1SDavid du Colombier case ADIVL:
5193e12c5d1SDavid du Colombier case AMOD:
5203e12c5d1SDavid du Colombier case AMODL:
5213e12c5d1SDavid du Colombier break;
5223e12c5d1SDavid du Colombier }
5233e12c5d1SDavid du Colombier }
5243e12c5d1SDavid du Colombier }
525