Revert "[AArch64] Add DAG combine for extract extend pattern"
[oota-llvm.git] / test / CodeGen / Mips / fpbr.ll
1 ; RUN: llc < %s -march=mipsel -mcpu=mips32   | FileCheck %s -check-prefix=ALL -check-prefix=FCC -check-prefix=32-FCC
2 ; RUN: llc < %s -march=mipsel -mcpu=mips32r2 | FileCheck %s -check-prefix=ALL -check-prefix=FCC -check-prefix=32-FCC
3 ; RUN: llc < %s -march=mipsel -mcpu=mips32r6 | FileCheck %s -check-prefix=ALL -check-prefix=GPR -check-prefix=32-GPR
4 ; RUN: llc < %s -march=mips64el -mcpu=mips64   | FileCheck %s -check-prefix=ALL -check-prefix=FCC -check-prefix=64-FCC
5 ; RUN: llc < %s -march=mips64el -mcpu=mips64r2 | FileCheck %s -check-prefix=ALL -check-prefix=FCC -check-prefix=64-FCC
6 ; RUN: llc < %s -march=mips64el -mcpu=mips64r6 | FileCheck %s -check-prefix=ALL -check-prefix=GPR -check-prefix=64-GPR
7
8 define void @func0(float %f2, float %f3) nounwind {
9 entry:
10 ; ALL-LABEL: func0:
11
12 ; 32-FCC:        c.eq.s $f12, $f14
13 ; 64-FCC:        c.eq.s $f12, $f13
14 ; FCC:           bc1f   $BB0_2
15
16 ; 32-GPR:        cmp.eq.s $[[FGRCC:f[0-9]+]], $f12, $f14
17 ; 64-GPR:        cmp.eq.s $[[FGRCC:f[0-9]+]], $f12, $f13
18 ; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
19 ; FIXME: We ought to be able to transform not+bnez -> beqz
20 ; GPR:           not      $[[GPRCC]], $[[GPRCC]]
21 ; GPR:           bnez     $[[GPRCC]], $BB0_2
22
23   %cmp = fcmp oeq float %f2, %f3
24   br i1 %cmp, label %if.then, label %if.else
25
26 if.then:                                          ; preds = %entry
27   tail call void (...) @g0() nounwind
28   br label %if.end
29
30 if.else:                                          ; preds = %entry
31   tail call void (...) @g1() nounwind
32   br label %if.end
33
34 if.end:                                           ; preds = %if.else, %if.then
35   ret void
36 }
37
38 declare void @g0(...)
39
40 declare void @g1(...)
41
42 define void @func1(float %f2, float %f3) nounwind {
43 entry:
44 ; ALL-LABEL: func1:
45
46 ; 32-FCC:        c.olt.s $f12, $f14
47 ; 64-FCC:        c.olt.s $f12, $f13
48 ; FCC:           bc1f    $BB1_2
49
50 ; 32-GPR:        cmp.ule.s $[[FGRCC:f[0-9]+]], $f14, $f12
51 ; 64-GPR:        cmp.ule.s $[[FGRCC:f[0-9]+]], $f13, $f12
52 ; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
53 ; GPR-NOT:       not      $[[GPRCC]], $[[GPRCC]]
54 ; GPR:           bnez     $[[GPRCC]], $BB1_2
55
56   %cmp = fcmp olt float %f2, %f3
57   br i1 %cmp, label %if.then, label %if.else
58
59 if.then:                                          ; preds = %entry
60   tail call void (...) @g0() nounwind
61   br label %if.end
62
63 if.else:                                          ; preds = %entry
64   tail call void (...) @g1() nounwind
65   br label %if.end
66
67 if.end:                                           ; preds = %if.else, %if.then
68   ret void
69 }
70
71 define void @func2(float %f2, float %f3) nounwind {
72 entry:
73 ; ALL-LABEL: func2:
74
75 ; 32-FCC:        c.ole.s $f12, $f14
76 ; 64-FCC:        c.ole.s $f12, $f13
77 ; FCC:           bc1t    $BB2_2
78
79 ; 32-GPR:        cmp.ult.s $[[FGRCC:f[0-9]+]], $f14, $f12
80 ; 64-GPR:        cmp.ult.s $[[FGRCC:f[0-9]+]], $f13, $f12
81 ; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
82 ; GPR-NOT:       not      $[[GPRCC]], $[[GPRCC]]
83 ; GPR:           beqz     $[[GPRCC]], $BB2_2
84
85   %cmp = fcmp ugt float %f2, %f3
86   br i1 %cmp, label %if.else, label %if.then
87
88 if.then:                                          ; preds = %entry
89   tail call void (...) @g0() nounwind
90   br label %if.end
91
92 if.else:                                          ; preds = %entry
93   tail call void (...) @g1() nounwind
94   br label %if.end
95
96 if.end:                                           ; preds = %if.else, %if.then
97   ret void
98 }
99
100 define void @func3(double %f2, double %f3) nounwind {
101 entry:
102 ; ALL-LABEL: func3:
103
104 ; 32-FCC:        c.eq.d $f12, $f14
105 ; 64-FCC:        c.eq.d $f12, $f13
106 ; FCC:           bc1f $BB3_2
107
108 ; 32-GPR:        cmp.eq.d $[[FGRCC:f[0-9]+]], $f12, $f14
109 ; 64-GPR:        cmp.eq.d $[[FGRCC:f[0-9]+]], $f12, $f13
110 ; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
111 ; FIXME: We ought to be able to transform not+bnez -> beqz
112 ; GPR:           not      $[[GPRCC]], $[[GPRCC]]
113 ; GPR:           bnez     $[[GPRCC]], $BB3_2
114
115   %cmp = fcmp oeq double %f2, %f3
116   br i1 %cmp, label %if.then, label %if.else
117
118 if.then:                                          ; preds = %entry
119   tail call void (...) @g0() nounwind
120   br label %if.end
121
122 if.else:                                          ; preds = %entry
123   tail call void (...) @g1() nounwind
124   br label %if.end
125
126 if.end:                                           ; preds = %if.else, %if.then
127   ret void
128 }
129
130 define void @func4(double %f2, double %f3) nounwind {
131 entry:
132 ; ALL-LABEL: func4:
133
134 ; 32-FCC:        c.olt.d $f12, $f14
135 ; 64-FCC:        c.olt.d $f12, $f13
136 ; FCC:           bc1f $BB4_2
137
138 ; 32-GPR:        cmp.ule.d $[[FGRCC:f[0-9]+]], $f14, $f12
139 ; 64-GPR:        cmp.ule.d $[[FGRCC:f[0-9]+]], $f13, $f12
140 ; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
141 ; GPR-NOT:       not      $[[GPRCC]], $[[GPRCC]]
142 ; GPR:           bnez     $[[GPRCC]], $BB4_2
143
144   %cmp = fcmp olt double %f2, %f3
145   br i1 %cmp, label %if.then, label %if.else
146
147 if.then:                                          ; preds = %entry
148   tail call void (...) @g0() nounwind
149   br label %if.end
150
151 if.else:                                          ; preds = %entry
152   tail call void (...) @g1() nounwind
153   br label %if.end
154
155 if.end:                                           ; preds = %if.else, %if.then
156   ret void
157 }
158
159 define void @func5(double %f2, double %f3) nounwind {
160 entry:
161 ; ALL-LABEL: func5:
162
163 ; 32-FCC:        c.ole.d $f12, $f14
164 ; 64-FCC:        c.ole.d $f12, $f13
165 ; FCC:           bc1t $BB5_2
166
167 ; 32-GPR:        cmp.ult.d $[[FGRCC:f[0-9]+]], $f14, $f12
168 ; 64-GPR:        cmp.ult.d $[[FGRCC:f[0-9]+]], $f13, $f12
169 ; GPR:           mfc1     $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
170 ; GPR-NOT:       not      $[[GPRCC]], $[[GPRCC]]
171 ; GPR:           beqz     $[[GPRCC]], $BB5_2
172
173   %cmp = fcmp ugt double %f2, %f3
174   br i1 %cmp, label %if.else, label %if.then
175
176 if.then:                                          ; preds = %entry
177   tail call void (...) @g0() nounwind
178   br label %if.end
179
180 if.else:                                          ; preds = %entry
181   tail call void (...) @g1() nounwind
182   br label %if.end
183
184 if.end:                                           ; preds = %if.else, %if.then
185   ret void
186 }