1  /* { dg-do run { target aarch64_sve_hw } } */
       2  /* { dg-options "-O2" } */
       3  
       4  #include <arm_sve.h>
       5  
       6  svfloat16_t __attribute__ ((noipa))
       7  make_f16 (float16_t x0, float16_t x1, float16_t x2, float16_t x3,
       8  	  float16_t x4, float16_t x5, float16_t x6, float16_t x7)
       9  {
      10    return svdupq_f16 (x0, x1, x2, x3, x4, x5, x6, x7);
      11  }
      12  
      13  svfloat32_t __attribute__ ((noipa))
      14  make_f32 (float32_t x0, float32_t x1, float32_t x2, float32_t x3)
      15  {
      16    return svdupq_f32 (x0, x1, x2, x3);
      17  }
      18  
      19  svfloat64_t __attribute__ ((noipa))
      20  make_f64 (float64_t x0, float64_t x1)
      21  {
      22    return svdupq_f64 (x0, x1);
      23  }
      24  
      25  float16_t a[8] = { 1.0, -4.25, 9.75, 6.5, -2.125, 5.5, -3.75, 7.625 };
      26  float32_t b[4] = { 1.0, -90.25, -11.75, 141.5 };
      27  float64_t c[2] = { 9221.5, -4491.25 };
      28  
      29  int
      30  main ()
      31  {
      32    svbool_t pg = svptrue_pat_b8 (SV_VL16);
      33    svfloat16_t f16 = make_f16 (a[0], a[1], a[2], a[3],
      34  			      a[4], a[5], a[6], a[7]);
      35    if (svptest_any (svptrue_b8 (), svcmpne (pg, f16, svld1 (pg, a))))
      36      __builtin_abort ();
      37  
      38    svfloat32_t f32 = make_f32 (b[0], b[1], b[2], b[3]);
      39    if (svptest_any (svptrue_b8 (), svcmpne (pg, f32, svld1 (pg, b))))
      40      __builtin_abort ();
      41  
      42    svfloat64_t f64 = make_f64 (c[0], c[1]);
      43    if (svptest_any (svptrue_b8 (), svcmpne (pg, f64, svld1 (pg, c))))
      44      __builtin_abort ();
      45  
      46    return 0;
      47  }