[llvm] [AMDGPU] Automatic conversion from wave32 to wave64 (PR #137376)

via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 25 11:00:35 PDT 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h,cpp -- llvm/lib/Target/AMDGPU/SIConvertWaveSize.cpp llvm/lib/Target/AMDGPU/SIConvertWaveSize.h llvm/lib/Target/AMDGPU/AMDGPU.h llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index 5be1640fd..10af75800 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -42,9 +42,9 @@
 #include "GCNVOPDUtils.h"
 #include "R600.h"
 #include "R600TargetMachine.h"
+#include "SIConvertWaveSize.h"
 #include "SIFixSGPRCopies.h"
 #include "SIFixVGPRCopies.h"
-#include "SIConvertWaveSize.h"
 #include "SIFoldOperands.h"
 #include "SIFormMemoryClauses.h"
 #include "SILoadStoreOptimizer.h"
diff --git a/llvm/lib/Target/AMDGPU/SIConvertWaveSize.cpp b/llvm/lib/Target/AMDGPU/SIConvertWaveSize.cpp
index 4f5b83900..c62277a2b 100644
--- a/llvm/lib/Target/AMDGPU/SIConvertWaveSize.cpp
+++ b/llvm/lib/Target/AMDGPU/SIConvertWaveSize.cpp
@@ -102,7 +102,8 @@ void printFunctionAttributes(const Function &F) {
 }
 
 bool SIConvertWaveSize::run(Function &F) {
-  LLVM_DEBUG(dbgs() << "Running SIConvertWaveSize on function: " << F.getName() << "\n");
+  LLVM_DEBUG(dbgs() << "Running SIConvertWaveSize on function: " << F.getName()
+                    << "\n");
   LLVM_DEBUG(printFunctionAttributes(F));
 
   const GCNSubtarget &ST = TM->getSubtarget<GCNSubtarget>(F);
@@ -116,7 +117,8 @@ bool SIConvertWaveSize::run(Function &F) {
   // Check if the kernel is wave32
   if (F.hasFnAttribute("target-features")) {
     if (!F.getFnAttribute("target-features")
-            .getValueAsString().contains("wavefrontsize32")) {
+             .getValueAsString()
+             .contains("wavefrontsize32")) {
       LLVM_DEBUG(dbgs() << "SIConvertWaveSize: Kernel is not wave32.\n");
       return false;
     }
@@ -164,17 +166,16 @@ bool SIConvertWaveSize::run(Function &F) {
           // assuming readlane/readfirstlane or any cross-lane/DPP
           // operations have "let isConvergent = 1" in IntrinsicsAMDGPU.td
           if (Callee->isIntrinsic()) {
-              if (Callee->hasFnAttribute(Attribute::Convergent)) {
-                if (Callee->getIntrinsicID() != Intrinsic::amdgcn_s_barrier) {
-                  // TODO: what else should go in a "white list" ?
-                  // Intrinsic::amdgcn_s_barrier_wavefront ?
-                  // Intrinsic::amdgcn_s_barrier_signal ?
-                  LLVM_DEBUG(dbgs()
-                             << "SIConvertWaveSize: Convergent intrinsic "
-                             << Callee->getName() << " detected.\n");
-                  return false;
-                }
+            if (Callee->hasFnAttribute(Attribute::Convergent)) {
+              if (Callee->getIntrinsicID() != Intrinsic::amdgcn_s_barrier) {
+                // TODO: what else should go in a "white list" ?
+                // Intrinsic::amdgcn_s_barrier_wavefront ?
+                // Intrinsic::amdgcn_s_barrier_signal ?
+                LLVM_DEBUG(dbgs() << "SIConvertWaveSize: Convergent intrinsic "
+                                  << Callee->getName() << " detected.\n");
+                return false;
               }
+            }
 
             if (Callee->getIntrinsicID() == Intrinsic::read_register) {
               if (const auto *MDVal =
@@ -269,7 +270,7 @@ bool SIConvertWaveSize::run(Function &F) {
     }
 
   return Changed;
-  }
+}
 
 bool SIConvertWaveSize::changeWaveSizeAttr(Function *F) {
   auto Attr = F->getFnAttribute("target-features");
@@ -278,7 +279,8 @@ bool SIConvertWaveSize::changeWaveSizeAttr(Function *F) {
     size_t Pos = AttrStr.find("+wavefrontsize32");
     if (Pos != StringRef::npos) {
       // Remove the "+wavefrontsize32" attribute.
-      std::string NewBegin = AttrStr.substr(0, Pos).str().append("+wavefrontsize64");
+      std::string NewBegin =
+          AttrStr.substr(0, Pos).str().append("+wavefrontsize64");
       std::string End = AttrStr.substr(Pos + strlen("+wavefrontsize32")).str();
       std::string NewAttrStr = NewBegin + End;
       // Add the "+wavefrontsize64" attribute.
@@ -294,8 +296,8 @@ bool SIConvertWaveSize::changeWaveSizeAttr(Function *F) {
   return false;
 }
 
-INITIALIZE_PASS_BEGIN(SIConvertWaveSizeLegacy, DEBUG_TYPE, "SI convert wave size",
-                      false, false)
+INITIALIZE_PASS_BEGIN(SIConvertWaveSizeLegacy, DEBUG_TYPE,
+                      "SI convert wave size", false, false)
 INITIALIZE_PASS_DEPENDENCY(LoopInfoWrapperPass)
 INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass)
 INITIALIZE_PASS_END(SIConvertWaveSizeLegacy, DEBUG_TYPE, "SI convert wave size",
@@ -309,9 +311,9 @@ FunctionPass *llvm::createSIConvertWaveSizeLegacyPass(const TargetMachine *TM) {
   return new SIConvertWaveSizeLegacy(TM);
 }
 
-PreservedAnalyses SIConvertWaveSizePass::run(
-    Function &F, FunctionAnalysisManager &FAM) {
-      auto &LI = FAM.getResult<LoopAnalysis>(F);
+PreservedAnalyses SIConvertWaveSizePass::run(Function &F,
+                                             FunctionAnalysisManager &FAM) {
+  auto &LI = FAM.getResult<LoopAnalysis>(F);
   auto &SE = FAM.getResult<ScalarEvolutionAnalysis>(F);
   auto &TTI = FAM.getResult<TargetIRAnalysis>(F);
 
diff --git a/llvm/lib/Target/AMDGPU/SIConvertWaveSize.h b/llvm/lib/Target/AMDGPU/SIConvertWaveSize.h
index 78b8365ed..ddd5a8c63 100644
--- a/llvm/lib/Target/AMDGPU/SIConvertWaveSize.h
+++ b/llvm/lib/Target/AMDGPU/SIConvertWaveSize.h
@@ -1,4 +1,5 @@
-//===- SIConvertWaveSize.h ----------------------------------------*- C++- *-===//
+//===- SIConvertWaveSize.h ----------------------------------------*- C++-
+//*-===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -20,8 +21,7 @@ class SIConvertWaveSizePass : public PassInfoMixin<SIConvertWaveSizePass> {
   const TargetMachine *TM;
 
 public:
-  SIConvertWaveSizePass(const TargetMachine &TM)
-      : TM(&TM) {}
+  SIConvertWaveSizePass(const TargetMachine &TM) : TM(&TM) {}
   PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);
 };
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/137376


More information about the llvm-commits mailing list