AMDGPU: Add gfx12-generic target (#93875)
This commit is contained in:
parent
57eb92ea6c
commit
775f1cd34d
@ -135,6 +135,7 @@
|
||||
// RUN: %clang -E -dM -target amdgcn -mcpu=gfx10-1-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx10_1_generic -DFAMILY=GFX10
|
||||
// RUN: %clang -E -dM -target amdgcn -mcpu=gfx10-3-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx10_3_generic -DFAMILY=GFX10
|
||||
// RUN: %clang -E -dM -target amdgcn -mcpu=gfx11-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx11_generic -DFAMILY=GFX11
|
||||
// RUN: %clang -E -dM -target amdgcn -mcpu=gfx12-generic %s 2>&1 | FileCheck --check-prefixes=ARCH-GCN,FAST_FMAF %s -DWAVEFRONT_SIZE=32 -DCPU=gfx12_generic -DFAMILY=GFX12
|
||||
|
||||
// ARCH-GCN-DAG: #define FP_FAST_FMA 1
|
||||
|
||||
|
@ -119,6 +119,7 @@
|
||||
// RUN: %clang -### -target amdgcn -mcpu=gfx10-1-generic %s 2>&1 | FileCheck --check-prefix=GFX10_1_GENERIC %s
|
||||
// RUN: %clang -### -target amdgcn -mcpu=gfx10-3-generic %s 2>&1 | FileCheck --check-prefix=GFX10_3_GENERIC %s
|
||||
// RUN: %clang -### -target amdgcn -mcpu=gfx11-generic %s 2>&1 | FileCheck --check-prefix=GFX11_GENERIC %s
|
||||
// RUN: %clang -### -target amdgcn -mcpu=gfx12-generic %s 2>&1 | FileCheck --check-prefix=GFX12_GENERIC %s
|
||||
|
||||
// GCNDEFAULT-NOT: -target-cpu
|
||||
// GFX600: "-target-cpu" "gfx600"
|
||||
@ -170,3 +171,4 @@
|
||||
// GFX10_1_GENERIC: "-target-cpu" "gfx10-1-generic"
|
||||
// GFX10_3_GENERIC: "-target-cpu" "gfx10-3-generic"
|
||||
// GFX11_GENERIC: "-target-cpu" "gfx11-generic"
|
||||
// GFX12_GENERIC: "-target-cpu" "gfx12-generic"
|
||||
|
@ -37,7 +37,7 @@
|
||||
|
||||
// RUN: not %clang_cc1 -triple amdgcn--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix AMDGCN
|
||||
// AMDGCN: error: unknown target CPU 'not-a-cpu'
|
||||
// AMDGCN-NEXT: note: valid target CPU values are: gfx600, tahiti, gfx601, pitcairn, verde, gfx602, hainan, oland, gfx700, kaveri, gfx701, hawaii, gfx702, gfx703, kabini, mullins, gfx704, bonaire, gfx705, gfx801, carrizo, gfx802, iceland, tonga, gfx803, fiji, polaris10, polaris11, gfx805, tongapro, gfx810, stoney, gfx900, gfx902, gfx904, gfx906, gfx908, gfx909, gfx90a, gfx90c, gfx940, gfx941, gfx942, gfx1010, gfx1011, gfx1012, gfx1013, gfx1030, gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, gfx1036, gfx1100, gfx1101, gfx1102, gfx1103, gfx1150, gfx1151, gfx1200, gfx1201, gfx9-generic, gfx10-1-generic, gfx10-3-generic, gfx11-generic{{$}}
|
||||
// AMDGCN-NEXT: note: valid target CPU values are: gfx600, tahiti, gfx601, pitcairn, verde, gfx602, hainan, oland, gfx700, kaveri, gfx701, hawaii, gfx702, gfx703, kabini, mullins, gfx704, bonaire, gfx705, gfx801, carrizo, gfx802, iceland, tonga, gfx803, fiji, polaris10, polaris11, gfx805, tongapro, gfx810, stoney, gfx900, gfx902, gfx904, gfx906, gfx908, gfx909, gfx90a, gfx90c, gfx940, gfx941, gfx942, gfx1010, gfx1011, gfx1012, gfx1013, gfx1030, gfx1031, gfx1032, gfx1033, gfx1034, gfx1035, gfx1036, gfx1100, gfx1101, gfx1102, gfx1103, gfx1150, gfx1151, gfx1200, gfx1201, gfx9-generic, gfx10-1-generic, gfx10-3-generic, gfx11-generic, gfx12-generic{{$}}
|
||||
|
||||
// RUN: not %clang_cc1 -triple wasm64--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix WEBASM
|
||||
// WEBASM: error: unknown target CPU 'not-a-cpu'
|
||||
|
@ -610,6 +610,13 @@ Generic processor code objects are versioned. See :ref:`amdgpu-generic-processor
|
||||
|
||||
- ``gfx1150``
|
||||
- ``gfx1151``
|
||||
|
||||
|
||||
``gfx12-generic`` ``amdgcn`` - ``gfx1200`` - wavefrontsize64 - Architected No restrictions.
|
||||
- ``gfx1201`` - cumode flat scratch
|
||||
- Packed
|
||||
work-item
|
||||
IDs
|
||||
==================== ============== ================= ================== ================= =================================
|
||||
|
||||
.. _amdgpu-generic-processor-versioning:
|
||||
@ -1973,6 +1980,7 @@ The AMDGPU backend uses the following ELF header:
|
||||
*reserved* 0x056 Reserved.
|
||||
*reserved* 0x057 Reserved.
|
||||
*reserved* 0x058 Reserved.
|
||||
``EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC`` 0x059 ``gfx12-generic``
|
||||
========================================== ========== =============================
|
||||
|
||||
Sections
|
||||
|
@ -799,11 +799,12 @@ enum : unsigned {
|
||||
EF_AMDGPU_MACH_AMDGCN_RESERVED_0X56 = 0x056,
|
||||
EF_AMDGPU_MACH_AMDGCN_RESERVED_0X57 = 0x057,
|
||||
EF_AMDGPU_MACH_AMDGCN_RESERVED_0X58 = 0x058,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC = 0x059,
|
||||
// clang-format on
|
||||
|
||||
// First/last AMDGCN-based processors.
|
||||
EF_AMDGPU_MACH_AMDGCN_FIRST = EF_AMDGPU_MACH_AMDGCN_GFX600,
|
||||
EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_RESERVED_0X57,
|
||||
EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC,
|
||||
|
||||
// Indicates if the "xnack" target feature is enabled for all code contained
|
||||
// in the object.
|
||||
|
@ -116,9 +116,10 @@ enum GPUKind : uint32_t {
|
||||
GK_GFX10_1_GENERIC = 193,
|
||||
GK_GFX10_3_GENERIC = 194,
|
||||
GK_GFX11_GENERIC = 195,
|
||||
GK_GFX12_GENERIC = 196,
|
||||
|
||||
GK_AMDGCN_GENERIC_FIRST = GK_GFX9_GENERIC,
|
||||
GK_AMDGCN_GENERIC_LAST = GK_GFX11_GENERIC,
|
||||
GK_AMDGCN_GENERIC_LAST = GK_GFX12_GENERIC,
|
||||
};
|
||||
|
||||
/// Instruction set architecture version.
|
||||
|
@ -602,6 +602,8 @@ StringRef ELFObjectFileBase::getAMDGPUCPUName() const {
|
||||
return "gfx10-3-generic";
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC:
|
||||
return "gfx11-generic";
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC:
|
||||
return "gfx12-generic";
|
||||
default:
|
||||
llvm_unreachable("Unknown EF_AMDGPU_MACH value");
|
||||
}
|
||||
|
@ -617,6 +617,7 @@ void ScalarBitSetTraits<ELFYAML::ELF_EF>::bitset(IO &IO,
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC, EF_AMDGPU_MACH);
|
||||
BCaseMask(EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC, EF_AMDGPU_MACH);
|
||||
switch (Object->Header.ABIVersion) {
|
||||
default:
|
||||
// ELFOSABI_AMDGPU_PAL, ELFOSABI_AMDGPU_MESA3D support *_V3 flags.
|
||||
|
@ -1568,6 +1568,10 @@ def FeatureISAVersion12 : FeatureSet<
|
||||
FeatureScalarDwordx3Loads,
|
||||
FeatureDPPSrc1SGPR]>;
|
||||
|
||||
def FeatureISAVersion12_Generic: FeatureSet<
|
||||
!listconcat(FeatureISAVersion12.Features,
|
||||
[FeatureRequiresCOV6])>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
def AMDGPUInstrInfo : InstrInfo {
|
||||
|
@ -304,8 +304,6 @@ def : ProcessorModel<"gfx11-generic", GFX11SpeedModel,
|
||||
// GCN GFX12.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// TODO: gfx12-generic ?
|
||||
|
||||
def : ProcessorModel<"gfx1200", GFX12SpeedModel,
|
||||
FeatureISAVersion12.Features
|
||||
>;
|
||||
@ -313,3 +311,8 @@ def : ProcessorModel<"gfx1200", GFX12SpeedModel,
|
||||
def : ProcessorModel<"gfx1201", GFX12SpeedModel,
|
||||
FeatureISAVersion12.Features
|
||||
>;
|
||||
|
||||
// [gfx1200, gfx1201]
|
||||
def : ProcessorModel<"gfx12-generic", GFX12SpeedModel,
|
||||
FeatureISAVersion12_Generic.Features
|
||||
>;
|
||||
|
@ -119,6 +119,7 @@ StringRef AMDGPUTargetStreamer::getArchNameFromElfMach(unsigned ElfMach) {
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC: AK = GK_GFX10_1_GENERIC; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC: AK = GK_GFX10_3_GENERIC; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC: AK = GK_GFX11_GENERIC; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC: AK = GK_GFX12_GENERIC; break;
|
||||
case ELF::EF_AMDGPU_MACH_NONE: AK = GK_NONE; break;
|
||||
default: AK = GK_NONE; break;
|
||||
}
|
||||
@ -201,6 +202,7 @@ unsigned AMDGPUTargetStreamer::getElfMach(StringRef GPU) {
|
||||
case GK_GFX10_1_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC;
|
||||
case GK_GFX10_3_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC;
|
||||
case GK_GFX11_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC;
|
||||
case GK_GFX12_GENERIC: return ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC;
|
||||
case GK_NONE: return ELF::EF_AMDGPU_MACH_NONE;
|
||||
}
|
||||
// clang-format on
|
||||
@ -768,6 +770,9 @@ unsigned AMDGPUTargetELFStreamer::getEFlagsV6() {
|
||||
case AMDGPU::GK_GFX11_GENERIC:
|
||||
Version = GenericVersion::GFX11;
|
||||
break;
|
||||
case AMDGPU::GK_GFX12_GENERIC:
|
||||
Version = GenericVersion::GFX12;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ static constexpr unsigned GFX9 = 1;
|
||||
static constexpr unsigned GFX10_1 = 1;
|
||||
static constexpr unsigned GFX10_3 = 1;
|
||||
static constexpr unsigned GFX11 = 1;
|
||||
static constexpr unsigned GFX12 = 1;
|
||||
} // namespace GenericVersion
|
||||
|
||||
enum { AMDHSA_COV4 = 4, AMDHSA_COV5 = 5, AMDHSA_COV6 = 6 };
|
||||
|
@ -131,6 +131,7 @@ constexpr GPUInfo AMDGCNGPUs[] = {
|
||||
{{"gfx10-1-generic"}, {"gfx10-1-generic"}, GK_GFX10_1_GENERIC, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_XNACK|FEATURE_WGP},
|
||||
{{"gfx10-3-generic"}, {"gfx10-3-generic"}, GK_GFX10_3_GENERIC, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP},
|
||||
{{"gfx11-generic"}, {"gfx11-generic"}, GK_GFX11_GENERIC, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP},
|
||||
{{"gfx12-generic"}, {"gfx12-generic"}, GK_GFX12_GENERIC, FEATURE_FAST_FMA_F32|FEATURE_FAST_DENORMAL_F32|FEATURE_WAVE32|FEATURE_WGP},
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
@ -158,6 +159,8 @@ StringRef llvm::AMDGPU::getArchFamilyNameAMDGCN(GPUKind AK) {
|
||||
return "gfx10";
|
||||
case AMDGPU::GK_GFX11_GENERIC:
|
||||
return "gfx11";
|
||||
case AMDGPU::GK_GFX12_GENERIC:
|
||||
return "gfx12";
|
||||
default: {
|
||||
StringRef ArchName = getArchNameAMDGCN(AK);
|
||||
return ArchName.empty() ? "" : ArchName.drop_back(2);
|
||||
@ -292,6 +295,7 @@ AMDGPU::IsaVersion AMDGPU::getIsaVersion(StringRef GPU) {
|
||||
case GK_GFX10_1_GENERIC: return {10, 1, 0};
|
||||
case GK_GFX10_3_GENERIC: return {10, 3, 0};
|
||||
case GK_GFX11_GENERIC: return {11, 0, 3};
|
||||
case GK_GFX12_GENERIC: return {12, 0, 0};
|
||||
default: return {0, 0, 0};
|
||||
}
|
||||
// clang-format on
|
||||
@ -313,6 +317,7 @@ void AMDGPU::fillAMDGPUFeatureMap(StringRef GPU, const Triple &T,
|
||||
switch (parseArchAMDGCN(GPU)) {
|
||||
case GK_GFX1201:
|
||||
case GK_GFX1200:
|
||||
case GK_GFX12_GENERIC:
|
||||
Features["ci-insts"] = true;
|
||||
Features["dot7-insts"] = true;
|
||||
Features["dot8-insts"] = true;
|
||||
@ -554,6 +559,7 @@ static bool isWave32Capable(StringRef GPU, const Triple &T) {
|
||||
case GK_GFX1011:
|
||||
case GK_GFX1013:
|
||||
case GK_GFX1010:
|
||||
case GK_GFX12_GENERIC:
|
||||
case GK_GFX11_GENERIC:
|
||||
case GK_GFX10_3_GENERIC:
|
||||
case GK_GFX10_1_GENERIC:
|
||||
|
@ -114,6 +114,7 @@
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-1-generic -mattr=+xnack < %s | FileCheck --check-prefixes=GFX10_1_GENERIC_XNACK %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-3-generic < %s | FileCheck --check-prefixes=GFX10_3_GENERIC %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic < %s | FileCheck --check-prefixes=GFX11_GENERIC %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-generic < %s | FileCheck --check-prefixes=GFX12_GENERIC %s
|
||||
|
||||
; GFX600: .amdgcn_target "amdgcn-amd-amdhsa--gfx600"
|
||||
; GFX601: .amdgcn_target "amdgcn-amd-amdhsa--gfx601"
|
||||
@ -209,6 +210,7 @@
|
||||
; GFX10_1_GENERIC_XNACK: .amdgcn_target "amdgcn-amd-amdhsa--gfx10-1-generic:xnack+"
|
||||
; GFX10_3_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa--gfx10-3-generic"
|
||||
; GFX11_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa--gfx11-generic"
|
||||
; GFX12_GENERIC: .amdgcn_target "amdgcn-amd-amdhsa--gfx12-generic"
|
||||
|
||||
define amdgpu_kernel void @directive_amdgcn_target() {
|
||||
ret void
|
||||
|
@ -81,6 +81,7 @@
|
||||
; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx10-1-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX10_1_GENERIC %s
|
||||
; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx10-3-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX10_3_GENERIC %s
|
||||
; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx11-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX11_GENERIC %s
|
||||
; RUN: llc -filetype=obj --amdhsa-code-object-version=6 -mtriple=amdgcn -mcpu=gfx12-generic < %s | llvm-readobj --file-header - | FileCheck --check-prefixes=ALL,ARCH-GCN,GFX12_GENERIC %s
|
||||
|
||||
; FIXME: With the default attributes the eflags are not accurate for
|
||||
; xnack and sramecc. Subsequent Target-ID patches will address this.
|
||||
@ -159,6 +160,7 @@
|
||||
; GFX10_1_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC (0x52)
|
||||
; GFX10_3_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC (0x53)
|
||||
; GFX11_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC (0x54)
|
||||
; GFX12_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC (0x59)
|
||||
; ALL: ]
|
||||
|
||||
define amdgpu_kernel void @elf_header() {
|
||||
|
@ -2,16 +2,19 @@
|
||||
; RUN: not llc -mtriple=amdgcn -mcpu=gfx10-1-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX101-V5 %s
|
||||
; RUN: not llc -mtriple=amdgcn -mcpu=gfx10-3-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX103-V5 %s
|
||||
; RUN: not llc -mtriple=amdgcn -mcpu=gfx11-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX11-V5 %s
|
||||
; RUN: not llc -mtriple=amdgcn -mcpu=gfx12-generic --amdhsa-code-object-version=5 -o - %s 2>&1 | FileCheck --check-prefix=GFX12-V5 %s
|
||||
|
||||
; RUN: llc -mtriple=amdgcn -mcpu=gfx9-generic --amdhsa-code-object-version=6 -o - %s
|
||||
; RUN: llc -mtriple=amdgcn -mcpu=gfx10-1-generic --amdhsa-code-object-version=6 -o - %s
|
||||
; RUN: llc -mtriple=amdgcn -mcpu=gfx10-3-generic --amdhsa-code-object-version=6 -o - %s
|
||||
; RUN: llc -mtriple=amdgcn -mcpu=gfx11-generic --amdhsa-code-object-version=6 -o - %s
|
||||
; RUN: llc -mtriple=amdgcn -mcpu=gfx12-generic --amdhsa-code-object-version=6 -o - %s
|
||||
|
||||
; GFX9-V5: gfx9-generic is only available on code object version 6 or better
|
||||
; GFX101-V5: gfx10-1-generic is only available on code object version 6 or better
|
||||
; GFX103-V5: gfx10-3-generic is only available on code object version 6 or better
|
||||
; GFX11-V5: gfx11-generic is only available on code object version 6 or better
|
||||
; GFX12-V5: gfx12-generic is only available on code object version 6 or better
|
||||
|
||||
define void @foo() {
|
||||
ret void
|
||||
|
@ -4,6 +4,7 @@
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-3-generic < %s | FileCheck -check-prefix=CU %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic -mattr=+cumode < %s | FileCheck -check-prefix=NOCU %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic < %s | FileCheck -check-prefix=CU %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-generic < %s | FileCheck -check-prefix=CU %s
|
||||
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-1-generic -mattr=+wavefrontsize32,-wavefrontsize64 < %s | FileCheck -check-prefix=W32 %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-1-generic -mattr=-wavefrontsize32,+wavefrontsize64 < %s | FileCheck -check-prefix=W64 %s
|
||||
@ -11,6 +12,7 @@
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx10-3-generic -mattr=-wavefrontsize32,+wavefrontsize64 < %s | FileCheck -check-prefix=W64 %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic -mattr=+wavefrontsize32,-wavefrontsize64 < %s | FileCheck -check-prefix=W32 %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx11-generic -mattr=-wavefrontsize32,+wavefrontsize64 < %s | FileCheck -check-prefix=W64 %s
|
||||
; RUN: llc --amdhsa-code-object-version=6 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx12-generic -mattr=-wavefrontsize32,+wavefrontsize64 < %s | FileCheck -check-prefix=W64 %s
|
||||
|
||||
; Checks 10.1, 10.3 and 11 generic targets allow cumode/wave64.
|
||||
|
||||
|
@ -254,6 +254,10 @@
|
||||
# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX11_GENERIC | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX11_GENERIC %s
|
||||
# RUN: obj2yaml %t.o.AMDGCN_GFX11_GENERIC | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX11_GENERIC %s
|
||||
|
||||
# RUN: sed -e 's/<BITS>/64/' -e 's/<MACH>/AMDGCN_GFX12_GENERIC/' %s | yaml2obj -o %t.o.AMDGCN_GFX12_GENERIC
|
||||
# RUN: llvm-readobj -S --file-headers %t.o.AMDGCN_GFX12_GENERIC | FileCheck --check-prefixes=ELF-AMDGCN-ALL,ELF-AMDGCN-GFX12_GENERIC %s
|
||||
# RUN: obj2yaml %t.o.AMDGCN_GFX12_GENERIC | FileCheck --check-prefixes=YAML-AMDGCN-ALL,YAML-AMDGCN-GFX12_GENERIC %s
|
||||
|
||||
|
||||
# ELF-R600-ALL: Format: elf32-amdgpu
|
||||
# ELF-R600-ALL: Arch: r600
|
||||
@ -464,6 +468,9 @@
|
||||
# ELF-AMDGCN-GFX11_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC (0x54)
|
||||
# YAML-AMDGCN-GFX11_GENERIC: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC ]
|
||||
|
||||
# ELF-AMDGCN-GFX12_GENERIC: EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC (0x59)
|
||||
# YAML-AMDGCN-GFX12_GENERIC: Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC ]
|
||||
|
||||
# ELF-AMDGCN-ALL: ]
|
||||
|
||||
|
||||
|
@ -6,6 +6,11 @@ define amdgpu_kernel void @test_kernel() {
|
||||
;
|
||||
; ----------------------------------GFX12--------------------------------------
|
||||
;
|
||||
; RUN: llc -mtriple=amdgcn-amd-amdhsa --amdhsa-code-object-version=6 -mcpu=gfx12-generic -filetype=obj -O0 -o %t.o %s
|
||||
; RUN: llvm-objdump -D --arch-name=amdgcn -mllvm --amdhsa-code-object-version=6 --mcpu=gfx12-generic %t.o > %t-specify.txt
|
||||
; RUN: llvm-objdump -D -mllvm --amdhsa-code-object-version=6 %t.o > %t-detect.txt
|
||||
; RUN: diff %t-specify.txt %t-detect.txt
|
||||
;
|
||||
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1201 -filetype=obj -O0 -o %t.o %s
|
||||
; RUN: llvm-objdump -D --arch-name=amdgcn --mcpu=gfx1201 %t.o > %t-specify.txt
|
||||
; RUN: llvm-objdump -D %t.o > %t-detect.txt
|
||||
|
@ -439,6 +439,9 @@
|
||||
# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1201
|
||||
# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1201 -DFLAG_VALUE=0x4E
|
||||
|
||||
# RUN: yaml2obj %s -o %t -DABI_VERSION=4 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC
|
||||
# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=4 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC -DFLAG_VALUE=0x59
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
|
@ -1636,7 +1636,8 @@ const EnumEntry<unsigned> ElfHeaderMipsFlags[] = {
|
||||
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC, "gfx9-generic"), \
|
||||
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, "gfx10-1-generic"), \
|
||||
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC, "gfx10-3-generic"), \
|
||||
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC, "gfx11-generic")
|
||||
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC, "gfx11-generic"), \
|
||||
ENUM_ENT(EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC, "gfx12-generic")
|
||||
// clang-format on
|
||||
|
||||
const EnumEntry<unsigned> ElfHeaderAMDGPUFlagsABIVersion3[] = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user