[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / NVPTX / envreg.ll
blobfe1e411ee2204687f2285402cec582cb2ae1c9d2
1 ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 -verify-machineinstrs | FileCheck %s
2 ; RUN: %if ptxas %{ llc < %s -march=nvptx64 -mcpu=sm_20 -verify-machineinstrs | %ptxas-verify %}
5 declare i32 @llvm.nvvm.read.ptx.sreg.envreg0()
6 declare i32 @llvm.nvvm.read.ptx.sreg.envreg1()
7 declare i32 @llvm.nvvm.read.ptx.sreg.envreg2()
8 declare i32 @llvm.nvvm.read.ptx.sreg.envreg3()
9 declare i32 @llvm.nvvm.read.ptx.sreg.envreg4()
10 declare i32 @llvm.nvvm.read.ptx.sreg.envreg5()
11 declare i32 @llvm.nvvm.read.ptx.sreg.envreg6()
12 declare i32 @llvm.nvvm.read.ptx.sreg.envreg7()
13 declare i32 @llvm.nvvm.read.ptx.sreg.envreg8()
14 declare i32 @llvm.nvvm.read.ptx.sreg.envreg9()
15 declare i32 @llvm.nvvm.read.ptx.sreg.envreg10()
16 declare i32 @llvm.nvvm.read.ptx.sreg.envreg11()
17 declare i32 @llvm.nvvm.read.ptx.sreg.envreg12()
18 declare i32 @llvm.nvvm.read.ptx.sreg.envreg13()
19 declare i32 @llvm.nvvm.read.ptx.sreg.envreg14()
20 declare i32 @llvm.nvvm.read.ptx.sreg.envreg15()
21 declare i32 @llvm.nvvm.read.ptx.sreg.envreg16()
22 declare i32 @llvm.nvvm.read.ptx.sreg.envreg17()
23 declare i32 @llvm.nvvm.read.ptx.sreg.envreg18()
24 declare i32 @llvm.nvvm.read.ptx.sreg.envreg19()
25 declare i32 @llvm.nvvm.read.ptx.sreg.envreg20()
26 declare i32 @llvm.nvvm.read.ptx.sreg.envreg21()
27 declare i32 @llvm.nvvm.read.ptx.sreg.envreg22()
28 declare i32 @llvm.nvvm.read.ptx.sreg.envreg23()
29 declare i32 @llvm.nvvm.read.ptx.sreg.envreg24()
30 declare i32 @llvm.nvvm.read.ptx.sreg.envreg25()
31 declare i32 @llvm.nvvm.read.ptx.sreg.envreg26()
32 declare i32 @llvm.nvvm.read.ptx.sreg.envreg27()
33 declare i32 @llvm.nvvm.read.ptx.sreg.envreg28()
34 declare i32 @llvm.nvvm.read.ptx.sreg.envreg29()
35 declare i32 @llvm.nvvm.read.ptx.sreg.envreg30()
36 declare i32 @llvm.nvvm.read.ptx.sreg.envreg31()
39 ; CHECK: foo
40 define i32 @foo() {
41 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg0
42   %val0 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg0()
43 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg1
44   %val1 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg1()
45 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg2
46   %val2 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg2()
47 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg3
48   %val3 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg3()
49 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg4
50   %val4 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg4()
51 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg5
52   %val5 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg5()
53 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg6
54   %val6 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg6()
55 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg7
56   %val7 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg7()
57 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg8
58   %val8 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg8()
59 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg9
60   %val9 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg9()
61 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg10
62   %val10 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg10()
63 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg11
64   %val11 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg11()
65 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg12
66   %val12 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg12()
67 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg13
68   %val13 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg13()
69 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg14
70   %val14 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg14()
71 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg15
72   %val15 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg15()
73 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg16
74   %val16 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg16()
75 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg17
76   %val17 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg17()
77 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg18
78   %val18 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg18()
79 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg19
80   %val19 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg19()
81 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg20
82   %val20 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg20()
83 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg21
84   %val21 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg21()
85 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg22
86   %val22 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg22()
87 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg23
88   %val23 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg23()
89 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg24
90   %val24 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg24()
91 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg25
92   %val25 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg25()
93 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg26
94   %val26 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg26()
95 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg27
96   %val27 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg27()
97 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg28
98   %val28 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg28()
99 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg29
100   %val29 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg29()
101 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg30
102   %val30 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg30()
103 ; CHECK: mov.b32 %r{{[0-9]+}}, %envreg31
104   %val31 = tail call i32 @llvm.nvvm.read.ptx.sreg.envreg31()
107   %ret0 = add i32 %val0, %val1
108   %ret1 = add i32 %ret0, %val2
109   %ret2 = add i32 %ret1, %val3
110   %ret3 = add i32 %ret2, %val4
111   %ret4 = add i32 %ret3, %val5
112   %ret5 = add i32 %ret4, %val6
113   %ret6 = add i32 %ret5, %val7
114   %ret7 = add i32 %ret6, %val8
115   %ret8 = add i32 %ret7, %val9
116   %ret9 = add i32 %ret8, %val10
117   %ret10 = add i32 %ret9, %val11
118   %ret11 = add i32 %ret10, %val12
119   %ret12 = add i32 %ret11, %val13
120   %ret13 = add i32 %ret12, %val14
121   %ret14 = add i32 %ret13, %val15
122   %ret15 = add i32 %ret14, %val16
123   %ret16 = add i32 %ret15, %val17
124   %ret17 = add i32 %ret16, %val18
125   %ret18 = add i32 %ret17, %val19
126   %ret19 = add i32 %ret18, %val20
127   %ret20 = add i32 %ret19, %val21
128   %ret21 = add i32 %ret20, %val22
129   %ret22 = add i32 %ret21, %val23
130   %ret23 = add i32 %ret22, %val24
131   %ret24 = add i32 %ret23, %val25
132   %ret25 = add i32 %ret24, %val26
133   %ret26 = add i32 %ret25, %val27
134   %ret27 = add i32 %ret26, %val28
135   %ret28 = add i32 %ret27, %val29
136   %ret29 = add i32 %ret28, %val30
137   %ret30 = add i32 %ret29, %val31
139   ret i32 %ret30