(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512f-vnni-1.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-mavx512f -mavx512vnni -mavx512bw -O2" } */
       3  /* { dg-final { scan-assembler-times "vpdpbusd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
       4  /* { dg-final { scan-assembler-times "vpdpbusd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
       5  /* { dg-final { scan-assembler-times "vpdpbusd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
       6  /* { dg-final { scan-assembler-times "vpdpbusds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
       7  /* { dg-final { scan-assembler-times "vpdpbusds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
       8  /* { dg-final { scan-assembler-times "vpdpbusds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
       9  /* { dg-final { scan-assembler-times "vpdpwssd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
      10  /* { dg-final { scan-assembler-times "vpdpwssd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
      11  /* { dg-final { scan-assembler-times "vpdpwssd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
      12  /* { dg-final { scan-assembler-times "vpdpwssds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
      13  /* { dg-final { scan-assembler-times "vpdpwssds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
      14  /* { dg-final { scan-assembler-times "vpdpwssds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\\n\\r]*%zmm\[0-9\]+\[^\\n\\r\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
      15  
      16  #include <immintrin.h>
      17  
      18  volatile __m512i x,y,z,z1;
      19  volatile __mmask32 m32;
      20  volatile __mmask16 m16;
      21  volatile __mmask8 m8;
      22  
      23  void extern
      24  avx512f_test (void)
      25  {
      26    x = _mm512_dpbusd_epi32 (x, y, z);
      27    x = _mm512_mask_dpbusd_epi32 (x, m16, y, z);
      28    x = _mm512_maskz_dpbusd_epi32 (m16, x, y, z);
      29  
      30    x = _mm512_dpbusds_epi32 (x, y, z);
      31    x = _mm512_mask_dpbusds_epi32 (x, m16, y, z);
      32    x = _mm512_maskz_dpbusds_epi32 (m16, x, y, z);
      33  
      34    x = _mm512_dpwssd_epi32 (x, y, z);
      35    x = _mm512_mask_dpwssd_epi32 (x, m16, y, z);
      36    x = _mm512_maskz_dpwssd_epi32 (m16, x, y, z);
      37  
      38    x = _mm512_dpwssds_epi32 (x, y, z);
      39    x = _mm512_mask_dpwssds_epi32 (x, m16, y, z);
      40    x = _mm512_maskz_dpwssds_epi32 (m16, x, y, z);
      41  }