]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/riscv/riscv-vector-builtins-bases.h
RISC-V: Add floating-point RVV C/C++ api
[thirdparty/gcc.git] / gcc / config / riscv / riscv-vector-builtins-bases.h
CommitLineData
f56d48b2 1/* function_base declaration for RISC-V 'V' Extension for GNU compiler.
83ffe9cd 2 Copyright (C) 2022-2023 Free Software Foundation, Inc.
f56d48b2
JZZ
3 Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
4
5 This file is part of GCC.
6
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.
11
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.
16
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/>. */
20
21#ifndef GCC_RISCV_VECTOR_BUILTINS_BASES_H
22#define GCC_RISCV_VECTOR_BUILTINS_BASES_H
23
24namespace riscv_vector {
25
26namespace bases {
27extern const function_base *const vsetvl;
28extern const function_base *const vsetvlmax;
a143c3f7
JZZ
29extern const function_base *const vle;
30extern const function_base *const vse;
ab39fa8c
JZZ
31extern const function_base *const vlm;
32extern const function_base *const vsm;
eb1c2960
JZZ
33extern const function_base *const vlse;
34extern const function_base *const vsse;
6c9bcb6c
JZZ
35extern const function_base *const vluxei8;
36extern const function_base *const vluxei16;
37extern const function_base *const vluxei32;
38extern const function_base *const vluxei64;
39extern const function_base *const vloxei8;
40extern const function_base *const vloxei16;
41extern const function_base *const vloxei32;
42extern const function_base *const vloxei64;
43extern const function_base *const vsuxei8;
44extern const function_base *const vsuxei16;
45extern const function_base *const vsuxei32;
46extern const function_base *const vsuxei64;
47extern const function_base *const vsoxei8;
48extern const function_base *const vsoxei16;
49extern const function_base *const vsoxei32;
50extern const function_base *const vsoxei64;
2a937fb5
JZZ
51extern const function_base *const vadd;
52extern const function_base *const vsub;
a035d133 53extern const function_base *const vrsub;
2a937fb5
JZZ
54extern const function_base *const vand;
55extern const function_base *const vor;
56extern const function_base *const vxor;
57extern const function_base *const vsll;
58extern const function_base *const vsra;
59extern const function_base *const vsrl;
60extern const function_base *const vmin;
61extern const function_base *const vmax;
62extern const function_base *const vminu;
63extern const function_base *const vmaxu;
64extern const function_base *const vmul;
8340bbad
JZZ
65extern const function_base *const vmulh;
66extern const function_base *const vmulhu;
67extern const function_base *const vmulhsu;
2a937fb5
JZZ
68extern const function_base *const vdiv;
69extern const function_base *const vrem;
70extern const function_base *const vdivu;
71extern const function_base *const vremu;
d7f8c79a
JZZ
72extern const function_base *const vneg;
73extern const function_base *const vnot;
99fa5d94
JZZ
74extern const function_base *const vsext;
75extern const function_base *const vzext;
a1e42094
JZZ
76extern const function_base *const vwadd;
77extern const function_base *const vwsub;
78extern const function_base *const vwmul;
79extern const function_base *const vwaddu;
80extern const function_base *const vwsubu;
81extern const function_base *const vwmulu;
82extern const function_base *const vwmulsu;
83extern const function_base *const vwcvt_x;
84extern const function_base *const vwcvtu_x;
cb44a16d
JZZ
85extern const function_base *const vadc;
86extern const function_base *const vsbc;
dca23bf0
JZZ
87extern const function_base *const vmadc;
88extern const function_base *const vmsbc;
6271a072
JZZ
89extern const function_base *const vnsrl;
90extern const function_base *const vnsra;
91extern const function_base *const vncvt_x;
92extern const function_base *const vmerge;
93extern const function_base *const vmv_v;
acb51b5c
JZZ
94extern const function_base *const vmseq;
95extern const function_base *const vmsne;
96extern const function_base *const vmslt;
97extern const function_base *const vmsgt;
98extern const function_base *const vmsle;
99extern const function_base *const vmsge;
100extern const function_base *const vmsltu;
101extern const function_base *const vmsgtu;
102extern const function_base *const vmsleu;
103extern const function_base *const vmsgeu;
272e119d
JZZ
104extern const function_base *const vmacc;
105extern const function_base *const vnmsac;
106extern const function_base *const vmadd;
107extern const function_base *const vnmsub;
108extern const function_base *const vwmacc;
109extern const function_base *const vwmaccu;
110extern const function_base *const vwmaccsu;
111extern const function_base *const vwmaccus;
7ad729a0
JZZ
112extern const function_base *const vsadd;
113extern const function_base *const vssub;
114extern const function_base *const vsaddu;
115extern const function_base *const vssubu;
e09418f2
JZZ
116extern const function_base *const vaadd;
117extern const function_base *const vasub;
118extern const function_base *const vaaddu;
119extern const function_base *const vasubu;
120extern const function_base *const vsmul;
121extern const function_base *const vssra;
122extern const function_base *const vssrl;
123extern const function_base *const vnclip;
124extern const function_base *const vnclip;
125extern const function_base *const vnclipu;
126extern const function_base *const vnclipu;
1ed93bc7
JZZ
127extern const function_base *const vmand;
128extern const function_base *const vmnand;
129extern const function_base *const vmandn;
130extern const function_base *const vmxor;
131extern const function_base *const vmor;
132extern const function_base *const vmnor;
133extern const function_base *const vmorn;
134extern const function_base *const vmxnor;
135extern const function_base *const vmmv;
136extern const function_base *const vmclr;
137extern const function_base *const vmset;
138extern const function_base *const vmnot;
139extern const function_base *const vcpop;
140extern const function_base *const vfirst;
141extern const function_base *const vmsbf;
142extern const function_base *const vmsif;
143extern const function_base *const vmsof;
144extern const function_base *const viota;
145extern const function_base *const vid;
dc244cdc
JZZ
146extern const function_base *const vfadd;
147extern const function_base *const vfadd;
148extern const function_base *const vfsub;
149extern const function_base *const vfsub;
150extern const function_base *const vfrsub;
151extern const function_base *const vfwadd;
152extern const function_base *const vfwsub;
153extern const function_base *const vfmul;
154extern const function_base *const vfmul;
155extern const function_base *const vfdiv;
156extern const function_base *const vfdiv;
157extern const function_base *const vfrdiv;
158extern const function_base *const vfwmul;
159extern const function_base *const vfmacc;
160extern const function_base *const vfnmsac;
161extern const function_base *const vfmadd;
162extern const function_base *const vfnmsub;
163extern const function_base *const vfnmacc;
164extern const function_base *const vfmsac;
165extern const function_base *const vfnmadd;
166extern const function_base *const vfmsub;
167extern const function_base *const vfwmacc;
168extern const function_base *const vfwnmacc;
169extern const function_base *const vfwmsac;
170extern const function_base *const vfwnmsac;
171extern const function_base *const vfsqrt;
172extern const function_base *const vfrsqrt7;
173extern const function_base *const vfrec7;
174extern const function_base *const vfmin;
175extern const function_base *const vfmax;
176extern const function_base *const vfsgnj;
177extern const function_base *const vfsgnjn;
178extern const function_base *const vfsgnjx;
179extern const function_base *const vfneg;
180extern const function_base *const vfabs;
181extern const function_base *const vmfeq;
182extern const function_base *const vmfne;
183extern const function_base *const vmflt;
184extern const function_base *const vmfgt;
185extern const function_base *const vmfle;
186extern const function_base *const vmfge;
187extern const function_base *const vfclass;
188extern const function_base *const vfmerge;
189extern const function_base *const vfmv_v;
190extern const function_base *const vfcvt_x;
191extern const function_base *const vfcvt_xu;
192extern const function_base *const vfcvt_rtz_x;
193extern const function_base *const vfcvt_rtz_xu;
194extern const function_base *const vfcvt_f;
195extern const function_base *const vfwcvt_x;
196extern const function_base *const vfwcvt_xu;
197extern const function_base *const vfwcvt_rtz_x;
198extern const function_base *const vfwcvt_rtz_xu;
199extern const function_base *const vfwcvt_f;
200extern const function_base *const vfncvt_x;
201extern const function_base *const vfncvt_xu;
202extern const function_base *const vfncvt_rtz_x;
203extern const function_base *const vfncvt_rtz_xu;
204extern const function_base *const vfncvt_f;
205extern const function_base *const vfncvt_rod_f;
f56d48b2
JZZ
206}
207
208} // end namespace riscv_vector
209
210#endif