diff options
author | Joe Nash <Joseph.Nash@amd.com> | 2022-04-12 16:05:06 -0400 |
---|---|---|
committer | Joe Nash <Joseph.Nash@amd.com> | 2022-04-29 12:27:17 -0400 |
commit | 813e521e55b11165138b071f446eda94b14570dc (patch) | |
tree | ef186bbe40781457ad6a08a669ff56543274ab6b /llvm/lib | |
parent | b481512485a87a5510bf28f63cc512ad26c075a8 (diff) | |
download | llvm-813e521e55b11165138b071f446eda94b14570dc.zip llvm-813e521e55b11165138b071f446eda94b14570dc.tar.gz llvm-813e521e55b11165138b071f446eda94b14570dc.tar.bz2 |
[AMDGPU] Add gfx11 subtarget ELF definition
This is the first patch of a series to upstream support for the new
subtarget.
Contributors:
Jay Foad <jay.foad@amd.com>
Konstantin Zhuravlyov <kzhuravl_dev@outlook.com>
Patch 1/N for upstreaming AMDGPU gfx11 architectures.
Reviewed By: foad, kzhuravl, #amdgpu
Differential Revision: https://reviews.llvm.org/D124536
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Object/ELFObjectFile.cpp | 10 | ||||
-rw-r--r-- | llvm/lib/ObjectYAML/ELFYAML.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/Support/TargetParser.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp | 8 |
4 files changed, 30 insertions, 0 deletions
diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp index 8be1c2b..c402599 100644 --- a/llvm/lib/Object/ELFObjectFile.cpp +++ b/llvm/lib/Object/ELFObjectFile.cpp @@ -485,6 +485,16 @@ StringRef ELFObjectFileBase::getAMDGPUCPUName() const { return "gfx1035"; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1036: return "gfx1036"; + + // AMDGCN GFX11. + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1100: + return "gfx1100"; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1101: + return "gfx1101"; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1102: + return "gfx1102"; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1103: + return "gfx1103"; default: llvm_unreachable("Unknown EF_AMDGPU_MACH value"); } diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp index 9792a9b..f2d1b79 100644 --- a/llvm/lib/ObjectYAML/ELFYAML.cpp +++ b/llvm/lib/ObjectYAML/ELFYAML.cpp @@ -579,6 +579,10 @@ void ScalarBitSetTraits<ELFYAML::ELF_EF>::bitset(IO &IO, BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1034, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1035, EF_AMDGPU_MACH); BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1036, EF_AMDGPU_MACH); + BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1100, EF_AMDGPU_MACH); + BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1101, EF_AMDGPU_MACH); + BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1102, EF_AMDGPU_MACH); + BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1103, EF_AMDGPU_MACH); switch (Object->Header.ABIVersion) { default: // ELFOSABI_AMDGPU_PAL, ELFOSABI_AMDGPU_MESA3D support *_V3 flags. diff --git a/llvm/lib/Support/TargetParser.cpp b/llvm/lib/Support/TargetParser.cpp index 0b11699..e5590d4 100644 --- a/llvm/lib/Support/TargetParser.cpp +++ b/llvm/lib/Support/TargetParser.cpp @@ -116,6 +116,10 @@ constexpr GPUInfo AMDGCNGPUs[] = { {{"gfx1034"}, {"gfx1034"}, GK_GFX1034, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, {{"gfx1035"}, {"gfx1035"}, GK_GFX1035, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, {{"gfx1036"}, {"gfx1036"}, GK_GFX1036, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, + {{"gfx1100"}, {"gfx1100"}, GK_GFX1100, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, + {{"gfx1101"}, {"gfx1101"}, GK_GFX1101, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, + {{"gfx1102"}, {"gfx1102"}, GK_GFX1102, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, + {{"gfx1103"}, {"gfx1103"}, GK_GFX1103, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32}, }; const GPUInfo *getArchEntry(AMDGPU::GPUKind AK, ArrayRef<GPUInfo> Table) { @@ -231,6 +235,10 @@ AMDGPU::IsaVersion AMDGPU::getIsaVersion(StringRef GPU) { case GK_GFX1034: return {10, 3, 4}; case GK_GFX1035: return {10, 3, 5}; case GK_GFX1036: return {10, 3, 6}; + case GK_GFX1100: return {11, 0, 0}; + case GK_GFX1101: return {11, 0, 1}; + case GK_GFX1102: return {11, 0, 2}; + case GK_GFX1103: return {11, 0, 3}; default: return {0, 0, 0}; } } diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp index 88ec2e3..6741db7 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp @@ -118,6 +118,10 @@ StringRef AMDGPUTargetStreamer::getArchNameFromElfMach(unsigned ElfMach) { case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1034: AK = GK_GFX1034; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1035: AK = GK_GFX1035; break; case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1036: AK = GK_GFX1036; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1100: AK = GK_GFX1100; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1101: AK = GK_GFX1101; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1102: AK = GK_GFX1102; break; + case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1103: AK = GK_GFX1103; break; case ELF::EF_AMDGPU_MACH_NONE: AK = GK_NONE; break; } @@ -183,6 +187,10 @@ unsigned AMDGPUTargetStreamer::getElfMach(StringRef GPU) { case GK_GFX1034: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1034; case GK_GFX1035: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1035; case GK_GFX1036: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1036; + case GK_GFX1100: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1100; + case GK_GFX1101: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1101; + case GK_GFX1102: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1102; + case GK_GFX1103: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1103; case GK_NONE: return ELF::EF_AMDGPU_MACH_NONE; } |