diff options
author | Alyssa Rosenzweig <[email protected]> | 2020-04-27 18:43:12 -0400 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-04-29 15:35:54 +0000 |
commit | 742b272314fa6e202ea43b2f5473aee12bf7350e (patch) | |
tree | b6adab8fa8d11d644db8309106f13faf65e97f45 /src/panfrost/midgard | |
parent | b9f7f06a61ead80bf035213a270aca532e34c838 (diff) |
pan/mdg: Add type fields to IR
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4793>
Diffstat (limited to 'src/panfrost/midgard')
-rw-r--r-- | src/panfrost/midgard/compiler.h | 4 | ||||
-rw-r--r-- | src/panfrost/midgard/midgard_print.c | 16 |
2 files changed, 13 insertions, 7 deletions
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 */"); |