1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
/* ACLE support for Arm MVE (__ARM_FEATURE_MVE intrinsics)
Copyright (C) 2023 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#define REQUIRES_FLOAT false
DEF_MVE_FUNCTION (vabavq, binary_acca_int32, all_integer, p_or_none)
DEF_MVE_FUNCTION (vabdq, binary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vabsq, unary, all_signed, mx_or_none)
DEF_MVE_FUNCTION (vaddlvaq, unary_widen_acc, integer_32, p_or_none)
DEF_MVE_FUNCTION (vaddlvq, unary_acc, integer_32, p_or_none)
DEF_MVE_FUNCTION (vaddq, binary_opt_n, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vaddvaq, unary_int32_acc, all_integer, p_or_none)
DEF_MVE_FUNCTION (vaddvq, unary_int32, all_integer, p_or_none)
DEF_MVE_FUNCTION (vandq, binary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vbrsrq, binary_imm32, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vclsq, unary, all_signed, mx_or_none)
DEF_MVE_FUNCTION (vclzq, unary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vcmpcsq, cmp, all_unsigned, m_or_none)
DEF_MVE_FUNCTION (vcmpeqq, cmp, all_integer, m_or_none)
DEF_MVE_FUNCTION (vcmpgeq, cmp, all_signed, m_or_none)
DEF_MVE_FUNCTION (vcmpgtq, cmp, all_signed, m_or_none)
DEF_MVE_FUNCTION (vcmphiq, cmp, all_unsigned, m_or_none)
DEF_MVE_FUNCTION (vcmpleq, cmp, all_signed, m_or_none)
DEF_MVE_FUNCTION (vcmpltq, cmp, all_signed, m_or_none)
DEF_MVE_FUNCTION (vcmpneq, cmp, all_integer, m_or_none)
DEF_MVE_FUNCTION (vcreateq, create, all_integer_with_64, none)
DEF_MVE_FUNCTION (vdupq, unary_n, all_integer, mx_or_none)
DEF_MVE_FUNCTION (veorq, binary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vhaddq, binary_opt_n, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vhsubq, binary_opt_n, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vmaxaq, binary_maxamina, all_signed, m_or_none)
DEF_MVE_FUNCTION (vmaxavq, binary_maxavminav, all_signed, p_or_none)
DEF_MVE_FUNCTION (vmaxq, binary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vmaxvq, binary_maxvminv, all_integer, p_or_none)
DEF_MVE_FUNCTION (vminaq, binary_maxamina, all_signed, m_or_none)
DEF_MVE_FUNCTION (vminavq, binary_maxavminav, all_signed, p_or_none)
DEF_MVE_FUNCTION (vminq, binary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vminvq, binary_maxvminv, all_integer, p_or_none)
DEF_MVE_FUNCTION (vmladavaq, binary_acca_int32, all_integer, p_or_none)
DEF_MVE_FUNCTION (vmladavaxq, binary_acca_int32, all_signed, p_or_none)
DEF_MVE_FUNCTION (vmladavq, binary_acc_int32, all_integer, p_or_none)
DEF_MVE_FUNCTION (vmladavxq, binary_acc_int32, all_signed, p_or_none)
DEF_MVE_FUNCTION (vmlaldavaq, binary_acca_int64, integer_16_32, p_or_none)
DEF_MVE_FUNCTION (vmlaldavaxq, binary_acca_int64, signed_16_32, p_or_none)
DEF_MVE_FUNCTION (vmlaldavq, binary_acc_int64, integer_16_32, p_or_none)
DEF_MVE_FUNCTION (vmlaldavxq, binary_acc_int64, signed_16_32, p_or_none)
DEF_MVE_FUNCTION (vmlaq, ternary_n, all_integer, m_or_none)
DEF_MVE_FUNCTION (vmlasq, ternary_n, all_integer, m_or_none)
DEF_MVE_FUNCTION (vmlsdavaq, binary_acca_int32, all_signed, p_or_none)
DEF_MVE_FUNCTION (vmlsdavaxq, binary_acca_int32, all_signed, p_or_none)
DEF_MVE_FUNCTION (vmlsdavq, binary_acc_int32, all_integer, p_or_none)
DEF_MVE_FUNCTION (vmlsdavxq, binary_acc_int32, all_signed, p_or_none)
DEF_MVE_FUNCTION (vmlsldavaq, binary_acca_int64, signed_16_32, p_or_none)
DEF_MVE_FUNCTION (vmlsldavaxq, binary_acca_int64, signed_16_32, p_or_none)
DEF_MVE_FUNCTION (vmlsldavq, binary_acc_int64, signed_16_32, p_or_none)
DEF_MVE_FUNCTION (vmlsldavxq, binary_acc_int64, signed_16_32, p_or_none)
DEF_MVE_FUNCTION (vmovlbq, unary_widen, integer_8_16, mx_or_none)
DEF_MVE_FUNCTION (vmovltq, unary_widen, integer_8_16, mx_or_none)
DEF_MVE_FUNCTION (vmovnbq, binary_move_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vmovntq, binary_move_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vmulhq, binary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vmulq, binary_opt_n, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vmvnq, mvn, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vnegq, unary, all_signed, mx_or_none)
DEF_MVE_FUNCTION (vorrq, binary_orrq, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vpselq, vpsel, all_integer_with_64, none)
DEF_MVE_FUNCTION (vqabsq, unary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqaddq, binary_opt_n, all_integer, m_or_none)
DEF_MVE_FUNCTION (vqdmladhq, ternary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqdmladhxq, ternary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqdmlahq, ternary_n, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqdmlashq, ternary_n, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqdmlsdhq, ternary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqdmlsdhxq, ternary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqdmulhq, binary_opt_n, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqdmullbq, binary_widen_opt_n, signed_16_32, m_or_none)
DEF_MVE_FUNCTION (vqdmulltq, binary_widen_opt_n, signed_16_32, m_or_none)
DEF_MVE_FUNCTION (vqmovnbq, binary_move_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vqmovntq, binary_move_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vqmovunbq, binary_move_narrow_unsigned, signed_16_32, m_or_none)
DEF_MVE_FUNCTION (vqmovuntq, binary_move_narrow_unsigned, signed_16_32, m_or_none)
DEF_MVE_FUNCTION (vqnegq, unary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqrdmladhq, ternary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqrdmladhxq, ternary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqrdmlahq, ternary_n, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqrdmlashq, ternary_n, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqrdmlsdhq, ternary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqrdmlsdhxq, ternary, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqrdmulhq, binary_opt_n, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqrshlq, binary_round_lshift, all_integer, m_or_none)
DEF_MVE_FUNCTION (vqrshrnbq, binary_rshift_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vqrshrntq, binary_rshift_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vqrshrunbq, binary_rshift_narrow_unsigned, signed_16_32, m_or_none)
DEF_MVE_FUNCTION (vqrshruntq, binary_rshift_narrow_unsigned, signed_16_32, m_or_none)
DEF_MVE_FUNCTION (vqshlq, binary_lshift, all_integer, m_or_none)
DEF_MVE_FUNCTION (vqshlq, binary_lshift_r, all_integer, m_or_none)
DEF_MVE_FUNCTION (vqshluq, binary_lshift_unsigned, all_signed, m_or_none)
DEF_MVE_FUNCTION (vqshrnbq, binary_rshift_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vqshrntq, binary_rshift_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vqshrunbq, binary_rshift_narrow_unsigned, signed_16_32, m_or_none)
DEF_MVE_FUNCTION (vqshruntq, binary_rshift_narrow_unsigned, signed_16_32, m_or_none)
DEF_MVE_FUNCTION (vqsubq, binary_opt_n, all_integer, m_or_none)
DEF_MVE_FUNCTION (vreinterpretq, unary_convert, reinterpret_integer, none)
DEF_MVE_FUNCTION (vrev16q, unary, integer_8, mx_or_none)
DEF_MVE_FUNCTION (vrev32q, unary, integer_8_16, mx_or_none)
DEF_MVE_FUNCTION (vrev64q, unary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vrhaddq, binary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vrmlaldavhaq, binary_acca_int64, integer_32, p_or_none)
DEF_MVE_FUNCTION (vrmlaldavhaxq, binary_acca_int64, integer_32, p_or_none)
DEF_MVE_FUNCTION (vrmlaldavhq, binary_acc_int64, integer_32, p_or_none)
DEF_MVE_FUNCTION (vrmlaldavhxq, binary_acc_int64, signed_32, p_or_none)
DEF_MVE_FUNCTION (vrmlsldavhaq, binary_acca_int64, integer_32, p_or_none)
DEF_MVE_FUNCTION (vrmlsldavhaxq, binary_acca_int64, integer_32, p_or_none)
DEF_MVE_FUNCTION (vrmlsldavhq, binary_acc_int64, signed_32, p_or_none)
DEF_MVE_FUNCTION (vrmlsldavhxq, binary_acc_int64, signed_32, p_or_none)
DEF_MVE_FUNCTION (vrmulhq, binary, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vrshlq, binary_round_lshift, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vrshrnbq, binary_rshift_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vrshrntq, binary_rshift_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vrshrq, binary_rshift, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vshllbq, binary_widen_n, integer_8_16, mx_or_none)
DEF_MVE_FUNCTION (vshlltq, binary_widen_n, integer_8_16, mx_or_none)
DEF_MVE_FUNCTION (vshlq, binary_lshift, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vshlq, binary_lshift_r, all_integer, m_or_none) // "_r" forms do not support the "x" predicate
DEF_MVE_FUNCTION (vshrnbq, binary_rshift_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vshrntq, binary_rshift_narrow, integer_16_32, m_or_none)
DEF_MVE_FUNCTION (vshrq, binary_rshift, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vsliq, ternary_lshift, all_integer, m_or_none)
DEF_MVE_FUNCTION (vsubq, binary_opt_n, all_integer, mx_or_none)
DEF_MVE_FUNCTION (vuninitializedq, inherent, all_integer_with_64, none)
#undef REQUIRES_FLOAT
#define REQUIRES_FLOAT true
DEF_MVE_FUNCTION (vabdq, binary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vabsq, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vaddq, binary_opt_n, all_float, mx_or_none)
DEF_MVE_FUNCTION (vandq, binary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vbrsrq, binary_imm32, all_float, mx_or_none)
DEF_MVE_FUNCTION (vcmpeqq, cmp, all_float, m_or_none)
DEF_MVE_FUNCTION (vcmpgeq, cmp, all_float, m_or_none)
DEF_MVE_FUNCTION (vcmpgtq, cmp, all_float, m_or_none)
DEF_MVE_FUNCTION (vcmpleq, cmp, all_float, m_or_none)
DEF_MVE_FUNCTION (vcmpltq, cmp, all_float, m_or_none)
DEF_MVE_FUNCTION (vcmpneq, cmp, all_float, m_or_none)
DEF_MVE_FUNCTION (vcreateq, create, all_float, none)
DEF_MVE_FUNCTION (vdupq, unary_n, all_float, mx_or_none)
DEF_MVE_FUNCTION (veorq, binary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vfmaq, ternary_opt_n, all_float, m_or_none)
DEF_MVE_FUNCTION (vfmasq, ternary_n, all_float, m_or_none)
DEF_MVE_FUNCTION (vfmsq, ternary, all_float, m_or_none)
DEF_MVE_FUNCTION (vmaxnmaq, binary, all_float, m_or_none)
DEF_MVE_FUNCTION (vmaxnmavq, binary_maxvminv, all_float, p_or_none)
DEF_MVE_FUNCTION (vmaxnmq, binary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vmaxnmvq, binary_maxvminv, all_float, p_or_none)
DEF_MVE_FUNCTION (vminnmaq, binary, all_float, m_or_none)
DEF_MVE_FUNCTION (vminnmavq, binary_maxvminv, all_float, p_or_none)
DEF_MVE_FUNCTION (vminnmq, binary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vminnmvq, binary_maxvminv, all_float, p_or_none)
DEF_MVE_FUNCTION (vmulq, binary_opt_n, all_float, mx_or_none)
DEF_MVE_FUNCTION (vnegq, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vorrq, binary_orrq, all_float, mx_or_none)
DEF_MVE_FUNCTION (vpselq, vpsel, all_float, none)
DEF_MVE_FUNCTION (vreinterpretq, unary_convert, reinterpret_float, none)
DEF_MVE_FUNCTION (vrev32q, unary, float16, mx_or_none)
DEF_MVE_FUNCTION (vrev64q, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vrndaq, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vrndmq, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vrndnq, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vrndpq, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vrndq, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vrndxq, unary, all_float, mx_or_none)
DEF_MVE_FUNCTION (vsubq, binary_opt_n, all_float, mx_or_none)
DEF_MVE_FUNCTION (vuninitializedq, inherent, all_float, none)
#undef REQUIRES_FLOAT
|