1 /* { dg-do run } */
2 /* { dg-require-effective-target p8vector_hw } */
3 /* { dg-options "-O2 -mpower8-vector -Wno-psabi" } */
4
5 #define NO_WARN_X86_INTRINSICS 1
6 #include <smmintrin.h>
7
8 #define VEC_T __m128
9 #define FP_T float
10
11 #define ROUND_INTRIN(x, mode) _mm_floor_ps (x)
12
13 #include "sse4_1-round-data.h"
14
15 static struct data data[] = {
16 { { .f = { 0.00, 0.25, 0.50, 0.75 } }, { 0.0, 0.0, 0.0, 0.0 } },
17
18 { { .f = { 0x1.fffff8p+21, 0x1.fffffap+21,
19 0x1.fffffcp+21, 0x1.fffffep+21 } },
20 { 0x1.fffff8p+21, 0x1.fffff8p+21,
21 0x1.fffff8p+21, 0x1.fffff8p+21 } },
22
23 { { .f = { 0x1.fffffap+22, 0x1.fffffcp+22,
24 0x1.fffffep+22, 0x1.fffffep+23 } },
25 { 0x1.fffff8p+22, 0x1.fffffcp+22,
26 0x1.fffffcp+22, 0x1.fffffep+23 } },
27
28 { { .f = { -0x1.fffffep+23, -0x1.fffffep+22,
29 -0x1.fffffcp+22, -0x1.fffffap+22 } },
30 { -0x1.fffffep+23, -0x1.000000p+23,
31 -0x1.fffffcp+22, -0x1.fffffcp+22 } },
32
33 { { .f = { -0x1.fffffep+21, -0x1.fffffcp+21,
34 -0x1.fffffap+21, -0x1.fffff8p+21 } },
35 { -0x1.000000p+22, -0x1.000000p+22,
36 -0x1.000000p+22, -0x1.fffff8p+21 } },
37
38 { { .f = { -1.00, -0.75, -0.50, -0.25 } }, { -1.0, -1.0, -1.0, -1.0 } }
39 };
40
41 #include "sse4_1-round.h"