diff --git a/arm64-gen.c b/arm64-gen.c index 01ea3909..2038aeba 100644 --- a/arm64-gen.c +++ b/arm64-gen.c @@ -1756,6 +1756,7 @@ static void arm64_gen_opil(int op, uint32_t l) o(0x4b000000 | l << 31 | x | a << 5 | b << 16); // sub break; case '/': + case TOK_PDIV: o(0x1ac00c00 | l << 31 | x | a << 5 | b << 16); // sdiv break; case '^': @@ -1798,7 +1799,6 @@ static void arm64_gen_opil(int op, uint32_t l) o(0x1ac02400 | l << 31 | x | a << 5 | b << 16); // lsr break; case TOK_UDIV: - case TOK_PDIV: o(0x1ac00800 | l << 31 | x | a << 5 | b << 16); // udiv break; case TOK_UGE: diff --git a/riscv64-gen.c b/riscv64-gen.c index e03d6e42..19c76682 100644 --- a/riscv64-gen.c +++ b/riscv64-gen.c @@ -1110,6 +1110,7 @@ static void gen_opil(int op, int ll) ER(0x33 | ll, 0, d, a, b, 1); // mul d, a, b break; case '/': + case TOK_PDIV: ER(0x33 | ll, 4, d, a, b, 1); // div d, a, b break; case '&': @@ -1127,7 +1128,6 @@ static void gen_opil(int op, int ll) case TOK_UMOD: ER(0x33 | ll, 7, d, a, b, 1); // remu d, a, b break; - case TOK_PDIV: case TOK_UDIV: ER(0x33 | ll, 5, d, a, b, 1); // divu d, a, b break;