2 /* { dg-require-effective-target vsx_hw } */
3 /* { dg-options "-O2 -mvsx" } */
5 #define NO_WARN_X86_INTRINSICS 1
11 #define ROUND_INTRIN(x, ignored, mode) _mm_round_ps (x, mode)
13 #include "sse4_1-round-data.h"
15 struct data2 data
[] = {
16 { .value1
= { .f
= { 0.00, 0.25, 0.50, 0.75 } } },
18 { .value1
= { .f
= { 0x1.fffff8p
+21, 0x1.fffffap
+21,
19 0x1.fffffcp
+21, 0x1.fffffep
+21 } } },
20 { .value1
= { .f
= { 0x1.fffffap
+22, 0x1.fffffcp
+22,
21 0x1.fffffep
+22, 0x1.fffffep
+23 } } },
22 { .value1
= { .f
= { -0x1.fffffep
+23, -0x1.fffffep
+22,
23 -0x1.fffffcp
+22, -0x1.fffffap
+22 } } },
24 { .value1
= { .f
= { -0x1.fffffep
+21, -0x1.fffffcp
+21,
25 -0x1.fffffap
+21, -0x1.fffff8p
+21 } } },
27 { .value1
= { .f
= { -1.00, -0.75, -0.50, -0.25 } } }
30 union value answers_NEAREST_INT
[] = {
31 { .f
= { 0.00, 0.00, 0.00, 1.00 } },
33 { .f
= { 0x1.fffff8p
+21, 0x1.fffff8p
+21,
34 0x1.000000p
+22, 0x1.000000p
+22 } },
35 { .f
= { 0x1.fffff8p
+22, 0x1.fffffcp
+22,
36 0x1.000000p
+23, 0x1.fffffep
+23 } },
37 { .f
= { -0x1.fffffep
+23, -0x1.000000p
+23,
38 -0x1.fffffcp
+22, -0x1.fffff8p
+22 } },
39 { .f
= { -0x1.000000p
+22, -0x1.000000p
+22,
40 -0x1.fffff8p
+21, -0x1.fffff8p
+21 } },
42 { .f
= { -1.00, -1.00, 0.00, 0.00 } }
45 union value answers_NEG_INF
[] = {
46 { .f
= { 0.00, 0.00, 0.00, 0.00 } },
48 { .f
= { 0x1.fffff8p
+21, 0x1.fffff8p
+21,
49 0x1.fffff8p
+21, 0x1.fffff8p
+21 } },
50 { .f
= { 0x1.fffff8p
+22, 0x1.fffffcp
+22,
51 0x1.fffffcp
+22, 0x1.fffffep
+23 } },
52 { .f
= { -0x1.fffffep
+23, -0x1.000000p
+23,
53 -0x1.fffffcp
+22, -0x1.fffffcp
+22 } },
54 { .f
= { -0x1.000000p
+22, -0x1.000000p
+22,
55 -0x1.000000p
+22, -0x1.fffff8p
+21 } },
57 { .f
= { -1.00, -1.00, -1.00, -1.00 } }
60 union value answers_POS_INF
[] = {
61 { .f
= { 0.00, 1.00, 1.00, 1.00 } },
63 { .f
= { 0x1.fffff8p
+21, 0x1.000000p
+22,
64 0x1.000000p
+22, 0x1.000000p
+22 } },
65 { .f
= { 0x1.fffffcp
+22, 0x1.fffffcp
+22,
66 0x1.000000p
+23, 0x1.fffffep
+23 } },
67 { .f
= { -0x1.fffffep
+23, -0x1.fffffcp
+22,
68 -0x1.fffffcp
+22, -0x1.fffff8p
+22 } },
69 { .f
= { -0x1.fffff8p
+21, -0x1.fffff8p
+21,
70 -0x1.fffff8p
+21, -0x1.fffff8p
+21 } },
72 { .f
= { -1.00, 0.00, 0.00, 0.00 } }
75 union value answers_ZERO
[] = {
76 { .f
= { 0.00, 0.00, 0.00, 0.00 } },
78 { .f
= { 0x1.fffff8p
+21, 0x1.fffff8p
+21,
79 0x1.fffff8p
+21, 0x1.fffff8p
+21 } },
80 { .f
= { 0x1.fffff8p
+22, 0x1.fffffcp
+22,
81 0x1.fffffcp
+22, 0x1.fffffep
+23 } },
82 { .f
= { -0x1.fffffep
+23, -0x1.fffffcp
+22,
83 -0x1.fffffcp
+22, -0x1.fffff8p
+22 } },
84 { .f
= { -0x1.fffff8p
+21, -0x1.fffff8p
+21,
85 -0x1.fffff8p
+21, -0x1.fffff8p
+21 } },
87 { .f
= { -1.00, 0.00, 0.00, 0.00 } }
90 union value
*answers
[] = {
95 0 /* CUR_DIRECTION answers depend on current rounding mode. */
98 #include "sse4_1-round3.h"