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 <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7206>
This commit is contained in:
Alyssa Rosenzweig
2020-10-14 20:44:35 -04:00
committed by Marge Bot
parent 74be83d876
commit e33b2976f3

View File

@@ -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: