aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64/isel.c
diff options
context:
space:
mode:
Diffstat (limited to 'amd64/isel.c')
-rw-r--r--amd64/isel.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/amd64/isel.c b/amd64/isel.c
index ff0968c..8d19cad 100644
--- a/amd64/isel.c
+++ b/amd64/isel.c
@@ -180,6 +180,8 @@ sel(struct function *fn, struct instr *ins, struct block *blk, int *curi)
insertinstr(blk, (*curi)++, mkinstr(Omove, ins->cls, mkref(RREG, RDX), mkref(RREG, RDX)));
fixarg(fn, &ins->r, ins, blk, curi); /* make sure rhs is memory or reg */
ins->l = mkref(RREG, RAX);
+ if (op == Orem) ins->op = Odiv;
+ else if (op == Ourem) ins->op = Oudiv;
insertinstr(blk, (*curi)++, *ins); /* duplicate ins to reuse tmp ref */
*ins = mkinstr(Ocopy, ins->cls, mkref(RREG, op < Orem ? RAX : RDX)); /* get output */
temp = mkinstr(Ocopy, ins->cls, mkref(RREG, op < Orem ? RDX : RAX)); /* clobber other reg*/