[llvm] AMDGPU: Clean up print handling of AMDGPUTargetID (PR #184643)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 4 08:45:52 PST 2026


https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/184643

Provide print to raw_ostream method and use it where applicable.

>From 94fa697b003e8684f8c6f9bc5d1f15925971d85b Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Wed, 4 Mar 2026 12:24:15 +0100
Subject: [PATCH] AMDGPU: Clean up print handling of AMDGPUTargetID

Provide print to raw_ostream method and use it where applicable.
---
 .../AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp     | 11 ++++++++---
 llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp      | 12 +++++++-----
 llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h        |  9 +++++++++
 3 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
index 445f306bab40a..fae61302ebd90 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
@@ -247,7 +247,7 @@ void AMDGPUTargetAsmStreamer::finish() {
 }
 
 void AMDGPUTargetAsmStreamer::EmitDirectiveAMDGCNTarget() {
-  OS << "\t.amdgcn_target \"" << getTargetID()->toString() << "\"\n";
+  OS << "\t.amdgcn_target \"" << *getTargetID() << "\"\n";
 }
 
 void AMDGPUTargetAsmStreamer::EmitDirectiveAMDHSACodeObjectVersion(
@@ -327,7 +327,7 @@ void AMDGPUTargetAsmStreamer::EmitMCResourceMaximums(
 }
 
 bool AMDGPUTargetAsmStreamer::EmitISAVersion() {
-  OS << "\t.amd_amdgpu_isa \"" << getTargetID()->toString() << "\"\n";
+  OS << "\t.amd_amdgpu_isa \"" << getTargetID() << "\"\n";
   return true;
 }
 
@@ -930,7 +930,12 @@ bool AMDGPUTargetELFStreamer::EmitISAVersion() {
   EmitNote(ElfNote::NoteNameV2, DescSZ, ELF::NT_AMD_HSA_ISA_NAME,
            [&](MCELFStreamer &OS) {
              OS.emitLabel(DescBegin);
-             OS.emitBytes(getTargetID()->toString());
+
+             SmallString<32> Str;
+             raw_svector_ostream StrOS(Str);
+             StrOS << *getTargetID();
+
+             OS.emitBytes(StrOS.str());
              OS.emitLabel(DescEnd);
            });
   return true;
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
index d862805a60027..32cfcb283def8 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
@@ -1131,10 +1131,7 @@ void AMDGPUTargetID::setTargetIDFromTargetIDStream(StringRef TargetID) {
   }
 }
 
-std::string AMDGPUTargetID::toString() const {
-  std::string StringRep;
-  raw_string_ostream StreamRep(StringRep);
-
+void AMDGPUTargetID::print(raw_ostream &StreamRep) const {
   const Triple &TargetTriple = STI.getTargetTriple();
   auto Version = getIsaVersion(STI.getCPU());
 
@@ -1168,8 +1165,13 @@ std::string AMDGPUTargetID::toString() const {
   }
 
   StreamRep << Processor << Features;
+}
 
-  return StringRep;
+std::string AMDGPUTargetID::toString() const {
+  std::string Str;
+  raw_string_ostream OS(Str);
+  OS << *this;
+  return Str;
 }
 
 unsigned getWavefrontSize(const MCSubtargetInfo *STI) {
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
index 1a382de54d20e..b3d20777ccfcf 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
@@ -217,10 +217,19 @@ class AMDGPUTargetID {
   void setTargetIDFromFeaturesString(StringRef FS);
   void setTargetIDFromTargetIDStream(StringRef TargetID);
 
+  /// Write string representation to \p OS
+  void print(raw_ostream &OS) const;
+
   /// \returns String representation of an object.
   std::string toString() const;
 };
 
+inline raw_ostream &operator<<(raw_ostream &OS,
+                               const AMDGPUTargetID &TargetID) {
+  TargetID.print(OS);
+  return OS;
+}
+
 /// \returns Wavefront size for given subtarget \p STI.
 unsigned getWavefrontSize(const MCSubtargetInfo *STI);
 



More information about the llvm-commits mailing list