#include <stdlib.h>
-#include "brw_context.h"
#include "brw_inst.h"
#include "brw_eu.h"
}
void
-gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly, int start,
- int end, FILE *out)
+gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly,
+ int start, FILE *out)
{
struct gen_device_info *devinfo = &disasm->devinfo;
bool dump_hex = false;
+ int offset = start;
- for (int offset = start; offset < end;) {
+ /* This loop exits when send-with-EOT or when opcode is 0 */
+ while (true) {
brw_inst *insn = assembly + offset;
brw_inst uncompacted;
bool compacted = brw_inst_cmpt_control(devinfo, insn);
if (gd == NULL)
return NULL;
- gd->devinfo = *gen_get_device_info(pciid);
+ if (!gen_get_device_info(pciid, &gd->devinfo)) {
+ free(gd);
+ return NULL;
+ }
+
brw_init_compaction_tables(&gd->devinfo);
return gd;