Skip to content

Commit 03da6e6

Browse files
committed
[ValueTracking] add tests for fmin/fmax; NFC
llvm-svn: 345777
1 parent 8eb3c81 commit 03da6e6

File tree

1 file changed

+176
-0
lines changed

1 file changed

+176
-0
lines changed

llvm/unittests/Analysis/ValueTrackingTest.cpp

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,182 @@ TEST_F(MatchSelectPatternTest, FMinConstantZeroNsz) {
149149
expectPattern({SPF_FMINNUM, SPNB_RETURNS_OTHER, true});
150150
}
151151

152+
TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero1) {
153+
parseAssembly(
154+
"define float @test(float %a) {\n"
155+
" %1 = fcmp olt float -0.0, %a\n"
156+
" %A = select i1 %1, float 0.0, float %a\n"
157+
" ret float %A\n"
158+
"}\n");
159+
// FIXME: The sign of zero doesn't matter in fcmp.
160+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
161+
}
162+
163+
TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero2) {
164+
parseAssembly(
165+
"define float @test(float %a) {\n"
166+
" %1 = fcmp ogt float %a, -0.0\n"
167+
" %A = select i1 %1, float 0.0, float %a\n"
168+
" ret float %A\n"
169+
"}\n");
170+
// FIXME: The sign of zero doesn't matter in fcmp.
171+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
172+
}
173+
174+
TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero3) {
175+
parseAssembly(
176+
"define float @test(float %a) {\n"
177+
" %1 = fcmp olt float 0.0, %a\n"
178+
" %A = select i1 %1, float -0.0, float %a\n"
179+
" ret float %A\n"
180+
"}\n");
181+
// FIXME: The sign of zero doesn't matter in fcmp.
182+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
183+
}
184+
185+
TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero4) {
186+
parseAssembly(
187+
"define float @test(float %a) {\n"
188+
" %1 = fcmp ogt float %a, 0.0\n"
189+
" %A = select i1 %1, float -0.0, float %a\n"
190+
" ret float %A\n"
191+
"}\n");
192+
// FIXME: The sign of zero doesn't matter in fcmp.
193+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
194+
}
195+
196+
TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero5) {
197+
parseAssembly(
198+
"define float @test(float %a) {\n"
199+
" %1 = fcmp ogt float -0.0, %a\n"
200+
" %A = select i1 %1, float %a, float 0.0\n"
201+
" ret float %A\n"
202+
"}\n");
203+
// FIXME: The sign of zero doesn't matter in fcmp.
204+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
205+
}
206+
207+
TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero6) {
208+
parseAssembly(
209+
"define float @test(float %a) {\n"
210+
" %1 = fcmp olt float %a, -0.0\n"
211+
" %A = select i1 %1, float %a, float 0.0\n"
212+
" ret float %A\n"
213+
"}\n");
214+
// FIXME: The sign of zero doesn't matter in fcmp.
215+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
216+
}
217+
218+
TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero7) {
219+
parseAssembly(
220+
"define float @test(float %a) {\n"
221+
" %1 = fcmp ogt float 0.0, %a\n"
222+
" %A = select i1 %1, float %a, float -0.0\n"
223+
" ret float %A\n"
224+
"}\n");
225+
// FIXME: The sign of zero doesn't matter in fcmp.
226+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
227+
}
228+
229+
TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero8) {
230+
parseAssembly(
231+
"define float @test(float %a) {\n"
232+
" %1 = fcmp olt float %a, 0.0\n"
233+
" %A = select i1 %1, float %a, float -0.0\n"
234+
" ret float %A\n"
235+
"}\n");
236+
// FIXME: The sign of zero doesn't matter in fcmp.
237+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
238+
}
239+
240+
TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero1) {
241+
parseAssembly(
242+
"define float @test(float %a) {\n"
243+
" %1 = fcmp ogt float -0.0, %a\n"
244+
" %A = select i1 %1, float 0.0, float %a\n"
245+
" ret float %A\n"
246+
"}\n");
247+
// FIXME: The sign of zero doesn't matter in fcmp.
248+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
249+
}
250+
251+
TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero2) {
252+
parseAssembly(
253+
"define float @test(float %a) {\n"
254+
" %1 = fcmp olt float %a, -0.0\n"
255+
" %A = select i1 %1, float 0.0, float %a\n"
256+
" ret float %A\n"
257+
"}\n");
258+
// FIXME: The sign of zero doesn't matter in fcmp.
259+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
260+
}
261+
262+
TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero3) {
263+
parseAssembly(
264+
"define float @test(float %a) {\n"
265+
" %1 = fcmp ogt float 0.0, %a\n"
266+
" %A = select i1 %1, float -0.0, float %a\n"
267+
" ret float %A\n"
268+
"}\n");
269+
// FIXME: The sign of zero doesn't matter in fcmp.
270+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
271+
}
272+
273+
TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero4) {
274+
parseAssembly(
275+
"define float @test(float %a) {\n"
276+
" %1 = fcmp olt float %a, 0.0\n"
277+
" %A = select i1 %1, float -0.0, float %a\n"
278+
" ret float %A\n"
279+
"}\n");
280+
// FIXME: The sign of zero doesn't matter in fcmp.
281+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
282+
}
283+
284+
TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero5) {
285+
parseAssembly(
286+
"define float @test(float %a) {\n"
287+
" %1 = fcmp olt float -0.0, %a\n"
288+
" %A = select i1 %1, float %a, float 0.0\n"
289+
" ret float %A\n"
290+
"}\n");
291+
// FIXME: The sign of zero doesn't matter in fcmp.
292+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
293+
}
294+
295+
TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero6) {
296+
parseAssembly(
297+
"define float @test(float %a) {\n"
298+
" %1 = fcmp ogt float %a, -0.0\n"
299+
" %A = select i1 %1, float %a, float 0.0\n"
300+
" ret float %A\n"
301+
"}\n");
302+
// FIXME: The sign of zero doesn't matter in fcmp.
303+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
304+
}
305+
306+
TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero7) {
307+
parseAssembly(
308+
"define float @test(float %a) {\n"
309+
" %1 = fcmp olt float 0.0, %a\n"
310+
" %A = select i1 %1, float %a, float -0.0\n"
311+
" ret float %A\n"
312+
"}\n");
313+
// FIXME: The sign of zero doesn't matter in fcmp.
314+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
315+
}
316+
317+
TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero8) {
318+
parseAssembly(
319+
"define float @test(float %a) {\n"
320+
" %1 = fcmp ogt float %a, 0.0\n"
321+
" %A = select i1 %1, float %a, float -0.0\n"
322+
" ret float %A\n"
323+
"}\n");
324+
// FIXME: The sign of zero doesn't matter in fcmp.
325+
expectPattern({SPF_UNKNOWN, SPNB_NA, false});
326+
}
327+
152328
TEST_F(MatchSelectPatternTest, VectorFMinimum) {
153329
parseAssembly(
154330
"define <4 x float> @test(<4 x float> %a) {\n"

0 commit comments

Comments
 (0)