1; RUN: llvm-dis < %s.bc| FileCheck %s
2; RUN: verify-uselistorder < %s.bc
3
4; BinaryFloatOperation.3.2.ll.bc was generated by passing this file to llvm-as-3.2.
5; The test checks that LLVM does not misread binary float instructions from
6; older bitcode files.
7
8define void @fadd(float %x1, double %x2 ,half %x3, fp128 %x4, x86_fp80 %x5, ppc_fp128 %x6){
9entry:
10; CHECK: %res1 = fadd float %x1, %x1
11  %res1 = fadd float %x1, %x1
12
13; CHECK-NEXT: %res2 = fadd double %x2, %x2
14  %res2 = fadd double %x2, %x2
15
16; CHECK-NEXT: %res3 = fadd half %x3, %x3
17  %res3 = fadd half %x3, %x3
18
19; CHECK-NEXT: %res4 = fadd fp128 %x4, %x4
20  %res4 = fadd fp128 %x4, %x4
21
22; CHECK-NEXT: %res5 = fadd x86_fp80 %x5, %x5
23  %res5 = fadd x86_fp80 %x5, %x5
24
25; CHECK-NEXT: %res6 = fadd ppc_fp128 %x6, %x6
26  %res6 = fadd ppc_fp128 %x6, %x6
27
28  ret void
29}
30
31define void @faddFloatVec(<2 x float> %x1, <3 x float> %x2 ,<4 x float> %x3, <8 x float> %x4, <16 x float> %x5){
32entry:
33; CHECK: %res1 = fadd <2 x float> %x1, %x1
34  %res1 = fadd <2 x float> %x1, %x1
35
36; CHECK-NEXT: %res2 = fadd <3 x float> %x2, %x2
37  %res2 = fadd <3 x float> %x2, %x2
38
39; CHECK-NEXT: %res3 = fadd <4 x float> %x3, %x3
40  %res3 = fadd <4 x float> %x3, %x3
41
42; CHECK-NEXT: %res4 = fadd <8 x float> %x4, %x4
43  %res4 = fadd <8 x float> %x4, %x4
44
45; CHECK-NEXT: %res5 = fadd <16 x float> %x5, %x5
46  %res5 = fadd <16 x float> %x5, %x5
47
48  ret void
49}
50
51define void @faddDoubleVec(<2 x double> %x1, <3 x double> %x2 ,<4 x double> %x3, <8 x double> %x4, <16 x double> %x5){
52entry:
53; CHECK: %res1 = fadd <2 x double> %x1, %x1
54  %res1 = fadd <2 x double> %x1, %x1
55
56; CHECK-NEXT: %res2 = fadd <3 x double> %x2, %x2
57  %res2 = fadd <3 x double> %x2, %x2
58
59; CHECK-NEXT: %res3 = fadd <4 x double> %x3, %x3
60  %res3 = fadd <4 x double> %x3, %x3
61
62; CHECK-NEXT: %res4 = fadd <8 x double> %x4, %x4
63  %res4 = fadd <8 x double> %x4, %x4
64
65; CHECK-NEXT: %res5 = fadd <16 x double> %x5, %x5
66  %res5 = fadd <16 x double> %x5, %x5
67
68  ret void
69}
70
71define void @faddHalfVec(<2 x half> %x1, <3 x half> %x2 ,<4 x half> %x3, <8 x half> %x4, <16 x half> %x5){
72entry:
73; CHECK: %res1 = fadd <2 x half> %x1, %x1
74  %res1 = fadd <2 x half> %x1, %x1
75
76; CHECK-NEXT: %res2 = fadd <3 x half> %x2, %x2
77  %res2 = fadd <3 x half> %x2, %x2
78
79; CHECK-NEXT: %res3 = fadd <4 x half> %x3, %x3
80  %res3 = fadd <4 x half> %x3, %x3
81
82; CHECK-NEXT: %res4 = fadd <8 x half> %x4, %x4
83  %res4 = fadd <8 x half> %x4, %x4
84
85; CHECK-NEXT: %res5 = fadd <16 x half> %x5, %x5
86  %res5 = fadd <16 x half> %x5, %x5
87
88  ret void
89}
90
91define void @fsub(float %x1){
92entry:
93; CHECK: %res1 = fsub float %x1, %x1
94  %res1 = fsub float %x1, %x1
95
96  ret void
97}
98
99define void @fmul(float %x1){
100entry:
101; CHECK: %res1 = fmul float %x1, %x1
102  %res1 = fmul float %x1, %x1
103
104  ret void
105}
106
107define void @fdiv(float %x1){
108entry:
109; CHECK: %res1 = fdiv float %x1, %x1
110  %res1 = fdiv float %x1, %x1
111
112  ret void
113}
114
115define void @frem(float %x1){
116entry:
117; CHECK: %res1 = frem float %x1, %x1
118  %res1 = frem float %x1, %x1
119
120  ret void
121}
122