Mesa (master): pan/bi: Move LD_VAR packing out of bi_pack_add()
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Nov 17 08:24:49 UTC 2020
Module: Mesa
Branch: master
Commit: 4321b4fc935c2ec4946d47d5e606dfa4810d7aaa
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4321b4fc935c2ec4946d47d5e606dfa4810d7aaa
Author: Boris Brezillon <boris.brezillon at collabora.com>
Date: Mon Nov 16 11:30:35 2020 +0100
pan/bi: Move LD_VAR packing out of bi_pack_add()
Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7636>
---
src/panfrost/bifrost/bi_pack.c | 33 ++++++++++++++++++++-------------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/src/panfrost/bifrost/bi_pack.c b/src/panfrost/bifrost/bi_pack.c
index 977363e4894..15be31bdf26 100644
--- a/src/panfrost/bifrost/bi_pack.c
+++ b/src/panfrost/bifrost/bi_pack.c
@@ -710,6 +710,25 @@ bi_pack_add_special(bi_clause *clause, bi_instruction *ins, bi_registers *regs)
}
}
+static unsigned
+bi_pack_add_ld_var(bi_clause *clause, bi_instruction *ins, bi_registers *regs)
+{
+ bool imm = ins->src[0] & BIR_INDEX_CONSTANT;
+
+ if (imm && bi_get_immediate(ins, 0) >= 20)
+ return pan_pack_add_ld_var_special(clause, ins, regs);
+
+ if (ins->load_vary.flat) {
+ return imm ?
+ pan_pack_add_ld_var_flat_imm(clause, ins, regs) :
+ pan_pack_add_ld_var_flat(clause, ins, regs);
+ }
+
+ return imm ?
+ pan_pack_add_ld_var_imm(clause, ins, regs) :
+ pan_pack_add_ld_var(clause, ins, regs);
+}
+
static unsigned
bi_pack_add(bi_clause *clause, bi_bundle bundle, bi_registers *regs, gl_shader_stage stage)
{
@@ -858,19 +877,7 @@ bi_pack_add(bi_clause *clause, bi_bundle bundle, bi_registers *regs, gl_shader_s
default: unreachable("Invalid channel count");
}
case BI_LOAD_VAR:
- if (bundle.add->src[0] & BIR_INDEX_CONSTANT) {
- if (bi_get_immediate(bundle.add, 0) >= 20)
- return pan_pack_add_ld_var_special(clause, bundle.add, regs);
- else if (bundle.add->load_vary.flat)
- return pan_pack_add_ld_var_flat_imm(clause, bundle.add, regs);
- else
- return pan_pack_add_ld_var_imm(clause, bundle.add, regs);
- } else {
- if (bundle.add->load_vary.flat)
- return pan_pack_add_ld_var_flat(clause, bundle.add, regs);
- else
- return pan_pack_add_ld_var(clause, bundle.add, regs);
- }
+ return bi_pack_add_ld_var(clause, bundle.add, regs);
case BI_LOAD_VAR_ADDRESS:
return pan_pack_add_lea_attr_imm(clause, bundle.add, regs);
case BI_LOAD_TILE:
More information about the mesa-commit
mailing list