[testsuite] require sqrt_insn effective target where needed
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / sse4_1-roundps.c
blob4b0366dfddf3d2a2e9966fb178b655782a3daef9
1 /* { dg-do run } */
2 /* { dg-require-effective-target vsx_hw } */
3 /* { dg-options "-O2 -mvsx" } */
5 #define NO_WARN_X86_INTRINSICS 1
6 #include <smmintrin.h>
8 #define VEC_T __m128
9 #define FP_T float
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[] = {
91 answers_NEAREST_INT,
92 answers_NEG_INF,
93 answers_POS_INF,
94 answers_ZERO,
95 0 /* CUR_DIRECTION answers depend on current rounding mode. */
98 #include "sse4_1-round3.h"