aboutsummaryrefslogtreecommitdiff
path: root/isel.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <[email protected]>2016-04-20 09:47:38 -0400
committerQuentin Carbonneaux <[email protected]>2016-04-20 09:56:29 -0400
commit657c3fa66b5700a1fde89fbd8c92cd9dc56eea3b (patch)
tree3a26376d76d86df68f31abeadcc91b040a9bd921 /isel.c
parentb7debc4e7f5d50a89214421a704864a30a291cdc (diff)
match jumps/ops with il text
Diffstat (limited to 'isel.c')
-rw-r--r--isel.c166
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 */