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" } } */
|