(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512vl-vnni-3.c
       1  /* { dg-do compile { target { ! ia32 } } } */
       2  /* { dg-options "-O2 -mavxvnni -mavx512vnni -mavx512vl" } */
       3  /* { dg-final { scan-assembler-times "\\tvpdpbusd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
       4  /* { dg-final { scan-assembler-times "\\tvpdpbusd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
       5  /* { dg-final { scan-assembler-times "\\tvpdpbusds\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
       6  /* { dg-final { scan-assembler-times "\\tvpdpbusds\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
       7  /* { dg-final { scan-assembler-times "\\tvpdpwssd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
       8  /* { dg-final { scan-assembler-times "\\tvpdpwssd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
       9  /* { dg-final { scan-assembler-times "\\tvpdpwssds\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
      10  /* { dg-final { scan-assembler-times "\\tvpdpwssds\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
      11  
      12  
      13  #include <immintrin.h>
      14  
      15  volatile __m256i x,y,z;
      16  volatile __m128i x_,y_,z_;
      17  
      18  void
      19  avxvnni_test (void)
      20  {
      21    register __m256i a __asm ("xmm16");
      22    register __m128i a_ __asm ("xmm26");
      23    a = _mm256_dpbusd_epi32 (x, y, z);
      24    asm volatile ("" : "+v" (a));
      25    x = a;
      26    a_ = _mm_dpbusd_epi32 (x_, y_, z_);
      27    asm volatile ("" : "+v" (a_));
      28    x_ = a_;
      29    a = _mm256_dpbusds_epi32 (x, y, z);
      30    asm volatile ("" : "+v" (a));
      31    x = a;
      32    a_ = _mm_dpbusds_epi32 (x_, y_, z_);
      33    asm volatile ("" : "+v" (a_));
      34    x_ = a_;
      35    a = _mm256_dpwssd_epi32 (x, y, z);
      36    asm volatile ("" : "+v" (a));
      37    x = a;
      38    a_ = _mm_dpwssd_epi32 (x_, y_, z_);
      39    asm volatile ("" : "+v" (a_));
      40    x_ = a_;
      41    a = _mm256_dpwssds_epi32 (x, y, z);
      42    asm volatile ("" : "+v" (a));
      43    x = a;
      44    a_ = _mm_dpwssds_epi32 (x_, y_, z_);
      45    asm volatile ("" : "+v" (a_));
      46    x_ = a_;
      47  }