Daily bump.
[official-gcc.git] / gcc / config / arm / arm-mve-builtins-shapes.h
blob6b839c577c6bf26c22148aab85ed614404ace1bd
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)
9 any later version.
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
23 namespace arm_mve
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.
30 Also:
32 - "inherent" means that the function takes no arguments. */
34 namespace shapes
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 */
99 #endif