aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64/isel.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2023-06-14 19:57:06 +0200
committerlemon <lsof@mailbox.org>2023-06-14 19:59:59 +0200
commit7ff9885f9680b930e7cd3923b1d6dad2ed22766e (patch)
treebe719fbacdb99b3ec6066137cac1ab63e19d64be /amd64/isel.c
parent782d4e9df0363ca9f64d8b92a3d6952d552f13a5 (diff)
imrpove emit()
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*/