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 } } } */
7 #define CHECK_H "sse4_1-check.h"
11 #define TEST sse4_1_test
16 #include <smmintrin.h>
19 make_ptestz (__m128i m
, __m128i v
)
32 for (i
= 0; i
< 16; i
++)
33 if ((mask
.c
[i
] & val
.c
[i
]))
42 make_ptestc (__m128i m
, __m128i v
)
55 for (i
= 0; i
< 16; i
++)
56 if ((val
.c
[i
] & ~mask
.c
[i
]))
75 val
[0].i
[0] = 0x11111111;
76 val
[0].i
[1] = 0x00000000;
77 val
[0].i
[2] = 0x00000000;
78 val
[0].i
[3] = 0x11111111;
80 val
[1].i
[0] = 0x00000000;
81 val
[1].i
[1] = 0x11111111;
82 val
[1].i
[2] = 0x11111111;
83 val
[1].i
[3] = 0x00000000;
90 val
[3].i
[0] = 0xffffffff;
91 val
[3].i
[1] = 0xffffffff;
92 val
[3].i
[2] = 0xffffffff;
93 val
[3].i
[3] = 0xffffffff;
96 for(i
= 0; i
< 4; i
++)
97 for(j
= 0; j
< 4; j
++)
99 res
[l
++] = _mm_testz_si128 (val
[j
].x
, val
[i
].x
);
100 res
[l
++] = _mm_testc_si128 (val
[j
].x
, val
[i
].x
);
104 for(i
= 0; i
< 4; i
++)
105 for(j
= 0; j
< 4; j
++)
107 if (res
[l
++] != make_ptestz (val
[j
].x
, val
[i
].x
))
109 if (res
[l
++] != make_ptestc (val
[j
].x
, val
[i
].x
))
113 if (res
[2] != _mm_testz_si128 (val
[1].x
, val
[0].x
))
116 if (res
[3] != _mm_testc_si128 (val
[1].x
, val
[0].x
))