blob: 15a95abe83a0cbe1fa3de1a41f47c0cd73f75ef1 [file] [log] [blame]
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-O2 -mavxvnni -mavx512vnni -mavx512vl" } */
/* { dg-final { scan-assembler-times "\\tvpdpbusd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "\\tvpdpbusd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "\\tvpdpbusds\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "\\tvpdpbusds\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "\\tvpdpwssd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "\\tvpdpwssd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "\\tvpdpwssds\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "\\tvpdpwssds\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
#include <immintrin.h>
volatile __m256i x,y,z;
volatile __m128i x_,y_,z_;
void
avxvnni_test (void)
{
register __m256i a __asm ("xmm16");
register __m128i a_ __asm ("xmm26");
a = _mm256_dpbusd_epi32 (x, y, z);
asm volatile ("" : "+v" (a));
x = a;
a_ = _mm_dpbusd_epi32 (x_, y_, z_);
asm volatile ("" : "+v" (a_));
x_ = a_;
a = _mm256_dpbusds_epi32 (x, y, z);
asm volatile ("" : "+v" (a));
x = a;
a_ = _mm_dpbusds_epi32 (x_, y_, z_);
asm volatile ("" : "+v" (a_));
x_ = a_;
a = _mm256_dpwssd_epi32 (x, y, z);
asm volatile ("" : "+v" (a));
x = a;
a_ = _mm_dpwssd_epi32 (x_, y_, z_);
asm volatile ("" : "+v" (a_));
x_ = a_;
a = _mm256_dpwssds_epi32 (x, y, z);
asm volatile ("" : "+v" (a));
x = a;
a_ = _mm_dpwssds_epi32 (x_, y_, z_);
asm volatile ("" : "+v" (a_));
x_ = a_;
}