]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/aarch64/aarch64-sve-builtins-sve2.def
Update copyright years.
[thirdparty/gcc.git] / gcc / config / aarch64 / aarch64-sve-builtins-sve2.def
CommitLineData
0a09a948 1/* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
83ffe9cd 2 Copyright (C) 2020-2023 Free Software Foundation, Inc.
0a09a948
RS
3
4 This file is part of GCC.
5
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.
10
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.
15
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/>. */
19
20#define REQUIRED_EXTENSIONS AARCH64_FL_SVE2
21DEF_SVE_FUNCTION (svaba, ternary_opt_n, all_integer, none)
22DEF_SVE_FUNCTION (svabalb, ternary_long_opt_n, hsd_integer, none)
23DEF_SVE_FUNCTION (svabalt, ternary_long_opt_n, hsd_integer, none)
24DEF_SVE_FUNCTION (svadalp, binary_wide, hsd_integer, mxz)
25DEF_SVE_FUNCTION (svadclb, ternary_opt_n, sd_unsigned, none)
26DEF_SVE_FUNCTION (svadclt, ternary_opt_n, sd_unsigned, none)
27DEF_SVE_FUNCTION (svaddhnb, binary_narrowb_opt_n, hsd_integer, none)
28DEF_SVE_FUNCTION (svaddhnt, binary_narrowt_opt_n, hsd_integer, none)
29DEF_SVE_FUNCTION (svabdlb, binary_long_opt_n, hsd_integer, none)
30DEF_SVE_FUNCTION (svabdlt, binary_long_opt_n, hsd_integer, none)
31DEF_SVE_FUNCTION (svaddlb, binary_long_opt_n, hsd_integer, none)
32DEF_SVE_FUNCTION (svaddlbt, binary_long_opt_n, hsd_signed, none)
33DEF_SVE_FUNCTION (svaddlt, binary_long_opt_n, hsd_integer, none)
02fcd8ac 34DEF_SVE_FUNCTION (svaddp, binary, all_arith, mx)
0a09a948
RS
35DEF_SVE_FUNCTION (svaddwb, binary_wide_opt_n, hsd_integer, none)
36DEF_SVE_FUNCTION (svaddwt, binary_wide_opt_n, hsd_integer, none)
37DEF_SVE_FUNCTION (svbcax, ternary_opt_n, all_integer, none)
38DEF_SVE_FUNCTION (svbsl, ternary_opt_n, all_integer, none)
39DEF_SVE_FUNCTION (svbsl1n, ternary_opt_n, all_integer, none)
40DEF_SVE_FUNCTION (svbsl2n, ternary_opt_n, all_integer, none)
41DEF_SVE_FUNCTION (svcadd, binary_rotate, all_integer, none)
42DEF_SVE_FUNCTION (svcdot, ternary_qq_rotate, sd_signed, none)
43DEF_SVE_FUNCTION (svcdot_lane, ternary_qq_lane_rotate, sd_signed, none)
44DEF_SVE_FUNCTION (svcmla, ternary_rotate, all_integer, none)
45DEF_SVE_FUNCTION (svcmla_lane, ternary_lane_rotate, hs_integer, none)
46DEF_SVE_FUNCTION (svcvtlt, unary_convert, cvt_long, mx)
47DEF_SVE_FUNCTION (svcvtnt, unary_convert_narrowt, cvt_narrow, mx)
48DEF_SVE_FUNCTION (svcvtx, unary_convert, cvt_narrow_s, mxz)
49DEF_SVE_FUNCTION (svcvtxnt, unary_convert_narrowt, cvt_narrow_s, mx)
50DEF_SVE_FUNCTION (sveor3, ternary_opt_n, all_integer, none)
51DEF_SVE_FUNCTION (sveorbt, ternary_opt_n, all_integer, none)
52DEF_SVE_FUNCTION (sveortb, ternary_opt_n, all_integer, none)
53DEF_SVE_FUNCTION (svhadd, binary_opt_n, all_integer, mxz)
54DEF_SVE_FUNCTION (svhistcnt, binary_to_uint, sd_integer, z)
55DEF_SVE_FUNCTION (svhistseg, binary_to_uint, b_integer, none)
56DEF_SVE_FUNCTION (svhsub, binary_opt_n, all_integer, mxz)
57DEF_SVE_FUNCTION (svhsubr, binary_opt_n, all_integer, mxz)
58DEF_SVE_FUNCTION (svldnt1_gather, load_gather_sv_restricted, sd_data, implicit)
59DEF_SVE_FUNCTION (svldnt1_gather, load_gather_vs, sd_data, implicit)
60DEF_SVE_FUNCTION (svldnt1sb_gather, load_ext_gather_offset_restricted, sd_integer, implicit)
61DEF_SVE_FUNCTION (svldnt1sh_gather, load_ext_gather_offset_restricted, sd_integer, implicit)
62DEF_SVE_FUNCTION (svldnt1sh_gather, load_ext_gather_index_restricted, sd_integer, implicit)
63DEF_SVE_FUNCTION (svldnt1sw_gather, load_ext_gather_offset_restricted, d_integer, implicit)
64DEF_SVE_FUNCTION (svldnt1sw_gather, load_ext_gather_index_restricted, d_integer, implicit)
65DEF_SVE_FUNCTION (svldnt1ub_gather, load_ext_gather_offset_restricted, sd_integer, implicit)
66DEF_SVE_FUNCTION (svldnt1uh_gather, load_ext_gather_offset_restricted, sd_integer, implicit)
67DEF_SVE_FUNCTION (svldnt1uh_gather, load_ext_gather_index_restricted, sd_integer, implicit)
68DEF_SVE_FUNCTION (svldnt1uw_gather, load_ext_gather_offset_restricted, d_integer, implicit)
69DEF_SVE_FUNCTION (svldnt1uw_gather, load_ext_gather_index_restricted, d_integer, implicit)
70DEF_SVE_FUNCTION (svlogb, unary_to_int, all_float, mxz)
71DEF_SVE_FUNCTION (svmatch, compare, bh_integer, implicit)
02fcd8ac 72DEF_SVE_FUNCTION (svmaxp, binary, all_arith, mx)
0a09a948
RS
73DEF_SVE_FUNCTION (svmaxnmp, binary, all_float, mx)
74DEF_SVE_FUNCTION (svmla_lane, ternary_lane, hsd_integer, none)
75DEF_SVE_FUNCTION (svmlalb, ternary_long_opt_n, s_float_hsd_integer, none)
76DEF_SVE_FUNCTION (svmlalb_lane, ternary_long_lane, s_float_sd_integer, none)
77DEF_SVE_FUNCTION (svmlalt, ternary_long_opt_n, s_float_hsd_integer, none)
78DEF_SVE_FUNCTION (svmlalt_lane, ternary_long_lane, s_float_sd_integer, none)
79DEF_SVE_FUNCTION (svmls_lane, ternary_lane, hsd_integer, none)
80DEF_SVE_FUNCTION (svmlslb, ternary_long_opt_n, s_float_hsd_integer, none)
81DEF_SVE_FUNCTION (svmlslb_lane, ternary_long_lane, s_float_sd_integer, none)
82DEF_SVE_FUNCTION (svmlslt, ternary_long_opt_n, s_float_hsd_integer, none)
83DEF_SVE_FUNCTION (svmlslt_lane, ternary_long_lane, s_float_sd_integer, none)
02fcd8ac 84DEF_SVE_FUNCTION (svminp, binary, all_arith, mx)
0a09a948
RS
85DEF_SVE_FUNCTION (svminnmp, binary, all_float, mx)
86DEF_SVE_FUNCTION (svmovlb, unary_long, hsd_integer, none)
87DEF_SVE_FUNCTION (svmovlt, unary_long, hsd_integer, none)
88DEF_SVE_FUNCTION (svmul_lane, binary_lane, hsd_integer, none)
89DEF_SVE_FUNCTION (svmullb, binary_long_opt_n, hsd_integer, none)
90DEF_SVE_FUNCTION (svmullb_lane, binary_long_lane, sd_integer, none)
91DEF_SVE_FUNCTION (svmullt, binary_long_opt_n, hsd_integer, none)
92DEF_SVE_FUNCTION (svmullt_lane, binary_long_lane, sd_integer, none)
93DEF_SVE_FUNCTION (svnbsl, ternary_opt_n, all_integer, none)
94DEF_SVE_FUNCTION (svnmatch, compare, bh_integer, implicit)
95DEF_SVE_FUNCTION (svpmul, binary_opt_n, b_unsigned, none)
96DEF_SVE_FUNCTION (svpmullb, binary_long_opt_n, hd_unsigned, none)
97DEF_SVE_FUNCTION (svpmullb_pair, binary_opt_n, bs_unsigned, none)
98DEF_SVE_FUNCTION (svpmullt, binary_long_opt_n, hd_unsigned, none)
99DEF_SVE_FUNCTION (svpmullt_pair, binary_opt_n, bs_unsigned, none)
100DEF_SVE_FUNCTION (svqabs, unary, all_signed, mxz)
101DEF_SVE_FUNCTION (svqadd, binary_opt_n, all_integer, mxz)
102DEF_SVE_FUNCTION (svqcadd, binary_rotate, all_signed, none)
103DEF_SVE_FUNCTION (svqdmlalb, ternary_long_opt_n, hsd_signed, none)
104DEF_SVE_FUNCTION (svqdmlalb_lane, ternary_long_lane, sd_signed, none)
105DEF_SVE_FUNCTION (svqdmlalbt, ternary_long_opt_n, hsd_signed, none)
106DEF_SVE_FUNCTION (svqdmlalt, ternary_long_opt_n, hsd_signed, none)
107DEF_SVE_FUNCTION (svqdmlalt_lane, ternary_long_lane, sd_signed, none)
108DEF_SVE_FUNCTION (svqdmlslb, ternary_long_opt_n, hsd_signed, none)
109DEF_SVE_FUNCTION (svqdmlslb_lane, ternary_long_lane, sd_signed, none)
110DEF_SVE_FUNCTION (svqdmlslbt, ternary_long_opt_n, hsd_signed, none)
111DEF_SVE_FUNCTION (svqdmlslt, ternary_long_opt_n, hsd_signed, none)
112DEF_SVE_FUNCTION (svqdmlslt_lane, ternary_long_lane, sd_signed, none)
113DEF_SVE_FUNCTION (svqdmulh, binary_opt_n, all_signed, none)
114DEF_SVE_FUNCTION (svqdmulh_lane, binary_lane, hsd_signed, none)
115DEF_SVE_FUNCTION (svqdmullb, binary_long_opt_n, hsd_signed, none)
116DEF_SVE_FUNCTION (svqdmullb_lane, binary_long_lane, sd_signed, none)
117DEF_SVE_FUNCTION (svqdmullt, binary_long_opt_n, hsd_signed, none)
118DEF_SVE_FUNCTION (svqdmullt_lane, binary_long_lane, sd_signed, none)
119DEF_SVE_FUNCTION (svqneg, unary, all_signed, mxz)
120DEF_SVE_FUNCTION (svqrdmulh, binary_opt_n, all_signed, none)
121DEF_SVE_FUNCTION (svqrdmulh_lane, binary_lane, hsd_signed, none)
122DEF_SVE_FUNCTION (svqrdmlah, ternary_opt_n, all_signed, none)
123DEF_SVE_FUNCTION (svqrdmlah_lane, ternary_lane, hsd_signed, none)
124DEF_SVE_FUNCTION (svqrdmlsh, ternary_opt_n, all_signed, none)
125DEF_SVE_FUNCTION (svqrdmlsh_lane, ternary_lane, hsd_signed, none)
126DEF_SVE_FUNCTION (svqrdcmlah, ternary_rotate, all_signed, none)
127DEF_SVE_FUNCTION (svqrdcmlah_lane, ternary_lane_rotate, hs_signed, none)
128DEF_SVE_FUNCTION (svqrshrnb, shift_right_imm_narrowb, hsd_integer, none)
129DEF_SVE_FUNCTION (svqrshrnt, shift_right_imm_narrowt, hsd_integer, none)
130DEF_SVE_FUNCTION (svqrshrunb, shift_right_imm_narrowb_to_uint, hsd_signed, none)
131DEF_SVE_FUNCTION (svqrshrunt, shift_right_imm_narrowt_to_uint, hsd_signed, none)
132DEF_SVE_FUNCTION (svqshl, binary_int_opt_n, all_integer, mxz)
133DEF_SVE_FUNCTION (svqshlu, shift_left_imm_to_uint, all_signed, mxz)
134DEF_SVE_FUNCTION (svqshrnb, shift_right_imm_narrowb, hsd_integer, none)
135DEF_SVE_FUNCTION (svqshrnt, shift_right_imm_narrowt, hsd_integer, none)
136DEF_SVE_FUNCTION (svqshrunb, shift_right_imm_narrowb_to_uint, hsd_signed, none)
137DEF_SVE_FUNCTION (svqshrunt, shift_right_imm_narrowt_to_uint, hsd_signed, none)
138DEF_SVE_FUNCTION (svqrshl, binary_int_opt_n, all_integer, mxz)
139DEF_SVE_FUNCTION (svqsub, binary_opt_n, all_integer, mxz)
140DEF_SVE_FUNCTION (svqsubr, binary_opt_n, all_integer, mxz)
141DEF_SVE_FUNCTION (svqxtnb, unary_narrowb, hsd_integer, none)
142DEF_SVE_FUNCTION (svqxtnt, unary_narrowt, hsd_integer, none)
143DEF_SVE_FUNCTION (svqxtunb, unary_narrowb_to_uint, hsd_signed, none)
144DEF_SVE_FUNCTION (svqxtunt, unary_narrowt_to_uint, hsd_signed, none)
145DEF_SVE_FUNCTION (svraddhnb, binary_narrowb_opt_n, hsd_integer, none)
146DEF_SVE_FUNCTION (svraddhnt, binary_narrowt_opt_n, hsd_integer, none)
147DEF_SVE_FUNCTION (svrecpe, unary, s_unsigned, mxz)
148DEF_SVE_FUNCTION (svrhadd, binary_opt_n, all_integer, mxz)
149DEF_SVE_FUNCTION (svrsqrte, unary, s_unsigned, mxz)
150DEF_SVE_FUNCTION (svrshl, binary_int_opt_n, all_integer, mxz)
151DEF_SVE_FUNCTION (svrshr, shift_right_imm, all_integer, mxz)
152DEF_SVE_FUNCTION (svrshrnb, shift_right_imm_narrowb, hsd_integer, none)
153DEF_SVE_FUNCTION (svrshrnt, shift_right_imm_narrowt, hsd_integer, none)
154DEF_SVE_FUNCTION (svrsra, ternary_shift_right_imm, all_integer, none)
155DEF_SVE_FUNCTION (svrsubhnb, binary_narrowb_opt_n, hsd_integer, none)
156DEF_SVE_FUNCTION (svrsubhnt, binary_narrowt_opt_n, hsd_integer, none)
157DEF_SVE_FUNCTION (svsbclb, ternary_opt_n, sd_unsigned, none)
158DEF_SVE_FUNCTION (svsbclt, ternary_opt_n, sd_unsigned, none)
159DEF_SVE_FUNCTION (svshllb, shift_left_imm_long, hsd_integer, none)
160DEF_SVE_FUNCTION (svshllt, shift_left_imm_long, hsd_integer, none)
161DEF_SVE_FUNCTION (svshrnb, shift_right_imm_narrowb, hsd_integer, none)
162DEF_SVE_FUNCTION (svshrnt, shift_right_imm_narrowt, hsd_integer, none)
163DEF_SVE_FUNCTION (svsli, ternary_shift_left_imm, all_integer, none)
164DEF_SVE_FUNCTION (svsqadd, binary_int_opt_n, all_unsigned, mxz)
165DEF_SVE_FUNCTION (svsra, ternary_shift_right_imm, all_integer, none)
166DEF_SVE_FUNCTION (svsri, ternary_shift_right_imm, all_integer, none)
167DEF_SVE_FUNCTION (svstnt1_scatter, store_scatter_index_restricted, sd_data, implicit)
168DEF_SVE_FUNCTION (svstnt1_scatter, store_scatter_offset_restricted, sd_data, implicit)
169DEF_SVE_FUNCTION (svstnt1b_scatter, store_scatter_offset_restricted, sd_integer, implicit)
170DEF_SVE_FUNCTION (svstnt1h_scatter, store_scatter_index_restricted, sd_integer, implicit)
171DEF_SVE_FUNCTION (svstnt1h_scatter, store_scatter_offset_restricted, sd_integer, implicit)
172DEF_SVE_FUNCTION (svstnt1w_scatter, store_scatter_index_restricted, d_integer, implicit)
173DEF_SVE_FUNCTION (svstnt1w_scatter, store_scatter_offset_restricted, d_integer, implicit)
174DEF_SVE_FUNCTION (svsubhnb, binary_narrowb_opt_n, hsd_integer, none)
175DEF_SVE_FUNCTION (svsubhnt, binary_narrowt_opt_n, hsd_integer, none)
176DEF_SVE_FUNCTION (svsublb, binary_long_opt_n, hsd_integer, none)
177DEF_SVE_FUNCTION (svsublbt, binary_long_opt_n, hsd_signed, none)
178DEF_SVE_FUNCTION (svsublt, binary_long_opt_n, hsd_integer, none)
179DEF_SVE_FUNCTION (svsubltb, binary_long_opt_n, hsd_signed, none)
180DEF_SVE_FUNCTION (svsubwb, binary_wide_opt_n, hsd_integer, none)
181DEF_SVE_FUNCTION (svsubwt, binary_wide_opt_n, hsd_integer, none)
182DEF_SVE_FUNCTION (svtbl2, tbl_tuple, all_data, none)
183DEF_SVE_FUNCTION (svtbx, ternary_uint, all_data, none)
184DEF_SVE_FUNCTION (svuqadd, binary_uint_opt_n, all_signed, mxz)
185DEF_SVE_FUNCTION (svwhilege, compare_scalar, while, none)
186DEF_SVE_FUNCTION (svwhilegt, compare_scalar, while, none)
187DEF_SVE_FUNCTION (svwhilerw, compare_ptr, all_data, none)
188DEF_SVE_FUNCTION (svwhilewr, compare_ptr, all_data, none)
189DEF_SVE_FUNCTION (svxar, ternary_shift_right_imm, all_integer, none)
190#undef REQUIRED_EXTENSIONS
191
192#define REQUIRED_EXTENSIONS (AARCH64_FL_SVE2 | AARCH64_FL_SVE2_AES)
193DEF_SVE_FUNCTION (svaesd, binary, b_unsigned, none)
194DEF_SVE_FUNCTION (svaese, binary, b_unsigned, none)
195DEF_SVE_FUNCTION (svaesmc, unary, b_unsigned, none)
196DEF_SVE_FUNCTION (svaesimc, unary, b_unsigned, none)
197DEF_SVE_FUNCTION (svpmullb_pair, binary_opt_n, d_unsigned, none)
198DEF_SVE_FUNCTION (svpmullt_pair, binary_opt_n, d_unsigned, none)
199#undef REQUIRED_EXTENSIONS
200
201#define REQUIRED_EXTENSIONS (AARCH64_FL_SVE2 | AARCH64_FL_SVE2_BITPERM)
202DEF_SVE_FUNCTION (svbdep, binary_opt_n, all_unsigned, none)
203DEF_SVE_FUNCTION (svbext, binary_opt_n, all_unsigned, none)
204DEF_SVE_FUNCTION (svbgrp, binary_opt_n, all_unsigned, none)
205#undef REQUIRED_EXTENSIONS
206
207#define REQUIRED_EXTENSIONS (AARCH64_FL_SVE2 | AARCH64_FL_SVE2_SHA3)
208DEF_SVE_FUNCTION (svrax1, binary, d_integer, none)
209#undef REQUIRED_EXTENSIONS
210
211#define REQUIRED_EXTENSIONS (AARCH64_FL_SVE2 | AARCH64_FL_SVE2_SM4)
212DEF_SVE_FUNCTION (svsm4e, binary, s_unsigned, none)
213DEF_SVE_FUNCTION (svsm4ekey, binary, s_unsigned, none)
214#undef REQUIRED_EXTENSIONS