[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