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)
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
{
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
;
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
;
353 extern const function_base
*const vfwmaccbf16
;
354 extern const function_base
*const vfwmaccbf16_frm
;
357 } // end namespace riscv_vector