From e33b2976f3adcb8c7185265efe2812d91b33ab64 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 14 Oct 2020 20:44:35 -0400 Subject: [PATCH] pan/bi: Pack LOAD/STORE LOAD is the same as LOAD_UNIFORM (same instruction, I need to deduplicate the IR), STORE is basically the same as LOAD. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/bifrost/bi_pack.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/panfrost/bifrost/bi_pack.c b/src/panfrost/bifrost/bi_pack.c index 9f0884bf60a..9f3cd9cb7ed 100644 --- a/src/panfrost/bifrost/bi_pack.c +++ b/src/panfrost/bifrost/bi_pack.c @@ -790,11 +790,11 @@ bi_pack_add(bi_clause *clause, bi_bundle bundle, bi_registers *regs, gl_shader_s (sz == 16) ? pan_pack_add_isub_v2s16(clause, bundle.add, regs) : pan_pack_add_isub_s32(clause, bundle.add, regs); } - case BI_LOAD: - unreachable("Packing todo"); case BI_LOAD_ATTR: return pan_pack_add_ld_attr_imm(clause, bundle.add, regs); + case BI_LOAD: case BI_LOAD_UNIFORM: + assert(u32 || s32 || f32); switch (bundle.add->vector_channels) { case 1: return pan_pack_add_load_i32(clause, bundle.add, regs); case 2: return pan_pack_add_load_i64(clause, bundle.add, regs); @@ -835,8 +835,16 @@ bi_pack_add(bi_clause *clause, bi_bundle bundle, bi_registers *regs, gl_shader_s unreachable("TODO"); } case BI_MOV: - case BI_STORE: unreachable("Packing todo"); + case BI_STORE: + assert(src0_u32 || src0_s32 || src0_f32); + switch (bundle.add->vector_channels) { + case 1: return pan_pack_add_store_i32(clause, bundle.add, regs); + case 2: return pan_pack_add_store_i64(clause, bundle.add, regs); + case 3: return pan_pack_add_store_i96(clause, bundle.add, regs); + case 4: return pan_pack_add_store_i128(clause, bundle.add, regs); + default: unreachable("Invalid channel count"); + } case BI_STORE_VAR: return pan_pack_add_st_cvt(clause, bundle.add, regs); case BI_SPECIAL: