nooc

nooc programming language compiler
git clone git://git.nihaljere.xyz/nooc
Log | Files | Refs | LICENSE

commit fd0e69ba135f7fc6fc9dc95917128fbc99b806ed
parent 1c41819e40c2bc91f7495ba692e528fdaff4a25d
Author: Nihal Jere <nihal@nihaljere.xyz>
Date:   Fri,  4 Feb 2022 18:45:29 -0600

x64: pick store size using temp size

Diffstat:
Mx64.c | 17++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/x64.c b/x64.c @@ -885,7 +885,22 @@ emitblock(struct data *const text, const struct iproc *const proc, const struct NEXT; assert(ins->op == IR_EXTRA); assert(ins->valtype == VT_TEMP); - total += mov_mr64_r64(text, proc->temps.data[ins->val].reg, src); + switch (proc->temps.data[ins->val].size) { + case 8: + total += mov_mr64_r64(text, proc->temps.data[ins->val].reg, src); + break; + case 4: + total += mov_mr32_r32(text, proc->temps.data[ins->val].reg, src); + break; + case 2: + total += mov_mr16_r16(text, proc->temps.data[ins->val].reg, src); + break; + case 1: + total += mov_mr8_r8(text, proc->temps.data[ins->val].reg, src); + break; + default: + die("x64: emitblock: IR_STORE: bad size"); + } NEXT; break; case IR_ASSIGN: