aboutsummaryrefslogtreecommitdiff
path: root/fold.c
diff options
context:
space:
mode:
Diffstat (limited to 'fold.c')
-rw-r--r--fold.c62
1 files changed, 31 insertions, 31 deletions
diff --git a/fold.c b/fold.c
index 6129421..55672dd 100644
--- a/fold.c
+++ b/fold.c
@@ -100,7 +100,7 @@ visitins(Ins *i, Fn *fn)
if (rtype(i->to) != RTmp)
return;
- if (opdesc[i->op].cfold) {
+ if (optab[i->op].canfold) {
l = latval(i->arg[0]);
if (!req(i->arg[1], R))
r = latval(i->arg[1]);
@@ -114,7 +114,7 @@ visitins(Ins *i, Fn *fn)
v = opfold(i->op, i->cls, &fn->con[l], &fn->con[r], fn);
} else
v = Bot;
- /* fprintf(stderr, "\nvisiting %s (%p)", opdesc[i->op].name, (void *)i); */
+ /* fprintf(stderr, "\nvisiting %s (%p)", optab[i->op].name, (void *)i); */
update(i->to.val, v, fn);
}
@@ -360,7 +360,7 @@ foldint(Con *res, int op, int w, Con *cl, Con *cr)
else if (cl->type == CAddr || cr->type == CAddr) {
if (Ocmpl <= op && op <= Ocmpl1)
return 1;
- err("invalid address operand for '%s'", opdesc[op].name);
+ err("invalid address operand for '%s'", optab[op].name);
}
switch (op) {
case Oadd: x = l.u + r.u; break;
@@ -397,42 +397,42 @@ foldint(Con *res, int op, int w, Con *cl, Con *cr)
} else
op -= Ocmpl - Ocmpw;
switch (op - Ocmpw) {
- case ICule: x = l.u <= r.u; break;
- case ICult: x = l.u < r.u; break;
- case ICsle: x = l.s <= r.s; break;
- case ICslt: x = l.s < r.s; break;
- case ICsgt: x = l.s > r.s; break;
- case ICsge: x = l.s >= r.s; break;
- case ICugt: x = l.u > r.u; break;
- case ICuge: x = l.u >= r.u; break;
- case ICeq: x = l.u == r.u; break;
- case ICne: x = l.u != r.u; break;
+ case Ciule: x = l.u <= r.u; break;
+ case Ciult: x = l.u < r.u; break;
+ case Cisle: x = l.s <= r.s; break;
+ case Cislt: x = l.s < r.s; break;
+ case Cisgt: x = l.s > r.s; break;
+ case Cisge: x = l.s >= r.s; break;
+ case Ciugt: x = l.u > r.u; break;
+ case Ciuge: x = l.u >= r.u; break;
+ case Cieq: x = l.u == r.u; break;
+ case Cine: x = l.u != r.u; break;
default: die("unreachable");
}
}
else if (Ocmps <= op && op <= Ocmps1) {
switch (op - Ocmps) {
- case FCle: x = l.fs <= r.fs; break;
- case FClt: x = l.fs < r.fs; break;
- case FCgt: x = l.fs > r.fs; break;
- case FCge: x = l.fs >= r.fs; break;
- case FCne: x = l.fs != r.fs; break;
- case FCeq: x = l.fs == r.fs; break;
- case FCo: x = l.fs < r.fs || l.fs >= r.fs; break;
- case FCuo: x = !(l.fs < r.fs || l.fs >= r.fs); break;
+ case Cfle: x = l.fs <= r.fs; break;
+ case Cflt: x = l.fs < r.fs; break;
+ case Cfgt: x = l.fs > r.fs; break;
+ case Cfge: x = l.fs >= r.fs; break;
+ case Cfne: x = l.fs != r.fs; break;
+ case Cfeq: x = l.fs == r.fs; break;
+ case Cfo: x = l.fs < r.fs || l.fs >= r.fs; break;
+ case Cfuo: x = !(l.fs < r.fs || l.fs >= r.fs); break;
default: die("unreachable");
}
}
else if (Ocmpd <= op && op <= Ocmpd1) {
switch (op - Ocmpd) {
- case FCle: x = l.fd <= r.fd; break;
- case FClt: x = l.fd < r.fd; break;
- case FCgt: x = l.fd > r.fd; break;
- case FCge: x = l.fd >= r.fd; break;
- case FCne: x = l.fd != r.fd; break;
- case FCeq: x = l.fd == r.fd; break;
- case FCo: x = l.fd < r.fd || l.fd >= r.fd; break;
- case FCuo: x = !(l.fd < r.fd || l.fd >= r.fd); break;
+ case Cfle: x = l.fd <= r.fd; break;
+ case Cflt: x = l.fd < r.fd; break;
+ case Cfgt: x = l.fd > r.fd; break;
+ case Cfge: x = l.fd >= r.fd; break;
+ case Cfne: x = l.fd != r.fd; break;
+ case Cfeq: x = l.fd == r.fd; break;
+ case Cfo: x = l.fd < r.fd || l.fd >= r.fd; break;
+ case Cfuo: x = !(l.fd < r.fd || l.fd >= r.fd); break;
default: die("unreachable");
}
}
@@ -453,7 +453,7 @@ foldflt(Con *res, int op, int w, Con *cl, Con *cr)
double xd, ld, rd;
if (cl->type != CBits || cr->type != CBits)
- err("invalid address operand for '%s'", opdesc[op].name);
+ err("invalid address operand for '%s'", optab[op].name);
if (w) {
ld = cl->bits.d;
rd = cr->bits.d;
@@ -495,7 +495,7 @@ opfold(int op, int cls, Con *cl, Con *cr, Fn *fn)
if ((op == Odiv || op == Oudiv
|| op == Orem || op == Ourem) && czero(cr, KWIDE(cls)))
- err("null divisor in '%s'", opdesc[op].name);
+ err("null divisor in '%s'", optab[op].name);
if (cls == Kw || cls == Kl) {
if (foldint(&c, op, cls == Kl, cl, cr))
return Bot;