(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512f-vcvtph2ps-2.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -mavx512f" } */
       3  /* { dg-require-effective-target avx512f } */
       4  
       5  #define AVX512F
       6  
       7  #include "avx512f-helper.h"
       8  
       9  #define SIZE (AVX512F_LEN / 32)
      10  #include "avx512f-mask-type.h"
      11  
      12  void
      13  TEST (void)
      14  {
      15    UNION_TYPE (AVX512F_LEN_HALF, i_w) val;
      16    UNION_TYPE (AVX512F_LEN,) res1,res2,res3;
      17    MASK_TYPE mask = MASK_VALUE;
      18    float exp[SIZE];
      19    int i;
      20  
      21    for (i = 0; i < SIZE; i++)
      22      {
      23        res1.a[i] = DEFAULT_VALUE;
      24        res2.a[i] = DEFAULT_VALUE;
      25        res3.a[i] = DEFAULT_VALUE;
      26      }
      27  
      28    exp[0] = 1;
      29    exp[1] = 2;
      30    exp[2] = 4;
      31    exp[3] = 8;
      32  #if AVX512F_LEN > 128
      33    exp[4] = -1;
      34    exp[5] = -2;
      35    exp[6] = -4;
      36    exp[7] = -8;
      37  #endif
      38  #if AVX512F_LEN > 256
      39    exp[8] = 1;
      40    exp[9] = 2;
      41    exp[10] = 4;
      42    exp[11] = 8;
      43    exp[12] = -1;
      44    exp[13] = -2;
      45    exp[14] = -4;
      46    exp[15] = -8;
      47  #endif
      48  
      49    val.a[0] = 0x3c00;
      50    val.a[1] = 0x4000;
      51    val.a[2] = 0x4400;
      52    val.a[3] = 0x4800;
      53  #if AVX512F_LEN > 128
      54    val.a[4] = 0xbc00;
      55    val.a[5] = 0xc000;
      56    val.a[6] = 0xc400;
      57    val.a[7] = 0xc800;
      58  #endif
      59  #if AVX512F_LEN > 256
      60    val.a[8] = 0x3c00;
      61    val.a[9] = 0x4000;
      62    val.a[10] = 0x4400;
      63    val.a[11] = 0x4800;
      64    val.a[12] = 0xbc00;
      65    val.a[13] = 0xc000;
      66    val.a[14] = 0xc400;
      67    val.a[15] = 0xc800;
      68  #endif
      69  
      70    res1.x = INTRINSIC (_cvtph_ps) (val.x);
      71    res2.x = INTRINSIC (_mask_cvtph_ps) (res2.x, mask, val.x);
      72    res3.x = INTRINSIC (_maskz_cvtph_ps) (mask, val.x);
      73  
      74    if (UNION_CHECK (AVX512F_LEN,) (res1, exp))
      75      abort ();
      76  
      77    MASK_MERGE () (exp, mask, SIZE);
      78    if (UNION_CHECK (AVX512F_LEN,) (res2, exp))
      79      abort ();
      80  
      81    MASK_ZERO () (exp, mask, SIZE);
      82    if (UNION_CHECK (AVX512F_LEN,) (res3, exp))
      83      abort ();
      84  }