145
|
1 /* PR target/54700 */
|
|
2 /* { dg-do run { target sse4 } } */
|
|
3 /* { dg-options "-O2 -std=c++14 -msse4 -mno-avx -mno-xop" } */
|
|
4
|
|
5 #ifndef CHECK_H
|
|
6 #define CHECK_H "sse4_1-check.h"
|
|
7 #endif
|
|
8
|
|
9 #ifndef TEST
|
|
10 #define TEST sse4_1_test
|
|
11 #endif
|
|
12
|
|
13 #include CHECK_H
|
|
14
|
|
15 #include "sse4_1-pr54700-1.C"
|
|
16
|
|
17 static void
|
|
18 TEST ()
|
|
19 {
|
|
20 __v16qi v16qia = { -128, 12, -1, 127, 115, 0, -19, 125, -125, 12, 0, -37, 37, 15, 98, -105 };
|
|
21 __v16qi v16qib = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
|
|
22 __v16qi v16qic = { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 };
|
|
23 __v16qi v16qie = { 1, 18, 3, 20, 21, 22, 7, 24, 9, 26, 27, 12, 29, 30, 31, 16 };
|
|
24 __v16qi v16qif = { 17, 2, 19, 4, 5, 6, 23, 8, 25, 10, 11, 28, 13, 14, 15, 32 };
|
|
25 __v16qi v16qir = f1 (v16qia, v16qib, v16qic);
|
|
26 if (__builtin_memcmp (&v16qir, &v16qie, sizeof (__v16qi)))
|
|
27 __builtin_abort ();
|
|
28 v16qir = f2 (v16qia, v16qib, v16qic);
|
|
29 if (__builtin_memcmp (&v16qir, &v16qif, sizeof (__v16qi)))
|
|
30 __builtin_abort ();
|
|
31 __v4si v4sia = { __INT_MAX__, -__INT_MAX__ - 1, -32, 12 };
|
|
32 __v4si v4sib = { 1, 2, 3, 4 };
|
|
33 __v4si v4sic = { 5, 6, 7, 8 };
|
|
34 __v4si v4sie = { 5, 2, 3, 8 };
|
|
35 __v4si v4sif = { 1, 6, 7, 4 };
|
|
36 __v4si v4sir = f3 (v4sia, v4sib, v4sic);
|
|
37 if (__builtin_memcmp (&v4sir, &v4sie, sizeof (__v4si)))
|
|
38 __builtin_abort ();
|
|
39 v4sir = f4 (v4sia, v4sib, v4sic);
|
|
40 if (__builtin_memcmp (&v4sir, &v4sif, sizeof (__v4si)))
|
|
41 __builtin_abort ();
|
|
42 __v2di v2dia = { -__LONG_LONG_MAX__, 1000LL * __INT_MAX__ };
|
|
43 __v2di v2dib = { 1, 2 };
|
|
44 __v2di v2dic = { 3, 4 };
|
|
45 __v2di v2die = { 1, 4 };
|
|
46 __v2di v2dif = { 3, 2 };
|
|
47 __v2di v2dir = f5 (v2dia, v2dib, v2dic);
|
|
48 if (__builtin_memcmp (&v2dir, &v2die, sizeof (__v2di)))
|
|
49 __builtin_abort ();
|
|
50 v2dir = f6 (v2dia, v2dib, v2dic);
|
|
51 if (__builtin_memcmp (&v2dir, &v2dif, sizeof (__v2di)))
|
|
52 __builtin_abort ();
|
|
53 __v4sf v4sfb = { 1.0f, 2.0f, 3.0f, 4.0f };
|
|
54 __v4sf v4sfc = { 5.0f, 6.0f, 7.0f, 8.0f };
|
|
55 __v4sf v4sfe = { 5.0f, 2.0f, 3.0f, 8.0f };
|
|
56 __v4sf v4sff = { 1.0f, 6.0f, 7.0f, 4.0f };
|
|
57 __v4sf v4sfr = f7 (v4sia, v4sfb, v4sfc);
|
|
58 if (__builtin_memcmp (&v4sfr, &v4sfe, sizeof (__v4sf)))
|
|
59 __builtin_abort ();
|
|
60 v4sfr = f8 (v4sia, v4sfb, v4sfc);
|
|
61 if (__builtin_memcmp (&v4sfr, &v4sff, sizeof (__v4sf)))
|
|
62 __builtin_abort ();
|
|
63 __v2df v2dfb = { 1.0, 2.0 };
|
|
64 __v2df v2dfc = { 3.0, 4.0 };
|
|
65 __v2df v2dfe = { 1.0, 4.0 };
|
|
66 __v2df v2dff = { 3.0, 2.0 };
|
|
67 __v2df v2dfr = f9 (v2dia, v2dfb, v2dfc);
|
|
68 if (__builtin_memcmp (&v2dfr, &v2dfe, sizeof (__v2df)))
|
|
69 __builtin_abort ();
|
|
70 v2dfr = f10 (v2dia, v2dfb, v2dfc);
|
|
71 if (__builtin_memcmp (&v2dfr, &v2dff, sizeof (__v2df)))
|
|
72 __builtin_abort ();
|
|
73 }
|