mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-18 18:42:46 +02:00
[AMDGPU] Add gfx90c target
This differentiates the Ryzen 4000/4300/4500/4700 series APUs that were previously included in gfx909. Differential Revision: https://reviews.llvm.org/D90419 Change-Id: Ia901a7157eb2f73ccd9f25dbacec38427312377d
This commit is contained in:
parent
683b5fd7b1
commit
2a63696860
@ -257,6 +257,22 @@ names from both the *Processor* and *Alternative Processor* can be used.
|
||||
Add product
|
||||
names.
|
||||
|
||||
``gfx90c`` ``amdgcn`` APU - xnack - Ryzen 7 4700G
|
||||
[on] - Ryzen 7 4700GE
|
||||
- Ryzen 7 4700G
|
||||
- Ryzen 7 4700GE
|
||||
- Ryzen 5 4600G
|
||||
- Ryzen 5 4600GE
|
||||
- Ryzen 3 4300G
|
||||
- Ryzen 3 4300GE
|
||||
- Ryzen Pro 4000G
|
||||
- Ryzen 7 Pro 4700G
|
||||
- Ryzen 7 Pro 4750GE
|
||||
- Ryzen 5 Pro 4650G
|
||||
- Ryzen 5 Pro 4650GE
|
||||
- Ryzen 3 Pro 4350G
|
||||
- Ryzen 3 Pro 4350GE
|
||||
|
||||
**GCN GFX10** [AMD-GCN-GFX10]_
|
||||
-----------------------------------------------------------------------------------------------------------
|
||||
``gfx1010`` ``amdgcn`` dGPU - xnack - Radeon RX 5700
|
||||
@ -848,7 +864,7 @@ The AMDGPU backend uses the following ELF header:
|
||||
``EF_AMDGPU_MACH_AMDGCN_GFX906`` 0x02f ``gfx906``
|
||||
``EF_AMDGPU_MACH_AMDGCN_GFX908`` 0x030 ``gfx908``
|
||||
``EF_AMDGPU_MACH_AMDGCN_GFX909`` 0x031 ``gfx909``
|
||||
*reserved* 0x032 Reserved.
|
||||
``EF_AMDGPU_MACH_AMDGCN_GFX90C`` 0x032 ``gfx90c``
|
||||
``EF_AMDGPU_MACH_AMDGCN_GFX1010`` 0x033 ``gfx1010``
|
||||
``EF_AMDGPU_MACH_AMDGCN_GFX1011`` 0x034 ``gfx1011``
|
||||
``EF_AMDGPU_MACH_AMDGCN_GFX1012`` 0x035 ``gfx1012``
|
||||
|
@ -713,7 +713,7 @@ enum : unsigned {
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX908 = 0x030,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX909 = 0x031,
|
||||
EF_AMDGPU_MACH_AMDGCN_RESERVED_0X32 = 0x032,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX90C = 0x032,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1010 = 0x033,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1011 = 0x034,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1012 = 0x035,
|
||||
|
@ -83,6 +83,7 @@ enum GPUKind : uint32_t {
|
||||
GK_GFX906 = 63,
|
||||
GK_GFX908 = 64,
|
||||
GK_GFX909 = 65,
|
||||
GK_GFX90C = 66,
|
||||
|
||||
GK_GFX1010 = 71,
|
||||
GK_GFX1011 = 72,
|
||||
|
@ -456,6 +456,8 @@ StringRef ELFObjectFileBase::getAMDGPUCPUName() const {
|
||||
return "gfx908";
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX909:
|
||||
return "gfx909";
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX90C:
|
||||
return "gfx90c";
|
||||
|
||||
// AMDGCN GFX10.
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1010:
|
||||
|
@ -439,6 +439,7 @@ void ScalarBitSetTraits<ELFYAML::ELF_EF>::bitset(IO &IO,
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX906, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX908, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX909, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX90C, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1010, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1011, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX1012, EF_AMDGPU_MACH);
|
||||
|
@ -104,6 +104,7 @@ constexpr GPUInfo AMDGCNGPUs[] = {
|
||||
{{"gfx906"}, {"gfx906"}, GK_GFX906, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_SRAM_ECC},
|
||||
{{"gfx908"}, {"gfx908"}, GK_GFX908, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK|FEATURE_SRAM_ECC},
|
||||
{{"gfx909"}, {"gfx909"}, GK_GFX909, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK},
|
||||
{{"gfx90c"}, {"gfx90c"}, GK_GFX90C, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_XNACK},
|
||||
{{"gfx1010"}, {"gfx1010"}, GK_GFX1010, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK},
|
||||
{{"gfx1011"}, {"gfx1011"}, GK_GFX1011, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK},
|
||||
{{"gfx1012"}, {"gfx1012"}, GK_GFX1012, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK},
|
||||
@ -211,6 +212,7 @@ AMDGPU::IsaVersion AMDGPU::getIsaVersion(StringRef GPU) {
|
||||
case GK_GFX906: return {9, 0, 6};
|
||||
case GK_GFX908: return {9, 0, 8};
|
||||
case GK_GFX909: return {9, 0, 9};
|
||||
case GK_GFX90C: return {9, 0, 12};
|
||||
case GK_GFX1010: return {10, 1, 0};
|
||||
case GK_GFX1011: return {10, 1, 1};
|
||||
case GK_GFX1012: return {10, 1, 2};
|
||||
|
@ -886,6 +886,13 @@ def FeatureISAVersion9_0_9 : FeatureSet<
|
||||
FeatureXNACK,
|
||||
FeatureImageGather4D16Bug]>;
|
||||
|
||||
def FeatureISAVersion9_0_C : FeatureSet<
|
||||
[FeatureGFX9,
|
||||
FeatureMadMixInsts,
|
||||
FeatureLDSBankCount32,
|
||||
FeatureXNACK,
|
||||
FeatureImageGather4D16Bug]>;
|
||||
|
||||
// TODO: Organize more features into groups.
|
||||
def FeatureGroup {
|
||||
// Bugs present on gfx10.1.
|
||||
|
@ -184,6 +184,10 @@ def : ProcessorModel<"gfx909", SIQuarterSpeedModel,
|
||||
FeatureISAVersion9_0_9.Features
|
||||
>;
|
||||
|
||||
def : ProcessorModel<"gfx90c", SIQuarterSpeedModel,
|
||||
FeatureISAVersion9_0_C.Features
|
||||
>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// GCN GFX10.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -97,6 +97,7 @@ StringRef AMDGPUTargetStreamer::getArchNameFromElfMach(unsigned ElfMach) {
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX906: AK = GK_GFX906; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX908: AK = GK_GFX908; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX909: AK = GK_GFX909; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX90C: AK = GK_GFX90C; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1010: AK = GK_GFX1010; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1011: AK = GK_GFX1011; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1012: AK = GK_GFX1012; break;
|
||||
@ -154,6 +155,7 @@ unsigned AMDGPUTargetStreamer::getElfMach(StringRef GPU) {
|
||||
case GK_GFX906: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX906;
|
||||
case GK_GFX908: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX908;
|
||||
case GK_GFX909: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX909;
|
||||
case GK_GFX90C: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX90C;
|
||||
case GK_GFX1010: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1010;
|
||||
case GK_GFX1011: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1011;
|
||||
case GK_GFX1012: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX1012;
|
||||
|
@ -52,6 +52,7 @@
|
||||
; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx906 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX906 %s
|
||||
; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx908 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX908 %s
|
||||
; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx909 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX909 %s
|
||||
; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx90c < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX90C %s
|
||||
; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx1010 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1010 %s
|
||||
; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx1011 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1011 %s
|
||||
; RUN: llc -filetype=obj -march=amdgcn -mcpu=gfx1012 < %s | llvm-readobj -file-headers - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX1012 %s
|
||||
@ -108,6 +109,7 @@
|
||||
; GFX908: EF_AMDGPU_MACH_AMDGCN_GFX908 (0x30)
|
||||
; GFX908-NEXT: EF_AMDGPU_SRAM_ECC (0x200)
|
||||
; GFX909: EF_AMDGPU_MACH_AMDGCN_GFX909 (0x31)
|
||||
; GFX90C: EF_AMDGPU_MACH_AMDGCN_GFX90C (0x32)
|
||||
; GFX1010: EF_AMDGPU_MACH_AMDGCN_GFX1010 (0x33)
|
||||
; GFX1011: EF_AMDGPU_MACH_AMDGCN_GFX1011 (0x34)
|
||||
; GFX1012: EF_AMDGPU_MACH_AMDGCN_GFX1012 (0x35)
|
||||
|
@ -142,6 +142,10 @@
|
||||
# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX909 | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX909 %s
|
||||
# RUN: obj2yaml %t.o.AMDGCN_GFX909 | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX909 %s
|
||||
|
||||
# RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX90C/' %s | yaml2obj -o %t.o.AMDGCN_GFX90C
|
||||
# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX90C | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX90C %s
|
||||
# RUN: obj2yaml %t.o.AMDGCN_GFX90C | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX90C %s
|
||||
|
||||
# RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX1010/' %s | yaml2obj -o %t.o.AMDGCN_GFX1010
|
||||
# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX1010 | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX1010 %s
|
||||
# RUN: obj2yaml %t.o.AMDGCN_GFX1010 | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX1010 %s
|
||||
@ -292,6 +296,9 @@
|
||||
# ELF-AMDGCN-GFX909: EF_AMDGPU_MACH_AMDGCN_GFX909 (0x31)
|
||||
# YAML-AMDGCN-GFX909: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX909 ]
|
||||
|
||||
# ELF-AMDGCN-GFX90C: EF_AMDGPU_MACH_AMDGCN_GFX90C (0x32)
|
||||
# YAML-AMDGCN-GFX90C: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX90C ]
|
||||
|
||||
# ELF-AMDGCN-GFX1010: EF_AMDGPU_MACH_AMDGCN_GFX1010 (0x33)
|
||||
# YAML-AMDGCN-GFX1010: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX1010 ]
|
||||
|
||||
|
@ -58,6 +58,9 @@
|
||||
# RUN: yaml2obj %s -o %t -DCPU=GFX909
|
||||
# RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX909 -DFLAGS=0x31
|
||||
|
||||
# RUN: yaml2obj %s -o %t -DCPU=GFX90C
|
||||
# RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX90C -DFLAGS=0x32
|
||||
|
||||
# RUN: yaml2obj %s -o %t -DCPU=GFX1010
|
||||
# RUN: llvm-readobj -h %t | FileCheck %s --match-full-lines -DFILE=%t -DCPU=GFX1010 -DFLAGS=0x33
|
||||
|
||||
|
@ -1779,6 +1779,7 @@ static const EnumEntry<unsigned> ElfHeaderAMDGPUFlags[] = {
|
||||
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX906),
|
||||
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX908),
|
||||
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX909),
|
||||
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX90C),
|
||||
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010),
|
||||
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011),
|
||||
LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012),
|
||||
|
Loading…
Reference in New Issue
Block a user