[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 42/76] target/microblaze: Convert dec_div to decodetree
From: |
Richard Henderson |
Subject: |
[PULL 42/76] target/microblaze: Convert dec_div to decodetree |
Date: |
Mon, 31 Aug 2020 09:05:27 -0700 |
Tested-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/microblaze/insns.decode | 3 +++
target/microblaze/translate.c | 35 +++++++++++++---------------------
2 files changed, 16 insertions(+), 22 deletions(-)
diff --git a/target/microblaze/insns.decode b/target/microblaze/insns.decode
index 1a2e22e44a..b2dcbdf784 100644
--- a/target/microblaze/insns.decode
+++ b/target/microblaze/insns.decode
@@ -50,6 +50,9 @@ andni 101011 ..... ..... ................ @typeb
cmp 000101 ..... ..... ..... 000 0000 0001 @typea
cmpu 000101 ..... ..... ..... 000 0000 0011 @typea
+idiv 010010 ..... ..... ..... 000 0000 0000 @typea
+idivu 010010 ..... ..... ..... 000 0000 0010 @typea
+
mul 010000 ..... ..... ..... 000 0000 0000 @typea
mulh 010000 ..... ..... ..... 000 0000 0001 @typea
mulhu 010000 ..... ..... ..... 000 0000 0011 @typea
diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c
index 617e208583..9763b9d77c 100644
--- a/target/microblaze/translate.c
+++ b/target/microblaze/translate.c
@@ -368,6 +368,19 @@ static void gen_cmpu(TCGv_i32 out, TCGv_i32 ina, TCGv_i32
inb)
DO_TYPEA(cmp, false, gen_cmp)
DO_TYPEA(cmpu, false, gen_cmpu)
+static void gen_idiv(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb)
+{
+ gen_helper_divs(out, cpu_env, inb, ina);
+}
+
+static void gen_idivu(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb)
+{
+ gen_helper_divu(out, cpu_env, inb, ina);
+}
+
+DO_TYPEA_CFG(idiv, use_div, true, gen_idiv)
+DO_TYPEA_CFG(idivu, use_div, true, gen_idivu)
+
static void gen_mulh(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb)
{
TCGv_i32 tmp = tcg_temp_new_i32();
@@ -683,27 +696,6 @@ static void dec_msr(DisasContext *dc)
}
}
-/* Div unit. */
-static void dec_div(DisasContext *dc)
-{
- unsigned int u;
-
- u = dc->imm & 2;
-
- if (trap_illegal(dc, !dc->cpu->cfg.use_div)) {
- return;
- }
-
- if (u)
- gen_helper_divu(cpu_R[dc->rd], cpu_env, *(dec_alu_op_b(dc)),
- cpu_R[dc->ra]);
- else
- gen_helper_divs(cpu_R[dc->rd], cpu_env, *(dec_alu_op_b(dc)),
- cpu_R[dc->ra]);
- if (!dc->rd)
- tcg_gen_movi_i32(cpu_R[dc->rd], 0);
-}
-
static void dec_barrel(DisasContext *dc)
{
TCGv_i32 t0;
@@ -1565,7 +1557,6 @@ static struct decoder_info {
{DEC_BCC, dec_bcc},
{DEC_RTS, dec_rts},
{DEC_FPU, dec_fpu},
- {DEC_DIV, dec_div},
{DEC_MSR, dec_msr},
{DEC_STREAM, dec_stream},
{{0, 0}, dec_null}
--
2.25.1
- [PULL 32/76] target/microblaze: Remove empty D macros, (continued)
- [PULL 32/76] target/microblaze: Remove empty D macros, Richard Henderson, 2020/08/31
- [PULL 33/76] target/microblaze: Remove LOG_DIS, Richard Henderson, 2020/08/31
- [PULL 34/76] target/microblaze: Ensure imm constant is always available, Richard Henderson, 2020/08/31
- [PULL 35/76] target/microblaze: Add decodetree infrastructure, Richard Henderson, 2020/08/31
- [PULL 36/76] target/microblaze: Convert dec_add to decodetree, Richard Henderson, 2020/08/31
- [PULL 37/76] target/microblaze: Convert dec_sub to decodetree, Richard Henderson, 2020/08/31
- [PULL 38/76] target/microblaze: Implement cmp and cmpu inline, Richard Henderson, 2020/08/31
- [PULL 39/76] target/microblaze: Convert dec_pattern to decodetree, Richard Henderson, 2020/08/31
- [PULL 40/76] target/microblaze: Convert dec_and, dec_or, dec_xor to decodetree, Richard Henderson, 2020/08/31
- [PULL 41/76] target/microblaze: Convert dec_mul to decodetree, Richard Henderson, 2020/08/31
- [PULL 42/76] target/microblaze: Convert dec_div to decodetree,
Richard Henderson <=
- [PULL 43/76] target/microblaze: Unwind properly when raising divide-by-zero, Richard Henderson, 2020/08/31
- [PULL 44/76] target/microblaze: Convert dec_bit to decodetree, Richard Henderson, 2020/08/31
- [PULL 45/76] target/microblaze: Convert dec_barrel to decodetree, Richard Henderson, 2020/08/31
- [PULL 46/76] target/microblaze: Convert dec_imm to decodetree, Richard Henderson, 2020/08/31
- [PULL 47/76] target/microblaze: Convert dec_fpu to decodetree, Richard Henderson, 2020/08/31
- [PULL 48/76] target/microblaze: Fix cpu unwind for fpu exceptions, Richard Henderson, 2020/08/31
- [PULL 49/76] target/microblaze: Mark fpu helpers TCG_CALL_NO_WG, Richard Henderson, 2020/08/31
- [PULL 51/76] target/microblaze: Cache mem_index in DisasContext, Richard Henderson, 2020/08/31
- [PULL 50/76] target/microblaze: Replace MSR_EE_FLAG with MSR_EE, Richard Henderson, 2020/08/31
- [PULL 52/76] target/microblaze: Fix cpu unwind for stackprot, Richard Henderson, 2020/08/31