[llvm] 5f2135d - AMDGPU: Really delete AMDGPUAnnotateKernelFeatures (#145136)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 21 01:25:33 PDT 2025
Author: Matt Arsenault
Date: 2025-06-21T17:25:30+09:00
New Revision: 5f2135df171e96217dc9581d358f467eb2fc067b
URL: https://github.com/llvm/llvm-project/commit/5f2135df171e96217dc9581d358f467eb2fc067b
DIFF: https://github.com/llvm/llvm-project/commit/5f2135df171e96217dc9581d358f467eb2fc067b.diff
LOG: AMDGPU: Really delete AMDGPUAnnotateKernelFeatures (#145136)
Added:
Modified:
llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
llvm/lib/Target/AMDGPU/CMakeLists.txt
llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn
Removed:
llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
deleted file mode 100644
index 9c9fa5c6e2f0f..0000000000000
--- a/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-//===- AMDGPUAnnotateKernelFeaturesPass.cpp -------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-/// \file This pass propagates the uniform-work-group-size attribute from
-/// kernels to leaf functions when possible. It also adds additional attributes
-/// to hint ABI lowering optimizations later.
-//
-//===----------------------------------------------------------------------===//
-
-#include "AMDGPU.h"
-#include "GCNSubtarget.h"
-#include "llvm/Analysis/CallGraph.h"
-#include "llvm/Analysis/CallGraphSCCPass.h"
-#include "llvm/CodeGen/TargetPassConfig.h"
-#include "llvm/Target/TargetMachine.h"
-
-#define DEBUG_TYPE "amdgpu-annotate-kernel-features"
-
-using namespace llvm;
-
-namespace {
-class AMDGPUAnnotateKernelFeatures : public CallGraphSCCPass {
-private:
- const TargetMachine *TM = nullptr;
-
- bool addFeatureAttributes(Function &F);
-
-public:
- static char ID;
-
- AMDGPUAnnotateKernelFeatures() : CallGraphSCCPass(ID) {}
-
- bool doInitialization(CallGraph &CG) override;
- bool runOnSCC(CallGraphSCC &SCC) override;
-
- StringRef getPassName() const override {
- return "AMDGPU Annotate Kernel Features";
- }
-
- void getAnalysisUsage(AnalysisUsage &AU) const override {
- AU.setPreservesAll();
- CallGraphSCCPass::getAnalysisUsage(AU);
- }
-};
-
-} // end anonymous namespace
-
-char AMDGPUAnnotateKernelFeatures::ID = 0;
-
-bool AMDGPUAnnotateKernelFeatures::addFeatureAttributes(Function &F) {
- bool HaveStackObjects = false;
- bool Changed = false;
- bool HaveCall = false;
- bool IsFunc = !AMDGPU::isEntryFunctionCC(F.getCallingConv());
-
- for (BasicBlock &BB : F) {
- for (Instruction &I : BB) {
- if (isa<AllocaInst>(I)) {
- HaveStackObjects = true;
- continue;
- }
-
- if (auto *CB = dyn_cast<CallBase>(&I)) {
- const Function *Callee =
- dyn_cast<Function>(CB->getCalledOperand()->stripPointerCasts());
-
- // Note the occurrence of indirect call.
- if (!Callee) {
- if (!CB->isInlineAsm())
- HaveCall = true;
-
- continue;
- }
-
- Intrinsic::ID IID = Callee->getIntrinsicID();
- if (IID == Intrinsic::not_intrinsic) {
- HaveCall = true;
- Changed = true;
- }
- }
- }
- }
-
- // TODO: We could refine this to captured pointers that could possibly be
- // accessed by flat instructions. For now this is mostly a poor way of
- // estimating whether there are calls before argument lowering.
- if (!IsFunc && HaveCall) {
- F.addFnAttr("amdgpu-calls");
- Changed = true;
- }
-
- if (HaveStackObjects) {
- F.addFnAttr("amdgpu-stack-objects");
- Changed = true;
- }
-
- return Changed;
-}
-
-bool AMDGPUAnnotateKernelFeatures::runOnSCC(CallGraphSCC &SCC) {
- bool Changed = false;
-
- for (CallGraphNode *I : SCC) {
- Function *F = I->getFunction();
- // Ignore functions with graphics calling conventions, these are currently
- // not allowed to have kernel arguments.
- if (!F || F->isDeclaration() || AMDGPU::isGraphics(F->getCallingConv()))
- continue;
- // Add feature attributes
- Changed |= addFeatureAttributes(*F);
- }
-
- return Changed;
-}
-
-bool AMDGPUAnnotateKernelFeatures::doInitialization(CallGraph &CG) {
- auto *TPC = getAnalysisIfAvailable<TargetPassConfig>();
- if (!TPC)
- report_fatal_error("TargetMachine is required");
-
- TM = &TPC->getTM<TargetMachine>();
- return false;
-}
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index 1ea7dd01d15c0..c28f407391c11 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -2073,9 +2073,6 @@ void AMDGPUCodeGenPassBuilder::addIRPasses(AddIRPass &addPass) const {
}
void AMDGPUCodeGenPassBuilder::addCodeGenPrepare(AddIRPass &addPass) const {
- // AMDGPUAnnotateKernelFeaturesPass is missing here, but it will hopefully be
- // deleted soon.
-
if (TM.getOptLevel() > CodeGenOptLevel::None)
addPass(AMDGPUPreloadKernelArgumentsPass(TM));
diff --git a/llvm/lib/Target/AMDGPU/CMakeLists.txt b/llvm/lib/Target/AMDGPU/CMakeLists.txt
index c6d70ee39202e..928a5001e0c98 100644
--- a/llvm/lib/Target/AMDGPU/CMakeLists.txt
+++ b/llvm/lib/Target/AMDGPU/CMakeLists.txt
@@ -43,7 +43,6 @@ add_public_tablegen_target(InstCombineTableGen)
add_llvm_target(AMDGPUCodeGen
AMDGPUAliasAnalysis.cpp
AMDGPUAlwaysInlinePass.cpp
- AMDGPUAnnotateKernelFeatures.cpp
AMDGPUAnnotateUniformValues.cpp
AMDGPUArgumentUsageInfo.cpp
AMDGPUAsanInstrumentation.cpp
diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn
index facdde20454de..628e544a687e5 100644
--- a/llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn
@@ -131,7 +131,6 @@ static_library("LLVMAMDGPUCodeGen") {
sources = [
"AMDGPUAliasAnalysis.cpp",
"AMDGPUAlwaysInlinePass.cpp",
- "AMDGPUAnnotateKernelFeatures.cpp",
"AMDGPUAnnotateUniformValues.cpp",
"AMDGPUArgumentUsageInfo.cpp",
"AMDGPUAsanInstrumentation.cpp",
More information about the llvm-commits
mailing list