aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/avx-vptest-6.c
blob: 5821a92077c5895514d9f9dc833dbcfa7344c0a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* { dg-do compile } */
/* { dg-options "-O2 -mavx" } */

typedef long long __m256i __attribute__ ((__vector_size__ (32)));

extern void ext (void);

void foo (__m256i x, __m256i y)
{
  __m256i a = x & ~y;
  if (__builtin_ia32_ptestz256 (a, a))
    ext();
}

void bar (__m256i x, __m256i y)
{
  __m256i a = ~x & y;
  if (__builtin_ia32_ptestz256 (a, a))
    ext();
}

void foo2 (__m256i x, __m256i y)
{
  __m256i a = x & ~y;
  if (__builtin_ia32_ptestz256 (a, a))
    ext();
}

void bar2 (__m256i x, __m256i y)
{
  __m256i a = ~x & y;
  if (__builtin_ia32_ptestz256 (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" } } */