commit 1ee10934936c2c6167c18c1553df440a463b8585 from: Benjamin Stürz date: Wed Oct 02 21:48:35 2024 UTC irc: allow EX_SDIV for DT_FLOAT commit - 73274e21f47e83e0db2fb90aa7f01fa56b1db94f commit + 1ee10934936c2c6167c18c1553df440a463b8585 blob - 4f2f8af0f3e80103498b0e02a99a9d3497356fdf blob + 036a435815a2c7df563af0ef0aeac11f18e9200f --- cc/irc/irc.c +++ cc/irc/irc.c @@ -729,7 +729,7 @@ struct expr *e; } else if (strcmp (lval.s, "udiv") == 0) { expr_bin (fn, dt, e, EX_UDIV, 0); } else if (strcmp (lval.s, "sdiv") == 0) { - expr_bin (fn, dt, e, EX_SDIV, 0); + expr_bin (fn, dt, e, EX_SDIV, 1); } else if (strcmp (lval.s, "lsl") == 0) { expr_shift (fn, dt, e, EX_LSL); } else if (strcmp (lval.s, "lsr") == 0) { @@ -1809,7 +1809,10 @@ struct expr *e; call_muldiv (instr, fn, dt, e); break; case DT_FLOAT: - error ("division not implemented for DT_FLOAT"); + if (ri->is_imm) + error ("cannot use immediate values for floating-point operations"); + load (NULL, acc); + load ("fdiv", &fn->regs[ri->reg]); break; } return 0; blob - aea4ad0dafaf438128f6825918f06cb74ebeb6d3 blob + 432a4c70acf5e0d518e99f8713e6c2cb56f068fc --- cc/irc/test.ir +++ cc/irc/test.ir @@ -203,5 +203,6 @@ fn floats (): float { let $7: float = add $0, $1; let $8: float = sub $0, $1; let $9: float = mul $0, $1; + let $10: float = sdiv $0, $1; ret $0; }