diff options
| author | 2023-06-14 19:57:06 +0200 | |
|---|---|---|
| committer | 2023-06-14 19:59:59 +0200 | |
| commit | 7ff9885f9680b930e7cd3923b1d6dad2ed22766e (patch) | |
| tree | be719fbacdb99b3ec6066137cac1ab63e19d64be /amd64/isel.c | |
| parent | 782d4e9df0363ca9f64d8b92a3d6952d552f13a5 (diff) | |
imrpove emit()
Diffstat (limited to 'amd64/isel.c')
| -rw-r--r-- | amd64/isel.c | 2 |
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*/ |