]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/arm-mve-builtins-base.def
arm: [MVE intrinsics] rework vldq1 vst1q
[thirdparty/gcc.git] / gcc / config / arm / arm-mve-builtins-base.def
CommitLineData
6f59caf1
CL
1/* ACLE support for Arm MVE (__ARM_FEATURE_MVE intrinsics)
2 Copyright (C) 2023 Free Software Foundation, Inc.
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 REQUIRES_FLOAT false
817a406a 21DEF_MVE_FUNCTION (vabavq, binary_acca_int32, all_integer, p_or_none)
6079d94a 22DEF_MVE_FUNCTION (vabdq, binary, all_integer, mx_or_none)
c32e1a71 23DEF_MVE_FUNCTION (vabsq, unary, all_signed, mx_or_none)
2d1a5a44 24DEF_MVE_FUNCTION (vaddlvaq, unary_widen_acc, integer_32, p_or_none)
218e01ee 25DEF_MVE_FUNCTION (vaddlvq, unary_acc, integer_32, p_or_none)
1942c5ab 26DEF_MVE_FUNCTION (vaddq, binary_opt_n, all_integer, mx_or_none)
cf24e531 27DEF_MVE_FUNCTION (vaddvaq, unary_int32_acc, all_integer, p_or_none)
56b099f6 28DEF_MVE_FUNCTION (vaddvq, unary_int32, all_integer, p_or_none)
632f70d8 29DEF_MVE_FUNCTION (vandq, binary, all_integer, mx_or_none)
5e000215 30DEF_MVE_FUNCTION (vbrsrq, binary_imm32, all_integer, mx_or_none)
446b5be4
CL
31DEF_MVE_FUNCTION (vcaddq_rot90, binary, all_integer, mx_or_none)
32DEF_MVE_FUNCTION (vcaddq_rot270, binary, all_integer, mx_or_none)
c32e1a71
CL
33DEF_MVE_FUNCTION (vclsq, unary, all_signed, mx_or_none)
34DEF_MVE_FUNCTION (vclzq, unary, all_integer, mx_or_none)
7674ae25
CL
35DEF_MVE_FUNCTION (vcmpcsq, cmp, all_unsigned, m_or_none)
36DEF_MVE_FUNCTION (vcmpeqq, cmp, all_integer, m_or_none)
37DEF_MVE_FUNCTION (vcmpgeq, cmp, all_signed, m_or_none)
38DEF_MVE_FUNCTION (vcmpgtq, cmp, all_signed, m_or_none)
39DEF_MVE_FUNCTION (vcmphiq, cmp, all_unsigned, m_or_none)
40DEF_MVE_FUNCTION (vcmpleq, cmp, all_signed, m_or_none)
41DEF_MVE_FUNCTION (vcmpltq, cmp, all_signed, m_or_none)
42DEF_MVE_FUNCTION (vcmpneq, cmp, all_integer, m_or_none)
07685b39 43DEF_MVE_FUNCTION (vcreateq, create, all_integer_with_64, none)
fbcb43fa 44DEF_MVE_FUNCTION (vdupq, unary_n, all_integer, mx_or_none)
632f70d8 45DEF_MVE_FUNCTION (veorq, binary, all_integer, mx_or_none)
6cff5f3d 46DEF_MVE_FUNCTION (vhaddq, binary_opt_n, all_integer, mx_or_none)
446b5be4
CL
47DEF_MVE_FUNCTION (vhcaddq_rot90, binary, all_signed, mx_or_none)
48DEF_MVE_FUNCTION (vhcaddq_rot270, binary, all_signed, mx_or_none)
6cff5f3d 49DEF_MVE_FUNCTION (vhsubq, binary_opt_n, all_integer, mx_or_none)
4d7647ed 50DEF_MVE_FUNCTION (vld1q, load, all_integer, none)
cf2c47b1 51DEF_MVE_FUNCTION (vmaxaq, binary_maxamina, all_signed, m_or_none)
83fff825 52DEF_MVE_FUNCTION (vmaxavq, binary_maxavminav, all_signed, p_or_none)
644f4758 53DEF_MVE_FUNCTION (vmaxq, binary, all_integer, mx_or_none)
83fff825 54DEF_MVE_FUNCTION (vmaxvq, binary_maxvminv, all_integer, p_or_none)
cf2c47b1 55DEF_MVE_FUNCTION (vminaq, binary_maxamina, all_signed, m_or_none)
83fff825 56DEF_MVE_FUNCTION (vminavq, binary_maxavminav, all_signed, p_or_none)
644f4758 57DEF_MVE_FUNCTION (vminq, binary, all_integer, mx_or_none)
83fff825 58DEF_MVE_FUNCTION (vminvq, binary_maxvminv, all_integer, p_or_none)
a39810ad
CL
59DEF_MVE_FUNCTION (vmladavaq, binary_acca_int32, all_integer, p_or_none)
60DEF_MVE_FUNCTION (vmladavaxq, binary_acca_int32, all_signed, p_or_none)
0077e82f
CL
61DEF_MVE_FUNCTION (vmladavq, binary_acc_int32, all_integer, p_or_none)
62DEF_MVE_FUNCTION (vmladavxq, binary_acc_int32, all_signed, p_or_none)
1c775537
CL
63DEF_MVE_FUNCTION (vmlaldavaq, binary_acca_int64, integer_16_32, p_or_none)
64DEF_MVE_FUNCTION (vmlaldavaxq, binary_acca_int64, signed_16_32, p_or_none)
0e6b57d3
CL
65DEF_MVE_FUNCTION (vmlaldavq, binary_acc_int64, integer_16_32, p_or_none)
66DEF_MVE_FUNCTION (vmlaldavxq, binary_acc_int64, signed_16_32, p_or_none)
9eea27e7
CL
67DEF_MVE_FUNCTION (vmlaq, ternary_n, all_integer, m_or_none)
68DEF_MVE_FUNCTION (vmlasq, ternary_n, all_integer, m_or_none)
a39810ad
CL
69DEF_MVE_FUNCTION (vmlsdavaq, binary_acca_int32, all_signed, p_or_none)
70DEF_MVE_FUNCTION (vmlsdavaxq, binary_acca_int32, all_signed, p_or_none)
0077e82f
CL
71DEF_MVE_FUNCTION (vmlsdavq, binary_acc_int32, all_integer, p_or_none)
72DEF_MVE_FUNCTION (vmlsdavxq, binary_acc_int32, all_signed, p_or_none)
1c775537
CL
73DEF_MVE_FUNCTION (vmlsldavaq, binary_acca_int64, signed_16_32, p_or_none)
74DEF_MVE_FUNCTION (vmlsldavaxq, binary_acca_int64, signed_16_32, p_or_none)
0e6b57d3
CL
75DEF_MVE_FUNCTION (vmlsldavq, binary_acc_int64, signed_16_32, p_or_none)
76DEF_MVE_FUNCTION (vmlsldavxq, binary_acc_int64, signed_16_32, p_or_none)
fb704499
CL
77DEF_MVE_FUNCTION (vmovlbq, unary_widen, integer_8_16, mx_or_none)
78DEF_MVE_FUNCTION (vmovltq, unary_widen, integer_8_16, mx_or_none)
865c8956
CL
79DEF_MVE_FUNCTION (vmovnbq, binary_move_narrow, integer_16_32, m_or_none)
80DEF_MVE_FUNCTION (vmovntq, binary_move_narrow, integer_16_32, m_or_none)
6cff5f3d 81DEF_MVE_FUNCTION (vmulhq, binary, all_integer, mx_or_none)
ee1ec8e3
CL
82DEF_MVE_FUNCTION (vmullbq_int, binary_widen, all_integer, mx_or_none)
83DEF_MVE_FUNCTION (vmulltq_int, binary_widen, all_integer, mx_or_none)
b52b09c1
CL
84DEF_MVE_FUNCTION (vmullbq_poly, binary_widen_poly, poly_8_16, mx_or_none)
85DEF_MVE_FUNCTION (vmulltq_poly, binary_widen_poly, poly_8_16, mx_or_none)
1942c5ab 86DEF_MVE_FUNCTION (vmulq, binary_opt_n, all_integer, mx_or_none)
5ca0f988 87DEF_MVE_FUNCTION (vmvnq, mvn, all_integer, mx_or_none)
c32e1a71 88DEF_MVE_FUNCTION (vnegq, unary, all_signed, mx_or_none)
f74588ac 89DEF_MVE_FUNCTION (vorrq, binary_orrq, all_integer, mx_or_none)
d607ae03 90DEF_MVE_FUNCTION (vpselq, vpsel, all_integer_with_64, none)
c32e1a71 91DEF_MVE_FUNCTION (vqabsq, unary, all_signed, m_or_none)
6cff5f3d 92DEF_MVE_FUNCTION (vqaddq, binary_opt_n, all_integer, m_or_none)
8fe848c4
CL
93DEF_MVE_FUNCTION (vqdmladhq, ternary, all_signed, m_or_none)
94DEF_MVE_FUNCTION (vqdmladhxq, ternary, all_signed, m_or_none)
9eea27e7
CL
95DEF_MVE_FUNCTION (vqdmlahq, ternary_n, all_signed, m_or_none)
96DEF_MVE_FUNCTION (vqdmlashq, ternary_n, all_signed, m_or_none)
8fe848c4
CL
97DEF_MVE_FUNCTION (vqdmlsdhq, ternary, all_signed, m_or_none)
98DEF_MVE_FUNCTION (vqdmlsdhxq, ternary, all_signed, m_or_none)
6cff5f3d 99DEF_MVE_FUNCTION (vqdmulhq, binary_opt_n, all_signed, m_or_none)
111a4f54
CL
100DEF_MVE_FUNCTION (vqdmullbq, binary_widen_opt_n, signed_16_32, m_or_none)
101DEF_MVE_FUNCTION (vqdmulltq, binary_widen_opt_n, signed_16_32, m_or_none)
865c8956
CL
102DEF_MVE_FUNCTION (vqmovnbq, binary_move_narrow, integer_16_32, m_or_none)
103DEF_MVE_FUNCTION (vqmovntq, binary_move_narrow, integer_16_32, m_or_none)
104DEF_MVE_FUNCTION (vqmovunbq, binary_move_narrow_unsigned, signed_16_32, m_or_none)
105DEF_MVE_FUNCTION (vqmovuntq, binary_move_narrow_unsigned, signed_16_32, m_or_none)
c32e1a71 106DEF_MVE_FUNCTION (vqnegq, unary, all_signed, m_or_none)
8fe848c4
CL
107DEF_MVE_FUNCTION (vqrdmladhq, ternary, all_signed, m_or_none)
108DEF_MVE_FUNCTION (vqrdmladhxq, ternary, all_signed, m_or_none)
9eea27e7
CL
109DEF_MVE_FUNCTION (vqrdmlahq, ternary_n, all_signed, m_or_none)
110DEF_MVE_FUNCTION (vqrdmlashq, ternary_n, all_signed, m_or_none)
8fe848c4
CL
111DEF_MVE_FUNCTION (vqrdmlsdhq, ternary, all_signed, m_or_none)
112DEF_MVE_FUNCTION (vqrdmlsdhxq, ternary, all_signed, m_or_none)
0c90fe02 113DEF_MVE_FUNCTION (vqrdmulhq, binary_opt_n, all_signed, m_or_none)
548e0613 114DEF_MVE_FUNCTION (vqrshlq, binary_round_lshift, all_integer, m_or_none)
d8da15d6
CL
115DEF_MVE_FUNCTION (vqrshrnbq, binary_rshift_narrow, integer_16_32, m_or_none)
116DEF_MVE_FUNCTION (vqrshrntq, binary_rshift_narrow, integer_16_32, m_or_none)
b26c104f
CL
117DEF_MVE_FUNCTION (vqrshrunbq, binary_rshift_narrow_unsigned, signed_16_32, m_or_none)
118DEF_MVE_FUNCTION (vqrshruntq, binary_rshift_narrow_unsigned, signed_16_32, m_or_none)
9e838ad1
CL
119DEF_MVE_FUNCTION (vqshlq, binary_lshift, all_integer, m_or_none)
120DEF_MVE_FUNCTION (vqshlq, binary_lshift_r, all_integer, m_or_none)
120290ad 121DEF_MVE_FUNCTION (vqshluq, binary_lshift_unsigned, all_signed, m_or_none)
d8da15d6
CL
122DEF_MVE_FUNCTION (vqshrnbq, binary_rshift_narrow, integer_16_32, m_or_none)
123DEF_MVE_FUNCTION (vqshrntq, binary_rshift_narrow, integer_16_32, m_or_none)
b26c104f
CL
124DEF_MVE_FUNCTION (vqshrunbq, binary_rshift_narrow_unsigned, signed_16_32, m_or_none)
125DEF_MVE_FUNCTION (vqshruntq, binary_rshift_narrow_unsigned, signed_16_32, m_or_none)
6cff5f3d 126DEF_MVE_FUNCTION (vqsubq, binary_opt_n, all_integer, m_or_none)
00d97bf3 127DEF_MVE_FUNCTION (vreinterpretq, unary_convert, reinterpret_integer, none)
dd691524
CL
128DEF_MVE_FUNCTION (vrev16q, unary, integer_8, mx_or_none)
129DEF_MVE_FUNCTION (vrev32q, unary, integer_8_16, mx_or_none)
130DEF_MVE_FUNCTION (vrev64q, unary, all_integer, mx_or_none)
6cff5f3d 131DEF_MVE_FUNCTION (vrhaddq, binary, all_integer, mx_or_none)
e77a5ade
CL
132DEF_MVE_FUNCTION (vrmlaldavhaq, binary_acca_int64, integer_32, p_or_none)
133DEF_MVE_FUNCTION (vrmlaldavhaxq, binary_acca_int64, integer_32, p_or_none)
23ff8097
CL
134DEF_MVE_FUNCTION (vrmlaldavhq, binary_acc_int64, integer_32, p_or_none)
135DEF_MVE_FUNCTION (vrmlaldavhxq, binary_acc_int64, signed_32, p_or_none)
e77a5ade
CL
136DEF_MVE_FUNCTION (vrmlsldavhaq, binary_acca_int64, integer_32, p_or_none)
137DEF_MVE_FUNCTION (vrmlsldavhaxq, binary_acca_int64, integer_32, p_or_none)
23ff8097
CL
138DEF_MVE_FUNCTION (vrmlsldavhq, binary_acc_int64, signed_32, p_or_none)
139DEF_MVE_FUNCTION (vrmlsldavhxq, binary_acc_int64, signed_32, p_or_none)
6cff5f3d 140DEF_MVE_FUNCTION (vrmulhq, binary, all_integer, mx_or_none)
548e0613 141DEF_MVE_FUNCTION (vrshlq, binary_round_lshift, all_integer, mx_or_none)
d8da15d6
CL
142DEF_MVE_FUNCTION (vrshrnbq, binary_rshift_narrow, integer_16_32, m_or_none)
143DEF_MVE_FUNCTION (vrshrntq, binary_rshift_narrow, integer_16_32, m_or_none)
bb043cd3 144DEF_MVE_FUNCTION (vrshrq, binary_rshift, all_integer, mx_or_none)
8440230e
CL
145DEF_MVE_FUNCTION (vshllbq, binary_widen_n, integer_8_16, mx_or_none)
146DEF_MVE_FUNCTION (vshlltq, binary_widen_n, integer_8_16, mx_or_none)
9e838ad1
CL
147DEF_MVE_FUNCTION (vshlq, binary_lshift, all_integer, mx_or_none)
148DEF_MVE_FUNCTION (vshlq, binary_lshift_r, all_integer, m_or_none) // "_r" forms do not support the "x" predicate
d8da15d6
CL
149DEF_MVE_FUNCTION (vshrnbq, binary_rshift_narrow, integer_16_32, m_or_none)
150DEF_MVE_FUNCTION (vshrntq, binary_rshift_narrow, integer_16_32, m_or_none)
bb043cd3 151DEF_MVE_FUNCTION (vshrq, binary_rshift, all_integer, mx_or_none)
6caaf36e 152DEF_MVE_FUNCTION (vsliq, ternary_lshift, all_integer, m_or_none)
f52bf590 153DEF_MVE_FUNCTION (vsriq, ternary_rshift, all_integer, m_or_none)
4d7647ed 154DEF_MVE_FUNCTION (vst1q, store, all_integer, none)
1942c5ab 155DEF_MVE_FUNCTION (vsubq, binary_opt_n, all_integer, mx_or_none)
937ac2cd 156DEF_MVE_FUNCTION (vuninitializedq, inherent, all_integer_with_64, none)
6f59caf1
CL
157#undef REQUIRES_FLOAT
158
159#define REQUIRES_FLOAT true
6079d94a 160DEF_MVE_FUNCTION (vabdq, binary, all_float, mx_or_none)
c32e1a71 161DEF_MVE_FUNCTION (vabsq, unary, all_float, mx_or_none)
1942c5ab 162DEF_MVE_FUNCTION (vaddq, binary_opt_n, all_float, mx_or_none)
632f70d8 163DEF_MVE_FUNCTION (vandq, binary, all_float, mx_or_none)
5e000215 164DEF_MVE_FUNCTION (vbrsrq, binary_imm32, all_float, mx_or_none)
446b5be4
CL
165DEF_MVE_FUNCTION (vcaddq_rot90, binary, all_float, mx_or_none)
166DEF_MVE_FUNCTION (vcaddq_rot270, binary, all_float, mx_or_none)
49a2a63e
CL
167DEF_MVE_FUNCTION (vcmlaq, ternary, all_float, m_or_none)
168DEF_MVE_FUNCTION (vcmlaq_rot90, ternary, all_float, m_or_none)
169DEF_MVE_FUNCTION (vcmlaq_rot180, ternary, all_float, m_or_none)
170DEF_MVE_FUNCTION (vcmlaq_rot270, ternary, all_float, m_or_none)
a96e2dd1
CL
171DEF_MVE_FUNCTION (vcmulq, binary, all_float, mx_or_none)
172DEF_MVE_FUNCTION (vcmulq_rot90, binary, all_float, mx_or_none)
173DEF_MVE_FUNCTION (vcmulq_rot180, binary, all_float, mx_or_none)
174DEF_MVE_FUNCTION (vcmulq_rot270, binary, all_float, mx_or_none)
7674ae25
CL
175DEF_MVE_FUNCTION (vcmpeqq, cmp, all_float, m_or_none)
176DEF_MVE_FUNCTION (vcmpgeq, cmp, all_float, m_or_none)
177DEF_MVE_FUNCTION (vcmpgtq, cmp, all_float, m_or_none)
178DEF_MVE_FUNCTION (vcmpleq, cmp, all_float, m_or_none)
179DEF_MVE_FUNCTION (vcmpltq, cmp, all_float, m_or_none)
180DEF_MVE_FUNCTION (vcmpneq, cmp, all_float, m_or_none)
07685b39 181DEF_MVE_FUNCTION (vcreateq, create, all_float, none)
fbcb43fa 182DEF_MVE_FUNCTION (vdupq, unary_n, all_float, mx_or_none)
632f70d8 183DEF_MVE_FUNCTION (veorq, binary, all_float, mx_or_none)
17950739
CL
184DEF_MVE_FUNCTION (vfmaq, ternary_opt_n, all_float, m_or_none)
185DEF_MVE_FUNCTION (vfmasq, ternary_n, all_float, m_or_none)
186DEF_MVE_FUNCTION (vfmsq, ternary, all_float, m_or_none)
4d7647ed 187DEF_MVE_FUNCTION (vld1q, load, all_float, none)
adff073b 188DEF_MVE_FUNCTION (vmaxnmaq, binary, all_float, m_or_none)
400453c3 189DEF_MVE_FUNCTION (vmaxnmavq, binary_maxvminv, all_float, p_or_none)
9c4fea24 190DEF_MVE_FUNCTION (vmaxnmq, binary, all_float, mx_or_none)
400453c3 191DEF_MVE_FUNCTION (vmaxnmvq, binary_maxvminv, all_float, p_or_none)
adff073b 192DEF_MVE_FUNCTION (vminnmaq, binary, all_float, m_or_none)
400453c3 193DEF_MVE_FUNCTION (vminnmavq, binary_maxvminv, all_float, p_or_none)
9c4fea24 194DEF_MVE_FUNCTION (vminnmq, binary, all_float, mx_or_none)
400453c3 195DEF_MVE_FUNCTION (vminnmvq, binary_maxvminv, all_float, p_or_none)
1942c5ab 196DEF_MVE_FUNCTION (vmulq, binary_opt_n, all_float, mx_or_none)
c32e1a71 197DEF_MVE_FUNCTION (vnegq, unary, all_float, mx_or_none)
f74588ac 198DEF_MVE_FUNCTION (vorrq, binary_orrq, all_float, mx_or_none)
d607ae03 199DEF_MVE_FUNCTION (vpselq, vpsel, all_float, none)
00d97bf3 200DEF_MVE_FUNCTION (vreinterpretq, unary_convert, reinterpret_float, none)
dd691524
CL
201DEF_MVE_FUNCTION (vrev32q, unary, float16, mx_or_none)
202DEF_MVE_FUNCTION (vrev64q, unary, all_float, mx_or_none)
95908b98
CL
203DEF_MVE_FUNCTION (vrndaq, unary, all_float, mx_or_none)
204DEF_MVE_FUNCTION (vrndmq, unary, all_float, mx_or_none)
205DEF_MVE_FUNCTION (vrndnq, unary, all_float, mx_or_none)
206DEF_MVE_FUNCTION (vrndpq, unary, all_float, mx_or_none)
207DEF_MVE_FUNCTION (vrndq, unary, all_float, mx_or_none)
208DEF_MVE_FUNCTION (vrndxq, unary, all_float, mx_or_none)
4d7647ed 209DEF_MVE_FUNCTION (vst1q, store, all_float, none)
1942c5ab 210DEF_MVE_FUNCTION (vsubq, binary_opt_n, all_float, mx_or_none)
937ac2cd 211DEF_MVE_FUNCTION (vuninitializedq, inherent, all_float, none)
6f59caf1 212#undef REQUIRES_FLOAT