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