Skip to content

Commit d3316bc

Browse files
[amdgpu] Delete elide-module-lds attribute
Requires D155190 Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D155238
1 parent 5141a52 commit d3316bc

8 files changed

+44
-71
lines changed

llvm/lib/Target/AMDGPU/AMDGPULowerModuleLDSPass.cpp

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@
7373
// The "module" lowering implemented here finds LDS variables which are used by
7474
// non-kernel functions and creates a new struct with a field for each of those
7575
// LDS variables. Variables that are only used from kernels are excluded.
76-
// Kernels that do not use this struct are annoteated with the attribute
77-
// amdgpu-elide-module-lds which allows the back end to elide the allocation.
7876
//
7977
// The "table" lowering implemented here has three components.
8078
// First kernels are assigned a unique integer identifier which is available in
@@ -906,9 +904,6 @@ class AMDGPULowerModuleLDS : public ModulePass {
906904
});
907905

908906
markUsedByKernel(Builder, &Func, ModuleScopeReplacement.SGV);
909-
910-
} else {
911-
markElideModuleLDS(Func);
912907
}
913908
}
914909

@@ -1106,16 +1101,6 @@ class AMDGPULowerModuleLDS : public ModulePass {
11061101
return KernelToCreatedDynamicLDS;
11071102
}
11081103

1109-
// This attribute is no longer used by the backend. TODO: Delete it in favour
1110-
// of pass-local state and update the tests to remove the string.
1111-
static bool canElideModuleLDS(const Function &F) {
1112-
return F.hasFnAttribute("amdgpu-elide-module-lds");
1113-
}
1114-
1115-
static void markElideModuleLDS(Function &F) {
1116-
F.addFnAttr("amdgpu-elide-module-lds");
1117-
}
1118-
11191104
bool runOnModule(Module &M) override {
11201105
CallGraph CG = CallGraph(M);
11211106
bool Changed = superAlignLDSGlobals(M);
@@ -1232,7 +1217,8 @@ class AMDGPULowerModuleLDS : public ModulePass {
12321217
//}
12331218

12341219
const bool AllocateModuleScopeStruct =
1235-
MaybeModuleScopeStruct && !canElideModuleLDS(Func);
1220+
MaybeModuleScopeStruct &&
1221+
KernelsThatAllocateModuleLDS.contains(&Func);
12361222

12371223
auto Replacement = KernelToReplacement.find(&Func);
12381224
const bool AllocateKernelScopeStruct =

llvm/test/CodeGen/AMDGPU/lds-frame-extern.ll

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ define void @use_extern_overalign() #0 {
9090
; kernel variable normal/overaligned
9191
; extern variable normal/overaligned
9292

93-
define amdgpu_kernel void @module_0_kernel_normal_extern_normal(i32 %idx) #1 {
93+
define amdgpu_kernel void @module_0_kernel_normal_extern_normal(i32 %idx) {
9494
; CHECK-LABEL: module_0_kernel_normal_extern_normal:
9595
; CHECK: ; %bb.0:
9696
; 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) {
148148
ret void
149149
}
150150

151-
define amdgpu_kernel void @module_0_kernel_overalign_extern_normal(i32 %idx) #1 {
151+
define amdgpu_kernel void @module_0_kernel_overalign_extern_normal(i32 %idx) {
152152
; CHECK-LABEL: module_0_kernel_overalign_extern_normal:
153153
; CHECK: ; %bb.0:
154154
; 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) {
206206
ret void
207207
}
208208

209-
define amdgpu_kernel void @module_0_kernel_normal_extern_overalign(i32 %idx) #1 {
209+
define amdgpu_kernel void @module_0_kernel_normal_extern_overalign(i32 %idx) {
210210
; CHECK-LABEL: module_0_kernel_normal_extern_overalign:
211211
; CHECK: ; %bb.0:
212212
; 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) {
264264
ret void
265265
}
266266

267-
define amdgpu_kernel void @module_0_kernel_overalign_extern_overalign(i32 %idx) #1 {
267+
define amdgpu_kernel void @module_0_kernel_overalign_extern_overalign(i32 %idx) {
268268
; CHECK-LABEL: module_0_kernel_overalign_extern_overalign:
269269
; CHECK: ; %bb.0:
270270
; 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)
329329
; kernel variable normal/overaligned
330330
; extern variable normal/overaligned
331331

332-
define amdgpu_kernel void @module_0_kernel_normal_indirect_extern_normal(i32 %idx) #1 {
332+
define amdgpu_kernel void @module_0_kernel_normal_indirect_extern_normal(i32 %idx) {
333333
; CHECK-LABEL: module_0_kernel_normal_indirect_extern_normal:
334334
; CHECK: ; %bb.0:
335335
; 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
396396
ret void
397397
}
398398

399-
define amdgpu_kernel void @module_0_kernel_overalign_indirect_extern_normal(i32 %idx) #1 {
399+
define amdgpu_kernel void @module_0_kernel_overalign_indirect_extern_normal(i32 %idx) {
400400
; CHECK-LABEL: module_0_kernel_overalign_indirect_extern_normal:
401401
; CHECK: ; %bb.0:
402402
; CHECK-NEXT: s_add_u32 s8, s8, s11
@@ -463,7 +463,7 @@ define amdgpu_kernel void @module_1_kernel_overalign_indirect_extern_normal(i32
463463
ret void
464464
}
465465

466-
define amdgpu_kernel void @module_0_kernel_normal_indirect_extern_overalign(i32 %idx) #1 {
466+
define amdgpu_kernel void @module_0_kernel_normal_indirect_extern_overalign(i32 %idx) {
467467
; CHECK-LABEL: module_0_kernel_normal_indirect_extern_overalign:
468468
; CHECK: ; %bb.0:
469469
; CHECK-NEXT: s_add_u32 s8, s8, s11
@@ -530,7 +530,7 @@ define amdgpu_kernel void @module_1_kernel_normal_indirect_extern_overalign(i32
530530
ret void
531531
}
532532

533-
define amdgpu_kernel void @module_0_kernel_overalign_indirect_extern_overalign(i32 %idx) #1 {
533+
define amdgpu_kernel void @module_0_kernel_overalign_indirect_extern_overalign(i32 %idx) {
534534
; CHECK-LABEL: module_0_kernel_overalign_indirect_extern_overalign:
535535
; CHECK: ; %bb.0:
536536
; CHECK-NEXT: s_add_u32 s8, s8, s11
@@ -599,4 +599,3 @@ define amdgpu_kernel void @module_1_kernel_overalign_indirect_extern_overalign(i
599599

600600

601601
attributes #0 = { noinline }
602-
attributes #1 = { "amdgpu-elide-module-lds" }

llvm/test/CodeGen/AMDGPU/lower-kernel-and-module-lds.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ define void @f0() {
9393
ret void
9494
}
9595

96-
; CHECK: attributes #0 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="23" }
97-
; CHECK: attributes #1 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="22" }
98-
; CHECK: attributes #2 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="2" }
99-
; CHECK: attributes #3 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="4" }
96+
; CHECK: attributes #0 = { "amdgpu-lds-size"="23" }
97+
; CHECK: attributes #1 = { "amdgpu-lds-size"="22" }
98+
; CHECK: attributes #2 = { "amdgpu-lds-size"="2" }
99+
; CHECK: attributes #3 = { "amdgpu-lds-size"="4" }
100100
; CHECK: attributes #4 = { "amdgpu-lds-size"="9" }
101101

102102
; CHECK: !0 = !{i64 0, i64 1}

llvm/test/CodeGen/AMDGPU/lower-module-lds-constantexpr.ll

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ entry:
4242
; CHECK: %5 = inttoptr i64 %4 to ptr
4343
; CHECK: store i32 %x, ptr %5, align 4
4444
; CHECK: ret void
45-
define void @set_func(i32 %x) local_unnamed_addr #1 {
45+
define void @set_func(i32 %x) {
4646
entry:
4747
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
4848
ret void
4949
}
5050

51-
; CHECK-LABEL: @timestwo() #1
51+
; CHECK-LABEL: @timestwo() #0
5252
; CHECK-NOT: call void @llvm.donothing()
5353

5454
; CHECK: %1 = addrspacecast ptr addrspace(3) @llvm.amdgcn.kernel.timestwo.lds to ptr
@@ -67,22 +67,19 @@ entry:
6767
; CHECK: %12 = inttoptr i64 %11 to ptr
6868
; CHECK: store i32 %mul, ptr %12, align 4
6969
; CHECK: ret void
70-
define amdgpu_kernel void @timestwo() #1 {
70+
define amdgpu_kernel void @timestwo() {
7171
%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
7272
%mul = mul i32 %ld, 2
7373
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
7474
ret void
7575
}
7676

77-
; CHECK-LABEL: @through_functions() #2
77+
; CHECK-LABEL: @through_functions() #0
7878
define amdgpu_kernel void @through_functions() {
7979
%ld = call i32 @get_func()
8080
%mul = mul i32 %ld, 4
8181
call void @set_func(i32 %mul)
8282
ret void
8383
}
8484

85-
attributes #0 = { "amdgpu-elide-module-lds" }
86-
; CHECK: attributes #0 = { "amdgpu-elide-module-lds" }
87-
; CHECK: attributes #1 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="8" }
88-
; CHECK: attributes #2 = { "amdgpu-lds-size"="8" }
85+
; CHECK: attributes #0 = { "amdgpu-lds-size"="8" }

llvm/test/CodeGen/AMDGPU/lower-module-lds-indirect-extern-uses-max-reachable-alignment.ll

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22
; RUN: opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-module-lds < %s | FileCheck %s
33

4-
54
; Not reached by a non-kernel function and therefore not changed by this pass
65
@dynamic_kernel_only = external addrspace(3) global [0 x double]
76

@@ -34,7 +33,7 @@
3433

3534

3635
define amdgpu_kernel void @kernel_only() {
37-
; CHECK-LABEL: @kernel_only() #0 {
36+
; CHECK-LABEL: @kernel_only() {
3837
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x double], ptr addrspace(3) @dynamic_kernel_only, i32 0, i32 0
3938
; CHECK-NEXT: store double 3.140000e+00, ptr addrspace(3) [[ARRAYIDX]], align 8
4039
; CHECK-NEXT: ret void
@@ -45,8 +44,8 @@ define amdgpu_kernel void @kernel_only() {
4544
}
4645

4746
; The accesses from functions are rewritten to go through the llvm.amdgcn.dynlds.offset.table
48-
define void @use_shared1() #0 {
49-
; CHECK-LABEL: @use_shared1() #1 {
47+
define void @use_shared1() {
48+
; CHECK-LABEL: @use_shared1() {
5049
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.lds.kernel.id()
5150
; CHECK-NEXT: [[DYNAMIC_SHARED1:%.*]] = getelementptr inbounds [5 x i32], ptr addrspace(4) @llvm.amdgcn.dynlds.offset.table, i32 0, i32 [[TMP1]]
5251
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(4) [[DYNAMIC_SHARED1]], align 4
@@ -61,7 +60,7 @@ define void @use_shared1() #0 {
6160
}
6261

6362
define void @use_shared2() #0 {
64-
; CHECK-LABEL: @use_shared2() #1 {
63+
; CHECK-LABEL: @use_shared2() #0 {
6564
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.lds.kernel.id()
6665
; CHECK-NEXT: [[DYNAMIC_SHARED2:%.*]] = getelementptr inbounds [5 x i32], ptr addrspace(4) @llvm.amdgcn.dynlds.offset.table, i32 0, i32 [[TMP1]]
6766
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(4) [[DYNAMIC_SHARED2]], align 4
@@ -78,7 +77,7 @@ define void @use_shared2() #0 {
7877
; Include a normal variable so that the new variables aren't all at the same absolute_symbol
7978
@static_shared = addrspace(3) global i32 undef
8079
define void @use_shared4() #0 {
81-
; CHECK-LABEL: @use_shared4() #1 {
80+
; CHECK-LABEL: @use_shared4() #0 {
8281
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.lds.kernel.id()
8382
; CHECK-NEXT: store i32 4, ptr addrspace(3) @llvm.amdgcn.module.lds, align 4
8483
; 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 {
9594
}
9695

9796
define void @use_shared8() #0 {
98-
; CHECK-LABEL: @use_shared8() #1 {
97+
; CHECK-LABEL: @use_shared8() #0 {
9998
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.lds.kernel.id()
10099
; CHECK-NEXT: [[DYNAMIC_SHARED8:%.*]] = getelementptr inbounds [5 x i32], ptr addrspace(4) @llvm.amdgcn.dynlds.offset.table, i32 0, i32 [[TMP1]]
101100
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(4) [[DYNAMIC_SHARED8]], align 4
@@ -111,7 +110,7 @@ define void @use_shared8() #0 {
111110

112111
; The kernels are annotated with kernel.id and llvm.donothing use of the corresponding variable
113112
define amdgpu_kernel void @expect_align1() {
114-
; CHECK-LABEL: @expect_align1() #0 !llvm.amdgcn.lds.kernel.id !2
113+
; CHECK-LABEL: @expect_align1() !llvm.amdgcn.lds.kernel.id !2
115114
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_align1.dynlds) ]
116115
; CHECK-NEXT: call void @use_shared1()
117116
; CHECK-NEXT: ret void
@@ -121,7 +120,7 @@ define amdgpu_kernel void @expect_align1() {
121120
}
122121

123122
define amdgpu_kernel void @expect_align2() {
124-
; CHECK-LABEL: @expect_align2() #0 !llvm.amdgcn.lds.kernel.id !3
123+
; CHECK-LABEL: @expect_align2() !llvm.amdgcn.lds.kernel.id !3
125124
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_align2.dynlds) ]
126125
; CHECK-NEXT: call void @use_shared2()
127126
; CHECK-NEXT: ret void
@@ -131,7 +130,7 @@ define amdgpu_kernel void @expect_align2() {
131130
}
132131

133132
define amdgpu_kernel void @expect_align4() {
134-
; CHECK-LABEL: @expect_align4() #2 !llvm.amdgcn.lds.kernel.id !4 {
133+
; CHECK-LABEL: @expect_align4() #1 !llvm.amdgcn.lds.kernel.id !4 {
135134
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_align4.dynlds) ]
136135
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.module.lds) ]
137136
; CHECK-NEXT: call void @use_shared4()
@@ -141,9 +140,9 @@ define amdgpu_kernel void @expect_align4() {
141140
ret void
142141
}
143142

144-
; Use dynamic_shared directly too. Can elide module lds (#0)
143+
; Use dynamic_shared directly too.
145144
define amdgpu_kernel void @expect_align8() {
146-
; CHECK-LABEL: @expect_align8() #0 !llvm.amdgcn.lds.kernel.id !5 {
145+
; CHECK-LABEL: @expect_align8() !llvm.amdgcn.lds.kernel.id !5 {
147146
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_align8.dynlds) ]
148147
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i64], ptr addrspace(3) @dynamic_shared8, i32 0, i32 9
149148
; CHECK-NEXT: store i64 3, ptr addrspace(3) [[ARRAYIDX]], align 4
@@ -158,7 +157,7 @@ define amdgpu_kernel void @expect_align8() {
158157

159158
; Note: use_shared4 uses module.lds so this will allocate at offset 4
160159
define amdgpu_kernel void @expect_max_of_2_and_4() {
161-
; CHECK-LABEL: @expect_max_of_2_and_4() #2 !llvm.amdgcn.lds.kernel.id !6 {
160+
; CHECK-LABEL: @expect_max_of_2_and_4() #1 !llvm.amdgcn.lds.kernel.id !6 {
162161
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.expect_max_of_2_and_4.dynlds) ]
163162
; CHECK-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.module.lds) ]
164163
; CHECK-NEXT: call void @use_shared2()
@@ -174,16 +173,15 @@ define amdgpu_kernel void @expect_max_of_2_and_4() {
174173
attributes #0 = { noinline }
175174

176175
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
177-
; CHECK: declare void @llvm.donothing() #3
176+
; CHECK: declare void @llvm.donothing() #2
178177

179178
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
180-
; CHECK: declare i32 @llvm.amdgcn.lds.kernel.id() #4
179+
; CHECK: declare i32 @llvm.amdgcn.lds.kernel.id() #3
181180

182-
; CHECK: attributes #0 = { "amdgpu-elide-module-lds" }
183-
; CHECK: attributes #1 = { noinline }
184-
; CHECK: attributes #2 = { "amdgpu-lds-size"="4" }
185-
; CHECK: attributes #3 = { nocallback nofree nosync nounwind willreturn memory(none) }
186-
; CHECK: attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
181+
; CHECK: attributes #0 = { noinline }
182+
; CHECK: attributes #1 = { "amdgpu-lds-size"="4" }
183+
; CHECK: attributes #2 = { nocallback nofree nosync nounwind willreturn memory(none) }
184+
; CHECK: attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
187185

188186
; CHECK: !0 = !{i64 0, i64 1}
189187
; CHECK: !1 = !{i64 4, i64 5}

llvm/test/CodeGen/AMDGPU/lower-module-lds-offsets.ll

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,3 @@ define void @f0() {
4242
store i8 3, ptr addrspace(3) @lds.size.1.align.1, align 1
4343
ret void
4444
}
45-
46-
attributes #0 = { "amdgpu-elide-module-lds" }
47-
; CHECK: attributes #0 = { "amdgpu-elide-module-lds" }

llvm/test/CodeGen/AMDGPU/lower-module-lds-via-hybrid.ll

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -284,12 +284,11 @@ define amdgpu_kernel void @k123() {
284284
!2 = !{i32 1}
285285

286286

287-
; OPT: attributes #0 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="8" }
288-
; OPT: attributes #1 = { "amdgpu-lds-size"="8" }
289-
; OPT: attributes #2 = { "amdgpu-elide-module-lds" "amdgpu-lds-size"="12" }
290-
; OPT: attributes #3 = { "amdgpu-lds-size"="20" }
291-
; OPT: attributes #4 = { nocallback nofree nosync nounwind willreturn memory(none) }
292-
; OPT: attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
287+
; OPT: attributes #0 = { "amdgpu-lds-size"="8" }
288+
; OPT: attributes #1 = { "amdgpu-lds-size"="12" }
289+
; OPT: attributes #2 = { "amdgpu-lds-size"="20" }
290+
; OPT: attributes #3 = { nocallback nofree nosync nounwind willreturn memory(none) }
291+
; OPT: attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
293292

294293
; OPT: !0 = !{i64 0, i64 1}
295294
; OPT: !1 = !{i64 4, i64 5}

llvm/test/CodeGen/AMDGPU/lower-module-lds.ll

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,14 @@ define amdgpu_kernel void @kern_call() {
5151
}
5252

5353
; This kernel does alloc the LDS block as it makes no calls
54-
; CHECK-LABEL: @kern_empty() #1
54+
; CHECK-LABEL: @kern_empty()
5555
; CHECK-NOT: call void @llvm.donothing()
56-
define spir_kernel void @kern_empty() #0{
56+
define spir_kernel void @kern_empty() {
5757
ret void
5858
}
5959

6060
; Make sure we don't crash trying to insert code into a kernel
6161
; declaration.
6262
declare amdgpu_kernel void @kernel_declaration()
6363

64-
attributes #0 = { "amdgpu-elide-module-lds" }
65-
6664
; CHECK: attributes #0 = { "amdgpu-lds-size"="12" }
67-
; CHECK: attributes #1 = { "amdgpu-elide-module-lds" }

0 commit comments

Comments
 (0)