[llvm] AMDGPU: Prefer getting the triple from the module over the TargetMachine (PR #206055)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 26 05:52:24 PDT 2026
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/206055
None
>From 5b6691d2a40d2506e24283cfcb409f3558a60024 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Fri, 26 Jun 2026 14:44:28 +0200
Subject: [PATCH] AMDGPU: Prefer getting the triple from the module over the
TargetMachine
---
llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp | 21 ++++++++++++---------
llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp | 4 ++--
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
index 3d191125aac47..53d45d97ab527 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -144,19 +144,19 @@ void AMDGPUAsmPrinter::initTargetStreamer(Module &M) {
if (getTargetStreamer() && !getTargetStreamer()->getTargetID())
initializeTargetID(M);
- if (TM.getTargetTriple().getOS() != Triple::AMDHSA &&
- TM.getTargetTriple().getOS() != Triple::AMDPAL)
+ const Triple &TT = M.getTargetTriple();
+ if (TT.getOS() != Triple::AMDHSA && TT.getOS() != Triple::AMDPAL)
return;
getTargetStreamer()->EmitDirectiveAMDGCNTarget();
- if (TM.getTargetTriple().getOS() == Triple::AMDHSA) {
+ if (TT.getOS() == Triple::AMDHSA) {
getTargetStreamer()->EmitDirectiveAMDHSACodeObjectVersion(
CodeObjectVersion);
HSAMetadataStream->begin(M, *getTargetStreamer()->getTargetID());
}
- if (TM.getTargetTriple().getOS() == Triple::AMDPAL)
+ if (TT.getOS() == Triple::AMDPAL)
getTargetStreamer()->getPALMetadata()->readFromIR(M);
}
@@ -165,12 +165,13 @@ void AMDGPUAsmPrinter::emitEndOfAsmFile(Module &M) {
if (!IsTargetStreamerInitialized)
initTargetStreamer(M);
- if (TM.getTargetTriple().getOS() != Triple::AMDHSA)
+ const Triple &TT = M.getTargetTriple();
+ if (TT.getOS() != Triple::AMDHSA)
getTargetStreamer()->EmitISAVersion();
// Emit HSA Metadata (NT_AMD_AMDGPU_HSA_METADATA).
// Emit HSA Metadata (NT_AMD_HSA_METADATA).
- if (TM.getTargetTriple().getOS() == Triple::AMDHSA) {
+ if (TT.getOS() == Triple::AMDHSA) {
HSAMetadataStream->end();
bool Success = HSAMetadataStream->emitTo(*getTargetStreamer());
(void)Success;
@@ -399,9 +400,10 @@ void AMDGPUAsmPrinter::emitGlobalVariable(const GlobalVariable *GV) {
}
bool AMDGPUAsmPrinter::doInitialization(Module &M) {
+ const llvm::Triple &TT = M.getTargetTriple();
CodeObjectVersion = AMDGPU::getAMDHSACodeObjectVersion(M);
- if (TM.getTargetTriple().getOS() == Triple::AMDHSA) {
+ if (TT.getOS() == Triple::AMDHSA) {
switch (CodeObjectVersion) {
case AMDGPU::AMDHSA_COV4:
HSAMetadataStream = std::make_unique<HSAMD::MetadataStreamerMsgPackV4>();
@@ -713,14 +715,15 @@ void AMDGPUAsmPrinter::emitAMDGPUInfo(Module &M) {
}
bool AMDGPUAsmPrinter::doFinalization(Module &M) {
+ const Triple &TT = M.getTargetTriple();
+
// Pad with s_code_end to help tools and guard against instruction prefetch
// causing stale data in caches. Arguably this should be done by the linker,
// which is why this isn't done for Mesa.
// Don't do it if there is no code.
const MCSubtargetInfo &STI = *getGlobalSTI();
if ((AMDGPU::isGFX10Plus(STI) || AMDGPU::isGFX90A(STI)) &&
- (STI.getTargetTriple().getOS() == Triple::AMDHSA ||
- STI.getTargetTriple().getOS() == Triple::AMDPAL)) {
+ (TT.getOS() == Triple::AMDHSA || TT.getOS() == Triple::AMDPAL)) {
MCSection *TextSect = getObjFileLowering().getTextSection();
if (TextSect->hasInstructions()) {
OutStreamer->switchSection(TextSect);
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp b/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
index ccd8066c63fd6..3be6e230f7bf4 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
@@ -1186,8 +1186,8 @@ void AMDGPUSwLowerLDS::initAsanInfo() {
uint64_t Offset;
int Scale;
bool OrShadowOffset;
- llvm::getAddressSanitizerParams(AMDGPUTM.getTargetTriple(), LongSize, false,
- &Offset, &Scale, &OrShadowOffset);
+ llvm::getAddressSanitizerParams(M.getTargetTriple(), LongSize, false, &Offset,
+ &Scale, &OrShadowOffset);
AsanInfo.Scale = Scale;
AsanInfo.Offset = Offset;
}
More information about the llvm-commits
mailing list