From: Alyssa Rosenzweig Date: Mon, 27 Apr 2020 22:43:12 +0000 (-0400) Subject: pan/mdg: Add type fields to IR X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=742b272314fa6e202ea43b2f5473aee12bf7350e;p=mesa.git pan/mdg: Add type fields to IR Signed-off-by: Alyssa Rosenzweig Part-of: --- diff --git a/src/panfrost/midgard/compiler.h b/src/panfrost/midgard/compiler.h index 6b3028fbe7c..92772e26a42 100644 --- a/src/panfrost/midgard/compiler.h +++ b/src/panfrost/midgard/compiler.h @@ -97,6 +97,10 @@ typedef struct midgard_instruction { /* vec16 swizzle, unpacked, per source */ unsigned swizzle[MIR_SRC_COUNT][MIR_VEC_COMPONENTS]; + /* Types! */ + nir_alu_type src_types[MIR_SRC_COUNT]; + nir_alu_type dest_type; + /* Special fields for an ALU instruction */ midgard_reg_info registers; diff --git a/src/panfrost/midgard/midgard_print.c b/src/panfrost/midgard/midgard_print.c index 67104f3c7aa..60786fef53f 100644 --- a/src/panfrost/midgard/midgard_print.c +++ b/src/panfrost/midgard/midgard_print.c @@ -333,6 +333,7 @@ mir_print_instruction(midgard_instruction *ins) printf(" "); mir_print_index(ins->dest); + pan_print_alu_type(ins->dest_type, stdout); if (ins->mask != 0xF) mir_print_mask(ins->mask); @@ -345,6 +346,7 @@ mir_print_instruction(midgard_instruction *ins) mir_print_embedded_constant(ins, 0); else { mir_print_index(ins->src[0]); + pan_print_alu_type(ins->src_types[0], stdout); mir_print_swizzle(ins->swizzle[0]); } printf(", "); @@ -355,16 +357,16 @@ mir_print_instruction(midgard_instruction *ins) mir_print_embedded_constant(ins, 1); else { mir_print_index(ins->src[1]); + pan_print_alu_type(ins->src_types[1], stdout); mir_print_swizzle(ins->swizzle[1]); } - printf(", "); - mir_print_index(ins->src[2]); - mir_print_swizzle(ins->swizzle[2]); - - printf(", "); - mir_print_index(ins->src[3]); - mir_print_swizzle(ins->swizzle[3]); + for (unsigned c = 2; c <= 3; ++c) { + printf(", "); + mir_print_index(ins->src[c]); + pan_print_alu_type(ins->src_types[c], stdout); + mir_print_swizzle(ins->swizzle[c]); + } if (ins->no_spill) printf(" /* no spill */");