1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -S -mtriple=nvptx-nvidia-cuda -nvvm-intr-range \ 4*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck --check-prefix=RANGE --check-prefix=RANGE_20 %s 5*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -S -mtriple=nvptx-nvidia-cuda \ 6*9880d681SAndroid Build Coastguard Worker; RUN: -nvvm-intr-range -nvvm-intr-range-sm=30 \ 7*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck --check-prefix=RANGE --check-prefix=RANGE_30 %s 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_tid_x() { 10*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %tid.x; 11*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.tid.x(), !range ![[BLK_IDX_XY:[0-9]+]] 12*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 13*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.tid.x() 14*9880d681SAndroid Build Coastguard Worker ret i32 %x 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_tid_y() { 18*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %tid.y; 19*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.tid.y(), !range ![[BLK_IDX_XY]] 20*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 21*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.tid.y() 22*9880d681SAndroid Build Coastguard Worker ret i32 %x 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_tid_z() { 26*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %tid.z; 27*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.tid.z(), !range ![[BLK_IDX_Z:[0-9]+]] 28*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 29*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.tid.z() 30*9880d681SAndroid Build Coastguard Worker ret i32 %x 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_tid_w() { 34*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %tid.w; 35*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 36*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.tid.w() 37*9880d681SAndroid Build Coastguard Worker ret i32 %x 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_ntid_x() { 41*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %ntid.x; 42*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.ntid.x(), !range ![[BLK_SIZE_XY:[0-9]+]] 43*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 44*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.ntid.x() 45*9880d681SAndroid Build Coastguard Worker ret i32 %x 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_ntid_y() { 49*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %ntid.y; 50*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.ntid.y(), !range ![[BLK_SIZE_XY]] 51*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 52*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.ntid.y() 53*9880d681SAndroid Build Coastguard Worker ret i32 %x 54*9880d681SAndroid Build Coastguard Worker} 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_ntid_z() { 57*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %ntid.z; 58*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.ntid.z(), !range ![[BLK_SIZE_Z:[0-9]+]] 59*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 60*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.ntid.z() 61*9880d681SAndroid Build Coastguard Worker ret i32 %x 62*9880d681SAndroid Build Coastguard Worker} 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_ntid_w() { 65*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %ntid.w; 66*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 67*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.ntid.w() 68*9880d681SAndroid Build Coastguard Worker ret i32 %x 69*9880d681SAndroid Build Coastguard Worker} 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_laneid() { 72*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %laneid; 73*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.laneid(), !range ![[LANEID:[0-9]+]] 74*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 75*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.laneid() 76*9880d681SAndroid Build Coastguard Worker ret i32 %x 77*9880d681SAndroid Build Coastguard Worker} 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_warpsize() { 80*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, WARP_SZ; 81*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.warpsize(), !range ![[WARPSIZE:[0-9]+]] 82*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 83*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.warpsize() 84*9880d681SAndroid Build Coastguard Worker ret i32 %x 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_warpid() { 88*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %warpid; 89*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 90*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.warpid() 91*9880d681SAndroid Build Coastguard Worker ret i32 %x 92*9880d681SAndroid Build Coastguard Worker} 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_nwarpid() { 95*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %nwarpid; 96*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 97*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.nwarpid() 98*9880d681SAndroid Build Coastguard Worker ret i32 %x 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_ctaid_y() { 102*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %ctaid.y; 103*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.ctaid.y(), !range ![[GRID_IDX_YZ:[0-9]+]] 104*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 105*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.y() 106*9880d681SAndroid Build Coastguard Worker ret i32 %x 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_ctaid_z() { 110*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %ctaid.z; 111*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.ctaid.z(), !range ![[GRID_IDX_YZ]] 112*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 113*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.z() 114*9880d681SAndroid Build Coastguard Worker ret i32 %x 115*9880d681SAndroid Build Coastguard Worker} 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_ctaid_x() { 118*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %ctaid.x; 119*9880d681SAndroid Build Coastguard Worker; RANGE_30: call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x(), !range ![[GRID_IDX_X:[0-9]+]] 120*9880d681SAndroid Build Coastguard Worker; RANGE_20: call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x(), !range ![[GRID_IDX_YZ]] 121*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 122*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() 123*9880d681SAndroid Build Coastguard Worker ret i32 %x 124*9880d681SAndroid Build Coastguard Worker} 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_ctaid_w() { 127*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %ctaid.w; 128*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 129*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.w() 130*9880d681SAndroid Build Coastguard Worker ret i32 %x 131*9880d681SAndroid Build Coastguard Worker} 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_nctaid_y() { 134*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %nctaid.y; 135*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.nctaid.y(), !range ![[GRID_SIZE_YZ:[0-9]+]] 136*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 137*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.nctaid.y() 138*9880d681SAndroid Build Coastguard Worker ret i32 %x 139*9880d681SAndroid Build Coastguard Worker} 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_nctaid_z() { 142*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %nctaid.z; 143*9880d681SAndroid Build Coastguard Worker; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.nctaid.z(), !range ![[GRID_SIZE_YZ]] 144*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 145*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.nctaid.z() 146*9880d681SAndroid Build Coastguard Worker ret i32 %x 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_nctaid_x() { 150*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %nctaid.x; 151*9880d681SAndroid Build Coastguard Worker; RANGE_30: call i32 @llvm.nvvm.read.ptx.sreg.nctaid.x(), !range ![[GRID_SIZE_X:[0-9]+]] 152*9880d681SAndroid Build Coastguard Worker; RANGE_20: call i32 @llvm.nvvm.read.ptx.sreg.nctaid.x(), !range ![[GRID_SIZE_YZ]] 153*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 154*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.nctaid.x() 155*9880d681SAndroid Build Coastguard Worker ret i32 %x 156*9880d681SAndroid Build Coastguard Worker} 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_nctaid_w() { 160*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %nctaid.w; 161*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 162*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.nctaid.w() 163*9880d681SAndroid Build Coastguard Worker ret i32 %x 164*9880d681SAndroid Build Coastguard Worker} 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_smid() { 167*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %smid; 168*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 169*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.smid() 170*9880d681SAndroid Build Coastguard Worker ret i32 %x 171*9880d681SAndroid Build Coastguard Worker} 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_nsmid() { 174*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %nsmid; 175*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 176*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.nsmid() 177*9880d681SAndroid Build Coastguard Worker ret i32 %x 178*9880d681SAndroid Build Coastguard Worker} 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_gridid() { 181*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %gridid; 182*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 183*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.gridid() 184*9880d681SAndroid Build Coastguard Worker ret i32 %x 185*9880d681SAndroid Build Coastguard Worker} 186*9880d681SAndroid Build Coastguard Worker 187*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_lanemask_eq() { 188*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %lanemask_eq; 189*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 190*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.lanemask.eq() 191*9880d681SAndroid Build Coastguard Worker ret i32 %x 192*9880d681SAndroid Build Coastguard Worker} 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_lanemask_le() { 195*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %lanemask_le; 196*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 197*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.lanemask.le() 198*9880d681SAndroid Build Coastguard Worker ret i32 %x 199*9880d681SAndroid Build Coastguard Worker} 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_lanemask_lt() { 202*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %lanemask_lt; 203*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 204*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.lanemask.lt() 205*9880d681SAndroid Build Coastguard Worker ret i32 %x 206*9880d681SAndroid Build Coastguard Worker} 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_lanemask_ge() { 209*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %lanemask_ge; 210*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 211*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.lanemask.ge() 212*9880d681SAndroid Build Coastguard Worker ret i32 %x 213*9880d681SAndroid Build Coastguard Worker} 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_lanemask_gt() { 216*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %lanemask_gt; 217*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 218*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.lanemask.gt() 219*9880d681SAndroid Build Coastguard Worker ret i32 %x 220*9880d681SAndroid Build Coastguard Worker} 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_clock() { 223*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %clock; 224*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 225*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.clock() 226*9880d681SAndroid Build Coastguard Worker ret i32 %x 227*9880d681SAndroid Build Coastguard Worker} 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Workerdefine ptx_device i64 @test_clock64() { 230*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u64 %rd{{[0-9]+}}, %clock64; 231*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 232*9880d681SAndroid Build Coastguard Worker %x = call i64 @llvm.nvvm.read.ptx.sreg.clock64() 233*9880d681SAndroid Build Coastguard Worker ret i64 %x 234*9880d681SAndroid Build Coastguard Worker} 235*9880d681SAndroid Build Coastguard Worker 236*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_pm0() { 237*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %pm0; 238*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 239*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.pm0() 240*9880d681SAndroid Build Coastguard Worker ret i32 %x 241*9880d681SAndroid Build Coastguard Worker} 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_pm1() { 244*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %pm1; 245*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 246*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.pm1() 247*9880d681SAndroid Build Coastguard Worker ret i32 %x 248*9880d681SAndroid Build Coastguard Worker} 249*9880d681SAndroid Build Coastguard Worker 250*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_pm2() { 251*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %pm2; 252*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 253*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.pm2() 254*9880d681SAndroid Build Coastguard Worker ret i32 %x 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Workerdefine ptx_device i32 @test_pm3() { 258*9880d681SAndroid Build Coastguard Worker; CHECK: mov.u32 %r{{[0-9]+}}, %pm3; 259*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 260*9880d681SAndroid Build Coastguard Worker %x = call i32 @llvm.nvvm.read.ptx.sreg.pm3() 261*9880d681SAndroid Build Coastguard Worker ret i32 %x 262*9880d681SAndroid Build Coastguard Worker} 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Workerdefine ptx_device void @test_bar_sync() { 265*9880d681SAndroid Build Coastguard Worker; CHECK: bar.sync 0 266*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 267*9880d681SAndroid Build Coastguard Worker call void @llvm.nvvm.bar.sync(i32 0) 268*9880d681SAndroid Build Coastguard Worker ret void 269*9880d681SAndroid Build Coastguard Worker} 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.tid.x() 272*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.tid.y() 273*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.tid.z() 274*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.tid.w() 275*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.ntid.x() 276*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.ntid.y() 277*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.ntid.z() 278*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.ntid.w() 279*9880d681SAndroid Build Coastguard Worker 280*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.warpsize() 281*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.laneid() 282*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.warpid() 283*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.nwarpid() 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() 286*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.ctaid.y() 287*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.ctaid.z() 288*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.ctaid.w() 289*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.nctaid.x() 290*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.nctaid.y() 291*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.nctaid.z() 292*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.nctaid.w() 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.smid() 295*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.nsmid() 296*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.gridid() 297*9880d681SAndroid Build Coastguard Worker 298*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.lanemask.eq() 299*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.lanemask.le() 300*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.lanemask.lt() 301*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.lanemask.ge() 302*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.lanemask.gt() 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.clock() 305*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.nvvm.read.ptx.sreg.clock64() 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.pm0() 308*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.pm1() 309*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.pm2() 310*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.nvvm.read.ptx.sreg.pm3() 311*9880d681SAndroid Build Coastguard Worker 312*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.nvvm.bar.sync(i32 %i) 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Worker; RANGE-DAG: ![[BLK_IDX_XY]] = !{i32 0, i32 1024} 315*9880d681SAndroid Build Coastguard Worker; RANGE-DAG: ![[BLK_IDX_Z]] = !{i32 0, i32 64} 316*9880d681SAndroid Build Coastguard Worker; RANGE-DAG: ![[BLK_SIZE_XY]] = !{i32 1, i32 1025} 317*9880d681SAndroid Build Coastguard Worker; RANGE-DAG: ![[BLK_SIZE_Z]] = !{i32 1, i32 65} 318*9880d681SAndroid Build Coastguard Worker; RANGE-DAG: ![[LANEID]] = !{i32 0, i32 32} 319*9880d681SAndroid Build Coastguard Worker; RANGE-DAG: ![[WARPSIZE]] = !{i32 32, i32 33} 320*9880d681SAndroid Build Coastguard Worker; RANGE_30-DAG: ![[GRID_IDX_X]] = !{i32 0, i32 2147483647} 321*9880d681SAndroid Build Coastguard Worker; RANGE-DAG: ![[GRID_IDX_YZ]] = !{i32 0, i32 65535} 322*9880d681SAndroid Build Coastguard Worker; RANGE_30-DAG: ![[GRID_SIZE_X]] = !{i32 1, i32 -2147483648} 323*9880d681SAndroid Build Coastguard Worker; RANGE-DAG: ![[GRID_SIZE_YZ]] = !{i32 1, i32 65536} 324