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