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