Mesa (master): pan/midgard: Emit st_vary registers in install_registers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 25 13:38:11 UTC 2019


Module: Mesa
Branch: master
Commit: ae7acde91f2e48d1d82de218ed9c721aace0c226
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ae7acde91f2e48d1d82de218ed9c721aace0c226

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Wed Jul 24 12:53:58 2019 -0700

pan/midgard: Emit st_vary registers in install_registers

Now that we have its registers handled normally like the rest of the IR.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>

---

 src/panfrost/midgard/midgard_ra.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/panfrost/midgard/midgard_ra.c b/src/panfrost/midgard/midgard_ra.c
index 6640433c6f9..67a1795545d 100644
--- a/src/panfrost/midgard/midgard_ra.c
+++ b/src/panfrost/midgard/midgard_ra.c
@@ -649,9 +649,17 @@ install_registers_instr(
         }
 
         case TAG_LOAD_STORE_4: {
-                if (OP_IS_STORE_R26(ins->load_store.op)) {
-                        /* TODO: use ssa_args for st_vary */
-                        ins->load_store.reg = 0;
+                bool fixed = args.src0 >= SSA_FIXED_MINIMUM;
+
+                if (OP_IS_STORE_R26(ins->load_store.op) && fixed) {
+                        ins->load_store.reg = SSA_REG_FROM_FIXED(args.src0);
+                } else if (OP_IS_STORE_VARY(ins->load_store.op)) {
+                        struct phys_reg src = index_to_reg(ctx, g, args.src0);
+                        assert(src.reg == 26 || src.reg == 27);
+
+                        ins->load_store.reg = src.reg - 26;
+
+                        /* TODO: swizzle/mask */
                 } else {
                         /* Which physical register we read off depends on
                          * whether we are loading or storing -- think about the




More information about the mesa-commit mailing list