blob: 137fb5af7d9e6a743e8b90ee3c59a78e68531df6 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O2 -mavx512vp2intersect -mavx512vl" } */
/* { dg-require-effective-target avx512vp2intersect } */
#define AVX512VP2INTERSECT
#include <x86intrin.h>
#include "avx512f-helper.h"
void
TEST (void)
{
__m256i a1 = _mm256_set_epi64x (1, 2, 3, 4);
__m256i b1 = _mm256_set_epi64x (2, 11, 4, 33);
__m256i a2 = _mm256_set_epi32 (1, 2, 3, 4, 5, 6, 7, 8);
__m256i b2 = _mm256_set_epi32 (2, 11, 4, 33, 6, 55, 8, 77);
__m128i a3 = _mm_set_epi64x (13, 22);
__m128i b3 = _mm_set_epi64x (22, 1434);
__m128i a4 = _mm_set_epi32 (1, 2, 3, 4);
__m128i b4 = _mm_set_epi32 (2, 11, 4, 33);
__mmask8 m0, m1, m2, m3, m4, m5, m6, m7;
m0 = m1 = m2 = m3 = m4 = m5 = m6 = m7 = 0;
_mm_2intersect_epi64 (a3, b3, &m0, &m1);
/* m0 = ******01, m1 = ******10. */
if (m0 != 0x1 || m1 != 0x2)
abort();
_mm_2intersect_epi32 (a4, b4, &m2, &m3);
/* m2 = ****0101, m3 = ****1010. */
if (m2 != 0x5 || m3 != 0xa)
abort();
_mm256_2intersect_epi64 (a1, b1, &m4, &m5);
/* m4 = ****0101, m5 = ****1010. */
if (m4 != 0x5 || m5 != 0xa)
abort();
_mm256_2intersect_epi32 (a2, b2, &m6, &m7);
/* m0 = 01010101, m1 = 10101010. */
if (m6 != 0x55 || m7 != 0xaa)
abort();
}