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