2 /* { dg-require-effective-target sse4 } */
3 /* { dg-options "-O2 -msse4.1" } */
5 #include "sse4_1-check.h"
10 make_ptestz (__m128i m
, __m128i v
)
23 for (i
= 0; i
< 16; i
++)
24 if ((mask
.c
[i
] & val
.c
[i
]))
33 make_ptestc (__m128i m
, __m128i v
)
46 for (i
= 0; i
< 16; i
++)
47 if ((val
.c
[i
] & ~mask
.c
[i
]))
66 val
[0].i
[0] = 0x11111111;
67 val
[0].i
[1] = 0x00000000;
68 val
[0].i
[2] = 0x00000000;
69 val
[0].i
[3] = 0x11111111;
71 val
[1].i
[0] = 0x00000000;
72 val
[1].i
[1] = 0x11111111;
73 val
[1].i
[2] = 0x11111111;
74 val
[1].i
[3] = 0x00000000;
81 val
[3].i
[0] = 0xffffffff;
82 val
[3].i
[1] = 0xffffffff;
83 val
[3].i
[2] = 0xffffffff;
84 val
[3].i
[3] = 0xffffffff;
87 for(i
= 0; i
< 4; i
++)
88 for(j
= 0; j
< 4; j
++)
90 res
[l
++] = _mm_testz_si128 (val
[j
].x
, val
[i
].x
);
91 res
[l
++] = _mm_testc_si128 (val
[j
].x
, val
[i
].x
);
95 for(i
= 0; i
< 4; i
++)
96 for(j
= 0; j
< 4; j
++)
98 if (res
[l
++] != make_ptestz (val
[j
].x
, val
[i
].x
))
100 if (res
[l
++] != make_ptestc (val
[j
].x
, val
[i
].x
))
104 if (res
[2] != _mm_testz_si128 (val
[1].x
, val
[0].x
))
107 if (res
[3] != _mm_testc_si128 (val
[1].x
, val
[0].x
))