no mul->shl as it confuses address matching

Additionally, the strength-reduction
for small powers of two is handled
by amd64/emit.c now.
This commit is contained in:
Quentin Carbonneaux 2024-06-19 10:50:54 +02:00
parent 6dab93b4b2
commit 7de34d3454

12
simpl.c
View file

@ -81,13 +81,6 @@ ins(Ins **pi, int *new, Blk *b, Fn *fn)
blit((i-1)->arg, rsval(i->arg[0]), fn);
*pi = i-1;
return;
case Omul:
if (rtype(i->arg[0]) == RCon) {
r = i->arg[0];
i->arg[0] = i->arg[1];
i->arg[1] = r;
}
/* fall through */
case Oudiv:
case Ourem:
r = i->arg[1];
@ -100,12 +93,9 @@ ins(Ins **pi, int *new, Blk *b, Fn *fn)
if (i->op == Ourem) {
i->op = Oand;
i->arg[1] = getcon((1ull<<n) - 1, fn);
} else if (i->op == Oudiv) {
} else {
i->op = Oshr;
i->arg[1] = getcon(n, fn);
} else if (i->op == Omul) {
i->op = Oshl;
i->arg[1] = getcon(n, fn);
}
}
}