1 /* { dg-do run { target aarch64_sve_hw } } */
2 /* { dg-options "-O2" } */
3 
4 #include <arm_sve.h>
5 
6 svfloat16_t __attribute__ ((noipa))
make_f16(float16_t x0,float16_t x1,float16_t x2,float16_t x3,float16_t x4,float16_t x5,float16_t x6,float16_t x7)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))
make_f32(float32_t x0,float32_t x1,float32_t x2,float32_t x3)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))
make_f64(float64_t x0,float64_t x1)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
main()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 }
48