intel/compiler: Get rid of the global compaction table pointers
[mesa.git] / src / intel / common / gen_disasm.c
index 1de20f576d4d36d3a6cd8354b9c5a489d20b7b47..97ca1b659be67e4ae0ea771fc3e28d1b0526f8a9 100644 (file)
@@ -28,8 +28,6 @@
 
 #include "gen_disasm.h"
 
-uint64_t INTEL_DEBUG;
-
 struct gen_disasm {
     struct gen_device_info devinfo;
 };
@@ -44,14 +42,15 @@ is_send(uint32_t opcode)
 }
 
 static int
-gen_disasm_find_end(struct gen_disasm *disasm, void *assembly, int start)
+gen_disasm_find_end(struct gen_disasm *disasm,
+                    const void *assembly, int start)
 {
    struct gen_device_info *devinfo = &disasm->devinfo;
    int offset = start;
 
    /* This loop exits when send-with-EOT or when opcode is 0 */
    while (true) {
-      brw_inst *insn = assembly + offset;
+      const brw_inst *insn = assembly + offset;
 
       if (brw_inst_cmpt_control(devinfo, insn)) {
          offset += 8;
@@ -70,7 +69,7 @@ gen_disasm_find_end(struct gen_disasm *disasm, void *assembly, int start)
 }
 
 void
-gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly,
+gen_disasm_disassemble(struct gen_disasm *disasm, const void *assembly,
                        int start, FILE *out)
 {
    struct gen_device_info *devinfo = &disasm->devinfo;
@@ -85,6 +84,10 @@ gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly,
 
    brw_validate_instructions(devinfo, assembly, start, end, disasm_info);
 
+   void *mem_ctx = ralloc_context(NULL);
+   const struct brw_label *root_label =
+      brw_label_assembly(devinfo, assembly, start, end, mem_ctx);
+
    foreach_list_typed(struct inst_group, group, link,
                       &disasm_info->group_list) {
       struct exec_node *next_node = exec_node_get_next(&group->link);
@@ -97,13 +100,15 @@ gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly,
       int start_offset = group->offset;
       int end_offset = next->offset;
 
-      brw_disassemble(devinfo, assembly, start_offset, end_offset, out);
+      brw_disassemble(devinfo, assembly, start_offset, end_offset,
+                      root_label, out);
 
       if (group->error) {
          fputs(group->error, out);
       }
    }
 
+   ralloc_free(mem_ctx);
    ralloc_free(disasm_info);
 }
 
@@ -118,8 +123,6 @@ gen_disasm_create(const struct gen_device_info *devinfo)
 
    gd->devinfo = *devinfo;
 
-   brw_init_compaction_tables(&gd->devinfo);
-
    return gd;
 }