RISC-V: Force scalable vector on all vsetvl tests
[official-gcc.git] / gcc / testsuite / gcc.target / riscv / rvv / vsetvl / vlmax_bb_prop-16.c
blob12bb03d8e5eb1f98c1e5305bf2278c5dee4155a6
1 /* { dg-do compile } */
2 /* { dg-options "--param=riscv-autovec-preference=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize" } */
4 #include "riscv_vector.h"
6 void f (int8_t * restrict in, int8_t * restrict out, int n)
8 switch (n)
10 case 0:{
11 vbool64_t v = *(vbool64_t*)(in + 500);
12 *(vbool64_t*)(out + 500) = v;
13 break;
15 case 1:{
16 vbool64_t v = *(vbool64_t*)(in + 500);
17 *(vbool64_t*)(out + 500) = v;
18 break;
20 default:{
21 break;
25 for (int i = 0 ; i < n * n; i++)
26 out[i] = out[i] + out[i];
28 for (int i = 0 ; i < n * n * n; i++)
29 out[i] = out[i] * out[i];
31 for (int i = 0 ; i < n * n * n * n; i++)
32 out[i] = out[i] * out[i];
34 for (int i = 0 ; i < n * n * n * n; i++) {
35 vbool64_t v = *(vbool64_t*)(in + 900 + i);
36 *(vbool64_t*)(out + 900 + i) = v;
40 void f2 (int8_t * restrict in, int8_t * restrict out, int n)
42 switch (n)
44 case 0:{
45 vbool32_t v = *(vbool32_t*)(in + 500);
46 *(vbool32_t*)(out + 500) = v;
47 break;
49 case 1:{
50 vbool32_t v = *(vbool32_t*)(in + 500);
51 *(vbool32_t*)(out + 500) = v;
52 break;
54 default:{
55 break;
59 for (int i = 0 ; i < n * n; i++)
60 out[i] = out[i] + out[i];
62 for (int i = 0 ; i < n * n * n; i++)
63 out[i] = out[i] * out[i];
65 for (int i = 0 ; i < n * n * n * n; i++)
66 out[i] = out[i] * out[i];
68 for (int i = 0 ; i < n * n * n * n; i++) {
69 vbool32_t v = *(vbool32_t*)(in + 900 + i);
70 *(vbool32_t*)(out + 900 + i) = v;
74 void f3 (int8_t * restrict in, int8_t * restrict out, int n)
76 switch (n)
78 case 0:{
79 vbool16_t v = *(vbool16_t*)(in + 500);
80 *(vbool16_t*)(out + 500) = v;
81 break;
83 case 1:{
84 vbool16_t v = *(vbool16_t*)(in + 500);
85 *(vbool16_t*)(out + 500) = v;
86 break;
88 default:{
89 break;
93 for (int i = 0 ; i < n * n; i++)
94 out[i] = out[i] + out[i];
96 for (int i = 0 ; i < n * n * n; i++)
97 out[i] = out[i] * out[i];
99 for (int i = 0 ; i < n * n * n * n; i++)
100 out[i] = out[i] * out[i];
102 for (int i = 0 ; i < n * n * n * n; i++) {
103 vbool16_t v = *(vbool16_t*)(in + 900 + i);
104 *(vbool16_t*)(out + 900 + i) = v;
108 void f4 (int8_t * restrict in, int8_t * restrict out, int n)
110 switch (n)
112 case 0:{
113 vbool8_t v = *(vbool8_t*)(in + 500);
114 *(vbool8_t*)(out + 500) = v;
115 break;
117 case 1:{
118 vbool8_t v = *(vbool8_t*)(in + 500);
119 *(vbool8_t*)(out + 500) = v;
120 break;
122 default:{
123 break;
127 for (int i = 0 ; i < n * n; i++)
128 out[i] = out[i] + out[i];
130 for (int i = 0 ; i < n * n * n; i++)
131 out[i] = out[i] * out[i];
133 for (int i = 0 ; i < n * n * n * n; i++)
134 out[i] = out[i] * out[i];
136 for (int i = 0 ; i < n * n * n * n; i++) {
137 vbool8_t v = *(vbool8_t*)(in + 900 + i);
138 *(vbool8_t*)(out + 900 + i) = v;
142 void f5 (int8_t * restrict in, int8_t * restrict out, int n)
144 switch (n)
146 case 0:{
147 vbool4_t v = *(vbool4_t*)(in + 500);
148 *(vbool4_t*)(out + 500) = v;
149 break;
151 case 1:{
152 vbool4_t v = *(vbool4_t*)(in + 500);
153 *(vbool4_t*)(out + 500) = v;
154 break;
156 default:{
157 break;
161 for (int i = 0 ; i < n * n; i++)
162 out[i] = out[i] + out[i];
164 for (int i = 0 ; i < n * n * n; i++)
165 out[i] = out[i] * out[i];
167 for (int i = 0 ; i < n * n * n * n; i++)
168 out[i] = out[i] * out[i];
170 for (int i = 0 ; i < n * n * n * n; i++) {
171 vbool4_t v = *(vbool4_t*)(in + 900 + i);
172 *(vbool4_t*)(out + 900 + i) = v;
176 void f6 (int8_t * restrict in, int8_t * restrict out, int n)
178 switch (n)
180 case 0:{
181 vbool2_t v = *(vbool2_t*)(in + 500);
182 *(vbool2_t*)(out + 500) = v;
183 break;
185 case 1:{
186 vbool2_t v = *(vbool2_t*)(in + 500);
187 *(vbool2_t*)(out + 500) = v;
188 break;
190 default:{
191 break;
195 for (int i = 0 ; i < n * n; i++)
196 out[i] = out[i] + out[i];
198 for (int i = 0 ; i < n * n * n; i++)
199 out[i] = out[i] * out[i];
201 for (int i = 0 ; i < n * n * n * n; i++)
202 out[i] = out[i] * out[i];
204 for (int i = 0 ; i < n * n * n * n; i++) {
205 vbool2_t v = *(vbool2_t*)(in + 900 + i);
206 *(vbool2_t*)(out + 900 + i) = v;
210 void f7 (int8_t * restrict in, int8_t * restrict out, int n)
212 switch (n)
214 case 0:{
215 vbool1_t v = *(vbool1_t*)(in + 500);
216 *(vbool1_t*)(out + 500) = v;
217 break;
219 case 1:{
220 vbool1_t v = *(vbool1_t*)(in + 500);
221 *(vbool1_t*)(out + 500) = v;
222 break;
224 default:{
225 break;
229 for (int i = 0 ; i < n * n; i++)
230 out[i] = out[i] + out[i];
232 for (int i = 0 ; i < n * n * n; i++)
233 out[i] = out[i] * out[i];
235 for (int i = 0 ; i < n * n * n * n; i++)
236 out[i] = out[i] * out[i];
238 for (int i = 0 ; i < n * n * n * n; i++) {
239 vbool1_t v = *(vbool1_t*)(in + 900 + i);
240 *(vbool1_t*)(out + 900 + i) = v;
244 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O1" } } } } */
245 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O1" } } } } */
246 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O1" } } } } */
247 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m1,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O1" } } } } */
248 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O1" } } } } */
249 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O1" } } } } */
250 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O1" } } } } */