(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512fp16-13.c
       1  /* { dg-do compile} */
       2  /* { dg-options "-O2 -mavx512fp16 -mavx512vl" } */
       3  
       4  #include <immintrin.h>
       5  void
       6  __attribute__ ((noinline, noclone))
       7  store512_ph (void *p, __m512h a)
       8  {
       9    _mm512_store_ph (p, a);
      10  }
      11  
      12  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)" 1 } } */
      13  
      14  void
      15  __attribute__ ((noinline, noclone))
      16  store256_ph (void *p, __m256h a)
      17  {
      18    _mm256_store_ph (p, a);
      19  }
      20  
      21  /* { dg-final { scan-assembler-times "vmovdqa\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)" 1 } } */
      22  
      23  void
      24  __attribute__ ((noinline, noclone))
      25  store_ph (void *p, __m128h a)
      26  {
      27    _mm_store_ph (p, a);
      28  }
      29  
      30  /* { dg-final { scan-assembler-times "vmovdqa\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*\\)" 1 } } */
      31  
      32  __m512h
      33  __attribute__ ((noinline, noclone))
      34  load512_ph (void const *p)
      35  {
      36    return _mm512_load_ph (p);
      37  }
      38  
      39  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)" 1 } } */
      40  
      41  __m256h
      42  __attribute__ ((noinline, noclone))
      43  load256_ph (void const *p)
      44  {
      45    return _mm256_load_ph (p);
      46  }
      47  
      48  /* { dg-final { scan-assembler-times "vmovdqa\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)" 1 } } */
      49  
      50  __m128h
      51  __attribute__ ((noinline, noclone))
      52  load_ph (void const *p)
      53  {
      54    return _mm_load_ph (p);
      55  }
      56  /* { dg-final { scan-assembler-times "vmovdqa\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*\\)" 1 } } */
      57  
      58  __m512h
      59  __attribute__ ((noinline, noclone))
      60  load512u_ph (void const *p)
      61  {
      62    return _mm512_loadu_ph (p);
      63  }
      64  
      65  /* { dg-final { scan-assembler-times "vmovdqu16\[ \\t\]*\[^,\]*,\[^\{\n\]*%zmm\[0-9\]" 1 } } */
      66  
      67  __m256h
      68  __attribute__ ((noinline, noclone))
      69  load256u_ph (void const *p)
      70  {
      71    return _mm256_loadu_ph (p);
      72  }
      73  
      74  /* { dg-final { scan-assembler-times "vmovdqu16\[ \\t\]*\[^,\]*,\[^\{\n\]*%ymm\[0-9\]" 1 } } */
      75  
      76  __m128h
      77  __attribute__ ((noinline, noclone))
      78  load128u_ph (void const *p)
      79  {
      80    return _mm_loadu_ph (p);
      81  }
      82  
      83  /* { dg-final { scan-assembler-times "vmovdqu16\[ \\t\]*\[^,\]*,\[^\{\n\]*%xmm\[0-9\]" 1 } } */
      84  
      85  void
      86  __attribute__ ((noinline, noclone))
      87  store512u_ph (void *p, __m512h a)
      88  {
      89    return _mm512_storeu_ph (p, a);
      90  }
      91  
      92  /* { dg-final { scan-assembler-times "vmovdqu16\[ \\t\]*\[^\{\n\]*%zmm\[0-9\], *\[^,\]*" 1 } } */
      93  
      94  void
      95  __attribute__ ((noinline, noclone))
      96  store256u_ph (void *p, __m256h a)
      97  {
      98    return _mm256_storeu_ph (p, a);
      99  }
     100  
     101  /* { dg-final { scan-assembler-times "vmovdqu16\[ \\t\]*\[^\{\n\]*%ymm\[0-9\], *\[^,\]*" 1 } } */
     102  
     103  void
     104  __attribute__ ((noinline, noclone))
     105  storeu_ph (void *p, __m128h a)
     106  {
     107    return _mm_storeu_ph (p, a);
     108  }
     109  
     110  /* { dg-final { scan-assembler-times "vmovdqu16\[ \\t\]*\[^\{\n\]*%xmm\[0-9\], *\[^,\]*" 1 } } */
     111  
     112  __m512h
     113  __attribute__ ((noinline, noclone))
     114  abs512_ph (__m512h a)
     115  {
     116    return _mm512_abs_ph (a);
     117  }
     118  
     119  /* { dg-final { scan-assembler-times "vpbroadcastd\[^\n\]*%zmm\[0-9\]+" 1 { target { ! ia32 } } } } */
     120  /* { dg-final { scan-assembler-times "vpandd\[^\n\]*%zmm\[0-9\]+" 1 } } */
     121  
     122  __m256h
     123  __attribute__ ((noinline, noclone))
     124  abs256_ph (__m256h a)
     125  {
     126    return _mm256_abs_ph (a);
     127  }
     128  
     129  /* { dg-final { scan-assembler-times "vpbroadcastq\[^\n\]*%ymm\[0-9\]+" 1 { target { ! ia32 } } } } */
     130  /* { dg-final { scan-assembler-times "vpand\[^\n\]*%ymm\[0-9\]+" 1 } } */
     131  
     132  __m128h
     133  __attribute__ ((noinline, noclone))
     134  abs_ph (__m128h a)
     135  {
     136    return _mm_abs_ph (a);
     137  }
     138  
     139  /* { dg-final { scan-assembler-times "vpbroadcastq\[^\n\]*%xmm\[0-9\]+" 1 { target { ! ia32 } } } } */
     140  /* { dg-final { scan-assembler-times "vpand\[^\n\]*%xmm\[0-9\]+" 1 } } */