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, y) _mm_floor_ss (x, y)
12
13 #include "sse4_1-round-data.h"
14
15 static struct data2 data[] = {
16 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
17 .value2 = { .f = { 0.00, IGNORED, IGNORED, IGNORED } },
18 .answer = { 0.0, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
19 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
20 .value2 = { .f = { 0.25, IGNORED, IGNORED, IGNORED } },
21 .answer = { 0.0, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
22 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
23 .value2 = { .f = { 0.50, IGNORED, IGNORED, IGNORED } },
24 .answer = { 0.0, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
25 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
26 .value2 = { .f = { 0.75, IGNORED, IGNORED, IGNORED } },
27 .answer = { 0.0, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
28
29 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
30 .value2 = { .f = { 0x1.fffff8p+21, IGNORED, IGNORED, IGNORED } },
31 .answer = { 0x1.fffff8p+21, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
32 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
33 .value2 = { .f = { 0x1.fffffap+21, IGNORED, IGNORED, IGNORED } },
34 .answer = { 0x1.fffff8p+21, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
35 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
36 .value2 = { .f = { 0x1.fffffcp+21, IGNORED, IGNORED, IGNORED } },
37 .answer = { 0x1.fffff8p+21, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
38 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
39 .value2 = { .f = { 0x1.fffffep+21, IGNORED, IGNORED, IGNORED } },
40 .answer = { 0x1.fffff8p+21, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
41
42 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
43 .value2 = { .f = { 0x1.fffffap+22, IGNORED, IGNORED, IGNORED } },
44 .answer = { 0x1.fffff8p+22, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
45 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
46 .value2 = { .f = { 0x1.fffffcp+22, IGNORED, IGNORED, IGNORED } },
47 .answer = { 0x1.fffffcp+22, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
48 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
49 .value2 = { .f = { 0x1.fffffep+22, IGNORED, IGNORED, IGNORED } },
50 .answer = { 0x1.fffffcp+22, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
51 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
52 .value2 = { .f = { 0x1.fffffep+23, IGNORED, IGNORED, IGNORED } },
53 .answer = { 0x1.fffffep+23, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
54
55 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
56 .value2 = { .f = { -0x1.fffffep+23, IGNORED, IGNORED, IGNORED } },
57 .answer = { -0x1.fffffep+23, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
58 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
59 .value2 = { .f = { -0x1.fffffep+22, IGNORED, IGNORED, IGNORED } },
60 .answer = { -0x1.000000p+23, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
61 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
62 .value2 = { .f = { -0x1.fffffcp+22, IGNORED, IGNORED, IGNORED } },
63 .answer = { -0x1.fffffcp+22, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
64 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
65 .value2 = { .f = { -0x1.fffffap+22, IGNORED, IGNORED, IGNORED } },
66 .answer = { -0x1.fffffcp+22, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
67
68 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
69 .value2 = { .f = { -0x1.fffffep+21, IGNORED, IGNORED, IGNORED } },
70 .answer = { -0x1.000000p+22, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
71 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
72 .value2 = { .f = { -0x1.fffffcp+21, IGNORED, IGNORED, IGNORED } },
73 .answer = { -0x1.000000p+22, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
74 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
75 .value2 = { .f = { -0x1.fffffap+21, IGNORED, IGNORED, IGNORED } },
76 .answer = { -0x1.000000p+22, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
77 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
78 .value2 = { .f = { -0x1.fffff8p+21, IGNORED, IGNORED, IGNORED } },
79 .answer = { -0x1.fffff8p+21, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
80
81 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
82 .value2 = { .f = { -1.00, IGNORED, IGNORED, IGNORED } },
83 .answer = { -1.0, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
84 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
85 .value2 = { .f = { -0.75, IGNORED, IGNORED, IGNORED } },
86 .answer = { -1.0, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
87 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
88 .value2 = { .f = { -0.50, IGNORED, IGNORED, IGNORED } },
89 .answer = { -1.0, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
90 { .value1 = { .f = { IGNORED, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } },
91 .value2 = { .f = { -0.25, IGNORED, IGNORED, IGNORED } },
92 .answer = { -1.0, PASSTHROUGH, PASSTHROUGH, PASSTHROUGH } }
93 };
94
95 #include "sse4_1-round2.h"