1 /* function_shape 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_SHAPES_H
22 #define GCC_RISCV_VECTOR_BUILTINS_SHAPES_H
24 namespace riscv_vector
{
27 extern const function_shape
*const vsetvl
;
28 extern const function_shape
*const vsetvlmax
;
29 extern const function_shape
*const loadstore
;
30 extern const function_shape
*const indexed_loadstore
;
31 extern const function_shape
*const th_loadstore_width
;
32 extern const function_shape
*const th_indexed_loadstore_width
;
33 extern const function_shape
*const alu
;
34 extern const function_shape
*const alu_frm
;
35 extern const function_shape
*const widen_alu
;
36 extern const function_shape
*const widen_alu_frm
;
37 extern const function_shape
*const no_mask_policy
;
38 extern const function_shape
*const return_mask
;
39 extern const function_shape
*const narrow_alu
;
40 extern const function_shape
*const narrow_alu_frm
;
41 extern const function_shape
*const move
;
42 extern const function_shape
*const mask_alu
;
43 extern const function_shape
*const reduc_alu
;
44 extern const function_shape
*const reduc_alu_frm
;
45 extern const function_shape
*const scalar_move
;
46 extern const function_shape
*const th_extract
;
47 extern const function_shape
*const vundefined
;
48 extern const function_shape
*const misc
;
49 extern const function_shape
*const vset
;
50 extern const function_shape
*const vget
;
51 extern const function_shape
*const vcreate
;
52 extern const function_shape
*const read_vl
;
53 extern const function_shape
*const fault_load
;
54 extern const function_shape
*const vlenb
;
55 extern const function_shape
*const seg_loadstore
;
56 extern const function_shape
*const seg_indexed_loadstore
;
57 extern const function_shape
*const seg_fault_load
;
58 /* Below function_shape are Vector Crypto*/
59 extern const function_shape
*const crypto_vv
;
60 extern const function_shape
*const crypto_vi
;
61 extern const function_shape
*const crypto_vv_no_op_type
;
62 /* Sifive vendor extension. */
63 extern const function_shape
*const sf_vqmacc
;
64 extern const function_shape
*const sf_vfnrclip
;
67 } // end namespace riscv_vector