diff options
| author | 2025-12-31 11:13:15 +0100 | |
|---|---|---|
| committer | 2025-12-31 11:13:15 +0100 | |
| commit | 97c6d5c44f30b29b52d1dc431ab9f2df4bb47fd2 (patch) | |
| tree | 564615d402793491d545d612df31dd80451120ab /c | |
| parent | 3a46902b3ede49116522992793d3ececef53c5a8 (diff) | |
backend: separate instrs for integer/float store
Diffstat (limited to 'c')
| -rw-r--r-- | c/c.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -2951,10 +2951,10 @@ genstore(struct function *fn, union type t, union ref ptr, union ref val) assert(isscalar(t)); switch (typesize(t)) { - case 1: ins.op = Ostore8; break; - case 2: ins.op = Ostore16; break; - case 4: ins.op = Ostore32; break; - case 8: ins.op = Ostore64; break; + case 1: ins.op = Ostorei8; break; + case 2: ins.op = Ostorei16; break; + case 4: ins.op = isflt(t) ? Ostoref32 : Ostorei32; break; + case 8: ins.op = isflt(t) ? Ostoref64 : Ostorei64; break; default: assert(0); } ins.l = ptr; @@ -2988,7 +2988,7 @@ geninit(struct function *fn, union type t, union ref dst, const struct expr *src /* write individual zeros at non initialized gaps */ for (uint i = 0; bsiter(&i, azero, countof(azero)) && i < siz; i += align) { adr = irbinop(fn, Oadd, KPTR, dst, mkref(RICON, i)); - addinstr(fn, mkinstr(Ostore8 + ilog2(align), 0, .l = adr, .r = ZEROREF)); + addinstr(fn, mkinstr(Ostorei8 + ilog2(align), 0, .l = adr, .r = ZEROREF)); } } else { goto Memset0; |