diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst --- a/llvm/docs/AMDGPUUsage.rst +++ b/llvm/docs/AMDGPUUsage.rst @@ -129,10 +129,10 @@ **GCN GFX6 (Southern Islands (SI))** [AMD-GCN-GFX6]_ ----------------------------------------------------------------------------------------------- ``gfx600`` - ``tahiti`` ``amdgcn`` dGPU - ``gfx601`` - ``hainan`` ``amdgcn`` dGPU - - ``oland`` - - ``pitcairn`` + ``gfx601`` - ``pitcairn`` ``amdgcn`` dGPU - ``verde`` + ``gfx602`` - ``hainan`` ``amdgcn`` dGPU + - ``oland`` **GCN GFX7 (Sea Islands (CI))** [AMD-GCN-GFX7]_ ----------------------------------------------------------------------------------------------- ``gfx700`` - ``kaveri`` ``amdgcn`` APU - A6-7000 @@ -166,6 +166,7 @@ - Radeon HD 8770 - R7 260 - R7 260X + ``gfx705`` ``amdgcn`` APU **GCN GFX8 (Volcanic Islands (VI))** [AMD-GCN-GFX8]_ ----------------------------------------------------------------------------------------------- ``gfx801`` - ``carrizo`` ``amdgcn`` APU - xnack - A6-8500P @@ -186,11 +187,8 @@ \ ``amdgcn`` APU - xnack - E2-9010 [on] - A6-9210 - A9-9410 - ``gfx802`` - ``iceland`` ``amdgcn`` dGPU - xnack ROCm - FirePro S7150 - - ``tonga`` [off] - FirePro S7100 - - FirePro W7100 - - Radeon R285 - - Radeon R9 380 + ``gfx802`` - ``iceland`` ``amdgcn`` dGPU - xnack ROCm - Radeon R285 + - ``tonga`` [off] - Radeon R9 380 - Radeon R9 385 - Mobile FirePro M7170 @@ -205,6 +203,9 @@ - Radeon Instinct MI6 \ - ``polaris11`` ``amdgcn`` dGPU - xnack ROCm - Radeon RX 460 [off] + ``gfx805`` - ``tongapro`` ``amdgcn`` dGPU - xnack ROCm - FirePro S7150 + [off] - FirePro S7100 + - FirePro W7100 ``gfx810`` - ``stoney`` ``amdgcn`` APU - xnack [on] **GCN GFX9** [AMD-GCN-GFX9]_ @@ -818,6 +819,11 @@ ``EF_AMDGPU_MACH_AMDGCN_GFX1012`` 0x035 ``gfx1012`` ``EF_AMDGPU_MACH_AMDGCN_GFX1030`` 0x036 ``gfx1030`` ``EF_AMDGPU_MACH_AMDGCN_GFX1031`` 0x037 ``gfx1031`` + *reserved* 0x038 Reserved. + *reserved* 0x039 Reserved. + ``EF_AMDGPU_MACH_AMDGCN_GFX602`` 0x03a ``gfx602`` + ``EF_AMDGPU_MACH_AMDGCN_GFX705`` 0x03b ``gfx705`` + ``EF_AMDGPU_MACH_AMDGCN_GFX805`` 0x03c ``gfx805`` ================================= ========== ============================= Sections diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h --- a/llvm/include/llvm/BinaryFormat/ELF.h +++ b/llvm/include/llvm/BinaryFormat/ELF.h @@ -685,16 +685,19 @@ // AMDGCN GFX6. EF_AMDGPU_MACH_AMDGCN_GFX600 = 0x020, EF_AMDGPU_MACH_AMDGCN_GFX601 = 0x021, + EF_AMDGPU_MACH_AMDGCN_GFX602 = 0x03a, // AMDGCN GFX7. EF_AMDGPU_MACH_AMDGCN_GFX700 = 0x022, EF_AMDGPU_MACH_AMDGCN_GFX701 = 0x023, EF_AMDGPU_MACH_AMDGCN_GFX702 = 0x024, EF_AMDGPU_MACH_AMDGCN_GFX703 = 0x025, EF_AMDGPU_MACH_AMDGCN_GFX704 = 0x026, + EF_AMDGPU_MACH_AMDGCN_GFX705 = 0x03b, // AMDGCN GFX8. EF_AMDGPU_MACH_AMDGCN_GFX801 = 0x028, EF_AMDGPU_MACH_AMDGCN_GFX802 = 0x029, EF_AMDGPU_MACH_AMDGCN_GFX803 = 0x02a, + EF_AMDGPU_MACH_AMDGCN_GFX805 = 0x03c, EF_AMDGPU_MACH_AMDGCN_GFX810 = 0x02b, // AMDGCN GFX9. EF_AMDGPU_MACH_AMDGCN_GFX900 = 0x02c, @@ -716,7 +719,7 @@ // First/last AMDGCN-based processors. EF_AMDGPU_MACH_AMDGCN_FIRST = EF_AMDGPU_MACH_AMDGCN_GFX600, - EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX1031, + EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX805, // Indicates if the "xnack" target feature is enabled for all code contained // in the object. diff --git a/llvm/include/llvm/Support/TargetParser.h b/llvm/include/llvm/Support/TargetParser.h --- a/llvm/include/llvm/Support/TargetParser.h +++ b/llvm/include/llvm/Support/TargetParser.h @@ -87,8 +87,12 @@ GK_GFX1030 = 75, GK_GFX1031 = 76, + GK_GFX602 = 80, + GK_GFX705 = 81, + GK_GFX805 = 82, + GK_AMDGCN_FIRST = GK_GFX600, - GK_AMDGCN_LAST = GK_GFX1031, + GK_AMDGCN_LAST = GK_GFX805, }; /// Instruction set architecture version. diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp --- a/llvm/lib/Object/ELFObjectFile.cpp +++ b/llvm/lib/Object/ELFObjectFile.cpp @@ -414,6 +414,8 @@ return "gfx600"; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX601: return "gfx601"; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX602: + return "gfx602"; // AMDGCN GFX7. case ELF::EF_AMDGPU_MACH_AMDGCN_GFX700: @@ -426,6 +428,8 @@ return "gfx703"; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX704: return "gfx704"; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX705: + return "gfx705"; // AMDGCN GFX8. case ELF::EF_AMDGPU_MACH_AMDGCN_GFX801: @@ -434,6 +438,8 @@ return "gfx802"; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX803: return "gfx803"; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX805: + return "gfx805"; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX810: return "gfx810"; diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp --- a/llvm/lib/ObjectYAML/ELFYAML.cpp +++ b/llvm/lib/ObjectYAML/ELFYAML.cpp @@ -421,14 +421,17 @@ BCaseMask(EF_AMDGPU_MACH_R600_TURKS, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX600, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX601, EF_AMDGPU_MACH); + BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX602, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX700, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX701, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX702, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX703, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX704, EF_AMDGPU_MACH); + BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX705, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX801, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX802, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX803, EF_AMDGPU_MACH); + BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX805, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX810, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX900, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX902, EF_AMDGPU_MACH); diff --git a/llvm/lib/Support/TargetParser.cpp b/llvm/lib/Support/TargetParser.cpp --- a/llvm/lib/Support/TargetParser.cpp +++ b/llvm/lib/Support/TargetParser.cpp @@ -63,14 +63,12 @@ // This table should be sorted by the value of GPUKind // Don't bother listing the implicitly true features -constexpr GPUInfo AMDGCNGPUs[39] = { +constexpr GPUInfo AMDGCNGPUs[43] = { // Name Canonical Kind Features // Name {{"gfx600"}, {"gfx600"}, GK_GFX600, FEATURE_FAST_FMA_F32}, {{"tahiti"}, {"gfx600"}, GK_GFX600, FEATURE_FAST_FMA_F32}, {{"gfx601"}, {"gfx601"}, GK_GFX601, FEATURE_NONE}, - {{"hainan"}, {"gfx601"}, GK_GFX601, FEATURE_NONE}, - {{"oland"}, {"gfx601"}, GK_GFX601, FEATURE_NONE}, {{"pitcairn"}, {"gfx601"}, GK_GFX601, FEATURE_NONE}, {{"verde"}, {"gfx601"}, GK_GFX601, FEATURE_NONE}, {{"gfx700"}, {"gfx700"}, GK_GFX700, FEATURE_NONE}, @@ -105,6 +103,12 @@ {{"gfx1012"}, {"gfx1012"}, GK_GFX1012, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK}, {{"gfx1030"}, {"gfx1030"}, GK_GFX1030, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, {{"gfx1031"}, {"gfx1031"}, GK_GFX1031, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, + {{"gfx602"}, {"gfx602"}, GK_GFX602, FEATURE_NONE}, + {{"hainan"}, {"gfx602"}, GK_GFX602, FEATURE_NONE}, + {{"oland"}, {"gfx602"}, GK_GFX602, FEATURE_NONE}, + {{"gfx705"}, {"gfx705"}, GK_GFX705, FEATURE_NONE}, + {{"gfx805"}, {"gfx805"}, GK_GFX805, FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK}, + {{"tongapro"}, {"gfx805"}, GK_GFX805, FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK}, }; const GPUInfo *getArchEntry(AMDGPU::GPUKind AK, ArrayRef Table) { @@ -188,14 +192,17 @@ switch (AK) { case GK_GFX600: return {6, 0, 0}; case GK_GFX601: return {6, 0, 1}; + case GK_GFX602: return {6, 0, 2}; case GK_GFX700: return {7, 0, 0}; case GK_GFX701: return {7, 0, 1}; case GK_GFX702: return {7, 0, 2}; case GK_GFX703: return {7, 0, 3}; case GK_GFX704: return {7, 0, 4}; + case GK_GFX705: return {7, 0, 5}; case GK_GFX801: return {8, 0, 1}; case GK_GFX802: return {8, 0, 2}; case GK_GFX803: return {8, 0, 3}; + case GK_GFX805: return {8, 0, 5}; case GK_GFX810: return {8, 1, 0}; case GK_GFX900: return {9, 0, 0}; case GK_GFX902: return {9, 0, 2}; diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td --- a/llvm/lib/Target/AMDGPU/AMDGPU.td +++ b/llvm/lib/Target/AMDGPU/AMDGPU.td @@ -749,6 +749,12 @@ FeatureDoesNotSupportXNACK, FeatureCodeObjectV3]>; +def FeatureISAVersion6_0_2 : FeatureSet< + [FeatureSouthernIslands, + FeatureLDSBankCount32, + FeatureDoesNotSupportXNACK, + FeatureCodeObjectV3]>; + def FeatureISAVersion7_0_0 : FeatureSet< [FeatureSeaIslands, FeatureLDSBankCount32, @@ -782,6 +788,12 @@ FeatureDoesNotSupportXNACK, FeatureCodeObjectV3]>; +def FeatureISAVersion7_0_5 : FeatureSet< + [FeatureSeaIslands, + FeatureLDSBankCount16, + FeatureDoesNotSupportXNACK, + FeatureCodeObjectV3]>; + def FeatureISAVersion8_0_1 : FeatureSet< [FeatureVolcanicIslands, FeatureFastFMAF32, @@ -806,6 +818,14 @@ FeatureDoesNotSupportXNACK, FeatureCodeObjectV3]>; +def FeatureISAVersion8_0_5 : FeatureSet< + [FeatureVolcanicIslands, + FeatureLDSBankCount32, + FeatureSGPRInitBug, + FeatureUnpackedD16VMem, + FeatureDoesNotSupportXNACK, + FeatureCodeObjectV3]>; + def FeatureISAVersion8_1_0 : FeatureSet< [FeatureVolcanicIslands, FeatureLDSBankCount16, diff --git a/llvm/lib/Target/AMDGPU/GCNProcessors.td b/llvm/lib/Target/AMDGPU/GCNProcessors.td --- a/llvm/lib/Target/AMDGPU/GCNProcessors.td +++ b/llvm/lib/Target/AMDGPU/GCNProcessors.td @@ -32,20 +32,24 @@ FeatureISAVersion6_0_1.Features >; -def : ProcessorModel<"hainan", SIQuarterSpeedModel, +def : ProcessorModel<"pitcairn", SIQuarterSpeedModel, FeatureISAVersion6_0_1.Features >; -def : ProcessorModel<"oland", SIQuarterSpeedModel, +def : ProcessorModel<"verde", SIQuarterSpeedModel, FeatureISAVersion6_0_1.Features >; -def : ProcessorModel<"pitcairn", SIQuarterSpeedModel, - FeatureISAVersion6_0_1.Features +def : ProcessorModel<"gfx602", SIQuarterSpeedModel, + FeatureISAVersion6_0_2.Features >; -def : ProcessorModel<"verde", SIQuarterSpeedModel, - FeatureISAVersion6_0_1.Features +def : ProcessorModel<"hainan", SIQuarterSpeedModel, + FeatureISAVersion6_0_2.Features +>; + +def : ProcessorModel<"oland", SIQuarterSpeedModel, + FeatureISAVersion6_0_2.Features >; //===------------------------------------------------------------===// @@ -92,6 +96,10 @@ FeatureISAVersion7_0_4.Features >; +def : ProcessorModel<"gfx705", SIQuarterSpeedModel, + FeatureISAVersion7_0_5.Features +>; + //===------------------------------------------------------------===// // GCN GFX8 (Volcanic Islands (VI)). //===------------------------------------------------------------===// @@ -132,6 +140,14 @@ FeatureISAVersion8_0_3.Features >; +def : ProcessorModel<"gfx805", SIQuarterSpeedModel, + FeatureISAVersion8_0_5.Features +>; + +def : ProcessorModel<"tongapro", SIQuarterSpeedModel, + FeatureISAVersion8_0_5.Features +>; + def : ProcessorModel<"gfx810", SIQuarterSpeedModel, FeatureISAVersion8_1_0.Features >; diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp @@ -79,14 +79,17 @@ case ELF::EF_AMDGPU_MACH_R600_TURKS: AK = GK_TURKS; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX600: AK = GK_GFX600; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX601: AK = GK_GFX601; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX602: AK = GK_GFX602; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX700: AK = GK_GFX700; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX701: AK = GK_GFX701; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX702: AK = GK_GFX702; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX703: AK = GK_GFX703; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX704: AK = GK_GFX704; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX705: AK = GK_GFX705; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX801: AK = GK_GFX801; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX802: AK = GK_GFX802; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX803: AK = GK_GFX803; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX805: AK = GK_GFX805; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX810: AK = GK_GFX810; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX900: AK = GK_GFX900; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX902: AK = GK_GFX902; break; @@ -132,14 +135,17 @@ case GK_TURKS: return ELF::EF_AMDGPU_MACH_R600_TURKS; case GK_GFX600: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX600; case GK_GFX601: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX601; + case GK_GFX602: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX602; case GK_GFX700: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX700; case GK_GFX701: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX701; case GK_GFX702: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX702; case GK_GFX703: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX703; case GK_GFX704: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX704; + case GK_GFX705: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX705; case GK_GFX801: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX801; case GK_GFX802: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX802; case GK_GFX803: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX803; + case GK_GFX805: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX805; case GK_GFX810: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX810; case GK_GFX900: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX900; case GK_GFX902: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX902; diff --git a/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll b/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll --- a/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll +++ b/llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll @@ -1,10 +1,11 @@ ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx600 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX600 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=tahiti -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX600 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx601 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX601 %s -; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=hainan -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX601 %s -; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=oland -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX601 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=pitcairn -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX601 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=verde -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX601 %s +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx602 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX602 %s +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=hainan -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX602 %s +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=oland -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX602 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX700 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=kaveri -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX700 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx701 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX701 %s @@ -15,6 +16,7 @@ ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=mullins -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX703 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx704 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX704 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=bonaire -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX704 %s +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx705 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX705 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx801 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX801 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=carrizo -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX801 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx802 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX802 %s @@ -24,6 +26,8 @@ ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX803 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=polaris10 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX803 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=polaris11 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX803 %s +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx805 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX805 %s +; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=tongapro -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX805 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx810 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX810 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=stoney -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX810 %s ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -mattr=+code-object-v3 < %s | FileCheck --check-prefixes=GFX900 %s @@ -42,14 +46,17 @@ ; GFX600: .amdgcn_target "amdgcn-amd-amdhsa--gfx600" ; GFX601: .amdgcn_target "amdgcn-amd-amdhsa--gfx601" +; GFX602: .amdgcn_target "amdgcn-amd-amdhsa--gfx602" ; GFX700: .amdgcn_target "amdgcn-amd-amdhsa--gfx700" ; GFX701: .amdgcn_target "amdgcn-amd-amdhsa--gfx701" ; GFX702: .amdgcn_target "amdgcn-amd-amdhsa--gfx702" ; GFX703: .amdgcn_target "amdgcn-amd-amdhsa--gfx703" ; GFX704: .amdgcn_target "amdgcn-amd-amdhsa--gfx704" +; GFX705: .amdgcn_target "amdgcn-amd-amdhsa--gfx705" ; GFX801: .amdgcn_target "amdgcn-amd-amdhsa--gfx801+xnack" ; GFX802: .amdgcn_target "amdgcn-amd-amdhsa--gfx802" ; GFX803: .amdgcn_target "amdgcn-amd-amdhsa--gfx803" +; GFX805: .amdgcn_target "amdgcn-amd-amdhsa--gfx805" ; GFX810: .amdgcn_target "amdgcn-amd-amdhsa--gfx810+xnack" ; GFX900: .amdgcn_target "amdgcn-amd-amdhsa--gfx900" ; GFX902: .amdgcn_target "amdgcn-amd-amdhsa--gfx902+xnack" diff --git a/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll b/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll --- a/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll +++ b/llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll @@ -17,10 +17,11 @@ ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx600 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX600 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=tahiti < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX600 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx601 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX601 %s -; RUN: llc -filetype=obj -march=amdgcn -mcpu=hainan < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX601 %s -; RUN: llc -filetype=obj -march=amdgcn -mcpu=oland < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX601 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=pitcairn < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX601 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=verde < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX601 %s +; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx602 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX602 %s +; RUN: llc -filetype=obj -march=amdgcn -mcpu=hainan < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX602 %s +; RUN: llc -filetype=obj -march=amdgcn -mcpu=oland < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX602 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx700 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX700 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=kaveri < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX700 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx701 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX701 %s @@ -31,6 +32,7 @@ ; RUN: llc -filetype=obj -march=amdgcn -mcpu=mullins < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX703 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx704 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX704 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=bonaire < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX704 %s +; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx705 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX705 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx801 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX801 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=carrizo < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX801 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx802 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX802 %s @@ -40,6 +42,8 @@ ; RUN: llc -filetype=obj -march=amdgcn -mcpu=fiji < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX803 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=polaris10 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX803 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=polaris11 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX803 %s +; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx805 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX805 %s +; RUN: llc -filetype=obj -march=amdgcn -mcpu=tongapro < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX805 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx810 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX810 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=stoney < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX810 %s ; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx900 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX900 %s @@ -76,15 +80,18 @@ ; TURKS: EF_AMDGPU_MACH_R600_TURKS (0x10) ; GFX600: EF_AMDGPU_MACH_AMDGCN_GFX600 (0x20) ; GFX601: EF_AMDGPU_MACH_AMDGCN_GFX601 (0x21) +; GFX602: EF_AMDGPU_MACH_AMDGCN_GFX602 (0x3A) ; GFX700: EF_AMDGPU_MACH_AMDGCN_GFX700 (0x22) ; GFX701: EF_AMDGPU_MACH_AMDGCN_GFX701 (0x23) ; GFX702: EF_AMDGPU_MACH_AMDGCN_GFX702 (0x24) ; GFX703: EF_AMDGPU_MACH_AMDGCN_GFX703 (0x25) ; GFX704: EF_AMDGPU_MACH_AMDGCN_GFX704 (0x26) +; GFX705: EF_AMDGPU_MACH_AMDGCN_GFX705 (0x3B) ; GFX801: EF_AMDGPU_MACH_AMDGCN_GFX801 (0x28) ; GFX801-NEXT: EF_AMDGPU_XNACK (0x100) ; GFX802: EF_AMDGPU_MACH_AMDGCN_GFX802 (0x29) ; GFX803: EF_AMDGPU_MACH_AMDGCN_GFX803 (0x2A) +; GFX805: EF_AMDGPU_MACH_AMDGCN_GFX805 (0x3C) ; GFX810: EF_AMDGPU_MACH_AMDGCN_GFX810 (0x2B) ; GFX810-NEXT: EF_AMDGPU_XNACK (0x100) ; GFX900: EF_AMDGPU_MACH_AMDGCN_GFX900 (0x2C) diff --git a/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml b/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml --- a/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml +++ b/llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml @@ -100,6 +100,15 @@ # RUN: yaml2obj --docnum=34 %s -o %t.o.34 # RUN: llvm-readobj -s -file-headers %t.o.34 | FileCheck --check-prefixes=ELF-ALL,ELF-GFX1010 %s # RUN: obj2yaml %t.o.34 | FileCheck --check-prefixes=YAML-GFX1010 %s +# RUN: yaml2obj --docnum=35 %s -o %t.o.35 +# RUN: llvm-readobj -S --file-headers %t.o.35 | FileCheck --check-prefixes=ELF-ALL,ELF-GFX602 %s +# RUN: obj2yaml %t.o.35 | FileCheck --check-prefixes=YAML-GFX602 %s +# RUN: yaml2obj --docnum=36 %s -o %t.o.36 +# RUN: llvm-readobj -S --file-headers %t.o.36 | FileCheck --check-prefixes=ELF-ALL,ELF-GFX705 %s +# RUN: obj2yaml %t.o.36 | FileCheck --check-prefixes=YAML-GFX705 %s +# RUN: yaml2obj --docnum=37 %s -o %t.o.37 +# RUN: llvm-readobj -S --file-headers %t.o.37 | FileCheck --check-prefixes=ELF-ALL,ELF-GFX805 %s +# RUN: obj2yaml %t.o.37 | FileCheck --check-prefixes=YAML-GFX805 %s # ELF-ALL: Flags [ # ELF-R600: EF_AMDGPU_MACH_R600_R600 (0x1) @@ -136,6 +145,9 @@ # ELF-GFX908: EF_AMDGPU_MACH_AMDGCN_GFX908 (0x30) # ELF-GFX909: EF_AMDGPU_MACH_AMDGCN_GFX909 (0x31) # ELF-GFX1010: EF_AMDGPU_MACH_AMDGCN_GFX1010 (0x33) +# ELF-GFX602: EF_AMDGPU_MACH_AMDGCN_GFX602 (0x3A) +# ELF-GFX705: EF_AMDGPU_MACH_AMDGCN_GFX705 (0x3B) +# ELF-GFX805: EF_AMDGPU_MACH_AMDGCN_GFX805 (0x3C) # ELF-ALL: ] # YAML-R600: Flags: [ EF_AMDGPU_MACH_R600_R600 ] @@ -156,14 +168,17 @@ # YAML-TURKS: Flags: [ EF_AMDGPU_MACH_R600_TURKS ] # YAML-GFX600: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX600 ] # YAML-GFX601: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX601 ] +# YAML-GFX602: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX602 ] # YAML-GFX700: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX700 ] # YAML-GFX701: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX701 ] # YAML-GFX702: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX702 ] # YAML-GFX703: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX703 ] # YAML-GFX704: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX704 ] +# YAML-GFX705: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX705 ] # YAML-GFX801: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX801 ] # YAML-GFX802: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX802 ] # YAML-GFX803: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX803 ] +# YAML-GFX805: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX805 ] # YAML-GFX810: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX810 ] # YAML-GFX900: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX900 ] # YAML-GFX902: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX902 ] @@ -547,3 +562,36 @@ Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX1010 ] ... +# Doc35 +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + OSABI: ELFOSABI_NONE + Type: ET_REL + Machine: EM_AMDGPU + Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX602 ] +... + +# Doc36 +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + OSABI: ELFOSABI_NONE + Type: ET_REL + Machine: EM_AMDGPU + Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX705 ] +... + +# Doc37 +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + OSABI: ELFOSABI_NONE + Type: ET_REL + Machine: EM_AMDGPU + Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX805 ] +... + diff --git a/llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test b/llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test --- a/llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test +++ b/llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test @@ -4,6 +4,9 @@ # RUN: yaml2obj %s -o %t -DCPU=GFX601 # RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX601 -DFLAGS=0x21 +# RUN: yaml2obj %s -o %t -DCPU=GFX602 +# RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX602 -DFLAGS=0x3A + # RUN: yaml2obj %s -o %t -DCPU=GFX700 # RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX700 -DFLAGS=0x22 @@ -19,6 +22,9 @@ # RUN: yaml2obj %s -o %t -DCPU=GFX704 # RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX704 -DFLAGS=0x26 +# RUN: yaml2obj %s -o %t -DCPU=GFX705 +# RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX705 -DFLAGS=0x3B + # RUN: yaml2obj %s -o %t -DCPU=GFX801 # RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX801 -DFLAGS=0x28 @@ -28,6 +34,9 @@ # RUN: yaml2obj %s -o %t -DCPU=GFX803 # RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX803 -DFLAGS=0x2A +# RUN: yaml2obj %s -o %t -DCPU=GFX805 +# RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX805 -DFLAGS=0x3C + # RUN: yaml2obj %s -o %t -DCPU=GFX810 # RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX810 -DFLAGS=0x2B diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1749,14 +1749,17 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_R600_TURKS), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX600), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX601), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX602), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX700), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX701), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX702), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX703), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX704), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX705), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX801), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX802), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX803), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX805), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX810), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX900), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX902),