1 ; RUN: llc < %s -march=nvptx -mcpu=sm_10 | FileCheck %s
2 ; RUN: llc < %s -march=nvptx64 -mcpu=sm_10 | FileCheck %s
3 ; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
4 ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s
6 define ptx_device i32 @test_tid_x() {
7 ; CHECK: mov.u32 %r0, %tid.x;
9 %x = call i32 @llvm.ptx.read.tid.x()
13 define ptx_device i32 @test_tid_y() {
14 ; CHECK: mov.u32 %r0, %tid.y;
16 %x = call i32 @llvm.ptx.read.tid.y()
20 define ptx_device i32 @test_tid_z() {
21 ; CHECK: mov.u32 %r0, %tid.z;
23 %x = call i32 @llvm.ptx.read.tid.z()
27 define ptx_device i32 @test_tid_w() {
28 ; CHECK: mov.u32 %r0, %tid.w;
30 %x = call i32 @llvm.ptx.read.tid.w()
34 define ptx_device i32 @test_ntid_x() {
35 ; CHECK: mov.u32 %r0, %ntid.x;
37 %x = call i32 @llvm.ptx.read.ntid.x()
41 define ptx_device i32 @test_ntid_y() {
42 ; CHECK: mov.u32 %r0, %ntid.y;
44 %x = call i32 @llvm.ptx.read.ntid.y()
48 define ptx_device i32 @test_ntid_z() {
49 ; CHECK: mov.u32 %r0, %ntid.z;
51 %x = call i32 @llvm.ptx.read.ntid.z()
55 define ptx_device i32 @test_ntid_w() {
56 ; CHECK: mov.u32 %r0, %ntid.w;
58 %x = call i32 @llvm.ptx.read.ntid.w()
62 define ptx_device i32 @test_laneid() {
63 ; CHECK: mov.u32 %r0, %laneid;
65 %x = call i32 @llvm.ptx.read.laneid()
69 define ptx_device i32 @test_warpid() {
70 ; CHECK: mov.u32 %r0, %warpid;
72 %x = call i32 @llvm.ptx.read.warpid()
76 define ptx_device i32 @test_nwarpid() {
77 ; CHECK: mov.u32 %r0, %nwarpid;
79 %x = call i32 @llvm.ptx.read.nwarpid()
83 define ptx_device i32 @test_ctaid_x() {
84 ; CHECK: mov.u32 %r0, %ctaid.x;
86 %x = call i32 @llvm.ptx.read.ctaid.x()
90 define ptx_device i32 @test_ctaid_y() {
91 ; CHECK: mov.u32 %r0, %ctaid.y;
93 %x = call i32 @llvm.ptx.read.ctaid.y()
97 define ptx_device i32 @test_ctaid_z() {
98 ; CHECK: mov.u32 %r0, %ctaid.z;
100 %x = call i32 @llvm.ptx.read.ctaid.z()
104 define ptx_device i32 @test_ctaid_w() {
105 ; CHECK: mov.u32 %r0, %ctaid.w;
107 %x = call i32 @llvm.ptx.read.ctaid.w()
111 define ptx_device i32 @test_nctaid_x() {
112 ; CHECK: mov.u32 %r0, %nctaid.x;
114 %x = call i32 @llvm.ptx.read.nctaid.x()
118 define ptx_device i32 @test_nctaid_y() {
119 ; CHECK: mov.u32 %r0, %nctaid.y;
121 %x = call i32 @llvm.ptx.read.nctaid.y()
125 define ptx_device i32 @test_nctaid_z() {
126 ; CHECK: mov.u32 %r0, %nctaid.z;
128 %x = call i32 @llvm.ptx.read.nctaid.z()
132 define ptx_device i32 @test_nctaid_w() {
133 ; CHECK: mov.u32 %r0, %nctaid.w;
135 %x = call i32 @llvm.ptx.read.nctaid.w()
139 define ptx_device i32 @test_smid() {
140 ; CHECK: mov.u32 %r0, %smid;
142 %x = call i32 @llvm.ptx.read.smid()
146 define ptx_device i32 @test_nsmid() {
147 ; CHECK: mov.u32 %r0, %nsmid;
149 %x = call i32 @llvm.ptx.read.nsmid()
153 define ptx_device i32 @test_gridid() {
154 ; CHECK: mov.u32 %r0, %gridid;
156 %x = call i32 @llvm.ptx.read.gridid()
160 define ptx_device i32 @test_lanemask_eq() {
161 ; CHECK: mov.u32 %r0, %lanemask_eq;
163 %x = call i32 @llvm.ptx.read.lanemask.eq()
167 define ptx_device i32 @test_lanemask_le() {
168 ; CHECK: mov.u32 %r0, %lanemask_le;
170 %x = call i32 @llvm.ptx.read.lanemask.le()
174 define ptx_device i32 @test_lanemask_lt() {
175 ; CHECK: mov.u32 %r0, %lanemask_lt;
177 %x = call i32 @llvm.ptx.read.lanemask.lt()
181 define ptx_device i32 @test_lanemask_ge() {
182 ; CHECK: mov.u32 %r0, %lanemask_ge;
184 %x = call i32 @llvm.ptx.read.lanemask.ge()
188 define ptx_device i32 @test_lanemask_gt() {
189 ; CHECK: mov.u32 %r0, %lanemask_gt;
191 %x = call i32 @llvm.ptx.read.lanemask.gt()
195 define ptx_device i32 @test_clock() {
196 ; CHECK: mov.u32 %r0, %clock;
198 %x = call i32 @llvm.ptx.read.clock()
202 define ptx_device i64 @test_clock64() {
203 ; CHECK: mov.u64 %rl0, %clock64;
205 %x = call i64 @llvm.ptx.read.clock64()
209 define ptx_device i32 @test_pm0() {
210 ; CHECK: mov.u32 %r0, %pm0;
212 %x = call i32 @llvm.ptx.read.pm0()
216 define ptx_device i32 @test_pm1() {
217 ; CHECK: mov.u32 %r0, %pm1;
219 %x = call i32 @llvm.ptx.read.pm1()
223 define ptx_device i32 @test_pm2() {
224 ; CHECK: mov.u32 %r0, %pm2;
226 %x = call i32 @llvm.ptx.read.pm2()
230 define ptx_device i32 @test_pm3() {
231 ; CHECK: mov.u32 %r0, %pm3;
233 %x = call i32 @llvm.ptx.read.pm3()
237 define ptx_device void @test_bar_sync() {
240 call void @llvm.ptx.bar.sync(i32 0)
244 declare i32 @llvm.ptx.read.tid.x()
245 declare i32 @llvm.ptx.read.tid.y()
246 declare i32 @llvm.ptx.read.tid.z()
247 declare i32 @llvm.ptx.read.tid.w()
248 declare i32 @llvm.ptx.read.ntid.x()
249 declare i32 @llvm.ptx.read.ntid.y()
250 declare i32 @llvm.ptx.read.ntid.z()
251 declare i32 @llvm.ptx.read.ntid.w()
253 declare i32 @llvm.ptx.read.laneid()
254 declare i32 @llvm.ptx.read.warpid()
255 declare i32 @llvm.ptx.read.nwarpid()
257 declare i32 @llvm.ptx.read.ctaid.x()
258 declare i32 @llvm.ptx.read.ctaid.y()
259 declare i32 @llvm.ptx.read.ctaid.z()
260 declare i32 @llvm.ptx.read.ctaid.w()
261 declare i32 @llvm.ptx.read.nctaid.x()
262 declare i32 @llvm.ptx.read.nctaid.y()
263 declare i32 @llvm.ptx.read.nctaid.z()
264 declare i32 @llvm.ptx.read.nctaid.w()
266 declare i32 @llvm.ptx.read.smid()
267 declare i32 @llvm.ptx.read.nsmid()
268 declare i32 @llvm.ptx.read.gridid()
270 declare i32 @llvm.ptx.read.lanemask.eq()
271 declare i32 @llvm.ptx.read.lanemask.le()
272 declare i32 @llvm.ptx.read.lanemask.lt()
273 declare i32 @llvm.ptx.read.lanemask.ge()
274 declare i32 @llvm.ptx.read.lanemask.gt()
276 declare i32 @llvm.ptx.read.clock()
277 declare i64 @llvm.ptx.read.clock64()
279 declare i32 @llvm.ptx.read.pm0()
280 declare i32 @llvm.ptx.read.pm1()
281 declare i32 @llvm.ptx.read.pm2()
282 declare i32 @llvm.ptx.read.pm3()
284 declare void @llvm.ptx.bar.sync(i32 %i)