Skip to content

Commit 10fd5b9

Browse files
authored
[NVPTX] Auto-Upgrade !"align" metadata on return values to stackalign (#131726)
This commit follows up 0191307 by auto-upgrading !"align" metadata on return values to stackalign. This allows us to remove all logic to check the metadata from NVPTXUtilities.
1 parent a76f678 commit 10fd5b9

File tree

4 files changed

+5
-26
lines changed

4 files changed

+5
-26
lines changed

llvm/lib/IR/AutoUpgrade.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5083,9 +5083,6 @@ bool static upgradeSingleNVVMAnnotation(GlobalValue *GV, StringRef K,
50835083
mdconst::extract<ConstantInt>(V)->getZExtValue();
50845084
const unsigned Idx = (AlignIdxValuePair >> 16);
50855085
const Align StackAlign = Align(AlignIdxValuePair & 0xFFFF);
5086-
// TODO: Skip adding the stackalign attribute for returns, for now.
5087-
if (!Idx)
5088-
return false;
50895086
cast<Function>(GV)->addAttributeAtIndex(
50905087
Idx, Attribute::getWithStackAlignment(GV->getContext(), StackAlign));
50915088
return true;

llvm/lib/Target/NVPTX/NVPTXUtilities.cpp

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -327,25 +327,6 @@ std::optional<unsigned> getMaxNReg(const Function &F) {
327327
return getFnAttrParsedInt(F, "nvvm.maxnreg");
328328
}
329329

330-
MaybeAlign getAlign(const Function &F, unsigned Index) {
331-
// First check the alignstack metadata
332-
if (MaybeAlign StackAlign =
333-
F.getAttributes().getAttributes(Index).getStackAlignment())
334-
return StackAlign;
335-
336-
// check the legacy nvvm metadata only for the return value since llvm does
337-
// not support stackalign attribute for this.
338-
if (Index == 0) {
339-
std::vector<unsigned> Vs;
340-
if (findAllNVVMAnnotation(&F, "align", Vs))
341-
for (unsigned V : Vs)
342-
if ((V >> 16) == Index)
343-
return Align(V & 0xFFFF);
344-
}
345-
346-
return std::nullopt;
347-
}
348-
349330
MaybeAlign getAlign(const CallInst &I, unsigned Index) {
350331
// First check the alignstack metadata
351332
if (MaybeAlign StackAlign =

llvm/lib/Target/NVPTX/NVPTXUtilities.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,10 @@ inline bool isKernelFunction(const Function &F) {
6565

6666
bool isParamGridConstant(const Value &);
6767

68-
MaybeAlign getAlign(const Function &, unsigned);
68+
inline MaybeAlign getAlign(const Function &F, unsigned Index) {
69+
return F.getAttributes().getAttributes(Index).getStackAlignment();
70+
}
71+
6972
MaybeAlign getAlign(const CallInst &, unsigned);
7073
Function *getMaybeBitcastedCallee(const CallBase *CB);
7174

llvm/test/CodeGen/NVPTX/upgrade-nvvm-annotations.ll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; RUN: opt < %s -passes=verify -S | FileCheck %s
33

44
define i32 @test_align(i32 %a, i32 %b) {
5-
; CHECK-LABEL: define i32 @test_align(
5+
; CHECK-LABEL: define alignstack(8) i32 @test_align(
66
; CHECK-SAME: i32 alignstack(8) [[A:%.*]], i32 alignstack(16) [[B:%.*]]) {
77
; CHECK-NEXT: ret i32 0
88
;
@@ -124,5 +124,3 @@ define void @test_cluster_dim() {
124124
; CHECK: attributes #[[ATTR8]] = { "nvvm.reqntid"="31,32,33" }
125125
; CHECK: attributes #[[ATTR9]] = { "nvvm.cluster_dim"="101,102,103" }
126126
;.
127-
; CHECK: [[META0:![0-9]+]] = !{ptr @test_align, !"align", i32 8}
128-
;.

0 commit comments

Comments
 (0)