broadcom/vc5: Add support for V3Dv4 signal bits.
[mesa.git] / src / broadcom / compiler / vir_dump.c
index ad5c061a1383b9aa2b444feaa7042476e1de3f40..cdb1928ed006de58ab0150528d324d2d2c6be9cf 100644 (file)
@@ -21,6 +21,7 @@
  * IN THE SOFTWARE.
  */
 
+#include "broadcom/common/v3d_device_info.h"
 #include "v3d_compiler.h"
 
 static void
@@ -145,6 +146,24 @@ vir_print_reg(struct v3d_compile *c, struct qreg reg)
         }
 }
 
+static void
+vir_dump_sig_addr(const struct v3d_device_info *devinfo,
+                  const struct v3d_qpu_instr *instr)
+{
+        if (devinfo->ver < 41)
+                return;
+
+        if (!instr->sig_magic)
+                fprintf(stderr, ".rf%d", instr->sig_addr);
+        else {
+                const char *name = v3d_qpu_magic_waddr_name(instr->sig_addr);
+                if (name)
+                        fprintf(stderr, ".%s", name);
+                else
+                        fprintf(stderr, ".UNKNOWN%d", instr->sig_addr);
+        }
+}
+
 static void
 vir_dump_sig(struct v3d_compile *c, struct qinst *inst)
 {
@@ -152,14 +171,36 @@ vir_dump_sig(struct v3d_compile *c, struct qinst *inst)
 
         if (sig->thrsw)
                 fprintf(stderr, "; thrsw");
-        if (sig->ldvary)
+        if (sig->ldvary) {
                 fprintf(stderr, "; ldvary");
+                vir_dump_sig_addr(c->devinfo, &inst->qpu);
+        }
         if (sig->ldvpm)
                 fprintf(stderr, "; ldvpm");
-        if (sig->ldtmu)
+        if (sig->ldtmu) {
                 fprintf(stderr, "; ldtmu");
+                vir_dump_sig_addr(c->devinfo, &inst->qpu);
+        }
+        if (sig->ldtlb) {
+                fprintf(stderr, "; ldtlb");
+                vir_dump_sig_addr(c->devinfo, &inst->qpu);
+        }
+        if (sig->ldtlbu) {
+                fprintf(stderr, "; ldtlbu");
+                vir_dump_sig_addr(c->devinfo, &inst->qpu);
+        }
         if (sig->ldunif)
                 fprintf(stderr, "; ldunif");
+        if (sig->ldunifrf) {
+                fprintf(stderr, "; ldunifrf");
+                vir_dump_sig_addr(c->devinfo, &inst->qpu);
+        }
+        if (sig->ldunifa)
+                fprintf(stderr, "; ldunifa");
+        if (sig->ldunifarf) {
+                fprintf(stderr, "; ldunifarf");
+                vir_dump_sig_addr(c->devinfo, &inst->qpu);
+        }
         if (sig->wrtmuc)
                 fprintf(stderr, "; wrtmuc");
 }