Stanislav Mekhanoshin | a3b7279 | 2017-01-30 21:05:18 +0000 | [diff] [blame] | 1 | ; RUN: opt -O1 -S -mtriple=amdgcn-unknown-amdhsa -amdgpu-internalize-symbols < %s | FileCheck %s |
| 2 | ; CHECK-NOT: unused |
| 3 | ; CHECK-NOT: foo_used |
| 4 | ; CHECK: gvar_used |
| 5 | ; CHECK: main_kernel |
| 6 | |
| 7 | @gvar_unused = addrspace(1) global i32 undef, align 4 |
| 8 | @gvar_used = addrspace(1) global i32 undef, align 4 |
| 9 | |
| 10 | ; Function Attrs: alwaysinline nounwind |
Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 11 | define amdgpu_kernel void @foo_unused(i32 addrspace(1)* %out) local_unnamed_addr #1 { |
Stanislav Mekhanoshin | a3b7279 | 2017-01-30 21:05:18 +0000 | [diff] [blame] | 12 | entry: |
| 13 | store i32 1, i32 addrspace(1)* %out |
| 14 | ret void |
| 15 | } |
| 16 | |
| 17 | ; Function Attrs: alwaysinline nounwind |
Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 18 | define amdgpu_kernel void @foo_used(i32 addrspace(1)* %out, i32 %tid) local_unnamed_addr #1 { |
Stanislav Mekhanoshin | a3b7279 | 2017-01-30 21:05:18 +0000 | [diff] [blame] | 19 | entry: |
| 20 | store i32 %tid, i32 addrspace(1)* %out |
| 21 | ret void |
| 22 | } |
| 23 | |
| 24 | define amdgpu_kernel void @main_kernel() { |
| 25 | entry: |
| 26 | %tid = call i32 @llvm.amdgcn.workitem.id.x() |
| 27 | tail call void @foo_used(i32 addrspace(1)* @gvar_used, i32 %tid) nounwind |
| 28 | ret void |
| 29 | } |
| 30 | |
| 31 | declare i32 @llvm.amdgcn.workitem.id.x() #0 |
| 32 | |
| 33 | attributes #0 = { nounwind readnone } |
| 34 | |
| 35 | attributes #1 = { alwaysinline nounwind } |