From 97c6d5c44f30b29b52d1dc431ab9f2df4bb47fd2 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 31 Dec 2025 11:13:15 +0100 Subject: backend: separate instrs for integer/float store --- x86_64/isel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'x86_64/isel.c') diff --git a/x86_64/isel.c b/x86_64/isel.c index d69f9ad..8a845ef 100644 --- a/x86_64/isel.c +++ b/x86_64/isel.c @@ -139,7 +139,7 @@ selcall(struct function *fn, struct instr *ins, struct block *blk, int *curi) union ref adr = mkaddr((struct addr){mkref(RREG, RSP), .disp = abi.stk}); int iargsave = iarg; if (!abi.ty.isagg) { /* scalar arg in stack */ - *arg = mkinstr(Ostore8+ilog2(cls2siz[abi.ty.cls]), 0, adr, arg->r); + *arg = mkinstr(cls2store[abi.ty.cls], 0, adr, arg->r); if (isaddrcon(arg->r,1) || arg->r.t == RADDR) arg->r = insertinstr(blk, iarg++, mkinstr(Ocopy, abi.ty.cls, arg->r)); else @@ -497,7 +497,7 @@ sel(struct function *fn, struct instr *ins, struct block *blk, int *curi) case Oloads32: case Oloadu32: case Oloadi64: case Oloadf32: case Oloadf64: loadstoreaddr(blk, &ins->l, curi); break; - case Ostore8: case Ostore16: case Ostore32: case Ostore64: + case Ostorei8: case Ostorei16: case Ostorei32: case Ostorei64: case Ostoref32: case Ostoref64: loadstoreaddr(blk, &ins->l, curi); if (isaddrcon(ins->r,1) || ins->r.t == RADDR) ins->r = insertinstr(blk, (*curi)++, mkinstr(Ocopy, KPTR, ins->r)); -- cgit v1.2.3