RISC-V: Enable basic VLS modes support
[official-gcc.git] / gcc / testsuite / gcc.target / riscv / rvv / autovec / vls / mov-1.c
blobaedf98819bb1cfd45799ca8a3d68bd7583ef967c
1 /* { dg-do compile } */
2 /* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" } */
3 /* { dg-final { check-function-bodies "**" "" } } */
5 #include "def.h"
7 /*
8 ** mov0:
9 ** lbu\s+[a-x0-9]+,0\s*\([a-x0-9]+\)
10 ** sb\s+[a-x0-9]+,0\s*\([a-x0-9]+\)
11 ** ret
13 void mov0 (int8_t *in, int8_t *out)
15 v1qi v = *(v1qi*)in;
16 *(v1qi*)out = v;
20 ** mov1:
21 ** lhu\s+[a-x0-9]+,0\s*\([a-x0-9]+\)
22 ** sh\s+[a-x0-9]+,0\s*\([a-x0-9]+\)
23 ** ret
25 void mov1 (int8_t *in, int8_t *out)
27 v2qi v = *(v2qi*)in;
28 *(v2qi*)out = v;
32 ** mov2:
33 ** lw\s+[a-x0-9]+,0\s*\([a-x0-9]+\)
34 ** sw\s+[a-x0-9]+,0\s*\([a-x0-9]+\)
35 ** ret
37 void mov2 (int8_t *in, int8_t *out)
39 v4qi v = *(v4qi*)in;
40 *(v4qi*)out = v;
44 ** mov3:
45 ** ld\s+[a-x0-9]+,0\s*\([a-x0-9]+\)
46 ** sd\s+[a-x0-9]+,0\s*\([a-x0-9]+\)
47 ** ret
49 void mov3 (int8_t *in, int8_t *out)
51 v8qi v = *(v8qi*)in;
52 *(v8qi*)out = v;
56 ** mov4:
57 ** vsetivli\s+zero,\s*16,\s*e8,\s*mf8,\s*t[au],\s*m[au]
58 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
59 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
60 ** ret
62 void mov4 (int8_t *in, int8_t *out)
64 v16qi v = *(v16qi*)in;
65 *(v16qi*)out = v;
69 ** mov5:
70 ** li\s+[a-x0-9]+,32
71 ** vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*mf8,\s*t[au],\s*m[au]
72 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
73 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
74 ** ret
76 void mov5 (int8_t *in, int8_t *out)
78 v32qi v = *(v32qi*)in;
79 *(v32qi*)out = v;
83 ** mov6:
84 ** li\s+[a-x0-9]+,64
85 ** vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*mf8,\s*t[au],\s*m[au]
86 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
87 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
88 ** ret
90 void mov6 (int8_t *in, int8_t *out)
92 v64qi v = *(v64qi*)in;
93 *(v64qi*)out = v;
97 ** mov7:
98 ** li\s+[a-x0-9]+,128
99 ** vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*mf4,\s*t[au],\s*m[au]
100 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
101 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
102 ** ret
104 void mov7 (int8_t *in, int8_t *out)
106 v128qi v = *(v128qi*)in;
107 *(v128qi*)out = v;
111 ** mov8:
112 ** li\s+[a-x0-9]+,256
113 ** vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*mf2,\s*t[au],\s*m[au]
114 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
115 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
116 ** ret
118 void mov8 (int8_t *in, int8_t *out)
120 v256qi v = *(v256qi*)in;
121 *(v256qi*)out = v;
125 ** mov9:
126 ** li\s+[a-x0-9]+,512
127 ** vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*m1,\s*t[au],\s*m[au]
128 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
129 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
130 ** ret
132 void mov9 (int8_t *in, int8_t *out)
134 v512qi v = *(v512qi*)in;
135 *(v512qi*)out = v;
139 ** mov10:
140 ** li\s+[a-x0-9]+,1024
141 ** vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*m2,\s*t[au],\s*m[au]
142 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
143 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
144 ** ret
146 void mov10 (int8_t *in, int8_t *out)
148 v1024qi v = *(v1024qi*)in;
149 *(v1024qi*)out = v;
153 ** mov11:
154 ** li\s+[a-x0-9]+,4096
155 ** addi\s+[a-x0-9]+,[a-x0-9]+,-2048
156 ** vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*m4,\s*t[au],\s*m[au]
157 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
158 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
159 ** ret
161 void mov11 (int8_t *in, int8_t *out)
163 v2048qi v = *(v2048qi*)in;
164 *(v2048qi*)out = v;
168 ** mov12:
169 ** li\s+[a-x0-9]+,4096
170 ** vsetvli\s+zero,\s*[a-x0-9]+,\s*e8,\s*m8,\s*t[au],\s*m[au]
171 ** vle8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
172 ** vse8\.v\s+(?:v[0-9]|v[1-2][0-9]|v3[0-1]),0\s*\([a-x0-9]+\)
173 ** ret
175 void mov12 (int8_t *in, int8_t *out)
177 v4096qi v = *(v4096qi*)in;
178 *(v4096qi*)out = v;