1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-- \
3; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s
4; RUN: llc -verify-machineinstrs -target-abi=elfv2 -mtriple=powerpc64-- \
5; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s
6; RUN: llc -verify-machineinstrs -target-abi=elfv2 -mtriple=powerpc64-- \
7; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=CHECK-P9
8
9 define float @FloatConstantPool() {
10; CHECK-LABEL: FloatConstantPool:
11; CHECK:       # %bb.0: # %entry
12; CHECK-NEXT:    plfs f1, .LCPI0_0@PCREL(0), 1
13; CHECK-NEXT:    blr
14;
15; CHECK-P9-LABEL: FloatConstantPool:
16; CHECK-P9:       # %bb.0: # %entry
17; CHECK-P9-NEXT:    addis r3, r2, .LCPI0_0@toc@ha
18; CHECK-P9-NEXT:    lfs f1, .LCPI0_0@toc@l(r3)
19; CHECK-P9-NEXT:    blr
20entry:
21  ret float 0x380FFFF840000000
22}
23
24 define double @DoubleConstantPool() {
25; CHECK-LABEL: DoubleConstantPool:
26; CHECK:       # %bb.0: # %entry
27; CHECK-NEXT:    plfd f1, .LCPI1_0@PCREL(0), 1
28; CHECK-NEXT:    blr
29;
30; CHECK-P9-LABEL: DoubleConstantPool:
31; CHECK-P9:       # %bb.0: # %entry
32; CHECK-P9-NEXT:    addis r3, r2, .LCPI1_0@toc@ha
33; CHECK-P9-NEXT:    lfd f1, .LCPI1_0@toc@l(r3)
34; CHECK-P9-NEXT:    blr
35entry:
36  ret double 2.225070e-308
37}
38
39 define ppc_fp128 @LongDoubleConstantPool() {
40; CHECK-LABEL: LongDoubleConstantPool:
41; CHECK:       # %bb.0: # %entry
42; CHECK-NEXT:    plfd f1, .LCPI2_0@PCREL(0), 1
43; CHECK-NEXT:    plfd f2, .LCPI2_1@PCREL(0), 1
44; CHECK-NEXT:    blr
45;
46; CHECK-P9-LABEL: LongDoubleConstantPool:
47; CHECK-P9:       # %bb.0: # %entry
48; CHECK-P9-NEXT:    addis r3, r2, .LCPI2_0@toc@ha
49; CHECK-P9-NEXT:    lfd f1, .LCPI2_0@toc@l(r3)
50; CHECK-P9-NEXT:    addis r3, r2, .LCPI2_1@toc@ha
51; CHECK-P9-NEXT:    lfd f2, .LCPI2_1@toc@l(r3)
52; CHECK-P9-NEXT:    blr
53entry:
54  ret ppc_fp128 0xM03600000DBA876CC800D16974FD9D27B
55}
56
57 define fp128 @__Float128ConstantPool() {
58; CHECK-LABEL: __Float128ConstantPool:
59; CHECK:       # %bb.0: # %entry
60; CHECK-NEXT:    plxv vs34, .LCPI3_0@PCREL(0), 1
61; CHECK-NEXT:    blr
62;
63; CHECK-P9-LABEL: __Float128ConstantPool:
64; CHECK-P9:       # %bb.0: # %entry
65; CHECK-P9-NEXT:    addis r3, r2, .LCPI3_0@toc@ha
66; CHECK-P9-NEXT:    addi r3, r3, .LCPI3_0@toc@l
67; CHECK-P9-NEXT:    lxvx vs34, 0, r3
68; CHECK-P9-NEXT:    blr
69entry:
70  ret fp128 0xL00000000000000003C00FFFFC5D02B3A
71}
72
73 define <16 x i8> @VectorCharConstantPool() {
74; CHECK-LABEL: VectorCharConstantPool:
75; CHECK:       # %bb.0: # %entry
76; CHECK-NEXT:    plxv vs34, .LCPI4_0@PCREL(0), 1
77; CHECK-NEXT:    blr
78;
79; CHECK-P9-LABEL: VectorCharConstantPool:
80; CHECK-P9:       # %bb.0: # %entry
81; CHECK-P9-NEXT:    addis r3, r2, .LCPI4_0@toc@ha
82; CHECK-P9-NEXT:    addi r3, r3, .LCPI4_0@toc@l
83; CHECK-P9-NEXT:    lxvx vs34, 0, r3
84; CHECK-P9-NEXT:    blr
85entry:
86  ret <16 x i8> <i8 -128, i8 -127, i8 -126, i8 -125, i8 -124, i8 -123, i8 -122, i8 -121, i8 -120, i8 -119, i8 -118, i8 -117, i8 -116, i8 -115, i8 -114, i8 -113>
87}
88
89 define <8 x i16> @VectorShortConstantPool() {
90; CHECK-LABEL: VectorShortConstantPool:
91; CHECK:       # %bb.0: # %entry
92; CHECK-NEXT:    plxv vs34, .LCPI5_0@PCREL(0), 1
93; CHECK-NEXT:    blr
94;
95; CHECK-P9-LABEL: VectorShortConstantPool:
96; CHECK-P9:       # %bb.0: # %entry
97; CHECK-P9-NEXT:    addis r3, r2, .LCPI5_0@toc@ha
98; CHECK-P9-NEXT:    addi r3, r3, .LCPI5_0@toc@l
99; CHECK-P9-NEXT:    lxvx vs34, 0, r3
100; CHECK-P9-NEXT:    blr
101entry:
102  ret <8 x i16> <i16 -32768, i16 -32767, i16 -32766, i16 -32765, i16 -32764, i16 -32763, i16 -32762, i16 -32761>
103}
104
105 define <4 x i32> @VectorIntConstantPool() {
106; CHECK-LABEL: VectorIntConstantPool:
107; CHECK:       # %bb.0: # %entry
108; CHECK-NEXT:    plxv vs34, .LCPI6_0@PCREL(0), 1
109; CHECK-NEXT:    blr
110;
111; CHECK-P9-LABEL: VectorIntConstantPool:
112; CHECK-P9:       # %bb.0: # %entry
113; CHECK-P9-NEXT:    addis r3, r2, .LCPI6_0@toc@ha
114; CHECK-P9-NEXT:    addi r3, r3, .LCPI6_0@toc@l
115; CHECK-P9-NEXT:    lxvx vs34, 0, r3
116; CHECK-P9-NEXT:    blr
117entry:
118  ret <4 x i32> <i32 -2147483648, i32 -2147483647, i32 -2147483646, i32 -2147483645>
119}
120
121 define <2 x i64> @VectorLongLongConstantPool() {
122; CHECK-LABEL: VectorLongLongConstantPool:
123; CHECK:       # %bb.0: # %entry
124; CHECK-NEXT:    plxv vs34, .LCPI7_0@PCREL(0), 1
125; CHECK-NEXT:    blr
126;
127; CHECK-P9-LABEL: VectorLongLongConstantPool:
128; CHECK-P9:       # %bb.0: # %entry
129; CHECK-P9-NEXT:    addis r3, r2, .LCPI7_0@toc@ha
130; CHECK-P9-NEXT:    addi r3, r3, .LCPI7_0@toc@l
131; CHECK-P9-NEXT:    lxvx vs34, 0, r3
132; CHECK-P9-NEXT:    blr
133entry:
134  ret <2 x i64> <i64 -9223372036854775808, i64 -9223372036854775807>
135}
136
137 define <1 x i128> @VectorInt128ConstantPool() {
138; CHECK-LABEL: VectorInt128ConstantPool:
139; CHECK:       # %bb.0: # %entry
140; CHECK-NEXT:    plxv vs34, .LCPI8_0@PCREL(0), 1
141; CHECK-NEXT:    blr
142;
143; CHECK-P9-LABEL: VectorInt128ConstantPool:
144; CHECK-P9:       # %bb.0: # %entry
145; CHECK-P9-NEXT:    addis r3, r2, .LCPI8_0@toc@ha
146; CHECK-P9-NEXT:    addi r3, r3, .LCPI8_0@toc@l
147; CHECK-P9-NEXT:    lxvx vs34, 0, r3
148; CHECK-P9-NEXT:    blr
149entry:
150  ret <1 x i128> <i128 -27670116110564327424>
151}
152
153 define <4 x float> @VectorFloatConstantPool() {
154; CHECK-LABEL: VectorFloatConstantPool:
155; CHECK:       # %bb.0: # %entry
156; CHECK-NEXT:    plxv vs34, .LCPI9_0@PCREL(0), 1
157; CHECK-NEXT:    blr
158;
159; CHECK-P9-LABEL: VectorFloatConstantPool:
160; CHECK-P9:       # %bb.0: # %entry
161; CHECK-P9-NEXT:    addis r3, r2, .LCPI9_0@toc@ha
162; CHECK-P9-NEXT:    addi r3, r3, .LCPI9_0@toc@l
163; CHECK-P9-NEXT:    lxvx vs34, 0, r3
164; CHECK-P9-NEXT:    blr
165entry:
166  ret <4 x float> <float 0x380FFFF840000000, float 0x380FFF57C0000000, float 0x3843FFFB20000000, float 0x3843FF96C0000000>
167}
168
169 define <2 x double> @VectorDoubleConstantPool() {
170; CHECK-LABEL: VectorDoubleConstantPool:
171; CHECK:       # %bb.0: # %entry
172; CHECK-NEXT:    plxv vs34, .LCPI10_0@PCREL(0), 1
173; CHECK-NEXT:    blr
174;
175; CHECK-P9-LABEL: VectorDoubleConstantPool:
176; CHECK-P9:       # %bb.0: # %entry
177; CHECK-P9-NEXT:    addis r3, r2, .LCPI10_0@toc@ha
178; CHECK-P9-NEXT:    addi r3, r3, .LCPI10_0@toc@l
179; CHECK-P9-NEXT:    lxvx vs34, 0, r3
180; CHECK-P9-NEXT:    blr
181entry:
182  ret <2 x double> <double 2.225070e-308, double 2.225000e-308>
183}
184
185define double @two_constants(double %a) {
186; CHECK-LABEL: two_constants:
187; CHECK:       # %bb.0: # %entry
188; CHECK-NEXT:    plfd f0, .LCPI11_0@PCREL(0), 1
189; CHECK-NEXT:    xsadddp f0, f1, f0
190; CHECK-NEXT:    plfd f1, .LCPI11_1@PCREL(0), 1
191; CHECK-NEXT:    xsadddp f1, f0, f1
192; CHECK-NEXT:    blr
193;
194; CHECK-P9-LABEL: two_constants:
195; CHECK-P9:       # %bb.0: # %entry
196; CHECK-P9-NEXT:    addis r3, r2, .LCPI11_0@toc@ha
197; CHECK-P9-NEXT:    lfd f0, .LCPI11_0@toc@l(r3)
198; CHECK-P9-NEXT:    addis r3, r2, .LCPI11_1@toc@ha
199; CHECK-P9-NEXT:    xsadddp f0, f1, f0
200; CHECK-P9-NEXT:    lfd f1, .LCPI11_1@toc@l(r3)
201; CHECK-P9-NEXT:    xsadddp f1, f0, f1
202; CHECK-P9-NEXT:    blr
203entry:
204  %0 = fadd double %a, 3.344000e+00
205  %1 = fadd double %0, 2.344000e+00
206  ret double %1
207}
208
209define double @two_constants_two_bb(i32 %m, double %a) {
210; CHECK-LABEL: two_constants_two_bb:
211; CHECK:       # %bb.0: # %entry
212; CHECK-NEXT:    cmplwi r3, 0
213; CHECK-NEXT:    beq cr0, .LBB12_2
214; CHECK-NEXT:  # %bb.1:
215; CHECK-NEXT:    plfd f1, .LCPI12_0@PCREL(0), 1
216; CHECK-NEXT:    blr
217; CHECK-NEXT:  .LBB12_2: # %if.end
218; CHECK-NEXT:    plfd f0, .LCPI12_1@PCREL(0), 1
219; CHECK-NEXT:    xsadddp f1, f1, f0
220; CHECK-NEXT:    blr
221;
222; CHECK-P9-LABEL: two_constants_two_bb:
223; CHECK-P9:       # %bb.0: # %entry
224; CHECK-P9-NEXT:    cmplwi r3, 0
225; CHECK-P9-NEXT:    beq cr0, .LBB12_2
226; CHECK-P9-NEXT:  # %bb.1:
227; CHECK-P9-NEXT:    addis r3, r2, .LCPI12_0@toc@ha
228; CHECK-P9-NEXT:    lfd f1, .LCPI12_0@toc@l(r3)
229; CHECK-P9-NEXT:    blr
230; CHECK-P9-NEXT:  .LBB12_2: # %if.end
231; CHECK-P9-NEXT:    addis r3, r2, .LCPI12_1@toc@ha
232; CHECK-P9-NEXT:    lfd f0, .LCPI12_1@toc@l(r3)
233; CHECK-P9-NEXT:    xsadddp f1, f1, f0
234; CHECK-P9-NEXT:    blr
235entry:
236  %tobool.not = icmp eq i32 %m, 0
237  br i1 %tobool.not, label %if.end, label %return
238
239if.end:
240  %add = fadd double %a, 9.880000e+00
241  br label %return
242
243return:
244  %retval.0 = phi double [ %add, %if.end ], [ 4.555000e+00, %entry ]
245  ret double %retval.0
246}
247
248define double @three_constants_f64(double %a, double %c) {
249; CHECK-LABEL: three_constants_f64:
250; CHECK:       # %bb.0: # %entry
251; CHECK-NEXT:    plfd f0, .LCPI13_0@PCREL(0), 1
252; CHECK-NEXT:    xsadddp f0, f1, f0
253; CHECK-NEXT:    plfd f1, .LCPI13_1@PCREL(0), 1
254; CHECK-NEXT:    xsadddp f0, f0, f1
255; CHECK-NEXT:    plfd f1, .LCPI13_2@PCREL(0), 1
256; CHECK-NEXT:    xsadddp f1, f0, f1
257; CHECK-NEXT:    blr
258;
259; CHECK-P9-LABEL: three_constants_f64:
260; CHECK-P9:       # %bb.0: # %entry
261; CHECK-P9-NEXT:    addis r3, r2, .LCPI13_0@toc@ha
262; CHECK-P9-NEXT:    lfd f0, .LCPI13_0@toc@l(r3)
263; CHECK-P9-NEXT:    addis r3, r2, .LCPI13_1@toc@ha
264; CHECK-P9-NEXT:    xsadddp f0, f1, f0
265; CHECK-P9-NEXT:    lfd f1, .LCPI13_1@toc@l(r3)
266; CHECK-P9-NEXT:    addis r3, r2, .LCPI13_2@toc@ha
267; CHECK-P9-NEXT:    xsadddp f0, f0, f1
268; CHECK-P9-NEXT:    lfd f1, .LCPI13_2@toc@l(r3)
269; CHECK-P9-NEXT:    xsadddp f1, f0, f1
270; CHECK-P9-NEXT:    blr
271entry:
272  %0 = fadd double %a, 3.344000e+00
273  %1 = fadd double %0, 2.344000e+00
274  %2 = fadd double %1, 2.394000e+00
275  ret double %2
276}
277
278define float @three_constants_f32(float %a, float %c) {
279; CHECK-LABEL: three_constants_f32:
280; CHECK:       # %bb.0: # %entry
281; CHECK-NEXT:    xxspltidp vs0, 1083294351
282; CHECK-NEXT:    xsaddsp f0, f1, f0
283; CHECK-NEXT:    xxspltidp vs1, 1083296911
284; CHECK-NEXT:    xsaddsp f0, f0, f1
285; CHECK-NEXT:    xxspltidp vs1, 1083292559
286; CHECK-NEXT:    xsaddsp f1, f0, f1
287; CHECK-NEXT:    blr
288;
289; CHECK-P9-LABEL: three_constants_f32:
290; CHECK-P9:       # %bb.0: # %entry
291; CHECK-P9-NEXT:    addis r3, r2, .LCPI14_0@toc@ha
292; CHECK-P9-NEXT:    lfs f0, .LCPI14_0@toc@l(r3)
293; CHECK-P9-NEXT:    addis r3, r2, .LCPI14_1@toc@ha
294; CHECK-P9-NEXT:    xsaddsp f0, f1, f0
295; CHECK-P9-NEXT:    lfs f1, .LCPI14_1@toc@l(r3)
296; CHECK-P9-NEXT:    addis r3, r2, .LCPI14_2@toc@ha
297; CHECK-P9-NEXT:    xsaddsp f0, f0, f1
298; CHECK-P9-NEXT:    lfs f1, .LCPI14_2@toc@l(r3)
299; CHECK-P9-NEXT:    xsaddsp f1, f0, f1
300; CHECK-P9-NEXT:    blr
301entry:
302  %0 = fadd float %a, 0x40123851E0000000
303  %1 = fadd float %0, 0x40123991E0000000
304  %2 = fadd float %1, 0x40123771E0000000
305  ret float %2
306}
307
308define fp128 @three_constants_f128(fp128 %a, fp128 %c) {
309; CHECK-LABEL: three_constants_f128:
310; CHECK:       # %bb.0: # %entry
311; CHECK-NEXT:    plxv vs35, .LCPI15_0@PCREL(0), 1
312; CHECK-NEXT:    xsaddqp v2, v2, v3
313; CHECK-NEXT:    plxv vs35, .LCPI15_1@PCREL(0), 1
314; CHECK-NEXT:    xsaddqp v2, v2, v3
315; CHECK-NEXT:    plxv vs35, .LCPI15_2@PCREL(0), 1
316; CHECK-NEXT:    xsaddqp v2, v2, v3
317; CHECK-NEXT:    blr
318;
319; CHECK-P9-LABEL: three_constants_f128:
320; CHECK-P9:       # %bb.0: # %entry
321; CHECK-P9-NEXT:    addis r3, r2, .LCPI15_0@toc@ha
322; CHECK-P9-NEXT:    addi r3, r3, .LCPI15_0@toc@l
323; CHECK-P9-NEXT:    lxvx vs35, 0, r3
324; CHECK-P9-NEXT:    addis r3, r2, .LCPI15_1@toc@ha
325; CHECK-P9-NEXT:    addi r3, r3, .LCPI15_1@toc@l
326; CHECK-P9-NEXT:    xsaddqp v2, v2, v3
327; CHECK-P9-NEXT:    lxvx vs35, 0, r3
328; CHECK-P9-NEXT:    addis r3, r2, .LCPI15_2@toc@ha
329; CHECK-P9-NEXT:    addi r3, r3, .LCPI15_2@toc@l
330; CHECK-P9-NEXT:    xsaddqp v2, v2, v3
331; CHECK-P9-NEXT:    lxvx vs35, 0, r3
332; CHECK-P9-NEXT:    xsaddqp v2, v2, v3
333; CHECK-P9-NEXT:    blr
334entry:
335  %0 = fadd fp128 %a, 0xL8000000000000000400123851EB851EB
336  %1 = fadd fp128 %0, 0xL8000000000000000400123851EB991EB
337  %2 = fadd fp128 %1, 0xL8000000000000000400123851EB771EB
338  ret fp128 %2
339}
340
341define ppc_fp128 @three_constants_ppcf128(ppc_fp128 %a, ppc_fp128 %c) {
342; CHECK-LABEL: three_constants_ppcf128:
343; CHECK:         .localentry three_constants_ppcf128, 1
344; CHECK-NEXT:  # %bb.0: # %entry
345; CHECK-NEXT:    mflr r0
346; CHECK-NEXT:    std r0, 16(r1)
347; CHECK-NEXT:    stdu r1, -32(r1)
348; CHECK-NEXT:    .cfi_def_cfa_offset 32
349; CHECK-NEXT:    .cfi_offset lr, 16
350; CHECK-NEXT:    plfd f3, .LCPI16_0@PCREL(0), 1
351; CHECK-NEXT:    xxlxor f4, f4, f4
352; CHECK-NEXT:    bl __gcc_qadd@notoc
353; CHECK-NEXT:    plfd f3, .LCPI16_1@PCREL(0), 1
354; CHECK-NEXT:    xxlxor f4, f4, f4
355; CHECK-NEXT:    bl __gcc_qadd@notoc
356; CHECK-NEXT:    plfd f3, .LCPI16_2@PCREL(0), 1
357; CHECK-NEXT:    xxlxor f4, f4, f4
358; CHECK-NEXT:    bl __gcc_qadd@notoc
359; CHECK-NEXT:    addi r1, r1, 32
360; CHECK-NEXT:    ld r0, 16(r1)
361; CHECK-NEXT:    mtlr r0
362; CHECK-NEXT:    blr
363;
364; CHECK-P9-LABEL: three_constants_ppcf128:
365; CHECK-P9:       # %bb.0: # %entry
366; CHECK-P9-NEXT:    mflr r0
367; CHECK-P9-NEXT:    std r0, 16(r1)
368; CHECK-P9-NEXT:    stdu r1, -32(r1)
369; CHECK-P9-NEXT:    .cfi_def_cfa_offset 32
370; CHECK-P9-NEXT:    .cfi_offset lr, 16
371; CHECK-P9-NEXT:    addis r3, r2, .LCPI16_0@toc@ha
372; CHECK-P9-NEXT:    xxlxor f4, f4, f4
373; CHECK-P9-NEXT:    lfd f3, .LCPI16_0@toc@l(r3)
374; CHECK-P9-NEXT:    bl __gcc_qadd
375; CHECK-P9-NEXT:    nop
376; CHECK-P9-NEXT:    addis r3, r2, .LCPI16_1@toc@ha
377; CHECK-P9-NEXT:    xxlxor f4, f4, f4
378; CHECK-P9-NEXT:    lfd f3, .LCPI16_1@toc@l(r3)
379; CHECK-P9-NEXT:    bl __gcc_qadd
380; CHECK-P9-NEXT:    nop
381; CHECK-P9-NEXT:    addis r3, r2, .LCPI16_2@toc@ha
382; CHECK-P9-NEXT:    xxlxor f4, f4, f4
383; CHECK-P9-NEXT:    lfd f3, .LCPI16_2@toc@l(r3)
384; CHECK-P9-NEXT:    bl __gcc_qadd
385; CHECK-P9-NEXT:    nop
386; CHECK-P9-NEXT:    addi r1, r1, 32
387; CHECK-P9-NEXT:    ld r0, 16(r1)
388; CHECK-P9-NEXT:    mtlr r0
389; CHECK-P9-NEXT:    blr
390entry:
391  %0 = fadd ppc_fp128 %a, 0xM40123851EB851EB80000000000000000
392  %1 = fadd ppc_fp128 %0, 0xM4012385199851EB80000000000000000
393  %2 = fadd ppc_fp128 %1, 0xM4012385100851EB80000000000000000
394  ret ppc_fp128 %2
395}
396
397define <2 x double> @three_constants_vector(<2 x double> %a, <2 x double> %c) {
398; CHECK-LABEL: three_constants_vector:
399; CHECK:       # %bb.0: # %entry
400; CHECK-NEXT:    plxv vs0, .LCPI17_0@PCREL(0), 1
401; CHECK-NEXT:    plxv vs2, .LCPI17_1@PCREL(0), 1
402; CHECK-NEXT:    xvadddp vs1, vs34, vs0
403; CHECK-NEXT:    xvadddp vs1, vs1, vs2
404; CHECK-NEXT:    xvadddp vs34, vs1, vs0
405; CHECK-NEXT:    blr
406;
407; CHECK-P9-LABEL: three_constants_vector:
408; CHECK-P9:       # %bb.0: # %entry
409; CHECK-P9-NEXT:    addis r3, r2, .LCPI17_0@toc@ha
410; CHECK-P9-NEXT:    addi r3, r3, .LCPI17_0@toc@l
411; CHECK-P9-NEXT:    lxvx vs0, 0, r3
412; CHECK-P9-NEXT:    addis r3, r2, .LCPI17_1@toc@ha
413; CHECK-P9-NEXT:    addi r3, r3, .LCPI17_1@toc@l
414; CHECK-P9-NEXT:    lxvx vs2, 0, r3
415; CHECK-P9-NEXT:    xvadddp vs1, vs34, vs0
416; CHECK-P9-NEXT:    xvadddp vs1, vs1, vs2
417; CHECK-P9-NEXT:    xvadddp vs34, vs1, vs0
418; CHECK-P9-NEXT:    blr
419entry:
420  %0 = fadd <2 x double> %a, <double 4.555000e+00, double 9.880000e+00>
421  %1 = fadd <2 x double> %0, <double 4.555000e+00, double 9.980000e+00>
422  %2 = fadd <2 x double> %1, <double 4.555000e+00, double 9.880000e+00>
423  ret <2 x double> %2
424}
425