From 733d25cfceee5642987cee73531ebcae02457500 Mon Sep 17 00:00:00 2001 From: Italo Nicola Date: Thu, 4 Mar 2021 06:11:20 +0000 Subject: [PATCH] pan/mdg: misc cleanups Signed-off-by: Italo Nicola Reviewed-by: Alyssa Rosenzweig Part-of: --- src/panfrost/midgard/disassemble.c | 22 ++++++++++------------ src/panfrost/midgard/midgard.h | 1 + src/panfrost/midgard/midgard_emit.c | 4 ++-- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/panfrost/midgard/disassemble.c b/src/panfrost/midgard/disassemble.c index 9b7057b..a1dd579 100644 --- a/src/panfrost/midgard/disassemble.c +++ b/src/panfrost/midgard/disassemble.c @@ -755,7 +755,7 @@ print_vector_field(FILE *fp, const char *name, uint16_t *words, uint16_t reg_wor fprintf(fp, ", "); - if (reg_info->src1_reg == 26) + if (reg_info->src1_reg == REGISTER_CONSTANT) print_vector_constants(fp, alu_field->src1, consts, alu_field); else { midgard_special_arg_mod argmod = midgard_alu_special_arg_mod(op, 1); @@ -768,7 +768,7 @@ print_vector_field(FILE *fp, const char *name, uint16_t *words, uint16_t reg_wor if (reg_info->src2_imm) { uint16_t imm = decode_vector_imm(reg_info->src2_reg, alu_field->src2 >> 2); print_immediate(fp, imm); - } else if (reg_info->src2_reg == 26) { + } else if (reg_info->src2_reg == REGISTER_CONSTANT) { print_vector_constants(fp, alu_field->src2, consts, alu_field); } else { midgard_special_arg_mod argmod = midgard_alu_special_arg_mod(op, 2); @@ -832,8 +832,7 @@ print_scalar_field(FILE *fp, const char *name, uint16_t *words, uint16_t reg_wor fprintf(fp, " "); - update_dest(reg_info->out_reg); - print_reg(fp, reg_info->out_reg); + print_dest(fp, reg_info->out_reg); unsigned c = alu_field->output_component; if (full) { @@ -847,7 +846,7 @@ print_scalar_field(FILE *fp, const char *name, uint16_t *words, uint16_t reg_wor fprintf(fp, ", "); - if (reg_info->src1_reg == 26) + if (reg_info->src1_reg == REGISTER_CONSTANT) print_scalar_constant(fp, alu_field->src1, consts, alu_field); else print_scalar_src(fp, is_int, alu_field->src1, reg_info->src1_reg); @@ -858,7 +857,7 @@ print_scalar_field(FILE *fp, const char *name, uint16_t *words, uint16_t reg_wor uint16_t imm = decode_scalar_imm(reg_info->src2_reg, alu_field->src2); print_immediate(fp, imm); - } else if (reg_info->src2_reg == 26) { + } else if (reg_info->src2_reg == REGISTER_CONSTANT) { print_scalar_constant(fp, alu_field->src2, consts, alu_field); } else print_scalar_src(fp, is_int, alu_field->src2, reg_info->src2_reg); @@ -1256,8 +1255,7 @@ update_stats(signed *stat, unsigned address) } static void -print_load_store_instr(FILE *fp, uint64_t data, - unsigned tabs) +print_load_store_instr(FILE *fp, uint64_t data) { midgard_load_store_word *word = (midgard_load_store_word *) &data; @@ -1319,16 +1317,16 @@ print_load_store_instr(FILE *fp, uint64_t data, } static void -print_load_store_word(FILE *fp, uint32_t *word, unsigned tabs) +print_load_store_word(FILE *fp, uint32_t *word) { midgard_load_store *load_store = (midgard_load_store *) word; if (load_store->word1 != 3) { - print_load_store_instr(fp, load_store->word1, tabs); + print_load_store_instr(fp, load_store->word1); } if (load_store->word2 != 3) { - print_load_store_instr(fp, load_store->word2, tabs); + print_load_store_instr(fp, load_store->word2); } } @@ -1740,7 +1738,7 @@ disassemble_midgard(FILE *fp, uint8_t *code, size_t size, unsigned gpu_id) } case TAG_LOAD_STORE_4: - print_load_store_word(fp, &words[i], tabs); + print_load_store_word(fp, &words[i]); break; case TAG_ALU_4 ... TAG_ALU_16_WRITEOUT: diff --git a/src/panfrost/midgard/midgard.h b/src/panfrost/midgard/midgard.h index b5e57c2..7683bb5 100644 --- a/src/panfrost/midgard/midgard.h +++ b/src/panfrost/midgard/midgard.h @@ -334,6 +334,7 @@ __attribute__((__packed__)) { midgard_alu_op op : 8; unsigned src1 : 6; + /* last 5 bits are used when src2 is an immediate */ unsigned src2 : 11; unsigned unknown : 1; unsigned outmod : 2; diff --git a/src/panfrost/midgard/midgard_emit.c b/src/panfrost/midgard/midgard_emit.c index d91fc7c..712d51d 100644 --- a/src/panfrost/midgard/midgard_emit.c +++ b/src/panfrost/midgard/midgard_emit.c @@ -31,8 +31,8 @@ mir_get_imod(bool shift, nir_alu_type T, bool half, bool scalar) { if (!half) { assert(!shift); - /* Sign-extension, really... */ - return scalar ? 0 : midgard_int_replicate; + /* Doesn't matter, src mods are only used when expanding */ + return midgard_int_sign_extend; } if (shift) -- 2.7.4