(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512fp16-6.c
       1  /* { dg-do run { target avx512fp16 } } */
       2  /* { dg-options "-O2 -mavx512fp16" } */
       3  
       4  #include <string.h>
       5  
       6  static void do_test (void);
       7  
       8  #define DO_TEST do_test
       9  #define AVX512FP16
      10  #include "avx512-check.h"
      11  
      12  void
      13  __attribute__ ((noinline, noclone))
      14  foo128 (_Float16 *p, __m128h x)
      15  {
      16    *p = ((__v8hf)x)[0];
      17  }
      18  
      19  void
      20  __attribute__ ((noinline, noclone))
      21  foo256 (_Float16 *p, __m256h x)
      22  {
      23    *p = ((__v16hf)x)[0];
      24  }
      25  
      26  void
      27  __attribute__ ((noinline, noclone))
      28  foo512 (_Float16 *p, __m512h x)
      29  {
      30    *p = ((__v32hf)x)[0];
      31  }
      32  
      33  static void
      34  do_test (void)
      35  {
      36    _Float16 x = 25.3;
      37    union128h u128 = { x, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f };
      38    union256h u256 = { x, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
      39  		     0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
      40    union512h u512 = { x, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
      41  		     0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
      42  		     0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
      43  		     0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
      44    _Float16 y;
      45  
      46    foo128 (&y, u128.x);
      47    if (x != y)
      48      abort ();
      49  
      50    foo256 (&y, u256.x);
      51    if (x != y)
      52      abort ();
      53  
      54    foo512 (&y, u512.x);
      55    if (x != y)
      56      abort ();
      57  }