RISC-V: Force scalable vector on all vsetvl tests
[official-gcc.git] / gcc / testsuite / gcc.target / riscv / rvv / vsetvl / vlmax_bb_prop-1.c
blobd6b6a2b9c103cff2fc08106ddf555e4408243c38
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 if (n == 0) {
9 vint8mf8_t v = *(vint8mf8_t*)(in + 500);
10 *(vint8mf8_t*)(out + 500) = v;
11 } else if (n == 1) {
12 vint8mf8_t v = *(vint8mf8_t*)(in + 600);
13 *(vint8mf8_t*)(out + 600) = v;
14 } else {
15 vint8mf8_t v = *(vint8mf8_t*)(in + 700);
16 *(vint8mf8_t*)(out + 700) = v;
19 for (int i = 0 ; i < n * n; i++)
20 out[i] = out[i] + out[i];
22 for (int i = 0 ; i < n * n * n; i++)
23 out[i] = out[i] * out[i];
25 for (int i = 0 ; i < n * n * n * n; i++)
26 out[i] = out[i] * out[i];
28 for (int i = 0 ; i < n * n * n * n; i++) {
29 vint8mf8_t v = *(vint8mf8_t*)(in + 900 + i);
30 *(vint8mf8_t*)(out + 900 + i) = v;
34 void f2 (int8_t * restrict in, int8_t * restrict out, int n)
36 if (n == 0) {
37 vint8mf4_t v = *(vint8mf4_t*)(in + 500);
38 *(vint8mf4_t*)(out + 500) = v;
39 } else if (n == 1) {
40 vint8mf4_t v = *(vint8mf4_t*)(in + 600);
41 *(vint8mf4_t*)(out + 600) = v;
42 } else {
43 vint8mf4_t v = *(vint8mf4_t*)(in + 700);
44 *(vint8mf4_t*)(out + 700) = v;
47 for (int i = 0 ; i < n * n; i++)
48 out[i] = out[i] + out[i];
50 for (int i = 0 ; i < n * n * n; i++)
51 out[i] = out[i] * out[i];
53 for (int i = 0 ; i < n * n * n * n; i++)
54 out[i] = out[i] * out[i];
56 for (int i = 0 ; i < n * n * n * n; i++) {
57 vint8mf4_t v = *(vint8mf4_t*)(in + 900 + i);
58 *(vint8mf4_t*)(out + 900 + i) = v;
62 void f3 (int8_t * restrict in, int8_t * restrict out, int n)
64 if (n == 0) {
65 vint8mf2_t v = *(vint8mf2_t*)(in + 500);
66 *(vint8mf2_t*)(out + 500) = v;
67 } else if (n == 1) {
68 vint8mf2_t v = *(vint8mf2_t*)(in + 600);
69 *(vint8mf2_t*)(out + 600) = v;
70 } else {
71 vint8mf2_t v = *(vint8mf2_t*)(in + 700);
72 *(vint8mf2_t*)(out + 700) = v;
75 for (int i = 0 ; i < n * n; i++)
76 out[i] = out[i] + out[i];
78 for (int i = 0 ; i < n * n * n; i++)
79 out[i] = out[i] * out[i];
81 for (int i = 0 ; i < n * n * n * n; i++)
82 out[i] = out[i] * out[i];
84 for (int i = 0 ; i < n * n * n * n; i++) {
85 vint8mf2_t v = *(vint8mf2_t*)(in + 900 + i);
86 *(vint8mf2_t*)(out + 900 + i) = v;
90 void f4 (int8_t * restrict in, int8_t * restrict out, int n)
92 if (n == 0) {
93 vint16mf4_t v = *(vint16mf4_t*)(in + 500);
94 *(vint16mf4_t*)(out + 500) = v;
95 } else if (n == 1) {
96 vint16mf4_t v = *(vint16mf4_t*)(in + 600);
97 *(vint16mf4_t*)(out + 600) = v;
98 } else {
99 vint16mf4_t v = *(vint16mf4_t*)(in + 700);
100 *(vint16mf4_t*)(out + 700) = v;
103 for (int i = 0 ; i < n * n; i++)
104 out[i] = out[i] + out[i];
106 for (int i = 0 ; i < n * n * n; i++)
107 out[i] = out[i] * out[i];
109 for (int i = 0 ; i < n * n * n * n; i++)
110 out[i] = out[i] * out[i];
112 for (int i = 0 ; i < n * n * n * n; i++) {
113 vint16mf4_t v = *(vint16mf4_t*)(in + 900 + i);
114 *(vint16mf4_t*)(out + 900 + i) = v;
118 void f5 (int8_t * restrict in, int8_t * restrict out, int n)
120 if (n == 0) {
121 vint16mf2_t v = *(vint16mf2_t*)(in + 500);
122 *(vint16mf2_t*)(out + 500) = v;
123 } else if (n == 1) {
124 vint16mf2_t v = *(vint16mf2_t*)(in + 600);
125 *(vint16mf2_t*)(out + 600) = v;
126 } else {
127 vint16mf2_t v = *(vint16mf2_t*)(in + 700);
128 *(vint16mf2_t*)(out + 700) = v;
131 for (int i = 0 ; i < n * n; i++)
132 out[i] = out[i] + out[i];
134 for (int i = 0 ; i < n * n * n; i++)
135 out[i] = out[i] * out[i];
137 for (int i = 0 ; i < n * n * n * n; i++)
138 out[i] = out[i] * out[i];
140 for (int i = 0 ; i < n * n * n * n; i++) {
141 vint16mf2_t v = *(vint16mf2_t*)(in + 900 + i);
142 *(vint16mf2_t*)(out + 900 + i) = v;
146 void f6 (int8_t * restrict in, int8_t * restrict out, int n)
148 if (n == 0) {
149 vint32mf2_t v = *(vint32mf2_t*)(in + 500);
150 *(vint32mf2_t*)(out + 500) = v;
151 } else if (n == 1) {
152 vint32mf2_t v = *(vint32mf2_t*)(in + 600);
153 *(vint32mf2_t*)(out + 600) = v;
154 } else {
155 vint32mf2_t v = *(vint32mf2_t*)(in + 700);
156 *(vint32mf2_t*)(out + 700) = v;
159 for (int i = 0 ; i < n * n; i++)
160 out[i] = out[i] + out[i];
162 for (int i = 0 ; i < n * n * n; i++)
163 out[i] = out[i] * out[i];
165 for (int i = 0 ; i < n * n * n * n; i++)
166 out[i] = out[i] * out[i];
168 for (int i = 0 ; i < n * n * n * n; i++) {
169 vint32mf2_t v = *(vint32mf2_t*)(in + 900 + i);
170 *(vint32mf2_t*)(out + 900 + i) = v;
174 /* { 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 "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */
175 /* { 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 "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */
176 /* { 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 "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */
177 /* { dg-final { scan-assembler-times {add\ta[0-7],a[0-7],a[0-7]\s+\.L[0-9][0-9]\:\s+vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 3 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */
178 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */
179 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */
180 /* { dg-final { scan-assembler-times {add\ta[0-7],a[0-7],a[0-7]\s+\.L[0-9][0-9]\:\s+vle16\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 2 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */
181 /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 3 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */
182 /* { dg-final { scan-assembler-times {add\ta[0-7],a[0-7],a[0-7]\s+\.L[0-9][0-9]\:\s+vle32\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-O2" } } } } */