1*9880d681SAndroid Build Coastguard Worker; RUN: opt -mtriple=amdgcn-unknown-amdhsa -S -amdgpu-annotate-kernel-features < %s | FileCheck -check-prefix=HSA %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workgroup.id.x() #0 4*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workgroup.id.y() #0 5*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workgroup.id.z() #0 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workitem.id.x() #0 8*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workitem.id.y() #0 9*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workitem.id.z() #0 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdeclare i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr() #0 12*9880d681SAndroid Build Coastguard Workerdeclare i8 addrspace(2)* @llvm.amdgcn.queue.ptr() #0 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tgid_x(i32 addrspace(1)* %ptr) #1 { 15*9880d681SAndroid Build Coastguard Workerdefine void @use_tgid_x(i32 addrspace(1)* %ptr) #1 { 16*9880d681SAndroid Build Coastguard Worker %val = call i32 @llvm.amdgcn.workgroup.id.x() 17*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 addrspace(1)* %ptr 18*9880d681SAndroid Build Coastguard Worker ret void 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tgid_y(i32 addrspace(1)* %ptr) #2 { 22*9880d681SAndroid Build Coastguard Workerdefine void @use_tgid_y(i32 addrspace(1)* %ptr) #1 { 23*9880d681SAndroid Build Coastguard Worker %val = call i32 @llvm.amdgcn.workgroup.id.y() 24*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 addrspace(1)* %ptr 25*9880d681SAndroid Build Coastguard Worker ret void 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; HSA: define void @multi_use_tgid_y(i32 addrspace(1)* %ptr) #2 { 29*9880d681SAndroid Build Coastguard Workerdefine void @multi_use_tgid_y(i32 addrspace(1)* %ptr) #1 { 30*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workgroup.id.y() 31*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 32*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workgroup.id.y() 33*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 34*9880d681SAndroid Build Coastguard Worker ret void 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tgid_x_y(i32 addrspace(1)* %ptr) #2 { 38*9880d681SAndroid Build Coastguard Workerdefine void @use_tgid_x_y(i32 addrspace(1)* %ptr) #1 { 39*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workgroup.id.x() 40*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workgroup.id.y() 41*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 42*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 43*9880d681SAndroid Build Coastguard Worker ret void 44*9880d681SAndroid Build Coastguard Worker} 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tgid_z(i32 addrspace(1)* %ptr) #3 { 47*9880d681SAndroid Build Coastguard Workerdefine void @use_tgid_z(i32 addrspace(1)* %ptr) #1 { 48*9880d681SAndroid Build Coastguard Worker %val = call i32 @llvm.amdgcn.workgroup.id.z() 49*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 addrspace(1)* %ptr 50*9880d681SAndroid Build Coastguard Worker ret void 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tgid_x_z(i32 addrspace(1)* %ptr) #3 { 54*9880d681SAndroid Build Coastguard Workerdefine void @use_tgid_x_z(i32 addrspace(1)* %ptr) #1 { 55*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workgroup.id.x() 56*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workgroup.id.z() 57*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 58*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 59*9880d681SAndroid Build Coastguard Worker ret void 60*9880d681SAndroid Build Coastguard Worker} 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tgid_y_z(i32 addrspace(1)* %ptr) #4 { 63*9880d681SAndroid Build Coastguard Workerdefine void @use_tgid_y_z(i32 addrspace(1)* %ptr) #1 { 64*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workgroup.id.y() 65*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workgroup.id.z() 66*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 67*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 68*9880d681SAndroid Build Coastguard Worker ret void 69*9880d681SAndroid Build Coastguard Worker} 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tgid_x_y_z(i32 addrspace(1)* %ptr) #4 { 72*9880d681SAndroid Build Coastguard Workerdefine void @use_tgid_x_y_z(i32 addrspace(1)* %ptr) #1 { 73*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workgroup.id.x() 74*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workgroup.id.y() 75*9880d681SAndroid Build Coastguard Worker %val2 = call i32 @llvm.amdgcn.workgroup.id.z() 76*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 77*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 78*9880d681SAndroid Build Coastguard Worker store volatile i32 %val2, i32 addrspace(1)* %ptr 79*9880d681SAndroid Build Coastguard Worker ret void 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tidig_x(i32 addrspace(1)* %ptr) #1 { 83*9880d681SAndroid Build Coastguard Workerdefine void @use_tidig_x(i32 addrspace(1)* %ptr) #1 { 84*9880d681SAndroid Build Coastguard Worker %val = call i32 @llvm.amdgcn.workitem.id.x() 85*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 addrspace(1)* %ptr 86*9880d681SAndroid Build Coastguard Worker ret void 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tidig_y(i32 addrspace(1)* %ptr) #5 { 90*9880d681SAndroid Build Coastguard Workerdefine void @use_tidig_y(i32 addrspace(1)* %ptr) #1 { 91*9880d681SAndroid Build Coastguard Worker %val = call i32 @llvm.amdgcn.workitem.id.y() 92*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 addrspace(1)* %ptr 93*9880d681SAndroid Build Coastguard Worker ret void 94*9880d681SAndroid Build Coastguard Worker} 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tidig_z(i32 addrspace(1)* %ptr) #6 { 97*9880d681SAndroid Build Coastguard Workerdefine void @use_tidig_z(i32 addrspace(1)* %ptr) #1 { 98*9880d681SAndroid Build Coastguard Worker %val = call i32 @llvm.amdgcn.workitem.id.z() 99*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 addrspace(1)* %ptr 100*9880d681SAndroid Build Coastguard Worker ret void 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tidig_x_tgid_x(i32 addrspace(1)* %ptr) #1 { 104*9880d681SAndroid Build Coastguard Workerdefine void @use_tidig_x_tgid_x(i32 addrspace(1)* %ptr) #1 { 105*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workitem.id.x() 106*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workgroup.id.x() 107*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 108*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 109*9880d681SAndroid Build Coastguard Worker ret void 110*9880d681SAndroid Build Coastguard Worker} 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tidig_y_tgid_y(i32 addrspace(1)* %ptr) #7 { 113*9880d681SAndroid Build Coastguard Workerdefine void @use_tidig_y_tgid_y(i32 addrspace(1)* %ptr) #1 { 114*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workitem.id.y() 115*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workgroup.id.y() 116*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 117*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 118*9880d681SAndroid Build Coastguard Worker ret void 119*9880d681SAndroid Build Coastguard Worker} 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_tidig_x_y_z(i32 addrspace(1)* %ptr) #8 { 122*9880d681SAndroid Build Coastguard Workerdefine void @use_tidig_x_y_z(i32 addrspace(1)* %ptr) #1 { 123*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workitem.id.x() 124*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workitem.id.y() 125*9880d681SAndroid Build Coastguard Worker %val2 = call i32 @llvm.amdgcn.workitem.id.z() 126*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 127*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 128*9880d681SAndroid Build Coastguard Worker store volatile i32 %val2, i32 addrspace(1)* %ptr 129*9880d681SAndroid Build Coastguard Worker ret void 130*9880d681SAndroid Build Coastguard Worker} 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_all_workitems(i32 addrspace(1)* %ptr) #9 { 133*9880d681SAndroid Build Coastguard Workerdefine void @use_all_workitems(i32 addrspace(1)* %ptr) #1 { 134*9880d681SAndroid Build Coastguard Worker %val0 = call i32 @llvm.amdgcn.workitem.id.x() 135*9880d681SAndroid Build Coastguard Worker %val1 = call i32 @llvm.amdgcn.workitem.id.y() 136*9880d681SAndroid Build Coastguard Worker %val2 = call i32 @llvm.amdgcn.workitem.id.z() 137*9880d681SAndroid Build Coastguard Worker %val3 = call i32 @llvm.amdgcn.workgroup.id.x() 138*9880d681SAndroid Build Coastguard Worker %val4 = call i32 @llvm.amdgcn.workgroup.id.y() 139*9880d681SAndroid Build Coastguard Worker %val5 = call i32 @llvm.amdgcn.workgroup.id.z() 140*9880d681SAndroid Build Coastguard Worker store volatile i32 %val0, i32 addrspace(1)* %ptr 141*9880d681SAndroid Build Coastguard Worker store volatile i32 %val1, i32 addrspace(1)* %ptr 142*9880d681SAndroid Build Coastguard Worker store volatile i32 %val2, i32 addrspace(1)* %ptr 143*9880d681SAndroid Build Coastguard Worker store volatile i32 %val3, i32 addrspace(1)* %ptr 144*9880d681SAndroid Build Coastguard Worker store volatile i32 %val4, i32 addrspace(1)* %ptr 145*9880d681SAndroid Build Coastguard Worker store volatile i32 %val5, i32 addrspace(1)* %ptr 146*9880d681SAndroid Build Coastguard Worker ret void 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_dispatch_ptr(i32 addrspace(1)* %ptr) #10 { 150*9880d681SAndroid Build Coastguard Workerdefine void @use_dispatch_ptr(i32 addrspace(1)* %ptr) #1 { 151*9880d681SAndroid Build Coastguard Worker %dispatch.ptr = call i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr() 152*9880d681SAndroid Build Coastguard Worker %bc = bitcast i8 addrspace(2)* %dispatch.ptr to i32 addrspace(2)* 153*9880d681SAndroid Build Coastguard Worker %val = load i32, i32 addrspace(2)* %bc 154*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 addrspace(1)* %ptr 155*9880d681SAndroid Build Coastguard Worker ret void 156*9880d681SAndroid Build Coastguard Worker} 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_queue_ptr(i32 addrspace(1)* %ptr) #11 { 159*9880d681SAndroid Build Coastguard Workerdefine void @use_queue_ptr(i32 addrspace(1)* %ptr) #1 { 160*9880d681SAndroid Build Coastguard Worker %dispatch.ptr = call i8 addrspace(2)* @llvm.amdgcn.queue.ptr() 161*9880d681SAndroid Build Coastguard Worker %bc = bitcast i8 addrspace(2)* %dispatch.ptr to i32 addrspace(2)* 162*9880d681SAndroid Build Coastguard Worker %val = load i32, i32 addrspace(2)* %bc 163*9880d681SAndroid Build Coastguard Worker store i32 %val, i32 addrspace(1)* %ptr 164*9880d681SAndroid Build Coastguard Worker ret void 165*9880d681SAndroid Build Coastguard Worker} 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_group_to_flat_addrspacecast(i32 addrspace(3)* %ptr) #11 { 168*9880d681SAndroid Build Coastguard Workerdefine void @use_group_to_flat_addrspacecast(i32 addrspace(3)* %ptr) #1 { 169*9880d681SAndroid Build Coastguard Worker %stof = addrspacecast i32 addrspace(3)* %ptr to i32 addrspace(4)* 170*9880d681SAndroid Build Coastguard Worker store volatile i32 0, i32 addrspace(4)* %stof 171*9880d681SAndroid Build Coastguard Worker ret void 172*9880d681SAndroid Build Coastguard Worker} 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_private_to_flat_addrspacecast(i32* %ptr) #11 { 175*9880d681SAndroid Build Coastguard Workerdefine void @use_private_to_flat_addrspacecast(i32* %ptr) #1 { 176*9880d681SAndroid Build Coastguard Worker %stof = addrspacecast i32* %ptr to i32 addrspace(4)* 177*9880d681SAndroid Build Coastguard Worker store volatile i32 0, i32 addrspace(4)* %stof 178*9880d681SAndroid Build Coastguard Worker ret void 179*9880d681SAndroid Build Coastguard Worker} 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_flat_to_group_addrspacecast(i32 addrspace(4)* %ptr) #1 { 182*9880d681SAndroid Build Coastguard Workerdefine void @use_flat_to_group_addrspacecast(i32 addrspace(4)* %ptr) #1 { 183*9880d681SAndroid Build Coastguard Worker %ftos = addrspacecast i32 addrspace(4)* %ptr to i32 addrspace(3)* 184*9880d681SAndroid Build Coastguard Worker store volatile i32 0, i32 addrspace(3)* %ftos 185*9880d681SAndroid Build Coastguard Worker ret void 186*9880d681SAndroid Build Coastguard Worker} 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_flat_to_private_addrspacecast(i32 addrspace(4)* %ptr) #1 { 189*9880d681SAndroid Build Coastguard Workerdefine void @use_flat_to_private_addrspacecast(i32 addrspace(4)* %ptr) #1 { 190*9880d681SAndroid Build Coastguard Worker %ftos = addrspacecast i32 addrspace(4)* %ptr to i32* 191*9880d681SAndroid Build Coastguard Worker store volatile i32 0, i32* %ftos 192*9880d681SAndroid Build Coastguard Worker ret void 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker; No-op addrspacecast should not use queue ptr 196*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_global_to_flat_addrspacecast(i32 addrspace(1)* %ptr) #1 { 197*9880d681SAndroid Build Coastguard Workerdefine void @use_global_to_flat_addrspacecast(i32 addrspace(1)* %ptr) #1 { 198*9880d681SAndroid Build Coastguard Worker %stof = addrspacecast i32 addrspace(1)* %ptr to i32 addrspace(4)* 199*9880d681SAndroid Build Coastguard Worker store volatile i32 0, i32 addrspace(4)* %stof 200*9880d681SAndroid Build Coastguard Worker ret void 201*9880d681SAndroid Build Coastguard Worker} 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_constant_to_flat_addrspacecast(i32 addrspace(2)* %ptr) #1 { 204*9880d681SAndroid Build Coastguard Workerdefine void @use_constant_to_flat_addrspacecast(i32 addrspace(2)* %ptr) #1 { 205*9880d681SAndroid Build Coastguard Worker %stof = addrspacecast i32 addrspace(2)* %ptr to i32 addrspace(4)* 206*9880d681SAndroid Build Coastguard Worker %ld = load volatile i32, i32 addrspace(4)* %stof 207*9880d681SAndroid Build Coastguard Worker ret void 208*9880d681SAndroid Build Coastguard Worker} 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_flat_to_global_addrspacecast(i32 addrspace(4)* %ptr) #1 { 211*9880d681SAndroid Build Coastguard Workerdefine void @use_flat_to_global_addrspacecast(i32 addrspace(4)* %ptr) #1 { 212*9880d681SAndroid Build Coastguard Worker %ftos = addrspacecast i32 addrspace(4)* %ptr to i32 addrspace(1)* 213*9880d681SAndroid Build Coastguard Worker store volatile i32 0, i32 addrspace(1)* %ftos 214*9880d681SAndroid Build Coastguard Worker ret void 215*9880d681SAndroid Build Coastguard Worker} 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Worker; HSA: define void @use_flat_to_constant_addrspacecast(i32 addrspace(4)* %ptr) #1 { 218*9880d681SAndroid Build Coastguard Workerdefine void @use_flat_to_constant_addrspacecast(i32 addrspace(4)* %ptr) #1 { 219*9880d681SAndroid Build Coastguard Worker %ftos = addrspacecast i32 addrspace(4)* %ptr to i32 addrspace(2)* 220*9880d681SAndroid Build Coastguard Worker %ld = load volatile i32, i32 addrspace(2)* %ftos 221*9880d681SAndroid Build Coastguard Worker ret void 222*9880d681SAndroid Build Coastguard Worker} 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone } 225*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind } 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Worker; HSA: attributes #0 = { nounwind readnone } 228*9880d681SAndroid Build Coastguard Worker; HSA: attributes #1 = { nounwind } 229*9880d681SAndroid Build Coastguard Worker; HSA: attributes #2 = { nounwind "amdgpu-work-group-id-y" } 230*9880d681SAndroid Build Coastguard Worker; HSA: attributes #3 = { nounwind "amdgpu-work-group-id-z" } 231*9880d681SAndroid Build Coastguard Worker; HSA: attributes #4 = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" } 232*9880d681SAndroid Build Coastguard Worker; HSA: attributes #5 = { nounwind "amdgpu-work-item-id-y" } 233*9880d681SAndroid Build Coastguard Worker; HSA: attributes #6 = { nounwind "amdgpu-work-item-id-z" } 234*9880d681SAndroid Build Coastguard Worker; HSA: attributes #7 = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-item-id-y" } 235*9880d681SAndroid Build Coastguard Worker; HSA: attributes #8 = { nounwind "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" } 236*9880d681SAndroid Build Coastguard Worker; HSA: attributes #9 = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" } 237*9880d681SAndroid Build Coastguard Worker; HSA: attributes #10 = { nounwind "amdgpu-dispatch-ptr" } 238*9880d681SAndroid Build Coastguard Worker; HSA: attributes #11 = { nounwind "amdgpu-queue-ptr" } 239