1 #include "get_elf_mach_gfx_name.h"
2 
3 // This header conflicts with the system elf.h (macros vs enums of the same
4 // identifier) and contains more up to date values for the enum checked here.
5 // rtl.cpp uses the system elf.h.
6 #include "llvm/BinaryFormat/ELF.h"
7 
8 const char *get_elf_mach_gfx_name(uint32_t EFlags) {
9   using namespace llvm::ELF;
10   uint32_t Gfx = (EFlags & EF_AMDGPU_MACH);
11   switch (Gfx) {
12   case EF_AMDGPU_MACH_AMDGCN_GFX801:
13     return "gfx801";
14   case EF_AMDGPU_MACH_AMDGCN_GFX802:
15     return "gfx802";
16   case EF_AMDGPU_MACH_AMDGCN_GFX803:
17     return "gfx803";
18   case EF_AMDGPU_MACH_AMDGCN_GFX805:
19     return "gfx805";
20   case EF_AMDGPU_MACH_AMDGCN_GFX810:
21     return "gfx810";
22   case EF_AMDGPU_MACH_AMDGCN_GFX900:
23     return "gfx900";
24   case EF_AMDGPU_MACH_AMDGCN_GFX902:
25     return "gfx902";
26   case EF_AMDGPU_MACH_AMDGCN_GFX904:
27     return "gfx904";
28   case EF_AMDGPU_MACH_AMDGCN_GFX906:
29     return "gfx906";
30   case EF_AMDGPU_MACH_AMDGCN_GFX908:
31     return "gfx908";
32   case EF_AMDGPU_MACH_AMDGCN_GFX909:
33     return "gfx909";
34   case EF_AMDGPU_MACH_AMDGCN_GFX90C:
35     return "gfx90c";
36   case EF_AMDGPU_MACH_AMDGCN_GFX1010:
37     return "gfx1010";
38   case EF_AMDGPU_MACH_AMDGCN_GFX1011:
39     return "gfx1011";
40   case EF_AMDGPU_MACH_AMDGCN_GFX1012:
41     return "gfx1012";
42   case EF_AMDGPU_MACH_AMDGCN_GFX1030:
43     return "gfx1030";
44   case EF_AMDGPU_MACH_AMDGCN_GFX1031:
45     return "gfx1031";
46   case EF_AMDGPU_MACH_AMDGCN_GFX1032:
47     return "gfx1032";
48   case EF_AMDGPU_MACH_AMDGCN_GFX1033:
49     return "gfx1033";
50   default:
51     return "--unknown gfx";
52   }
53 }
54