1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3
4 #include <arm_sve.h>
5
6 void
test1(svbool_t pg,svint16_t x,svint16_t y,int * any,svbool_t * ptr)7 test1 (svbool_t pg, svint16_t x, svint16_t y, int *any, svbool_t *ptr)
8 {
9 svbool_t res = svmatch (pg, x, y);
10 *any = svptest_any (pg, res);
11 *ptr = res;
12 }
13
14 int
test2(svbool_t pg,svint16_t x,svint16_t y,int * any)15 test2 (svbool_t pg, svint16_t x, svint16_t y, int *any)
16 {
17 svbool_t res = svmatch (pg, x, y);
18 return svptest_any (pg, res);
19 }
20
21 /* These four are always false, but we don't realize that yet. */
22
23 void
test3(svbool_t pg,svint16_t x,svint16_t y,int * any,svbool_t * ptr)24 test3 (svbool_t pg, svint16_t x, svint16_t y, int *any, svbool_t *ptr)
25 {
26 svbool_t res = svmatch (svptrue_b8 (), x, y);
27 *any = svptest_last (svptrue_b8 (), res);
28 *ptr = res;
29 }
30
31 int
test4(svbool_t pg,svint16_t x,svint16_t y,int * any)32 test4 (svbool_t pg, svint16_t x, svint16_t y, int *any)
33 {
34 svbool_t res = svmatch (svptrue_b8 (), x, y);
35 return svptest_last (svptrue_b8 (), res);
36 }
37
38 void
test5(svbool_t pg,svint16_t x,svint16_t y,int * any,svbool_t * ptr)39 test5 (svbool_t pg, svint16_t x, svint16_t y, int *any, svbool_t *ptr)
40 {
41 svbool_t res = svmatch (svptrue_b16 (), x, y);
42 *any = svptest_last (svptrue_b8 (), res);
43 *ptr = res;
44 }
45
46 int
test6(svbool_t pg,svint16_t x,svint16_t y,int * any)47 test6 (svbool_t pg, svint16_t x, svint16_t y, int *any)
48 {
49 svbool_t res = svmatch (svptrue_b16 (), x, y);
50 return svptest_last (svptrue_b8 (), res);
51 }
52
53 /* { dg-final { scan-assembler-times {\tmatch\t} 6 } } */
54 /* { dg-final { scan-assembler-times {\tptest\t} 6 } } */
55