aboutsummaryrefslogtreecommitdiffhomepage
path: root/x86_64/emit.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-12-31 11:13:15 +0100
committerlemon <lsof@mailbox.org>2025-12-31 11:13:15 +0100
commit97c6d5c44f30b29b52d1dc431ab9f2df4bb47fd2 (patch)
tree564615d402793491d545d612df31dd80451120ab /x86_64/emit.c
parent3a46902b3ede49116522992793d3ececef53c5a8 (diff)
backend: separate instrs for integer/float store
Diffstat (limited to 'x86_64/emit.c')
-rw-r--r--x86_64/emit.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/x86_64/emit.c b/x86_64/emit.c
index b0b4f58..783ea20 100644
--- a/x86_64/emit.c
+++ b/x86_64/emit.c
@@ -979,14 +979,14 @@ emitinstr(uchar **pcode, struct function *fn, struct block *blk, int curi, struc
dst = reg2oper(ins->reg-1);
gencopy(pcode, cls, blk, curi, dst, ins->l);
break;
- case Ostore8: cls = KI32, X = Xmovb; goto Store;
- case Ostore16: cls = KI32, X = Xmovw; goto Store;
- case Ostore32: cls = KI32, X = Xmov; goto Store;
- case Ostore64: cls = KI64, X = Xmov;
+ case Ostorei8: cls = KI32, X = Xmovb; goto Store;
+ case Ostorei16: cls = KI32, X = Xmovw; goto Store;
+ case Ostorei32: cls = KI32, X = Xmov; goto Store;
+ case Ostorei64: cls = KI64, X = Xmov; goto Store;
+ case Ostoref32: cls = KF32, X = Xmov; goto Store;
+ case Ostoref64: cls = KF64, X = Xmov; goto Store;
Store:
src = mkimmregoper(ins->r);
- if (cls == KI32 && src.t == OREG && src.reg >= XMM0) cls = KF32;
- if (cls == KI64 && src.t == OREG && src.reg >= XMM0) cls = KF64;
X(pcode, cls, mkmemoper(ins->l), src);
break;
case Oexts8: src = mkregoper(ins->l); goto Movsxb;