blob: bf1b045dbf289be7648d7c1c0313b50be6549b50 [file] [log] [blame]
Daniel Sanders0d972702016-06-24 12:23:17 +00001; RUN: llc < %s -march=mipsel -mcpu=mips32 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,FCC,32-FCC
2; RUN: llc < %s -march=mipsel -mcpu=mips32r2 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,FCC,32-FCC
3; RUN: llc < %s -march=mipsel -mcpu=mips32r6 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,GPR,32-GPR
4; RUN: llc < %s -march=mips64el -mcpu=mips64 | FileCheck %s -check-prefixes=ALL,FCC,64-FCC
5; RUN: llc < %s -march=mips64el -mcpu=mips64r2 | FileCheck %s -check-prefixes=ALL,FCC,64-FCC
6; RUN: llc < %s -march=mips64el -mcpu=mips64r6 | FileCheck %s -check-prefixes=ALL,GPR,64-GPR
Akira Hatanakaa5352702011-03-31 18:26:17 +00007
8define void @func0(float %f2, float %f3) nounwind {
9entry:
Daniel Sanders3d3ea532014-06-12 15:00:17 +000010; ALL-LABEL: func0:
11
12; 32-FCC: c.eq.s $f12, $f14
13; 64-FCC: c.eq.s $f12, $f13
Daniel Sanders69c60082015-05-20 14:18:59 +000014; FCC: bc1f $BB0_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +000015
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]]
Daniel Sanderse8efff32016-03-14 16:24:05 +000021; 32-GPR: bnez $[[GPRCC]], $BB0_2
22; 64-GPR: bnezc $[[GPRCC]], $BB0_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +000023
Akira Hatanakaa5352702011-03-31 18:26:17 +000024 %cmp = fcmp oeq float %f2, %f3
25 br i1 %cmp, label %if.then, label %if.else
26
27if.then: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +000028 tail call void (...) @g0() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +000029 br label %if.end
30
31if.else: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +000032 tail call void (...) @g1() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +000033 br label %if.end
34
35if.end: ; preds = %if.else, %if.then
36 ret void
37}
38
39declare void @g0(...)
40
41declare void @g1(...)
42
43define void @func1(float %f2, float %f3) nounwind {
44entry:
Daniel Sanders3d3ea532014-06-12 15:00:17 +000045; ALL-LABEL: func1:
46
47; 32-FCC: c.olt.s $f12, $f14
48; 64-FCC: c.olt.s $f12, $f13
Daniel Sanders69c60082015-05-20 14:18:59 +000049; FCC: bc1f $BB1_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +000050
51; 32-GPR: cmp.ule.s $[[FGRCC:f[0-9]+]], $f14, $f12
52; 64-GPR: cmp.ule.s $[[FGRCC:f[0-9]+]], $f13, $f12
53; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
54; GPR-NOT: not $[[GPRCC]], $[[GPRCC]]
Daniel Sanderse8efff32016-03-14 16:24:05 +000055; 32-GPR: bnez $[[GPRCC]], $BB1_2
56; 64-GPR: bnezc $[[GPRCC]], $BB1_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +000057
Akira Hatanakaa5352702011-03-31 18:26:17 +000058 %cmp = fcmp olt float %f2, %f3
59 br i1 %cmp, label %if.then, label %if.else
60
61if.then: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +000062 tail call void (...) @g0() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +000063 br label %if.end
64
65if.else: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +000066 tail call void (...) @g1() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +000067 br label %if.end
68
69if.end: ; preds = %if.else, %if.then
70 ret void
71}
72
73define void @func2(float %f2, float %f3) nounwind {
74entry:
Daniel Sanders3d3ea532014-06-12 15:00:17 +000075; ALL-LABEL: func2:
76
77; 32-FCC: c.ole.s $f12, $f14
78; 64-FCC: c.ole.s $f12, $f13
Daniel Sanders69c60082015-05-20 14:18:59 +000079; FCC: bc1t $BB2_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +000080
81; 32-GPR: cmp.ult.s $[[FGRCC:f[0-9]+]], $f14, $f12
82; 64-GPR: cmp.ult.s $[[FGRCC:f[0-9]+]], $f13, $f12
83; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
84; GPR-NOT: not $[[GPRCC]], $[[GPRCC]]
Daniel Sanderse8efff32016-03-14 16:24:05 +000085; 32-GPR: beqz $[[GPRCC]], $BB2_2
86; 64-GPR: beqzc $[[GPRCC]], $BB2_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +000087
Akira Hatanakaa5352702011-03-31 18:26:17 +000088 %cmp = fcmp ugt float %f2, %f3
89 br i1 %cmp, label %if.else, label %if.then
90
91if.then: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +000092 tail call void (...) @g0() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +000093 br label %if.end
94
95if.else: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +000096 tail call void (...) @g1() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +000097 br label %if.end
98
99if.end: ; preds = %if.else, %if.then
100 ret void
101}
102
103define void @func3(double %f2, double %f3) nounwind {
104entry:
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000105; ALL-LABEL: func3:
106
107; 32-FCC: c.eq.d $f12, $f14
108; 64-FCC: c.eq.d $f12, $f13
Daniel Sanders69c60082015-05-20 14:18:59 +0000109; FCC: bc1f $BB3_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000110
111; 32-GPR: cmp.eq.d $[[FGRCC:f[0-9]+]], $f12, $f14
112; 64-GPR: cmp.eq.d $[[FGRCC:f[0-9]+]], $f12, $f13
113; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
114; FIXME: We ought to be able to transform not+bnez -> beqz
115; GPR: not $[[GPRCC]], $[[GPRCC]]
Daniel Sanderse8efff32016-03-14 16:24:05 +0000116; 32-GPR: bnez $[[GPRCC]], $BB3_2
117; 64-GPR: bnezc $[[GPRCC]], $BB3_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000118
Akira Hatanakaa5352702011-03-31 18:26:17 +0000119 %cmp = fcmp oeq double %f2, %f3
120 br i1 %cmp, label %if.then, label %if.else
121
122if.then: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +0000123 tail call void (...) @g0() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +0000124 br label %if.end
125
126if.else: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +0000127 tail call void (...) @g1() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +0000128 br label %if.end
129
130if.end: ; preds = %if.else, %if.then
131 ret void
132}
133
134define void @func4(double %f2, double %f3) nounwind {
135entry:
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000136; ALL-LABEL: func4:
137
138; 32-FCC: c.olt.d $f12, $f14
139; 64-FCC: c.olt.d $f12, $f13
Daniel Sanders69c60082015-05-20 14:18:59 +0000140; FCC: bc1f $BB4_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000141
142; 32-GPR: cmp.ule.d $[[FGRCC:f[0-9]+]], $f14, $f12
143; 64-GPR: cmp.ule.d $[[FGRCC:f[0-9]+]], $f13, $f12
144; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
145; GPR-NOT: not $[[GPRCC]], $[[GPRCC]]
Daniel Sanderse8efff32016-03-14 16:24:05 +0000146; 32-GPR: bnez $[[GPRCC]], $BB4_2
147; 64-GPR: bnezc $[[GPRCC]], $BB4_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000148
Akira Hatanakaa5352702011-03-31 18:26:17 +0000149 %cmp = fcmp olt double %f2, %f3
150 br i1 %cmp, label %if.then, label %if.else
151
152if.then: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +0000153 tail call void (...) @g0() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +0000154 br label %if.end
155
156if.else: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +0000157 tail call void (...) @g1() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +0000158 br label %if.end
159
160if.end: ; preds = %if.else, %if.then
161 ret void
162}
163
164define void @func5(double %f2, double %f3) nounwind {
165entry:
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000166; ALL-LABEL: func5:
167
168; 32-FCC: c.ole.d $f12, $f14
169; 64-FCC: c.ole.d $f12, $f13
Daniel Sanders69c60082015-05-20 14:18:59 +0000170; FCC: bc1t $BB5_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000171
172; 32-GPR: cmp.ult.d $[[FGRCC:f[0-9]+]], $f14, $f12
173; 64-GPR: cmp.ult.d $[[FGRCC:f[0-9]+]], $f13, $f12
174; GPR: mfc1 $[[GPRCC:[0-9]+]], $[[FGRCC:f[0-9]+]]
175; GPR-NOT: not $[[GPRCC]], $[[GPRCC]]
Daniel Sanderse8efff32016-03-14 16:24:05 +0000176; 32-GPR: beqz $[[GPRCC]], $BB5_2
177; 64-GPR: beqzc $[[GPRCC]], $BB5_2
Daniel Sanders3d3ea532014-06-12 15:00:17 +0000178
Akira Hatanakaa5352702011-03-31 18:26:17 +0000179 %cmp = fcmp ugt double %f2, %f3
180 br i1 %cmp, label %if.else, label %if.then
181
182if.then: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +0000183 tail call void (...) @g0() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +0000184 br label %if.end
185
186if.else: ; preds = %entry
David Blaikie23af6482015-04-16 23:24:18 +0000187 tail call void (...) @g1() nounwind
Akira Hatanakaa5352702011-03-31 18:26:17 +0000188 br label %if.end
189
190if.end: ; preds = %if.else, %if.then
191 ret void
192}