1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3 
4 #include <arm_sve.h>
5 
6 void
b8_b16_1(int * any,svbool_t * ptr)7 b8_b16_1 (int *any, svbool_t *ptr)
8 {
9   svbool_t res = svptrue_pat_b8 (SV_VL64);
10   *any = svptest_any (svptrue_b16 (), res);
11   *ptr = res;
12 }
13 
14 int
b8_b16_2()15 b8_b16_2 ()
16 {
17   svbool_t res = svptrue_pat_b8 (SV_VL64);
18   return svptest_any (svptrue_b16 (), res);
19 }
20 
21 void
b8_b32_1(int * any,svbool_t * ptr)22 b8_b32_1 (int *any, svbool_t *ptr)
23 {
24   svbool_t res = svptrue_pat_b8 (SV_VL32);
25   *any = svptest_any (svptrue_b32 (), res);
26   *ptr = res;
27 }
28 
29 int
b8_b32_2()30 b8_b32_2 ()
31 {
32   svbool_t res = svptrue_pat_b8 (SV_VL32);
33   return svptest_any (svptrue_b32 (), res);
34 }
35 
36 void
b8_b64_1(int * any,svbool_t * ptr)37 b8_b64_1 (int *any, svbool_t *ptr)
38 {
39   svbool_t res = svptrue_pat_b8 (SV_VL128);
40   *any = svptest_any (svptrue_b64 (), res);
41   *ptr = res;
42 }
43 
44 int
b8_b64_2()45 b8_b64_2 ()
46 {
47   svbool_t res = svptrue_pat_b8 (SV_VL128);
48   return svptest_any (svptrue_b64 (), res);
49 }
50 
51 void
b16_b8_1(int * any,svbool_t * ptr)52 b16_b8_1 (int *any, svbool_t *ptr)
53 {
54   svbool_t res = svptrue_pat_b16 (SV_VL32);
55   *any = svptest_any (svptrue_b8 (), res);
56   *ptr = res;
57 }
58 
59 int
b16_b8_2()60 b16_b8_2 ()
61 {
62   svbool_t res = svptrue_pat_b16 (SV_VL32);
63   return svptest_any (svptrue_b8 (), res);
64 }
65 
66 void
b16_b32_1(int * any,svbool_t * ptr)67 b16_b32_1 (int *any, svbool_t *ptr)
68 {
69   svbool_t res = svptrue_pat_b16 (SV_VL16);
70   *any = svptest_any (svptrue_b32 (), res);
71   *ptr = res;
72 }
73 
74 int
b16_b32_2()75 b16_b32_2 ()
76 {
77   svbool_t res = svptrue_pat_b16 (SV_VL16);
78   return svptest_any (svptrue_b32 (), res);
79 }
80 
81 void
b16_b64_1(int * any,svbool_t * ptr)82 b16_b64_1 (int *any, svbool_t *ptr)
83 {
84   svbool_t res = svptrue_pat_b16 (SV_VL64);
85   *any = svptest_any (svptrue_b64 (), res);
86   *ptr = res;
87 }
88 
89 int
b16_b64_2()90 b16_b64_2 ()
91 {
92   svbool_t res = svptrue_pat_b16 (SV_VL64);
93   return svptest_any (svptrue_b64 (), res);
94 }
95 
96 void
b32_b8_1(int * any,svbool_t * ptr)97 b32_b8_1 (int *any, svbool_t *ptr)
98 {
99   svbool_t res = svptrue_pat_b32 (SV_VL16);
100   *any = svptest_any (svptrue_b8 (), res);
101   *ptr = res;
102 }
103 
104 int
b32_b8_2()105 b32_b8_2 ()
106 {
107   svbool_t res = svptrue_pat_b32 (SV_VL16);
108   return svptest_any (svptrue_b8 (), res);
109 }
110 
111 void
b32_b16_1(int * any,svbool_t * ptr)112 b32_b16_1 (int *any, svbool_t *ptr)
113 {
114   svbool_t res = svptrue_pat_b32 (SV_VL6);
115   *any = svptest_any (svptrue_b16 (), res);
116   *ptr = res;
117 }
118 
119 int
b32_b16_2()120 b32_b16_2 ()
121 {
122   svbool_t res = svptrue_pat_b32 (SV_VL6);
123   return svptest_any (svptrue_b16 (), res);
124 }
125 
126 void
b32_b64_1(int * any,svbool_t * ptr)127 b32_b64_1 (int *any, svbool_t *ptr)
128 {
129   svbool_t res = svptrue_pat_b32 (SV_VL32);
130   *any = svptest_any (svptrue_b64 (), res);
131   *ptr = res;
132 }
133 
134 int
b32_b64_2()135 b32_b64_2 ()
136 {
137   svbool_t res = svptrue_pat_b32 (SV_VL32);
138   return svptest_any (svptrue_b64 (), res);
139 }
140 
141 void
b64_b8_1(int * any,svbool_t * ptr)142 b64_b8_1 (int *any, svbool_t *ptr)
143 {
144   svbool_t res = svptrue_pat_b64 (SV_VL7);
145   *any = svptest_any (svptrue_b8 (), res);
146   *ptr = res;
147 }
148 
149 int
b64_b8_2()150 b64_b8_2 ()
151 {
152   svbool_t res = svptrue_pat_b64 (SV_VL7);
153   return svptest_any (svptrue_b8 (), res);
154 }
155 
156 void
b64_b16_1(int * any,svbool_t * ptr)157 b64_b16_1 (int *any, svbool_t *ptr)
158 {
159   svbool_t res = svptrue_pat_b64 (SV_VL16);
160   *any = svptest_any (svptrue_b16 (), res);
161   *ptr = res;
162 }
163 
164 int
b64_b16_2()165 b64_b16_2 ()
166 {
167   svbool_t res = svptrue_pat_b64 (SV_VL16);
168   return svptest_any (svptrue_b16 (), res);
169 }
170 
171 void
b64_b32_1(int * any,svbool_t * ptr)172 b64_b32_1 (int *any, svbool_t *ptr)
173 {
174   svbool_t res = svptrue_pat_b64 (SV_VL32);
175   *any = svptest_any (svptrue_b32 (), res);
176   *ptr = res;
177 }
178 
179 int
b64_b32_2()180 b64_b32_2 ()
181 {
182   svbool_t res = svptrue_pat_b64 (SV_VL32);
183   return svptest_any (svptrue_b32 (), res);
184 }
185 
186 /* { dg-final { scan-assembler-not {\tptrues\n} } } */
187 /* { dg-final { scan-assembler-times {\tptrue\t} 48 } } */
188 /* { dg-final { scan-assembler-times {\tptest\t} 24 } } */
189