2 /* { dg-require-effective-target p8vector_hw } */
3 /* { dg-options "-O2 -mvsx -Wno-psabi" } */
4 /* { dg-additional-options "-mdejagnu-cpu=power8" { target { ! has_arch_pwr8 } } } */
6 #define NO_WARN_X86_INTRINSICS 1
12 #define ROUND_INTRIN(x, y) _mm_floor_sd (x, y)
14 #include "sse4_1-round-data.h"
16 static struct data2 data
[] = {
17 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
18 .value2
= { .f
= { 0.00, IGNORED
} },
19 .answer
= { 0.0, PASSTHROUGH
} },
20 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
21 .value2
= { .f
= { 0.25, IGNORED
} },
22 .answer
= { 0.0, PASSTHROUGH
} },
23 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
24 .value2
= { .f
= { 0.50, IGNORED
} },
25 .answer
= { 0.0, PASSTHROUGH
} },
26 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
27 .value2
= { .f
= { 0.75, IGNORED
} },
28 .answer
= { 0.0, PASSTHROUGH
} },
30 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
31 .value2
= { .f
= { 0x1.ffffffffffffcp
+50, IGNORED
} },
32 .answer
= { 0x1.ffffffffffffcp
+50, PASSTHROUGH
} },
33 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
34 .value2
= { .f
= { 0x1.ffffffffffffdp
+50, IGNORED
} },
35 .answer
= { 0x1.ffffffffffffcp
+50, PASSTHROUGH
} },
36 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
37 .value2
= { .f
= { 0x1.ffffffffffffep
+50, IGNORED
} },
38 .answer
= { 0x1.ffffffffffffcp
+50, PASSTHROUGH
} },
39 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
40 .value2
= { .f
= { 0x1.fffffffffffffp
+50, IGNORED
} },
41 .answer
= { 0x1.ffffffffffffcp
+50, PASSTHROUGH
} },
42 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
43 .value2
= { .f
= { 0x1.0000000000000p
+51, IGNORED
} },
44 .answer
= { 0x1.0000000000000p
+51, PASSTHROUGH
} },
45 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
46 .value2
= { .f
= { 0x1.0000000000001p
+51, IGNORED
} },
47 .answer
= { 0x1.0000000000000p
+51, PASSTHROUGH
} },
48 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
49 .value2
= { .f
= { 0x1.0000000000002p
+51, IGNORED
} },
50 .answer
= { 0x1.0000000000002p
+51, PASSTHROUGH
} },
51 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
52 .value2
= { .f
= { 0x1.0000000000003p
+51, IGNORED
} },
53 .answer
= { 0x1.0000000000002p
+51, PASSTHROUGH
} },
55 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
56 .value2
= { .f
= { 0x1.ffffffffffffep
+51, IGNORED
} },
57 .answer
= { 0x1.ffffffffffffep
+51, PASSTHROUGH
} },
58 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
59 .value2
= { .f
= { 0x1.fffffffffffffp
+51, IGNORED
} },
60 .answer
= { 0x1.ffffffffffffep
+51, PASSTHROUGH
} },
61 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
62 .value2
= { .f
= { 0x1.0000000000000p
+52, IGNORED
} },
63 .answer
= { 0x1.0000000000000p
+52, PASSTHROUGH
} },
64 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
65 .value2
= { .f
= { 0x1.0000000000001p
+52, IGNORED
} },
66 .answer
= { 0x1.0000000000001p
+52, PASSTHROUGH
} },
68 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
69 .value2
= { .f
= { -0x1.0000000000001p
+52, IGNORED
} },
70 .answer
= { -0x1.0000000000001p
+52, PASSTHROUGH
} },
71 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
72 .value2
= { .f
= { -0x1.0000000000000p
+52, IGNORED
} },
73 .answer
= { -0x1.0000000000000p
+52, PASSTHROUGH
} },
74 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
75 .value2
= { .f
= { -0x1.fffffffffffffp
+51, IGNORED
} },
76 .answer
= { -0x1.0000000000000p
+52, PASSTHROUGH
} },
77 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
78 .value2
= { .f
= { -0x1.ffffffffffffep
+51, IGNORED
} },
79 .answer
= { -0x1.ffffffffffffep
+51, PASSTHROUGH
} },
81 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
82 .value2
= { .f
= { -0x1.0000000000003p
+51, IGNORED
} },
83 .answer
= { -0x1.0000000000004p
+51, PASSTHROUGH
} },
84 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
85 .value2
= { .f
= { -0x1.0000000000002p
+51, IGNORED
} },
86 .answer
= { -0x1.0000000000002p
+51, PASSTHROUGH
} },
87 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
88 .value2
= { .f
= { -0x1.0000000000001p
+51, IGNORED
} },
89 .answer
= { -0x1.0000000000002p
+51, PASSTHROUGH
} },
90 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
91 .value2
= { .f
= { -0x1.0000000000000p
+51, IGNORED
} },
92 .answer
= { -0x1.0000000000000p
+51, PASSTHROUGH
} },
93 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
94 .value2
= { .f
= { -0x1.ffffffffffffcp
+50, IGNORED
} },
95 .answer
= { -0x1.ffffffffffffcp
+50, PASSTHROUGH
} },
96 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
97 .value2
= { .f
= { -0x1.ffffffffffffep
+50, IGNORED
} },
98 .answer
= { -0x1.0000000000000p
+51, PASSTHROUGH
} },
99 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
100 .value2
= { .f
= { -0x1.ffffffffffffdp
+50, IGNORED
} },
101 .answer
= { -0x1.0000000000000p
+51, PASSTHROUGH
} },
102 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
103 .value2
= { .f
= { -0x1.ffffffffffffcp
+50, IGNORED
} },
104 .answer
= { -0x1.ffffffffffffcp
+50, PASSTHROUGH
} },
106 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
107 .value2
= { .f
= { -1.00, IGNORED
} },
108 .answer
= { -1.0, PASSTHROUGH
} },
109 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
110 .value2
= { .f
= { -0.75, IGNORED
} },
111 .answer
= { -1.0, PASSTHROUGH
} },
112 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
113 .value2
= { .f
= { -0.50, IGNORED
} },
114 .answer
= { -1.0, PASSTHROUGH
} },
115 { .value1
= { .f
= { IGNORED
, PASSTHROUGH
} },
116 .value2
= { .f
= { -0.25, IGNORED
} },
117 .answer
= { -1.0, PASSTHROUGH
} }
120 #include "sse4_1-round2.h"