Lines Matching +full:2 +full:- +full:5

1 //===------ SemaHexagon.cpp ------ Hexagon target-specific routines -------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
34 ArgInfo Infos[2]; in CheckHexagonBuiltinArgument()
39 { Hexagon::BI__builtin_circ_ldw, {{ 3, true, 4, 2 }} }, in CheckHexagonBuiltinArgument()
45 { Hexagon::BI__builtin_circ_stw, {{ 3, true, 4, 2 }} }, in CheckHexagonBuiltinArgument()
54 { Hexagon::BI__builtin_HEXAGON_L2_loadri_pci, {{ 1, true, 4, 2 }} }, in CheckHexagonBuiltinArgument()
59 { Hexagon::BI__builtin_HEXAGON_S2_storeri_pci, {{ 1, true, 4, 2 }} }, in CheckHexagonBuiltinArgument()
66 { Hexagon::BI__builtin_HEXAGON_A4_bitspliti, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
69 { Hexagon::BI__builtin_HEXAGON_A4_cround_ri, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
70 { Hexagon::BI__builtin_HEXAGON_A4_round_ri, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
71 { Hexagon::BI__builtin_HEXAGON_A4_round_ri_sat, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
82 { Hexagon::BI__builtin_HEXAGON_C2_muxii, {{ 2, true, 8, 0 }} }, in CheckHexagonBuiltinArgument()
84 { Hexagon::BI__builtin_HEXAGON_F2_dfclass, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
87 { Hexagon::BI__builtin_HEXAGON_F2_sfclass, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
90 { Hexagon::BI__builtin_HEXAGON_M4_mpyri_addi, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
91 { Hexagon::BI__builtin_HEXAGON_M4_mpyri_addr_u2, {{ 1, false, 6, 2 }} }, in CheckHexagonBuiltinArgument()
92 { Hexagon::BI__builtin_HEXAGON_S2_addasl_rrri, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
93 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_p_acc, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
94 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_p_and, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
96 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_p_nac, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
97 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_p_or, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
98 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_p_xacc, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
99 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_r_acc, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
100 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_r_and, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
101 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_r, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
102 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_r_nac, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
103 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_r_or, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
104 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_r_sat, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
105 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_r_xacc, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
107 { Hexagon::BI__builtin_HEXAGON_S2_asl_i_vw, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
108 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_p_acc, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
109 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_p_and, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
111 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_p_nac, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
112 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_p_or, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
116 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_r_acc, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
117 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_r_and, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
118 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_r, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
119 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_r_nac, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
120 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_r_or, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
122 {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
123 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_r_rnd, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
124 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_svw_trun, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
126 { Hexagon::BI__builtin_HEXAGON_S2_asr_i_vw, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
127 { Hexagon::BI__builtin_HEXAGON_S2_clrbit_i, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
128 { Hexagon::BI__builtin_HEXAGON_S2_extractu, {{ 1, false, 5, 0 }, in CheckHexagonBuiltinArgument()
129 { 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
131 { 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
132 { Hexagon::BI__builtin_HEXAGON_S2_insert, {{ 2, false, 5, 0 }, in CheckHexagonBuiltinArgument()
133 { 3, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
134 { Hexagon::BI__builtin_HEXAGON_S2_insertp, {{ 2, false, 6, 0 }, in CheckHexagonBuiltinArgument()
136 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_p_acc, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
137 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_p_and, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
139 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_p_nac, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
140 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_p_or, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
141 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_p_xacc, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
142 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_r_acc, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
143 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_r_and, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
144 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_r, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
145 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_r_nac, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
146 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_r_or, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
147 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_r_xacc, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
149 { Hexagon::BI__builtin_HEXAGON_S2_lsr_i_vw, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
150 { Hexagon::BI__builtin_HEXAGON_S2_setbit_i, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
152 {{ 2, false, 4, 0 }, in CheckHexagonBuiltinArgument()
153 { 3, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
155 {{ 2, false, 4, 0 }, in CheckHexagonBuiltinArgument()
156 { 3, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
158 {{ 2, false, 4, 0 }, in CheckHexagonBuiltinArgument()
159 { 3, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
161 {{ 2, false, 4, 0 }, in CheckHexagonBuiltinArgument()
162 { 3, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
163 { Hexagon::BI__builtin_HEXAGON_S2_togglebit_i, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
164 { Hexagon::BI__builtin_HEXAGON_S2_tstbit_i, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
165 { Hexagon::BI__builtin_HEXAGON_S2_valignib, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
166 { Hexagon::BI__builtin_HEXAGON_S2_vspliceib, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
167 { Hexagon::BI__builtin_HEXAGON_S4_addi_asl_ri, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
168 { Hexagon::BI__builtin_HEXAGON_S4_addi_lsr_ri, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
169 { Hexagon::BI__builtin_HEXAGON_S4_andi_asl_ri, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
170 { Hexagon::BI__builtin_HEXAGON_S4_andi_lsr_ri, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
173 { Hexagon::BI__builtin_HEXAGON_S4_extract, {{ 1, false, 5, 0 }, in CheckHexagonBuiltinArgument()
174 { 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
176 { 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
178 { Hexagon::BI__builtin_HEXAGON_S4_ntstbit_i, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
179 { Hexagon::BI__builtin_HEXAGON_S4_ori_asl_ri, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
180 { Hexagon::BI__builtin_HEXAGON_S4_ori_lsr_ri, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
181 { Hexagon::BI__builtin_HEXAGON_S4_subi_asl_ri, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
182 { Hexagon::BI__builtin_HEXAGON_S4_subi_lsr_ri, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
183 { Hexagon::BI__builtin_HEXAGON_S4_vrcrotate_acc, {{ 3, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
184 { Hexagon::BI__builtin_HEXAGON_S4_vrcrotate, {{ 2, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
191 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_p_acc, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
192 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_p_and, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
193 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_p_nac, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
194 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_p_or, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
195 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_p_xacc, {{ 2, false, 6, 0 }} }, in CheckHexagonBuiltinArgument()
196 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_r, {{ 1, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
197 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_r_acc, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
198 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_r_and, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
199 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_r_nac, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
200 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_r_or, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
201 { Hexagon::BI__builtin_HEXAGON_S6_rol_i_r_xacc, {{ 2, false, 5, 0 }} }, in CheckHexagonBuiltinArgument()
202 { Hexagon::BI__builtin_HEXAGON_V6_valignbi, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
203 { Hexagon::BI__builtin_HEXAGON_V6_valignbi_128B, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
204 { Hexagon::BI__builtin_HEXAGON_V6_vlalignbi, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
205 { Hexagon::BI__builtin_HEXAGON_V6_vlalignbi_128B, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
206 { Hexagon::BI__builtin_HEXAGON_V6_vrmpybusi, {{ 2, false, 1, 0 }} }, in CheckHexagonBuiltinArgument()
207 { Hexagon::BI__builtin_HEXAGON_V6_vrmpybusi_128B, {{ 2, false, 1, 0 }} }, in CheckHexagonBuiltinArgument()
211 { Hexagon::BI__builtin_HEXAGON_V6_vrmpyubi, {{ 2, false, 1, 0 }} }, in CheckHexagonBuiltinArgument()
212 { Hexagon::BI__builtin_HEXAGON_V6_vrmpyubi_128B, {{ 2, false, 1, 0 }} }, in CheckHexagonBuiltinArgument()
216 { Hexagon::BI__builtin_HEXAGON_V6_vrsadubi, {{ 2, false, 1, 0 }} }, in CheckHexagonBuiltinArgument()
217 { Hexagon::BI__builtin_HEXAGON_V6_vrsadubi_128B, {{ 2, false, 1, 0 }} }, in CheckHexagonBuiltinArgument()
222 { Hexagon::BI__builtin_HEXAGON_V6_v6mpyhubs10, {{ 2, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
224 {{ 2, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
226 {{ 3, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
228 {{ 3, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
229 { Hexagon::BI__builtin_HEXAGON_V6_v6mpyvubs10, {{ 2, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
231 {{ 2, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
233 {{ 3, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
235 {{ 3, false, 2, 0 }} }, in CheckHexagonBuiltinArgument()
236 { Hexagon::BI__builtin_HEXAGON_V6_vlutvvbi, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
237 { Hexagon::BI__builtin_HEXAGON_V6_vlutvvbi_128B, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
241 { Hexagon::BI__builtin_HEXAGON_V6_vlutvwhi, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
242 { Hexagon::BI__builtin_HEXAGON_V6_vlutvwhi_128B, {{ 2, false, 3, 0 }} }, in CheckHexagonBuiltinArgument()
260 if (F == std::end(Infos) || F->BuiltinID != BuiltinID) in CheckHexagonBuiltinArgument()
265 for (const ArgInfo &A : F->Infos) { in CheckHexagonBuiltinArgument()
270 int32_t Min = A.IsSigned ? -(1 << (A.BitWidth - 1)) : 0; in CheckHexagonBuiltinArgument()
271 int32_t Max = (1 << (A.IsSigned ? A.BitWidth - 1 : A.BitWidth)) - 1; in CheckHexagonBuiltinArgument()