diff options
Diffstat (limited to 'isel.c')
-rw-r--r-- | isel.c | 166 |
1 files changed, 83 insertions, 83 deletions
diff --git a/isel.c b/isel.c index 31ea4ea..bebc47e 100644 --- a/isel.c +++ b/isel.c @@ -40,8 +40,8 @@ fcmptoi(int fc) case FCge: return ICuge; case FCne: return ICne; case FCeq: return ICeq; - case FCo: return ICXnp; - case FCuo: return ICXp; + case FCo: return ICxnp; + case FCuo: return ICxp; } } @@ -50,20 +50,20 @@ iscmp(int op, int *pk, int *pc) { int k, c; - if (OCmpw <= op && op <= OCmpw1) { - c = op - OCmpw; + if (Ocmpw <= op && op <= Ocmpw1) { + c = op - Ocmpw; k = Kw; } - else if (OCmpl <= op && op <= OCmpl1) { - c = op - OCmpl; + else if (Ocmpl <= op && op <= Ocmpl1) { + c = op - Ocmpl; k = Kl; } - else if (OCmps <= op && op <= OCmps1) { - c = fcmptoi(op - OCmps); + else if (Ocmps <= op && op <= Ocmps1) { + c = fcmptoi(op - Ocmps); k = Ks; } - else if (OCmpd <= op && op <= OCmpd1) { - c = fcmptoi(op - OCmpd); + else if (Ocmpd <= op && op <= Ocmpd1) { + c = fcmptoi(op - Ocmpd); k = Kd; } else @@ -141,7 +141,7 @@ fixarg(Ref *r, int k, int phi, Fn *fn) * long temporary */ r1 = newtmp("isel", Kl, fn); - emit(OCopy, Kl, r1, r0, R); + emit(Ocopy, Kl, r1, r0, R); } else if (s != -1) { /* load fast locals' addresses into @@ -149,7 +149,7 @@ fixarg(Ref *r, int k, int phi, Fn *fn) * instruction */ r1 = newtmp("isel", Kl, fn); - emit(OAddr, Kl, r1, SLOT(s), R); + emit(Oaddr, Kl, r1, SLOT(s), R); } *r = r1; } @@ -190,7 +190,7 @@ selcmp(Ref arg[2], int k, Fn *fn) arg[0] = r; } assert(rtype(arg[0]) != RCon); - emit(OXCmp, k, R, arg[1], arg[0]); + emit(Oxcmp, k, R, arg[1], arg[0]); iarg = curi->arg; fixarg(&iarg[0], k, 0, fn); fixarg(&iarg[1], k, 0, fn); @@ -214,16 +214,16 @@ sel(Ins i, ANum *an, Fn *fn) i0 = curi; k = i.cls; switch (i.op) { - case ODiv: - case ORem: - case OUDiv: - case OURem: - if (i.op == ODiv || i.op == OUDiv) + case Odiv: + case Orem: + case Oudiv: + case Ourem: + if (i.op == Odiv || i.op == Oudiv) r0 = TMP(RAX), r1 = TMP(RDX); else r0 = TMP(RDX), r1 = TMP(RAX); - emit(OCopy, k, i.to, r0, R); - emit(OCopy, k, R, r1, R); + emit(Ocopy, k, i.to, r0, R); + emit(Ocopy, k, R, r1, R); if (rtype(i.arg[1]) == RCon) { /* immediates not allowed for * divisions in x86 @@ -234,63 +234,63 @@ sel(Ins i, ANum *an, Fn *fn) if (fn->tmp[r0.val].slot != -1) err("unlikely argument %%%s in %s", fn->tmp[r0.val].name, opdesc[i.op].name); - if (i.op == ODiv || i.op == ORem) { - emit(OXIDiv, k, R, r0, R); - emit(OSign, k, TMP(RDX), TMP(RAX), R); + if (i.op == Odiv || i.op == Orem) { + emit(Oxidiv, k, R, r0, R); + emit(Osign, k, TMP(RDX), TMP(RAX), R); } else { - emit(OXDiv, k, R, r0, R); - emit(OCopy, k, TMP(RDX), CON_Z, R); + emit(Oxdiv, k, R, r0, R); + emit(Ocopy, k, TMP(RDX), CON_Z, R); } - emit(OCopy, k, TMP(RAX), i.arg[0], R); + emit(Ocopy, k, TMP(RAX), i.arg[0], R); fixarg(&curi->arg[0], k, 0, fn); if (rtype(i.arg[1]) == RCon) - emit(OCopy, k, r0, i.arg[1], R); + emit(Ocopy, k, r0, i.arg[1], R); break; - case OSar: - case OShr: - case OShl: + case Osar: + case Oshr: + case Oshl: if (rtype(i.arg[1]) == RCon) goto Emit; r0 = i.arg[1]; i.arg[1] = TMP(RCX); - emit(OCopy, Kw, R, TMP(RCX), R); + emit(Ocopy, Kw, R, TMP(RCX), R); emiti(i); - emit(OCopy, Kw, TMP(RCX), r0, R); + emit(Ocopy, Kw, TMP(RCX), r0, R); break; - case ONop: + case Onop: break; - case OStored: - case OStores: - case OStorel: - case OStorew: - case OStoreh: - case OStoreb: + case Ostored: + case Ostores: + case Ostorel: + case Ostorew: + case Ostoreh: + case Ostoreb: if (rtype(i.arg[0]) == RCon) { - if (i.op == OStored) - i.op = OStorel; - if (i.op == OStores) - i.op = OStorew; + if (i.op == Ostored) + i.op = Ostorel; + if (i.op == Ostores) + i.op = Ostorew; } seladdr(&i.arg[1], an, fn); goto Emit; - case_OLoad: + case_Oload: seladdr(&i.arg[0], an, fn); goto Emit; - case OCall: - case OSAlloc: - case OCopy: - case OAdd: - case OSub: - case OMul: - case OAnd: - case OOr: - case OXor: - case OXTest: - case OFtosi: - case OSitof: - case OExts: - case OTruncd: - case OCast: + case Ocall: + case Osalloc: + case Ocopy: + case Oadd: + case Osub: + case Omul: + case Oand: + case Oor: + case Oxor: + case Oxtest: + case Oftosi: + case Ositof: + case Oexts: + case Otruncd: + case Ocast: case_OExt: Emit: emiti(i); @@ -298,9 +298,9 @@ Emit: fixarg(&iarg[0], argcls(&i, 0), 0, fn); fixarg(&iarg[1], argcls(&i, 1), 0, fn); break; - case OAlloc: - case OAlloc+1: - case OAlloc+2: /* == OAlloc1 */ + case Oalloc: + case Oalloc+1: + case Oalloc+2: /* == Oalloc1 */ /* we need to make sure * the stack remains aligned * (rsp = 0) mod 16 @@ -310,14 +310,14 @@ Emit: if (sz < 0 || sz >= INT_MAX-15) err("invalid alloc size %"PRId64, sz); sz = (sz + 15) & -16; - emit(OSAlloc, Kl, i.to, getcon(sz, fn), R); + emit(Osalloc, Kl, i.to, getcon(sz, fn), R); } else { /* r0 = (i.arg[0] + 15) & -16 */ r0 = newtmp("isel", Kl, fn); r1 = newtmp("isel", Kl, fn); - emit(OSAlloc, Kl, i.to, r0, R); - emit(OAnd, Kl, r0, r1, getcon(-16, fn)); - emit(OAdd, Kl, r1, i.arg[0], getcon(15, fn)); + emit(Osalloc, Kl, i.to, r0, R); + emit(Oand, Kl, r0, r1, getcon(-16, fn)); + emit(Oadd, Kl, r1, i.arg[0], getcon(15, fn)); if (fn->tmp[i.arg[0].val].slot != -1) err("unlikely argument %%%s in %s", fn->tmp[i.arg[0].val].name, opdesc[i.op].name); @@ -327,11 +327,11 @@ Emit: if (isext(i.op)) goto case_OExt; if (isload(i.op)) - goto case_OLoad; + goto case_Oload; if (iscmp(i.op, &kc, &x)) { if (rtype(i.arg[0]) == RCon) x = icmpop(x); - emit(OXSet+x, k, i.to, R, R); + emit(Oxset+x, k, i.to, R, R); selcmp(i.arg, kc, fn); break; } @@ -365,14 +365,14 @@ seljmp(Blk *b, Fn *fn) int c, k; Ins *fi; - if (b->jmp.type == JRet0 || b->jmp.type == JJmp) + if (b->jmp.type == Jret0 || b->jmp.type == Jjmp) return; - assert(b->jmp.type == JJnz); + assert(b->jmp.type == Jjnz); r = b->jmp.arg; b->jmp.arg = R; assert(!req(r, R) && rtype(r) != RCon); if (b->s1 == b->s2) { - b->jmp.type = JJmp; + b->jmp.type = Jjmp; b->s2 = 0; return; } @@ -381,20 +381,20 @@ seljmp(Blk *b, Fn *fn) if (iscmp(fi->op, &k, &c)) { if (rtype(fi->arg[0]) == RCon) c = icmpop(c); - b->jmp.type = JXJc + c; + b->jmp.type = Jxjc + c; if (fn->tmp[r.val].nuse == 1) { assert(fn->tmp[r.val].ndef == 1); selcmp(fi->arg, k, fn); - *fi = (Ins){.op = ONop}; + *fi = (Ins){.op = Onop}; } return; } - if (fi->op == OAnd && fn->tmp[r.val].nuse == 1 + if (fi->op == Oand && fn->tmp[r.val].nuse == 1 && (rtype(fi->arg[0]) == RTmp || rtype(fi->arg[1]) == RTmp)) { - fi->op = OXTest; + fi->op = Oxtest; fi->to = R; - b->jmp.type = JXJc + ICne; + b->jmp.type = Jxjc + ICne; if (rtype(fi->arg[1]) == RCon) { r = fi->arg[1]; fi->arg[1] = fi->arg[0]; @@ -407,12 +407,12 @@ seljmp(Blk *b, Fn *fn) * has to be marked as live */ if (fn->tmp[r.val].nuse == 1) - emit(OCopy, Kw, R, r, R); - b->jmp.type = JXJc + ICne; + emit(Ocopy, Kw, R, r, R); + b->jmp.type = Jxjc + ICne; return; } selcmp((Ref[2]){r, CON_Z}, Kw, fn); /* todo, add long branch if non-zero */ - b->jmp.type = JXJc + ICne; + b->jmp.type = Jxjc + ICne; } static int @@ -474,13 +474,13 @@ anumber(ANum *ai, Blk *b, Con *con) for (i=b->ins; i-b->ins < b->nins; i++) { if (rtype(i->to) == RTmp) ai[i->to.val].i = i; - if (i->op != OAdd && i->op != OMul) + if (i->op != Oadd && i->op != Omul) continue; a1 = aref(i->arg[0], ai); a2 = aref(i->arg[1], ai); t1 = a1 != 1 && a1 != 2; t2 = a2 != 1 && a2 != 2; - if (i->op == OAdd) { + if (i->op == Oadd) { a = add[n1 = a1][n2 = a2]; if (t1 && a < add[0][a2]) a = add[n1 = 0][n2 = a2]; @@ -586,7 +586,7 @@ isel(Fn *fn) /* assign slots to fast allocs */ b = fn->start; /* specific to NAlign == 3 */ /* or change n=4 and sz /= 4 below */ - for (al=OAlloc, n=4; al<=OAlloc1; al++, n*=2) + for (al=Oalloc, n=4; al<=Oalloc1; al++, n*=2) for (i=b->ins; i-b->ins < b->nins; i++) if (i->op == al) { if (rtype(i->arg[0]) != RCon) @@ -598,7 +598,7 @@ isel(Fn *fn) sz /= 4; fn->tmp[i->to.val].slot = fn->slot; fn->slot += sz; - *i = (Ins){.op = ONop}; + *i = (Ins){.op = Onop}; } /* process basic blocks */ |