• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2023 Advanced Micro Devices, Inc.
3  *
4  * SPDX-License-Identifier: MIT
5  */
6 
7 #include "ac_debug.h"
8 #include <string.h>
9 #include <stdlib.h>
10 
main(int argc,char ** argv)11 int main(int argc, char **argv)
12 {
13    if (argc < 3) {
14       fprintf(stderr, "Usage: [LLVM processor] [IB filenames]\n");
15       return 1;
16    }
17 
18    const char *gpu = argv[1];
19    enum amd_gfx_level gfx_level;
20    enum radeon_family family = CHIP_UNKNOWN;
21 
22    for (unsigned i = 0; i < CHIP_LAST; i++) {
23       if (!strcmp(gpu, ac_get_llvm_processor_name(i))) {
24          family = i;
25          gfx_level = ac_get_gfx_level(i);
26          break;
27       }
28    }
29 
30    if (family == CHIP_UNKNOWN) {
31       fprintf(stderr, "Unknown LLVM processor.\n");
32       return 1;
33    }
34 
35    for (unsigned i = 2; i < argc; i++) {
36       const char *filename = argv[i];
37 
38       FILE *f = fopen(filename, "r");
39       if (!f) {
40          fprintf(stderr, "Can't open IB: %s\n", filename);
41          continue;
42       }
43 
44       fseek(f, 0, SEEK_END);
45       int size = ftell(f);
46       fseek(f, 0, SEEK_SET);
47 
48       uint32_t *ib = (uint32_t*)malloc(size);
49 
50       if (fread(ib, size, 1, f) != 1) {
51          fprintf(stderr, "Can't read IB: %s\n", filename);
52          fclose(f);
53          free(ib);
54          continue;
55       }
56       fclose(f);
57 
58       ac_parse_ib(stdout, ib, size / 4, NULL, 0, filename, gfx_level, family, AMD_IP_GFX, NULL, NULL);
59       free(ib);
60    }
61 
62    return 0;
63 }
64