xref: /llvm-project/llvm/test/CodeGen/SystemZ/soft-float-args.ll (revision e943329ba00772f96fbc1fe5dec836cfd0707a38)
1*e943329bSJonas Paulsson; RUN: llc -mtriple=s390x-linux-gnu -mcpu=z13 -mattr=soft-float -O3 < %s | FileCheck %s
2563e8479SJonas Paulsson;
3563e8479SJonas Paulsson; Test that arguments and return values of fp/vector types are always handled
4563e8479SJonas Paulsson; with gprs with soft-float.
5563e8479SJonas Paulsson
6563e8479SJonas Paulssondefine double @f1(double %arg) {
7563e8479SJonas Paulsson; CHECK-LABEL: f1:
8563e8479SJonas Paulsson; CHECK-NOT: %r2
9563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
10563e8479SJonas Paulsson; CHECK: llihh %r3, 16368
11563e8479SJonas Paulsson; CHECK-NEXT: brasl %r14, __adddf3@PLT
12563e8479SJonas Paulsson; CHECK-NEXT: lmg   %r14, %r15, 272(%r15)
13563e8479SJonas Paulsson; CHECK-NEXT: br    %r14
14563e8479SJonas Paulsson  %res = fadd double %arg, 1.0
15563e8479SJonas Paulsson  ret double %res
16563e8479SJonas Paulsson}
17563e8479SJonas Paulsson
18563e8479SJonas Paulssondefine float @f2(float %arg) {
19563e8479SJonas Paulsson; CHECK-LABEL: f2:
20563e8479SJonas Paulsson; CHECK-NOT: %r2
21563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
22563e8479SJonas Paulsson; CHECK: llgfr   %r2, %r2
23563e8479SJonas Paulsson; CHECK-NEXT: llilh   %r3, 16256
24563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __addsf3@PLT
25563e8479SJonas Paulsson; CHECK-NEXT: # kill: def $r2l killed $r2l killed $r2d
26563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 272(%r15)
27563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
28563e8479SJonas Paulsson  %res = fadd float %arg, 1.0
29563e8479SJonas Paulsson  ret float %res
30563e8479SJonas Paulsson}
31563e8479SJonas Paulsson
32563e8479SJonas Paulssondefine fp128 @f2_fp128(fp128 %arg) {
33563e8479SJonas Paulsson; CHECK-LABEL: f2_fp128:
34563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
35563e8479SJonas Paulsson; CHECK: aghi    %r15, -208
36563e8479SJonas Paulsson; CHECK-NEXT: .cfi_def_cfa_offset 368
37563e8479SJonas Paulsson; CHECK-NEXT: lg      %r0, 0(%r2)
38563e8479SJonas Paulsson; CHECK-NEXT: lg      %r1, 8(%r2)
39563e8479SJonas Paulsson; CHECK-NEXT: llihf   %r2, 1073823744
40563e8479SJonas Paulsson; CHECK-NEXT: stg     %r2, 160(%r15)
41563e8479SJonas Paulsson; CHECK-NEXT: la      %r2, 192(%r15)
42563e8479SJonas Paulsson; CHECK-NEXT: la      %r3, 176(%r15)
43563e8479SJonas Paulsson; CHECK-NEXT: la      %r4, 160(%r15)
44563e8479SJonas Paulsson; CHECK-NEXT: stg     %r1, 184(%r15)
45563e8479SJonas Paulsson; CHECK-NEXT: stg     %r0, 176(%r15)
46563e8479SJonas Paulsson; CHECK-NEXT: mvghi   168(%r15), 0
47563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __addtf3@PLT
48563e8479SJonas Paulsson; CHECK-NEXT: lg      %r2, 192(%r15)
49563e8479SJonas Paulsson; CHECK-NEXT: lg      %r3, 200(%r15)
50563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 320(%r15)
51563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
52563e8479SJonas Paulsson  %res = fadd fp128 %arg, 0xL00000000000000004001400000000000
53563e8479SJonas Paulsson  ret fp128 %res
54563e8479SJonas Paulsson}
55563e8479SJonas Paulsson
56563e8479SJonas Paulssondefine <2 x double> @f3(<2 x double> %arg) {
57563e8479SJonas Paulsson; CHECK-LABEL: f3:
58563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
59563e8479SJonas Paulsson; CHECK: lg      %r13, 8(%r2)
60563e8479SJonas Paulsson; CHECK-NEXT: lg      %r2, 0(%r2)
61563e8479SJonas Paulsson; CHECK-NEXT: llihh   %r3, 16368
62563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __adddf3@PLT
63563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r12, %r2
64563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r2, %r13
65563e8479SJonas Paulsson; CHECK-NEXT: llihh   %r3, 16368
66563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __adddf3@PLT
67563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r3, %r2
68563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r2, %r12
69563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r12, %r15, 256(%r15)
70563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
71563e8479SJonas Paulsson  %res = fadd <2 x double> %arg, <double 1.000000e+00, double 1.000000e+00>
72563e8479SJonas Paulsson  ret <2 x double> %res
73563e8479SJonas Paulsson}
74563e8479SJonas Paulsson
75563e8479SJonas Paulssondefine <2 x float> @f4(<2 x float> %arg) {
76563e8479SJonas Paulsson; CHECK-LABEL: f4:
77563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
78563e8479SJonas Paulsson; CHECK: lr      %r13, %r3
79563e8479SJonas Paulsson; CHECK-NEXT: llgfr   %r2, %r2
80563e8479SJonas Paulsson; CHECK-NEXT: llilh   %r3, 16256
81563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __addsf3@PLT
82563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r12, %r2
83563e8479SJonas Paulsson; CHECK-NEXT: llgfr   %r2, %r13
84563e8479SJonas Paulsson; CHECK-NEXT: llilh   %r3, 16256
85563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __addsf3@PLT
86563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r3, %r2
87563e8479SJonas Paulsson; CHECK-NEXT: lr      %r2, %r12
88563e8479SJonas Paulsson; CHECK-NEXT: # kill: def $r3l killed $r3l killed $r3d
89563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r12, %r15, 256(%r15)
90563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
91563e8479SJonas Paulsson  %res = fadd <2 x float> %arg, <float 1.000000e+00, float 1.000000e+00>
92563e8479SJonas Paulsson  ret <2 x float> %res
93563e8479SJonas Paulsson}
94563e8479SJonas Paulsson
95563e8479SJonas Paulssondefine <2 x i64> @f5(<2 x i64> %arg) {
96563e8479SJonas Paulsson; CHECK-LABEL: f5:
97563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
98563e8479SJonas Paulsson; CHECK: lghi    %r0, 1
99563e8479SJonas Paulsson; CHECK-NEXT: ag      %r0, 0(%r2)
100563e8479SJonas Paulsson; CHECK-NEXT: lghi    %r3, 1
101563e8479SJonas Paulsson; CHECK-NEXT: ag      %r3, 8(%r2)
102563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r2, %r0
103563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
104563e8479SJonas Paulsson  %res = add <2 x i64> %arg, <i64 1, i64 1>
105563e8479SJonas Paulsson  ret <2 x i64> %res
106563e8479SJonas Paulsson}
107563e8479SJonas Paulsson
108563e8479SJonas Paulssondefine <2 x i32> @f6(<2 x i32> %arg) {
109563e8479SJonas Paulsson; CHECK-LABEL: f6:
110563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
111563e8479SJonas Paulsson; CHECK: ahi     %r2, 1
112563e8479SJonas Paulsson; CHECK-NEXT: ahi     %r3, 1
113563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
114563e8479SJonas Paulsson  %res = add <2 x i32> %arg, <i32 1, i32 1>
115563e8479SJonas Paulsson  ret <2 x i32> %res
116563e8479SJonas Paulsson}
117563e8479SJonas Paulsson
118563e8479SJonas Paulsson;; Stack arguments
119563e8479SJonas Paulsson
120563e8479SJonas Paulssondefine double @f7(double %A, double %B, double %C, double %D, double %E,
121563e8479SJonas Paulsson                  double %F) {
122563e8479SJonas Paulsson; CHECK-LABEL: f7:
123563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
124563e8479SJonas Paulsson; CHECK: aghi    %r15, -160
125563e8479SJonas Paulsson; CHECK-NEXT: .cfi_def_cfa_offset 320
126563e8479SJonas Paulsson; CHECK-NEXT: lg      %r3, 320(%r15)
127563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __adddf3@PLT
128563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 272(%r15)
129563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
130563e8479SJonas Paulsson
131563e8479SJonas Paulsson  %res = fadd double %A, %F
132563e8479SJonas Paulsson  ret double %res
133563e8479SJonas Paulsson}
134563e8479SJonas Paulsson
135563e8479SJonas Paulssondefine float @f8(float %A, float %B, float %C, float %D, float %E,
136563e8479SJonas Paulsson                 float %F) {
137563e8479SJonas Paulsson; CHECK-LABEL: f8:
138563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
139563e8479SJonas Paulsson; CHECK: aghi    %r15, -160
140563e8479SJonas Paulsson; CHECK-NEXT: .cfi_def_cfa_offset 320
141563e8479SJonas Paulsson; CHECK-NEXT: llgf    %r3, 324(%r15)
142563e8479SJonas Paulsson; CHECK-NEXT: llgfr   %r2, %r2
143563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __addsf3@PLT
144563e8479SJonas Paulsson; CHECK-NEXT: # kill: def $r2l killed $r2l killed $r2d
145563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 272(%r15)
146563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
147563e8479SJonas Paulsson  %res = fadd float %A, %F
148563e8479SJonas Paulsson  ret float %res
149563e8479SJonas Paulsson}
150563e8479SJonas Paulsson
151563e8479SJonas Paulssondefine <2 x double> @f9(<2 x double> %A, <2 x double> %B, <2 x double> %C,
152563e8479SJonas Paulsson                        <2 x double> %D, <2 x double> %E, <2 x double> %F,
153563e8479SJonas Paulsson                        <2 x double> %G, <2 x double> %H, <2 x double> %I) {
154563e8479SJonas Paulsson; CHECK-LABEL: f9:
155563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
156563e8479SJonas Paulsson; CHECK: aghi    %r15, -160
157563e8479SJonas Paulsson; CHECK-NEXT: .cfi_def_cfa_offset 320
158563e8479SJonas Paulsson; CHECK-NEXT: lg      %r1, 344(%r15)
159563e8479SJonas Paulsson; CHECK-NEXT: lg      %r13, 8(%r2)
160563e8479SJonas Paulsson; CHECK-NEXT: lg      %r2, 0(%r2)
161563e8479SJonas Paulsson; CHECK-NEXT: lg      %r3, 0(%r1)
162563e8479SJonas Paulsson; CHECK-NEXT: lg      %r12, 8(%r1)
163563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __adddf3@PLT
164563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r11, %r2
165563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r2, %r13
166563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r3, %r12
167563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __adddf3@PLT
168563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r3, %r2
169563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r2, %r11
170563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r11, %r15, 248(%r15)
171563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
172563e8479SJonas Paulsson  %res = fadd <2 x double> %A, %I
173563e8479SJonas Paulsson  ret <2 x double> %res
174563e8479SJonas Paulsson}
175563e8479SJonas Paulsson
176563e8479SJonas Paulssondefine <2 x float> @f10(<2 x float> %A, <2 x float> %B, <2 x float> %C,
177563e8479SJonas Paulsson                        <2 x float> %D, <2 x float> %E, <2 x float> %F,
178563e8479SJonas Paulsson                        <2 x float> %G, <2 x float> %H, <2 x float> %I) {
179563e8479SJonas Paulsson; CHECK-LABEL: f10:
180563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
181563e8479SJonas Paulsson; CHECK: aghi    %r15, -160
182563e8479SJonas Paulsson; CHECK-NEXT: .cfi_def_cfa_offset 320
183563e8479SJonas Paulsson; CHECK-NEXT: lr      %r13, %r3
184563e8479SJonas Paulsson; CHECK-NEXT: llgf    %r3, 412(%r15)
185563e8479SJonas Paulsson; CHECK-NEXT: llgf    %r12, 420(%r15)
186563e8479SJonas Paulsson; CHECK-NEXT: llgfr   %r2, %r2
187563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __addsf3@PLT
188563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r11, %r2
189563e8479SJonas Paulsson; CHECK-NEXT: llgfr   %r2, %r13
190563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r3, %r12
191563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, __addsf3@PLT
192563e8479SJonas Paulsson; CHECK-NEXT: lgr     %r3, %r2
193563e8479SJonas Paulsson; CHECK-NEXT: lr      %r2, %r11
194563e8479SJonas Paulsson; CHECK-NEXT: # kill: def $r3l killed $r3l killed $r3d
195563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r11, %r15, 248(%r15)
196563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
197563e8479SJonas Paulsson
198563e8479SJonas Paulsson  %res = fadd <2 x float> %A, %I
199563e8479SJonas Paulsson  ret <2 x float> %res
200563e8479SJonas Paulsson}
201563e8479SJonas Paulsson
202563e8479SJonas Paulssondefine <2 x i64> @f11(<2 x i64> %A, <2 x i64> %B, <2 x i64> %C,
203563e8479SJonas Paulsson                      <2 x i64> %D, <2 x i64> %E, <2 x i64> %F,
204563e8479SJonas Paulsson                      <2 x i64> %G, <2 x i64> %H, <2 x i64> %I) {
205563e8479SJonas Paulsson; CHECK-LABEL: f11:
206563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
207563e8479SJonas Paulsson; CHECK: lg      %r1, 184(%r15)
208563e8479SJonas Paulsson; CHECK-NEXT: lg      %r3, 8(%r2)
209563e8479SJonas Paulsson; CHECK-NEXT: lg      %r2, 0(%r2)
210563e8479SJonas Paulsson; CHECK-NEXT: ag      %r2, 0(%r1)
211563e8479SJonas Paulsson; CHECK-NEXT: ag      %r3, 8(%r1)
212563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
213563e8479SJonas Paulsson  %res = add <2 x i64> %A, %I
214563e8479SJonas Paulsson  ret <2 x i64> %res
215563e8479SJonas Paulsson}
216563e8479SJonas Paulsson
217563e8479SJonas Paulsson;; calls
218563e8479SJonas Paulsson
219563e8479SJonas Paulssondeclare double @bar_double(double %arg);
220563e8479SJonas Paulssondefine double @f12(double %arg, double %arg2) {
221563e8479SJonas Paulsson; CHECK-LABEL: f12:
222563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
223563e8479SJonas Paulsson; CHECK-NOT: %r{{[23]}}
224563e8479SJonas Paulsson; CHECK: lgr     %r2, %r3
225563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, bar_double@PLT
226563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 272(%r15)
227563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
228563e8479SJonas Paulsson  %res = call double @bar_double(double %arg2)
229563e8479SJonas Paulsson  ret double %res
230563e8479SJonas Paulsson}
231563e8479SJonas Paulsson
232563e8479SJonas Paulssondeclare float @bar_float(float %arg);
233563e8479SJonas Paulssondefine float @f13(float %arg, float %arg2) {
234563e8479SJonas Paulsson; CHECK-LABEL: f13:
235563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
236563e8479SJonas Paulsson; CHECK-NOT: %r{{[23]}}
237563e8479SJonas Paulsson; CHECK: lr     %r2, %r3
238563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, bar_float@PLT
239563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 272(%r15)
240563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
241563e8479SJonas Paulsson  %res = call float @bar_float(float %arg2)
242563e8479SJonas Paulsson  ret float %res
243563e8479SJonas Paulsson}
244563e8479SJonas Paulsson
245563e8479SJonas Paulssondeclare fp128 @bar_fp128(fp128 %arg);
246563e8479SJonas Paulssondefine fp128 @f14(fp128 %arg, fp128 %arg2) {
247563e8479SJonas Paulsson; CHECK-LABEL: f14:
248563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
249563e8479SJonas Paulsson; CHECK-NOT: %r3
250563e8479SJonas Paulsson; CHECK: lg      %r0, 0(%r3)
251563e8479SJonas Paulsson; CHECK-NEXT: lg      %r1, 8(%r3)
252563e8479SJonas Paulsson; CHECK-NEXT: la      %r2, 160(%r15)
253563e8479SJonas Paulsson; CHECK-NEXT: stg     %r1, 168(%r15)
254563e8479SJonas Paulsson; CHECK-NEXT: stg     %r0, 160(%r15)
255563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, bar_fp128@PLT
256563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 288(%r15)
257563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
258563e8479SJonas Paulsson  %res = call fp128 @bar_fp128(fp128 %arg2)
259563e8479SJonas Paulsson  ret fp128 %res
260563e8479SJonas Paulsson}
261563e8479SJonas Paulsson
262563e8479SJonas Paulssondeclare <2 x double> @bar_v2f64(<2 x double> %arg);
263563e8479SJonas Paulssondefine <2 x double> @f15(<2 x double> %arg, <2 x double> %arg2) {
264563e8479SJonas Paulsson; CHECK-LABEL: f15:
265563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
266563e8479SJonas Paulsson; CHECK-NOT: %r3
267563e8479SJonas Paulsson; CHECK: lg      %r0, 0(%r3)
268563e8479SJonas Paulsson; CHECK-NEXT: lg      %r1, 8(%r3)
269563e8479SJonas Paulsson; CHECK-NEXT: la      %r2, 160(%r15)
270563e8479SJonas Paulsson; CHECK-NEXT: stg     %r1, 168(%r15)
271563e8479SJonas Paulsson; CHECK-NEXT: stg     %r0, 160(%r15)
272563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, bar_v2f64@PLT
273563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 288(%r15)
274563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
275563e8479SJonas Paulsson  %res = call <2 x double> @bar_v2f64(<2 x double> %arg2)
276563e8479SJonas Paulsson  ret <2 x double> %res
277563e8479SJonas Paulsson}
278563e8479SJonas Paulsson
279563e8479SJonas Paulssondeclare <2 x float> @bar_v2f32(<2 x float> %arg);
280563e8479SJonas Paulssondefine <2 x float> @f16(<2 x float> %arg, <2 x float> %arg2) {
281563e8479SJonas Paulsson; CHECK-LABEL: f16:
282563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
283563e8479SJonas Paulsson; CHECK-NOT: %r{{[2345]}}
284563e8479SJonas Paulsson; CHECK: lr      %r3, %r5
285563e8479SJonas Paulsson; CHECK-NEXT: lr      %r2, %r4
286563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, bar_v2f32@PLT
287563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 272(%r15)
288563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
289563e8479SJonas Paulsson  %res = call <2 x float> @bar_v2f32(<2 x float> %arg2)
290563e8479SJonas Paulsson  ret <2 x float> %res
291563e8479SJonas Paulsson}
292563e8479SJonas Paulsson
293563e8479SJonas Paulssondeclare <2 x i64> @bar_v2i64(<2 x i64> %arg);
294563e8479SJonas Paulssondefine <2 x i64> @f17(<2 x i64> %arg, <2 x i64> %arg2) {
295563e8479SJonas Paulsson; CHECK-LABEL: f17:
296563e8479SJonas Paulsson; CHECK-NOT: %{{[fv]}}
297563e8479SJonas Paulsson; CHECK-NOT: %r3
298563e8479SJonas Paulsson; CHECK: lg      %r0, 0(%r3)
299563e8479SJonas Paulsson; CHECK-NEXT: lg      %r1, 8(%r3)
300563e8479SJonas Paulsson; CHECK-NEXT: la      %r2, 160(%r15)
301563e8479SJonas Paulsson; CHECK-NEXT: stg     %r1, 168(%r15)
302563e8479SJonas Paulsson; CHECK-NEXT: stg     %r0, 160(%r15)
303563e8479SJonas Paulsson; CHECK-NEXT: brasl   %r14, bar_v2i64@PLT
304563e8479SJonas Paulsson; CHECK-NEXT: lmg     %r14, %r15, 288(%r15)
305563e8479SJonas Paulsson; CHECK-NEXT: br      %r14
306563e8479SJonas Paulsson  %res = call <2 x i64> @bar_v2i64(<2 x i64> %arg2)
307563e8479SJonas Paulsson  ret <2 x i64> %res
308563e8479SJonas Paulsson}
309