1 /* { dg-do run { target aarch64_sve_hw } } */
2 /* { dg-options "-O2" } */
3 
4 #include <arm_sve.h>
5 
6 svint8_t __attribute__ ((noipa))
make_s8(int8_t x0,int8_t x1,int8_t x2,int8_t x3,int8_t x4,int8_t x5,int8_t x6,int8_t x7,int8_t x8,int8_t x9,int8_t xa,int8_t xb,int8_t xc,int8_t xd,int8_t xe,int8_t xf)7 make_s8 (int8_t x0, int8_t x1, int8_t x2, int8_t x3,
8 	 int8_t x4, int8_t x5, int8_t x6, int8_t x7,
9 	 int8_t x8, int8_t x9, int8_t xa, int8_t xb,
10 	 int8_t xc, int8_t xd, int8_t xe, int8_t xf)
11 {
12   return svdupq_s8 (x0, x1, x2, x3, x4, x5, x6, x7,
13 		    x8, x9, xa, xb, xc, xd, xe, xf);
14 }
15 
16 svint16_t __attribute__ ((noipa))
make_s16(int16_t x0,int16_t x1,int16_t x2,int16_t x3,int16_t x4,int16_t x5,int16_t x6,int16_t x7)17 make_s16 (int16_t x0, int16_t x1, int16_t x2, int16_t x3,
18 	  int16_t x4, int16_t x5, int16_t x6, int16_t x7)
19 {
20   return svdupq_s16 (x0, x1, x2, x3, x4, x5, x6, x7);
21 }
22 
23 svint32_t __attribute__ ((noipa))
make_s32(int32_t x0,int32_t x1,int32_t x2,int32_t x3)24 make_s32 (int32_t x0, int32_t x1, int32_t x2, int32_t x3)
25 {
26   return svdupq_s32 (x0, x1, x2, x3);
27 }
28 
29 svint64_t __attribute__ ((noipa))
make_s64(int64_t x0,int64_t x1)30 make_s64 (int64_t x0, int64_t x1)
31 {
32   return svdupq_s64 (x0, x1);
33 }
34 
35 int8_t a[16] = { 1, -44, 91, -24, 101, -55, 77, 83,
36 		 -30, 69, 121, -128, -1, 13, 127, 26 };
37 int16_t b[8] = { -716, -10288, 30604, -19258, -9418, -10435, -16001, 7300 };
38 int32_t c[4] = { 1268374995, -1023602831, -891830021, -1793452959 };
39 int64_t d[2] = { 0x123456789abcdefLL, -0x123456789abcdefLL };
40 
41 int
main()42 main ()
43 {
44   svbool_t pg = svptrue_pat_b8 (SV_VL16);
45   svint8_t s8 = make_s8 (a[0], a[1], a[2], a[3],
46 			 a[4], a[5], a[6], a[7],
47 			 a[8], a[9], a[10], a[11],
48 			 a[12], a[13], a[14], a[15]);
49   if (svptest_any (svptrue_b8 (), svcmpne (pg, s8, svld1 (pg, a))))
50     __builtin_abort ();
51 
52   svint16_t s16 = make_s16 (b[0], b[1], b[2], b[3],
53 			    b[4], b[5], b[6], b[7]);
54   if (svptest_any (svptrue_b8 (), svcmpne (pg, s16, svld1 (pg, b))))
55     __builtin_abort ();
56 
57   svint32_t s32 = make_s32 (c[0], c[1], c[2], c[3]);
58   if (svptest_any (svptrue_b8 (), svcmpne (pg, s32, svld1 (pg, c))))
59     __builtin_abort ();
60 
61   svint64_t s64 = make_s64 (d[0], d[1]);
62   if (svptest_any (svptrue_b8 (), svcmpne (pg, s64, svld1 (pg, d))))
63     __builtin_abort ();
64 
65   return 0;
66 }
67