[Bitcode] Add compatibility tests for new instructions
[oota-llvm.git] / test / Bitcode / binaryFloatInstructions.3.2.ll
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
8 define void @fadd(float %x1, double %x2 ,half %x3, fp128 %x4, x86_fp80 %x5, ppc_fp128 %x6){
9 entry:
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
31 define void @faddFloatVec(<2 x float> %x1, <3 x float> %x2 ,<4 x float> %x3, <8 x float> %x4, <16 x float> %x5){
32 entry:
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
51 define void @faddDoubleVec(<2 x double> %x1, <3 x double> %x2 ,<4 x double> %x3, <8 x double> %x4, <16 x double> %x5){
52 entry:
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
71 define void @faddHalfVec(<2 x half> %x1, <3 x half> %x2 ,<4 x half> %x3, <8 x half> %x4, <16 x half> %x5){
72 entry:
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
91 define void @fsub(float %x1){
92 entry:
93 ; CHECK: %res1 = fsub float %x1, %x1
94   %res1 = fsub float %x1, %x1
95
96   ret void
97 }
98
99 define void @fmul(float %x1){
100 entry:
101 ; CHECK: %res1 = fmul float %x1, %x1
102   %res1 = fmul float %x1, %x1
103
104   ret void
105 }
106
107 define void @fdiv(float %x1){
108 entry:
109 ; CHECK: %res1 = fdiv float %x1, %x1
110   %res1 = fdiv float %x1, %x1
111
112   ret void
113 }
114
115 define void @frem(float %x1){
116 entry:
117 ; CHECK: %res1 = frem float %x1, %x1
118   %res1 = frem float %x1, %x1
119
120   ret void
121 }