• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2025 Intel Corporation
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #include "intel_tools.h"
7 
8 #include "compiler/brw_disasm.h"
9 #include "compiler/brw_isa_info.h"
10 #ifdef INTEL_USE_ELK
11 #include "compiler/elk/elk_disasm.h"
12 #include "compiler/elk/elk_isa_info.h"
13 #endif
14 #include "dev/intel_device_info.h"
15 
16 static void
not_supported(const struct intel_device_info * devinfo)17 not_supported(const struct intel_device_info *devinfo)
18 {
19    fprintf(stderr, "ERROR: Tool compiled without support for Gfx version %d.\n",
20            devinfo->ver);
21    exit(EXIT_FAILURE);
22 }
23 
24 void
intel_disassemble(const struct intel_device_info * devinfo,const void * assembly,int start,FILE * out)25 intel_disassemble(const struct intel_device_info *devinfo,
26                   const void *assembly, int start, FILE *out)
27 {
28       if (devinfo->ver >= 9) {
29          struct brw_isa_info isa;
30          brw_init_isa_info(&isa, devinfo);
31          brw_disassemble_with_errors(&isa, assembly, start, out);
32       } else {
33 #ifdef INTEL_USE_ELK
34          struct elk_isa_info isa;
35          elk_init_isa_info(&isa, devinfo);
36          elk_disassemble_with_errors(&isa, assembly, start, out);
37 #else
38          not_supported(devinfo);
39 #endif
40       }
41 }
42 
43 void
intel_decoder_init(struct intel_batch_decode_ctx * ctx,const struct intel_device_info * devinfo,FILE * fp,enum intel_batch_decode_flags flags,const char * xml_path,struct intel_batch_decode_bo (* get_bo)(void *,bool,uint64_t),unsigned (* get_state_size)(void *,uint64_t,uint64_t),void * user_data)44 intel_decoder_init(struct intel_batch_decode_ctx *ctx,
45                    const struct intel_device_info *devinfo,
46                    FILE *fp, enum intel_batch_decode_flags flags,
47                    const char *xml_path,
48                    struct intel_batch_decode_bo (*get_bo)(void *, bool, uint64_t),
49                    unsigned (*get_state_size)(void *, uint64_t, uint64_t),
50                    void *user_data)
51 {
52    if (devinfo->ver >= 9) {
53       struct brw_isa_info isa;
54       brw_init_isa_info(&isa, devinfo);
55       intel_batch_decode_ctx_init_brw(ctx, &isa, devinfo, fp,
56                                       flags, xml_path, get_bo, get_state_size, user_data);
57    } else {
58 #ifdef INTEL_USE_ELK
59       struct elk_isa_info isa;
60       elk_init_isa_info(&isa, devinfo);
61       intel_batch_decode_ctx_init_elk(ctx, &isa, devinfo, fp,
62                                       flags, xml_path, get_bo, get_state_size, user_data);
63 #else
64       not_supported(devinfo);
65 #endif
66    }
67 }
68