2 /* { dg-require-effective-target sse4 } */
3 /* { dg-options "-O2 -msse4.1" } */
5 #include "sse4_1-check.h"
10 make_ptestnzc (__m128i m
, __m128i v
)
23 for (i
= 0; i
< 16; i
++)
25 if ((mask
.c
[i
] & val
.c
[i
]))
27 if ((~mask
.c
[i
] & val
.c
[i
]))
31 return (z
== 0 && c
== 0) ? 1 : 0;
45 val
[0].i
[0] = 0x11111111;
46 val
[0].i
[1] = 0x00000000;
47 val
[0].i
[2] = 0x00000000;
48 val
[0].i
[3] = 0x11111111;
50 val
[1].i
[0] = 0x00000000;
51 val
[1].i
[1] = 0x11111111;
52 val
[1].i
[2] = 0x11111111;
53 val
[1].i
[3] = 0x00000000;
60 val
[3].i
[0] = 0xffffffff;
61 val
[3].i
[1] = 0xffffffff;
62 val
[3].i
[2] = 0xffffffff;
63 val
[3].i
[3] = 0xffffffff;
66 for(i
= 0; i
< 4; i
++)
67 for(j
= 0; j
< 4; j
++)
69 res
[l
++] = _mm_testnzc_si128 (val
[j
].x
, val
[i
].x
);
70 res
[l
++] = _mm_testnzc_si128 (val
[j
].x
, val
[i
].x
);
74 for(i
= 0; i
< 4; i
++)
75 for(j
= 0; j
< 4; j
++)
77 if (res
[l
++] != make_ptestnzc (val
[j
].x
, val
[i
].x
))
79 if (res
[l
++] != make_ptestnzc (val
[j
].x
, val
[i
].x
))
83 if (res
[2] != _mm_testnzc_si128 (val
[1].x
, val
[0].x
))
86 if (res
[3] != _mm_testnzc_si128 (val
[1].x
, val
[0].x
))