llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang <details> <summary>Changes</summary> V3 has been deprecated for a while as well, so it can safely be removed like V2 was removed. - [Clang] Set minimum code object version to 4 - [lld] Fix tests using code object v3 - Remove code object V3 from the AMDGPU backend, and delete or port v3 tests to v4. - Update docs to make it clear V3 can no longer be emitted. --- Patch is 148.97 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/67118.diff 41 Files Affected: - (modified) clang/include/clang/Basic/TargetOptions.h (+1-1) - (modified) clang/include/clang/Driver/Options.td (+2-2) - (modified) clang/lib/Driver/ToolChains/CommonArgs.cpp (+1-1) - (modified) clang/test/CodeGenCUDA/amdgpu-code-object-version.cu (-4) - (modified) clang/test/Driver/hip-code-object-version.hip (+7-15) - (modified) clang/test/Driver/hip-device-libs.hip (-6) - (modified) lld/test/ELF/amdgpu-abi-version.s (-8) - (modified) llvm/docs/AMDGPUUsage.rst (+3-6) - (modified) llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp (-3) - (modified) llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp (+31-49) - (modified) llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.h (+6-16) - (modified) llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp (-5) - (modified) llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp (-1) - (modified) llvm/lib/Target/AMDGPU/SIISelLowering.cpp (-5) - (modified) llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp (-21) - (modified) llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h (-4) - (modified) llvm/test/CodeGen/AMDGPU/GlobalISel/implicit-kernarg-backend-usage-global-isel.ll (-162) - (removed) llvm/test/CodeGen/AMDGPU/attr-amdgpu-flat-work-group-size-v3.ll (-148) - (removed) llvm/test/CodeGen/AMDGPU/directive-amdgcn-target-v3.ll (-168) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-enqueue-kernel-.ll (+2-2) - (modified) llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ctor-dtor-list.ll (+1-1) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-from-llvm-ir-full.ll (+2-2) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-hidden-args-v4.ll (+2-2) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-hostcall-present-asan.ll (+2-2) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-hostcall-v4.ll (+1-1) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-images.ll (+2-2) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-invalid-ocl-version-1.ll (+2-2) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-invalid-ocl-version-3.ll (+2-2) - (renamed) llvm/test/CodeGen/AMDGPU/hsa-metadata-kernel-code-props.ll (+2-2) - (modified) llvm/test/CodeGen/AMDGPU/implicit-kernarg-backend-usage.ll (-157) - (modified) llvm/test/CodeGen/AMDGPU/kernarg-size.ll (-9) - (modified) llvm/test/CodeGen/AMDGPU/stack-realign-kernel.ll (+1-1) - (modified) llvm/test/CodeGen/AMDGPU/trap-abis.ll (+171-346) - (renamed) llvm/test/MC/AMDGPU/hsa-diag-v4.s (+9-9) - (removed) llvm/test/MC/AMDGPU/hsa-gfx10-v3.s (-226) - (removed) llvm/test/MC/AMDGPU/hsa-gfx11-v3.s (-213) - (removed) llvm/test/MC/AMDGPU/hsa-gfx90a-v3.s (-184) - (removed) llvm/test/MC/AMDGPU/hsa-gfx940-v3.s (-178) - (removed) llvm/test/MC/AMDGPU/hsa-v3.s (-304) - (modified) llvm/test/MC/AMDGPU/user-sgpr-count-diag.s (+1-1) - (modified) llvm/test/MC/AMDGPU/user-sgpr-count.s (+3-3) ``````````diff diff --git a/clang/include/clang/Basic/TargetOptions.h b/clang/include/clang/Basic/TargetOptions.h index 0dc324ff9ed43d9..cf18c9aba6cf9a6 100644 --- a/clang/include/clang/Basic/TargetOptions.h +++ b/clang/include/clang/Basic/TargetOptions.h @@ -83,7 +83,7 @@ class TargetOptions { enum CodeObjectVersionKind { COV_None, COV_2 = 200, // Unsupported. - COV_3 = 300, + COV_3 = 300, // Unsupported. COV_4 = 400, COV_5 = 500, }; diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 0f93479170d73bc..28a6334300f3894 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4624,9 +4624,9 @@ defm amdgpu_ieee : BoolOption<"m", "amdgpu-ieee", def mcode_object_version_EQ : Joined<["-"], "mcode-object-version=">, Group<m_Group>, HelpText<"Specify code object ABI version. Defaults to 4. (AMDGPU only)">, Visibility<[ClangOption, CC1Option]>, - Values<"none,3,4,5">, + Values<"none,4,5">, NormalizedValuesScope<"TargetOptions">, - NormalizedValues<["COV_None", "COV_3", "COV_4", "COV_5"]>, + NormalizedValues<["COV_None", "COV_4", "COV_5"]>, MarshallingInfoEnum<TargetOpts<"CodeObjectVersion">, "COV_4">; defm cumode : SimpleMFlag<"cumode", diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 6041ef4aeb673ef..7fe6f7df5b60d86 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -2323,7 +2323,7 @@ getAMDGPUCodeObjectArgument(const Driver &D, const llvm::opt::ArgList &Args) { void tools::checkAMDGPUCodeObjectVersion(const Driver &D, const llvm::opt::ArgList &Args) { - const unsigned MinCodeObjVer = 3; + const unsigned MinCodeObjVer = 4; const unsigned MaxCodeObjVer = 5; if (auto *CodeObjArg = getAMDGPUCodeObjectArgument(D, Args)) { diff --git a/clang/test/CodeGenCUDA/amdgpu-code-object-version.cu b/clang/test/CodeGenCUDA/amdgpu-code-object-version.cu index 0ddd63faf46f28f..ff5deaf9ab850d2 100644 --- a/clang/test/CodeGenCUDA/amdgpu-code-object-version.cu +++ b/clang/test/CodeGenCUDA/amdgpu-code-object-version.cu @@ -3,9 +3,6 @@ // RUN: %clang_cc1 -fcuda-is-device -triple amdgcn-amd-amdhsa -emit-llvm \ // RUN: -o - %s | FileCheck %s -check-prefix=V4 -// RUN: %clang_cc1 -fcuda-is-device -triple amdgcn-amd-amdhsa -emit-llvm \ -// RUN: -mcode-object-version=3 -o - %s | FileCheck -check-prefix=V3 %s - // RUN: %clang_cc1 -fcuda-is-device -triple amdgcn-amd-amdhsa -emit-llvm \ // RUN: -mcode-object-version=4 -o - %s | FileCheck -check-prefix=V4 %s @@ -18,7 +15,6 @@ // RUN: not %clang_cc1 -fcuda-is-device -triple amdgcn-amd-amdhsa -emit-llvm \ // RUN: -mcode-object-version=4.1 -o - %s 2>&1| FileCheck %s -check-prefix=INV -// V3: !{{.*}} = !{i32 1, !"amdgpu_code_object_version", i32 300} // V4: !{{.*}} = !{i32 1, !"amdgpu_code_object_version", i32 400} // V5: !{{.*}} = !{i32 1, !"amdgpu_code_object_version", i32 500} // NONE-NOT: !{{.*}} = !{i32 1, !"amdgpu_code_object_version", diff --git a/clang/test/Driver/hip-code-object-version.hip b/clang/test/Driver/hip-code-object-version.hip index 33559b6576e7d30..af5f9a3da21dfd3 100644 --- a/clang/test/Driver/hip-code-object-version.hip +++ b/clang/test/Driver/hip-code-object-version.hip @@ -1,20 +1,5 @@ // REQUIRES: amdgpu-registered-target -// Check bundle ID for code object v3. - -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: -mcode-object-version=3 \ -// RUN: --offload-arch=gfx906 --rocm-path=%S/Inputs/rocm \ -// RUN: %s 2>&1 | FileCheck -check-prefix=V3 %s - -// RUN: not %clang -### --target=x86_64-linux-gnu \ -// RUN: -mcode-object-version=4 -mcode-object-version=3 \ -// RUN: --offload-arch=gfx906 --rocm-path=%S/Inputs/rocm \ -// RUN: %s 2>&1 | FileCheck -check-prefix=V3 %s - -// V3: "-mcode-object-version=3" -// V3: "-mllvm" "--amdhsa-code-object-version=3" -// V3: "-targets=host-x86_64-unknown-linux,hip-amdgcn-amd-amdhsa--gfx906" // Check bundle ID for code object version 4. @@ -62,6 +47,13 @@ // INVALID_2: error: invalid integral value '2' in '-mcode-object-version=2' // INVALID_2-NOT: error: invalid integral value +// RUN: not %clang -### --target=x86_64-linux-gnu \ +// RUN: -mcode-object-version=3 \ +// RUN: --offload-arch=gfx906 --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck -check-prefix=INVALID_3 %s +// INVALID_3: error: invalid integral value '3' in '-mcode-object-version=3' +// INVALID_3-NOT: error: invalid integral value + // Check LLVM code object version option --amdhsa-code-object-version // is passed to -cc1 and -cc1as, and -mcode-object-version is passed // to -cc1 but not -cc1as. diff --git a/clang/test/Driver/hip-device-libs.hip b/clang/test/Driver/hip-device-libs.hip index 71d9554da696b42..6ac5778721ba5b7 100644 --- a/clang/test/Driver/hip-device-libs.hip +++ b/clang/test/Driver/hip-device-libs.hip @@ -168,12 +168,6 @@ // RUN: --rocm-path=%S/Inputs/rocm %S/Inputs/hip_multiple_inputs/b.hip \ // RUN: 2>&1 | FileCheck %s --check-prefixes=NOABI4 -// Test -mcode-object-version=3 -// RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=gfx900 \ -// RUN: -mcode-object-version=3 \ -// RUN: --rocm-path=%S/Inputs/rocm %S/Inputs/hip_multiple_inputs/b.hip \ -// RUN: 2>&1 | FileCheck %s --check-prefixes=ABI4 - // Test -mcode-object-version=4 // RUN: %clang -### --target=x86_64-linux-gnu --offload-arch=gfx900 \ // RUN: -mcode-object-version=4 \ diff --git a/lld/test/ELF/amdgpu-abi-version.s b/lld/test/ELF/amdgpu-abi-version.s index 455a52aec921092..72b67fdaeb1a1b6 100644 --- a/lld/test/ELF/amdgpu-abi-version.s +++ b/lld/test/ELF/amdgpu-abi-version.s @@ -1,11 +1,3 @@ -# REQUIRES: amdgpu -# RUN: llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=3 -filetype=obj %s -o %t.o -# RUN: ld.lld -shared %t.o -o %t.so -# RUN: llvm-readobj --file-headers %t.so | FileCheck --check-prefix=COV3 %s - -# COV3: OS/ABI: AMDGPU_HSA (0x40) -# COV3: ABIVersion: 1 - # RUN: llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=4 -filetype=obj %s -o %t.o # RUN: ld.lld -shared %t.o -o %t.so # RUN: llvm-readobj --file-headers %t.so | FileCheck --check-prefix=COV4 %s diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst index 8022816d7e616d3..ed9581ccc93dfac 100644 --- a/llvm/docs/AMDGPUUsage.rst +++ b/llvm/docs/AMDGPUUsage.rst @@ -1409,12 +1409,10 @@ The AMDGPU backend uses the following ELF header: object conforms: * ``ELFABIVERSION_AMDGPU_HSA_V2`` is used to specify the version of AMD HSA - runtime ABI for code object V2. Specify using the Clang option - ``-mcode-object-version=2``. + runtime ABI for code object V2. Can no longer be emitted by this version of LLVM. * ``ELFABIVERSION_AMDGPU_HSA_V3`` is used to specify the version of AMD HSA - runtime ABI for code object V3. Specify using the Clang option - ``-mcode-object-version=3``. + runtime ABI for code object V3. Can no longer be emitted by this version of LLVM. * ``ELFABIVERSION_AMDGPU_HSA_V4`` is used to specify the version of AMD HSA runtime ABI for code object V4. Specify using the Clang option @@ -3402,8 +3400,7 @@ Code Object V3 Metadata +++++++++++++++++++++++ .. warning:: - Code object V3 is not the default code object version emitted by this version - of LLVM. + Code object V3 generation is no longer supported by this version of LLVM. Code object V3 and above metadata is specified by the ``NT_AMDGPU_METADATA`` note record (see :ref:`amdgpu-note-records-v3-onwards`). diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp index b2360ce30fd6edb..a24b7b3c18259b5 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp @@ -321,9 +321,6 @@ bool AMDGPUAsmPrinter::doInitialization(Module &M) { if (TM.getTargetTriple().getOS() == Triple::AMDHSA) { switch (CodeObjectVersion) { - case AMDGPU::AMDHSA_COV3: - HSAMetadataStream.reset(new HSAMD::MetadataStreamerMsgPackV3()); - break; case AMDGPU::AMDHSA_COV4: HSAMetadataStream.reset(new HSAMD::MetadataStreamerMsgPackV4()); break; diff --git a/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp b/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp index 5060cd3aec581ce..74af47e4a6b6fa2 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp @@ -49,14 +49,14 @@ namespace AMDGPU { namespace HSAMD { //===----------------------------------------------------------------------===// -// HSAMetadataStreamerV3 +// HSAMetadataStreamerV4 //===----------------------------------------------------------------------===// -void MetadataStreamerMsgPackV3::dump(StringRef HSAMetadataString) const { +void MetadataStreamerMsgPackV4::dump(StringRef HSAMetadataString) const { errs() << "AMDGPU HSA Metadata:\n" << HSAMetadataString << '\n'; } -void MetadataStreamerMsgPackV3::verify(StringRef HSAMetadataString) const { +void MetadataStreamerMsgPackV4::verify(StringRef HSAMetadataString) const { errs() << "AMDGPU HSA Metadata Parser Test: "; msgpack::Document FromHSAMetadataString; @@ -78,7 +78,7 @@ void MetadataStreamerMsgPackV3::verify(StringRef HSAMetadataString) const { } std::optional<StringRef> -MetadataStreamerMsgPackV3::getAccessQualifier(StringRef AccQual) const { +MetadataStreamerMsgPackV4::getAccessQualifier(StringRef AccQual) const { return StringSwitch<std::optional<StringRef>>(AccQual) .Case("read_only", StringRef("read_only")) .Case("write_only", StringRef("write_only")) @@ -86,7 +86,7 @@ MetadataStreamerMsgPackV3::getAccessQualifier(StringRef AccQual) const { .Default(std::nullopt); } -std::optional<StringRef> MetadataStreamerMsgPackV3::getAddressSpaceQualifier( +std::optional<StringRef> MetadataStreamerMsgPackV4::getAddressSpaceQualifier( unsigned AddressSpace) const { switch (AddressSpace) { case AMDGPUAS::PRIVATE_ADDRESS: @@ -107,7 +107,7 @@ std::optional<StringRef> MetadataStreamerMsgPackV3::getAddressSpaceQualifier( } StringRef -MetadataStreamerMsgPackV3::getValueKind(Type *Ty, StringRef TypeQual, +MetadataStreamerMsgPackV4::getValueKind(Type *Ty, StringRef TypeQual, StringRef BaseTypeName) const { if (TypeQual.contains("pipe")) return "pipe"; @@ -134,7 +134,7 @@ MetadataStreamerMsgPackV3::getValueKind(Type *Ty, StringRef TypeQual, : "by_value"); } -std::string MetadataStreamerMsgPackV3::getTypeName(Type *Ty, +std::string MetadataStreamerMsgPackV4::getTypeName(Type *Ty, bool Signed) const { switch (Ty->getTypeID()) { case Type::IntegerTyID: { @@ -173,7 +173,7 @@ std::string MetadataStreamerMsgPackV3::getTypeName(Type *Ty, } msgpack::ArrayDocNode -MetadataStreamerMsgPackV3::getWorkGroupDimensions(MDNode *Node) const { +MetadataStreamerMsgPackV4::getWorkGroupDimensions(MDNode *Node) const { auto Dims = HSAMetadataDoc->getArrayNode(); if (Node->getNumOperands() != 3) return Dims; @@ -184,14 +184,20 @@ MetadataStreamerMsgPackV3::getWorkGroupDimensions(MDNode *Node) const { return Dims; } -void MetadataStreamerMsgPackV3::emitVersion() { +void MetadataStreamerMsgPackV4::emitVersion() { auto Version = HSAMetadataDoc->getArrayNode(); - Version.push_back(Version.getDocument()->getNode(VersionMajorV3)); - Version.push_back(Version.getDocument()->getNode(VersionMinorV3)); + Version.push_back(Version.getDocument()->getNode(VersionMajorV4)); + Version.push_back(Version.getDocument()->getNode(VersionMinorV4)); getRootMetadata("amdhsa.version") = Version; } -void MetadataStreamerMsgPackV3::emitPrintf(const Module &Mod) { +void MetadataStreamerMsgPackV4::emitTargetID( + const IsaInfo::AMDGPUTargetID &TargetID) { + getRootMetadata("amdhsa.target") = + HSAMetadataDoc->getNode(TargetID.toString(), /*Copy=*/true); +} + +void MetadataStreamerMsgPackV4::emitPrintf(const Module &Mod) { auto Node = Mod.getNamedMetadata("llvm.printf.fmts"); if (!Node) return; @@ -204,7 +210,7 @@ void MetadataStreamerMsgPackV3::emitPrintf(const Module &Mod) { getRootMetadata("amdhsa.printf") = Printf; } -void MetadataStreamerMsgPackV3::emitKernelLanguage(const Function &Func, +void MetadataStreamerMsgPackV4::emitKernelLanguage(const Function &Func, msgpack::MapDocNode Kern) { // TODO: What about other languages? auto Node = Func.getParent()->getNamedMetadata("opencl.ocl.version"); @@ -223,7 +229,7 @@ void MetadataStreamerMsgPackV3::emitKernelLanguage(const Function &Func, Kern[".language_version"] = LanguageVersion; } -void MetadataStreamerMsgPackV3::emitKernelAttrs(const Function &Func, +void MetadataStreamerMsgPackV4::emitKernelAttrs(const Function &Func, msgpack::MapDocNode Kern) { if (auto Node = Func.getMetadata("reqd_work_group_size")) @@ -248,7 +254,7 @@ void MetadataStreamerMsgPackV3::emitKernelAttrs(const Function &Func, Kern[".kind"] = Kern.getDocument()->getNode("fini"); } -void MetadataStreamerMsgPackV3::emitKernelArgs(const MachineFunction &MF, +void MetadataStreamerMsgPackV4::emitKernelArgs(const MachineFunction &MF, msgpack::MapDocNode Kern) { auto &Func = MF.getFunction(); unsigned Offset = 0; @@ -261,7 +267,7 @@ void MetadataStreamerMsgPackV3::emitKernelArgs(const MachineFunction &MF, Kern[".args"] = Args; } -void MetadataStreamerMsgPackV3::emitKernelArg(const Argument &Arg, +void MetadataStreamerMsgPackV4::emitKernelArg(const Argument &Arg, unsigned &Offset, msgpack::ArrayDocNode Args) { auto Func = Arg.getParent(); @@ -326,7 +332,7 @@ void MetadataStreamerMsgPackV3::emitKernelArg(const Argument &Arg, AccQual, TypeQual); } -void MetadataStreamerMsgPackV3::emitKernelArg( +void MetadataStreamerMsgPackV4::emitKernelArg( const DataLayout &DL, Type *Ty, Align Alignment, StringRef ValueKind, unsigned &Offset, msgpack::ArrayDocNode Args, MaybeAlign PointeeAlign, StringRef Name, StringRef TypeName, StringRef BaseTypeName, @@ -375,7 +381,7 @@ void MetadataStreamerMsgPackV3::emitKernelArg( Args.push_back(Arg); } -void MetadataStreamerMsgPackV3::emitHiddenKernelArgs( +void MetadataStreamerMsgPackV4::emitHiddenKernelArgs( const MachineFunction &MF, unsigned &Offset, msgpack::ArrayDocNode Args) { auto &Func = MF.getFunction(); const GCNSubtarget &ST = MF.getSubtarget<GCNSubtarget>(); @@ -448,7 +454,7 @@ void MetadataStreamerMsgPackV3::emitHiddenKernelArgs( } } -msgpack::MapDocNode MetadataStreamerMsgPackV3::getHSAKernelProps( +msgpack::MapDocNode MetadataStreamerMsgPackV4::getHSAKernelProps( const MachineFunction &MF, const SIProgramInfo &ProgramInfo, unsigned CodeObjectVersion) const { const GCNSubtarget &STM = MF.getSubtarget<GCNSubtarget>(); @@ -495,18 +501,19 @@ msgpack::MapDocNode MetadataStreamerMsgPackV3::getHSAKernelProps( return Kern; } -bool MetadataStreamerMsgPackV3::emitTo(AMDGPUTargetStreamer &TargetStreamer) { +bool MetadataStreamerMsgPackV4::emitTo(AMDGPUTargetStreamer &TargetStreamer) { return TargetStreamer.EmitHSAMetadata(*HSAMetadataDoc, true); } -void MetadataStreamerMsgPackV3::begin(const Module &Mod, +void MetadataStreamerMsgPackV4::begin(const Module &Mod, const IsaInfo::AMDGPUTargetID &TargetID) { emitVersion(); + emitTargetID(TargetID); emitPrintf(Mod); getRootMetadata("amdhsa.kernels") = HSAMetadataDoc->getArrayNode(); } -void MetadataStreamerMsgPackV3::end() { +void MetadataStreamerMsgPackV4::end() { std::string HSAMetadataString; raw_string_ostream StrOS(HSAMetadataString); HSAMetadataDoc->toYAML(StrOS); @@ -517,7 +524,7 @@ void MetadataStreamerMsgPackV3::end() { verify(StrOS.str()); } -void MetadataStreamerMsgPackV3::emitKernel(const MachineFunction &MF, +void MetadataStreamerMsgPackV4::emitKernel(const MachineFunction &MF, const SIProgramInfo &ProgramInfo) { auto &Func = MF.getFunction(); if (Func.getCallingConv() != CallingConv::AMDGPU_KERNEL && @@ -542,31 +549,6 @@ void MetadataStreamerMsgPackV3::emitKernel(const MachineFunction &MF, Kernels.push_back(Kern); } -//===----------------------------------------------------------------------===// -// HSAMetadataStreamerV4 -//===----------------------------------------------------------------------===// - -void MetadataStreamerMsgPackV4::emitVersion() { - auto Version = HSAMetadataDoc->getArrayNode(); - Version.push_back(Version.getDocument()->getNode(VersionMajorV4)); - Version.push_back(Version.getDocument()->getNode(VersionMinorV4)); - getRootMetadata("amdhsa.version") = Version; -} - -void MetadataStreamerMsgPackV4::emitTargetID( - const IsaInfo::AMDGPUTargetID &TargetID) { - getRootMetadata("amdhsa.target") = - HSAMetadataDoc->getNode(TargetID.toString(), /*Copy=*/true); -} - -void MetadataStreamerMsgPackV4::begin(const Module &Mod, - const IsaInfo::AMDGPUTargetID &TargetID) { - emitVersion(); - emitTargetID(TargetID); - emitPrintf(Mod); - getRootMetadata("amdhsa.kernels") = HSAMetadataDoc->getArrayNode(); -} - //===----------------------------------------------------------------------===// // HSAMetadataStreamerV5 //===----------------------------------------------------------------------===// @@ -680,7 +662,7 @@ void MetadataStreamerMsgPackV5::emitHiddenKernelArgs( void MetadataStreamerMsgPackV5::emitKernelAttrs(const Function &Func, msgpack::MapDocNode Kern) { - MetadataStreamerMsgPackV3::emitKernelAttrs(Func, Kern); + MetadataStreamerMsgPackV4::emitKernelAttrs(Func, Kern); if (Func.getFnAttribute("uniform-work-group-size").getValueAsBool()) Kern[".uniform_work_group_size"] = Kern.getDocument()->getNode(1); diff --git a/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.h b/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.h index d2b3b8917ce0f70..370cd39e869e9c8 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.h @@ -62,7 +62,7 @@ class MetadataStreamer { msgpack::MapDocNode Kern) = 0; }; -class MetadataStreamerMsgPackV3 : public MetadataStreamer { +class MetadataStreamerMsgPackV4 : public MetadataStreamer { protected: std::unique_ptr<msgpack::Document> HSAMetadataDoc = std::make_unique<msgpack::Document>(); @@ -89,6 +89,8 @@ class MetadataStreamerMsgPackV3 : public MetadataStreamer { void emitVersion() override; + void emitTargetID(const IsaInfo::AMDGPUTargetID &TargetID); + void emitPrintf(const Module &Mod); void emitKernelLanguage(const Function &Func, msgpack::MapDocNode Kern); @@ -119,9 +121,10 @@ class MetadataStreamerMsgPackV3 : public MetadataStreamer { return HSAMetadataDoc->getRoot(); } + public: - MetadataStreamerMsgPackV3() = default; - ~MetadataStreamerMsgPackV3() = default; + MetadataStreamerMsgPackV4() = default; + ~MetadataStreamerMsgPackV4() = default; bool emitTo(AMDGPUTargetStreamer &TargetStreamer) override; @@ -134,19 +137,6 @@ class MetadataStreamerMsgPackV3 : public MetadataStreamer { const SIProgramInfo &ProgramInfo) override; }; -class MetadataStreamerMsgPackV4 : public MetadataStreamerMsgPackV3 { -protected: - void emitVersion() override; - void emitTargetID(const IsaInfo::AMDGPUTargetID &TargetID); - -public: - MetadataStreamerMsgPackV4() = default; - ~MetadataStreamerMsgPackV4() = default; - - void begin(const Module &Mod, - const IsaInfo::AMDGPUTargetID &TargetID) override; -}; - class MetadataStreamerMsgPackV5 final : public MetadataStreamerMsgPackV4 { protected: void emitVersion() override; diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp index db226a302900160..dda77dcaea0b7a7 100644 --- a/llvm/lib/Target/AM... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/67118 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits