1 /* { dg-do run { target sse4 } } */
2 /* { dg-options " -O2 -msse4.1 -mfpmath=sse -std=gnu++20" } */
6 #define CHECK_H "sse4_1-check.h"
10 #define TEST sse4_1_test
16 __attribute__((noinline))
17 __cond_swap(double* __x, double* __y) {
18 bool __r = (*__x < *__y);
19 auto __tmp = __r ? *__x : *__y;
20 *__y = __r ? *__y : *__x;
27 __cond_swap(&nan, &x);
28 return x == -0.0 && nan == 0.0;
34 __cond_swap(&x, &nan);
35 return isnan(x) && signbit(x) == 0 && nan == 1.0;
41 __cond_swap(&nan, &x);
42 return isnan(x) && signbit(x) == 0 && nan == -1.0;
48 __cond_swap(&x, &nan);
49 return isnan(x) && signbit(x) == 0 && nan == -1.0;
55 __cond_swap(&nan, &x);
56 return isnan(x) && signbit(x) == 1 && nan == 1.0;
62 __cond_swap(&x, &nan);
63 return isnan(x) && signbit(x) == 1 && nan == 1.0;
69 __cond_swap(&nan, &x);
70 return isnan(x) && signbit(x) == 1 && nan == -1.0;
76 __cond_swap(&x, &nan);
77 return isnan(x) && signbit(x) == 1 && nan == -1.0;
86 || !test2() || !test2r()
87 || !test3() || !test4r()
88 || !test4() || !test4r()