{
PROCESSOR_FIJI, // gfx803
PROCESSOR_VEGA10, // gfx900
- PROCESSOR_VEGA20 // gfx906
+ PROCESSOR_VEGA20, // gfx906
+ PROCESSOR_GFX908 // as yet unnamed
};
/* Set in gcn_option_override. */
return gcn_arch == PROCESSOR_VEGA10;
if (strcmp (name, "gfx906") == 0)
return gcn_arch == PROCESSOR_VEGA20;
+ if (strcmp (name, "gfx908") == 0)
+ return gcn_arch == PROCESSOR_GFX908;
return 0;
default:
gcc_unreachable ();
case PROCESSOR_FIJI: cpu = "gfx803"; break;
case PROCESSOR_VEGA10: cpu = "gfx900"; break;
case PROCESSOR_VEGA20: cpu = "gfx906"; break;
+ case PROCESSOR_GFX908: cpu = "gfx908+sram-ecc"; break;
default: gcc_unreachable ();
}
EnumValue
Enum(gpu_type) String(gfx906) Value(PROCESSOR_VEGA20)
+EnumValue
+Enum(gpu_type) String(gfx908) Value(PROCESSOR_GFX908)
+
march=
Target RejectNegative Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI)
Specify the name of the target GPU.
#define EF_AMDGPU_MACH_AMDGCN_GFX900 0x2c
#undef EF_AMDGPU_MACH_AMDGCN_GFX906
#define EF_AMDGPU_MACH_AMDGCN_GFX906 0x2f
+#undef EF_AMDGPU_MACH_AMDGCN_GFX908
+#define EF_AMDGPU_MACH_AMDGCN_GFX908 0x230 // Assume SRAM-ECC enabled.
#ifndef R_AMDGPU_NONE
#define R_AMDGPU_NONE 0
elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX900;
else if (strcmp (argv[i], "-march=gfx906") == 0)
elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX906;
+ else if (strcmp (argv[i], "-march=gfx908") == 0)
+ elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX908;
}
if (!(fopenacc ^ fopenmp))
gcn-run$(exeext): gcn-run.o
+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $< -ldl
-MULTILIB_OPTIONS = march=gfx900/march=gfx906
-MULTILIB_DIRNAMES = gfx900 gfx906
+MULTILIB_OPTIONS = march=gfx900/march=gfx906/march=gfx908
+MULTILIB_DIRNAMES = gfx900 gfx906 gfx908
gcn-tree.o: $(srcdir)/config/gcn/gcn-tree.c
$(COMPILE) $<
omp-device-properties-gcn: $(srcdir)/config/gcn/gcn.c
echo kind: gpu > $@
echo arch: gcn >> $@
- echo isa: fiji gfx900 gfx906 >> $@
+ echo isa: fiji gfx900 gfx906 gfx908 >> $@
EF_AMDGPU_MACH_AMDGCN_GFX803 = 0x02a,
EF_AMDGPU_MACH_AMDGCN_GFX900 = 0x02c,
EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f,
+ EF_AMDGPU_MACH_AMDGCN_GFX908 = 0x030
} EF_AMDGPU_MACH;
const static int EF_AMDGPU_MACH_MASK = 0x000000ff;
const static char *gcn_gfx803_s = "gfx803";
const static char *gcn_gfx900_s = "gfx900";
const static char *gcn_gfx906_s = "gfx906";
+const static char *gcn_gfx908_s = "gfx908";
const static int gcn_isa_name_len = 6;
/* Returns the name that the HSA runtime uses for the ISA or NULL if we do not
return gcn_gfx900_s;
case EF_AMDGPU_MACH_AMDGCN_GFX906:
return gcn_gfx906_s;
+ case EF_AMDGPU_MACH_AMDGCN_GFX908:
+ return gcn_gfx908_s;
}
return NULL;
}
if (!strncmp (isa, gcn_gfx906_s, gcn_isa_name_len))
return EF_AMDGPU_MACH_AMDGCN_GFX906;
+ if (!strncmp (isa, gcn_gfx908_s, gcn_isa_name_len))
+ return EF_AMDGPU_MACH_AMDGCN_GFX908;
+
return -1;
}