target/microblaze: Convert dec_imm to decodetree

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>
This commit is contained in:
Richard Henderson 2020-08-18 10:22:18 -07:00
parent 081d8e02c3
commit e64b2e5cfe
2 changed files with 11 additions and 9 deletions

View File

@ -79,6 +79,8 @@ cmpu 000101 ..... ..... ..... 000 0000 0011 @typea
idiv 010010 ..... ..... ..... 000 0000 0000 @typea idiv 010010 ..... ..... ..... 000 0000 0000 @typea
idivu 010010 ..... ..... ..... 000 0000 0010 @typea idivu 010010 ..... ..... ..... 000 0000 0010 @typea
imm 101100 00000 00000 imm:16
mul 010000 ..... ..... ..... 000 0000 0000 @typea mul 010000 ..... ..... ..... 000 0000 0000 @typea
mulh 010000 ..... ..... ..... 000 0000 0001 @typea mulh 010000 ..... ..... ..... 000 0000 0001 @typea
mulhu 010000 ..... ..... ..... 000 0000 0011 @typea mulhu 010000 ..... ..... ..... 000 0000 0011 @typea

View File

@ -477,6 +477,15 @@ static void gen_idivu(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb)
DO_TYPEA_CFG(idiv, use_div, true, gen_idiv) DO_TYPEA_CFG(idiv, use_div, true, gen_idiv)
DO_TYPEA_CFG(idivu, use_div, true, gen_idivu) DO_TYPEA_CFG(idivu, use_div, true, gen_idivu)
static bool trans_imm(DisasContext *dc, arg_imm *arg)
{
dc->ext_imm = arg->imm << 16;
tcg_gen_movi_i32(cpu_imm, dc->ext_imm);
dc->tb_flags |= IMM_FLAG;
dc->clear_imm = 0;
return true;
}
static void gen_mulh(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb) static void gen_mulh(TCGv_i32 out, TCGv_i32 ina, TCGv_i32 inb)
{ {
TCGv_i32 tmp = tcg_temp_new_i32(); TCGv_i32 tmp = tcg_temp_new_i32();
@ -848,14 +857,6 @@ static inline void sync_jmpstate(DisasContext *dc)
} }
} }
static void dec_imm(DisasContext *dc)
{
dc->ext_imm = dc->imm << 16;
tcg_gen_movi_i32(cpu_imm, dc->ext_imm);
dc->tb_flags |= IMM_FLAG;
dc->clear_imm = 0;
}
static inline void compute_ldst_addr(DisasContext *dc, bool ea, TCGv t) static inline void compute_ldst_addr(DisasContext *dc, bool ea, TCGv t)
{ {
/* Should be set to true if r1 is used by loadstores. */ /* Should be set to true if r1 is used by loadstores. */
@ -1561,7 +1562,6 @@ static struct decoder_info {
} decinfo[] = { } decinfo[] = {
{DEC_LD, dec_load}, {DEC_LD, dec_load},
{DEC_ST, dec_store}, {DEC_ST, dec_store},
{DEC_IMM, dec_imm},
{DEC_BR, dec_br}, {DEC_BR, dec_br},
{DEC_BCC, dec_bcc}, {DEC_BCC, dec_bcc},
{DEC_RTS, dec_rts}, {DEC_RTS, dec_rts},