[llvm] d3316bc - [amdgpu] Delete elide-module-lds attribute
Jon Chesterfield via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 13 16:36:44 PDT 2023
Author: Jon Chesterfield
Date: 2023-07-14T00:36:33+01:00
New Revision: d3316bc1114d17aac1a53d1fd32de92bdd70c837
URL: https://github.com/llvm/llvm-project/commit/d3316bc1114d17aac1a53d1fd32de92bdd70c837
DIFF: https://github.com/llvm/llvm-project/commit/d3316bc1114d17aac1a53d1fd32de92bdd70c837.diff
LOG: [amdgpu] Delete elide-module-lds attribute
Requires D155190
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D155238
Added:
Modified:
llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
llvm/test/CodeGen/AMDGPU/lds-frame-extern.ll
llvm/test/CodeGen/AMDGPU/lower-kernel-and-module-lds.ll
llvm/test/CodeGen/AMDGPU/lower-module-lds-constantexpr.ll
llvm/test/CodeGen/AMDGPU/lower-module-lds-indirect-extern-uses-max-reachable-alignment.ll
llvm/test/CodeGen/AMDGPU/lower-module-lds-offsets.ll
llvm/test/CodeGen/AMDGPU/lower-module-lds-via-hybrid.ll
llvm/test/CodeGen/AMDGPU/lower-module-lds.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
index 0a1075c36acb0e..e265de1c0b2952 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp
@@ -73,8 +73,6 @@
// The "module" lowering implemented here finds LDS variables which are used by
// non-kernel functions and creates a new struct with a field for each of those
// LDS variables. Variables that are only used from kernels are excluded.
-// Kernels that do not use this struct are annoteated with the attribute
-// amdgpu-elide-module-lds which allows the back end to elide the allocation.
//
// The "table" lowering implemented here has three components.
// First kernels are assigned a unique integer identifier which is available in
@@ -906,9 +904,6 @@ class AMDGPULowerModuleLDS : public ModulePass {
});
markUsedByKernel(Builder, &Func, ModuleScopeReplacement.SGV);
-
- } else {
- markElideModuleLDS(Func);
}
}
@@ -1106,16 +1101,6 @@ class AMDGPULowerModuleLDS : public ModulePass {
return KernelToCreatedDynamicLDS;
}
- // This attribute is no longer used by the backend. TODO: Delete it in favour
- // of pass-local state and update the tests to remove the string.
- static bool canElideModuleLDS(const Function &F) {
- return F.hasFnAttribute("amdgpu-elide-module-lds");
- }
-
- static void markElideModuleLDS(Function &F) {
- F.addFnAttr("amdgpu-elide-module-lds");
- }
-
bool runOnModule(Module &M) override {
CallGraph CG = CallGraph(M);
bool Changed = superAlignLDSGlobals(M);
@@ -1232,7 +1217,8 @@ class AMDGPULowerModuleLDS : public ModulePass {
//}
const bool AllocateModuleScopeStruct =
- MaybeModuleScopeStruct && !canElideModuleLDS(Func);
+ MaybeModuleScopeStruct &&
+ KernelsThatAllocateModuleLDS.contains(&Func);
auto Replacement = KernelToReplacement.find(&Func);
const bool AllocateKernelScopeStruct =
diff --git a/llvm/test/CodeGen/AMDGPU/lds-frame-extern.ll b/llvm/test/CodeGen/AMDGPU/lds-frame-extern.ll
index bb61ff9f91a472..c22eb877bd56b6 100644
--- a/llvm/test/CodeGen/AMDGPU/lds-frame-extern.ll
+++ b/llvm/test/CodeGen/AMDGPU/lds-frame-extern.ll
@@ -90,7 +90,7 @@ define void @use_extern_overalign() #0 {
; kernel variable normal/overaligned
; extern variable normal/overaligned
-define amdgpu_kernel void @module_0_kernel_normal_extern_normal(i32 %idx) #1 {
+define amdgpu_kernel void @module_0_kernel_normal_extern_normal(i32 %idx) {
; CHECK-LABEL: module_0_kernel_normal_extern_normal:
; CHECK: ; %bb.0:
; CHECK-NEXT: s_load_dword s0, s[4:5], 0x0
@@ -148,7 +148,7 @@ define amdgpu_kernel void @module_1_kernel_normal_extern_normal(i32 %idx) {
ret void
}
-define amdgpu_kernel void @module_0_kernel_overalign_extern_normal(i32 %idx) #1 {
+define amdgpu_kernel void @module_0_kernel_overalign_extern_normal(i32 %idx) {
; CHECK-LABEL: module_0_kernel_overalign_extern_normal:
; CHECK: ; %bb.0:
; CHECK-NEXT: s_load_dword s0, s[4:5], 0x0
@@ -206,7 +206,7 @@ define amdgpu_kernel void @module_1_kernel_overalign_extern_normal(i32 %idx) {
ret void
}
-define amdgpu_kernel void @module_0_kernel_normal_extern_overalign(i32 %idx) #1 {
+define amdgpu_kernel void @module_0_kernel_normal_extern_overalign(i32 %idx) {
; CHECK-LABEL: module_0_kernel_normal_extern_overalign:
; CHECK: ; %bb.0:
; CHECK-NEXT: s_load_dword s0, s[4:5], 0x0
@@ -264,7 +264,7 @@ define amdgpu_kernel void @module_1_kernel_normal_extern_overalign(i32 %idx) {
ret void
}
-define amdgpu_kernel void @module_0_kernel_overalign_extern_overalign(i32 %idx) #1 {
+define amdgpu_kernel void @module_0_kernel_overalign_extern_overalign(i32 %idx) {
; CHECK-LABEL: module_0_kernel_overalign_extern_overalign:
; CHECK: ; %bb.0:
; CHECK-NEXT: s_load_dword s0, s[4:5], 0x0
@@ -329,7 +329,7 @@ define amdgpu_kernel void @module_1_kernel_overalign_extern_overalign(i32 %idx)
; kernel variable normal/overaligned
; extern variable normal/overaligned
-define amdgpu_kernel void @module_0_kernel_normal_indirect_extern_normal(i32 %idx) #1 {
+define amdgpu_kernel void @module_0_kernel_normal_indirect_extern_normal(i32 %idx) {
; CHECK-LABEL: module_0_kernel_normal_indirect_extern_normal:
; CHECK: ; %bb.0:
; CHECK-NEXT: s_add_u32 s8, s8, s11
@@ -396,7 +396,7 @@ define amdgpu_kernel void @module_1_kernel_normal_indirect_extern_normal(i32 %id
ret void
}
-define amdgpu_kernel void @module_0_kernel_overalign_indirect_extern_normal(i32 %idx) #1 {
+define amdgpu_kernel void @module_0_kernel_overalign_indirect_extern_normal(i32 %idx) {
; CHECK-LABEL: module_0_kernel_overalign_indirect_extern_normal:
; CHECK: ; %bb.0:
; CHECK-NEXT: s_add_u32 s8, s8, s11
@@ -463,7 +463,7 @@ define amdgpu_kernel void @module_1_kernel_overalign_indirect_extern_normal(i32
ret void
}
-define amdgpu_kernel void @module_0_kernel_normal_indirect_extern_overalign(i32 %idx) #1 {
+define amdgpu_kernel void @module_0_kernel_normal_indirect_extern_overalign(i32 %idx) {
; CHECK-LABEL: module_0_kernel_normal_indirect_extern_overalign:
; CHECK: ; %bb.0:
; CHECK-NEXT: s_add_u32 s8, s8, s11
@@ -530,7 +530,7 @@ define amdgpu_kernel void @module_1_kernel_normal_indirect_extern_overalign(i32
ret void
}
-define amdgpu_kernel void @module_0_kernel_overalign_indirect_extern_overalign(i32 %idx) #1 {
+define amdgpu_kernel void @module_0_kernel_overalign_indirect_extern_overalign(i32 %idx) {
; CHECK-LABEL: module_0_kernel_overalign_indirect_extern_overalign:
; CHECK: ; %bb.0:
; CHECK-NEXT: s_add_u32 s8, s8, s11
@@ -599,4 +599,3 @@ define amdgpu_kernel void @module_1_kernel_overalign_indirect_extern_overalign(i
attributes #0 = { noinline }
-attributes #1 = { "amdgpu-elide-module-lds" }
diff --git a/llvm/test/CodeGen/AMDGPU/lower-kernel-and-module-lds.ll b/llvm/test/CodeGen/AMDGPU/lower-kernel-and-module-lds.ll
index af8142c3efbe87..9a0f10042799c5 100644
--- a/llvm/test/CodeGen/AMDGPU/lower-kernel-and-module-lds.ll
+++ b/llvm/test/CodeGen/AMDGPU/lower-kernel-and-module-lds.ll
@@ -93,10 +93,10 @@ define void @f0() {
ret void
}
-; CHECK: attributes #0 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="23" }
-; CHECK: attributes #1 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="22" }
-; CHECK: attributes #2 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="2" }
-; CHECK: attributes #3 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="4" }
+; CHECK: attributes #0 = { "amdgpu-lds-size"="23" }
+; CHECK: attributes #1 = { "amdgpu-lds-size"="22" }
+; CHECK: attributes #2 = { "amdgpu-lds-size"="2" }
+; CHECK: attributes #3 = { "amdgpu-lds-size"="4" }
; CHECK: attributes #4 = { "amdgpu-lds-size"="9" }
; CHECK: !0 = !{i64 0, i64 1}
diff --git a/llvm/test/CodeGen/AMDGPU/lower-module-lds-constantexpr.ll b/llvm/test/CodeGen/AMDGPU/lower-module-lds-constantexpr.ll
index 9ef2957891620f..be9920b56c87c7 100644
--- a/llvm/test/CodeGen/AMDGPU/lower-module-lds-constantexpr.ll
+++ b/llvm/test/CodeGen/AMDGPU/lower-module-lds-constantexpr.ll
@@ -42,13 +42,13 @@ entry:
; CHECK: %5 = inttoptr i64 %4 to ptr
; CHECK: store i32 %x, ptr %5, align 4
; CHECK: ret void
-define void @set_func(i32 %x) local_unnamed_addr #1 {
+define void @set_func(i32 %x) {
entry:
store i32 %x, ptr inttoptr (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(3) @b_both to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(3) @b_both to ptr) to i64)) to ptr), align 4
ret void
}
-; CHECK-LABEL: @timestwo() #1
+; CHECK-LABEL: @timestwo() #0
; CHECK-NOT: call void @llvm.donothing()
; CHECK: %1 = addrspacecast ptr addrspace(3) @llvm.amdgcn.kernel.timestwo.lds to ptr
@@ -67,14 +67,14 @@ entry:
; CHECK: %12 = inttoptr i64 %11 to ptr
; CHECK: store i32 %mul, ptr %12, align 4
; CHECK: ret void
-define amdgpu_kernel void @timestwo() #1 {
+define amdgpu_kernel void @timestwo() {
%ld = load i32, ptr inttoptr (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(3) @b_both to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(3) @kern to ptr) to i64)) to ptr), align 4
%mul = mul i32 %ld, 2
store i32 %mul, ptr inttoptr (i64 add (i64 ptrtoint (ptr addrspacecast (ptr addrspace(3) @kern to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(3) @b_both to ptr) to i64)) to ptr), align 4
ret void
}
-; CHECK-LABEL: @through_functions() #2
+; CHECK-LABEL: @through_functions() #0
define amdgpu_kernel void @through_functions() {
%ld = call i32 @get_func()
%mul = mul i32 %ld, 4
@@ -82,7 +82,4 @@ define amdgpu_kernel void @through_functions() {
ret void
}
-attributes #0 = { "amdgpu-elide-module-lds" }
-; CHECK: attributes #0 = { "amdgpu-elide-module-lds" }
-; CHECK: attributes #1 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="8" }
-; CHECK: attributes #2 = { "amdgpu-lds-size"="8" }
+; CHECK: attributes #0 = { "amdgpu-lds-size"="8" }
diff --git a/llvm/test/CodeGen/AMDGPU/lower-module-lds-indirect-extern-uses-max-reachable-alignment.ll b/llvm/test/CodeGen/AMDGPU/lower-module-lds-indirect-extern-uses-max-reachable-alignment.ll
index 2789c672c592d3..3f34cc3010da89 100644
--- a/llvm/test/CodeGen/AMDGPU/lower-module-lds-indirect-extern-uses-max-reachable-alignment.ll
+++ b/llvm/test/CodeGen/AMDGPU/lower-module-lds-indirect-extern-uses-max-reachable-alignment.ll
@@ -1,7 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-module-lds < %s | FileCheck %s
-
; Not reached by a non-kernel function and therefore not changed by this pass
@dynamic_kernel_only = external addrspace(3) global [0 x double]
@@ -34,7 +33,7 @@
define amdgpu_kernel void @kernel_only() {
-; CHECK-LABEL: @kernel_only() #0 {
+; CHECK-LABEL: @kernel_only() {
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x double], ptr addrspace(3) @dynamic_kernel_only, i32 0, i32 0
; CHECK-NEXT: store double 3.140000e+00, ptr addrspace(3) [[ARRAYIDX]], align 8
; CHECK-NEXT: ret void
@@ -45,8 +44,8 @@ define amdgpu_kernel void @kernel_only() {
}
; The accesses from functions are rewritten to go through the llvm.amdgcn.dynlds.offset.table
-define void @use_shared1() #0 {
-; CHECK-LABEL: @use_shared1() #1 {
+define void @use_shared1() {
+; CHECK-LABEL: @use_shared1() {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.lds.kernel.id()
; CHECK-NEXT: [[DYNAMIC_SHARED1:%.*]] = getelementptr inbounds [5 x i32], ptr addrspace(4) @llvm.amdgcn.dynlds.offset.table, i32 0, i32 [[TMP1]]
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(4) [[DYNAMIC_SHARED1]], align 4
@@ -61,7 +60,7 @@ define void @use_shared1() #0 {
}
define void @use_shared2() #0 {
-; CHECK-LABEL: @use_shared2() #1 {
+; CHECK-LABEL: @use_shared2() #0 {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.lds.kernel.id()
; CHECK-NEXT: [[DYNAMIC_SHARED2:%.*]] = getelementptr inbounds [5 x i32], ptr addrspace(4) @llvm.amdgcn.dynlds.offset.table, i32 0, i32 [[TMP1]]
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(4) [[DYNAMIC_SHARED2]], align 4
@@ -78,7 +77,7 @@ define void @use_shared2() #0 {
; Include a normal variable so that the new variables aren't all at the same absolute_symbol
@static_shared = addrspace(3) global i32 undef
define void @use_shared4() #0 {
-; CHECK-LABEL: @use_shared4() #1 {
+; CHECK-LABEL: @use_shared4() #0 {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.lds.kernel.id()
; CHECK-NEXT: store i32 4, ptr addrspace(3) @llvm.amdgcn.module.lds, align 4
; CHECK-NEXT: [[DYNAMIC_SHARED4:%.*]] = getelementptr inbounds [5 x i32], ptr addrspace(4) @llvm.amdgcn.dynlds.offset.table, i32 0, i32 [[TMP1]]
@@ -95,7 +94,7 @@ define void @use_shared4() #0 {
}
define void @use_shared8() #0 {
-; CHECK-LABEL: @use_shared8() #1 {
+; CHECK-LABEL: @use_shared8() #0 {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.lds.kernel.id()
; CHECK-NEXT: [[DYNAMIC_SHARED8:%.*]] = getelementptr inbounds [5 x i32], ptr addrspace(4) @llvm.amdgcn.dynlds.offset.table, i32 0, i32 [[TMP1]]
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(4) [[DYNAMIC_SHARED8]], align 4
@@ -111,7 +110,7 @@ define void @use_shared8() #0 {
; The kernels are annotated with kernel.id and llvm.donothing use of the corresponding variable
define amdgpu_kernel void @expect_align1() {
-; CHECK-LABEL: @expect_align1() #0 !llvm.amdgcn.lds.kernel.id !2
+; CHECK-LABEL: @expect_align1() !llvm.amdgcn.lds.kernel.id !2
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_align1.dynlds) ]
; CHECK-NEXT: call void @use_shared1()
; CHECK-NEXT: ret void
@@ -121,7 +120,7 @@ define amdgpu_kernel void @expect_align1() {
}
define amdgpu_kernel void @expect_align2() {
-; CHECK-LABEL: @expect_align2() #0 !llvm.amdgcn.lds.kernel.id !3
+; CHECK-LABEL: @expect_align2() !llvm.amdgcn.lds.kernel.id !3
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_align2.dynlds) ]
; CHECK-NEXT: call void @use_shared2()
; CHECK-NEXT: ret void
@@ -131,7 +130,7 @@ define amdgpu_kernel void @expect_align2() {
}
define amdgpu_kernel void @expect_align4() {
-; CHECK-LABEL: @expect_align4() #2 !llvm.amdgcn.lds.kernel.id !4 {
+; CHECK-LABEL: @expect_align4() #1 !llvm.amdgcn.lds.kernel.id !4 {
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_align4.dynlds) ]
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.module.lds) ]
; CHECK-NEXT: call void @use_shared4()
@@ -141,9 +140,9 @@ define amdgpu_kernel void @expect_align4() {
ret void
}
-; Use dynamic_shared directly too. Can elide module lds (#0)
+; Use dynamic_shared directly too.
define amdgpu_kernel void @expect_align8() {
-; CHECK-LABEL: @expect_align8() #0 !llvm.amdgcn.lds.kernel.id !5 {
+; CHECK-LABEL: @expect_align8() !llvm.amdgcn.lds.kernel.id !5 {
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_align8.dynlds) ]
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i64], ptr addrspace(3) @dynamic_shared8, i32 0, i32 9
; CHECK-NEXT: store i64 3, ptr addrspace(3) [[ARRAYIDX]], align 4
@@ -158,7 +157,7 @@ define amdgpu_kernel void @expect_align8() {
; Note: use_shared4 uses module.lds so this will allocate at offset 4
define amdgpu_kernel void @expect_max_of_2_and_4() {
-; CHECK-LABEL: @expect_max_of_2_and_4() #2 !llvm.amdgcn.lds.kernel.id !6 {
+; CHECK-LABEL: @expect_max_of_2_and_4() #1 !llvm.amdgcn.lds.kernel.id !6 {
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_max_of_2_and_4.dynlds) ]
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.module.lds) ]
; CHECK-NEXT: call void @use_shared2()
@@ -174,16 +173,15 @@ define amdgpu_kernel void @expect_max_of_2_and_4() {
attributes #0 = { noinline }
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
-; CHECK: declare void @llvm.donothing() #3
+; CHECK: declare void @llvm.donothing() #2
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
-; CHECK: declare i32 @llvm.amdgcn.lds.kernel.id() #4
+; CHECK: declare i32 @llvm.amdgcn.lds.kernel.id() #3
-; CHECK: attributes #0 = { "amdgpu-elide-module-lds" }
-; CHECK: attributes #1 = { noinline }
-; CHECK: attributes #2 = { "amdgpu-lds-size"="4" }
-; CHECK: attributes #3 = { nocallback nofree nosync nounwind willreturn memory(none) }
-; CHECK: attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
+; CHECK: attributes #0 = { noinline }
+; CHECK: attributes #1 = { "amdgpu-lds-size"="4" }
+; CHECK: attributes #2 = { nocallback nofree nosync nounwind willreturn memory(none) }
+; CHECK: attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
; CHECK: !0 = !{i64 0, i64 1}
; CHECK: !1 = !{i64 4, i64 5}
diff --git a/llvm/test/CodeGen/AMDGPU/lower-module-lds-offsets.ll b/llvm/test/CodeGen/AMDGPU/lower-module-lds-offsets.ll
index 81b21742153365..c4449756949e52 100644
--- a/llvm/test/CodeGen/AMDGPU/lower-module-lds-offsets.ll
+++ b/llvm/test/CodeGen/AMDGPU/lower-module-lds-offsets.ll
@@ -42,6 +42,3 @@ define void @f0() {
store i8 3, ptr addrspace(3) @lds.size.1.align.1, align 1
ret void
}
-
-attributes #0 = { "amdgpu-elide-module-lds" }
-; CHECK: attributes #0 = { "amdgpu-elide-module-lds" }
diff --git a/llvm/test/CodeGen/AMDGPU/lower-module-lds-via-hybrid.ll b/llvm/test/CodeGen/AMDGPU/lower-module-lds-via-hybrid.ll
index 11dfa16d41b5d8..98e5a6561af613 100644
--- a/llvm/test/CodeGen/AMDGPU/lower-module-lds-via-hybrid.ll
+++ b/llvm/test/CodeGen/AMDGPU/lower-module-lds-via-hybrid.ll
@@ -284,12 +284,11 @@ define amdgpu_kernel void @k123() {
!2 = !{i32 1}
-; OPT: attributes #0 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="8" }
-; OPT: attributes #1 = { "amdgpu-lds-size"="8" }
-; OPT: attributes #2 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="12" }
-; OPT: attributes #3 = { "amdgpu-lds-size"="20" }
-; OPT: attributes #4 = { nocallback nofree nosync nounwind willreturn memory(none) }
-; OPT: attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
+; OPT: attributes #0 = { "amdgpu-lds-size"="8" }
+; OPT: attributes #1 = { "amdgpu-lds-size"="12" }
+; OPT: attributes #2 = { "amdgpu-lds-size"="20" }
+; OPT: attributes #3 = { nocallback nofree nosync nounwind willreturn memory(none) }
+; OPT: attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
; OPT: !0 = !{i64 0, i64 1}
; OPT: !1 = !{i64 4, i64 5}
diff --git a/llvm/test/CodeGen/AMDGPU/lower-module-lds.ll b/llvm/test/CodeGen/AMDGPU/lower-module-lds.ll
index 87ba7431273510..bd181390ef589e 100644
--- a/llvm/test/CodeGen/AMDGPU/lower-module-lds.ll
+++ b/llvm/test/CodeGen/AMDGPU/lower-module-lds.ll
@@ -51,9 +51,9 @@ define amdgpu_kernel void @kern_call() {
}
; This kernel does alloc the LDS block as it makes no calls
-; CHECK-LABEL: @kern_empty() #1
+; CHECK-LABEL: @kern_empty()
; CHECK-NOT: call void @llvm.donothing()
-define spir_kernel void @kern_empty() #0{
+define spir_kernel void @kern_empty() {
ret void
}
@@ -61,7 +61,4 @@ define spir_kernel void @kern_empty() #0{
; declaration.
declare amdgpu_kernel void @kernel_declaration()
-attributes #0 = { "amdgpu-elide-module-lds" }
-
; CHECK: attributes #0 = { "amdgpu-lds-size"="12" }
-; CHECK: attributes #1 = { "amdgpu-elide-module-lds" }
More information about the llvm-commits
mailing list