[PR testsuite/116860] Testsuite adjustment for recently added tests
[official-gcc.git] / gcc / config / riscv / riscv-vector-builtins-bases.h
blob4a2f6b4bdf7ef81d230d2196b8120cc962782d2d
1 /* function_base declaration for RISC-V 'V' Extension for GNU compiler.
2 Copyright (C) 2022-2025 Free Software Foundation, Inc.
3 Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
5 This file is part of GCC.
7 GCC is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
10 any later version.
12 GCC is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GCC; see the file COPYING3. If not see
19 <http://www.gnu.org/licenses/>. */
21 #ifndef GCC_RISCV_VECTOR_BUILTINS_BASES_H
22 #define GCC_RISCV_VECTOR_BUILTINS_BASES_H
24 namespace riscv_vector {
26 enum frm_op_type
28 NO_FRM,
29 HAS_FRM,
32 namespace bases {
33 extern const function_base *const vsetvl;
34 extern const function_base *const vsetvlmax;
35 extern const function_base *const vle;
36 extern const function_base *const vse;
37 extern const function_base *const vlm;
38 extern const function_base *const vsm;
39 extern const function_base *const vlse;
40 extern const function_base *const vsse;
41 extern const function_base *const vluxei8;
42 extern const function_base *const vluxei16;
43 extern const function_base *const vluxei32;
44 extern const function_base *const vluxei64;
45 extern const function_base *const vloxei8;
46 extern const function_base *const vloxei16;
47 extern const function_base *const vloxei32;
48 extern const function_base *const vloxei64;
49 extern const function_base *const vsuxei8;
50 extern const function_base *const vsuxei16;
51 extern const function_base *const vsuxei32;
52 extern const function_base *const vsuxei64;
53 extern const function_base *const vsoxei8;
54 extern const function_base *const vsoxei16;
55 extern const function_base *const vsoxei32;
56 extern const function_base *const vsoxei64;
57 extern const function_base *const vadd;
58 extern const function_base *const vsub;
59 extern const function_base *const vrsub;
60 extern const function_base *const vand;
61 extern const function_base *const vor;
62 extern const function_base *const vxor;
63 extern const function_base *const vsll;
64 extern const function_base *const vsra;
65 extern const function_base *const vsrl;
66 extern const function_base *const vmin;
67 extern const function_base *const vmax;
68 extern const function_base *const vminu;
69 extern const function_base *const vmaxu;
70 extern const function_base *const vmul;
71 extern const function_base *const vmulh;
72 extern const function_base *const vmulhu;
73 extern const function_base *const vmulhsu;
74 extern const function_base *const vdiv;
75 extern const function_base *const vrem;
76 extern const function_base *const vdivu;
77 extern const function_base *const vremu;
78 extern const function_base *const vneg;
79 extern const function_base *const vnot;
80 extern const function_base *const vsext;
81 extern const function_base *const vzext;
82 extern const function_base *const vwadd;
83 extern const function_base *const vwsub;
84 extern const function_base *const vwmul;
85 extern const function_base *const vwaddu;
86 extern const function_base *const vwsubu;
87 extern const function_base *const vwmulu;
88 extern const function_base *const vwmulsu;
89 extern const function_base *const vwcvt_x;
90 extern const function_base *const vwcvtu_x;
91 extern const function_base *const vadc;
92 extern const function_base *const vsbc;
93 extern const function_base *const vmadc;
94 extern const function_base *const vmsbc;
95 extern const function_base *const vnsrl;
96 extern const function_base *const vnsra;
97 extern const function_base *const vncvt_x;
98 extern const function_base *const vmerge;
99 extern const function_base *const vmv_v;
100 extern const function_base *const vmseq;
101 extern const function_base *const vmsne;
102 extern const function_base *const vmslt;
103 extern const function_base *const vmsgt;
104 extern const function_base *const vmsle;
105 extern const function_base *const vmsge;
106 extern const function_base *const vmsltu;
107 extern const function_base *const vmsgtu;
108 extern const function_base *const vmsleu;
109 extern const function_base *const vmsgeu;
110 extern const function_base *const vmacc;
111 extern const function_base *const vnmsac;
112 extern const function_base *const vmadd;
113 extern const function_base *const vnmsub;
114 extern const function_base *const vwmacc;
115 extern const function_base *const vwmaccu;
116 extern const function_base *const vwmaccsu;
117 extern const function_base *const vwmaccus;
118 extern const function_base *const vsadd;
119 extern const function_base *const vssub;
120 extern const function_base *const vsaddu;
121 extern const function_base *const vssubu;
122 extern const function_base *const vaadd;
123 extern const function_base *const vasub;
124 extern const function_base *const vaaddu;
125 extern const function_base *const vasubu;
126 extern const function_base *const vsmul;
127 extern const function_base *const vssra;
128 extern const function_base *const vssrl;
129 extern const function_base *const vnclip;
130 extern const function_base *const vnclipu;
131 extern const function_base *const vmand;
132 extern const function_base *const vmnand;
133 extern const function_base *const vmandn;
134 extern const function_base *const vmxor;
135 extern const function_base *const vmor;
136 extern const function_base *const vmnor;
137 extern const function_base *const vmorn;
138 extern const function_base *const vmxnor;
139 extern const function_base *const vmmv;
140 extern const function_base *const vmclr;
141 extern const function_base *const vmset;
142 extern const function_base *const vmnot;
143 extern const function_base *const vcpop;
144 extern const function_base *const vfirst;
145 extern const function_base *const vmsbf;
146 extern const function_base *const vmsif;
147 extern const function_base *const vmsof;
148 extern const function_base *const viota;
149 extern const function_base *const vid;
150 extern const function_base *const vfadd;
151 extern const function_base *const vfadd_frm;
152 extern const function_base *const vfsub;
153 extern const function_base *const vfsub_frm;
154 extern const function_base *const vfrsub;
155 extern const function_base *const vfrsub_frm;
156 extern const function_base *const vfwadd;
157 extern const function_base *const vfwadd_frm;
158 extern const function_base *const vfwsub;
159 extern const function_base *const vfwsub_frm;
160 extern const function_base *const vfmul;
161 extern const function_base *const vfmul_frm;
162 extern const function_base *const vfdiv;
163 extern const function_base *const vfdiv_frm;
164 extern const function_base *const vfrdiv;
165 extern const function_base *const vfrdiv_frm;
166 extern const function_base *const vfwmul;
167 extern const function_base *const vfwmul_frm;
168 extern const function_base *const vfmacc;
169 extern const function_base *const vfmacc_frm;
170 extern const function_base *const vfnmsac;
171 extern const function_base *const vfnmsac_frm;
172 extern const function_base *const vfmadd;
173 extern const function_base *const vfmadd_frm;
174 extern const function_base *const vfnmsub;
175 extern const function_base *const vfnmsub_frm;
176 extern const function_base *const vfnmacc;
177 extern const function_base *const vfnmacc_frm;
178 extern const function_base *const vfmsac;
179 extern const function_base *const vfmsac_frm;
180 extern const function_base *const vfnmadd;
181 extern const function_base *const vfnmadd_frm;
182 extern const function_base *const vfmsub;
183 extern const function_base *const vfmsub_frm;
184 extern const function_base *const vfwmacc;
185 extern const function_base *const vfwmacc_frm;
186 extern const function_base *const vfwnmacc;
187 extern const function_base *const vfwnmacc_frm;
188 extern const function_base *const vfwmsac;
189 extern const function_base *const vfwmsac_frm;
190 extern const function_base *const vfwnmsac;
191 extern const function_base *const vfwnmsac_frm;
192 extern const function_base *const vfsqrt;
193 extern const function_base *const vfsqrt_frm;
194 extern const function_base *const vfrsqrt7;
195 extern const function_base *const vfrec7;
196 extern const function_base *const vfrec7_frm;
197 extern const function_base *const vfmin;
198 extern const function_base *const vfmax;
199 extern const function_base *const vfsgnj;
200 extern const function_base *const vfsgnjn;
201 extern const function_base *const vfsgnjx;
202 extern const function_base *const vfneg;
203 extern const function_base *const vfabs;
204 extern const function_base *const vmfeq;
205 extern const function_base *const vmfne;
206 extern const function_base *const vmflt;
207 extern const function_base *const vmfgt;
208 extern const function_base *const vmfle;
209 extern const function_base *const vmfge;
210 extern const function_base *const vfclass;
211 extern const function_base *const vfmerge;
212 extern const function_base *const vfmv_v;
213 extern const function_base *const vfcvt_x;
214 extern const function_base *const vfcvt_x_frm;
215 extern const function_base *const vfcvt_xu;
216 extern const function_base *const vfcvt_xu_frm;
217 extern const function_base *const vfcvt_rtz_x;
218 extern const function_base *const vfcvt_rtz_xu;
219 extern const function_base *const vfcvt_f;
220 extern const function_base *const vfcvt_f_frm;
221 extern const function_base *const vfwcvt_x;
222 extern const function_base *const vfwcvt_x_frm;
223 extern const function_base *const vfwcvt_xu;
224 extern const function_base *const vfwcvt_xu_frm;
225 extern const function_base *const vfwcvt_rtz_x;
226 extern const function_base *const vfwcvt_rtz_xu;
227 extern const function_base *const vfwcvt_f;
228 extern const function_base *const vfncvt_x;
229 extern const function_base *const vfncvt_x_frm;
230 extern const function_base *const vfncvt_xu;
231 extern const function_base *const vfncvt_xu_frm;
232 extern const function_base *const vfncvt_rtz_x;
233 extern const function_base *const vfncvt_rtz_xu;
234 extern const function_base *const vfncvt_f;
235 extern const function_base *const vfncvt_f_frm;
236 extern const function_base *const vfncvt_rod_f;
237 extern const function_base *const vredsum;
238 extern const function_base *const vredmaxu;
239 extern const function_base *const vredmax;
240 extern const function_base *const vredminu;
241 extern const function_base *const vredmin;
242 extern const function_base *const vredand;
243 extern const function_base *const vredor;
244 extern const function_base *const vredxor;
245 extern const function_base *const vwredsum;
246 extern const function_base *const vwredsumu;
247 extern const function_base *const vfredusum;
248 extern const function_base *const vfredusum_frm;
249 extern const function_base *const vfredosum;
250 extern const function_base *const vfredosum_frm;
251 extern const function_base *const vfredmax;
252 extern const function_base *const vfredmin;
253 extern const function_base *const vfwredosum;
254 extern const function_base *const vfwredosum_frm;
255 extern const function_base *const vfwredusum;
256 extern const function_base *const vfwredusum_frm;
257 extern const function_base *const vmv_x;
258 extern const function_base *const vmv_s;
259 extern const function_base *const vfmv_f;
260 extern const function_base *const vfmv_s;
261 extern const function_base *const vslideup;
262 extern const function_base *const vslidedown;
263 extern const function_base *const vslide1up;
264 extern const function_base *const vslide1down;
265 extern const function_base *const vfslide1up;
266 extern const function_base *const vfslide1down;
267 extern const function_base *const vrgather;
268 extern const function_base *const vrgatherei16;
269 extern const function_base *const vcompress;
270 extern const function_base *const vundefined;
271 extern const function_base *const vreinterpret;
272 extern const function_base *const vlmul_ext;
273 extern const function_base *const vlmul_trunc;
274 extern const function_base *const vset;
275 extern const function_base *const vget;
276 extern const function_base *const vcreate;
277 extern const function_base *const read_vl;
278 extern const function_base *const vleff;
279 extern const function_base *const vlenb;
280 extern const function_base *const vlseg;
281 extern const function_base *const vsseg;
282 extern const function_base *const vlsseg;
283 extern const function_base *const vssseg;
284 extern const function_base *const vluxseg;
285 extern const function_base *const vloxseg;
286 extern const function_base *const vsuxseg;
287 extern const function_base *const vsoxseg;
288 extern const function_base *const vlsegff;
289 extern const function_base *const vlb;
290 extern const function_base *const vlh;
291 extern const function_base *const vlw;
292 extern const function_base *const vlbu;
293 extern const function_base *const vlhu;
294 extern const function_base *const vlwu;
295 extern const function_base *const vsb;
296 extern const function_base *const vsh;
297 extern const function_base *const vsw;
298 extern const function_base *const vlsb;
299 extern const function_base *const vlsh;
300 extern const function_base *const vlsw;
301 extern const function_base *const vlsbu;
302 extern const function_base *const vlshu;
303 extern const function_base *const vlswu;
304 extern const function_base *const vssb;
305 extern const function_base *const vssh;
306 extern const function_base *const vssw;
307 extern const function_base *const vlxb;
308 extern const function_base *const vlxh;
309 extern const function_base *const vlxw;
310 extern const function_base *const vlxbu;
311 extern const function_base *const vlxhu;
312 extern const function_base *const vlxwu;
313 extern const function_base *const vsxb;
314 extern const function_base *const vsxh;
315 extern const function_base *const vsxw;
316 extern const function_base *const vsuxb;
317 extern const function_base *const vsuxh;
318 extern const function_base *const vsuxw;
319 extern const function_base *const vext_x_v;
320 /* Below function_base are Vectro Crypto*/
321 extern const function_base *const vandn;
322 extern const function_base *const vbrev;
323 extern const function_base *const vbrev8;
324 extern const function_base *const vrev8;
325 extern const function_base *const vclz;
326 extern const function_base *const vctz;
327 extern const function_base *const vrol;
328 extern const function_base *const vror;
329 extern const function_base *const vwsll;
330 extern const function_base *const vclmul;
331 extern const function_base *const vclmulh;
332 extern const function_base *const vghsh;
333 extern const function_base *const vgmul;
334 extern const function_base *const vaesef;
335 extern const function_base *const vaesem;
336 extern const function_base *const vaesdf;
337 extern const function_base *const vaesdm;
338 extern const function_base *const vaesz;
339 extern const function_base *const vaeskf1;
340 extern const function_base *const vaeskf2;
341 extern const function_base *const vsha2ms;
342 extern const function_base *const vsha2ch;
343 extern const function_base *const vsha2cl;
344 extern const function_base *const vsm4k;
345 extern const function_base *const vsm4r;
346 extern const function_base *const vsm3me;
347 extern const function_base *const vsm3c;
348 /* Zvfbfmin*/
349 extern const function_base *const vfncvtbf16_f;
350 extern const function_base *const vfncvtbf16_f_frm;
351 extern const function_base *const vfwcvtbf16_f;
352 /* Zvfbfwma */
353 extern const function_base *const vfwmaccbf16;
354 extern const function_base *const vfwmaccbf16_frm;
357 } // end namespace riscv_vector
359 #endif