summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/ilo/shader/toy_compiler_disasm.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c b/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c
index 94321afdf38..c3ad09138a9 100644
--- a/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c
+++ b/src/gallium/drivers/ilo/shader/toy_compiler_disasm.c
@@ -1219,6 +1219,38 @@ disasm_printer_add_mdesc_urb(struct disasm_printer *printer,
}
static void
+disasm_printer_add_mdesc_spawner(struct disasm_printer *printer,
+ const struct disasm_inst *inst,
+ uint32_t mdesc)
+{
+ const char *from;
+
+ switch (mdesc & GEN6_MSG_TS_REQUESTER_TYPE__MASK) {
+ case GEN6_MSG_TS_REQUESTER_TYPE_ROOT: from = "root"; break;
+ case GEN6_MSG_TS_REQUESTER_TYPE_CHILD: from = "child"; break;
+ default: from = "BAD"; break;
+ }
+
+ disasm_printer_add(printer, "(%s thread ", from);
+
+ switch (mdesc & GEN6_MSG_TS_OPCODE__MASK) {
+ case GEN6_MSG_TS_OPCODE_DEREF:
+ disasm_printer_add(printer, "%sderef",
+ (mdesc & GEN6_MSG_TS_RESOURCE_SELECT_NO_DEREF) ? "no " : "");
+ break;
+ case GEN6_MSG_TS_OPCODE_SPAWN:
+ disasm_printer_add(printer, "spawn %s)",
+ (mdesc & GEN6_MSG_TS_RESOURCE_SELECT_ROOT) ? "root" : "child");
+ break;
+ default:
+ disasm_printer_add(printer, "BAD");
+ break;
+ }
+
+ disasm_printer_add(printer, ")");
+}
+
+static void
disasm_printer_add_mdesc_dp_sampler(struct disasm_printer *printer,
const struct disasm_inst *inst,
uint32_t mdesc)
@@ -1338,6 +1370,9 @@ disasm_printer_add_mdesc(struct disasm_printer *printer,
case GEN6_SFID_URB:
disasm_printer_add_mdesc_urb(printer, inst, mdesc);
break;
+ case GEN6_SFID_SPAWNER:
+ disasm_printer_add_mdesc_spawner(printer, inst, mdesc);
+ break;
case GEN6_SFID_DP_CC:
case GEN7_SFID_DP_DC0:
case GEN7_SFID_PI: