commit - 82f7044d260ba86c4ed3b94c90f95ef93a3424da
commit + efcdc2f735a18fd0f4f7708ec523641c96179ad9
blob - 9504f77484f3e758af98278e26a2ff6c7a1a2a2a
blob + 0fabf1f2b0d0e80d7a6ff4473bcaeb33f27b0a07
--- cc/irc/irc.c
+++ cc/irc/irc.c
} else if (strcmp (lval.s, "xor") == 0) {
expr_bin (fn, dt, e, EX_XOR, 0);
} else if (strcmp (lval.s, "mul") == 0) {
- expr_bin (fn, dt, e, EX_MUL, 0);
+ expr_bin (fn, dt, e, EX_MUL, 1);
} else if (strcmp (lval.s, "udiv") == 0) {
expr_bin (fn, dt, e, EX_UDIV, 0);
} else if (strcmp (lval.s, "sdiv") == 0) {
call_muldiv ("mul", fn, dt, e);
break;
case DT_FLOAT:
- error ("multiplication not implemented for DT_FLOAT");
+ load (NULL, r);
+ if (ri->is_imm)
+ error ("cannot use immediate values for floating-point operations");
+ load ("fmul", &fn->regs[ri->reg]);
break;
}
break;
blob - db86c91d6e1dc50b6a6904583a518e608eb3ce78
blob + aea4ad0dafaf438128f6825918f06cb74ebeb6d3
--- cc/irc/test.ir
+++ cc/irc/test.ir
let $6: float = $5;
let $7: float = add $0, $1;
let $8: float = sub $0, $1;
+ let $9: float = mul $0, $1;
ret $0;
}