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
)
11 vbool64_t v
= *(vbool64_t
*)(in
+ 500);
12 *(vbool64_t
*)(out
+ 500) = v
;
16 vbool64_t v
= *(vbool64_t
*)(in
+ 500);
17 *(vbool64_t
*)(out
+ 500) = v
;
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
)
45 vbool32_t v
= *(vbool32_t
*)(in
+ 500);
46 *(vbool32_t
*)(out
+ 500) = v
;
50 vbool32_t v
= *(vbool32_t
*)(in
+ 500);
51 *(vbool32_t
*)(out
+ 500) = v
;
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
)
79 vbool16_t v
= *(vbool16_t
*)(in
+ 500);
80 *(vbool16_t
*)(out
+ 500) = v
;
84 vbool16_t v
= *(vbool16_t
*)(in
+ 500);
85 *(vbool16_t
*)(out
+ 500) = v
;
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
)
113 vbool8_t v
= *(vbool8_t
*)(in
+ 500);
114 *(vbool8_t
*)(out
+ 500) = v
;
118 vbool8_t v
= *(vbool8_t
*)(in
+ 500);
119 *(vbool8_t
*)(out
+ 500) = v
;
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
)
147 vbool4_t v
= *(vbool4_t
*)(in
+ 500);
148 *(vbool4_t
*)(out
+ 500) = v
;
152 vbool4_t v
= *(vbool4_t
*)(in
+ 500);
153 *(vbool4_t
*)(out
+ 500) = v
;
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
)
181 vbool2_t v
= *(vbool2_t
*)(in
+ 500);
182 *(vbool2_t
*)(out
+ 500) = v
;
186 vbool2_t v
= *(vbool2_t
*)(in
+ 500);
187 *(vbool2_t
*)(out
+ 500) = v
;
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
)
215 vbool1_t v
= *(vbool1_t
*)(in
+ 500);
216 *(vbool1_t
*)(out
+ 500) = v
;
220 vbool1_t v
= *(vbool1_t
*)(in
+ 500);
221 *(vbool1_t
*)(out
+ 500) = v
;
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" } } } } */