1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -ftree-vectorize -msve-vector-bits=256" } */ 3 4 #define SIZE (15 * 8 + 3) 5 6 #define DEF_INDEX_OFFSET(SIGNED, TYPE, ITERTYPE) \ 7 void __attribute__ ((noinline, noclone)) \ 8 set_##SIGNED##_##TYPE##_##ITERTYPE (SIGNED TYPE *restrict out, \ 9 SIGNED TYPE *restrict in) \ 10 { \ 11 SIGNED ITERTYPE i; \ 12 for (i = 0; i < SIZE; i++) \ 13 { \ 14 out[i] = in[i]; \ 15 } \ 16 } \ 17 void __attribute__ ((noinline, noclone)) \ 18 set_##SIGNED##_##TYPE##_##ITERTYPE##_var (SIGNED TYPE *restrict out, \ 19 SIGNED TYPE *restrict in, \ 20 SIGNED ITERTYPE n) \ 21 { \ 22 SIGNED ITERTYPE i; \ 23 for (i = 0; i < n; i++) \ 24 { \ 25 out[i] = in[i]; \ 26 } \ 27 } 28 29 #define TEST_TYPE(T, SIGNED, TYPE) \ 30 T (SIGNED, TYPE, char) \ 31 T (SIGNED, TYPE, short) \ 32 T (SIGNED, TYPE, int) \ 33 T (SIGNED, TYPE, long) 34 35 #define TEST_ALL(T) \ 36 TEST_TYPE (T, signed, long) \ 37 TEST_TYPE (T, unsigned, long) \ 38 TEST_TYPE (T, signed, int) \ 39 TEST_TYPE (T, unsigned, int) \ 40 TEST_TYPE (T, signed, short) \ 41 TEST_TYPE (T, unsigned, short) \ 42 TEST_TYPE (T, signed, char) \ 43 TEST_TYPE (T, unsigned, char) 44 45 TEST_ALL (DEF_INDEX_OFFSET) 46 47 /* { dg-final { scan-assembler-times "ld1d\\tz\[0-9\]+.d, p\[0-9\]+/z, \\\[x\[0-9\]+, x\[0-9\]+, lsl 3\\\]" 16 } } */ 48 /* { dg-final { scan-assembler-times "st1d\\tz\[0-9\]+.d, p\[0-9\]+, \\\[x\[0-9\]+, x\[0-9\]+, lsl 3\\\]" 16 } } */ 49 /* { dg-final { scan-assembler-times "ld1w\\tz\[0-9\]+.s, p\[0-9\]+/z, \\\[x\[0-9\]+, x\[0-9\]+, lsl 2\\\]" 16 } } */ 50 /* { dg-final { scan-assembler-times "st1w\\tz\[0-9\]+.s, p\[0-9\]+, \\\[x\[0-9\]+, x\[0-9\]+, lsl 2\\\]" 16 } } */ 51 /* { dg-final { scan-assembler-times "ld1h\\tz\[0-9\]+.h, p\[0-9\]+/z, \\\[x\[0-9\]+, x\[0-9\]+, lsl 1\\\]" 16 } } */ 52 /* { dg-final { scan-assembler-times "st1h\\tz\[0-9\]+.h, p\[0-9\]+, \\\[x\[0-9\]+, x\[0-9\]+, lsl 1\\\]" 16 } } */ 53 /* { dg-final { scan-assembler-times "ld1b\\tz\[0-9\]+.b, p\[0-9\]+/z, \\\[x\[0-9\]+, x\[0-9\]+\\\]" 16 } } */ 54 /* { dg-final { scan-assembler-times "st1b\\tz\[0-9\]+.b, p\[0-9\]+, \\\[x\[0-9\]+, x\[0-9\]+\\\]" 16 } } */ 55