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
)
9 vint8mf8_t v
= *(vint8mf8_t
*)(in
+ 500);
10 *(vint8mf8_t
*)(out
+ 500) = v
;
12 vint8mf8_t v
= *(vint8mf8_t
*)(in
+ 600);
13 *(vint8mf8_t
*)(out
+ 600) = v
;
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
)
37 vint8mf4_t v
= *(vint8mf4_t
*)(in
+ 500);
38 *(vint8mf4_t
*)(out
+ 500) = v
;
40 vint8mf4_t v
= *(vint8mf4_t
*)(in
+ 600);
41 *(vint8mf4_t
*)(out
+ 600) = v
;
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
)
65 vint8mf2_t v
= *(vint8mf2_t
*)(in
+ 500);
66 *(vint8mf2_t
*)(out
+ 500) = v
;
68 vint8mf2_t v
= *(vint8mf2_t
*)(in
+ 600);
69 *(vint8mf2_t
*)(out
+ 600) = v
;
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
)
93 vint16mf4_t v
= *(vint16mf4_t
*)(in
+ 500);
94 *(vint16mf4_t
*)(out
+ 500) = v
;
96 vint16mf4_t v
= *(vint16mf4_t
*)(in
+ 600);
97 *(vint16mf4_t
*)(out
+ 600) = v
;
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
)
121 vint16mf2_t v
= *(vint16mf2_t
*)(in
+ 500);
122 *(vint16mf2_t
*)(out
+ 500) = v
;
124 vint16mf2_t v
= *(vint16mf2_t
*)(in
+ 600);
125 *(vint16mf2_t
*)(out
+ 600) = v
;
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
)
149 vint32mf2_t v
= *(vint32mf2_t
*)(in
+ 500);
150 *(vint32mf2_t
*)(out
+ 500) = v
;
152 vint32mf2_t v
= *(vint32mf2_t
*)(in
+ 600);
153 *(vint32mf2_t
*)(out
+ 600) = v
;
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" } } } } */