blob: d9114bb24a867cdfeaaef849a24cabc861ca9921 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -msse4.1" } */
typedef long long __m128i __attribute__ ((__vector_size__ (16)));
extern void ext (void);
void foo (__m128i x, __m128i y)
{
__m128i a = x & ~y;
if (__builtin_ia32_ptestz128 (a, a))
ext();
}
void bar (__m128i x, __m128i y)
{
__m128i a = ~x & y;
if (__builtin_ia32_ptestz128 (a, a))
ext();
}
void foo2 (__m128i x, __m128i y)
{
__m128i a = x & ~y;
if (__builtin_ia32_ptestz128 (a, a))
ext();
}
void bar2 (__m128i x, __m128i y)
{
__m128i a = ~x & y;
if (__builtin_ia32_ptestz128 (a, a))
ext();
}
/* { dg-final { scan-assembler-times "ptest\[ \\t\]+%" 4 } } */
/* { dg-final { scan-assembler-times "jn?c" 4 } } */
/* { dg-final { scan-assembler-not "pandn" } } */
/* { dg-final { scan-assembler-not "jne" } } */
/* { dg-final { scan-assembler-not "je" } } */