source: icGREP/icgrep-devel/llvm-3.8.0.src/test/CodeGen/AMDGPU/ret.ll @ 5027

Last change on this file since 5027 was 5027, checked in by cameron, 3 years ago

Upgrade to llvm 3.8

File size: 10.0 KB
Line 
1; RUN: llc -march=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
2; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
3
4attributes #0 = { "ShaderType"="1" }
5
6declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
7
8; GCN-LABEL: {{^}}vgpr:
9; GCN: v_mov_b32_e32 v1, v0
10; GCN-DAG: v_add_f32_e32 v0, 1.0, v1
11; GCN-DAG: exp 15, 0, 1, 1, 1, v1, v1, v1, v1
12; GCN: s_waitcnt expcnt(0)
13; GCN-NOT: s_endpgm
14define {float, float} @vgpr([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) #0 {
15  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3)
16  %x = fadd float %3, 1.0
17  %a = insertvalue {float, float} undef, float %x, 0
18  %b = insertvalue {float, float} %a, float %3, 1
19  ret {float, float} %b
20}
21
22; GCN-LABEL: {{^}}vgpr_literal:
23; GCN: v_mov_b32_e32 v4, v0
24; GCN-DAG: v_mov_b32_e32 v0, 1.0
25; GCN-DAG: v_mov_b32_e32 v1, 2.0
26; GCN-DAG: v_mov_b32_e32 v2, 4.0
27; GCN-DAG: v_mov_b32_e32 v3, -1.0
28; GCN: exp 15, 0, 1, 1, 1, v4, v4, v4, v4
29; GCN: s_waitcnt expcnt(0)
30; GCN-NOT: s_endpgm
31define {float, float, float, float} @vgpr_literal([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) #0 {
32  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3)
33  ret {float, float, float, float} {float 1.0, float 2.0, float 4.0, float -1.0}
34}
35
36
37; GCN: .long 165580
38; GCN-NEXT: .long 562
39; GCN-NEXT: .long 165584
40; GCN-NEXT: .long 562
41; GCN-LABEL: {{^}}vgpr_ps_addr0:
42; GCN-NOT: v_mov_b32_e32 v0
43; GCN-NOT: v_mov_b32_e32 v1
44; GCN-NOT: v_mov_b32_e32 v2
45; GCN: v_mov_b32_e32 v3, v4
46; GCN: v_mov_b32_e32 v4, v6
47; GCN-NOT: s_endpgm
48attributes #1 = { "ShaderType"="0" "InitialPSInputAddr"="0" }
49define {float, float, float, float, float} @vgpr_ps_addr0([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #1 {
50  %i0 = extractelement <2 x i32> %4, i32 0
51  %i1 = extractelement <2 x i32> %4, i32 1
52  %i2 = extractelement <2 x i32> %7, i32 0
53  %i3 = extractelement <2 x i32> %8, i32 0
54  %f0 = bitcast i32 %i0 to float
55  %f1 = bitcast i32 %i1 to float
56  %f2 = bitcast i32 %i2 to float
57  %f3 = bitcast i32 %i3 to float
58  %r0 = insertvalue {float, float, float, float, float} undef, float %f0, 0
59  %r1 = insertvalue {float, float, float, float, float} %r0, float %f1, 1
60  %r2 = insertvalue {float, float, float, float, float} %r1, float %f2, 2
61  %r3 = insertvalue {float, float, float, float, float} %r2, float %f3, 3
62  %r4 = insertvalue {float, float, float, float, float} %r3, float %12, 4
63  ret {float, float, float, float, float} %r4
64}
65
66
67; GCN: .long 165580
68; GCN-NEXT: .long 1
69; GCN-NEXT: .long 165584
70; GCN-NEXT: .long 1
71; GCN-LABEL: {{^}}ps_input_ena_no_inputs:
72; GCN: v_mov_b32_e32 v0, 1.0
73; GCN-NOT: s_endpgm
74define float @ps_input_ena_no_inputs([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #1 {
75  ret float 1.0
76}
77
78
79; GCN: .long 165580
80; GCN-NEXT: .long 2081
81; GCN-NEXT: .long 165584
82; GCN-NEXT: .long 2081
83; GCN-LABEL: {{^}}ps_input_ena_pos_w:
84; GCN-DAG: v_mov_b32_e32 v0, v4
85; GCN-DAG: v_mov_b32_e32 v1, v2
86; GCN: v_mov_b32_e32 v2, v3
87; GCN-NOT: s_endpgm
88define {float, <2 x float>} @ps_input_ena_pos_w([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #1 {
89  %f = bitcast <2 x i32> %8 to <2 x float>
90  %s = insertvalue {float, <2 x float>} undef, float %14, 0
91  %s1 = insertvalue {float, <2 x float>} %s, <2 x float> %f, 1
92  ret {float, <2 x float>} %s1
93}
94
95
96; GCN: .long 165580
97; GCN-NEXT: .long 562
98; GCN-NEXT: .long 165584
99; GCN-NEXT: .long 563
100; GCN-LABEL: {{^}}vgpr_ps_addr1:
101; GCN-DAG: v_mov_b32_e32 v0, v2
102; GCN-DAG: v_mov_b32_e32 v1, v3
103; GCN: v_mov_b32_e32 v2, v4
104; GCN-DAG: v_mov_b32_e32 v3, v6
105; GCN-DAG: v_mov_b32_e32 v4, v8
106; GCN-NOT: s_endpgm
107attributes #2 = { "ShaderType"="0" "InitialPSInputAddr"="1" }
108define {float, float, float, float, float} @vgpr_ps_addr1([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #2 {
109  %i0 = extractelement <2 x i32> %4, i32 0
110  %i1 = extractelement <2 x i32> %4, i32 1
111  %i2 = extractelement <2 x i32> %7, i32 0
112  %i3 = extractelement <2 x i32> %8, i32 0
113  %f0 = bitcast i32 %i0 to float
114  %f1 = bitcast i32 %i1 to float
115  %f2 = bitcast i32 %i2 to float
116  %f3 = bitcast i32 %i3 to float
117  %r0 = insertvalue {float, float, float, float, float} undef, float %f0, 0
118  %r1 = insertvalue {float, float, float, float, float} %r0, float %f1, 1
119  %r2 = insertvalue {float, float, float, float, float} %r1, float %f2, 2
120  %r3 = insertvalue {float, float, float, float, float} %r2, float %f3, 3
121  %r4 = insertvalue {float, float, float, float, float} %r3, float %12, 4
122  ret {float, float, float, float, float} %r4
123}
124
125
126; GCN: .long 165580
127; GCN-NEXT: .long 562
128; GCN-NEXT: .long 165584
129; GCN-NEXT: .long 631
130; GCN-LABEL: {{^}}vgpr_ps_addr119:
131; GCN-DAG: v_mov_b32_e32 v0, v2
132; GCN-DAG: v_mov_b32_e32 v1, v3
133; GCN: v_mov_b32_e32 v2, v6
134; GCN: v_mov_b32_e32 v3, v8
135; GCN: v_mov_b32_e32 v4, v12
136; GCN-NOT: s_endpgm
137attributes #3 = { "ShaderType"="0" "InitialPSInputAddr"="119" }
138define {float, float, float, float, float} @vgpr_ps_addr119([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #3 {
139  %i0 = extractelement <2 x i32> %4, i32 0
140  %i1 = extractelement <2 x i32> %4, i32 1
141  %i2 = extractelement <2 x i32> %7, i32 0
142  %i3 = extractelement <2 x i32> %8, i32 0
143  %f0 = bitcast i32 %i0 to float
144  %f1 = bitcast i32 %i1 to float
145  %f2 = bitcast i32 %i2 to float
146  %f3 = bitcast i32 %i3 to float
147  %r0 = insertvalue {float, float, float, float, float} undef, float %f0, 0
148  %r1 = insertvalue {float, float, float, float, float} %r0, float %f1, 1
149  %r2 = insertvalue {float, float, float, float, float} %r1, float %f2, 2
150  %r3 = insertvalue {float, float, float, float, float} %r2, float %f3, 3
151  %r4 = insertvalue {float, float, float, float, float} %r3, float %12, 4
152  ret {float, float, float, float, float} %r4
153}
154
155
156; GCN: .long 165580
157; GCN-NEXT: .long 562
158; GCN-NEXT: .long 165584
159; GCN-NEXT: .long 946
160; GCN-LABEL: {{^}}vgpr_ps_addr418:
161; GCN-NOT: v_mov_b32_e32 v0
162; GCN-NOT: v_mov_b32_e32 v1
163; GCN-NOT: v_mov_b32_e32 v2
164; GCN: v_mov_b32_e32 v3, v4
165; GCN: v_mov_b32_e32 v4, v8
166; GCN-NOT: s_endpgm
167attributes #4 = { "ShaderType"="0" "InitialPSInputAddr"="418" }
168define {float, float, float, float, float} @vgpr_ps_addr418([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, <2 x i32>, <2 x i32>, <2 x i32>, <3 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, float, float, float, float, float, float, float, float, float) #4 {
169  %i0 = extractelement <2 x i32> %4, i32 0
170  %i1 = extractelement <2 x i32> %4, i32 1
171  %i2 = extractelement <2 x i32> %7, i32 0
172  %i3 = extractelement <2 x i32> %8, i32 0
173  %f0 = bitcast i32 %i0 to float
174  %f1 = bitcast i32 %i1 to float
175  %f2 = bitcast i32 %i2 to float
176  %f3 = bitcast i32 %i3 to float
177  %r0 = insertvalue {float, float, float, float, float} undef, float %f0, 0
178  %r1 = insertvalue {float, float, float, float, float} %r0, float %f1, 1
179  %r2 = insertvalue {float, float, float, float, float} %r1, float %f2, 2
180  %r3 = insertvalue {float, float, float, float, float} %r2, float %f3, 3
181  %r4 = insertvalue {float, float, float, float, float} %r3, float %12, 4
182  ret {float, float, float, float, float} %r4
183}
184
185
186; GCN-LABEL: {{^}}sgpr:
187; GCN: s_add_i32 s0, s3, 2
188; GCN: s_mov_b32 s2, s3
189; GCN-NOT: s_endpgm
190define {i32, i32, i32} @sgpr([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) #0 {
191  %x = add i32 %2, 2
192  %a = insertvalue {i32, i32, i32} undef, i32 %x, 0
193  %b = insertvalue {i32, i32, i32} %a, i32 %1, 1
194  %c = insertvalue {i32, i32, i32} %a, i32 %2, 2
195  ret {i32, i32, i32} %c
196}
197
198
199; GCN-LABEL: {{^}}sgpr_literal:
200; GCN: s_mov_b32 s0, 5
201; GCN-NOT: s_mov_b32 s0, s0
202; GCN-DAG: s_mov_b32 s1, 6
203; GCN-DAG: s_mov_b32 s2, 7
204; GCN-DAG: s_mov_b32 s3, 8
205; GCN-NOT: s_endpgm
206define {i32, i32, i32, i32} @sgpr_literal([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) #0 {
207  %x = add i32 %2, 2
208  ret {i32, i32, i32, i32} {i32 5, i32 6, i32 7, i32 8}
209}
210
211
212; GCN-LABEL: {{^}}both:
213; GCN: v_mov_b32_e32 v1, v0
214; GCN-DAG: exp 15, 0, 1, 1, 1, v1, v1, v1, v1
215; GCN-DAG: v_add_f32_e32 v0, 1.0, v1
216; GCN-DAG: s_add_i32 s0, s3, 2
217; GCN-DAG: s_mov_b32 s1, s2
218; GCN: s_mov_b32 s2, s3
219; GCN: s_waitcnt expcnt(0)
220; GCN-NOT: s_endpgm
221define {float, i32, float, i32, i32} @both([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) #0 {
222  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3)
223  %v = fadd float %3, 1.0
224  %s = add i32 %2, 2
225  %a0 = insertvalue {float, i32, float, i32, i32} undef, float %v, 0
226  %a1 = insertvalue {float, i32, float, i32, i32} %a0, i32 %s, 1
227  %a2 = insertvalue {float, i32, float, i32, i32} %a1, float %3, 2
228  %a3 = insertvalue {float, i32, float, i32, i32} %a2, i32 %1, 3
229  %a4 = insertvalue {float, i32, float, i32, i32} %a3, i32 %2, 4
230  ret {float, i32, float, i32, i32} %a4
231}
232
233
234; GCN-LABEL: {{^}}structure_literal:
235; GCN: v_mov_b32_e32 v3, v0
236; GCN-DAG: v_mov_b32_e32 v0, 1.0
237; GCN-DAG: s_mov_b32 s0, 2
238; GCN-DAG: s_mov_b32 s1, 3
239; GCN-DAG: v_mov_b32_e32 v1, 2.0
240; GCN-DAG: v_mov_b32_e32 v2, 4.0
241; GCN-DAG: exp 15, 0, 1, 1, 1, v3, v3, v3, v3
242define {{float, i32}, {i32, <2 x float>}} @structure_literal([9 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, float) #0 {
243  call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %3, float %3, float %3, float %3)
244  ret {{float, i32}, {i32, <2 x float>}} {{float, i32} {float 1.0, i32 2}, {i32, <2 x float>} {i32 3, <2 x float> <float 2.0, float 4.0>}}
245}
Note: See TracBrowser for help on using the repository browser.