1 /* ACLE support for Arm MVE (function shapes)
2 Copyright (C) 2023-2025 Free Software Foundation, Inc.
4 This file is part of GCC.
6 GCC is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
11 GCC is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3. If not see
18 <http://www.gnu.org/licenses/>. */
20 #ifndef GCC_ARM_MVE_BUILTINS_SHAPES_H
21 #define GCC_ARM_MVE_BUILTINS_SHAPES_H
25 /* The naming convention is:
27 - to use names like "unary" etc. if the rules are somewhat generic,
28 especially if there are no ranges involved.
32 - "inherent" means that the function takes no arguments. */
37 extern const function_shape
*const binary
;
38 extern const function_shape
*const binary_acc_int32
;
39 extern const function_shape
*const binary_acc_int64
;
40 extern const function_shape
*const binary_acca_int32
;
41 extern const function_shape
*const binary_acca_int64
;
42 extern const function_shape
*const binary_imm32
;
43 extern const function_shape
*const binary_lshift
;
44 extern const function_shape
*const binary_lshift_r
;
45 extern const function_shape
*const binary_lshift_unsigned
;
46 extern const function_shape
*const binary_maxamina
;
47 extern const function_shape
*const binary_maxavminav
;
48 extern const function_shape
*const binary_maxvminv
;
49 extern const function_shape
*const binary_move_narrow
;
50 extern const function_shape
*const binary_move_narrow_unsigned
;
51 extern const function_shape
*const binary_opt_n
;
52 extern const function_shape
*const binary_orrq
;
53 extern const function_shape
*const binary_round_lshift
;
54 extern const function_shape
*const binary_rshift
;
55 extern const function_shape
*const binary_rshift_narrow
;
56 extern const function_shape
*const binary_rshift_narrow_unsigned
;
57 extern const function_shape
*const binary_widen
;
58 extern const function_shape
*const binary_widen_n
;
59 extern const function_shape
*const binary_widen_opt_n
;
60 extern const function_shape
*const binary_widen_poly
;
61 extern const function_shape
*const cmp
;
62 extern const function_shape
*const create
;
63 extern const function_shape
*const inherent
;
64 extern const function_shape
*const load
;
65 extern const function_shape
*const load_ext
;
66 extern const function_shape
*const load_ext_gather_offset
;
67 extern const function_shape
*const load_gather_base
;
68 extern const function_shape
*const mvn
;
69 extern const function_shape
*const store
;
70 extern const function_shape
*const store_scatter_base
;
71 extern const function_shape
*const store_scatter_offset
;
72 extern const function_shape
*const ternary
;
73 extern const function_shape
*const ternary_lshift
;
74 extern const function_shape
*const ternary_n
;
75 extern const function_shape
*const ternary_opt_n
;
76 extern const function_shape
*const ternary_rshift
;
77 extern const function_shape
*const unary
;
78 extern const function_shape
*const unary_acc
;
79 extern const function_shape
*const unary_convert
;
80 extern const function_shape
*const unary_int32
;
81 extern const function_shape
*const unary_int32_acc
;
82 extern const function_shape
*const unary_n
;
83 extern const function_shape
*const unary_widen
;
84 extern const function_shape
*const unary_widen_acc
;
85 extern const function_shape
*const vadc_vsbc
;
86 extern const function_shape
*const vctp
;
87 extern const function_shape
*const vcvt
;
88 extern const function_shape
*const vcvt_f16_f32
;
89 extern const function_shape
*const vcvt_f32_f16
;
90 extern const function_shape
*const vcvtx
;
91 extern const function_shape
*const viddup
;
92 extern const function_shape
*const vidwdup
;
93 extern const function_shape
*const vpsel
;
94 extern const function_shape
*const vshlc
;
96 } /* end namespace arm_mve::shapes */
97 } /* end namespace arm_mve */