]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / ChangeLog
1 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
2
3 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
4 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
5 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
6 NOT (BITREVERSE x) as BITREVERSE (NOT x).
7 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
8 Optimize PARITY (BITREVERSE x) as PARITY x.
9 Optimize BITREVERSE (BITREVERSE x) as x.
10 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
11 BITREVERSE of a constant integer at compile-time.
12 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
13 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
14 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
15 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
16 Optimize COPYSIGN (x, ABS y) as ABS x.
17 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
18 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
19 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
20 arguments at compile-time.
21
22 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
23
24 * rtl.h (function_invariant_p): Change return type from int to bool.
25 * reload1.cc (function_invariant_p): Change return type from
26 int to bool and adjust function body accordingly.
27
28 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
29
30 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
31 (*single_<optab>mult_plus<mode>): Ditto.
32 (*double_<optab>mult_plus<mode>): Ditto.
33 (*sign_zero_extend_fma): Ditto.
34 (*zero_sign_extend_fma): Ditto.
35 * config/riscv/riscv-protos.h (enum insn_type): New enum.
36
37 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
38 Tobias Burnus <tobias@codesourcery.com>
39
40 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
41 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
42 set.
43 (omp_get_attachment): Handle map clauses with 'present' modifier.
44 (omp_group_base): Likewise.
45 (gimplify_scan_omp_clauses): Reorder present maps to come first.
46 Set GOVD flags for present defaultmaps.
47 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
48 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
49 clauses.
50 (lower_omp_target): Handle map clauses with 'present' modifier.
51 Handle 'to' and 'from' clauses with 'present'.
52 * tree-core.h (enum omp_clause_defaultmap_kind): Add
53 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
54 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
55 'from' clauses with 'present' modifier. Handle present defaultmap.
56 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
57
58 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
59
60 * config/rs6000/genfusion.pl: Delete some dead code.
61
62 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
63
64 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
65 split out from...
66 (gen_ld_cmpi_p10): ... this.
67
68 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
69
70 PR target/106907
71 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
72 duplicate expression.
73
74 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
75
76 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
77 Handle unsigned reduc_plus_scal_ builtins.
78 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
79 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
80 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
81 __builtin_aarch64_reduc_plus_scal_v2di.
82 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
83
84 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
85
86 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
87 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
88 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
89
90 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
91
92 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
93 (aarch64_shrn<mode>_insn_be): Delete.
94 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
95 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
96 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
97 (aarch64_rshrn<mode>_insn_le): Delete.
98 (aarch64_rshrn<mode>_insn_be): Delete.
99 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
100 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
101
102 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
103
104 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
105 Define prototype.
106 (aarch64_pars_overlap_p): Likewise.
107 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
108 Express in terms of UNSPEC_ADDV.
109 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
110 (*aarch64_<su>addlv<mode>_reduction): Define.
111 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
112 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
113 (aarch64_pars_overlap_p): Likewise.
114 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
115 (VQUADW): New mode attribute.
116 (VWIDE2X_S): Likewise.
117 (USADDLV): Delete.
118 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
119 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
120
121 2023-06-06 Richard Biener <rguenther@suse.de>
122
123 PR middle-end/110055
124 * gimplify.cc (gimplify_target_expr): Do not emit
125 CLOBBERs for variables which have static storage duration
126 after gimplifying their initializers.
127
128 2023-06-06 Richard Biener <rguenther@suse.de>
129
130 PR tree-optimization/109143
131 * tree-ssa-structalias.cc (solution_set_expand): Avoid
132 one bitmap iteration and optimize bit range setting.
133
134 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
135
136 PR bootstrap/110120
137 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
138 XVECEXP, not XEXP, to access first item of a PARALLEL.
139
140 2023-06-06 Pan Li <pan2.li@intel.com>
141
142 * config/riscv/riscv-vector-builtins-types.def
143 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
144 (vfloat16mf2_t): Likewise.
145 (vfloat16m1_t): Likewise.
146 (vfloat16m2_t): Likewise.
147 (vfloat16m4_t): Likewise.
148 (vfloat16m8_t): Likewise.
149 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
150 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
151
152 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
153
154 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
155 for cfi reg/mem machmode
156 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
157
158 2023-06-06 Li Xu <xuli1@eswincomputing.com>
159
160 * config/riscv/vector-iterators.md:
161 Fix 'REQUIREMENT' for machine_mode 'MODE'.
162 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
163 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
164 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
165
166 2023-06-06 Pan Li <pan2.li@intel.com>
167
168 * config/riscv/vector-iterators.md: Fix typo in mode attr.
169
170 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
171 Joel Hutton <joel.hutton@arm.com>
172
173 * doc/generic.texi: Remove old tree codes.
174 * expr.cc (expand_expr_real_2): Remove old tree code cases.
175 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
176 * optabs-tree.cc (optab_for_tree_code): Likewise.
177 (supportable_half_widening_operation): Likewise.
178 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
179 * tree-inline.cc (estimate_operator_cost): Likewise.
180 (op_symbol_code): Likewise.
181 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
182 (vect_analyze_data_ref_accesses): Likewise.
183 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
184 * cfgexpand.cc (expand_debug_expr): Likewise.
185 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
186 (supportable_widening_operation): Likewise.
187 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
188 Likewise.
189 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
190 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
191 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
192 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
193 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
194 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
195 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
196 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
197
198 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
199 Joel Hutton <joel.hutton@arm.com>
200 Tamar Christina <tamar.christina@arm.com>
201
202 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
203 this ...
204 (vec_widen_<su>add_lo_<mode>): ... to this.
205 (vec_widen_<su>addl_hi_<mode>): Rename this ...
206 (vec_widen_<su>add_hi_<mode>): ... to this.
207 (vec_widen_<su>subl_lo_<mode>): Rename this ...
208 (vec_widen_<su>sub_lo_<mode>): ... to this.
209 (vec_widen_<su>subl_hi_<mode>): Rename this ...
210 (vec_widen_<su>sub_hi_<mode>): ...to this.
211 * doc/generic.texi: Document new IFN codes.
212 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
213 (commutative_binary_fn_p): Add widen_plus fn's.
214 (widening_fn_p): New function.
215 (narrowing_fn_p): New function.
216 (direct_internal_fn_optab): Change visibility.
217 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
218 internal_fn that expands into multiple internal_fns for widening.
219 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
220 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
221 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
222 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
223 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
224 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
225 (lookup_hilo_internal_fn): Likewise.
226 (widening_fn_p): Likewise.
227 (Narrowing_fn_p): Likewise.
228 * optabs.cc (commutative_optab_p): Add widening plus optabs.
229 * optabs.def (OPTAB_D): Define widen add, sub optabs.
230 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
231 patterns with a hi/lo or even/odd split.
232 (vect_recog_sad_pattern): Refactor to use new IFN codes.
233 (vect_recog_widen_plus_pattern): Likewise.
234 (vect_recog_widen_minus_pattern): Likewise.
235 (vect_recog_average_pattern): Likewise.
236 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
237 _HILO IFNs.
238 (supportable_widening_operation): Likewise.
239 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
240
241 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
242 Joel Hutton <joel.hutton@arm.com>
243
244 * tree-vect-patterns.cc: Add include for gimple-iterator.
245 (vect_recog_widen_op_pattern): Refactor to use code_helper.
246 (vect_gimple_build): New function.
247 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
248 code_helper.
249 (vectorizable_call): Likewise.
250 (vect_gen_widened_results_half): Likewise.
251 (vect_create_vectorized_demotion_stmts): Likewise.
252 (vect_create_vectorized_promotion_stmts): Likewise.
253 (vect_create_half_widening_stmts): Likewise.
254 (vectorizable_conversion): Likewise.
255 (supportable_widening_operation): Likewise.
256 (supportable_narrowing_operation): Likewise.
257 * tree-vectorizer.h (supportable_widening_operation): Change
258 prototype to use code_helper.
259 (supportable_narrowing_operation): Likewise.
260 (vect_gimple_build): New function prototype.
261 * tree.h (code_helper::safe_as_tree_code): New function.
262 (code_helper::safe_as_fn_code): New function.
263
264 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
265
266 * wide-int.cc (wi::bitreverse_large): New function implementing
267 bit reversal of an integer.
268 * wide-int.h (wi::bitreverse): New (template) function prototype.
269 (bitreverse_large): Prototype helper function/implementation.
270 (wi::bitreverse): New template wrapper around bitreverse_large.
271
272 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
273
274 * rtl.h (print_rtl_single): Change return type from int to void.
275 (print_rtl_single_with_indent): Ditto.
276 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
277 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
278 (rtx_writer::print_rtx_operand_code_0): Ditto.
279 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
280 (rtx_writer::print_rtx_operand_code_i): Ditto.
281 (rtx_writer::print_rtx_operand_code_u): Ditto.
282 (rtx_writer::print_rtx_operand): Ditto.
283 (rtx_writer::print_rtx): Ditto.
284 (rtx_writer::finish_directive): Ditto.
285 (print_rtl_single): Change return type from int to void
286 and adjust function body accordingly.
287 (rtx_writer::print_rtl_single_with_indent): Ditto.
288
289 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
290
291 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
292 (reg_class_subset_p): Ditto.
293 * reginfo.cc (reg_classes_intersect_p): Ditto.
294 (reg_class_subset_p): Ditto.
295
296 2023-06-05 Pan Li <pan2.li@intel.com>
297
298 * config/riscv/riscv-vector-builtins-types.def
299 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
300 (vfloat32m1_t): Ditto.
301 (vfloat32m2_t): Ditto.
302 (vfloat32m4_t): Ditto.
303 (vfloat32m8_t): Ditto.
304 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
305 (vint16mf2_t): Ditto.
306 (vint16m1_t): Ditto.
307 (vint16m2_t): Ditto.
308 (vint16m4_t): Ditto.
309 (vint16m8_t): Ditto.
310 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
311 (vuint16mf2_t): Ditto.
312 (vuint16m1_t): Ditto.
313 (vuint16m2_t): Ditto.
314 (vuint16m4_t): Ditto.
315 (vuint16m8_t): Ditto.
316 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
317 (vint32m1_t): Ditto.
318 (vint32m2_t): Ditto.
319 (vint32m4_t): Ditto.
320 (vint32m8_t): Ditto.
321 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
322 (vuint32m1_t): Ditto.
323 (vuint32m2_t): Ditto.
324 (vuint32m4_t): Ditto.
325 (vuint32m8_t): Ditto.
326 * config/riscv/vector-iterators.md: Add FP=16 support for V,
327 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
328
329 2023-06-05 Andrew Pinski <apinski@marvell.com>
330
331 PR bootstrap/110085
332 * Makefile.in (clean): Remove the removing of
333 MULTILIB_DIR/MULTILIB_OPTIONS directories.
334
335 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
336
337 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
338 prototype.
339 * config/mips/mips.cc (speculation_barrier_libfunc): New static
340 variable.
341 (mips_init_libfuncs): Initialize it.
342 (mips_emit_speculation_barrier): New function.
343 * config/mips/mips.md (speculation_barrier): Call
344 mips_emit_speculation_barrier.
345
346 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
347
348 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
349 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
350 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
351 (rvv_builder::get_merged_repeating_sequence): Ditto.
352 (rvv_builder::get_merge_scalar_mask): Ditto.
353 (emit_scalar_move_insn): Ditto.
354 (emit_vlmax_integer_move_insn): Ditto.
355 (emit_nonvlmax_integer_move_insn): Ditto.
356 (emit_vlmax_gather_insn): Ditto.
357 (emit_vlmax_masked_gather_mu_insn): Ditto.
358 (get_repeating_sequence_dup_machine_mode): Ditto.
359
360 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
361
362 * config/riscv/autovec.md: Split arguments.
363 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
364 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
365
366 2023-06-04 Andrew Pinski <apinski@marvell.com>
367
368 * expr.cc (do_store_flag): Improve for single bit testing
369 not against zero but against that single bit.
370
371 2023-06-04 Andrew Pinski <apinski@marvell.com>
372
373 * expr.cc (do_store_flag): Extend the one bit checking case
374 to handle the case where we don't have an and but rather still
375 one bit is known to be non-zero.
376
377 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
378
379 * config/h8300/constraints.md (Zz): Make this a normal
380 constraint.
381 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
382 * config/h8300/logical.md (H8/SX bit patterns): Remove.
383
384 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
385
386 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
387 New insn_and_split patterns.
388
389 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
390
391 PR target/110109
392 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
393 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
394 (@vlmul_extx4<mode>): Ditto.
395 (@vlmul_extx8<mode>): Ditto.
396 (@vlmul_extx16<mode>): Ditto.
397 (@vlmul_extx32<mode>): Ditto.
398 (@vlmul_extx64<mode>): Ditto.
399 (*vlmul_extx2<mode>): Ditto.
400 (*vlmul_extx4<mode>): Ditto.
401 (*vlmul_extx8<mode>): Ditto.
402 (*vlmul_extx16<mode>): Ditto.
403 (*vlmul_extx32<mode>): Ditto.
404 (*vlmul_extx64<mode>): Ditto.
405
406 2023-06-04 Pan Li <pan2.li@intel.com>
407
408 * config/riscv/riscv-vector-builtins-types.def
409 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
410 (vfloat32m1_t): Likewise.
411 (vfloat32m2_t): Likewise.
412 (vfloat32m4_t): Likewise.
413 (vfloat32m8_t): Likewise.
414 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
415 * config/riscv/vector-iterators.md: Add single to half machine
416 mode conversion.
417
418 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
419
420 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
421 (*n<optab><mode>): Ditto.
422 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
423 (*n<optab><mode>): Ditto.
424 * config/riscv/vector.md: Ditto.
425
426 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
427
428 PR target/110083
429 * config/i386/i386-features.cc (scalar_chain::convert_compare):
430 Update or delete REG_EQUAL notes, converting CONST_INT and
431 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
432
433 2023-06-04 Jason Merrill <jason@redhat.com>
434
435 PR c++/97720
436 * tree-eh.cc (lower_resx): Pass the exception pointer to the
437 failure_decl.
438 * except.h: Tweak comment.
439
440 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
441
442 * postreload.cc (move2add_use_add2_insn): Handle
443 trivial single_sets. Rename variable PAT to SET.
444 (move2add_use_add3_insn, reload_cse_move2add): Similar.
445
446 2023-06-04 Pan Li <pan2.li@intel.com>
447
448 * config/riscv/riscv-vector-builtins-types.def
449 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
450 (vfloat16mf2_t): Likewise.
451 (vfloat16m1_t): Likewise.
452 (vfloat16m2_t): Likewise.
453 (vfloat16m4_t): Likewise.
454 (vfloat16m8_t): Likewise.
455 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
456 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
457 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
458 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
459 vlmul and ratio.
460
461 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
462
463 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
464 correct offset.
465
466 2023-06-03 Die Li <lidie@eswincomputing.com>
467
468 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
469
470 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
471
472 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
473
474 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
475
476 * config/riscv/vector.md: Add vector-opt.md.
477 * config/riscv/autovec-opt.md: New file.
478
479 2023-06-03 liuhongt <hongtao.liu@intel.com>
480
481 PR tree-optimization/110067
482 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
483 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
484
485 2023-06-03 liuhongt <hongtao.liu@intel.com>
486
487 PR target/92658
488 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
489 (truncv2si<mode>2): Ditto.
490
491 2023-06-02 Andrew Pinski <apinski@marvell.com>
492
493 PR rtl-optimization/102733
494 * dse.cc (store_info): Add addrspace field.
495 (record_store): Record the address space
496 and check to make sure they are the same.
497
498 2023-06-02 Andrew Pinski <apinski@marvell.com>
499
500 PR rtl-optimization/110042
501 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
502 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
503
504 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
505
506 PR target/110044
507 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
508 Make sure that we do not have a cap on field alignment before altering
509 the struct layout based on the type alignment of the first entry.
510
511 2023-06-02 David Faust <david.faust@oracle.com>
512
513 PR debug/110073
514 * btfout.cc (btf_absolute_func_id): New function.
515 (btf_asm_func_type): Call it here. Change index parameter from
516 size_t to ctf_id_t. Use PRIu64 formatter.
517
518 2023-06-02 Alex Coplan <alex.coplan@arm.com>
519
520 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
521 (btf_asm_datasec_type): Likewise.
522
523 2023-06-02 Carl Love <cel@us.ibm.com>
524
525 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
526 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
527
528 2023-06-02 Jason Merrill <jason@redhat.com>
529
530 PR c++/110070
531 PR c++/105838
532 * tree.h (DECL_MERGEABLE): New.
533 * tree-core.h (struct tree_decl_common): Mention it.
534 * gimplify.cc (gimplify_init_constructor): Check it.
535 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
536 * varasm.cc (categorize_decl_for_section): Likewise.
537
538 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
539
540 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
541 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
542 (stack_regs_mentioned_p): Change return type from int to bool
543 and adjust function body accordingly.
544 (stack_regs_mentioned): Ditto.
545 (check_asm_stack_operands): Ditto. Change "malformed_asm"
546 variable to bool.
547 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
548 (swap_rtx_condition_1): Change return type from int to bool
549 and adjust function body accordingly. Change "r" variable to bool.
550 (swap_rtx_condition): Change return type from int to bool
551 and adjust function body accordingly.
552 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
553 (subst_stack_regs): Ditto.
554 (convert_regs_entry): Change return type from int to bool and adjust
555 function body accordingly. Change "inserted" variable to bool.
556 (convert_regs_1): Recode handling of control_flow_insn_deleted.
557 (convert_regs_2): Recode handling of cfg_altered.
558 (convert_regs): Ditto. Change "inserted" variable to bool.
559
560 2023-06-02 Jason Merrill <jason@redhat.com>
561
562 PR c++/95226
563 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
564 (initializer_constant_valid_p_1): Compare float precision.
565
566 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
567
568 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
569 semantics.
570
571 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
572
573 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
574 (vect_set_loop_condition_partial_vectors): Ditto.
575
576 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
577
578 PR target/110088
579 * config/avr/avr.md: Add an RTL peephole to optimize operations on
580 non-LD_REGS after a move from LD_REGS.
581 (piaop): New code iterator.
582
583 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
584
585 PR testsuite/66005
586 * doc/install.texi: Document (optional) Perl usage for parallel
587 testing of libgomp.
588
589 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
590
591 PR bootstrap/82856
592 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
593 later)".
594
595 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
596 KuanLin Chen <best124612@gmail.com>
597
598 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
599 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
600
601 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
602
603 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
604
605 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
606
607 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
608
609 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
610
611 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
612 __RISCV_ prefix.
613 (DEF_RVV_FRM_ENUM): Ditto.
614
615 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
616
617 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
618 intrinsic API expander
619 * config/riscv/vector.md
620 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
621 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
622 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
623
624 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
625
626 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
627 * config/riscv/predicates.md (vector_perm_operand): New predicate.
628 * config/riscv/riscv-protos.h (enum insn_type): New enum.
629 (expand_vec_perm): New function.
630 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
631 (gen_const_vector_dup): Ditto.
632 (emit_vlmax_gather_insn): Ditto.
633 (emit_vlmax_masked_gather_mu_insn): Ditto.
634 (expand_vec_perm): Ditto.
635
636 2023-06-01 Jason Merrill <jason@redhat.com>
637
638 * doc/invoke.texi (-Wpedantic): Improve clarity.
639
640 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
641
642 * rtl.h (exp_equiv_p): Change return type from int to bool.
643 * cse.cc (mention_regs): Change return type from int to bool
644 and adjust function body accordingly.
645 (exp_equiv_p): Ditto.
646 (insert_regs): Ditto. Change "modified" function argument to bool
647 and update usage accordingly.
648 (record_jump_cond): Remove always zero "reversed_nonequality"
649 function argument and update usage accordingly.
650 (fold_rtx): Change "changed" variable to bool.
651 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
652 (is_dead_reg): Change return type from int to bool.
653
654 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
655
656 * config/xtensa/xtensa.md (adddi3, subdi3):
657 New RTL generation patterns implemented according to the instruc-
658 tion idioms described in the Xtensa ISA reference manual (p. 600).
659
660 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
661 Uros Bizjak <ubizjak@gmail.com>
662
663 PR target/109973
664 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
665 CODE_for_sse4_1_ptestzv2di.
666 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
667 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
668 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
669 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
670 when expanding UNSPEC_PTEST to compare against zero.
671 * config/i386/i386-features.cc (scalar_chain::convert_compare):
672 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
673 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
674 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
675 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
676 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
677 check for suitable matching modes for the UNSPEC_PTEST pattern.
678 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
679 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
680 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
681 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
682 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
683 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
684 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
685 current behavior.
686 (*ptest<mode>_and): Specify CCZ to only perform this optimization
687 when only the Z flag is required.
688
689 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
690
691 PR target/109954
692 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
693
694 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
695
696 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
697 Add =r,m and =r,m alternatives.
698 (load_pair<DREG:mode><DREG2:mode>): Likewise.
699 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
700
701 2023-06-01 Pan Li <pan2.li@intel.com>
702
703 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
704 and zvfh.
705 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
706 (main): Disable FP16 tuple.
707 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
708 (TARGET_VECTOR_ELEN_FP_16): Ditto.
709 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
710 Add FP16.
711 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
712 (vfloat16mf2_t): Ditto.
713 (vfloat16m1_t): Ditto.
714 (vfloat16m2_t): Ditto.
715 (vfloat16m4_t): Ditto.
716 (vfloat16m8_t): Ditto.
717 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
718 New macro.
719 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
720 machine mode based on TARGET_VECTOR_ELEN_FP_16.
721
722 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
723
724 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
725 (DEF_RVV_FRM_ENUM): New macro.
726 (handle_pragma_vector): Add FRM enum
727 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
728 (RNE): Ditto.
729 (RTZ): Ditto.
730 (RDN): Ditto.
731 (RUP): Ditto.
732 (RMM): Ditto.
733
734 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
735 Richard Sandiford <richard.sandiford@arm.com>
736
737 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
738 Update call to wi::bswap.
739 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
740 Update call to wi::bswap.
741 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
742 Update calls to wi::bswap.
743 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
744 (wi::bswap_large): New function, with revised API.
745 * wide-int.h (wi::bswap): New (template) function prototype.
746 (wide_int_storage::bswap): Remove method.
747 (sext_large, zext_large): Consistent indentation/line wrapping.
748 (bswap_large): Prototype helper function containing implementation.
749 (wi::bswap): New template wrapper around bswap_large.
750
751 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
752
753 PR target/99195
754 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
755 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
756 (usdot_prod<vsi2qi>): Rename to...
757 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
758 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
759 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
760 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
761 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
762 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
763 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
764 ... This.
765
766 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
767
768 PR target/99195
769 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
770 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
771 (aarch64_sq<r>dmulh_n<mode>): Rename to...
772 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
773 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
774 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
775 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
776 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
777 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
778 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
779 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
780 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
781 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
782 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
783
784 2023-05-31 David Faust <david.faust@oracle.com>
785
786 * btfout.cc (btf_kind_names): New.
787 (btf_kind_name): New.
788 (btf_absolute_var_id): New utility function.
789 (btf_relative_var_id): Likewise.
790 (btf_relative_func_id): Likewise.
791 (btf_absolute_datasec_id): Likewise.
792 (btf_asm_type_ref): New.
793 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
794 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
795 (btf_asm_varent): Likewise.
796 (btf_asm_func_arg): Likewise.
797 (btf_asm_datasec_entry): Likewise.
798 (btf_asm_datasec_type): Likewise.
799 (btf_asm_func_type): Likewise. Add index parameter.
800 (btf_asm_enum_const): Likewise.
801 (btf_asm_sou_member): Likewise.
802 (output_btf_vars): Update btf_asm_* call accordingly.
803 (output_asm_btf_sou_fields): Likewise.
804 (output_asm_btf_enum_list): Likewise.
805 (output_asm_btf_func_args_list): Likewise.
806 (output_asm_btf_vlen_bytes): Likewise.
807 (output_btf_func_types): Add ctf_container_ref parameter.
808 Pass it to btf_asm_func_type.
809 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
810 (btf_output): Update output_btf_func_types call similarly.
811
812 2023-05-31 David Faust <david.faust@oracle.com>
813
814 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
815 and BTF_KIND_FWD which do not use the size/type field at all.
816
817 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
818
819 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
820 (active_insn_p): Ditto.
821 (in_sequence_p): Ditto.
822 (unshare_all_rtl): Change return type from int to void.
823 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
824 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
825 and adjust function body accordingly.
826 (mem_expr_equal_p): Ditto.
827 (unshare_all_rtl): Change return type from int to void
828 and adjust function body accordingly.
829 (verify_rtx_sharing): Remove unneeded return.
830 (active_insn_p): Change return type from int to bool
831 and adjust function body accordingly.
832 (in_sequence_p): Ditto.
833
834 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
835
836 * rtl.h (true_dependence): Change return type from int to bool.
837 (canon_true_dependence): Ditto.
838 (read_dependence): Ditto.
839 (anti_dependence): Ditto.
840 (canon_anti_dependence): Ditto.
841 (output_dependence): Ditto.
842 (canon_output_dependence): Ditto.
843 (may_alias_p): Ditto.
844 * alias.h (alias_sets_conflict_p): Ditto.
845 (alias_sets_must_conflict_p): Ditto.
846 (objects_must_conflict_p): Ditto.
847 (nonoverlapping_memrefs_p): Ditto.
848 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
849 (record_set): Ditto.
850 (base_alias_check): Ditto.
851 (find_base_value): Ditto.
852 (mems_in_disjoint_alias_sets_p): Ditto.
853 (get_alias_set_entry): Ditto.
854 (decl_for_component_ref): Ditto.
855 (write_dependence_p): Ditto.
856 (memory_modified_1): Ditto.
857 (mems_in_disjoint_alias_set_p): Change return type from int to bool
858 and adjust function body accordingly.
859 (alias_sets_conflict_p): Ditto.
860 (alias_sets_must_conflict_p): Ditto.
861 (objects_must_conflict_p): Ditto.
862 (rtx_equal_for_memref_p): Ditto.
863 (base_alias_check): Ditto.
864 (read_dependence): Ditto.
865 (nonoverlapping_memrefs_p): Ditto.
866 (true_dependence_1): Ditto.
867 (true_dependence): Ditto.
868 (canon_true_dependence): Ditto.
869 (write_dependence_p): Ditto.
870 (anti_dependence): Ditto.
871 (canon_anti_dependence): Ditto.
872 (output_dependence): Ditto.
873 (canon_output_dependence): Ditto.
874 (may_alias_p): Ditto.
875 (init_alias_analysis): Change "changed" variable to bool.
876
877 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
878
879 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
880 expand into define_insn_and_split.
881
882 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
883
884 * config/riscv/vector.md: Remove FRM.
885
886 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
887
888 * config/riscv/vector.md: Remove FRM.
889
890 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
891
892 * config/riscv/vector.md: Remove FRM.
893
894 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
895
896 PR target/110039
897 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
898 pattern.
899
900 2023-05-31 Richard Biener <rguenther@suse.de>
901
902 PR ipa/109983
903 PR tree-optimization/109143
904 * tree-ssa-structalias.cc (struct topo_info): Remove.
905 (init_topo_info): Likewise.
906 (free_topo_info): Likewise.
907 (compute_topo_order): Simplify API, put the component
908 with ESCAPED last so it's processed first.
909 (topo_visit): Adjust.
910 (solve_graph): Likewise.
911
912 2023-05-31 Richard Biener <rguenther@suse.de>
913
914 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
915 New.
916 (add_graph_edge): Count redundant edges we avoid to create.
917 (dump_sa_stats): Dump them.
918 (ipa_pta_execute): Do not dump generating constraints when
919 we are not dumping them.
920
921 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
922
923 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
924 output template to avoid explicit switch on which_alternative.
925 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
926 (and<mode>3): Likewise.
927 (ior<mode>3): Likewise.
928 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
929
930 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
931
932 * config/xtensa/predicates.md (xtensa_bit_join_operator):
933 New predicate.
934 * config/xtensa/xtensa.md (ior_op): Remove.
935 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
936 insn_and_split pattern of the same name to express and capture
937 the bit-combining operation with both sides swapped.
938 In addition, replace use of code iterator with new operator
939 predicate.
940 (*shlrd_const, *shlrd_per_byte):
941 Likewise regarding the code iterator.
942
943 2023-05-31 Cui, Lili <lili.cui@intel.com>
944
945 PR tree-optimization/110038
946 * params.opt: Add a limit on tree-reassoc-width.
947 * tree-ssa-reassoc.cc
948 (rewrite_expr_tree_parallel): Add width limit.
949
950 2023-05-31 Pan Li <pan2.li@intel.com>
951
952 * common/config/riscv/riscv-common.cc:
953 (riscv_implied_info): Add zvfh item.
954 (riscv_ext_version_table): Ditto.
955 (riscv_ext_flag_table): Ditto.
956 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
957 (TARGET_ZVFH): Ditto.
958
959 2023-05-30 liuhongt <hongtao.liu@intel.com>
960
961 PR tree-optimization/108804
962 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
963 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
964 Add new parameter narrow_src_p.
965 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
966 vectorization by truncating to lower precision.
967 * tree-vectorizer.h (vect_get_range_info): New declare.
968
969 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
970
971 * lra-int.h (lra_update_sp_offset): Add the prototype.
972 * lra.cc (setup_sp_offset): Change the return type. Use
973 lra_update_sp_offset.
974 * lra-eliminations.cc (lra_update_sp_offset): New function.
975 (lra_process_new_insns): Push the current insn to reprocess if the
976 input reload changes sp offset.
977
978 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
979
980 PR target/110041
981 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
982 Fix misleading identation.
983
984 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
985
986 * rtl.h (comparison_dominates_p): Change return type from int to bool.
987 (condjump_p): Ditto.
988 (any_condjump_p): Ditto.
989 (any_uncondjump_p): Ditto.
990 (simplejump_p): Ditto.
991 (returnjump_p): Ditto.
992 (eh_returnjump_p): Ditto.
993 (onlyjump_p): Ditto.
994 (invert_jump_1): Ditto.
995 (invert_jump): Ditto.
996 (rtx_renumbered_equal_p): Ditto.
997 (redirect_jump_1): Ditto.
998 (redirect_jump): Ditto.
999 (condjump_in_parallel_p): Ditto.
1000 * jump.cc (invert_exp_1): Adjust forward declaration.
1001 (comparison_dominates_p): Change return type from int to bool
1002 and adjust function body accordingly.
1003 (simplejump_p): Ditto.
1004 (condjump_p): Ditto.
1005 (condjump_in_parallel_p): Ditto.
1006 (any_uncondjump_p): Ditto.
1007 (any_condjump_p): Ditto.
1008 (returnjump_p): Ditto.
1009 (eh_returnjump_p): Ditto.
1010 (onlyjump_p): Ditto.
1011 (redirect_jump_1): Ditto.
1012 (redirect_jump): Ditto.
1013 (invert_exp_1): Ditto.
1014 (invert_jump_1): Ditto.
1015 (invert_jump): Ditto.
1016 (rtx_renumbered_equal_p): Ditto.
1017
1018 2023-05-30 Andrew Pinski <apinski@marvell.com>
1019
1020 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
1021 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
1022 Add ne as a possible cmp.
1023 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
1024
1025 2023-05-30 Andrew Pinski <apinski@marvell.com>
1026
1027 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
1028 pattern.
1029
1030 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
1031
1032 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
1033 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
1034 (and (extend X) C) as (zero_extend (and X C)), to also optimize
1035 modes wider than HOST_WIDE_INT.
1036
1037 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
1038
1039 PR target/107172
1040 * simplify-rtx.cc (simplify_const_relational_operation): Return
1041 early if we have a MODE_CC comparison that isn't a COMPARE against
1042 const0_rtx.
1043
1044 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
1045
1046 * config/riscv/riscv.cc (riscv_const_insns): Allow
1047 const_vec_duplicates.
1048
1049 2023-05-30 liuhongt <hongtao.liu@intel.com>
1050
1051 PR middle-end/108938
1052 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
1053 function, cut from original find_bswap_or_nop function.
1054 (find_bswap_or_nop): Add a new parameter, detect bswap +
1055 rotate and save rotate result in the new parameter.
1056 (bswap_replace): Add a new parameter to indicate rotate and
1057 generate rotate stmt if needed.
1058 (maybe_optimize_vector_constructor): Adjust for new rotate
1059 parameter in the upper 2 functions.
1060 (pass_optimize_bswap::execute): Ditto.
1061 (imm_store_chain_info::output_merged_store): Ditto.
1062
1063 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1064
1065 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
1066 (aarch64_<su>adalp<mode>): New define_expand.
1067 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
1068 (aarch64_<su>addlp<mode>): Convert to define_expand.
1069 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
1070 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
1071 (ADALP): Likewise.
1072 (USADDLP): Likewise.
1073 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
1074
1075 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1076
1077 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
1078 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
1079 srhadd, urhadd builtin codes for standard optab ones.
1080 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
1081 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
1082 unspec.
1083 (<u>avg<mode>3_ceil): Rename to...
1084 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
1085 unspec.
1086 (aarch64_<su>hsub<mode>): New define_expand.
1087 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
1088 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
1089 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
1090
1091 2023-05-30 Andreas Schwab <schwab@suse.de>
1092
1093 PR target/110036
1094 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
1095 match libsanitizer.
1096
1097 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1098
1099 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
1100 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
1101 Declare prototype.
1102 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
1103 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
1104 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
1105 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
1106 (aarch64_<sra_op>sra_n<mode>): New define_expand.
1107 (aarch64_<sra_op>rsra_n<mode>): Likewise.
1108 (aarch64_<sur>sra_n<mode>): Rename to...
1109 (aarch64_<sur>sra_ndi): ... This.
1110 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
1111 any_target_p argument.
1112 (aarch64_extract_vec_duplicate_wide_int): Define.
1113 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
1114 (aarch64_const_vec_rnd_cst_p): Likewise.
1115 (aarch64_vector_mode_supported_any_target_p): Likewise.
1116 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
1117 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
1118 (VSRA): Adjust for the above.
1119 (sur): Likewise.
1120 (V2XWIDE): New mode_attr.
1121 (vec_or_offset): Likewise.
1122 (SHIFTEXTEND): Likewise.
1123 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
1124 predicate.
1125 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
1126 clarify that it applies to current target options.
1127 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
1128 * doc/tm.texi.in: Regenerate.
1129 * stor-layout.cc (mode_for_vector): Check
1130 vector_mode_supported_any_target_p when iterating through vector modes.
1131 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
1132 clarify that it applies to current target options.
1133 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
1134
1135 2023-05-30 Lili Cui <lili.cui@intel.com>
1136
1137 PR tree-optimization/98350
1138 * tree-ssa-reassoc.cc
1139 (rewrite_expr_tree_parallel): Rewrite this function.
1140 (rank_ops_for_fma): New.
1141 (reassociate_bb): Handle new function.
1142
1143 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
1144
1145 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
1146 (rtx_unstable_p): Ditto.
1147 (reg_mentioned_p): Ditto.
1148 (reg_referenced_p): Ditto.
1149 (reg_used_between_p): Ditto.
1150 (reg_set_between_p): Ditto.
1151 (modified_between_p): Ditto.
1152 (no_labels_between_p): Ditto.
1153 (modified_in_p): Ditto.
1154 (reg_set_p): Ditto.
1155 (multiple_sets): Ditto.
1156 (set_noop_p): Ditto.
1157 (noop_move_p): Ditto.
1158 (reg_overlap_mentioned_p): Ditto.
1159 (dead_or_set_p): Ditto.
1160 (dead_or_set_regno_p): Ditto.
1161 (find_reg_fusage): Ditto.
1162 (find_regno_fusage): Ditto.
1163 (side_effects_p): Ditto.
1164 (volatile_refs_p): Ditto.
1165 (volatile_insn_p): Ditto.
1166 (may_trap_p_1): Ditto.
1167 (may_trap_p): Ditto.
1168 (may_trap_or_fault_p): Ditto.
1169 (computed_jump_p): Ditto.
1170 (auto_inc_p): Ditto.
1171 (loc_mentioned_in_p): Ditto.
1172 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
1173 (rtx_unstable_p): Change return type from int to bool
1174 and adjust function body accordingly.
1175 (rtx_addr_can_trap_p): Ditto.
1176 (reg_mentioned_p): Ditto.
1177 (no_labels_between_p): Ditto.
1178 (reg_used_between_p): Ditto.
1179 (reg_referenced_p): Ditto.
1180 (reg_set_between_p): Ditto.
1181 (reg_set_p): Ditto.
1182 (modified_between_p): Ditto.
1183 (modified_in_p): Ditto.
1184 (multiple_sets): Ditto.
1185 (set_noop_p): Ditto.
1186 (noop_move_p): Ditto.
1187 (reg_overlap_mentioned_p): Ditto.
1188 (dead_or_set_p): Ditto.
1189 (dead_or_set_regno_p): Ditto.
1190 (find_reg_fusage): Ditto.
1191 (find_regno_fusage): Ditto.
1192 (remove_node_from_insn_list): Ditto.
1193 (volatile_insn_p): Ditto.
1194 (volatile_refs_p): Ditto.
1195 (side_effects_p): Ditto.
1196 (may_trap_p_1): Ditto.
1197 (may_trap_p): Ditto.
1198 (may_trap_or_fault_p): Ditto.
1199 (computed_jump_p): Ditto.
1200 (auto_inc_p): Ditto.
1201 (loc_mentioned_in_p): Ditto.
1202 * combine.cc (can_combine_p): Update indirect function.
1203
1204 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1205
1206 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
1207 * config/riscv/iterators.md: New attribute.
1208 * config/riscv/vector-iterators.md: New attribute.
1209
1210 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
1211
1212 * config/riscv/riscv.md: Fix signed and unsigned comparison
1213 warning.
1214
1215 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1216
1217 * config/riscv/autovec.md (fnma<mode>4): New pattern.
1218 (*fnma<mode>): Ditto.
1219
1220 2023-05-29 Die Li <lidie@eswincomputing.com>
1221
1222 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
1223 Delete.
1224 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
1225 process for TARGET_XTHEADCONDMOV
1226
1227 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
1228
1229 PR target/110021
1230 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
1231 TARGET_AVX512BW to generate truncv16hiv16qi2.
1232
1233 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
1234
1235 * config/riscv/riscv.md (and<mode>3): New expander.
1236 (*and<mode>3) New pattern.
1237 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
1238 predicate.
1239
1240 2023-05-29 Pan Li <pan2.li@intel.com>
1241
1242 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
1243 comments and rename local variables.
1244 (emit_nonvlmax_insn): Diito.
1245 (emit_vlmax_merge_insn): Ditto.
1246 (emit_vlmax_cmp_insn): Ditto.
1247 (emit_vlmax_cmp_mu_insn): Ditto.
1248 (emit_scalar_move_insn): Ditto.
1249
1250 2023-05-29 Pan Li <pan2.li@intel.com>
1251
1252 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
1253 magic number.
1254 (emit_nonvlmax_insn): Ditto.
1255 (emit_vlmax_merge_insn): Ditto.
1256 (emit_vlmax_cmp_insn): Ditto.
1257 (emit_vlmax_cmp_mu_insn): Ditto.
1258 (expand_vec_series): Ditto.
1259
1260 2023-05-29 Pan Li <pan2.li@intel.com>
1261
1262 * config/riscv/riscv-protos.h (enum insn_type): New type.
1263 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
1264 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
1265 class member.
1266 (rvv_builder::get_merged_repeating_sequence): Ditto.
1267 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
1268 to evaluate the optimization cost.
1269 (rvv_builder::get_merge_scalar_mask): New function to get the merge
1270 mask.
1271 (emit_scalar_move_insn): New function to emit vmv.s.x.
1272 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
1273 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
1274 vmv.v.x.
1275 (get_repeating_sequence_dup_machine_mode): New function to get the dup
1276 machine mode.
1277 (expand_vector_init_merge_repeating_sequence): New function to perform
1278 the optimization.
1279 (expand_vec_init): Add this vector init optimization.
1280 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
1281
1282 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
1283
1284 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
1285 put onto the increment when it is inserted after the position.
1286
1287 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
1288
1289 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
1290 on constants.
1291
1292 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1293
1294 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
1295
1296 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1297
1298 * config/riscv/autovec.md (fma<mode>4): New pattern.
1299 (*fma<mode>): Ditto.
1300 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1301 (emit_vlmax_ternary_insn): New function.
1302 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
1303
1304 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1305
1306 * config/riscv/vector.md: Fix vimuladd instruction bug.
1307
1308 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1309
1310 * config/riscv/riscv.cc (global_state_unknown_p): New function.
1311 (riscv_mode_after): Fix incorrect VXM.
1312
1313 2023-05-29 Pan Li <pan2.li@intel.com>
1314
1315 * common/config/riscv/riscv-common.cc:
1316 (riscv_implied_info): Add zvfhmin item.
1317 (riscv_ext_version_table): Ditto.
1318 (riscv_ext_flag_table): Ditto.
1319 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
1320 (TARGET_ZFHMIN): Align indent.
1321 (TARGET_ZFH): Ditto.
1322 (TARGET_ZVFHMIN): New macro.
1323
1324 2023-05-27 liuhongt <hongtao.liu@intel.com>
1325
1326 PR target/100711
1327 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
1328 to VI_AVX2 to cover more modes.
1329
1330 2023-05-27 liuhongt <hongtao.liu@intel.com>
1331
1332 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
1333 Remove ATOM and ICELAKE(and later) core processors.
1334
1335 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
1336
1337 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
1338 (abs<mode>2): Add.
1339 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
1340 Declare.
1341 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
1342 function.
1343
1344 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
1345 Juzhe Zhong <juzhe.zhong@rivai.ai>
1346
1347 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
1348 expander.
1349 (<optab><v_quad_trunc><mode>2): Dito.
1350 (<optab><v_oct_trunc><mode>2): Dito.
1351 (trunc<mode><v_double_trunc>2): Dito.
1352 (trunc<mode><v_quad_trunc>2): Dito.
1353 (trunc<mode><v_oct_trunc>2): Dito.
1354 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
1355 (autovectorize_vector_modes): Define.
1356 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
1357 hook.
1358 (autovectorize_vector_modes): Implement hook.
1359 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
1360 Implement target hook.
1361 (riscv_vectorize_related_mode): Implement target hook.
1362 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
1363 (TARGET_VECTORIZE_RELATED_MODE): Define.
1364 * config/riscv/vector-iterators.md: Add lowercase versions of
1365 mode_attr iterators.
1366
1367 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
1368 Tobias Burnus <tobias@codesourcery.com>
1369
1370 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
1371 (ASM_SPEC): Use XNACKOPT.
1372 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
1373 (enum hsaco_attr_type): ... this, and generalize the names.
1374 (TARGET_XNACK): New macro.
1375 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
1376 but -mxnack=off.
1377 (output_file_start): Update xnack handling.
1378 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
1379 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
1380 (sram_ecc_type): Rename to ...
1381 (hsaco_attr_type: ... this.)
1382 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
1383 (TEST_XNACK): Delete.
1384 (TEST_XNACK_ANY): New macro.
1385 (TEST_XNACK_ON): New macro.
1386 (main): Support the new -mxnack=on/off/any syntax.
1387 * doc/invoke.texi (-mxnack): Update for new syntax.
1388
1389 2023-05-26 Andrew Pinski <apinski@marvell.com>
1390
1391 * genmatch.cc (emit_debug_printf): New function.
1392 (dt_simplify::gen_1): Emit printf into the code
1393 before the `return true` or returning the folded result
1394 instead of emitting it always.
1395
1396 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1397
1398 * config/xtensa/xtensa-protos.h
1399 (xtensa_expand_block_set_unrolled_loop,
1400 xtensa_expand_block_set_small_loop): Remove.
1401 (xtensa_expand_block_set): New prototype.
1402 * config/xtensa/xtensa.cc
1403 (xtensa_expand_block_set_libcall): New subfunction.
1404 (xtensa_expand_block_set_unrolled_loop,
1405 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
1406 (xtensa_expand_block_set): New function that calls the above
1407 subfunctions.
1408 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
1409 xtensa_expand_block_set().
1410
1411 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1412
1413 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
1414 New prototype.
1415 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
1416 New function.
1417 * config/xtensa/constraints.md (O):
1418 Change to use the above function.
1419 * config/xtensa/xtensa.md (*subsi3_from_const):
1420 New insn_and_split pattern.
1421
1422 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1423
1424 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
1425 Retract excessive line folding, and correct the value of
1426 the "length" insn attribute related to TARGET_DENSITY.
1427 (*extzvsi-1bit_addsubx): Ditto.
1428
1429 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
1430
1431 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
1432 Do not disable call to ix86_expand_vecop_qihi2.
1433
1434 2023-05-26 liuhongt <hongtao.liu@intel.com>
1435
1436 PR target/109610
1437 PR target/109858
1438 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
1439 calculation when !hard_regno_mode_ok for GENERAL_REGS and
1440 mode, otherwise still use GENERAL_REGS.
1441
1442 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1443
1444 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
1445 explict VL and drop VL in ops.
1446
1447 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
1448
1449 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
1450 in different BB blocks.
1451
1452 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
1453
1454 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
1455 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
1456 instructions when available. Emulate truncation via
1457 ix86_expand_vec_perm_const_1 when native truncate insn
1458 is not available.
1459 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
1460 when available. Trivially rename some variables.
1461 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
1462 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
1463 calculation of V*QImode emulations to account for generation of
1464 2x-wider mode instructions.
1465 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
1466 emulations to account for generation of 2x-wider mode instructions.
1467
1468 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
1469
1470 PR target/104327
1471 * config/avr/avr.cc (avr_can_inline_p): New static function.
1472 (TARGET_CAN_INLINE_P): Define to that function.
1473
1474 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
1475
1476 PR target/82931
1477 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
1478 Handle any bit position and use mode QISI.
1479 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
1480 of 2 insns for bit-transfer of respective style.
1481
1482 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
1483
1484 * config/arm/iterators.md (MVE_6): Remove.
1485 * config/arm/mve.md: Replace MVE_6 with MVE_5.
1486
1487 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1488 Richard Sandiford <richard.sandiford@arm.com>
1489
1490 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
1491 function.
1492 (vect_set_loop_controls_directly): Add decrement IV support.
1493 (vect_set_loop_condition_partial_vectors): Ditto.
1494 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
1495 variable.
1496 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
1497 macro.
1498
1499 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1500
1501 PR target/99195
1502 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
1503 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
1504 Fix canonicalization of PLUS operands.
1505 (aarch64_fcmla<rot><mode>): Rename to...
1506 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
1507 Fix canonicalization of PLUS operands.
1508 (aarch64_fcmla_lane<rot><mode>): Rename to...
1509 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
1510 Fix canonicalization of PLUS operands.
1511 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
1512 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
1513 Fix canonicalization of PLUS operands.
1514 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
1515
1516 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
1517
1518 * config/arm/arm.md (rbitsi2): Rename to...
1519 (arm_rbit): ... This.
1520 (ctzsi2): Adjust for the above.
1521 (arm_rev16si2): Convert to define_expand.
1522 (arm_rev16si2_alt1): New pattern.
1523 (arm_rev16si2_alt): Rename to...
1524 (*arm_rev16si2_alt2): ... This.
1525 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
1526 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
1527 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
1528 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
1529
1530 2023-05-25 Alex Coplan <alex.coplan@arm.com>
1531
1532 PR target/109800
1533 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
1534 instead of DFmode.
1535 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
1536 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
1537 DFmode as an rvalue.
1538
1539 2023-05-25 Richard Biener <rguenther@suse.de>
1540
1541 PR target/109955
1542 * tree-vect-stmts.cc (vectorizable_condition): For
1543 embedded comparisons also handle the case when the target
1544 only provides vec_cmp and vcond_mask.
1545
1546 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
1547
1548 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
1549 TLS Local Dynamic.
1550
1551 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1552
1553 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
1554 (seq_cost_ignoring_scalar_moves): Likewise.
1555 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
1556
1557 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1558
1559 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
1560 (vcage_f32): Likewise.
1561 (vcages_f32): Likewise.
1562 (vcageq_f32): Likewise.
1563 (vcaged_f64): Likewise.
1564 (vcageq_f64): Likewise.
1565 (vcagts_f32): Likewise.
1566 (vcagt_f32): Likewise.
1567 (vcagt_f64): Likewise.
1568 (vcagtq_f32): Likewise.
1569 (vcagtd_f64): Likewise.
1570 (vcagtq_f64): Likewise.
1571 (vcale_f32): Likewise.
1572 (vcale_f64): Likewise.
1573 (vcaled_f64): Likewise.
1574 (vcales_f32): Likewise.
1575 (vcaleq_f32): Likewise.
1576 (vcaleq_f64): Likewise.
1577 (vcalt_f32): Likewise.
1578 (vcalt_f64): Likewise.
1579 (vcaltd_f64): Likewise.
1580 (vcaltq_f32): Likewise.
1581 (vcaltq_f64): Likewise.
1582 (vcalts_f32): Likewise.
1583
1584 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
1585
1586 PR target/109173
1587 PR target/109174
1588 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
1589 int to const int or const int to const unsigned int.
1590 (_mm512_mask_srli_epi16): Ditto.
1591 (_mm512_slli_epi16): Ditto.
1592 (_mm512_mask_slli_epi16): Ditto.
1593 (_mm512_maskz_slli_epi16): Ditto.
1594 (_mm512_srai_epi16): Ditto.
1595 (_mm512_mask_srai_epi16): Ditto.
1596 (_mm512_maskz_srai_epi16): Ditto.
1597 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
1598 (_mm512_mask_slli_epi64): Ditto.
1599 (_mm512_maskz_slli_epi64): Ditto.
1600 (_mm512_srli_epi64): Ditto.
1601 (_mm512_mask_srli_epi64): Ditto.
1602 (_mm512_maskz_srli_epi64): Ditto.
1603 (_mm512_srai_epi64): Ditto.
1604 (_mm512_mask_srai_epi64): Ditto.
1605 (_mm512_maskz_srai_epi64): Ditto.
1606 (_mm512_slli_epi32): Ditto.
1607 (_mm512_mask_slli_epi32): Ditto.
1608 (_mm512_maskz_slli_epi32): Ditto.
1609 (_mm512_srli_epi32): Ditto.
1610 (_mm512_mask_srli_epi32): Ditto.
1611 (_mm512_maskz_srli_epi32): Ditto.
1612 (_mm512_srai_epi32): Ditto.
1613 (_mm512_mask_srai_epi32): Ditto.
1614 (_mm512_maskz_srai_epi32): Ditto.
1615 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
1616 (_mm256_maskz_srai_epi16): Ditto.
1617 (_mm_mask_srai_epi16): Ditto.
1618 (_mm_maskz_srai_epi16): Ditto.
1619 (_mm256_mask_slli_epi16): Ditto.
1620 (_mm256_maskz_slli_epi16): Ditto.
1621 (_mm_mask_slli_epi16): Ditto.
1622 (_mm_maskz_slli_epi16): Ditto.
1623 (_mm_maskz_srli_epi16): Ditto.
1624 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
1625 (_mm256_maskz_srli_epi32): Ditto.
1626 (_mm_mask_srli_epi32): Ditto.
1627 (_mm_maskz_srli_epi32): Ditto.
1628 (_mm256_mask_srli_epi64): Ditto.
1629 (_mm256_maskz_srli_epi64): Ditto.
1630 (_mm_mask_srli_epi64): Ditto.
1631 (_mm_maskz_srli_epi64): Ditto.
1632 (_mm256_mask_srai_epi32): Ditto.
1633 (_mm256_maskz_srai_epi32): Ditto.
1634 (_mm_mask_srai_epi32): Ditto.
1635 (_mm_maskz_srai_epi32): Ditto.
1636 (_mm256_srai_epi64): Ditto.
1637 (_mm256_mask_srai_epi64): Ditto.
1638 (_mm256_maskz_srai_epi64): Ditto.
1639 (_mm_srai_epi64): Ditto.
1640 (_mm_mask_srai_epi64): Ditto.
1641 (_mm_maskz_srai_epi64): Ditto.
1642 (_mm_mask_slli_epi32): Ditto.
1643 (_mm_maskz_slli_epi32): Ditto.
1644 (_mm_mask_slli_epi64): Ditto.
1645 (_mm_maskz_slli_epi64): Ditto.
1646 (_mm256_mask_slli_epi32): Ditto.
1647 (_mm256_maskz_slli_epi32): Ditto.
1648 (_mm256_mask_slli_epi64): Ditto.
1649 (_mm256_maskz_slli_epi64): Ditto.
1650
1651 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1652
1653 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
1654 instructions.
1655
1656 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1657
1658 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
1659 * data-streamer-out.cc (streamer_write_vrange): Same.
1660 * value-range.h (class vrange): Make streamer_write_vrange a friend.
1661
1662 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1663
1664 * value-query.cc (range_query::get_tree_range): Set NAN directly
1665 if necessary.
1666 * value-range.cc (frange::set): Assert that bounds are not NAN.
1667
1668 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1669
1670 * value-range.cc (add_vrange): Handle known NANs.
1671
1672 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1673
1674 * value-range.h (frange::set_nan): New.
1675
1676 2023-05-25 Alexandre Oliva <oliva@adacore.com>
1677
1678 PR target/100106
1679 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
1680 requires stricter alignment than MEM's.
1681
1682 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1683
1684 PR tree-optimization/107822
1685 PR tree-optimization/107986
1686 * Makefile.in (OBJS): Add gimple-range-phi.o.
1687 * gimple-range-cache.h (ranger_cache::m_estimate): New
1688 phi_analyzer pointer member.
1689 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
1690 phi_analyzer if no loop info is available.
1691 * gimple-range-phi.cc: New file.
1692 * gimple-range-phi.h: New file.
1693 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
1694
1695 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1696
1697 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
1698 to contructors.
1699 (fold_range): Add range_query parameter.
1700 (fur_relation::fur_relation): New.
1701 (fur_relation::trio): New.
1702 (fur_relation::register_relation): New.
1703 (fold_relations): New.
1704 * gimple-range-fold.h (fold_range): Adjust prototypes.
1705 (fold_relations): New.
1706
1707 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1708
1709 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
1710 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
1711 (ranger_cache::const_query): New.
1712 * gimple-range.cc (gimple_ranger::const_query): New.
1713 * gimple-range.h (gimple_ranger::const_query): New prototype.
1714
1715 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1716
1717 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
1718 (ssa_cache::dump_range_query): Delete.
1719 (ssa_lazy_cache::dump_range_query): Delete.
1720 (ssa_lazy_cache::get_range): Move from header file.
1721 (ssa_lazy_cache::clear_range): ditto.
1722 (ssa_lazy_cache::clear): Ditto.
1723 * gimple-range-cache.h (class ssa_cache): Virtualize.
1724 (class ssa_lazy_cache): Inherit and virtualize.
1725
1726 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
1727
1728 * value-range.h (vrange::kind): Remove.
1729
1730 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
1731
1732 PR middle-end/109840
1733 * match.pd <popcount optimizations>: Preserve zero-extension when
1734 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
1735 popcount((T)x), so the popcount's argument keeps the same type.
1736 <parity optimizations>: Likewise preserve extensions when
1737 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
1738 parity((T)x), so that the parity's argument type is the same.
1739
1740 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
1741
1742 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
1743 (ipcp_store_vr_results): Same.
1744 * ipa-prop.cc (ipa_vr::ipa_vr): New.
1745 (ipa_vr::get_vrange): New.
1746 (ipa_vr::set_unknown): New.
1747 (ipa_vr::streamer_read): New.
1748 (ipa_vr::streamer_write): New.
1749 (write_ipcp_transformation_info): Use new ipa_vr API.
1750 (read_ipcp_transformation_info): Same.
1751 (ipa_vr::nonzero_p): Delete.
1752 (ipcp_update_vr): Use new ipa_vr API.
1753 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
1754 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
1755
1756 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
1757
1758 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
1759 silence overflow warnings later on.
1760
1761 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
1762
1763 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
1764 Remove handling of V8QImode.
1765 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
1766 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
1767 (v<insn>v4qi3): Ditto.
1768 * config/i386/sse.md (v<insn>v8qi3): Remove.
1769
1770 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1771
1772 PR target/99195
1773 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
1774 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
1775 (aarch64_simd_ashr<mode>): Rename to...
1776 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
1777 (aarch64_simd_imm_shl<mode>): Rename to...
1778 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
1779 (aarch64_simd_reg_sshl<mode>): Rename to...
1780 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
1781 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
1782 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
1783 (aarch64_simd_reg_shl<mode>_signed): Rename to...
1784 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
1785 (vec_shr_<mode>): Rename to...
1786 (vec_shr_<mode><vczle><vczbe>): ... This.
1787 (aarch64_<sur>shl<mode>): Rename to...
1788 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
1789 (aarch64_<sur>q<r>shl<mode>): Rename to...
1790 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
1791
1792 2023-05-24 Richard Biener <rguenther@suse.de>
1793
1794 PR target/109944
1795 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
1796 Perform final vector composition using
1797 ix86_expand_vector_init_general instead of setting
1798 the highpart and lowpart which causes spilling.
1799
1800 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1801
1802 PR tree-optimization/109695
1803 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
1804 changed param.
1805 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
1806 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
1807 flag to set_global_range.
1808 (gimple_ranger::prefill_stmt_dependencies): Ditto.
1809
1810 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1811
1812 PR tree-optimization/109695
1813 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
1814 a positive int.
1815 (temporal_cache::current_p): Check always_current method.
1816 (temporal_cache::set_always_current): Add param and set value
1817 appropriately.
1818 (temporal_cache::always_current_p): New.
1819 (ranger_cache::get_global_range): Adjust.
1820 (ranger_cache::set_global_range): set always current first.
1821
1822 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1823
1824 PR tree-optimization/109695
1825 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
1826 fold_range with global query to choose an initial value.
1827
1828 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1829
1830 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
1831 prefix.
1832
1833 2023-05-24 Richard Biener <rguenther@suse.de>
1834
1835 PR tree-optimization/109849
1836 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
1837 expressions but take the first sets.
1838
1839 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
1840
1841 PR modula2/109952
1842 * doc/gm2.texi (High procedure function): New node.
1843 (Using): New menu entry for High procedure function.
1844
1845 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
1846
1847 PR rtl-optimization/109940
1848 * early-remat.cc (postorder_index): Rename to...
1849 (rpo_index): ...this.
1850 (compare_candidates): Sort by decreasing rpo_index rather than
1851 increasing postorder_index.
1852 (early_remat::sort_candidates): Calculate the forward RPO from
1853 DF_FORWARD.
1854 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
1855 rather than DF_BACKWARD in reverse.
1856
1857 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1858
1859 PR target/109939
1860 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
1861 qualifier_none for the return operand.
1862
1863 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1864
1865 * config/riscv/autovec.md (<optab><mode>3): New pattern.
1866 (one_cmpl<mode>2): Ditto.
1867 (*<optab>not<mode>): Ditto.
1868 (*n<optab><mode>): Ditto.
1869 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
1870 one_cmpl.
1871
1872 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
1873
1874 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
1875 calculation on n_perms by considering nvectors_per_build.
1876
1877 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1878 Richard Sandiford <richard.sandiford@arm.com>
1879
1880 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
1881 (vec_cmp<mode><vm>): New pattern.
1882 (vec_cmpu<mode><vm>): New pattern.
1883 (vcond<V:mode><VI:mode>): New pattern.
1884 (vcondu<V:mode><VI:mode>): New pattern.
1885 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
1886 (emit_vlmax_merge_insn): New function.
1887 (emit_vlmax_cmp_insn): Ditto.
1888 (emit_vlmax_cmp_mu_insn): Ditto.
1889 (expand_vec_cmp): Ditto.
1890 (expand_vec_cmp_float): Ditto.
1891 (expand_vcond): Ditto.
1892 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
1893 (emit_vlmax_cmp_insn): Ditto.
1894 (emit_vlmax_cmp_mu_insn): Ditto.
1895 (get_cmp_insn_code): Ditto.
1896 (expand_vec_cmp): Ditto.
1897 (expand_vec_cmp_float): Ditto.
1898 (expand_vcond): Ditto.
1899
1900 2023-05-24 Pan Li <pan2.li@intel.com>
1901
1902 * config/riscv/genrvv-type-indexer.cc (main): Add
1903 unsigned_eew*_lmul1_interpret for indexer.
1904 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
1905 Register vuint*m1_t interpret function.
1906 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
1907 New macro for vuint8m1_t.
1908 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
1909 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
1910 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
1911 (vbool1_t): Add to unsigned_eew*_interpret_ops.
1912 (vbool2_t): Likewise.
1913 (vbool4_t): Likewise.
1914 (vbool8_t): Likewise.
1915 (vbool16_t): Likewise.
1916 (vbool32_t): Likewise.
1917 (vbool64_t): Likewise.
1918 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
1919 New macro for vuint*m1_t.
1920 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
1921 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
1922 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
1923 (required_extensions_p): Add vuint*m1_t interpret case.
1924 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
1925 Add vuint*m1_t interpret to base type.
1926 (unsigned_eew16_lmul1_interpret): Likewise.
1927 (unsigned_eew32_lmul1_interpret): Likewise.
1928 (unsigned_eew64_lmul1_interpret): Likewise.
1929
1930 2023-05-24 Pan Li <pan2.li@intel.com>
1931
1932 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
1933 for the eew size list.
1934 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
1935 (main): Add signed_eew*_lmul1_interpret for indexer.
1936 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
1937 Register vint*m1_t interpret function.
1938 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
1939 New macro for vint8m1_t.
1940 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
1941 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
1942 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
1943 (vbool1_t): Add to signed_eew*_interpret_ops.
1944 (vbool2_t): Likewise.
1945 (vbool4_t): Likewise.
1946 (vbool8_t): Likewise.
1947 (vbool16_t): Likewise.
1948 (vbool32_t): Likewise.
1949 (vbool64_t): Likewise.
1950 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
1951 New macro for vint*m1_t.
1952 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
1953 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
1954 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
1955 (required_extensions_p): Add vint8m1_t interpret case.
1956 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
1957 Add vint*m1_t interpret to base type.
1958 (signed_eew16_lmul1_interpret): Likewise.
1959 (signed_eew32_lmul1_interpret): Likewise.
1960 (signed_eew64_lmul1_interpret): Likewise.
1961
1962 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1963
1964 * config/riscv/autovec.md: Adjust for new interface.
1965 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
1966 (emit_nonvlmax_insn): Add AVL operand.
1967 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
1968 (emit_nonvlmax_insn): Add AVL operand.
1969 (sew64_scalar_helper): Adjust for new interface.
1970 (expand_tuple_move): Ditto.
1971 * config/riscv/vector.md: Ditto.
1972
1973 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1974
1975 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
1976 (expand_const_vector): Ditto.
1977 (legitimize_move): Ditto.
1978 (sew64_scalar_helper): Ditto.
1979 (expand_tuple_move): Ditto.
1980 (expand_vector_init_insert_elems): Ditto.
1981 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
1982
1983 2023-05-24 liuhongt <hongtao.liu@intel.com>
1984
1985 PR target/109900
1986 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
1987 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
1988 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
1989 (ix86_masked_all_ones): Handle 64-bit mask.
1990 * config/i386/i386-builtin.def: Replace icode of related
1991 non-mask simd abs builtins with CODE_FOR_nothing.
1992
1993 2023-05-23 Martin Uecker <uecker@tugraz.at>
1994
1995 PR c/109450
1996 * function.cc (gimplify_parm_type): Remove function.
1997 (gimplify_parameters): Call gimplify_type_sizes.
1998
1999 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2000
2001 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
2002 and change to also accept '*subx' pattern.
2003 (*subx): Remove.
2004
2005 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2006
2007 * config/xtensa/predicates.md (addsub_operator): New.
2008 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
2009 *extzvsi-1bit_addsubx): New insn_and_split patterns.
2010 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
2011 Add a special case about ifcvt 'noce_try_cmove()' to handle
2012 constant loads that do not fit into signed 12 bits in the
2013 patterns added above.
2014
2015 2023-05-23 Richard Biener <rguenther@suse.de>
2016
2017 PR tree-optimization/109747
2018 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
2019 the SLP node only once to the cost hook.
2020
2021 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
2022
2023 * config/avr/avr.cc (avr_insn_cost): New static function.
2024 (TARGET_INSN_COST): Define to that function.
2025
2026 2023-05-23 Richard Biener <rguenther@suse.de>
2027
2028 PR target/109944
2029 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
2030 For vector construction or splats apply GPR->XMM move
2031 costing. QImode memory can be handled directly only
2032 with SSE4.1 pinsrb.
2033
2034 2023-05-23 Richard Biener <rguenther@suse.de>
2035
2036 PR tree-optimization/108752
2037 * tree-vect-stmts.cc (vectorizable_operation): For bit
2038 operations with generic word_mode vectors do not cost
2039 an extra stmt. For plus, minus and negate also cost the
2040 constant materialization.
2041
2042 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
2043
2044 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
2045 Call ix86_expand_vec_shift_qihi_constant for shifts
2046 with constant count operand.
2047 * config/i386/i386.cc (ix86_shift_rotate_cost):
2048 Handle V4QImode and V8QImode.
2049 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
2050 (<insn>v4qi3): Ditto.
2051
2052 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2053
2054 * config/riscv/vector.md: Add mode.
2055
2056 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
2057
2058 PR tree-optimization/109934
2059 * value-range.cc (irange::invert): Remove buggy special case.
2060
2061 2023-05-23 Richard Biener <rguenther@suse.de>
2062
2063 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
2064 ANTIC_OUT.
2065
2066 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
2067
2068 PR target/109632
2069 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
2070 subregs between any scalars that are 64 bits or smaller.
2071 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
2072 (bits_etype): New int attribute.
2073 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
2074 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
2075 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
2076
2077 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
2078
2079 * doc/md.texi: Document that <FOO> can be used to refer to the
2080 numerical value of an int iterator FOO. Tweak other parts of
2081 the int iterator documentation.
2082 * read-rtl.cc (iterator_group::has_self_attr): New field.
2083 (map_attr_string): When has_self_attr is true, make <FOO>
2084 expand to the current value of iterator FOO.
2085 (initialize_iterators): Set has_self_attr for int iterators.
2086
2087 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2088
2089 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
2090 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
2091 (RVV_UNOP_NUM): New macro.
2092 (RVV_BINOP_NUM): Ditto.
2093 (legitimize_move): Refactor the framework of RVV auto-vectorization.
2094 (emit_vlmax_op): Ditto.
2095 (emit_vlmax_reg_op): Ditto.
2096 (emit_len_op): Ditto.
2097 (emit_len_binop): Ditto.
2098 (emit_vlmax_tany_many): Ditto.
2099 (emit_nonvlmax_tany_many): Ditto.
2100 (sew64_scalar_helper): Ditto.
2101 (expand_tuple_move): Ditto.
2102 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
2103 (emit_pred_binop): Ditto.
2104 (emit_vlmax_op): Ditto.
2105 (emit_vlmax_tany_many): New function.
2106 (emit_len_op): Remove.
2107 (emit_nonvlmax_tany_many): New function.
2108 (emit_vlmax_reg_op): Remove.
2109 (emit_len_binop): Ditto.
2110 (emit_index_op): Ditto.
2111 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
2112 (expand_const_vector): Ditto.
2113 (legitimize_move): Ditto.
2114 (sew64_scalar_helper): Ditto.
2115 (expand_tuple_move): Ditto.
2116 (expand_vector_init_insert_elems): Ditto.
2117 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
2118 * config/riscv/vector.md: Ditto.
2119
2120 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2121
2122 PR target/109855
2123 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
2124 and constraint for operand 0.
2125 (add_vec_concat_subst_be): Likewise.
2126
2127 2023-05-23 Richard Biener <rguenther@suse.de>
2128
2129 PR tree-optimization/109849
2130 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
2131 and use that to determine what to hoist.
2132
2133 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
2134
2135 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
2136 specific treatment for bit-fields only if they have an integral type
2137 and filter out non-integral bit-fields that do not start and end on
2138 a byte boundary.
2139
2140 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
2141
2142 PR tree-optimization/109920
2143 * value-range.h (RESIZABLE>::~int_range): Use delete[].
2144
2145 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
2146
2147 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
2148 calcuation of integer vector mode costs to reflect generated
2149 instruction sequences of different integer vector modes and
2150 different target ABIs. Remove "speed" function argument.
2151 (ix86_rtx_costs): Update call for removed function argument.
2152 (ix86_vector_costs::add_stmt_cost): Ditto.
2153
2154 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
2155
2156 * value-range.h (class Value_Range): Implement set_zero,
2157 set_nonzero, and nonzero_p.
2158
2159 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
2160
2161 * config/i386/i386.cc (ix86_multiplication_cost): Add
2162 the cost of a memory read to the cost of V?QImode sequences.
2163
2164 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2165
2166 * config/riscv/riscv-v.cc: Add "m_" prefix.
2167
2168 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2169
2170 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
2171 multiple-rgroup of length.
2172 * tree-vect-stmts.cc (vectorizable_store): Ditto.
2173 (vectorizable_load): Ditto.
2174 * tree-vectorizer.h (vect_get_loop_len): Ditto.
2175
2176 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2177
2178 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
2179 codes.
2180
2181 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
2182
2183 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
2184 handling for the case index == count.
2185
2186 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
2187
2188 PR target/90622
2189 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
2190 Don't fold to XOR / AND / XOR if just one bit is copied to the
2191 same position.
2192
2193 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
2194
2195 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
2196 builtin for bit reversal using brev instruction.
2197 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
2198 NVPTX_BUILTIN_BREVLL.
2199 (nvptx_init_builtins): Define "brev" and "brevll".
2200 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
2201 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
2202 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
2203 section, document __builtin_nvptx_brev{,ll}.
2204
2205 2023-05-21 Jakub Jelinek <jakub@redhat.com>
2206
2207 PR tree-optimization/109505
2208 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
2209 Combine successive equal operations with constants,
2210 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
2211 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
2212 operands.
2213
2214 2023-05-21 Andrew Pinski <apinski@marvell.com>
2215
2216 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
2217
2218 2023-05-21 Pan Li <pan2.li@intel.com>
2219
2220 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
2221 rest bool size, aka 2, 4, 8, 16, 32, 64.
2222 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
2223 Register vbool[2|4|8|16|32|64] interpret function.
2224 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
2225 New macro for vbool2_t.
2226 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
2227 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
2228 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
2229 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
2230 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
2231 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
2232 (vint16m1_t): Likewise.
2233 (vint32m1_t): Likewise.
2234 (vint64m1_t): Likewise.
2235 (vuint8m1_t): Likewise.
2236 (vuint16m1_t): Likewise.
2237 (vuint32m1_t): Likewise.
2238 (vuint64m1_t): Likewise.
2239 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
2240 New macro for vbool2_t.
2241 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
2242 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
2243 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
2244 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
2245 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
2246 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
2247 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
2248 vbool2_t interprect to base type.
2249 (bool4_interpret): Likewise.
2250 (bool8_interpret): Likewise.
2251 (bool16_interpret): Likewise.
2252 (bool32_interpret): Likewise.
2253 (bool64_interpret): Likewise.
2254
2255 2023-05-21 Andrew Pinski <apinski@marvell.com>
2256
2257 PR middle-end/109919
2258 * expr.cc (expand_single_bit_test): Don't use the
2259 target for expand_expr.
2260
2261 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
2262
2263 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
2264 section.
2265
2266 2023-05-20 Pan Li <pan2.li@intel.com>
2267
2268 * mode-switching.cc (entity_map): Initialize the array to zero.
2269 (bb_info): Ditto.
2270
2271 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
2272
2273 PR target/105753
2274 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
2275 Remove superfluous "parallel" in insn pattern.
2276 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
2277 printing error text to assembly.
2278
2279 2023-05-20 Andrew Pinski <apinski@marvell.com>
2280
2281 * expr.cc (fold_single_bit_test): Rename to ...
2282 (expand_single_bit_test): This and expand directly.
2283 (do_store_flag): Update for the rename function.
2284
2285 2023-05-20 Andrew Pinski <apinski@marvell.com>
2286
2287 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
2288 instead of shift/and.
2289
2290 2023-05-20 Andrew Pinski <apinski@marvell.com>
2291
2292 * expr.cc (fold_single_bit_test): Add an assert
2293 and simplify based on code being NE_EXPR or EQ_EXPR.
2294
2295 2023-05-20 Andrew Pinski <apinski@marvell.com>
2296
2297 * expr.cc (fold_single_bit_test): Take inner and bitnum
2298 instead of arg0 and arg1. Update the code.
2299 (do_store_flag): Don't create a tree when calling
2300 fold_single_bit_test instead just call it with the bitnum
2301 and the inner tree.
2302
2303 2023-05-20 Andrew Pinski <apinski@marvell.com>
2304
2305 * expr.cc (fold_single_bit_test): Use get_def_for_expr
2306 instead of checking the inner's code.
2307
2308 2023-05-20 Andrew Pinski <apinski@marvell.com>
2309
2310 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
2311 (fold_single_bit_test): This and simplify.
2312
2313 2023-05-20 Andrew Pinski <apinski@marvell.com>
2314
2315 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
2316 expr.cc.
2317 (fold_single_bit_test): Likewise.
2318 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
2319 (fold_single_bit_test): Likewise and make static.
2320 * fold-const.h (fold_single_bit_test): Remove declaration.
2321
2322 2023-05-20 Die Li <lidie@eswincomputing.com>
2323
2324 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
2325 checking.
2326
2327 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
2328
2329 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
2330
2331 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
2332
2333 PR target/106888
2334 * config/riscv/bitmanip.md
2335 (<bitmanip_optab>disi2): Match with any_extend.
2336 (<bitmanip_optab>disi2_sext): New pattern to match
2337 with sign extend using an ANDI instruction.
2338
2339 2023-05-19 Nathan Sidwell <nathan@acm.org>
2340
2341 PR other/99451
2342 * opts.h (handle_deferred_dump_options): Declare.
2343 * opts-global.cc (handle_common_deferred_options): Do not handle
2344 dump options here.
2345 (handle_deferred_dump_options): New.
2346 * toplev.cc (toplev::main): Call it after plugin init.
2347
2348 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
2349
2350 * config/riscv/constraints.md (DsS, DsD): Restore agreement
2351 with shiftm1 mode attribute.
2352
2353 2023-05-19 Andrew Pinski <apinski@marvell.com>
2354
2355 PR driver/33980
2356 * gcc.cc (default_compilers["@c-header"]): Add %w
2357 after the --output-pch.
2358
2359 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
2360
2361 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
2362 to hival, ASHIFT the corresponding regs.
2363
2364 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
2365
2366 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
2367
2368 2023-05-19 Jakub Jelinek <jakub@redhat.com>
2369
2370 PR tree-optimization/105776
2371 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
2372 non-NULL, allow division statement to have a cast as single imm use
2373 rather than comparison/condition.
2374 (match_arith_overflow): In that case remove the cast stmt in addition
2375 to the division statement.
2376
2377 2023-05-19 Jakub Jelinek <jakub@redhat.com>
2378
2379 PR tree-optimization/101856
2380 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
2381 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
2382 support it but umul_highpart_optab does.
2383
2384 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
2385
2386 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
2387 of tree_to_shwi on array indices. Minor tweaks.
2388
2389 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2390
2391 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
2392 * attribs.cc (diag_attr_exclusions): Ditto.
2393 (decl_attributes): Ditto.
2394 (build_type_attribute_qual_variant): Ditto.
2395 * builtins.cc (fold_builtin_carg): Ditto.
2396 (fold_builtin_next_arg): Ditto.
2397 (do_mpc_arg2): Ditto.
2398 * cfgexpand.cc (expand_return): Ditto.
2399 * cgraph.h (decl_in_symtab_p): Ditto.
2400 (symtab_node::get_create): Ditto.
2401 * dwarf2out.cc (base_type_die): Ditto.
2402 (implicit_ptr_descriptor): Ditto.
2403 (gen_array_type_die): Ditto.
2404 (gen_type_die_with_usage): Ditto.
2405 (optimize_location_into_implicit_ptr): Ditto.
2406 * expr.cc (do_store_flag): Ditto.
2407 * fold-const.cc (negate_expr_p): Ditto.
2408 (fold_negate_expr_1): Ditto.
2409 (fold_convert_const): Ditto.
2410 (fold_convert_loc): Ditto.
2411 (constant_boolean_node): Ditto.
2412 (fold_binary_op_with_conditional_arg): Ditto.
2413 (build_fold_addr_expr_with_type_loc): Ditto.
2414 (fold_comparison): Ditto.
2415 (fold_checksum_tree): Ditto.
2416 (tree_unary_nonnegative_warnv_p): Ditto.
2417 (integer_valued_real_unary_p): Ditto.
2418 (fold_read_from_constant_string): Ditto.
2419 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
2420 * gimple-expr.cc (useless_type_conversion_p): Ditto.
2421 (is_gimple_reg): Ditto.
2422 (is_gimple_asm_val): Ditto.
2423 (mark_addressable): Ditto.
2424 * gimple-expr.h (is_gimple_variable): Ditto.
2425 (virtual_operand_p): Ditto.
2426 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
2427 * gimplify.cc (gimplify_bind_expr): Ditto.
2428 (gimplify_return_expr): Ditto.
2429 (gimple_add_padding_init_for_auto_var): Ditto.
2430 (gimplify_addr_expr): Ditto.
2431 (omp_add_variable): Ditto.
2432 (omp_notice_variable): Ditto.
2433 (omp_get_base_pointer): Ditto.
2434 (omp_strip_components_and_deref): Ditto.
2435 (omp_strip_indirections): Ditto.
2436 (omp_accumulate_sibling_list): Ditto.
2437 (omp_build_struct_sibling_lists): Ditto.
2438 (gimplify_adjust_omp_clauses_1): Ditto.
2439 (gimplify_adjust_omp_clauses): Ditto.
2440 (gimplify_omp_for): Ditto.
2441 (goa_lhs_expr_p): Ditto.
2442 (gimplify_one_sizepos): Ditto.
2443 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
2444 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
2445 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
2446 (propagate_controlled_uses): Ditto.
2447 * ipa-sra.cc (type_prevails_p): Ditto.
2448 (scan_expr_access): Ditto.
2449 * optabs-tree.cc (optab_for_tree_code): Ditto.
2450 * toplev.cc (wrapup_global_declaration_1): Ditto.
2451 * trans-mem.cc (transaction_invariant_address_p): Ditto.
2452 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
2453 (verify_gimple_comparison): Ditto.
2454 (verify_gimple_assign_binary): Ditto.
2455 (verify_gimple_assign_single): Ditto.
2456 * tree-complex.cc (get_component_ssa_name): Ditto.
2457 * tree-emutls.cc (lower_emutls_2): Ditto.
2458 * tree-inline.cc (copy_tree_body_r): Ditto.
2459 (estimate_move_cost): Ditto.
2460 (copy_decl_for_dup_finish): Ditto.
2461 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
2462 (note_nonlocal_vla_type): Ditto.
2463 (convert_local_omp_clauses): Ditto.
2464 (remap_vla_decls): Ditto.
2465 (fixup_vla_decls): Ditto.
2466 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
2467 * tree-pretty-print.cc (print_declaration): Ditto.
2468 (print_call_name): Ditto.
2469 * tree-sra.cc (compare_access_positions): Ditto.
2470 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
2471 * tree-ssa-ccp.cc (get_default_value): Ditto.
2472 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
2473 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
2474 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
2475 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
2476 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
2477 * tree-ssa-sink.cc (statement_sink_location): Ditto.
2478 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
2479 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
2480 * tree-ssa-uninit.cc (warn_uninit): Ditto.
2481 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
2482 (non_rewritable_mem_ref_base): Ditto.
2483 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
2484 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
2485 * tree-vect-generic.cc (do_binop): Ditto.
2486 (do_cond): Ditto.
2487 * tree-vect-stmts.cc (vect_init_vector): Ditto.
2488 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
2489 * tree.cc (sign_mask_for): Ditto.
2490 (verify_type_variant): Ditto.
2491 (gimple_canonical_types_compatible_p): Ditto.
2492 (verify_type): Ditto.
2493 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
2494 * var-tracking.cc (prepare_call_arguments): Ditto.
2495 (vt_add_function_parameters): Ditto.
2496 * varasm.cc (decode_addr_const): Ditto.
2497
2498 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2499
2500 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
2501 (lower_reduction_clauses): Ditto.
2502 (lower_send_clauses): Ditto.
2503 (lower_omp_task_reductions): Ditto.
2504 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
2505 (worker_single_copy): Ditto.
2506 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
2507 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
2508
2509 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2510
2511 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
2512 tree.h.
2513 (lto_read_body_or_constructor): Ditto.
2514 * lto-streamer-out.cc (tree_is_indexable): Ditto.
2515 (lto_output_var_decl_ref): Ditto.
2516 (DFS::DFS_write_tree_body): Ditto.
2517 (wrap_refs): Ditto.
2518 (write_symbol_extension_info): Ditto.
2519
2520 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2521
2522 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
2523 defines from tree.h.
2524 (aarch64_mangle_type): Ditto.
2525 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
2526 (alpha_gimplify_va_arg_1): Ditto.
2527 * config/arc/arc.cc (arc_encode_section_info): Ditto.
2528 (arc_is_aux_reg_p): Ditto.
2529 (arc_is_uncached_mem_p): Ditto.
2530 (arc_handle_aux_attribute): Ditto.
2531 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
2532 (arm_handle_cmse_nonsecure_call): Ditto.
2533 (arm_set_default_type_attributes): Ditto.
2534 (arm_is_segment_info_known): Ditto.
2535 (arm_mangle_type): Ditto.
2536 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
2537 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
2538 (avr_decl_absdata_p): Ditto.
2539 (avr_insert_attributes): Ditto.
2540 (avr_section_type_flags): Ditto.
2541 (avr_encode_section_info): Ditto.
2542 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
2543 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
2544 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
2545 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
2546 (csky_mangle_type): Ditto.
2547 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
2548 * config/darwin.cc (is_objc_metadata): Ditto.
2549 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
2550 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
2551 * config/frv/frv.cc (frv_emit_movsi): Ditto.
2552 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
2553 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
2554 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
2555 * config/i386/i386-expand.cc: Ditto.
2556 * config/i386/i386.cc (type_natural_mode): Ditto.
2557 (ix86_function_arg): Ditto.
2558 (ix86_data_alignment): Ditto.
2559 (ix86_local_alignment): Ditto.
2560 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
2561 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
2562 (i386_pe_type_dllexport_p): Ditto.
2563 (i386_pe_adjust_class_at_definition): Ditto.
2564 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
2565 (i386_pe_binds_local_p): Ditto.
2566 (i386_pe_section_type_flags): Ditto.
2567 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
2568 (ia64_gimplify_va_arg): Ditto.
2569 (ia64_in_small_data_p): Ditto.
2570 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
2571 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
2572 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
2573 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
2574 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
2575 (mcore_encode_section_info): Ditto.
2576 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
2577 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
2578 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
2579 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
2580 (pass_in_memory): Ditto.
2581 (nvptx_generate_vector_shuffle): Ditto.
2582 (nvptx_lockless_update): Ditto.
2583 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
2584 (pa_function_value): Ditto.
2585 (pa_function_arg): Ditto.
2586 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
2587 (TEXT_SPACE_P): Ditto.
2588 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
2589 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
2590 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
2591 (riscv_mangle_type): Ditto.
2592 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
2593 (rl78_addsi3_internal): Ditto.
2594 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
2595 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
2596 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
2597 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
2598 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
2599 (rs6000_function_arg_advance_1): Ditto.
2600 (rs6000_function_arg): Ditto.
2601 (rs6000_pass_by_reference): Ditto.
2602 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
2603 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
2604 (rs6000_set_default_type_attributes): Ditto.
2605 (rs6000_elf_in_small_data_p): Ditto.
2606 (IN_NAMED_SECTION): Ditto.
2607 (rs6000_xcoff_encode_section_info): Ditto.
2608 (rs6000_function_value): Ditto.
2609 (invalid_arg_for_unprototyped_fn): Ditto.
2610 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
2611 (s390_vec_n_elem): Ditto.
2612 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
2613 (s390_function_arg_integer): Ditto.
2614 (s390_return_in_memory): Ditto.
2615 (s390_encode_section_info): Ditto.
2616 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
2617 (sh_function_value): Ditto.
2618 * config/sol2.cc (solaris_insert_attributes): Ditto.
2619 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
2620 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
2621 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
2622 (xstormy16_handle_below100_attribute): Ditto.
2623 * config/v850/v850.cc (v850_encode_section_info): Ditto.
2624 (v850_insert_attributes): Ditto.
2625 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
2626 (visium_return_in_memory): Ditto.
2627 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
2628
2629 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
2630
2631 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
2632 (ix86_expand_vecop_qihi): Add op2vec bool variable.
2633 Do not set REG_EQUAL note.
2634 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
2635 Add prototype.
2636 * config/i386/i386.cc (ix86_multiplication_cost): Handle
2637 V4QImode and V8QImode.
2638 * config/i386/mmx.md (mulv8qi3): New expander.
2639 (mulv4qi3): Ditto.
2640 * config/i386/sse.md (mulv8qi3): Remove.
2641
2642 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
2643
2644 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
2645
2646 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
2647
2648 PR bootstrap/105831
2649 * config.gcc: Use = operator instead of ==.
2650
2651 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
2652
2653 PR bootstrap/105831
2654 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
2655 * configure.ac: Likewise.
2656 * configure: Regenerate.
2657
2658 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2659
2660 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
2661 (__ARM_mve_coerce1): Remove.
2662 (__ARM_mve_coerce2): Remove.
2663 (__ARM_mve_coerce3): Remove.
2664 (__ARM_mve_coerce_i_scalar): New.
2665 (__ARM_mve_coerce_s8_ptr): New.
2666 (__ARM_mve_coerce_u8_ptr): New.
2667 (__ARM_mve_coerce_s16_ptr): New.
2668 (__ARM_mve_coerce_u16_ptr): New.
2669 (__ARM_mve_coerce_s32_ptr): New.
2670 (__ARM_mve_coerce_u32_ptr): New.
2671 (__ARM_mve_coerce_s64_ptr): New.
2672 (__ARM_mve_coerce_u64_ptr): New.
2673 (__ARM_mve_coerce_f_scalar): New.
2674 (__ARM_mve_coerce_f16_ptr): New.
2675 (__ARM_mve_coerce_f32_ptr): New.
2676 (__arm_vst4q): Change _coerce_ overloads.
2677 (__arm_vbicq): Change _coerce_ overloads.
2678 (__arm_vld1q): Change _coerce_ overloads.
2679 (__arm_vld1q_z): Change _coerce_ overloads.
2680 (__arm_vld2q): Change _coerce_ overloads.
2681 (__arm_vld4q): Change _coerce_ overloads.
2682 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
2683 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
2684 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
2685 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
2686 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
2687 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
2688 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
2689 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
2690 (__arm_vst1q_p): Change _coerce_ overloads.
2691 (__arm_vst2q): Change _coerce_ overloads.
2692 (__arm_vst1q): Change _coerce_ overloads.
2693 (__arm_vstrhq): Change _coerce_ overloads.
2694 (__arm_vstrhq_p): Change _coerce_ overloads.
2695 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
2696 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
2697 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
2698 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
2699 (__arm_vstrwq_p): Change _coerce_ overloads.
2700 (__arm_vstrwq): Change _coerce_ overloads.
2701 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
2702 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
2703 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
2704 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
2705 (__arm_vsetq_lane): Change _coerce_ overloads.
2706 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
2707 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
2708 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
2709 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
2710 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
2711 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
2712 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
2713 (__arm_vidupq_x_u8): Change _coerce_ overloads.
2714 (__arm_vddupq_x_u8): Change _coerce_ overloads.
2715 (__arm_vidupq_x_u16): Change _coerce_ overloads.
2716 (__arm_vddupq_x_u16): Change _coerce_ overloads.
2717 (__arm_vidupq_x_u32): Change _coerce_ overloads.
2718 (__arm_vddupq_x_u32): Change _coerce_ overloads.
2719 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
2720 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
2721 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
2722 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
2723 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
2724 (__arm_vidupq_u16): Change _coerce_ overloads.
2725 (__arm_vidupq_u32): Change _coerce_ overloads.
2726 (__arm_vidupq_u8): Change _coerce_ overloads.
2727 (__arm_vddupq_u16): Change _coerce_ overloads.
2728 (__arm_vddupq_u32): Change _coerce_ overloads.
2729 (__arm_vddupq_u8): Change _coerce_ overloads.
2730 (__arm_viwdupq_m): Change _coerce_ overloads.
2731 (__arm_viwdupq_u16): Change _coerce_ overloads.
2732 (__arm_viwdupq_u32): Change _coerce_ overloads.
2733 (__arm_viwdupq_u8): Change _coerce_ overloads.
2734 (__arm_vdwdupq_m): Change _coerce_ overloads.
2735 (__arm_vdwdupq_u16): Change _coerce_ overloads.
2736 (__arm_vdwdupq_u32): Change _coerce_ overloads.
2737 (__arm_vdwdupq_u8): Change _coerce_ overloads.
2738 (__arm_vstrbq): Change _coerce_ overloads.
2739 (__arm_vstrbq_p): Change _coerce_ overloads.
2740 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
2741 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
2742 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
2743 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
2744 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
2745
2746 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2747
2748 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
2749 scalar constant.
2750
2751 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2752
2753 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
2754 (__arm_vadcq_u32): Likewise.
2755 (__arm_vadcq_m_s32): Likewise.
2756 (__arm_vadcq_m_u32): Likewise.
2757 (__arm_vsbcq_s32): Likewise.
2758 (__arm_vsbcq_u32): Likewise.
2759 (__arm_vsbcq_m_s32): Likewise.
2760 (__arm_vsbcq_m_u32): Likewise.
2761 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
2762
2763 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
2764
2765 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
2766 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
2767 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
2768 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
2769 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
2770 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
2771 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
2772 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
2773 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
2774 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
2775 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
2776 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
2777 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
2778 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
2779 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
2780 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
2781 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
2782 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
2783 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
2784 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
2785 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
2786 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
2787 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
2788 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
2789 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
2790 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
2791 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
2792 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
2793 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
2794 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
2795 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
2796 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
2797 (mve_vorrq_m_f<mode>)
2798 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
2799 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
2800 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
2801 capitalization in the emitted asm.
2802
2803 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
2804
2805 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
2806 predicates.md.
2807 (Ri): Move constraint definition from predicates.md.
2808 (Rl): Define new constraint.
2809 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
2810 missing constraint.
2811 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
2812 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
2813 op 2. Fix asm output spacing.
2814 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
2815 * config/arm/predicates.md (Ri) Move constraint to constraints.md
2816 (mve_vldrd_immediate): Move it from
2817 constraints.md.
2818 (mve_vstrw_immediate): New predicate.
2819
2820 2023-05-18 Pan Li <pan2.li@intel.com>
2821 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2822 Kito Cheng <kito.cheng@sifive.com>
2823 Richard Biener <rguenther@suse.de>
2824 Richard Sandiford <richard.sandiford@arm.com>
2825
2826 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
2827 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
2828 (struct table_elt): Extend machine_mode to 16 bits.
2829 (struct set): Ditto.
2830 * genmodes.cc (emit_mode_wider): Extend type from char to short.
2831 (emit_mode_complex): Ditto.
2832 (emit_mode_inner): Ditto.
2833 (emit_class_narrowest_mode): Ditto.
2834 * genopinit.cc (main): Extend the machine_mode limit.
2835 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
2836 re-ordered the struct fields for padding.
2837 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
2838 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
2839 (get_mode_alignment): Extend type from char to short.
2840 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
2841 removed the ATTRIBUTE_PACKED.
2842 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
2843 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
2844 m_kind to 2 bits and remove m_spare.
2845 * rtl.h (RTX_CODE_BITSIZE): New macro.
2846 (struct rtx_def): Swap both the bit size and location between the
2847 rtx_code and the machine_mode.
2848 (subreg_shape::unique_id): Extend the machine_mode limit.
2849 * rtlanal.h: Extend machine_mode to 16 bits.
2850 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
2851 bits and re-ordered the struct fields for padding.
2852 (struct tree_decl_common): Extend machine_mode to 16 bits.
2853
2854 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
2855
2856 * genrecog.cc (print_nonbool_test): Fix type error of
2857 switch (SUBREG_BYTE (op))'.
2858
2859 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
2860
2861 * common/config/riscv/riscv-common.cc: Remove
2862 trailing spaces on lines.
2863 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
2864 * config/riscv/riscv.h (enum reg_class): Likewise.
2865 * config/riscv/riscv.md: Likewise.
2866
2867 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
2868
2869 * config/pa/pa.md (clear_cache): New.
2870
2871 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
2872
2873 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
2874 parenthesis. Fix misnamed index entry.
2875 <concept>: Fix misnamed index entry.
2876
2877 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
2878
2879 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
2880 combined from ...
2881 (*<optab>si3_mask, *<optab>di3_mask): Here.
2882 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
2883 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
2884 pattern.
2885 (*<bitmanip_optab>si3_sext_mask): Likewise.
2886 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
2887 and const_di_mask_operand.
2888 (bitmanip_rotate): New iterator.
2889 (bitmanip_optab): Add rotates.
2890 * config/riscv/predicates.md (const_si_mask_operand): Renamed
2891 from const31_operand. Generalize to handle more mask constants.
2892 (const_di_mask_operand): Similarly.
2893
2894 2023-05-17 Jakub Jelinek <jakub@redhat.com>
2895
2896 PR c++/109884
2897 * config/i386/i386-builtin-types.def (FLOAT128): Use
2898 float128t_type_node rather than float128_type_node.
2899
2900 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
2901
2902 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
2903 FP_CONTRACT_FAST (no functional change).
2904
2905 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
2906
2907 * config/i386/i386.cc (ix86_multiplication_cost): Correct
2908 calcuation of integer vector mode costs to reflect generated
2909 instruction sequences of different integer vector modes and
2910 different target ABIs.
2911
2912 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2913
2914 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
2915 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
2916 (riscv_mode_needed): Ditto.
2917 (riscv_mode_after): Ditto.
2918 (riscv_mode_entry): Ditto.
2919 (riscv_mode_exit): Ditto.
2920 (riscv_mode_priority): Ditto.
2921 (TARGET_MODE_EMIT): New target hook.
2922 (TARGET_MODE_NEEDED): Ditto.
2923 (TARGET_MODE_AFTER): Ditto.
2924 (TARGET_MODE_ENTRY): Ditto.
2925 (TARGET_MODE_EXIT): Ditto.
2926 (TARGET_MODE_PRIORITY): Ditto.
2927 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
2928 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
2929 * config/riscv/riscv.md: Add csrwvxrm.
2930 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
2931 (vxrmsi): New pattern.
2932
2933 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2934
2935 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
2936 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
2937 (struct narrow_alu_def): Ditto.
2938 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
2939 (function_expander::use_exact_insn): Ditto.
2940 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
2941 (function_base::has_rounding_mode_operand_p): New function.
2942
2943 2023-05-17 Andrew Pinski <apinski@marvell.com>
2944
2945 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
2946 against 0 instead of calling integer_zerop.
2947
2948 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2949
2950 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
2951 (DEF_RVV_VXRM_ENUM): New macro.
2952 (handle_pragma_vector): Add vxrm enum register.
2953 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
2954 (RNU): Ditto.
2955 (RNE): Ditto.
2956 (RDN): Ditto.
2957 (ROD): Ditto.
2958
2959 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
2960
2961 * value-range.h (Value_Range::operator=): New.
2962
2963 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
2964
2965 * value-range.cc (vrange::operator=): Add a stub to copy
2966 unsupported ranges.
2967 * value-range.h (is_a <unsupported_range>): New.
2968 (Value_Range::operator=): Support copying unsupported ranges.
2969
2970 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
2971
2972 * data-streamer-in.cc (streamer_read_real_value): New.
2973 (streamer_read_value_range): New.
2974 * data-streamer-out.cc (streamer_write_real_value): New.
2975 (streamer_write_vrange): New.
2976 * data-streamer.h (streamer_write_vrange): New.
2977 (streamer_read_value_range): New.
2978
2979 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
2980
2981 PR c++/109532
2982 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
2983 is ignored for a fixed underlying type.
2984 (C++ Dialect Options): Likewise for -fstrict-enums.
2985
2986 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
2987
2988 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
2989 special case.
2990
2991 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
2992
2993 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
2994 New.
2995 (s390_atomic_align_for_mode): New.
2996
2997 2023-05-17 Jakub Jelinek <jakub@redhat.com>
2998
2999 * wide-int.cc (wi::from_array): Add missing closing paren in function
3000 comment.
3001
3002 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
3003
3004 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
3005 suggested unroll factor once the previous analysis fails.
3006
3007 2023-05-17 Pan Li <pan2.li@intel.com>
3008
3009 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
3010 macro.
3011 (main): Add bool1 to the type indexer.
3012 * config/riscv/riscv-vector-builtins-functions.def
3013 (vreinterpret): Register vbool1 interpret function.
3014 * config/riscv/riscv-vector-builtins-types.def
3015 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
3016 (vint8m1_t): Add the type to bool1_interpret_ops.
3017 (vint16m1_t): Ditto.
3018 (vint32m1_t): Ditto.
3019 (vint64m1_t): Ditto.
3020 (vuint8m1_t): Ditto.
3021 (vuint16m1_t): Ditto.
3022 (vuint32m1_t): Ditto.
3023 (vuint64m1_t): Ditto.
3024 * config/riscv/riscv-vector-builtins.cc
3025 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
3026 (required_extensions_p): Add bool1 interpret case.
3027 * config/riscv/riscv-vector-builtins.def
3028 (bool1_interpret): Add bool1 interpret to base type.
3029 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
3030 with VB dest for vreinterpret.
3031
3032 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
3033
3034 PR target/106708
3035 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
3036 constants through "lis; xoris".
3037
3038 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
3039
3040 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
3041 default rs6000 target pass for O2 and above.
3042 * doc/invoke.texi: Document -free
3043
3044 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
3045
3046 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
3047 Fix wrong select_kind...
3048
3049 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3050
3051 * config/s390/s390-protos.h (s390_expand_setmem): Change
3052 function signature.
3053 * config/s390/s390.cc (s390_expand_setmem): For memset's less
3054 than or equal to 256 byte do not perform a libc call.
3055 * config/s390/s390.md: Change expander into a version which
3056 takes 8 operands.
3057
3058 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3059
3060 * config/s390/s390-protos.h (s390_expand_movmem): New.
3061 * config/s390/s390.cc (s390_expand_movmem): New.
3062 * config/s390/s390.md (movmem<mode>): New.
3063 (*mvcrl): New.
3064 (mvcrl): New.
3065
3066 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3067
3068 * config/s390/s390-protos.h (s390_expand_cpymem): Change
3069 function signature.
3070 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
3071 than or equal to 256 byte do not perform a libc call.
3072 (s390_expand_insv): Adapt new function signature of
3073 s390_expand_cpymem.
3074 * config/s390/s390.md: Change expander into a version which
3075 takes 8 operands.
3076
3077 2023-05-16 Andrew Pinski <apinski@marvell.com>
3078
3079 PR tree-optimization/109424
3080 * match.pd: Add patterns for min/max of zero_one_valued
3081 values to `&`/`|`.
3082
3083 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3084
3085 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
3086 * config/riscv/riscv-vector-builtins.cc
3087 (function_expander::use_ternop_insn): Add default rounding mode.
3088 (function_expander::use_widen_ternop_insn): Ditto.
3089 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
3090 (riscv_hard_regno_mode_ok): Ditto.
3091 (riscv_conditional_register_usage): Ditto.
3092 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
3093 (FRM_REG_P): Ditto.
3094 (RISCV_DWARF_FRM): Ditto.
3095 * config/riscv/riscv.md: Ditto.
3096 * config/riscv/vector-iterators.md: split no frm and has frm operations.
3097 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
3098 (@pred_<optab><mode>): Ditto.
3099
3100 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
3101
3102 PR tree-optimization/109695
3103 * value-range.cc (irange::operator=): Resize range.
3104 (irange::union_): Same.
3105 (irange::intersect): Same.
3106 (irange::invert): Same.
3107 (int_range_max): Default to 3 sub-ranges and resize as needed.
3108 * value-range.h (irange::maybe_resize): New.
3109 (~int_range): New.
3110 (int_range::int_range): Adjust for resizing.
3111 (int_range::operator=): Same.
3112
3113 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
3114
3115 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
3116 range copying
3117 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
3118 when range changed.
3119
3120 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3121
3122 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
3123 * config/riscv/riscv-vector-builtins.cc
3124 (function_expander::use_exact_insn): Add default rounding mode operand.
3125 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
3126 (riscv_hard_regno_mode_ok): Ditto.
3127 (riscv_conditional_register_usage): Ditto.
3128 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
3129 (VXRM_REG_P): Ditto.
3130 (RISCV_DWARF_VXRM): Ditto.
3131 * config/riscv/riscv.md: Ditto.
3132 * config/riscv/vector.md: Ditto
3133
3134 2023-05-15 Pan Li <pan2.li@intel.com>
3135
3136 * optabs.cc (maybe_gen_insn): Add case to generate instruction
3137 that has 11 operands.
3138
3139 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3140
3141 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
3142 logic for vector modes.
3143
3144 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3145
3146 PR target/99195
3147 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
3148 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
3149 (aarch64_cmtst<mode>): Rename to...
3150 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
3151 (*aarch64_cmtst_same_<mode>): Rename to...
3152 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
3153 (*aarch64_cmtstdi): Rename to...
3154 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
3155 (aarch64_fac<optab><mode>): Rename to...
3156 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
3157
3158 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3159
3160 PR target/99195
3161 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
3162 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
3163
3164 2023-05-15 Pan Li <pan2.li@intel.com>
3165 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3166 kito-cheng <kito.cheng@sifive.com>
3167
3168 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
3169 deciding the mode is constant or not.
3170 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
3171
3172 2023-05-15 Richard Biener <rguenther@suse.de>
3173
3174 PR tree-optimization/109848
3175 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
3176 TARGET_MEM_REF address preparation before the store, not
3177 before the CTOR.
3178
3179 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3180
3181 * config/riscv/riscv.cc
3182 (riscv_vectorize_preferred_vector_alignment): New function.
3183 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
3184
3185 2023-05-14 Andrew Pinski <apinski@marvell.com>
3186
3187 PR tree-optimization/109829
3188 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
3189
3190 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
3191
3192 PR target/109807
3193 * config/i386/i386.cc: Revert the 2023-05-11 change.
3194 (ix86_widen_mult_cost): Return high value instead of
3195 ICEing for unsupported modes.
3196
3197 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
3198
3199 * config/i386/i386.cc (x86_function_profiler): Take
3200 ix86_direct_extern_access into account when generating calls
3201 to __fentry__()
3202
3203 2023-05-14 Pan Li <pan2.li@intel.com>
3204
3205 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
3206 Refactor the or pattern to switch cases.
3207
3208 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3209
3210 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
3211 aarch64_expand_vector_init to this, and remove interleaving case.
3212 Recursively call aarch64_expand_vector_init_fallback, instead of
3213 aarch64_expand_vector_init.
3214 (aarch64_unzip_vector_init): New function.
3215 (aarch64_expand_vector_init): Likewise.
3216
3217 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
3218
3219 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
3220 Pull out function call from the gcc_assert.
3221
3222 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
3223
3224 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
3225 (policy_to_str): New.
3226 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
3227
3228 2023-05-13 Andrew Pinski <apinski@marvell.com>
3229
3230 PR tree-optimization/109834
3231 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
3232 (popcount(rotate(x,y))->popcount(x)): Likewise.
3233
3234 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
3235
3236 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
3237 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
3238 gen_extend_insn to generate zero/sign extension instructions.
3239 Fix comments.
3240 (ix86_expand_vecop_qihi): Initialize interleave functions
3241 for MULT code only. Fix comments.
3242
3243 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
3244
3245 PR target/109797
3246 * config/i386/mmx.md (mulv2si3): Remove expander.
3247 (mulv2si3): Rename insn pattern from *mulv2si.
3248
3249 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
3250
3251 PR libstdc++/109816
3252 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
3253 '!lto_stream_offload_p'.
3254
3255 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
3256 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3257
3258 PR target/109743
3259 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
3260 (local_avl_compatible_p): New.
3261 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
3262 for LCM, rewrite as a backward algorithm.
3263 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
3264 interface, handle a BB at once.
3265
3266 2023-05-12 Richard Biener <rguenther@suse.de>
3267
3268 PR tree-optimization/64731
3269 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
3270 handle TARGET_MEM_REF destinations of stores from vector
3271 CTORs.
3272
3273 2023-05-12 Richard Biener <rguenther@suse.de>
3274
3275 PR tree-optimization/109791
3276 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
3277 New pattern.
3278 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
3279 Likewise.
3280
3281 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3282
3283 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
3284 * config/arm/arm-mve-builtins-base.def (vsriq): New.
3285 * config/arm/arm-mve-builtins-base.h (vsriq): New.
3286 * config/arm/arm-mve-builtins.cc
3287 (function_instance::has_inactive_argument): Handle vsriq.
3288 * config/arm/arm_mve.h (vsriq): Remove.
3289 (vsriq_m): Remove.
3290 (vsriq_n_u8): Remove.
3291 (vsriq_n_s8): Remove.
3292 (vsriq_n_u16): Remove.
3293 (vsriq_n_s16): Remove.
3294 (vsriq_n_u32): Remove.
3295 (vsriq_n_s32): Remove.
3296 (vsriq_m_n_s8): Remove.
3297 (vsriq_m_n_u8): Remove.
3298 (vsriq_m_n_s16): Remove.
3299 (vsriq_m_n_u16): Remove.
3300 (vsriq_m_n_s32): Remove.
3301 (vsriq_m_n_u32): Remove.
3302 (__arm_vsriq_n_u8): Remove.
3303 (__arm_vsriq_n_s8): Remove.
3304 (__arm_vsriq_n_u16): Remove.
3305 (__arm_vsriq_n_s16): Remove.
3306 (__arm_vsriq_n_u32): Remove.
3307 (__arm_vsriq_n_s32): Remove.
3308 (__arm_vsriq_m_n_s8): Remove.
3309 (__arm_vsriq_m_n_u8): Remove.
3310 (__arm_vsriq_m_n_s16): Remove.
3311 (__arm_vsriq_m_n_u16): Remove.
3312 (__arm_vsriq_m_n_s32): Remove.
3313 (__arm_vsriq_m_n_u32): Remove.
3314 (__arm_vsriq): Remove.
3315 (__arm_vsriq_m): Remove.
3316
3317 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3318
3319 * config/arm/iterators.md (mve_insn): Add vsri.
3320 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
3321 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
3322 (mve_vsriq_m_n_<supf><mode>): Rename into ...
3323 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3324
3325 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3326
3327 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
3328 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
3329
3330 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3331
3332 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
3333 * config/arm/arm-mve-builtins-base.def (vsliq): New.
3334 * config/arm/arm-mve-builtins-base.h (vsliq): New.
3335 * config/arm/arm-mve-builtins.cc
3336 (function_instance::has_inactive_argument): Handle vsliq.
3337 * config/arm/arm_mve.h (vsliq): Remove.
3338 (vsliq_m): Remove.
3339 (vsliq_n_u8): Remove.
3340 (vsliq_n_s8): Remove.
3341 (vsliq_n_u16): Remove.
3342 (vsliq_n_s16): Remove.
3343 (vsliq_n_u32): Remove.
3344 (vsliq_n_s32): Remove.
3345 (vsliq_m_n_s8): Remove.
3346 (vsliq_m_n_s32): Remove.
3347 (vsliq_m_n_s16): Remove.
3348 (vsliq_m_n_u8): Remove.
3349 (vsliq_m_n_u32): Remove.
3350 (vsliq_m_n_u16): Remove.
3351 (__arm_vsliq_n_u8): Remove.
3352 (__arm_vsliq_n_s8): Remove.
3353 (__arm_vsliq_n_u16): Remove.
3354 (__arm_vsliq_n_s16): Remove.
3355 (__arm_vsliq_n_u32): Remove.
3356 (__arm_vsliq_n_s32): Remove.
3357 (__arm_vsliq_m_n_s8): Remove.
3358 (__arm_vsliq_m_n_s32): Remove.
3359 (__arm_vsliq_m_n_s16): Remove.
3360 (__arm_vsliq_m_n_u8): Remove.
3361 (__arm_vsliq_m_n_u32): Remove.
3362 (__arm_vsliq_m_n_u16): Remove.
3363 (__arm_vsliq): Remove.
3364 (__arm_vsliq_m): Remove.
3365
3366 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3367
3368 * config/arm/iterators.md (mve_insn>): Add vsli.
3369 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
3370 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3371 (mve_vsliq_m_n_<supf><mode>): Rename into ...
3372 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3373
3374 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3375
3376 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
3377 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
3378
3379 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3380
3381 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
3382 * config/arm/arm-mve-builtins-base.def (vpselq): New.
3383 * config/arm/arm-mve-builtins-base.h (vpselq): New.
3384 * config/arm/arm_mve.h (vpselq): Remove.
3385 (vpselq_u8): Remove.
3386 (vpselq_s8): Remove.
3387 (vpselq_u16): Remove.
3388 (vpselq_s16): Remove.
3389 (vpselq_u32): Remove.
3390 (vpselq_s32): Remove.
3391 (vpselq_u64): Remove.
3392 (vpselq_s64): Remove.
3393 (vpselq_f16): Remove.
3394 (vpselq_f32): Remove.
3395 (__arm_vpselq_u8): Remove.
3396 (__arm_vpselq_s8): Remove.
3397 (__arm_vpselq_u16): Remove.
3398 (__arm_vpselq_s16): Remove.
3399 (__arm_vpselq_u32): Remove.
3400 (__arm_vpselq_s32): Remove.
3401 (__arm_vpselq_u64): Remove.
3402 (__arm_vpselq_s64): Remove.
3403 (__arm_vpselq_f16): Remove.
3404 (__arm_vpselq_f32): Remove.
3405 (__arm_vpselq): Remove.
3406
3407 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3408
3409 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
3410 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
3411
3412 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3413
3414 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
3415 gen_mve_vpselq.
3416 * config/arm/iterators.md (MVE_VPSELQ_F): New.
3417 (mve_insn): Add vpsel.
3418 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
3419 (@mve_<mve_insn>q_<supf><mode>): ... this.
3420 (@mve_vpselq_f<mode>): Rename into ...
3421 (@mve_<mve_insn>q_f<mode>): ... this.
3422
3423 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3424
3425 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
3426 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
3427 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
3428 * config/arm/arm-mve-builtins.cc
3429 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
3430 vfmsq.
3431 * config/arm/arm_mve.h (vfmaq): Remove.
3432 (vfmasq): Remove.
3433 (vfmsq): Remove.
3434 (vfmaq_m): Remove.
3435 (vfmasq_m): Remove.
3436 (vfmsq_m): Remove.
3437 (vfmaq_f16): Remove.
3438 (vfmaq_n_f16): Remove.
3439 (vfmasq_n_f16): Remove.
3440 (vfmsq_f16): Remove.
3441 (vfmaq_f32): Remove.
3442 (vfmaq_n_f32): Remove.
3443 (vfmasq_n_f32): Remove.
3444 (vfmsq_f32): Remove.
3445 (vfmaq_m_f32): Remove.
3446 (vfmaq_m_f16): Remove.
3447 (vfmaq_m_n_f32): Remove.
3448 (vfmaq_m_n_f16): Remove.
3449 (vfmasq_m_n_f32): Remove.
3450 (vfmasq_m_n_f16): Remove.
3451 (vfmsq_m_f32): Remove.
3452 (vfmsq_m_f16): Remove.
3453 (__arm_vfmaq_f16): Remove.
3454 (__arm_vfmaq_n_f16): Remove.
3455 (__arm_vfmasq_n_f16): Remove.
3456 (__arm_vfmsq_f16): Remove.
3457 (__arm_vfmaq_f32): Remove.
3458 (__arm_vfmaq_n_f32): Remove.
3459 (__arm_vfmasq_n_f32): Remove.
3460 (__arm_vfmsq_f32): Remove.
3461 (__arm_vfmaq_m_f32): Remove.
3462 (__arm_vfmaq_m_f16): Remove.
3463 (__arm_vfmaq_m_n_f32): Remove.
3464 (__arm_vfmaq_m_n_f16): Remove.
3465 (__arm_vfmasq_m_n_f32): Remove.
3466 (__arm_vfmasq_m_n_f16): Remove.
3467 (__arm_vfmsq_m_f32): Remove.
3468 (__arm_vfmsq_m_f16): Remove.
3469 (__arm_vfmaq): Remove.
3470 (__arm_vfmasq): Remove.
3471 (__arm_vfmsq): Remove.
3472 (__arm_vfmaq_m): Remove.
3473 (__arm_vfmasq_m): Remove.
3474 (__arm_vfmsq_m): Remove.
3475
3476 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3477
3478 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
3479 VFMSQ_M_F.
3480 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
3481 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
3482 (mve_insn): Add vfma, vfmas, vfms.
3483 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
3484 into ...
3485 (@mve_<mve_insn>q_f<mode>): ... this.
3486 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
3487 (@mve_<mve_insn>q_n_f<mode>): ... this.
3488 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
3489 @mve_<mve_insn>q_m_f<mode>.
3490 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
3491 @mve_<mve_insn>q_m_n_f<mode>.
3492
3493 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3494
3495 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
3496 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
3497
3498 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3499
3500 * config/arm/arm-mve-builtins-base.cc
3501 (FUNCTION_WITH_RTX_M_N_NO_F): New.
3502 (vmvnq): New.
3503 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
3504 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
3505 * config/arm/arm_mve.h (vmvnq): Remove.
3506 (vmvnq_m): Remove.
3507 (vmvnq_x): Remove.
3508 (vmvnq_s8): Remove.
3509 (vmvnq_s16): Remove.
3510 (vmvnq_s32): Remove.
3511 (vmvnq_n_s16): Remove.
3512 (vmvnq_n_s32): Remove.
3513 (vmvnq_u8): Remove.
3514 (vmvnq_u16): Remove.
3515 (vmvnq_u32): Remove.
3516 (vmvnq_n_u16): Remove.
3517 (vmvnq_n_u32): Remove.
3518 (vmvnq_m_u8): Remove.
3519 (vmvnq_m_s8): Remove.
3520 (vmvnq_m_u16): Remove.
3521 (vmvnq_m_s16): Remove.
3522 (vmvnq_m_u32): Remove.
3523 (vmvnq_m_s32): Remove.
3524 (vmvnq_m_n_s16): Remove.
3525 (vmvnq_m_n_u16): Remove.
3526 (vmvnq_m_n_s32): Remove.
3527 (vmvnq_m_n_u32): Remove.
3528 (vmvnq_x_s8): Remove.
3529 (vmvnq_x_s16): Remove.
3530 (vmvnq_x_s32): Remove.
3531 (vmvnq_x_u8): Remove.
3532 (vmvnq_x_u16): Remove.
3533 (vmvnq_x_u32): Remove.
3534 (vmvnq_x_n_s16): Remove.
3535 (vmvnq_x_n_s32): Remove.
3536 (vmvnq_x_n_u16): Remove.
3537 (vmvnq_x_n_u32): Remove.
3538 (__arm_vmvnq_s8): Remove.
3539 (__arm_vmvnq_s16): Remove.
3540 (__arm_vmvnq_s32): Remove.
3541 (__arm_vmvnq_n_s16): Remove.
3542 (__arm_vmvnq_n_s32): Remove.
3543 (__arm_vmvnq_u8): Remove.
3544 (__arm_vmvnq_u16): Remove.
3545 (__arm_vmvnq_u32): Remove.
3546 (__arm_vmvnq_n_u16): Remove.
3547 (__arm_vmvnq_n_u32): Remove.
3548 (__arm_vmvnq_m_u8): Remove.
3549 (__arm_vmvnq_m_s8): Remove.
3550 (__arm_vmvnq_m_u16): Remove.
3551 (__arm_vmvnq_m_s16): Remove.
3552 (__arm_vmvnq_m_u32): Remove.
3553 (__arm_vmvnq_m_s32): Remove.
3554 (__arm_vmvnq_m_n_s16): Remove.
3555 (__arm_vmvnq_m_n_u16): Remove.
3556 (__arm_vmvnq_m_n_s32): Remove.
3557 (__arm_vmvnq_m_n_u32): Remove.
3558 (__arm_vmvnq_x_s8): Remove.
3559 (__arm_vmvnq_x_s16): Remove.
3560 (__arm_vmvnq_x_s32): Remove.
3561 (__arm_vmvnq_x_u8): Remove.
3562 (__arm_vmvnq_x_u16): Remove.
3563 (__arm_vmvnq_x_u32): Remove.
3564 (__arm_vmvnq_x_n_s16): Remove.
3565 (__arm_vmvnq_x_n_s32): Remove.
3566 (__arm_vmvnq_x_n_u16): Remove.
3567 (__arm_vmvnq_x_n_u32): Remove.
3568 (__arm_vmvnq): Remove.
3569 (__arm_vmvnq_m): Remove.
3570 (__arm_vmvnq_x): Remove.
3571
3572 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3573
3574 * config/arm/iterators.md (mve_insn): Add vmvn.
3575 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
3576 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3577 (mve_vmvnq_m_<supf><mode>): Rename into ...
3578 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
3579 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
3580 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3581
3582 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3583
3584 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
3585 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
3586
3587 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3588
3589 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
3590 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
3591 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
3592 * config/arm/arm_mve.h (vbrsrq): Remove.
3593 (vbrsrq_m): Remove.
3594 (vbrsrq_x): Remove.
3595 (vbrsrq_n_f16): Remove.
3596 (vbrsrq_n_f32): Remove.
3597 (vbrsrq_n_u8): Remove.
3598 (vbrsrq_n_s8): Remove.
3599 (vbrsrq_n_u16): Remove.
3600 (vbrsrq_n_s16): Remove.
3601 (vbrsrq_n_u32): Remove.
3602 (vbrsrq_n_s32): Remove.
3603 (vbrsrq_m_n_s8): Remove.
3604 (vbrsrq_m_n_s32): Remove.
3605 (vbrsrq_m_n_s16): Remove.
3606 (vbrsrq_m_n_u8): Remove.
3607 (vbrsrq_m_n_u32): Remove.
3608 (vbrsrq_m_n_u16): Remove.
3609 (vbrsrq_m_n_f32): Remove.
3610 (vbrsrq_m_n_f16): Remove.
3611 (vbrsrq_x_n_s8): Remove.
3612 (vbrsrq_x_n_s16): Remove.
3613 (vbrsrq_x_n_s32): Remove.
3614 (vbrsrq_x_n_u8): Remove.
3615 (vbrsrq_x_n_u16): Remove.
3616 (vbrsrq_x_n_u32): Remove.
3617 (vbrsrq_x_n_f16): Remove.
3618 (vbrsrq_x_n_f32): Remove.
3619 (__arm_vbrsrq_n_u8): Remove.
3620 (__arm_vbrsrq_n_s8): Remove.
3621 (__arm_vbrsrq_n_u16): Remove.
3622 (__arm_vbrsrq_n_s16): Remove.
3623 (__arm_vbrsrq_n_u32): Remove.
3624 (__arm_vbrsrq_n_s32): Remove.
3625 (__arm_vbrsrq_m_n_s8): Remove.
3626 (__arm_vbrsrq_m_n_s32): Remove.
3627 (__arm_vbrsrq_m_n_s16): Remove.
3628 (__arm_vbrsrq_m_n_u8): Remove.
3629 (__arm_vbrsrq_m_n_u32): Remove.
3630 (__arm_vbrsrq_m_n_u16): Remove.
3631 (__arm_vbrsrq_x_n_s8): Remove.
3632 (__arm_vbrsrq_x_n_s16): Remove.
3633 (__arm_vbrsrq_x_n_s32): Remove.
3634 (__arm_vbrsrq_x_n_u8): Remove.
3635 (__arm_vbrsrq_x_n_u16): Remove.
3636 (__arm_vbrsrq_x_n_u32): Remove.
3637 (__arm_vbrsrq_n_f16): Remove.
3638 (__arm_vbrsrq_n_f32): Remove.
3639 (__arm_vbrsrq_m_n_f32): Remove.
3640 (__arm_vbrsrq_m_n_f16): Remove.
3641 (__arm_vbrsrq_x_n_f16): Remove.
3642 (__arm_vbrsrq_x_n_f32): Remove.
3643 (__arm_vbrsrq): Remove.
3644 (__arm_vbrsrq_m): Remove.
3645 (__arm_vbrsrq_x): Remove.
3646
3647 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3648
3649 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
3650 (mve_insn): Add vbrsr.
3651 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
3652 (@mve_<mve_insn>q_n_f<mode>): ... this.
3653 (mve_vbrsrq_n_<supf><mode>): Rename into ...
3654 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3655 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
3656 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3657 (mve_vbrsrq_m_n_f<mode>): Rename into ...
3658 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
3659
3660 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3661
3662 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
3663 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
3664
3665 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3666
3667 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
3668 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
3669 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
3670 * config/arm/arm_mve.h (vqshluq): Remove.
3671 (vqshluq_m): Remove.
3672 (vqshluq_n_s8): Remove.
3673 (vqshluq_n_s16): Remove.
3674 (vqshluq_n_s32): Remove.
3675 (vqshluq_m_n_s8): Remove.
3676 (vqshluq_m_n_s16): Remove.
3677 (vqshluq_m_n_s32): Remove.
3678 (__arm_vqshluq_n_s8): Remove.
3679 (__arm_vqshluq_n_s16): Remove.
3680 (__arm_vqshluq_n_s32): Remove.
3681 (__arm_vqshluq_m_n_s8): Remove.
3682 (__arm_vqshluq_m_n_s16): Remove.
3683 (__arm_vqshluq_m_n_s32): Remove.
3684 (__arm_vqshluq): Remove.
3685 (__arm_vqshluq_m): Remove.
3686
3687 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3688
3689 * config/arm/iterators.md (mve_insn): Add vqshlu.
3690 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
3691 (VQSHLUQ_M_N, VQSHLUQ_N): New.
3692 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
3693 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3694 (mve_vqshluq_m_n_s<mode>): Change name into ...
3695 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3696
3697 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3698
3699 * config/arm/arm-mve-builtins-shapes.cc
3700 (binary_lshift_unsigned): New.
3701 * config/arm/arm-mve-builtins-shapes.h
3702 (binary_lshift_unsigned): New.
3703
3704 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3705
3706 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
3707 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3708 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
3709 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3710 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
3711 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3712 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
3713 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
3714 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
3715 (vrmlaldavhaxq): Remove.
3716 (vrmlsldavhaq): Remove.
3717 (vrmlsldavhaxq): Remove.
3718 (vrmlaldavhaq_p): Remove.
3719 (vrmlaldavhaxq_p): Remove.
3720 (vrmlsldavhaq_p): Remove.
3721 (vrmlsldavhaxq_p): Remove.
3722 (vrmlaldavhaq_s32): Remove.
3723 (vrmlaldavhaq_u32): Remove.
3724 (vrmlaldavhaxq_s32): Remove.
3725 (vrmlsldavhaq_s32): Remove.
3726 (vrmlsldavhaxq_s32): Remove.
3727 (vrmlaldavhaq_p_s32): Remove.
3728 (vrmlaldavhaq_p_u32): Remove.
3729 (vrmlaldavhaxq_p_s32): Remove.
3730 (vrmlsldavhaq_p_s32): Remove.
3731 (vrmlsldavhaxq_p_s32): Remove.
3732 (__arm_vrmlaldavhaq_s32): Remove.
3733 (__arm_vrmlaldavhaq_u32): Remove.
3734 (__arm_vrmlaldavhaxq_s32): Remove.
3735 (__arm_vrmlsldavhaq_s32): Remove.
3736 (__arm_vrmlsldavhaxq_s32): Remove.
3737 (__arm_vrmlaldavhaq_p_s32): Remove.
3738 (__arm_vrmlaldavhaq_p_u32): Remove.
3739 (__arm_vrmlaldavhaxq_p_s32): Remove.
3740 (__arm_vrmlsldavhaq_p_s32): Remove.
3741 (__arm_vrmlsldavhaxq_p_s32): Remove.
3742 (__arm_vrmlaldavhaq): Remove.
3743 (__arm_vrmlaldavhaxq): Remove.
3744 (__arm_vrmlsldavhaq): Remove.
3745 (__arm_vrmlsldavhaxq): Remove.
3746 (__arm_vrmlaldavhaq_p): Remove.
3747 (__arm_vrmlaldavhaxq_p): Remove.
3748 (__arm_vrmlsldavhaq_p): Remove.
3749 (__arm_vrmlsldavhaxq_p): Remove.
3750
3751 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3752
3753 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
3754 (MVE_VRMLxLDAVHAxQ_P): New.
3755 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
3756 vrmlsldavhax.
3757 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
3758 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
3759 VRMLALDAVHAQ_P_S.
3760 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
3761 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
3762 (mve_vrmlsldavhaq_sv4si): Merge into ...
3763 (@mve_<mve_insn>q_<supf>v4si): ... this.
3764 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
3765 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
3766 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
3767 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
3768
3769 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3770
3771 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
3772 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
3773 New.
3774 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
3775 * config/arm/arm_mve.h (vqdmulltq): Remove.
3776 (vqdmullbq): Remove.
3777 (vqdmullbq_m): Remove.
3778 (vqdmulltq_m): Remove.
3779 (vqdmulltq_s16): Remove.
3780 (vqdmulltq_n_s16): Remove.
3781 (vqdmullbq_s16): Remove.
3782 (vqdmullbq_n_s16): Remove.
3783 (vqdmulltq_s32): Remove.
3784 (vqdmulltq_n_s32): Remove.
3785 (vqdmullbq_s32): Remove.
3786 (vqdmullbq_n_s32): Remove.
3787 (vqdmullbq_m_n_s32): Remove.
3788 (vqdmullbq_m_n_s16): Remove.
3789 (vqdmullbq_m_s32): Remove.
3790 (vqdmullbq_m_s16): Remove.
3791 (vqdmulltq_m_n_s32): Remove.
3792 (vqdmulltq_m_n_s16): Remove.
3793 (vqdmulltq_m_s32): Remove.
3794 (vqdmulltq_m_s16): Remove.
3795 (__arm_vqdmulltq_s16): Remove.
3796 (__arm_vqdmulltq_n_s16): Remove.
3797 (__arm_vqdmullbq_s16): Remove.
3798 (__arm_vqdmullbq_n_s16): Remove.
3799 (__arm_vqdmulltq_s32): Remove.
3800 (__arm_vqdmulltq_n_s32): Remove.
3801 (__arm_vqdmullbq_s32): Remove.
3802 (__arm_vqdmullbq_n_s32): Remove.
3803 (__arm_vqdmullbq_m_n_s32): Remove.
3804 (__arm_vqdmullbq_m_n_s16): Remove.
3805 (__arm_vqdmullbq_m_s32): Remove.
3806 (__arm_vqdmullbq_m_s16): Remove.
3807 (__arm_vqdmulltq_m_n_s32): Remove.
3808 (__arm_vqdmulltq_m_n_s16): Remove.
3809 (__arm_vqdmulltq_m_s32): Remove.
3810 (__arm_vqdmulltq_m_s16): Remove.
3811 (__arm_vqdmulltq): Remove.
3812 (__arm_vqdmullbq): Remove.
3813 (__arm_vqdmullbq_m): Remove.
3814 (__arm_vqdmulltq_m): Remove.
3815
3816 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3817
3818 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
3819 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
3820 (mve_insn): Add vqdmullb, vqdmullt.
3821 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
3822 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
3823 VQDMULLTQ_N_S.
3824 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
3825 (mve_vqdmulltq_n_s<mode>): Merge into ...
3826 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3827 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
3828 (@mve_<mve_insn>q_<supf><mode>): ... this.
3829 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
3830 ...
3831 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3832 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
3833 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
3834
3835 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3836
3837 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
3838 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
3839
3840 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
3841
3842 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
3843 Drop unused parameter.
3844 (riscv_select_multilib): Ditto.
3845 (riscv_compute_multilib): Update call site of
3846 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
3847
3848 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
3849
3850 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
3851 * config/riscv/riscv-protos.h (expand_vec_init): New function.
3852 * config/riscv/riscv-v.cc (class rvv_builder): New class.
3853 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
3854 (rvv_builder::get_merged_repeating_sequence): Ditto.
3855 (expand_vector_init_insert_elems): Ditto.
3856 (expand_vec_init): Ditto.
3857 * config/riscv/vector-iterators.md: New attribute.
3858
3859 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
3860
3861 * config/rs6000/rs6000-builtins.def
3862 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
3863 to xsiexpdp_di.
3864 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
3865 xsiexpdpf to xsiexpdpf_di.
3866 * config/rs6000/vsx.md (xsiexpdp): Rename to...
3867 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
3868 replace TARGET_64BIT with TARGET_POWERPC64.
3869 (xsiexpdpf): Rename to...
3870 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
3871 replace TARGET_64BIT with TARGET_POWERPC64.
3872
3873 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
3874
3875 * config/rs6000/rs6000-builtins.def
3876 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
3877 long long.
3878 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
3879 TARGET_POWERPC64.
3880
3881 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
3882
3883 * config/rs6000/rs6000-builtins.def
3884 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
3885 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
3886 to power9 catalog.
3887 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
3888 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
3889 TARGET_64BIT check.
3890 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
3891 requirement when it has a 64-bit argument.
3892
3893 2023-05-12 Pan Li <pan2.li@intel.com>
3894 Richard Sandiford <richard.sandiford@arm.com>
3895 Richard Biener <rguenther@suse.de>
3896 Jakub Jelinek <jakub@redhat.com>
3897
3898 * mux-utils.h: Add overload operator == and != for pointer_mux.
3899 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
3900 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
3901 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
3902 (dv_as_decl): Ditto.
3903 (dv_as_opaque): Removed due to unnecessary.
3904 (struct variable_hasher): Take decl_or_value as compare_type.
3905 (variable_hasher::equal): Diito.
3906 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
3907 (dv_from_value): Ditto.
3908 (attrs_list_member): Ditto.
3909 (vars_copy): Ditto.
3910 (var_reg_decl_set): Ditto.
3911 (var_reg_delete_and_set): Ditto.
3912 (find_loc_in_1pdv): Ditto.
3913 (canonicalize_values_star): Ditto.
3914 (variable_post_merge_new_vals): Ditto.
3915 (dump_onepart_variable_differences): Ditto.
3916 (variable_different_p): Ditto.
3917 (set_slot_part): Ditto.
3918 (clobber_slot_part): Ditto.
3919 (clobber_variable_part): Ditto.
3920
3921 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
3922
3923 * match.pd: simplify vector shift + bit_and + multiply.
3924
3925 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
3926
3927 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
3928 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
3929 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
3930 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
3931 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
3932 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
3933 * config/arm/arm-mve-builtins.cc
3934 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
3935 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
3936 * config/arm/arm_mve.h (vqrdmlashq): Remove.
3937 (vqrdmlahq): Remove.
3938 (vqdmlashq): Remove.
3939 (vqdmlahq): Remove.
3940 (vmlasq): Remove.
3941 (vmlaq): Remove.
3942 (vmlaq_m): Remove.
3943 (vmlasq_m): Remove.
3944 (vqdmlashq_m): Remove.
3945 (vqdmlahq_m): Remove.
3946 (vqrdmlahq_m): Remove.
3947 (vqrdmlashq_m): Remove.
3948 (vmlasq_n_u8): Remove.
3949 (vmlaq_n_u8): Remove.
3950 (vqrdmlashq_n_s8): Remove.
3951 (vqrdmlahq_n_s8): Remove.
3952 (vqdmlahq_n_s8): Remove.
3953 (vqdmlashq_n_s8): Remove.
3954 (vmlasq_n_s8): Remove.
3955 (vmlaq_n_s8): Remove.
3956 (vmlasq_n_u16): Remove.
3957 (vmlaq_n_u16): Remove.
3958 (vqrdmlashq_n_s16): Remove.
3959 (vqrdmlahq_n_s16): Remove.
3960 (vqdmlashq_n_s16): Remove.
3961 (vqdmlahq_n_s16): Remove.
3962 (vmlasq_n_s16): Remove.
3963 (vmlaq_n_s16): Remove.
3964 (vmlasq_n_u32): Remove.
3965 (vmlaq_n_u32): Remove.
3966 (vqrdmlashq_n_s32): Remove.
3967 (vqrdmlahq_n_s32): Remove.
3968 (vqdmlashq_n_s32): Remove.
3969 (vqdmlahq_n_s32): Remove.
3970 (vmlasq_n_s32): Remove.
3971 (vmlaq_n_s32): Remove.
3972 (vmlaq_m_n_s8): Remove.
3973 (vmlaq_m_n_s32): Remove.
3974 (vmlaq_m_n_s16): Remove.
3975 (vmlaq_m_n_u8): Remove.
3976 (vmlaq_m_n_u32): Remove.
3977 (vmlaq_m_n_u16): Remove.
3978 (vmlasq_m_n_s8): Remove.
3979 (vmlasq_m_n_s32): Remove.
3980 (vmlasq_m_n_s16): Remove.
3981 (vmlasq_m_n_u8): Remove.
3982 (vmlasq_m_n_u32): Remove.
3983 (vmlasq_m_n_u16): Remove.
3984 (vqdmlashq_m_n_s8): Remove.
3985 (vqdmlashq_m_n_s32): Remove.
3986 (vqdmlashq_m_n_s16): Remove.
3987 (vqdmlahq_m_n_s8): Remove.
3988 (vqdmlahq_m_n_s32): Remove.
3989 (vqdmlahq_m_n_s16): Remove.
3990 (vqrdmlahq_m_n_s8): Remove.
3991 (vqrdmlahq_m_n_s32): Remove.
3992 (vqrdmlahq_m_n_s16): Remove.
3993 (vqrdmlashq_m_n_s8): Remove.
3994 (vqrdmlashq_m_n_s32): Remove.
3995 (vqrdmlashq_m_n_s16): Remove.
3996 (__arm_vmlasq_n_u8): Remove.
3997 (__arm_vmlaq_n_u8): Remove.
3998 (__arm_vqrdmlashq_n_s8): Remove.
3999 (__arm_vqdmlashq_n_s8): Remove.
4000 (__arm_vqrdmlahq_n_s8): Remove.
4001 (__arm_vqdmlahq_n_s8): Remove.
4002 (__arm_vmlasq_n_s8): Remove.
4003 (__arm_vmlaq_n_s8): Remove.
4004 (__arm_vmlasq_n_u16): Remove.
4005 (__arm_vmlaq_n_u16): Remove.
4006 (__arm_vqrdmlashq_n_s16): Remove.
4007 (__arm_vqdmlashq_n_s16): Remove.
4008 (__arm_vqrdmlahq_n_s16): Remove.
4009 (__arm_vqdmlahq_n_s16): Remove.
4010 (__arm_vmlasq_n_s16): Remove.
4011 (__arm_vmlaq_n_s16): Remove.
4012 (__arm_vmlasq_n_u32): Remove.
4013 (__arm_vmlaq_n_u32): Remove.
4014 (__arm_vqrdmlashq_n_s32): Remove.
4015 (__arm_vqdmlashq_n_s32): Remove.
4016 (__arm_vqrdmlahq_n_s32): Remove.
4017 (__arm_vqdmlahq_n_s32): Remove.
4018 (__arm_vmlasq_n_s32): Remove.
4019 (__arm_vmlaq_n_s32): Remove.
4020 (__arm_vmlaq_m_n_s8): Remove.
4021 (__arm_vmlaq_m_n_s32): Remove.
4022 (__arm_vmlaq_m_n_s16): Remove.
4023 (__arm_vmlaq_m_n_u8): Remove.
4024 (__arm_vmlaq_m_n_u32): Remove.
4025 (__arm_vmlaq_m_n_u16): Remove.
4026 (__arm_vmlasq_m_n_s8): Remove.
4027 (__arm_vmlasq_m_n_s32): Remove.
4028 (__arm_vmlasq_m_n_s16): Remove.
4029 (__arm_vmlasq_m_n_u8): Remove.
4030 (__arm_vmlasq_m_n_u32): Remove.
4031 (__arm_vmlasq_m_n_u16): Remove.
4032 (__arm_vqdmlahq_m_n_s8): Remove.
4033 (__arm_vqdmlahq_m_n_s32): Remove.
4034 (__arm_vqdmlahq_m_n_s16): Remove.
4035 (__arm_vqrdmlahq_m_n_s8): Remove.
4036 (__arm_vqrdmlahq_m_n_s32): Remove.
4037 (__arm_vqrdmlahq_m_n_s16): Remove.
4038 (__arm_vqrdmlashq_m_n_s8): Remove.
4039 (__arm_vqrdmlashq_m_n_s32): Remove.
4040 (__arm_vqrdmlashq_m_n_s16): Remove.
4041 (__arm_vqdmlashq_m_n_s8): Remove.
4042 (__arm_vqdmlashq_m_n_s16): Remove.
4043 (__arm_vqdmlashq_m_n_s32): Remove.
4044 (__arm_vmlasq): Remove.
4045 (__arm_vmlaq): Remove.
4046 (__arm_vqrdmlashq): Remove.
4047 (__arm_vqdmlashq): Remove.
4048 (__arm_vqrdmlahq): Remove.
4049 (__arm_vqdmlahq): Remove.
4050 (__arm_vmlaq_m): Remove.
4051 (__arm_vmlasq_m): Remove.
4052 (__arm_vqdmlahq_m): Remove.
4053 (__arm_vqrdmlahq_m): Remove.
4054 (__arm_vqrdmlashq_m): Remove.
4055 (__arm_vqdmlashq_m): Remove.
4056
4057 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4058
4059 * config/arm/iterators.md (MVE_VMLxQ_N): New.
4060 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
4061 vqrdmlash.
4062 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
4063 VQRDMLASHQ_N_S.
4064 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
4065 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
4066 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
4067 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
4068 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4069
4070 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4071
4072 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
4073 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
4074
4075 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4076
4077 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
4078 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4079 (vqrdmlsdhxq): New.
4080 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
4081 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4082 (vqrdmlsdhxq): New.
4083 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
4084 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4085 (vqrdmlsdhxq): New.
4086 * config/arm/arm-mve-builtins.cc
4087 (function_instance::has_inactive_argument): Handle vqrdmladhq,
4088 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
4089 vqdmlsdhq, vqdmlsdhxq.
4090 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
4091 (vqrdmlsdhq): Remove.
4092 (vqrdmladhxq): Remove.
4093 (vqrdmladhq): Remove.
4094 (vqdmlsdhxq): Remove.
4095 (vqdmlsdhq): Remove.
4096 (vqdmladhxq): Remove.
4097 (vqdmladhq): Remove.
4098 (vqdmladhq_m): Remove.
4099 (vqdmladhxq_m): Remove.
4100 (vqdmlsdhq_m): Remove.
4101 (vqdmlsdhxq_m): Remove.
4102 (vqrdmladhq_m): Remove.
4103 (vqrdmladhxq_m): Remove.
4104 (vqrdmlsdhq_m): Remove.
4105 (vqrdmlsdhxq_m): Remove.
4106 (vqrdmlsdhxq_s8): Remove.
4107 (vqrdmlsdhq_s8): Remove.
4108 (vqrdmladhxq_s8): Remove.
4109 (vqrdmladhq_s8): Remove.
4110 (vqdmlsdhxq_s8): Remove.
4111 (vqdmlsdhq_s8): Remove.
4112 (vqdmladhxq_s8): Remove.
4113 (vqdmladhq_s8): Remove.
4114 (vqrdmlsdhxq_s16): Remove.
4115 (vqrdmlsdhq_s16): Remove.
4116 (vqrdmladhxq_s16): Remove.
4117 (vqrdmladhq_s16): Remove.
4118 (vqdmlsdhxq_s16): Remove.
4119 (vqdmlsdhq_s16): Remove.
4120 (vqdmladhxq_s16): Remove.
4121 (vqdmladhq_s16): Remove.
4122 (vqrdmlsdhxq_s32): Remove.
4123 (vqrdmlsdhq_s32): Remove.
4124 (vqrdmladhxq_s32): Remove.
4125 (vqrdmladhq_s32): Remove.
4126 (vqdmlsdhxq_s32): Remove.
4127 (vqdmlsdhq_s32): Remove.
4128 (vqdmladhxq_s32): Remove.
4129 (vqdmladhq_s32): Remove.
4130 (vqdmladhq_m_s8): Remove.
4131 (vqdmladhq_m_s32): Remove.
4132 (vqdmladhq_m_s16): Remove.
4133 (vqdmladhxq_m_s8): Remove.
4134 (vqdmladhxq_m_s32): Remove.
4135 (vqdmladhxq_m_s16): Remove.
4136 (vqdmlsdhq_m_s8): Remove.
4137 (vqdmlsdhq_m_s32): Remove.
4138 (vqdmlsdhq_m_s16): Remove.
4139 (vqdmlsdhxq_m_s8): Remove.
4140 (vqdmlsdhxq_m_s32): Remove.
4141 (vqdmlsdhxq_m_s16): Remove.
4142 (vqrdmladhq_m_s8): Remove.
4143 (vqrdmladhq_m_s32): Remove.
4144 (vqrdmladhq_m_s16): Remove.
4145 (vqrdmladhxq_m_s8): Remove.
4146 (vqrdmladhxq_m_s32): Remove.
4147 (vqrdmladhxq_m_s16): Remove.
4148 (vqrdmlsdhq_m_s8): Remove.
4149 (vqrdmlsdhq_m_s32): Remove.
4150 (vqrdmlsdhq_m_s16): Remove.
4151 (vqrdmlsdhxq_m_s8): Remove.
4152 (vqrdmlsdhxq_m_s32): Remove.
4153 (vqrdmlsdhxq_m_s16): Remove.
4154 (__arm_vqrdmlsdhxq_s8): Remove.
4155 (__arm_vqrdmlsdhq_s8): Remove.
4156 (__arm_vqrdmladhxq_s8): Remove.
4157 (__arm_vqrdmladhq_s8): Remove.
4158 (__arm_vqdmlsdhxq_s8): Remove.
4159 (__arm_vqdmlsdhq_s8): Remove.
4160 (__arm_vqdmladhxq_s8): Remove.
4161 (__arm_vqdmladhq_s8): Remove.
4162 (__arm_vqrdmlsdhxq_s16): Remove.
4163 (__arm_vqrdmlsdhq_s16): Remove.
4164 (__arm_vqrdmladhxq_s16): Remove.
4165 (__arm_vqrdmladhq_s16): Remove.
4166 (__arm_vqdmlsdhxq_s16): Remove.
4167 (__arm_vqdmlsdhq_s16): Remove.
4168 (__arm_vqdmladhxq_s16): Remove.
4169 (__arm_vqdmladhq_s16): Remove.
4170 (__arm_vqrdmlsdhxq_s32): Remove.
4171 (__arm_vqrdmlsdhq_s32): Remove.
4172 (__arm_vqrdmladhxq_s32): Remove.
4173 (__arm_vqrdmladhq_s32): Remove.
4174 (__arm_vqdmlsdhxq_s32): Remove.
4175 (__arm_vqdmlsdhq_s32): Remove.
4176 (__arm_vqdmladhxq_s32): Remove.
4177 (__arm_vqdmladhq_s32): Remove.
4178 (__arm_vqdmladhq_m_s8): Remove.
4179 (__arm_vqdmladhq_m_s32): Remove.
4180 (__arm_vqdmladhq_m_s16): Remove.
4181 (__arm_vqdmladhxq_m_s8): Remove.
4182 (__arm_vqdmladhxq_m_s32): Remove.
4183 (__arm_vqdmladhxq_m_s16): Remove.
4184 (__arm_vqdmlsdhq_m_s8): Remove.
4185 (__arm_vqdmlsdhq_m_s32): Remove.
4186 (__arm_vqdmlsdhq_m_s16): Remove.
4187 (__arm_vqdmlsdhxq_m_s8): Remove.
4188 (__arm_vqdmlsdhxq_m_s32): Remove.
4189 (__arm_vqdmlsdhxq_m_s16): Remove.
4190 (__arm_vqrdmladhq_m_s8): Remove.
4191 (__arm_vqrdmladhq_m_s32): Remove.
4192 (__arm_vqrdmladhq_m_s16): Remove.
4193 (__arm_vqrdmladhxq_m_s8): Remove.
4194 (__arm_vqrdmladhxq_m_s32): Remove.
4195 (__arm_vqrdmladhxq_m_s16): Remove.
4196 (__arm_vqrdmlsdhq_m_s8): Remove.
4197 (__arm_vqrdmlsdhq_m_s32): Remove.
4198 (__arm_vqrdmlsdhq_m_s16): Remove.
4199 (__arm_vqrdmlsdhxq_m_s8): Remove.
4200 (__arm_vqrdmlsdhxq_m_s32): Remove.
4201 (__arm_vqrdmlsdhxq_m_s16): Remove.
4202 (__arm_vqrdmlsdhxq): Remove.
4203 (__arm_vqrdmlsdhq): Remove.
4204 (__arm_vqrdmladhxq): Remove.
4205 (__arm_vqrdmladhq): Remove.
4206 (__arm_vqdmlsdhxq): Remove.
4207 (__arm_vqdmlsdhq): Remove.
4208 (__arm_vqdmladhxq): Remove.
4209 (__arm_vqdmladhq): Remove.
4210 (__arm_vqdmladhq_m): Remove.
4211 (__arm_vqdmladhxq_m): Remove.
4212 (__arm_vqdmlsdhq_m): Remove.
4213 (__arm_vqdmlsdhxq_m): Remove.
4214 (__arm_vqrdmladhq_m): Remove.
4215 (__arm_vqrdmladhxq_m): Remove.
4216 (__arm_vqrdmlsdhq_m): Remove.
4217 (__arm_vqrdmlsdhxq_m): Remove.
4218
4219 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4220
4221 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
4222 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
4223 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
4224 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
4225 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
4226 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
4227 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
4228 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
4229 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
4230 (mve_vqdmladhq_s<mode>): Merge into ...
4231 (@mve_<mve_insn>q_<supf><mode>): ... this.
4232
4233 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4234
4235 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
4236 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
4237
4238 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4239
4240 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
4241 (vmlsldavaq, vmlsldavaxq): New.
4242 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
4243 (vmlsldavaq, vmlsldavaxq): New.
4244 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
4245 (vmlsldavaq, vmlsldavaxq): New.
4246 * config/arm/arm_mve.h (vmlaldavaq): Remove.
4247 (vmlaldavaxq): Remove.
4248 (vmlsldavaq): Remove.
4249 (vmlsldavaxq): Remove.
4250 (vmlaldavaq_p): Remove.
4251 (vmlaldavaxq_p): Remove.
4252 (vmlsldavaq_p): Remove.
4253 (vmlsldavaxq_p): Remove.
4254 (vmlaldavaq_s16): Remove.
4255 (vmlaldavaxq_s16): Remove.
4256 (vmlsldavaq_s16): Remove.
4257 (vmlsldavaxq_s16): Remove.
4258 (vmlaldavaq_u16): Remove.
4259 (vmlaldavaq_s32): Remove.
4260 (vmlaldavaxq_s32): Remove.
4261 (vmlsldavaq_s32): Remove.
4262 (vmlsldavaxq_s32): Remove.
4263 (vmlaldavaq_u32): Remove.
4264 (vmlaldavaq_p_s32): Remove.
4265 (vmlaldavaq_p_s16): Remove.
4266 (vmlaldavaq_p_u32): Remove.
4267 (vmlaldavaq_p_u16): Remove.
4268 (vmlaldavaxq_p_s32): Remove.
4269 (vmlaldavaxq_p_s16): Remove.
4270 (vmlsldavaq_p_s32): Remove.
4271 (vmlsldavaq_p_s16): Remove.
4272 (vmlsldavaxq_p_s32): Remove.
4273 (vmlsldavaxq_p_s16): Remove.
4274 (__arm_vmlaldavaq_s16): Remove.
4275 (__arm_vmlaldavaxq_s16): Remove.
4276 (__arm_vmlsldavaq_s16): Remove.
4277 (__arm_vmlsldavaxq_s16): Remove.
4278 (__arm_vmlaldavaq_u16): Remove.
4279 (__arm_vmlaldavaq_s32): Remove.
4280 (__arm_vmlaldavaxq_s32): Remove.
4281 (__arm_vmlsldavaq_s32): Remove.
4282 (__arm_vmlsldavaxq_s32): Remove.
4283 (__arm_vmlaldavaq_u32): Remove.
4284 (__arm_vmlaldavaq_p_s32): Remove.
4285 (__arm_vmlaldavaq_p_s16): Remove.
4286 (__arm_vmlaldavaq_p_u32): Remove.
4287 (__arm_vmlaldavaq_p_u16): Remove.
4288 (__arm_vmlaldavaxq_p_s32): Remove.
4289 (__arm_vmlaldavaxq_p_s16): Remove.
4290 (__arm_vmlsldavaq_p_s32): Remove.
4291 (__arm_vmlsldavaq_p_s16): Remove.
4292 (__arm_vmlsldavaxq_p_s32): Remove.
4293 (__arm_vmlsldavaxq_p_s16): Remove.
4294 (__arm_vmlaldavaq): Remove.
4295 (__arm_vmlaldavaxq): Remove.
4296 (__arm_vmlsldavaq): Remove.
4297 (__arm_vmlsldavaxq): Remove.
4298 (__arm_vmlaldavaq_p): Remove.
4299 (__arm_vmlaldavaxq_p): Remove.
4300 (__arm_vmlsldavaq_p): Remove.
4301 (__arm_vmlsldavaxq_p): Remove.
4302
4303 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4304
4305 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
4306 New.
4307 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
4308 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
4309 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
4310 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
4311 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
4312 (mve_vmlaldavaxq_s<mode>): Merge into ...
4313 (@mve_<mve_insn>q_<supf><mode>): ... this.
4314 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
4315 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
4316 ...
4317 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4318
4319 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4320
4321 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
4322 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
4323
4324 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4325
4326 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
4327 (vrmlsldavhq, vrmlsldavhxq): New.
4328 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
4329 (vrmlsldavhq, vrmlsldavhxq): New.
4330 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
4331 (vrmlsldavhq, vrmlsldavhxq): New.
4332 * config/arm/arm-mve-builtins-functions.h
4333 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
4334 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
4335 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
4336 (vrmlsldavhxq): Remove.
4337 (vrmlsldavhq): Remove.
4338 (vrmlaldavhxq): Remove.
4339 (vrmlaldavhq_p): Remove.
4340 (vrmlaldavhxq_p): Remove.
4341 (vrmlsldavhq_p): Remove.
4342 (vrmlsldavhxq_p): Remove.
4343 (vrmlaldavhq_u32): Remove.
4344 (vrmlsldavhxq_s32): Remove.
4345 (vrmlsldavhq_s32): Remove.
4346 (vrmlaldavhxq_s32): Remove.
4347 (vrmlaldavhq_s32): Remove.
4348 (vrmlaldavhq_p_s32): Remove.
4349 (vrmlaldavhxq_p_s32): Remove.
4350 (vrmlsldavhq_p_s32): Remove.
4351 (vrmlsldavhxq_p_s32): Remove.
4352 (vrmlaldavhq_p_u32): Remove.
4353 (__arm_vrmlaldavhq_u32): Remove.
4354 (__arm_vrmlsldavhxq_s32): Remove.
4355 (__arm_vrmlsldavhq_s32): Remove.
4356 (__arm_vrmlaldavhxq_s32): Remove.
4357 (__arm_vrmlaldavhq_s32): Remove.
4358 (__arm_vrmlaldavhq_p_s32): Remove.
4359 (__arm_vrmlaldavhxq_p_s32): Remove.
4360 (__arm_vrmlsldavhq_p_s32): Remove.
4361 (__arm_vrmlsldavhxq_p_s32): Remove.
4362 (__arm_vrmlaldavhq_p_u32): Remove.
4363 (__arm_vrmlaldavhq): Remove.
4364 (__arm_vrmlsldavhxq): Remove.
4365 (__arm_vrmlsldavhq): Remove.
4366 (__arm_vrmlaldavhxq): Remove.
4367 (__arm_vrmlaldavhq_p): Remove.
4368 (__arm_vrmlaldavhxq_p): Remove.
4369 (__arm_vrmlsldavhq_p): Remove.
4370 (__arm_vrmlsldavhxq_p): Remove.
4371
4372 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4373
4374 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
4375 New.
4376 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
4377 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
4378 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
4379 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
4380 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
4381 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
4382 (@mve_<mve_insn>q_<supf>v4si): ... this.
4383 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
4384 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
4385 into ...
4386 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4387
4388 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4389
4390 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
4391 (vmlsldavq, vmlsldavxq): New.
4392 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
4393 (vmlsldavq, vmlsldavxq): New.
4394 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
4395 (vmlsldavq, vmlsldavxq): New.
4396 * config/arm/arm_mve.h (vmlaldavq): Remove.
4397 (vmlsldavxq): Remove.
4398 (vmlsldavq): Remove.
4399 (vmlaldavxq): Remove.
4400 (vmlaldavq_p): Remove.
4401 (vmlaldavxq_p): Remove.
4402 (vmlsldavq_p): Remove.
4403 (vmlsldavxq_p): Remove.
4404 (vmlaldavq_u16): Remove.
4405 (vmlsldavxq_s16): Remove.
4406 (vmlsldavq_s16): Remove.
4407 (vmlaldavxq_s16): Remove.
4408 (vmlaldavq_s16): Remove.
4409 (vmlaldavq_u32): Remove.
4410 (vmlsldavxq_s32): Remove.
4411 (vmlsldavq_s32): Remove.
4412 (vmlaldavxq_s32): Remove.
4413 (vmlaldavq_s32): Remove.
4414 (vmlaldavq_p_s16): Remove.
4415 (vmlaldavxq_p_s16): Remove.
4416 (vmlsldavq_p_s16): Remove.
4417 (vmlsldavxq_p_s16): Remove.
4418 (vmlaldavq_p_u16): Remove.
4419 (vmlaldavq_p_s32): Remove.
4420 (vmlaldavxq_p_s32): Remove.
4421 (vmlsldavq_p_s32): Remove.
4422 (vmlsldavxq_p_s32): Remove.
4423 (vmlaldavq_p_u32): Remove.
4424 (__arm_vmlaldavq_u16): Remove.
4425 (__arm_vmlsldavxq_s16): Remove.
4426 (__arm_vmlsldavq_s16): Remove.
4427 (__arm_vmlaldavxq_s16): Remove.
4428 (__arm_vmlaldavq_s16): Remove.
4429 (__arm_vmlaldavq_u32): Remove.
4430 (__arm_vmlsldavxq_s32): Remove.
4431 (__arm_vmlsldavq_s32): Remove.
4432 (__arm_vmlaldavxq_s32): Remove.
4433 (__arm_vmlaldavq_s32): Remove.
4434 (__arm_vmlaldavq_p_s16): Remove.
4435 (__arm_vmlaldavxq_p_s16): Remove.
4436 (__arm_vmlsldavq_p_s16): Remove.
4437 (__arm_vmlsldavxq_p_s16): Remove.
4438 (__arm_vmlaldavq_p_u16): Remove.
4439 (__arm_vmlaldavq_p_s32): Remove.
4440 (__arm_vmlaldavxq_p_s32): Remove.
4441 (__arm_vmlsldavq_p_s32): Remove.
4442 (__arm_vmlsldavxq_p_s32): Remove.
4443 (__arm_vmlaldavq_p_u32): Remove.
4444 (__arm_vmlaldavq): Remove.
4445 (__arm_vmlsldavxq): Remove.
4446 (__arm_vmlsldavq): Remove.
4447 (__arm_vmlaldavxq): Remove.
4448 (__arm_vmlaldavq_p): Remove.
4449 (__arm_vmlaldavxq_p): Remove.
4450 (__arm_vmlsldavq_p): Remove.
4451 (__arm_vmlsldavxq_p): Remove.
4452
4453 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4454
4455 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
4456 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
4457 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
4458 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
4459 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
4460 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
4461 (mve_vmlsldavxq_s<mode>): Merge into ...
4462 (@mve_<mve_insn>q_<supf><mode>): ... this.
4463 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
4464 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
4465 ...
4466 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4467
4468 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4469
4470 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
4471 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
4472
4473 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4474
4475 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
4476 * config/arm/arm-mve-builtins-base.def (vabavq): New.
4477 * config/arm/arm-mve-builtins-base.h (vabavq): New.
4478 * config/arm/arm_mve.h (vabavq): Remove.
4479 (vabavq_p): Remove.
4480 (vabavq_s8): Remove.
4481 (vabavq_s16): Remove.
4482 (vabavq_s32): Remove.
4483 (vabavq_u8): Remove.
4484 (vabavq_u16): Remove.
4485 (vabavq_u32): Remove.
4486 (vabavq_p_s8): Remove.
4487 (vabavq_p_u8): Remove.
4488 (vabavq_p_s16): Remove.
4489 (vabavq_p_u16): Remove.
4490 (vabavq_p_s32): Remove.
4491 (vabavq_p_u32): Remove.
4492 (__arm_vabavq_s8): Remove.
4493 (__arm_vabavq_s16): Remove.
4494 (__arm_vabavq_s32): Remove.
4495 (__arm_vabavq_u8): Remove.
4496 (__arm_vabavq_u16): Remove.
4497 (__arm_vabavq_u32): Remove.
4498 (__arm_vabavq_p_s8): Remove.
4499 (__arm_vabavq_p_u8): Remove.
4500 (__arm_vabavq_p_s16): Remove.
4501 (__arm_vabavq_p_u16): Remove.
4502 (__arm_vabavq_p_s32): Remove.
4503 (__arm_vabavq_p_u32): Remove.
4504 (__arm_vabavq): Remove.
4505 (__arm_vabavq_p): Remove.
4506
4507 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4508
4509 * config/arm/iterators.md (mve_insn): Add vabav.
4510 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
4511 (@mve_<mve_insn>q_<supf><mode>): ... this,.
4512 (mve_vabavq_p_<supf><mode>): Rename into ...
4513 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
4514
4515 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4516
4517 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
4518 (vmlsdavaq, vmlsdavaxq): New.
4519 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
4520 (vmlsdavaq, vmlsdavaxq): New.
4521 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
4522 (vmlsdavaq, vmlsdavaxq): New.
4523 * config/arm/arm_mve.h (vmladavaq): Remove.
4524 (vmlsdavaxq): Remove.
4525 (vmlsdavaq): Remove.
4526 (vmladavaxq): Remove.
4527 (vmladavaq_p): Remove.
4528 (vmladavaxq_p): Remove.
4529 (vmlsdavaq_p): Remove.
4530 (vmlsdavaxq_p): Remove.
4531 (vmladavaq_u8): Remove.
4532 (vmlsdavaxq_s8): Remove.
4533 (vmlsdavaq_s8): Remove.
4534 (vmladavaxq_s8): Remove.
4535 (vmladavaq_s8): Remove.
4536 (vmladavaq_u16): Remove.
4537 (vmlsdavaxq_s16): Remove.
4538 (vmlsdavaq_s16): Remove.
4539 (vmladavaxq_s16): Remove.
4540 (vmladavaq_s16): Remove.
4541 (vmladavaq_u32): Remove.
4542 (vmlsdavaxq_s32): Remove.
4543 (vmlsdavaq_s32): Remove.
4544 (vmladavaxq_s32): Remove.
4545 (vmladavaq_s32): Remove.
4546 (vmladavaq_p_s8): Remove.
4547 (vmladavaq_p_s32): Remove.
4548 (vmladavaq_p_s16): Remove.
4549 (vmladavaq_p_u8): Remove.
4550 (vmladavaq_p_u32): Remove.
4551 (vmladavaq_p_u16): Remove.
4552 (vmladavaxq_p_s8): Remove.
4553 (vmladavaxq_p_s32): Remove.
4554 (vmladavaxq_p_s16): Remove.
4555 (vmlsdavaq_p_s8): Remove.
4556 (vmlsdavaq_p_s32): Remove.
4557 (vmlsdavaq_p_s16): Remove.
4558 (vmlsdavaxq_p_s8): Remove.
4559 (vmlsdavaxq_p_s32): Remove.
4560 (vmlsdavaxq_p_s16): Remove.
4561 (__arm_vmladavaq_u8): Remove.
4562 (__arm_vmlsdavaxq_s8): Remove.
4563 (__arm_vmlsdavaq_s8): Remove.
4564 (__arm_vmladavaxq_s8): Remove.
4565 (__arm_vmladavaq_s8): Remove.
4566 (__arm_vmladavaq_u16): Remove.
4567 (__arm_vmlsdavaxq_s16): Remove.
4568 (__arm_vmlsdavaq_s16): Remove.
4569 (__arm_vmladavaxq_s16): Remove.
4570 (__arm_vmladavaq_s16): Remove.
4571 (__arm_vmladavaq_u32): Remove.
4572 (__arm_vmlsdavaxq_s32): Remove.
4573 (__arm_vmlsdavaq_s32): Remove.
4574 (__arm_vmladavaxq_s32): Remove.
4575 (__arm_vmladavaq_s32): Remove.
4576 (__arm_vmladavaq_p_s8): Remove.
4577 (__arm_vmladavaq_p_s32): Remove.
4578 (__arm_vmladavaq_p_s16): Remove.
4579 (__arm_vmladavaq_p_u8): Remove.
4580 (__arm_vmladavaq_p_u32): Remove.
4581 (__arm_vmladavaq_p_u16): Remove.
4582 (__arm_vmladavaxq_p_s8): Remove.
4583 (__arm_vmladavaxq_p_s32): Remove.
4584 (__arm_vmladavaxq_p_s16): Remove.
4585 (__arm_vmlsdavaq_p_s8): Remove.
4586 (__arm_vmlsdavaq_p_s32): Remove.
4587 (__arm_vmlsdavaq_p_s16): Remove.
4588 (__arm_vmlsdavaxq_p_s8): Remove.
4589 (__arm_vmlsdavaxq_p_s32): Remove.
4590 (__arm_vmlsdavaxq_p_s16): Remove.
4591 (__arm_vmladavaq): Remove.
4592 (__arm_vmlsdavaxq): Remove.
4593 (__arm_vmlsdavaq): Remove.
4594 (__arm_vmladavaxq): Remove.
4595 (__arm_vmladavaq_p): Remove.
4596 (__arm_vmladavaxq_p): Remove.
4597 (__arm_vmlsdavaq_p): Remove.
4598 (__arm_vmlsdavaxq_p): Remove.
4599
4600 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4601
4602 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
4603 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
4604
4605 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4606
4607 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
4608 (vmlsdavq, vmlsdavxq): New.
4609 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
4610 (vmlsdavq, vmlsdavxq): New.
4611 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
4612 (vmlsdavq, vmlsdavxq): New.
4613 * config/arm/arm_mve.h (vmladavq): Remove.
4614 (vmlsdavxq): Remove.
4615 (vmlsdavq): Remove.
4616 (vmladavxq): Remove.
4617 (vmladavq_p): Remove.
4618 (vmlsdavxq_p): Remove.
4619 (vmlsdavq_p): Remove.
4620 (vmladavxq_p): Remove.
4621 (vmladavq_u8): Remove.
4622 (vmlsdavxq_s8): Remove.
4623 (vmlsdavq_s8): Remove.
4624 (vmladavxq_s8): Remove.
4625 (vmladavq_s8): Remove.
4626 (vmladavq_u16): Remove.
4627 (vmlsdavxq_s16): Remove.
4628 (vmlsdavq_s16): Remove.
4629 (vmladavxq_s16): Remove.
4630 (vmladavq_s16): Remove.
4631 (vmladavq_u32): Remove.
4632 (vmlsdavxq_s32): Remove.
4633 (vmlsdavq_s32): Remove.
4634 (vmladavxq_s32): Remove.
4635 (vmladavq_s32): Remove.
4636 (vmladavq_p_u8): Remove.
4637 (vmlsdavxq_p_s8): Remove.
4638 (vmlsdavq_p_s8): Remove.
4639 (vmladavxq_p_s8): Remove.
4640 (vmladavq_p_s8): Remove.
4641 (vmladavq_p_u16): Remove.
4642 (vmlsdavxq_p_s16): Remove.
4643 (vmlsdavq_p_s16): Remove.
4644 (vmladavxq_p_s16): Remove.
4645 (vmladavq_p_s16): Remove.
4646 (vmladavq_p_u32): Remove.
4647 (vmlsdavxq_p_s32): Remove.
4648 (vmlsdavq_p_s32): Remove.
4649 (vmladavxq_p_s32): Remove.
4650 (vmladavq_p_s32): Remove.
4651 (__arm_vmladavq_u8): Remove.
4652 (__arm_vmlsdavxq_s8): Remove.
4653 (__arm_vmlsdavq_s8): Remove.
4654 (__arm_vmladavxq_s8): Remove.
4655 (__arm_vmladavq_s8): Remove.
4656 (__arm_vmladavq_u16): Remove.
4657 (__arm_vmlsdavxq_s16): Remove.
4658 (__arm_vmlsdavq_s16): Remove.
4659 (__arm_vmladavxq_s16): Remove.
4660 (__arm_vmladavq_s16): Remove.
4661 (__arm_vmladavq_u32): Remove.
4662 (__arm_vmlsdavxq_s32): Remove.
4663 (__arm_vmlsdavq_s32): Remove.
4664 (__arm_vmladavxq_s32): Remove.
4665 (__arm_vmladavq_s32): Remove.
4666 (__arm_vmladavq_p_u8): Remove.
4667 (__arm_vmlsdavxq_p_s8): Remove.
4668 (__arm_vmlsdavq_p_s8): Remove.
4669 (__arm_vmladavxq_p_s8): Remove.
4670 (__arm_vmladavq_p_s8): Remove.
4671 (__arm_vmladavq_p_u16): Remove.
4672 (__arm_vmlsdavxq_p_s16): Remove.
4673 (__arm_vmlsdavq_p_s16): Remove.
4674 (__arm_vmladavxq_p_s16): Remove.
4675 (__arm_vmladavq_p_s16): Remove.
4676 (__arm_vmladavq_p_u32): Remove.
4677 (__arm_vmlsdavxq_p_s32): Remove.
4678 (__arm_vmlsdavq_p_s32): Remove.
4679 (__arm_vmladavxq_p_s32): Remove.
4680 (__arm_vmladavq_p_s32): Remove.
4681 (__arm_vmladavq): Remove.
4682 (__arm_vmlsdavxq): Remove.
4683 (__arm_vmlsdavq): Remove.
4684 (__arm_vmladavxq): Remove.
4685 (__arm_vmladavq_p): Remove.
4686 (__arm_vmlsdavxq_p): Remove.
4687 (__arm_vmlsdavq_p): Remove.
4688 (__arm_vmladavxq_p): Remove.
4689
4690 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4691
4692 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
4693 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
4694 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
4695 vmlsdavax, vmlsdav, vmlsdavx.
4696 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
4697 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
4698 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
4699 VMLSDAVXQ_S.
4700 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
4701 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
4702 (mve_vmlsdavxq_s<mode>): Merge into ...
4703 (@mve_<mve_insn>q_<supf><mode>): ... this.
4704 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
4705 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
4706 ...
4707 (@mve_<mve_insn>q_<supf><mode>): ... this.
4708 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
4709 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
4710 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4711 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
4712 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
4713 ...
4714 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4715
4716 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4717
4718 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
4719 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
4720
4721 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4722
4723 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
4724 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
4725 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
4726 * config/arm/arm_mve.h (vaddlvaq): Remove.
4727 (vaddlvaq_p): Remove.
4728 (vaddlvaq_u32): Remove.
4729 (vaddlvaq_s32): Remove.
4730 (vaddlvaq_p_s32): Remove.
4731 (vaddlvaq_p_u32): Remove.
4732 (__arm_vaddlvaq_u32): Remove.
4733 (__arm_vaddlvaq_s32): Remove.
4734 (__arm_vaddlvaq_p_s32): Remove.
4735 (__arm_vaddlvaq_p_u32): Remove.
4736 (__arm_vaddlvaq): Remove.
4737 (__arm_vaddlvaq_p): Remove.
4738
4739 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4740
4741 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
4742 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
4743
4744 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4745
4746 * config/arm/iterators.md (mve_insn): Add vaddlva.
4747 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
4748 (@mve_<mve_insn>q_<supf>v4si): ... this.
4749 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
4750 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4751
4752 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
4753
4754 PR target/109807
4755 * config/i386/i386.cc (ix86_widen_mult_cost):
4756 Handle V4HImode and V2SImode.
4757
4758 2023-05-11 Andrew Pinski <apinski@marvell.com>
4759
4760 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
4761 defined by a phi node with more than one uses, allow for the
4762 only uses are in that same defining statement.
4763
4764 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4765
4766 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
4767 vector constants.
4768
4769 2023-05-11 Pan Li <pan2.li@intel.com>
4770
4771 * config/riscv/vector.md: Add comments for simplifying to vmset.
4772
4773 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4774
4775 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
4776 pattern.
4777 (v<optab><mode>3): Add vector shift pattern.
4778 * config/riscv/vector-iterators.md: New iterator.
4779
4780 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4781
4782 * config/riscv/autovec.md: Use renamed functions.
4783 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
4784 (emit_vlmax_reg_op): To this.
4785 (emit_nonvlmax_op): Rename.
4786 (emit_len_op): To this.
4787 (emit_nonvlmax_binop): Rename.
4788 (emit_len_binop): To this.
4789 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
4790 (emit_pred_binop): Remove vlmax_p.
4791 (emit_vlmax_op): Rename.
4792 (emit_vlmax_reg_op): To this.
4793 (emit_nonvlmax_op): Rename.
4794 (emit_len_op): To this.
4795 (emit_nonvlmax_binop): Rename.
4796 (emit_len_binop): To this.
4797 (sew64_scalar_helper): Use renamed functions.
4798 (expand_tuple_move): Use renamed functions.
4799 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
4800 renamed functions.
4801 * config/riscv/vector.md: Use renamed functions.
4802
4803 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4804 Michael Collison <collison@rivosinc.com>
4805
4806 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
4807 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
4808 * config/riscv/riscv-v.cc (emit_pred_op): New function.
4809 (set_expander_dest_and_mask): New function.
4810 (emit_pred_binop): New function.
4811 (emit_nonvlmax_binop): New function.
4812
4813 2023-05-11 Pan Li <pan2.li@intel.com>
4814
4815 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
4816 * gimple-loop-interchange.cc
4817 (tree_loop_interchange::map_inductions_to_loop): Ditto.
4818 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
4819 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
4820 * tree-ssa-loop-manip.cc (create_iv): Ditto.
4821 (tree_transform_and_unroll_loop): Ditto.
4822 (canonicalize_loop_ivs): Ditto.
4823 * tree-ssa-loop-manip.h (create_iv): Ditto.
4824 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
4825 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
4826 Ditto.
4827 (vect_set_loop_condition_normal): Ditto.
4828 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
4829 * tree-vect-stmts.cc (vectorizable_store): Ditto.
4830 (vectorizable_load): Ditto.
4831
4832 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4833
4834 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
4835 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
4836 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
4837 * config/arm/arm_mve.h (vmovlbq): Remove.
4838 (vmovltq): Remove.
4839 (vmovlbq_m): Remove.
4840 (vmovltq_m): Remove.
4841 (vmovlbq_x): Remove.
4842 (vmovltq_x): Remove.
4843 (vmovlbq_s8): Remove.
4844 (vmovlbq_s16): Remove.
4845 (vmovltq_s8): Remove.
4846 (vmovltq_s16): Remove.
4847 (vmovltq_u8): Remove.
4848 (vmovltq_u16): Remove.
4849 (vmovlbq_u8): Remove.
4850 (vmovlbq_u16): Remove.
4851 (vmovlbq_m_s8): Remove.
4852 (vmovltq_m_s8): Remove.
4853 (vmovlbq_m_u8): Remove.
4854 (vmovltq_m_u8): Remove.
4855 (vmovlbq_m_s16): Remove.
4856 (vmovltq_m_s16): Remove.
4857 (vmovlbq_m_u16): Remove.
4858 (vmovltq_m_u16): Remove.
4859 (vmovlbq_x_s8): Remove.
4860 (vmovlbq_x_s16): Remove.
4861 (vmovlbq_x_u8): Remove.
4862 (vmovlbq_x_u16): Remove.
4863 (vmovltq_x_s8): Remove.
4864 (vmovltq_x_s16): Remove.
4865 (vmovltq_x_u8): Remove.
4866 (vmovltq_x_u16): Remove.
4867 (__arm_vmovlbq_s8): Remove.
4868 (__arm_vmovlbq_s16): Remove.
4869 (__arm_vmovltq_s8): Remove.
4870 (__arm_vmovltq_s16): Remove.
4871 (__arm_vmovltq_u8): Remove.
4872 (__arm_vmovltq_u16): Remove.
4873 (__arm_vmovlbq_u8): Remove.
4874 (__arm_vmovlbq_u16): Remove.
4875 (__arm_vmovlbq_m_s8): Remove.
4876 (__arm_vmovltq_m_s8): Remove.
4877 (__arm_vmovlbq_m_u8): Remove.
4878 (__arm_vmovltq_m_u8): Remove.
4879 (__arm_vmovlbq_m_s16): Remove.
4880 (__arm_vmovltq_m_s16): Remove.
4881 (__arm_vmovlbq_m_u16): Remove.
4882 (__arm_vmovltq_m_u16): Remove.
4883 (__arm_vmovlbq_x_s8): Remove.
4884 (__arm_vmovlbq_x_s16): Remove.
4885 (__arm_vmovlbq_x_u8): Remove.
4886 (__arm_vmovlbq_x_u16): Remove.
4887 (__arm_vmovltq_x_s8): Remove.
4888 (__arm_vmovltq_x_s16): Remove.
4889 (__arm_vmovltq_x_u8): Remove.
4890 (__arm_vmovltq_x_u16): Remove.
4891 (__arm_vmovlbq): Remove.
4892 (__arm_vmovltq): Remove.
4893 (__arm_vmovlbq_m): Remove.
4894 (__arm_vmovltq_m): Remove.
4895 (__arm_vmovlbq_x): Remove.
4896 (__arm_vmovltq_x): Remove.
4897
4898 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4899
4900 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
4901 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
4902
4903 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4904
4905 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
4906 (VMOVLBQ, VMOVLTQ): Merge into ...
4907 (VMOVLxQ): ... this.
4908 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
4909 (VMOVLxQ_M): ... this.
4910 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
4911 (mve_vmovlbq_<supf><mode>): Merge into ...
4912 (@mve_<mve_insn>q_<supf><mode>): ... this.
4913 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
4914 into ...
4915 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4916
4917 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4918
4919 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
4920 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
4921 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
4922 * config/arm/arm-mve-builtins-functions.h
4923 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
4924 * config/arm/arm_mve.h (vaddlvq): Remove.
4925 (vaddlvq_p): Remove.
4926 (vaddlvq_s32): Remove.
4927 (vaddlvq_u32): Remove.
4928 (vaddlvq_p_s32): Remove.
4929 (vaddlvq_p_u32): Remove.
4930 (__arm_vaddlvq_s32): Remove.
4931 (__arm_vaddlvq_u32): Remove.
4932 (__arm_vaddlvq_p_s32): Remove.
4933 (__arm_vaddlvq_p_u32): Remove.
4934 (__arm_vaddlvq): Remove.
4935 (__arm_vaddlvq_p): Remove.
4936
4937 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4938
4939 * config/arm/iterators.md (mve_insn): Add vaddlv.
4940 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
4941 (@mve_<mve_insn>q_<supf>v4si): ... this.
4942 (mve_vaddlvq_p_<supf>v4si): Rename into ...
4943 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4944
4945 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4946
4947 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
4948 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
4949
4950 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4951
4952 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
4953 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
4954 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
4955 * config/arm/arm_mve.h (vaddvaq): Remove.
4956 (vaddvaq_p): Remove.
4957 (vaddvaq_u8): Remove.
4958 (vaddvaq_s8): Remove.
4959 (vaddvaq_u16): Remove.
4960 (vaddvaq_s16): Remove.
4961 (vaddvaq_u32): Remove.
4962 (vaddvaq_s32): Remove.
4963 (vaddvaq_p_u8): Remove.
4964 (vaddvaq_p_s8): Remove.
4965 (vaddvaq_p_u16): Remove.
4966 (vaddvaq_p_s16): Remove.
4967 (vaddvaq_p_u32): Remove.
4968 (vaddvaq_p_s32): Remove.
4969 (__arm_vaddvaq_u8): Remove.
4970 (__arm_vaddvaq_s8): Remove.
4971 (__arm_vaddvaq_u16): Remove.
4972 (__arm_vaddvaq_s16): Remove.
4973 (__arm_vaddvaq_u32): Remove.
4974 (__arm_vaddvaq_s32): Remove.
4975 (__arm_vaddvaq_p_u8): Remove.
4976 (__arm_vaddvaq_p_s8): Remove.
4977 (__arm_vaddvaq_p_u16): Remove.
4978 (__arm_vaddvaq_p_s16): Remove.
4979 (__arm_vaddvaq_p_u32): Remove.
4980 (__arm_vaddvaq_p_s32): Remove.
4981 (__arm_vaddvaq): Remove.
4982 (__arm_vaddvaq_p): Remove.
4983
4984 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4985
4986 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
4987 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
4988
4989 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4990
4991 * config/arm/iterators.md (mve_insn): Add vaddva.
4992 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
4993 (@mve_<mve_insn>q_<supf><mode>): ... this.
4994 (mve_vaddvaq_p_<supf><mode>): Rename into ...
4995 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4996
4997 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4998
4999 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
5000 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
5001 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
5002 * config/arm/arm_mve.h (vaddvq): Remove.
5003 (vaddvq_p): Remove.
5004 (vaddvq_s8): Remove.
5005 (vaddvq_s16): Remove.
5006 (vaddvq_s32): Remove.
5007 (vaddvq_u8): Remove.
5008 (vaddvq_u16): Remove.
5009 (vaddvq_u32): Remove.
5010 (vaddvq_p_u8): Remove.
5011 (vaddvq_p_s8): Remove.
5012 (vaddvq_p_u16): Remove.
5013 (vaddvq_p_s16): Remove.
5014 (vaddvq_p_u32): Remove.
5015 (vaddvq_p_s32): Remove.
5016 (__arm_vaddvq_s8): Remove.
5017 (__arm_vaddvq_s16): Remove.
5018 (__arm_vaddvq_s32): Remove.
5019 (__arm_vaddvq_u8): Remove.
5020 (__arm_vaddvq_u16): Remove.
5021 (__arm_vaddvq_u32): Remove.
5022 (__arm_vaddvq_p_u8): Remove.
5023 (__arm_vaddvq_p_s8): Remove.
5024 (__arm_vaddvq_p_u16): Remove.
5025 (__arm_vaddvq_p_s16): Remove.
5026 (__arm_vaddvq_p_u32): Remove.
5027 (__arm_vaddvq_p_s32): Remove.
5028 (__arm_vaddvq): Remove.
5029 (__arm_vaddvq_p): Remove.
5030
5031 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5032
5033 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
5034 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
5035
5036 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5037
5038 * config/arm/iterators.md (mve_insn): Add vaddv.
5039 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
5040 (@mve_<mve_insn>q_<supf><mode>): ... this.
5041 (mve_vaddvq_p_<supf><mode>): Rename into ...
5042 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5043 * config/arm/vec-common.md: Use gen_mve_q instead of
5044 gen_mve_vaddvq.
5045
5046 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5047
5048 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
5049 (vdupq): New.
5050 * config/arm/arm-mve-builtins-base.def (vdupq): New.
5051 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
5052 * config/arm/arm_mve.h (vdupq_n): Remove.
5053 (vdupq_m): Remove.
5054 (vdupq_n_f16): Remove.
5055 (vdupq_n_f32): Remove.
5056 (vdupq_n_s8): Remove.
5057 (vdupq_n_s16): Remove.
5058 (vdupq_n_s32): Remove.
5059 (vdupq_n_u8): Remove.
5060 (vdupq_n_u16): Remove.
5061 (vdupq_n_u32): Remove.
5062 (vdupq_m_n_u8): Remove.
5063 (vdupq_m_n_s8): Remove.
5064 (vdupq_m_n_u16): Remove.
5065 (vdupq_m_n_s16): Remove.
5066 (vdupq_m_n_u32): Remove.
5067 (vdupq_m_n_s32): Remove.
5068 (vdupq_m_n_f16): Remove.
5069 (vdupq_m_n_f32): Remove.
5070 (vdupq_x_n_s8): Remove.
5071 (vdupq_x_n_s16): Remove.
5072 (vdupq_x_n_s32): Remove.
5073 (vdupq_x_n_u8): Remove.
5074 (vdupq_x_n_u16): Remove.
5075 (vdupq_x_n_u32): Remove.
5076 (vdupq_x_n_f16): Remove.
5077 (vdupq_x_n_f32): Remove.
5078 (__arm_vdupq_n_s8): Remove.
5079 (__arm_vdupq_n_s16): Remove.
5080 (__arm_vdupq_n_s32): Remove.
5081 (__arm_vdupq_n_u8): Remove.
5082 (__arm_vdupq_n_u16): Remove.
5083 (__arm_vdupq_n_u32): Remove.
5084 (__arm_vdupq_m_n_u8): Remove.
5085 (__arm_vdupq_m_n_s8): Remove.
5086 (__arm_vdupq_m_n_u16): Remove.
5087 (__arm_vdupq_m_n_s16): Remove.
5088 (__arm_vdupq_m_n_u32): Remove.
5089 (__arm_vdupq_m_n_s32): Remove.
5090 (__arm_vdupq_x_n_s8): Remove.
5091 (__arm_vdupq_x_n_s16): Remove.
5092 (__arm_vdupq_x_n_s32): Remove.
5093 (__arm_vdupq_x_n_u8): Remove.
5094 (__arm_vdupq_x_n_u16): Remove.
5095 (__arm_vdupq_x_n_u32): Remove.
5096 (__arm_vdupq_n_f16): Remove.
5097 (__arm_vdupq_n_f32): Remove.
5098 (__arm_vdupq_m_n_f16): Remove.
5099 (__arm_vdupq_m_n_f32): Remove.
5100 (__arm_vdupq_x_n_f16): Remove.
5101 (__arm_vdupq_x_n_f32): Remove.
5102 (__arm_vdupq_n): Remove.
5103 (__arm_vdupq_m): Remove.
5104
5105 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5106
5107 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
5108 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
5109
5110 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5111
5112 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
5113 (MVE_FP_N_VDUPQ_ONLY): New.
5114 (mve_insn): Add vdupq.
5115 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
5116 (@mve_<mve_insn>q_n_f<mode>): ... this.
5117 (mve_vdupq_n_<supf><mode>): Rename into ...
5118 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5119 (mve_vdupq_m_n_<supf><mode>): Rename into ...
5120 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5121 (mve_vdupq_m_n_f<mode>): Rename into ...
5122 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
5123
5124 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5125
5126 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
5127 New.
5128 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
5129 (vrev64q): New.
5130 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
5131 (vrev64q): New.
5132 * config/arm/arm_mve.h (vrev16q): Remove.
5133 (vrev32q): Remove.
5134 (vrev64q): Remove.
5135 (vrev64q_m): Remove.
5136 (vrev16q_m): Remove.
5137 (vrev32q_m): Remove.
5138 (vrev16q_x): Remove.
5139 (vrev32q_x): Remove.
5140 (vrev64q_x): Remove.
5141 (vrev64q_f16): Remove.
5142 (vrev64q_f32): Remove.
5143 (vrev32q_f16): Remove.
5144 (vrev16q_s8): Remove.
5145 (vrev32q_s8): Remove.
5146 (vrev32q_s16): Remove.
5147 (vrev64q_s8): Remove.
5148 (vrev64q_s16): Remove.
5149 (vrev64q_s32): Remove.
5150 (vrev64q_u8): Remove.
5151 (vrev64q_u16): Remove.
5152 (vrev64q_u32): Remove.
5153 (vrev32q_u8): Remove.
5154 (vrev32q_u16): Remove.
5155 (vrev16q_u8): Remove.
5156 (vrev64q_m_u8): Remove.
5157 (vrev64q_m_s8): Remove.
5158 (vrev64q_m_u16): Remove.
5159 (vrev64q_m_s16): Remove.
5160 (vrev64q_m_u32): Remove.
5161 (vrev64q_m_s32): Remove.
5162 (vrev16q_m_s8): Remove.
5163 (vrev32q_m_f16): Remove.
5164 (vrev16q_m_u8): Remove.
5165 (vrev32q_m_s8): Remove.
5166 (vrev64q_m_f16): Remove.
5167 (vrev32q_m_u8): Remove.
5168 (vrev32q_m_s16): Remove.
5169 (vrev64q_m_f32): Remove.
5170 (vrev32q_m_u16): Remove.
5171 (vrev16q_x_s8): Remove.
5172 (vrev16q_x_u8): Remove.
5173 (vrev32q_x_s8): Remove.
5174 (vrev32q_x_s16): Remove.
5175 (vrev32q_x_u8): Remove.
5176 (vrev32q_x_u16): Remove.
5177 (vrev64q_x_s8): Remove.
5178 (vrev64q_x_s16): Remove.
5179 (vrev64q_x_s32): Remove.
5180 (vrev64q_x_u8): Remove.
5181 (vrev64q_x_u16): Remove.
5182 (vrev64q_x_u32): Remove.
5183 (vrev32q_x_f16): Remove.
5184 (vrev64q_x_f16): Remove.
5185 (vrev64q_x_f32): Remove.
5186 (__arm_vrev16q_s8): Remove.
5187 (__arm_vrev32q_s8): Remove.
5188 (__arm_vrev32q_s16): Remove.
5189 (__arm_vrev64q_s8): Remove.
5190 (__arm_vrev64q_s16): Remove.
5191 (__arm_vrev64q_s32): Remove.
5192 (__arm_vrev64q_u8): Remove.
5193 (__arm_vrev64q_u16): Remove.
5194 (__arm_vrev64q_u32): Remove.
5195 (__arm_vrev32q_u8): Remove.
5196 (__arm_vrev32q_u16): Remove.
5197 (__arm_vrev16q_u8): Remove.
5198 (__arm_vrev64q_m_u8): Remove.
5199 (__arm_vrev64q_m_s8): Remove.
5200 (__arm_vrev64q_m_u16): Remove.
5201 (__arm_vrev64q_m_s16): Remove.
5202 (__arm_vrev64q_m_u32): Remove.
5203 (__arm_vrev64q_m_s32): Remove.
5204 (__arm_vrev16q_m_s8): Remove.
5205 (__arm_vrev16q_m_u8): Remove.
5206 (__arm_vrev32q_m_s8): Remove.
5207 (__arm_vrev32q_m_u8): Remove.
5208 (__arm_vrev32q_m_s16): Remove.
5209 (__arm_vrev32q_m_u16): Remove.
5210 (__arm_vrev16q_x_s8): Remove.
5211 (__arm_vrev16q_x_u8): Remove.
5212 (__arm_vrev32q_x_s8): Remove.
5213 (__arm_vrev32q_x_s16): Remove.
5214 (__arm_vrev32q_x_u8): Remove.
5215 (__arm_vrev32q_x_u16): Remove.
5216 (__arm_vrev64q_x_s8): Remove.
5217 (__arm_vrev64q_x_s16): Remove.
5218 (__arm_vrev64q_x_s32): Remove.
5219 (__arm_vrev64q_x_u8): Remove.
5220 (__arm_vrev64q_x_u16): Remove.
5221 (__arm_vrev64q_x_u32): Remove.
5222 (__arm_vrev64q_f16): Remove.
5223 (__arm_vrev64q_f32): Remove.
5224 (__arm_vrev32q_f16): Remove.
5225 (__arm_vrev32q_m_f16): Remove.
5226 (__arm_vrev64q_m_f16): Remove.
5227 (__arm_vrev64q_m_f32): Remove.
5228 (__arm_vrev32q_x_f16): Remove.
5229 (__arm_vrev64q_x_f16): Remove.
5230 (__arm_vrev64q_x_f32): Remove.
5231 (__arm_vrev16q): Remove.
5232 (__arm_vrev32q): Remove.
5233 (__arm_vrev64q): Remove.
5234 (__arm_vrev64q_m): Remove.
5235 (__arm_vrev16q_m): Remove.
5236 (__arm_vrev32q_m): Remove.
5237 (__arm_vrev16q_x): Remove.
5238 (__arm_vrev32q_x): Remove.
5239 (__arm_vrev64q_x): Remove.
5240
5241 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5242
5243 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
5244 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
5245 (MVE_FP_M_VREV32Q_ONLY): New iterators.
5246 (mve_insn): Add vrev16q, vrev32q, vrev64q.
5247 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
5248 (@mve_<mve_insn>q_f<mode>): ... this
5249 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
5250 (mve_vrev64q_<supf><mode>): Rename into ...
5251 (@mve_<mve_insn>q_<supf><mode>): ... this.
5252 (mve_vrev32q_<supf><mode>): Rename into
5253 @mve_<mve_insn>q_<supf><mode>.
5254 (mve_vrev16q_<supf>v16qi): Rename into
5255 @mve_<mve_insn>q_<supf><mode>.
5256 (mve_vrev64q_m_<supf><mode>): Rename into
5257 @mve_<mve_insn>q_m_<supf><mode>.
5258 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
5259 (mve_vrev32q_m_<supf><mode>): Rename into
5260 @mve_<mve_insn>q_m_<supf><mode>.
5261 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
5262 (mve_vrev16q_m_<supf>v16qi): Rename into
5263 @mve_<mve_insn>q_m_<supf><mode>.
5264
5265 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5266
5267 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
5268 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5269 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
5270 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5271 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
5272 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5273 * config/arm/arm-mve-builtins-functions.h (class
5274 unspec_based_mve_function_exact_insn_vcmp): New.
5275 * config/arm/arm-mve-builtins.cc
5276 (function_instance::has_inactive_argument): Handle vcmp.
5277 * config/arm/arm_mve.h (vcmpneq): Remove.
5278 (vcmphiq): Remove.
5279 (vcmpeqq): Remove.
5280 (vcmpcsq): Remove.
5281 (vcmpltq): Remove.
5282 (vcmpleq): Remove.
5283 (vcmpgtq): Remove.
5284 (vcmpgeq): Remove.
5285 (vcmpneq_m): Remove.
5286 (vcmphiq_m): Remove.
5287 (vcmpeqq_m): Remove.
5288 (vcmpcsq_m): Remove.
5289 (vcmpcsq_m_n): Remove.
5290 (vcmpltq_m): Remove.
5291 (vcmpleq_m): Remove.
5292 (vcmpgtq_m): Remove.
5293 (vcmpgeq_m): Remove.
5294 (vcmpneq_s8): Remove.
5295 (vcmpneq_s16): Remove.
5296 (vcmpneq_s32): Remove.
5297 (vcmpneq_u8): Remove.
5298 (vcmpneq_u16): Remove.
5299 (vcmpneq_u32): Remove.
5300 (vcmpneq_n_u8): Remove.
5301 (vcmphiq_u8): Remove.
5302 (vcmphiq_n_u8): Remove.
5303 (vcmpeqq_u8): Remove.
5304 (vcmpeqq_n_u8): Remove.
5305 (vcmpcsq_u8): Remove.
5306 (vcmpcsq_n_u8): Remove.
5307 (vcmpneq_n_s8): Remove.
5308 (vcmpltq_s8): Remove.
5309 (vcmpltq_n_s8): Remove.
5310 (vcmpleq_s8): Remove.
5311 (vcmpleq_n_s8): Remove.
5312 (vcmpgtq_s8): Remove.
5313 (vcmpgtq_n_s8): Remove.
5314 (vcmpgeq_s8): Remove.
5315 (vcmpgeq_n_s8): Remove.
5316 (vcmpeqq_s8): Remove.
5317 (vcmpeqq_n_s8): Remove.
5318 (vcmpneq_n_u16): Remove.
5319 (vcmphiq_u16): Remove.
5320 (vcmphiq_n_u16): Remove.
5321 (vcmpeqq_u16): Remove.
5322 (vcmpeqq_n_u16): Remove.
5323 (vcmpcsq_u16): Remove.
5324 (vcmpcsq_n_u16): Remove.
5325 (vcmpneq_n_s16): Remove.
5326 (vcmpltq_s16): Remove.
5327 (vcmpltq_n_s16): Remove.
5328 (vcmpleq_s16): Remove.
5329 (vcmpleq_n_s16): Remove.
5330 (vcmpgtq_s16): Remove.
5331 (vcmpgtq_n_s16): Remove.
5332 (vcmpgeq_s16): Remove.
5333 (vcmpgeq_n_s16): Remove.
5334 (vcmpeqq_s16): Remove.
5335 (vcmpeqq_n_s16): Remove.
5336 (vcmpneq_n_u32): Remove.
5337 (vcmphiq_u32): Remove.
5338 (vcmphiq_n_u32): Remove.
5339 (vcmpeqq_u32): Remove.
5340 (vcmpeqq_n_u32): Remove.
5341 (vcmpcsq_u32): Remove.
5342 (vcmpcsq_n_u32): Remove.
5343 (vcmpneq_n_s32): Remove.
5344 (vcmpltq_s32): Remove.
5345 (vcmpltq_n_s32): Remove.
5346 (vcmpleq_s32): Remove.
5347 (vcmpleq_n_s32): Remove.
5348 (vcmpgtq_s32): Remove.
5349 (vcmpgtq_n_s32): Remove.
5350 (vcmpgeq_s32): Remove.
5351 (vcmpgeq_n_s32): Remove.
5352 (vcmpeqq_s32): Remove.
5353 (vcmpeqq_n_s32): Remove.
5354 (vcmpneq_n_f16): Remove.
5355 (vcmpneq_f16): Remove.
5356 (vcmpltq_n_f16): Remove.
5357 (vcmpltq_f16): Remove.
5358 (vcmpleq_n_f16): Remove.
5359 (vcmpleq_f16): Remove.
5360 (vcmpgtq_n_f16): Remove.
5361 (vcmpgtq_f16): Remove.
5362 (vcmpgeq_n_f16): Remove.
5363 (vcmpgeq_f16): Remove.
5364 (vcmpeqq_n_f16): Remove.
5365 (vcmpeqq_f16): Remove.
5366 (vcmpneq_n_f32): Remove.
5367 (vcmpneq_f32): Remove.
5368 (vcmpltq_n_f32): Remove.
5369 (vcmpltq_f32): Remove.
5370 (vcmpleq_n_f32): Remove.
5371 (vcmpleq_f32): Remove.
5372 (vcmpgtq_n_f32): Remove.
5373 (vcmpgtq_f32): Remove.
5374 (vcmpgeq_n_f32): Remove.
5375 (vcmpgeq_f32): Remove.
5376 (vcmpeqq_n_f32): Remove.
5377 (vcmpeqq_f32): Remove.
5378 (vcmpeqq_m_f16): Remove.
5379 (vcmpeqq_m_f32): Remove.
5380 (vcmpneq_m_u8): Remove.
5381 (vcmpneq_m_n_u8): Remove.
5382 (vcmphiq_m_u8): Remove.
5383 (vcmphiq_m_n_u8): Remove.
5384 (vcmpeqq_m_u8): Remove.
5385 (vcmpeqq_m_n_u8): Remove.
5386 (vcmpcsq_m_u8): Remove.
5387 (vcmpcsq_m_n_u8): Remove.
5388 (vcmpneq_m_s8): Remove.
5389 (vcmpneq_m_n_s8): Remove.
5390 (vcmpltq_m_s8): Remove.
5391 (vcmpltq_m_n_s8): Remove.
5392 (vcmpleq_m_s8): Remove.
5393 (vcmpleq_m_n_s8): Remove.
5394 (vcmpgtq_m_s8): Remove.
5395 (vcmpgtq_m_n_s8): Remove.
5396 (vcmpgeq_m_s8): Remove.
5397 (vcmpgeq_m_n_s8): Remove.
5398 (vcmpeqq_m_s8): Remove.
5399 (vcmpeqq_m_n_s8): Remove.
5400 (vcmpneq_m_u16): Remove.
5401 (vcmpneq_m_n_u16): Remove.
5402 (vcmphiq_m_u16): Remove.
5403 (vcmphiq_m_n_u16): Remove.
5404 (vcmpeqq_m_u16): Remove.
5405 (vcmpeqq_m_n_u16): Remove.
5406 (vcmpcsq_m_u16): Remove.
5407 (vcmpcsq_m_n_u16): Remove.
5408 (vcmpneq_m_s16): Remove.
5409 (vcmpneq_m_n_s16): Remove.
5410 (vcmpltq_m_s16): Remove.
5411 (vcmpltq_m_n_s16): Remove.
5412 (vcmpleq_m_s16): Remove.
5413 (vcmpleq_m_n_s16): Remove.
5414 (vcmpgtq_m_s16): Remove.
5415 (vcmpgtq_m_n_s16): Remove.
5416 (vcmpgeq_m_s16): Remove.
5417 (vcmpgeq_m_n_s16): Remove.
5418 (vcmpeqq_m_s16): Remove.
5419 (vcmpeqq_m_n_s16): Remove.
5420 (vcmpneq_m_u32): Remove.
5421 (vcmpneq_m_n_u32): Remove.
5422 (vcmphiq_m_u32): Remove.
5423 (vcmphiq_m_n_u32): Remove.
5424 (vcmpeqq_m_u32): Remove.
5425 (vcmpeqq_m_n_u32): Remove.
5426 (vcmpcsq_m_u32): Remove.
5427 (vcmpcsq_m_n_u32): Remove.
5428 (vcmpneq_m_s32): Remove.
5429 (vcmpneq_m_n_s32): Remove.
5430 (vcmpltq_m_s32): Remove.
5431 (vcmpltq_m_n_s32): Remove.
5432 (vcmpleq_m_s32): Remove.
5433 (vcmpleq_m_n_s32): Remove.
5434 (vcmpgtq_m_s32): Remove.
5435 (vcmpgtq_m_n_s32): Remove.
5436 (vcmpgeq_m_s32): Remove.
5437 (vcmpgeq_m_n_s32): Remove.
5438 (vcmpeqq_m_s32): Remove.
5439 (vcmpeqq_m_n_s32): Remove.
5440 (vcmpeqq_m_n_f16): Remove.
5441 (vcmpgeq_m_f16): Remove.
5442 (vcmpgeq_m_n_f16): Remove.
5443 (vcmpgtq_m_f16): Remove.
5444 (vcmpgtq_m_n_f16): Remove.
5445 (vcmpleq_m_f16): Remove.
5446 (vcmpleq_m_n_f16): Remove.
5447 (vcmpltq_m_f16): Remove.
5448 (vcmpltq_m_n_f16): Remove.
5449 (vcmpneq_m_f16): Remove.
5450 (vcmpneq_m_n_f16): Remove.
5451 (vcmpeqq_m_n_f32): Remove.
5452 (vcmpgeq_m_f32): Remove.
5453 (vcmpgeq_m_n_f32): Remove.
5454 (vcmpgtq_m_f32): Remove.
5455 (vcmpgtq_m_n_f32): Remove.
5456 (vcmpleq_m_f32): Remove.
5457 (vcmpleq_m_n_f32): Remove.
5458 (vcmpltq_m_f32): Remove.
5459 (vcmpltq_m_n_f32): Remove.
5460 (vcmpneq_m_f32): Remove.
5461 (vcmpneq_m_n_f32): Remove.
5462 (__arm_vcmpneq_s8): Remove.
5463 (__arm_vcmpneq_s16): Remove.
5464 (__arm_vcmpneq_s32): Remove.
5465 (__arm_vcmpneq_u8): Remove.
5466 (__arm_vcmpneq_u16): Remove.
5467 (__arm_vcmpneq_u32): Remove.
5468 (__arm_vcmpneq_n_u8): Remove.
5469 (__arm_vcmphiq_u8): Remove.
5470 (__arm_vcmphiq_n_u8): Remove.
5471 (__arm_vcmpeqq_u8): Remove.
5472 (__arm_vcmpeqq_n_u8): Remove.
5473 (__arm_vcmpcsq_u8): Remove.
5474 (__arm_vcmpcsq_n_u8): Remove.
5475 (__arm_vcmpneq_n_s8): Remove.
5476 (__arm_vcmpltq_s8): Remove.
5477 (__arm_vcmpltq_n_s8): Remove.
5478 (__arm_vcmpleq_s8): Remove.
5479 (__arm_vcmpleq_n_s8): Remove.
5480 (__arm_vcmpgtq_s8): Remove.
5481 (__arm_vcmpgtq_n_s8): Remove.
5482 (__arm_vcmpgeq_s8): Remove.
5483 (__arm_vcmpgeq_n_s8): Remove.
5484 (__arm_vcmpeqq_s8): Remove.
5485 (__arm_vcmpeqq_n_s8): Remove.
5486 (__arm_vcmpneq_n_u16): Remove.
5487 (__arm_vcmphiq_u16): Remove.
5488 (__arm_vcmphiq_n_u16): Remove.
5489 (__arm_vcmpeqq_u16): Remove.
5490 (__arm_vcmpeqq_n_u16): Remove.
5491 (__arm_vcmpcsq_u16): Remove.
5492 (__arm_vcmpcsq_n_u16): Remove.
5493 (__arm_vcmpneq_n_s16): Remove.
5494 (__arm_vcmpltq_s16): Remove.
5495 (__arm_vcmpltq_n_s16): Remove.
5496 (__arm_vcmpleq_s16): Remove.
5497 (__arm_vcmpleq_n_s16): Remove.
5498 (__arm_vcmpgtq_s16): Remove.
5499 (__arm_vcmpgtq_n_s16): Remove.
5500 (__arm_vcmpgeq_s16): Remove.
5501 (__arm_vcmpgeq_n_s16): Remove.
5502 (__arm_vcmpeqq_s16): Remove.
5503 (__arm_vcmpeqq_n_s16): Remove.
5504 (__arm_vcmpneq_n_u32): Remove.
5505 (__arm_vcmphiq_u32): Remove.
5506 (__arm_vcmphiq_n_u32): Remove.
5507 (__arm_vcmpeqq_u32): Remove.
5508 (__arm_vcmpeqq_n_u32): Remove.
5509 (__arm_vcmpcsq_u32): Remove.
5510 (__arm_vcmpcsq_n_u32): Remove.
5511 (__arm_vcmpneq_n_s32): Remove.
5512 (__arm_vcmpltq_s32): Remove.
5513 (__arm_vcmpltq_n_s32): Remove.
5514 (__arm_vcmpleq_s32): Remove.
5515 (__arm_vcmpleq_n_s32): Remove.
5516 (__arm_vcmpgtq_s32): Remove.
5517 (__arm_vcmpgtq_n_s32): Remove.
5518 (__arm_vcmpgeq_s32): Remove.
5519 (__arm_vcmpgeq_n_s32): Remove.
5520 (__arm_vcmpeqq_s32): Remove.
5521 (__arm_vcmpeqq_n_s32): Remove.
5522 (__arm_vcmpneq_m_u8): Remove.
5523 (__arm_vcmpneq_m_n_u8): Remove.
5524 (__arm_vcmphiq_m_u8): Remove.
5525 (__arm_vcmphiq_m_n_u8): Remove.
5526 (__arm_vcmpeqq_m_u8): Remove.
5527 (__arm_vcmpeqq_m_n_u8): Remove.
5528 (__arm_vcmpcsq_m_u8): Remove.
5529 (__arm_vcmpcsq_m_n_u8): Remove.
5530 (__arm_vcmpneq_m_s8): Remove.
5531 (__arm_vcmpneq_m_n_s8): Remove.
5532 (__arm_vcmpltq_m_s8): Remove.
5533 (__arm_vcmpltq_m_n_s8): Remove.
5534 (__arm_vcmpleq_m_s8): Remove.
5535 (__arm_vcmpleq_m_n_s8): Remove.
5536 (__arm_vcmpgtq_m_s8): Remove.
5537 (__arm_vcmpgtq_m_n_s8): Remove.
5538 (__arm_vcmpgeq_m_s8): Remove.
5539 (__arm_vcmpgeq_m_n_s8): Remove.
5540 (__arm_vcmpeqq_m_s8): Remove.
5541 (__arm_vcmpeqq_m_n_s8): Remove.
5542 (__arm_vcmpneq_m_u16): Remove.
5543 (__arm_vcmpneq_m_n_u16): Remove.
5544 (__arm_vcmphiq_m_u16): Remove.
5545 (__arm_vcmphiq_m_n_u16): Remove.
5546 (__arm_vcmpeqq_m_u16): Remove.
5547 (__arm_vcmpeqq_m_n_u16): Remove.
5548 (__arm_vcmpcsq_m_u16): Remove.
5549 (__arm_vcmpcsq_m_n_u16): Remove.
5550 (__arm_vcmpneq_m_s16): Remove.
5551 (__arm_vcmpneq_m_n_s16): Remove.
5552 (__arm_vcmpltq_m_s16): Remove.
5553 (__arm_vcmpltq_m_n_s16): Remove.
5554 (__arm_vcmpleq_m_s16): Remove.
5555 (__arm_vcmpleq_m_n_s16): Remove.
5556 (__arm_vcmpgtq_m_s16): Remove.
5557 (__arm_vcmpgtq_m_n_s16): Remove.
5558 (__arm_vcmpgeq_m_s16): Remove.
5559 (__arm_vcmpgeq_m_n_s16): Remove.
5560 (__arm_vcmpeqq_m_s16): Remove.
5561 (__arm_vcmpeqq_m_n_s16): Remove.
5562 (__arm_vcmpneq_m_u32): Remove.
5563 (__arm_vcmpneq_m_n_u32): Remove.
5564 (__arm_vcmphiq_m_u32): Remove.
5565 (__arm_vcmphiq_m_n_u32): Remove.
5566 (__arm_vcmpeqq_m_u32): Remove.
5567 (__arm_vcmpeqq_m_n_u32): Remove.
5568 (__arm_vcmpcsq_m_u32): Remove.
5569 (__arm_vcmpcsq_m_n_u32): Remove.
5570 (__arm_vcmpneq_m_s32): Remove.
5571 (__arm_vcmpneq_m_n_s32): Remove.
5572 (__arm_vcmpltq_m_s32): Remove.
5573 (__arm_vcmpltq_m_n_s32): Remove.
5574 (__arm_vcmpleq_m_s32): Remove.
5575 (__arm_vcmpleq_m_n_s32): Remove.
5576 (__arm_vcmpgtq_m_s32): Remove.
5577 (__arm_vcmpgtq_m_n_s32): Remove.
5578 (__arm_vcmpgeq_m_s32): Remove.
5579 (__arm_vcmpgeq_m_n_s32): Remove.
5580 (__arm_vcmpeqq_m_s32): Remove.
5581 (__arm_vcmpeqq_m_n_s32): Remove.
5582 (__arm_vcmpneq_n_f16): Remove.
5583 (__arm_vcmpneq_f16): Remove.
5584 (__arm_vcmpltq_n_f16): Remove.
5585 (__arm_vcmpltq_f16): Remove.
5586 (__arm_vcmpleq_n_f16): Remove.
5587 (__arm_vcmpleq_f16): Remove.
5588 (__arm_vcmpgtq_n_f16): Remove.
5589 (__arm_vcmpgtq_f16): Remove.
5590 (__arm_vcmpgeq_n_f16): Remove.
5591 (__arm_vcmpgeq_f16): Remove.
5592 (__arm_vcmpeqq_n_f16): Remove.
5593 (__arm_vcmpeqq_f16): Remove.
5594 (__arm_vcmpneq_n_f32): Remove.
5595 (__arm_vcmpneq_f32): Remove.
5596 (__arm_vcmpltq_n_f32): Remove.
5597 (__arm_vcmpltq_f32): Remove.
5598 (__arm_vcmpleq_n_f32): Remove.
5599 (__arm_vcmpleq_f32): Remove.
5600 (__arm_vcmpgtq_n_f32): Remove.
5601 (__arm_vcmpgtq_f32): Remove.
5602 (__arm_vcmpgeq_n_f32): Remove.
5603 (__arm_vcmpgeq_f32): Remove.
5604 (__arm_vcmpeqq_n_f32): Remove.
5605 (__arm_vcmpeqq_f32): Remove.
5606 (__arm_vcmpeqq_m_f16): Remove.
5607 (__arm_vcmpeqq_m_f32): Remove.
5608 (__arm_vcmpeqq_m_n_f16): Remove.
5609 (__arm_vcmpgeq_m_f16): Remove.
5610 (__arm_vcmpgeq_m_n_f16): Remove.
5611 (__arm_vcmpgtq_m_f16): Remove.
5612 (__arm_vcmpgtq_m_n_f16): Remove.
5613 (__arm_vcmpleq_m_f16): Remove.
5614 (__arm_vcmpleq_m_n_f16): Remove.
5615 (__arm_vcmpltq_m_f16): Remove.
5616 (__arm_vcmpltq_m_n_f16): Remove.
5617 (__arm_vcmpneq_m_f16): Remove.
5618 (__arm_vcmpneq_m_n_f16): Remove.
5619 (__arm_vcmpeqq_m_n_f32): Remove.
5620 (__arm_vcmpgeq_m_f32): Remove.
5621 (__arm_vcmpgeq_m_n_f32): Remove.
5622 (__arm_vcmpgtq_m_f32): Remove.
5623 (__arm_vcmpgtq_m_n_f32): Remove.
5624 (__arm_vcmpleq_m_f32): Remove.
5625 (__arm_vcmpleq_m_n_f32): Remove.
5626 (__arm_vcmpltq_m_f32): Remove.
5627 (__arm_vcmpltq_m_n_f32): Remove.
5628 (__arm_vcmpneq_m_f32): Remove.
5629 (__arm_vcmpneq_m_n_f32): Remove.
5630 (__arm_vcmpneq): Remove.
5631 (__arm_vcmphiq): Remove.
5632 (__arm_vcmpeqq): Remove.
5633 (__arm_vcmpcsq): Remove.
5634 (__arm_vcmpltq): Remove.
5635 (__arm_vcmpleq): Remove.
5636 (__arm_vcmpgtq): Remove.
5637 (__arm_vcmpgeq): Remove.
5638 (__arm_vcmpneq_m): Remove.
5639 (__arm_vcmphiq_m): Remove.
5640 (__arm_vcmpeqq_m): Remove.
5641 (__arm_vcmpcsq_m): Remove.
5642 (__arm_vcmpltq_m): Remove.
5643 (__arm_vcmpleq_m): Remove.
5644 (__arm_vcmpgtq_m): Remove.
5645 (__arm_vcmpgeq_m): Remove.
5646
5647 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5648
5649 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
5650 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
5651
5652 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5653
5654 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
5655 (MVE_CMP_M_N_F, mve_cmp_op1): New.
5656 (isu): Add VCMP*
5657 (supf): Likewise.
5658 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
5659 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
5660 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
5661 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
5662 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
5663 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
5664 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
5665 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
5666 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
5667 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
5668 ...
5669 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
5670 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
5671 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
5672 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
5673 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
5674 into ...
5675 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
5676 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
5677 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
5678 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
5679 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
5680
5681 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
5682
5683 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
5684 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
5685 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
5686 vice versa.
5687
5688 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
5689
5690 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
5691 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
5692 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
5693 Simplify parity(rotate(x,y)) as parity(x).
5694
5695 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5696
5697 * config/riscv/autovec.md (@vec_series<mode>): New pattern
5698 * config/riscv/riscv-protos.h (expand_vec_series): New function.
5699 * config/riscv/riscv-v.cc (emit_binop): Ditto.
5700 (emit_index_op): Ditto.
5701 (expand_vec_series): Ditto.
5702 (expand_const_vector): Add series vector handling.
5703 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
5704
5705 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
5706
5707 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
5708 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
5709 (*concat<mode><dwi>3_2): Likewise.
5710 (*concat<mode><dwi>3_3): Likewise.
5711 (*concat<mode><dwi>3_4): Likewise.
5712 (*concat<mode><dwi>3_5): Likewise.
5713 (*concat<mode><dwi>3_6): Likewise.
5714 (*concat<mode><dwi>3_7): Likewise.
5715
5716 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
5717
5718 PR target/92658
5719 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
5720 (<insn>v4qiv4hi2): New expander.
5721 (<insn>v2hiv2si2): Ditto.
5722 (<insn>v2qiv2si2): Ditto.
5723 (<insn>v2qiv2hi2): Ditto.
5724
5725 2023-05-10 Jeff Law <jlaw@ventanamicro>
5726
5727 * config/h8300/constraints.md (Q): Make this a special memory
5728 constraint.
5729 (Zz): Similarly.
5730
5731 2023-05-10 Jakub Jelinek <jakub@redhat.com>
5732
5733 PR fortran/109788
5734 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
5735 if t is void_list_node.
5736
5737 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5738
5739 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
5740 (aarch64_sqmovun<mode>_insn_be): Delete.
5741 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
5742 (aarch64_sqmovun<mode>): Delete expander.
5743
5744 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5745
5746 PR target/99195
5747 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
5748 Rename to...
5749 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
5750 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
5751 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
5752
5753 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5754
5755 PR target/99195
5756 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
5757 Rename to...
5758 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
5759 (aarch64_<sur>qadd<mode>): Rename to...
5760 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
5761
5762 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5763
5764 * config/aarch64/aarch64-simd.md
5765 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
5766 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
5767 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
5768 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
5769
5770 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5771
5772 PR target/99195
5773 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
5774 (aarch64_xtn<mode>_insn_be): Likewise.
5775 (trunc<mode><Vnarrowq>2): Rename to...
5776 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
5777 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
5778 (aarch64_<su>qmovn<mode>): Likewise.
5779 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
5780 (aarch64_<su>qmovn<mode>_insn_le): Delete.
5781 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
5782
5783 2023-05-10 Li Xu <xuli1@eswincomputing.com>
5784
5785 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
5786 intruction replace null avl with (const_int 0).
5787
5788 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5789
5790 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
5791 incorrect codes.
5792
5793 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5794
5795 PR target/109773
5796 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
5797 (source_equal_p): Fix dead loop in vsetvl avl checking.
5798
5799 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
5800
5801 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
5802 of modeadjusted_dccr.
5803
5804 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5805
5806 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
5807 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
5808 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
5809 * config/arm/arm-mve-builtins.cc
5810 (function_instance::has_inactive_argument): Handle vmaxaq and
5811 vminaq.
5812 * config/arm/arm_mve.h (vminaq): Remove.
5813 (vmaxaq): Remove.
5814 (vminaq_m): Remove.
5815 (vmaxaq_m): Remove.
5816 (vminaq_s8): Remove.
5817 (vmaxaq_s8): Remove.
5818 (vminaq_s16): Remove.
5819 (vmaxaq_s16): Remove.
5820 (vminaq_s32): Remove.
5821 (vmaxaq_s32): Remove.
5822 (vminaq_m_s8): Remove.
5823 (vmaxaq_m_s8): Remove.
5824 (vminaq_m_s16): Remove.
5825 (vmaxaq_m_s16): Remove.
5826 (vminaq_m_s32): Remove.
5827 (vmaxaq_m_s32): Remove.
5828 (__arm_vminaq_s8): Remove.
5829 (__arm_vmaxaq_s8): Remove.
5830 (__arm_vminaq_s16): Remove.
5831 (__arm_vmaxaq_s16): Remove.
5832 (__arm_vminaq_s32): Remove.
5833 (__arm_vmaxaq_s32): Remove.
5834 (__arm_vminaq_m_s8): Remove.
5835 (__arm_vmaxaq_m_s8): Remove.
5836 (__arm_vminaq_m_s16): Remove.
5837 (__arm_vmaxaq_m_s16): Remove.
5838 (__arm_vminaq_m_s32): Remove.
5839 (__arm_vmaxaq_m_s32): Remove.
5840 (__arm_vminaq): Remove.
5841 (__arm_vmaxaq): Remove.
5842 (__arm_vminaq_m): Remove.
5843 (__arm_vmaxaq_m): Remove.
5844
5845 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5846
5847 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
5848 New.
5849 (mve_insn): Add vmaxa, vmina.
5850 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
5851 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
5852 Merge into ...
5853 (@mve_<mve_insn>q_<supf><mode>): ... this.
5854 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
5855 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
5856
5857 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5858
5859 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
5860 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
5861
5862 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5863
5864 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
5865 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
5866 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
5867 * config/arm/arm-mve-builtins.cc
5868 (function_instance::has_inactive_argument): Handle vmaxnmaq and
5869 vminnmaq.
5870 * config/arm/arm_mve.h (vminnmaq): Remove.
5871 (vmaxnmaq): Remove.
5872 (vmaxnmaq_m): Remove.
5873 (vminnmaq_m): Remove.
5874 (vminnmaq_f16): Remove.
5875 (vmaxnmaq_f16): Remove.
5876 (vminnmaq_f32): Remove.
5877 (vmaxnmaq_f32): Remove.
5878 (vmaxnmaq_m_f16): Remove.
5879 (vminnmaq_m_f16): Remove.
5880 (vmaxnmaq_m_f32): Remove.
5881 (vminnmaq_m_f32): Remove.
5882 (__arm_vminnmaq_f16): Remove.
5883 (__arm_vmaxnmaq_f16): Remove.
5884 (__arm_vminnmaq_f32): Remove.
5885 (__arm_vmaxnmaq_f32): Remove.
5886 (__arm_vmaxnmaq_m_f16): Remove.
5887 (__arm_vminnmaq_m_f16): Remove.
5888 (__arm_vmaxnmaq_m_f32): Remove.
5889 (__arm_vminnmaq_m_f32): Remove.
5890 (__arm_vminnmaq): Remove.
5891 (__arm_vmaxnmaq): Remove.
5892 (__arm_vmaxnmaq_m): Remove.
5893 (__arm_vminnmaq_m): Remove.
5894
5895 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5896
5897 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
5898 (MVE_VMAXNMA_VMINNMAQ_M): New.
5899 (mve_insn): Add vmaxnma, vminnma.
5900 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
5901 Merge into ...
5902 (@mve_<mve_insn>q_f<mode>): ... this.
5903 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
5904 (@mve_<mve_insn>q_m_f<mode>): ... this.
5905
5906 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5907
5908 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
5909 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
5910 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
5911 (vminnmavq, vminnmvq): New.
5912 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
5913 (vminnmavq, vminnmvq): New.
5914 * config/arm/arm_mve.h (vminnmvq): Remove.
5915 (vminnmavq): Remove.
5916 (vmaxnmvq): Remove.
5917 (vmaxnmavq): Remove.
5918 (vmaxnmavq_p): Remove.
5919 (vmaxnmvq_p): Remove.
5920 (vminnmavq_p): Remove.
5921 (vminnmvq_p): Remove.
5922 (vminnmvq_f16): Remove.
5923 (vminnmavq_f16): Remove.
5924 (vmaxnmvq_f16): Remove.
5925 (vmaxnmavq_f16): Remove.
5926 (vminnmvq_f32): Remove.
5927 (vminnmavq_f32): Remove.
5928 (vmaxnmvq_f32): Remove.
5929 (vmaxnmavq_f32): Remove.
5930 (vmaxnmavq_p_f16): Remove.
5931 (vmaxnmvq_p_f16): Remove.
5932 (vminnmavq_p_f16): Remove.
5933 (vminnmvq_p_f16): Remove.
5934 (vmaxnmavq_p_f32): Remove.
5935 (vmaxnmvq_p_f32): Remove.
5936 (vminnmavq_p_f32): Remove.
5937 (vminnmvq_p_f32): Remove.
5938 (__arm_vminnmvq_f16): Remove.
5939 (__arm_vminnmavq_f16): Remove.
5940 (__arm_vmaxnmvq_f16): Remove.
5941 (__arm_vmaxnmavq_f16): Remove.
5942 (__arm_vminnmvq_f32): Remove.
5943 (__arm_vminnmavq_f32): Remove.
5944 (__arm_vmaxnmvq_f32): Remove.
5945 (__arm_vmaxnmavq_f32): Remove.
5946 (__arm_vmaxnmavq_p_f16): Remove.
5947 (__arm_vmaxnmvq_p_f16): Remove.
5948 (__arm_vminnmavq_p_f16): Remove.
5949 (__arm_vminnmvq_p_f16): Remove.
5950 (__arm_vmaxnmavq_p_f32): Remove.
5951 (__arm_vmaxnmvq_p_f32): Remove.
5952 (__arm_vminnmavq_p_f32): Remove.
5953 (__arm_vminnmvq_p_f32): Remove.
5954 (__arm_vminnmvq): Remove.
5955 (__arm_vminnmavq): Remove.
5956 (__arm_vmaxnmvq): Remove.
5957 (__arm_vmaxnmavq): Remove.
5958 (__arm_vmaxnmavq_p): Remove.
5959 (__arm_vmaxnmvq_p): Remove.
5960 (__arm_vminnmavq_p): Remove.
5961 (__arm_vminnmvq_p): Remove.
5962 (__arm_vmaxnmavq_m): Remove.
5963 (__arm_vmaxnmvq_m): Remove.
5964
5965 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5966
5967 * config/arm/arm-mve-builtins-functions.h
5968 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
5969
5970 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5971
5972 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
5973 (MVE_VMAXNMxV_MINNMxVQ_P): New.
5974 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
5975 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
5976 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
5977 (@mve_<mve_insn>q_f<mode>): ... this.
5978 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
5979 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
5980 (@mve_<mve_insn>q_p_f<mode>): ... this.
5981
5982 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
5983
5984 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
5985 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
5986 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
5987 * config/arm/arm_mve.h (vminnmq): Remove.
5988 (vmaxnmq): Remove.
5989 (vmaxnmq_m): Remove.
5990 (vminnmq_m): Remove.
5991 (vminnmq_x): Remove.
5992 (vmaxnmq_x): Remove.
5993 (vminnmq_f16): Remove.
5994 (vmaxnmq_f16): Remove.
5995 (vminnmq_f32): Remove.
5996 (vmaxnmq_f32): Remove.
5997 (vmaxnmq_m_f32): Remove.
5998 (vmaxnmq_m_f16): Remove.
5999 (vminnmq_m_f32): Remove.
6000 (vminnmq_m_f16): Remove.
6001 (vminnmq_x_f16): Remove.
6002 (vminnmq_x_f32): Remove.
6003 (vmaxnmq_x_f16): Remove.
6004 (vmaxnmq_x_f32): Remove.
6005 (__arm_vminnmq_f16): Remove.
6006 (__arm_vmaxnmq_f16): Remove.
6007 (__arm_vminnmq_f32): Remove.
6008 (__arm_vmaxnmq_f32): Remove.
6009 (__arm_vmaxnmq_m_f32): Remove.
6010 (__arm_vmaxnmq_m_f16): Remove.
6011 (__arm_vminnmq_m_f32): Remove.
6012 (__arm_vminnmq_m_f16): Remove.
6013 (__arm_vminnmq_x_f16): Remove.
6014 (__arm_vminnmq_x_f32): Remove.
6015 (__arm_vmaxnmq_x_f16): Remove.
6016 (__arm_vmaxnmq_x_f32): Remove.
6017 (__arm_vminnmq): Remove.
6018 (__arm_vmaxnmq): Remove.
6019 (__arm_vmaxnmq_m): Remove.
6020 (__arm_vminnmq_m): Remove.
6021 (__arm_vminnmq_x): Remove.
6022 (__arm_vmaxnmq_x): Remove.
6023
6024 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6025
6026 * config/arm/iterators.md (MAX_MIN_F): New.
6027 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
6028 (mve_insn): Add vmaxnm, vminnm.
6029 (max_min_f_str): New.
6030 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
6031 Merge into ...
6032 (@mve_<max_min_f_str>q_f<mode>): ... this.
6033 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
6034 (@mve_<mve_insn>q_m_f<mode>): ... this.
6035
6036 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6037
6038 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
6039 (smax<mode>3): Likewise.
6040
6041 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6042
6043 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
6044 (FUNCTION_PRED_P_S): New.
6045 (vmaxavq, vminavq, vmaxvq, vminvq): New.
6046 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
6047 (vminvq): New.
6048 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
6049 (vminvq): New.
6050 * config/arm/arm_mve.h (vminvq): Remove.
6051 (vmaxvq): Remove.
6052 (vminvq_p): Remove.
6053 (vmaxvq_p): Remove.
6054 (vminvq_u8): Remove.
6055 (vmaxvq_u8): Remove.
6056 (vminvq_s8): Remove.
6057 (vmaxvq_s8): Remove.
6058 (vminvq_u16): Remove.
6059 (vmaxvq_u16): Remove.
6060 (vminvq_s16): Remove.
6061 (vmaxvq_s16): Remove.
6062 (vminvq_u32): Remove.
6063 (vmaxvq_u32): Remove.
6064 (vminvq_s32): Remove.
6065 (vmaxvq_s32): Remove.
6066 (vminvq_p_u8): Remove.
6067 (vmaxvq_p_u8): Remove.
6068 (vminvq_p_s8): Remove.
6069 (vmaxvq_p_s8): Remove.
6070 (vminvq_p_u16): Remove.
6071 (vmaxvq_p_u16): Remove.
6072 (vminvq_p_s16): Remove.
6073 (vmaxvq_p_s16): Remove.
6074 (vminvq_p_u32): Remove.
6075 (vmaxvq_p_u32): Remove.
6076 (vminvq_p_s32): Remove.
6077 (vmaxvq_p_s32): Remove.
6078 (__arm_vminvq_u8): Remove.
6079 (__arm_vmaxvq_u8): Remove.
6080 (__arm_vminvq_s8): Remove.
6081 (__arm_vmaxvq_s8): Remove.
6082 (__arm_vminvq_u16): Remove.
6083 (__arm_vmaxvq_u16): Remove.
6084 (__arm_vminvq_s16): Remove.
6085 (__arm_vmaxvq_s16): Remove.
6086 (__arm_vminvq_u32): Remove.
6087 (__arm_vmaxvq_u32): Remove.
6088 (__arm_vminvq_s32): Remove.
6089 (__arm_vmaxvq_s32): Remove.
6090 (__arm_vminvq_p_u8): Remove.
6091 (__arm_vmaxvq_p_u8): Remove.
6092 (__arm_vminvq_p_s8): Remove.
6093 (__arm_vmaxvq_p_s8): Remove.
6094 (__arm_vminvq_p_u16): Remove.
6095 (__arm_vmaxvq_p_u16): Remove.
6096 (__arm_vminvq_p_s16): Remove.
6097 (__arm_vmaxvq_p_s16): Remove.
6098 (__arm_vminvq_p_u32): Remove.
6099 (__arm_vmaxvq_p_u32): Remove.
6100 (__arm_vminvq_p_s32): Remove.
6101 (__arm_vmaxvq_p_s32): Remove.
6102 (__arm_vminvq): Remove.
6103 (__arm_vmaxvq): Remove.
6104 (__arm_vminvq_p): Remove.
6105 (__arm_vmaxvq_p): Remove.
6106 (vminavq): Remove.
6107 (vmaxavq): Remove.
6108 (vminavq_p): Remove.
6109 (vmaxavq_p): Remove.
6110 (vminavq_s8): Remove.
6111 (vmaxavq_s8): Remove.
6112 (vminavq_s16): Remove.
6113 (vmaxavq_s16): Remove.
6114 (vminavq_s32): Remove.
6115 (vmaxavq_s32): Remove.
6116 (vminavq_p_s8): Remove.
6117 (vmaxavq_p_s8): Remove.
6118 (vminavq_p_s16): Remove.
6119 (vmaxavq_p_s16): Remove.
6120 (vminavq_p_s32): Remove.
6121 (vmaxavq_p_s32): Remove.
6122 (__arm_vminavq_s8): Remove.
6123 (__arm_vmaxavq_s8): Remove.
6124 (__arm_vminavq_s16): Remove.
6125 (__arm_vmaxavq_s16): Remove.
6126 (__arm_vminavq_s32): Remove.
6127 (__arm_vmaxavq_s32): Remove.
6128 (__arm_vminavq_p_s8): Remove.
6129 (__arm_vmaxavq_p_s8): Remove.
6130 (__arm_vminavq_p_s16): Remove.
6131 (__arm_vmaxavq_p_s16): Remove.
6132 (__arm_vminavq_p_s32): Remove.
6133 (__arm_vmaxavq_p_s32): Remove.
6134 (__arm_vminavq): Remove.
6135 (__arm_vmaxavq): Remove.
6136 (__arm_vminavq_p): Remove.
6137 (__arm_vmaxavq_p): Remove.
6138
6139 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6140
6141 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
6142 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
6143 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
6144 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
6145 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
6146 (@mve_<mve_insn>q_<supf><mode>): ... this.
6147 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
6148 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
6149 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6150
6151 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6152
6153 * config/arm/arm-mve-builtins-functions.h (class
6154 unspec_mve_function_exact_insn_pred_p): New.
6155
6156 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6157
6158 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
6159 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
6160
6161 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6162
6163 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
6164 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
6165
6166 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
6167
6168 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
6169 Declare.
6170 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
6171 (ADJUST_REG_ALLOC_ORDER): Likewise.
6172 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
6173 function.
6174 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
6175 Upa rather than Upl for unpredicated movprfx alternatives.
6176
6177 2023-05-09 Jeff Law <jlaw@ventanamicro>
6178
6179 * config/h8300/testcompare.md: Add peephole2 which uses a memory
6180 load to set flags, thus eliminating a compare against zero.
6181
6182 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6183
6184 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
6185 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
6186 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
6187 * config/arm/arm_mve.h (vshlltq): Remove.
6188 (vshllbq): Remove.
6189 (vshllbq_m): Remove.
6190 (vshlltq_m): Remove.
6191 (vshllbq_x): Remove.
6192 (vshlltq_x): Remove.
6193 (vshlltq_n_u8): Remove.
6194 (vshllbq_n_u8): Remove.
6195 (vshlltq_n_s8): Remove.
6196 (vshllbq_n_s8): Remove.
6197 (vshlltq_n_u16): Remove.
6198 (vshllbq_n_u16): Remove.
6199 (vshlltq_n_s16): Remove.
6200 (vshllbq_n_s16): Remove.
6201 (vshllbq_m_n_s8): Remove.
6202 (vshllbq_m_n_s16): Remove.
6203 (vshllbq_m_n_u8): Remove.
6204 (vshllbq_m_n_u16): Remove.
6205 (vshlltq_m_n_s8): Remove.
6206 (vshlltq_m_n_s16): Remove.
6207 (vshlltq_m_n_u8): Remove.
6208 (vshlltq_m_n_u16): Remove.
6209 (vshllbq_x_n_s8): Remove.
6210 (vshllbq_x_n_s16): Remove.
6211 (vshllbq_x_n_u8): Remove.
6212 (vshllbq_x_n_u16): Remove.
6213 (vshlltq_x_n_s8): Remove.
6214 (vshlltq_x_n_s16): Remove.
6215 (vshlltq_x_n_u8): Remove.
6216 (vshlltq_x_n_u16): Remove.
6217 (__arm_vshlltq_n_u8): Remove.
6218 (__arm_vshllbq_n_u8): Remove.
6219 (__arm_vshlltq_n_s8): Remove.
6220 (__arm_vshllbq_n_s8): Remove.
6221 (__arm_vshlltq_n_u16): Remove.
6222 (__arm_vshllbq_n_u16): Remove.
6223 (__arm_vshlltq_n_s16): Remove.
6224 (__arm_vshllbq_n_s16): Remove.
6225 (__arm_vshllbq_m_n_s8): Remove.
6226 (__arm_vshllbq_m_n_s16): Remove.
6227 (__arm_vshllbq_m_n_u8): Remove.
6228 (__arm_vshllbq_m_n_u16): Remove.
6229 (__arm_vshlltq_m_n_s8): Remove.
6230 (__arm_vshlltq_m_n_s16): Remove.
6231 (__arm_vshlltq_m_n_u8): Remove.
6232 (__arm_vshlltq_m_n_u16): Remove.
6233 (__arm_vshllbq_x_n_s8): Remove.
6234 (__arm_vshllbq_x_n_s16): Remove.
6235 (__arm_vshllbq_x_n_u8): Remove.
6236 (__arm_vshllbq_x_n_u16): Remove.
6237 (__arm_vshlltq_x_n_s8): Remove.
6238 (__arm_vshlltq_x_n_s16): Remove.
6239 (__arm_vshlltq_x_n_u8): Remove.
6240 (__arm_vshlltq_x_n_u16): Remove.
6241 (__arm_vshlltq): Remove.
6242 (__arm_vshllbq): Remove.
6243 (__arm_vshllbq_m): Remove.
6244 (__arm_vshlltq_m): Remove.
6245 (__arm_vshllbq_x): Remove.
6246 (__arm_vshlltq_x): Remove.
6247
6248 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6249
6250 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
6251 (VSHLLBQ_N, VSHLLTQ_N): Remove.
6252 (VSHLLxQ_N): New.
6253 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
6254 (VSHLLxQ_M_N): New.
6255 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
6256 (mve_vshlltq_n_<supf><mode>): Merge into ...
6257 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6258 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
6259 Merge into ...
6260 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6261
6262 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6263
6264 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
6265 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
6266
6267 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6268
6269 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
6270 (vqmovntq, vqmovunbq, vqmovuntq): New.
6271 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
6272 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
6273 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
6274 (vqmovntq, vqmovunbq, vqmovuntq): New.
6275 * config/arm/arm-mve-builtins.cc
6276 (function_instance::has_inactive_argument): Handle vmovnbq,
6277 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
6278 * config/arm/arm_mve.h (vqmovntq): Remove.
6279 (vqmovnbq): Remove.
6280 (vqmovnbq_m): Remove.
6281 (vqmovntq_m): Remove.
6282 (vqmovntq_u16): Remove.
6283 (vqmovnbq_u16): Remove.
6284 (vqmovntq_s16): Remove.
6285 (vqmovnbq_s16): Remove.
6286 (vqmovntq_u32): Remove.
6287 (vqmovnbq_u32): Remove.
6288 (vqmovntq_s32): Remove.
6289 (vqmovnbq_s32): Remove.
6290 (vqmovnbq_m_s16): Remove.
6291 (vqmovntq_m_s16): Remove.
6292 (vqmovnbq_m_u16): Remove.
6293 (vqmovntq_m_u16): Remove.
6294 (vqmovnbq_m_s32): Remove.
6295 (vqmovntq_m_s32): Remove.
6296 (vqmovnbq_m_u32): Remove.
6297 (vqmovntq_m_u32): Remove.
6298 (__arm_vqmovntq_u16): Remove.
6299 (__arm_vqmovnbq_u16): Remove.
6300 (__arm_vqmovntq_s16): Remove.
6301 (__arm_vqmovnbq_s16): Remove.
6302 (__arm_vqmovntq_u32): Remove.
6303 (__arm_vqmovnbq_u32): Remove.
6304 (__arm_vqmovntq_s32): Remove.
6305 (__arm_vqmovnbq_s32): Remove.
6306 (__arm_vqmovnbq_m_s16): Remove.
6307 (__arm_vqmovntq_m_s16): Remove.
6308 (__arm_vqmovnbq_m_u16): Remove.
6309 (__arm_vqmovntq_m_u16): Remove.
6310 (__arm_vqmovnbq_m_s32): Remove.
6311 (__arm_vqmovntq_m_s32): Remove.
6312 (__arm_vqmovnbq_m_u32): Remove.
6313 (__arm_vqmovntq_m_u32): Remove.
6314 (__arm_vqmovntq): Remove.
6315 (__arm_vqmovnbq): Remove.
6316 (__arm_vqmovnbq_m): Remove.
6317 (__arm_vqmovntq_m): Remove.
6318 (vmovntq): Remove.
6319 (vmovnbq): Remove.
6320 (vmovnbq_m): Remove.
6321 (vmovntq_m): Remove.
6322 (vmovntq_u16): Remove.
6323 (vmovnbq_u16): Remove.
6324 (vmovntq_s16): Remove.
6325 (vmovnbq_s16): Remove.
6326 (vmovntq_u32): Remove.
6327 (vmovnbq_u32): Remove.
6328 (vmovntq_s32): Remove.
6329 (vmovnbq_s32): Remove.
6330 (vmovnbq_m_s16): Remove.
6331 (vmovntq_m_s16): Remove.
6332 (vmovnbq_m_u16): Remove.
6333 (vmovntq_m_u16): Remove.
6334 (vmovnbq_m_s32): Remove.
6335 (vmovntq_m_s32): Remove.
6336 (vmovnbq_m_u32): Remove.
6337 (vmovntq_m_u32): Remove.
6338 (__arm_vmovntq_u16): Remove.
6339 (__arm_vmovnbq_u16): Remove.
6340 (__arm_vmovntq_s16): Remove.
6341 (__arm_vmovnbq_s16): Remove.
6342 (__arm_vmovntq_u32): Remove.
6343 (__arm_vmovnbq_u32): Remove.
6344 (__arm_vmovntq_s32): Remove.
6345 (__arm_vmovnbq_s32): Remove.
6346 (__arm_vmovnbq_m_s16): Remove.
6347 (__arm_vmovntq_m_s16): Remove.
6348 (__arm_vmovnbq_m_u16): Remove.
6349 (__arm_vmovntq_m_u16): Remove.
6350 (__arm_vmovnbq_m_s32): Remove.
6351 (__arm_vmovntq_m_s32): Remove.
6352 (__arm_vmovnbq_m_u32): Remove.
6353 (__arm_vmovntq_m_u32): Remove.
6354 (__arm_vmovntq): Remove.
6355 (__arm_vmovnbq): Remove.
6356 (__arm_vmovnbq_m): Remove.
6357 (__arm_vmovntq_m): Remove.
6358 (vqmovuntq): Remove.
6359 (vqmovunbq): Remove.
6360 (vqmovunbq_m): Remove.
6361 (vqmovuntq_m): Remove.
6362 (vqmovuntq_s16): Remove.
6363 (vqmovunbq_s16): Remove.
6364 (vqmovuntq_s32): Remove.
6365 (vqmovunbq_s32): Remove.
6366 (vqmovunbq_m_s16): Remove.
6367 (vqmovuntq_m_s16): Remove.
6368 (vqmovunbq_m_s32): Remove.
6369 (vqmovuntq_m_s32): Remove.
6370 (__arm_vqmovuntq_s16): Remove.
6371 (__arm_vqmovunbq_s16): Remove.
6372 (__arm_vqmovuntq_s32): Remove.
6373 (__arm_vqmovunbq_s32): Remove.
6374 (__arm_vqmovunbq_m_s16): Remove.
6375 (__arm_vqmovuntq_m_s16): Remove.
6376 (__arm_vqmovunbq_m_s32): Remove.
6377 (__arm_vqmovuntq_m_s32): Remove.
6378 (__arm_vqmovuntq): Remove.
6379 (__arm_vqmovunbq): Remove.
6380 (__arm_vqmovunbq_m): Remove.
6381 (__arm_vqmovuntq_m): Remove.
6382
6383 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6384
6385 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
6386 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
6387 vqmovunt.
6388 (isu): Likewise.
6389 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
6390 VQMOVUNTQ_S.
6391 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
6392 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
6393 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
6394 (mve_vqmovuntq_s<mode>): Merge into ...
6395 (@mve_<mve_insn>q_<supf><mode>): ... this.
6396 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
6397 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
6398 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
6399 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6400
6401 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6402
6403 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
6404 (binary_move_narrow_unsigned): New.
6405 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
6406 (binary_move_narrow_unsigned): New.
6407
6408 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6409
6410 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
6411 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
6412 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
6413 (vrndpq, vrndq, vrndxq): New.
6414 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
6415 (vrndpq, vrndq, vrndxq): New.
6416 * config/arm/arm_mve.h (vrndxq): Remove.
6417 (vrndq): Remove.
6418 (vrndpq): Remove.
6419 (vrndnq): Remove.
6420 (vrndmq): Remove.
6421 (vrndaq): Remove.
6422 (vrndaq_m): Remove.
6423 (vrndmq_m): Remove.
6424 (vrndnq_m): Remove.
6425 (vrndpq_m): Remove.
6426 (vrndq_m): Remove.
6427 (vrndxq_m): Remove.
6428 (vrndq_x): Remove.
6429 (vrndnq_x): Remove.
6430 (vrndmq_x): Remove.
6431 (vrndpq_x): Remove.
6432 (vrndaq_x): Remove.
6433 (vrndxq_x): Remove.
6434 (vrndxq_f16): Remove.
6435 (vrndxq_f32): Remove.
6436 (vrndq_f16): Remove.
6437 (vrndq_f32): Remove.
6438 (vrndpq_f16): Remove.
6439 (vrndpq_f32): Remove.
6440 (vrndnq_f16): Remove.
6441 (vrndnq_f32): Remove.
6442 (vrndmq_f16): Remove.
6443 (vrndmq_f32): Remove.
6444 (vrndaq_f16): Remove.
6445 (vrndaq_f32): Remove.
6446 (vrndaq_m_f16): Remove.
6447 (vrndmq_m_f16): Remove.
6448 (vrndnq_m_f16): Remove.
6449 (vrndpq_m_f16): Remove.
6450 (vrndq_m_f16): Remove.
6451 (vrndxq_m_f16): Remove.
6452 (vrndaq_m_f32): Remove.
6453 (vrndmq_m_f32): Remove.
6454 (vrndnq_m_f32): Remove.
6455 (vrndpq_m_f32): Remove.
6456 (vrndq_m_f32): Remove.
6457 (vrndxq_m_f32): Remove.
6458 (vrndq_x_f16): Remove.
6459 (vrndq_x_f32): Remove.
6460 (vrndnq_x_f16): Remove.
6461 (vrndnq_x_f32): Remove.
6462 (vrndmq_x_f16): Remove.
6463 (vrndmq_x_f32): Remove.
6464 (vrndpq_x_f16): Remove.
6465 (vrndpq_x_f32): Remove.
6466 (vrndaq_x_f16): Remove.
6467 (vrndaq_x_f32): Remove.
6468 (vrndxq_x_f16): Remove.
6469 (vrndxq_x_f32): Remove.
6470 (__arm_vrndxq_f16): Remove.
6471 (__arm_vrndxq_f32): Remove.
6472 (__arm_vrndq_f16): Remove.
6473 (__arm_vrndq_f32): Remove.
6474 (__arm_vrndpq_f16): Remove.
6475 (__arm_vrndpq_f32): Remove.
6476 (__arm_vrndnq_f16): Remove.
6477 (__arm_vrndnq_f32): Remove.
6478 (__arm_vrndmq_f16): Remove.
6479 (__arm_vrndmq_f32): Remove.
6480 (__arm_vrndaq_f16): Remove.
6481 (__arm_vrndaq_f32): Remove.
6482 (__arm_vrndaq_m_f16): Remove.
6483 (__arm_vrndmq_m_f16): Remove.
6484 (__arm_vrndnq_m_f16): Remove.
6485 (__arm_vrndpq_m_f16): Remove.
6486 (__arm_vrndq_m_f16): Remove.
6487 (__arm_vrndxq_m_f16): Remove.
6488 (__arm_vrndaq_m_f32): Remove.
6489 (__arm_vrndmq_m_f32): Remove.
6490 (__arm_vrndnq_m_f32): Remove.
6491 (__arm_vrndpq_m_f32): Remove.
6492 (__arm_vrndq_m_f32): Remove.
6493 (__arm_vrndxq_m_f32): Remove.
6494 (__arm_vrndq_x_f16): Remove.
6495 (__arm_vrndq_x_f32): Remove.
6496 (__arm_vrndnq_x_f16): Remove.
6497 (__arm_vrndnq_x_f32): Remove.
6498 (__arm_vrndmq_x_f16): Remove.
6499 (__arm_vrndmq_x_f32): Remove.
6500 (__arm_vrndpq_x_f16): Remove.
6501 (__arm_vrndpq_x_f32): Remove.
6502 (__arm_vrndaq_x_f16): Remove.
6503 (__arm_vrndaq_x_f32): Remove.
6504 (__arm_vrndxq_x_f16): Remove.
6505 (__arm_vrndxq_x_f32): Remove.
6506 (__arm_vrndxq): Remove.
6507 (__arm_vrndq): Remove.
6508 (__arm_vrndpq): Remove.
6509 (__arm_vrndnq): Remove.
6510 (__arm_vrndmq): Remove.
6511 (__arm_vrndaq): Remove.
6512 (__arm_vrndaq_m): Remove.
6513 (__arm_vrndmq_m): Remove.
6514 (__arm_vrndnq_m): Remove.
6515 (__arm_vrndpq_m): Remove.
6516 (__arm_vrndq_m): Remove.
6517 (__arm_vrndxq_m): Remove.
6518 (__arm_vrndq_x): Remove.
6519 (__arm_vrndnq_x): Remove.
6520 (__arm_vrndmq_x): Remove.
6521 (__arm_vrndpq_x): Remove.
6522 (__arm_vrndaq_x): Remove.
6523 (__arm_vrndxq_x): Remove.
6524
6525 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6526
6527 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
6528 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
6529 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
6530 (vclzq, vqabsq, vqnegq): New.
6531 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
6532 (vqabsq, vqnegq): New.
6533 * config/arm/arm_mve.h (vabsq): Remove.
6534 (vabsq_m): Remove.
6535 (vabsq_x): Remove.
6536 (vabsq_f16): Remove.
6537 (vabsq_f32): Remove.
6538 (vabsq_s8): Remove.
6539 (vabsq_s16): Remove.
6540 (vabsq_s32): Remove.
6541 (vabsq_m_s8): Remove.
6542 (vabsq_m_s16): Remove.
6543 (vabsq_m_s32): Remove.
6544 (vabsq_m_f16): Remove.
6545 (vabsq_m_f32): Remove.
6546 (vabsq_x_s8): Remove.
6547 (vabsq_x_s16): Remove.
6548 (vabsq_x_s32): Remove.
6549 (vabsq_x_f16): Remove.
6550 (vabsq_x_f32): Remove.
6551 (__arm_vabsq_s8): Remove.
6552 (__arm_vabsq_s16): Remove.
6553 (__arm_vabsq_s32): Remove.
6554 (__arm_vabsq_m_s8): Remove.
6555 (__arm_vabsq_m_s16): Remove.
6556 (__arm_vabsq_m_s32): Remove.
6557 (__arm_vabsq_x_s8): Remove.
6558 (__arm_vabsq_x_s16): Remove.
6559 (__arm_vabsq_x_s32): Remove.
6560 (__arm_vabsq_f16): Remove.
6561 (__arm_vabsq_f32): Remove.
6562 (__arm_vabsq_m_f16): Remove.
6563 (__arm_vabsq_m_f32): Remove.
6564 (__arm_vabsq_x_f16): Remove.
6565 (__arm_vabsq_x_f32): Remove.
6566 (__arm_vabsq): Remove.
6567 (__arm_vabsq_m): Remove.
6568 (__arm_vabsq_x): Remove.
6569 (vnegq): Remove.
6570 (vnegq_m): Remove.
6571 (vnegq_x): Remove.
6572 (vnegq_f16): Remove.
6573 (vnegq_f32): Remove.
6574 (vnegq_s8): Remove.
6575 (vnegq_s16): Remove.
6576 (vnegq_s32): Remove.
6577 (vnegq_m_s8): Remove.
6578 (vnegq_m_s16): Remove.
6579 (vnegq_m_s32): Remove.
6580 (vnegq_m_f16): Remove.
6581 (vnegq_m_f32): Remove.
6582 (vnegq_x_s8): Remove.
6583 (vnegq_x_s16): Remove.
6584 (vnegq_x_s32): Remove.
6585 (vnegq_x_f16): Remove.
6586 (vnegq_x_f32): Remove.
6587 (__arm_vnegq_s8): Remove.
6588 (__arm_vnegq_s16): Remove.
6589 (__arm_vnegq_s32): Remove.
6590 (__arm_vnegq_m_s8): Remove.
6591 (__arm_vnegq_m_s16): Remove.
6592 (__arm_vnegq_m_s32): Remove.
6593 (__arm_vnegq_x_s8): Remove.
6594 (__arm_vnegq_x_s16): Remove.
6595 (__arm_vnegq_x_s32): Remove.
6596 (__arm_vnegq_f16): Remove.
6597 (__arm_vnegq_f32): Remove.
6598 (__arm_vnegq_m_f16): Remove.
6599 (__arm_vnegq_m_f32): Remove.
6600 (__arm_vnegq_x_f16): Remove.
6601 (__arm_vnegq_x_f32): Remove.
6602 (__arm_vnegq): Remove.
6603 (__arm_vnegq_m): Remove.
6604 (__arm_vnegq_x): Remove.
6605 (vclsq): Remove.
6606 (vclsq_m): Remove.
6607 (vclsq_x): Remove.
6608 (vclsq_s8): Remove.
6609 (vclsq_s16): Remove.
6610 (vclsq_s32): Remove.
6611 (vclsq_m_s8): Remove.
6612 (vclsq_m_s16): Remove.
6613 (vclsq_m_s32): Remove.
6614 (vclsq_x_s8): Remove.
6615 (vclsq_x_s16): Remove.
6616 (vclsq_x_s32): Remove.
6617 (__arm_vclsq_s8): Remove.
6618 (__arm_vclsq_s16): Remove.
6619 (__arm_vclsq_s32): Remove.
6620 (__arm_vclsq_m_s8): Remove.
6621 (__arm_vclsq_m_s16): Remove.
6622 (__arm_vclsq_m_s32): Remove.
6623 (__arm_vclsq_x_s8): Remove.
6624 (__arm_vclsq_x_s16): Remove.
6625 (__arm_vclsq_x_s32): Remove.
6626 (__arm_vclsq): Remove.
6627 (__arm_vclsq_m): Remove.
6628 (__arm_vclsq_x): Remove.
6629 (vclzq): Remove.
6630 (vclzq_m): Remove.
6631 (vclzq_x): Remove.
6632 (vclzq_s8): Remove.
6633 (vclzq_s16): Remove.
6634 (vclzq_s32): Remove.
6635 (vclzq_u8): Remove.
6636 (vclzq_u16): Remove.
6637 (vclzq_u32): Remove.
6638 (vclzq_m_u8): Remove.
6639 (vclzq_m_s8): Remove.
6640 (vclzq_m_u16): Remove.
6641 (vclzq_m_s16): Remove.
6642 (vclzq_m_u32): Remove.
6643 (vclzq_m_s32): Remove.
6644 (vclzq_x_s8): Remove.
6645 (vclzq_x_s16): Remove.
6646 (vclzq_x_s32): Remove.
6647 (vclzq_x_u8): Remove.
6648 (vclzq_x_u16): Remove.
6649 (vclzq_x_u32): Remove.
6650 (__arm_vclzq_s8): Remove.
6651 (__arm_vclzq_s16): Remove.
6652 (__arm_vclzq_s32): Remove.
6653 (__arm_vclzq_u8): Remove.
6654 (__arm_vclzq_u16): Remove.
6655 (__arm_vclzq_u32): Remove.
6656 (__arm_vclzq_m_u8): Remove.
6657 (__arm_vclzq_m_s8): Remove.
6658 (__arm_vclzq_m_u16): Remove.
6659 (__arm_vclzq_m_s16): Remove.
6660 (__arm_vclzq_m_u32): Remove.
6661 (__arm_vclzq_m_s32): Remove.
6662 (__arm_vclzq_x_s8): Remove.
6663 (__arm_vclzq_x_s16): Remove.
6664 (__arm_vclzq_x_s32): Remove.
6665 (__arm_vclzq_x_u8): Remove.
6666 (__arm_vclzq_x_u16): Remove.
6667 (__arm_vclzq_x_u32): Remove.
6668 (__arm_vclzq): Remove.
6669 (__arm_vclzq_m): Remove.
6670 (__arm_vclzq_x): Remove.
6671 (vqabsq): Remove.
6672 (vqnegq): Remove.
6673 (vqnegq_m): Remove.
6674 (vqabsq_m): Remove.
6675 (vqabsq_s8): Remove.
6676 (vqabsq_s16): Remove.
6677 (vqabsq_s32): Remove.
6678 (vqnegq_s8): Remove.
6679 (vqnegq_s16): Remove.
6680 (vqnegq_s32): Remove.
6681 (vqnegq_m_s8): Remove.
6682 (vqabsq_m_s8): Remove.
6683 (vqnegq_m_s16): Remove.
6684 (vqabsq_m_s16): Remove.
6685 (vqnegq_m_s32): Remove.
6686 (vqabsq_m_s32): Remove.
6687 (__arm_vqabsq_s8): Remove.
6688 (__arm_vqabsq_s16): Remove.
6689 (__arm_vqabsq_s32): Remove.
6690 (__arm_vqnegq_s8): Remove.
6691 (__arm_vqnegq_s16): Remove.
6692 (__arm_vqnegq_s32): Remove.
6693 (__arm_vqnegq_m_s8): Remove.
6694 (__arm_vqabsq_m_s8): Remove.
6695 (__arm_vqnegq_m_s16): Remove.
6696 (__arm_vqabsq_m_s16): Remove.
6697 (__arm_vqnegq_m_s32): Remove.
6698 (__arm_vqabsq_m_s32): Remove.
6699 (__arm_vqabsq): Remove.
6700 (__arm_vqnegq): Remove.
6701 (__arm_vqnegq_m): Remove.
6702 (__arm_vqabsq_m): Remove.
6703
6704 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6705
6706 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
6707 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
6708 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
6709 vrndm, vrndn, vrndp, vrnd, vrndx.
6710 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
6711 VQABSQ_M_S, VQNEGQ_M_S.
6712 (mve_mnemo): New.
6713 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
6714 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
6715 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
6716 (@mve_<mve_insn>q_f<mode>): ... this.
6717 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
6718 (mve_v<absneg_str>q_f<mode>): ... this.
6719 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
6720 (mve_v<absneg_str>q_s<mode>): ... this.
6721 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
6722 (@mve_<mve_insn>q_<supf><mode>): ... this.
6723 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
6724 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
6725 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
6726 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6727 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
6728 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
6729 (mve_vrndxq_m_f<mode>): Merge into ...
6730 (@mve_<mve_insn>q_m_f<mode>): ... this.
6731
6732 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6733
6734 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
6735 * config/arm/arm-mve-builtins-shapes.h (unary): New.
6736
6737 2023-05-09 Jakub Jelinek <jakub@redhat.com>
6738
6739 * mux-utils.h: Fix comment typo, avoides -> avoids.
6740
6741 2023-05-09 Jakub Jelinek <jakub@redhat.com>
6742
6743 PR tree-optimization/109778
6744 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
6745 wi::zext (x, width) rather than x if width != precision, rather
6746 than using wi::zext (right, width) after the shift.
6747 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
6748 of wi::lrotate or wi::rrotate.
6749
6750 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6751
6752 * genmatch.cc (get_out_file): Make static and rename to ...
6753 (choose_output): ... this. Reimplement. Update all uses ...
6754 (decision_tree::gen): ... here and ...
6755 (main): ... here.
6756
6757 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6758
6759 * genmatch.cc (showUsage): Reimplement as ...
6760 (usage): ...this. Adjust all uses.
6761 (main): Print usage when no arguments. Add missing 'return 1'.
6762
6763 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6764
6765 * genmatch.cc (header_file): Make static.
6766 (emit_func): Rename to...
6767 (fp_decl): ... this. Adjust all uses.
6768 (fp_decl_done): New function. Use it...
6769 (decision_tree::gen): ... here and...
6770 (write_predicate): ... here.
6771 (main): Adjust.
6772
6773 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
6774
6775 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
6776 earlyclobbers.
6777
6778 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
6779 Uros Bizjak <ubizjak@gmail.com>
6780
6781 * config/i386/i386.md (any_or_plus): Move definition earlier.
6782 (*insvti_highpart_1): New define_insn_and_split to overwrite
6783 (insv) the highpart of a TImode register/memory.
6784
6785 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
6786
6787 * auto-profile.cc (auto_profile): Check todo from early_inline
6788 to see if cleanup_tree_vfg needs to be called.
6789 (early_inline): Return todo from early_inliner.
6790
6791 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
6792
6793 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
6794 New.
6795 (pass_vsetvl::get_block_info): New.
6796 (pass_vsetvl::update_vector_info): New.
6797 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
6798 (pass_vsetvl::compute_local_backward_infos): Ditto.
6799 (pass_vsetvl::transfer_before): Ditto.
6800 (pass_vsetvl::transfer_after): Ditto.
6801 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
6802 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
6803 (pass_vsetvl::cleanup_insns): Ditto.
6804 (pass_vsetvl::compute_local_backward_infos): Use
6805 update_vector_info.
6806
6807 2023-05-08 Jeff Law <jlaw@ventanamicro>
6808
6809 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
6810
6811 2023-05-08 Richard Biener <rguenther@suse.de>
6812 Michael Meissner <meissner@linux.ibm.com>
6813
6814 PR middle-end/108623
6815 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
6816 Align bit fields > 1 bit to at least an 8-bit boundary.
6817
6818 2023-05-08 Andrew Pinski <apinski@marvell.com>
6819
6820 PR tree-optimization/109424
6821 PR tree-optimization/59424
6822 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
6823 (factor_out_conditional_operation): This and add support for all unary
6824 operations.
6825 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
6826 to call factor_out_conditional_operation instead.
6827
6828 2023-05-08 Andrew Pinski <apinski@marvell.com>
6829
6830 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
6831 over factor_out_conditional_conversion.
6832
6833 2023-05-08 Andrew Pinski <apinski@marvell.com>
6834
6835 PR tree-optimization/49959
6836 PR tree-optimization/103771
6837 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
6838 Diamond shapped bb form for factor_out_conditional_conversion.
6839
6840 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6841
6842 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
6843 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
6844 (riscv_vector_get_mask_mode): Ditto.
6845 (get_mask_policy_no_pred): Ditto.
6846 (get_tail_policy_no_pred): Ditto.
6847 (get_mask_mode): New function.
6848 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
6849 (get_tail_policy_no_pred): Ditto.
6850 (riscv_vector_mask_mode_p): Ditto.
6851 (riscv_vector_get_mask_mode): Ditto.
6852 (get_mask_mode): New function.
6853 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
6854 global extern.
6855 (get_tail_policy_for_pred): Ditto.
6856 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
6857 (get_mask_policy_for_pred): Ditto
6858 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
6859
6860 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
6861
6862 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
6863 (riscv_select_multilib): New.
6864 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
6865 also handle select_by_abi.
6866 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
6867 to select_by_abi_arch_cmodel from 1.
6868 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
6869 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
6870
6871 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
6872
6873 * Makefile.in: (gimple-match-head.o-warn): Remove.
6874 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
6875 gimple-match-exports.cc.
6876 (gimple-match-auto.h): Only depend on s-gimple-match.
6877 (generic-match-auto.h): Likewise.
6878
6879 2023-05-08 Andrew Pinski <apinski@marvell.com>
6880
6881 PR tree-optimization/109691
6882 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
6883 argument.
6884 If the removed statement can throw, have need_eh_cleanup
6885 include the bb of that statement.
6886 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
6887 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
6888 num_dce.
6889 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
6890 Initialize dceworklist instead of stmts_to_remove.
6891 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
6892 Destore dceworklist instead of stmts_to_remove.
6893 (substitute_and_fold_dom_walker::before_dom_children):
6894 Set dceworklist instead of adding to stmts_to_remove.
6895 (substitute_and_fold_engine::substitute_and_fold):
6896 Call simple_dce_from_worklist instead of poping
6897 from the list.
6898 Don't update the stat on removal statements.
6899
6900 2023-05-07 Andrew Pinski <apinski@marvell.com>
6901
6902 PR target/109762
6903 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
6904 Change argument type to aarch64_feature_flags.
6905 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
6906 constructor argument type to aarch64_feature_flags.
6907 Change m_old_asm_isa_flags to be aarch64_feature_flags.
6908
6909 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
6910
6911 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
6912 more parallel code if can_create_pseudo_p.
6913
6914 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
6915
6916 PR target/43644
6917 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
6918 immediately before moving a multi-word register by parts.
6919
6920 2023-05-06 Jeff Law <jlaw@ventanamicro>
6921
6922 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
6923
6924 2023-05-06 Michael Collison <collison@rivosinc.com>
6925
6926 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
6927 Check that GET_MODE_NUNITS is a multiple of 2.
6928
6929 2023-05-06 Michael Collison <collison@rivosinc.com>
6930
6931 * config/riscv/riscv.cc
6932 (riscv_estimated_poly_value): Implement
6933 TARGET_ESTIMATED_POLY_VALUE.
6934 (riscv_preferred_simd_mode): Implement
6935 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
6936 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
6937 (riscv_empty_mask_is_expensive): Implement
6938 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
6939 (riscv_vectorize_create_costs): Implement
6940 TARGET_VECTORIZE_CREATE_COSTS.
6941 (riscv_support_vector_misalignment): Implement
6942 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
6943 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
6944 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
6945 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
6946 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
6947
6948 2023-05-06 Jeff Law <jlaw@ventanamicro>
6949
6950 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
6951 duplicate definition.
6952
6953 2023-05-06 Michael Collison <collison@rivosinc.com>
6954
6955 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
6956 (riscv_vector_preferred_simd_mode): Ditto.
6957 (get_mask_policy_no_pred): Ditto.
6958 (get_tail_policy_no_pred): Ditto.
6959 (riscv_vector_mask_mode_p): Ditto.
6960 (riscv_vector_get_mask_mode): Ditto.
6961
6962 2023-05-06 Michael Collison <collison@rivosinc.com>
6963
6964 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
6965 Remove static declaration to to make externally visible.
6966 (get_mask_policy_for_pred): Ditto.
6967 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
6968 New external declaration.
6969 (get_mask_policy_for_pred): Ditto.
6970
6971 2023-05-06 Michael Collison <collison@rivosinc.com>
6972
6973 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
6974 (riscv_vector_get_mask_mode): Ditto.
6975 (get_mask_policy_no_pred): Ditto.
6976 (get_tail_policy_no_pred): Ditto.
6977
6978 2023-05-06 Xi Ruoyao <xry111@xry111.site>
6979
6980 * config/loongarch/loongarch.h (struct machine_function): Add
6981 reg_is_wrapped_separately array for register wrapping
6982 information.
6983 * config/loongarch/loongarch.cc
6984 (loongarch_get_separate_components): New function.
6985 (loongarch_components_for_bb): Likewise.
6986 (loongarch_disqualify_components): Likewise.
6987 (loongarch_process_components): Likewise.
6988 (loongarch_emit_prologue_components): Likewise.
6989 (loongarch_emit_epilogue_components): Likewise.
6990 (loongarch_set_handled_components): Likewise.
6991 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
6992 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
6993 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
6994 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
6995 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
6996 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
6997 (loongarch_for_each_saved_reg): Skip registers that are wrapped
6998 separately.
6999
7000 2023-05-06 Xi Ruoyao <xry111@xry111.site>
7001
7002 PR other/109522
7003 * Makefile.in (s-macro_list): Pass -nostdinc to
7004 $(GCC_FOR_TARGET).
7005
7006 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7007
7008 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
7009 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
7010 (preferred_simd_mode): Ditto.
7011 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
7012 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
7013 (riscv_preferred_simd_mode): New function.
7014 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
7015 * config/riscv/vector.md: Add autovec.md.
7016 * config/riscv/autovec.md: New file.
7017
7018 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7019
7020 * real.h (dconst_pi): Define.
7021 (dconst_e_ptr): Formatting fix.
7022 (dconst_pi_ptr): Declare.
7023 * real.cc (dconst_pi_ptr): New function.
7024 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
7025 boundaries range with range computed from sin/cos of the particular
7026 bounds if the argument range is shorter than 2*pi.
7027 (cfn_sincos::op1_range): Take bulps into account when determining
7028 which result ranges are always invalid or behave like known NAN.
7029
7030 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
7031
7032 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
7033 pass type to vrange_storage::equal_p.
7034 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
7035 (irange_storage::equal_p): Same.
7036 (frange_storage::equal_p): Same.
7037 * value-range-storage.h (class frange_storage): Same.
7038
7039 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7040
7041 PR target/109748
7042 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
7043 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
7044
7045 2023-05-06 liuhongt <hongtao.liu@intel.com>
7046
7047 * combine.cc (maybe_swap_commutative_operands): Canonicalize
7048 vec_merge when mask is constant.
7049 * doc/md.texi: Document vec_merge canonicalization.
7050
7051 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7052
7053 * value-range.h (frange_arithmetic): Declare.
7054 * range-op-float.cc (frange_arithmetic): No longer static.
7055 * gimple-range-op.cc (frange_mpfr_arg1): New function.
7056 (cfn_sqrt::fold_range): Intersect the generic boundaries range
7057 with range computed from sqrt of the particular bounds.
7058 (cfn_sqrt::op1_range): Intersect the generic boundaries range
7059 with range computed from squared particular bounds.
7060
7061 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7062
7063 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
7064 earlier with helper variables also renamed.
7065 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
7066 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
7067 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
7068
7069 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
7070
7071 * config/cris/cris.md (splitop): Add PLUS.
7072 * config/cris/cris.cc (cris_split_constant): Also handle
7073 PLUS when a split into two insns may be useful.
7074
7075 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7076
7077 * config/cris/cris.md (movandsplit1): New define_peephole2.
7078
7079 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7080
7081 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
7082
7083 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7084
7085 * doc/md.texi (define_peephole2): Document order of scanning.
7086
7087 2023-05-05 Pan Li <pan2.li@intel.com>
7088 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7089
7090 * config/riscv/vector.md: Allow const as the operand of RVV
7091 indexed load/store.
7092
7093 2023-05-05 Pan Li <pan2.li@intel.com>
7094
7095 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
7096 consumed by simplify_rtx.
7097
7098 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7099
7100 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
7101 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
7102 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
7103 * config/arm/arm_mve.h (vshrq): Remove.
7104 (vrshrq): Remove.
7105 (vrshrq_m): Remove.
7106 (vshrq_m): Remove.
7107 (vrshrq_x): Remove.
7108 (vshrq_x): Remove.
7109 (vshrq_n_s8): Remove.
7110 (vshrq_n_s16): Remove.
7111 (vshrq_n_s32): Remove.
7112 (vshrq_n_u8): Remove.
7113 (vshrq_n_u16): Remove.
7114 (vshrq_n_u32): Remove.
7115 (vrshrq_n_u8): Remove.
7116 (vrshrq_n_s8): Remove.
7117 (vrshrq_n_u16): Remove.
7118 (vrshrq_n_s16): Remove.
7119 (vrshrq_n_u32): Remove.
7120 (vrshrq_n_s32): Remove.
7121 (vrshrq_m_n_s8): Remove.
7122 (vrshrq_m_n_s32): Remove.
7123 (vrshrq_m_n_s16): Remove.
7124 (vrshrq_m_n_u8): Remove.
7125 (vrshrq_m_n_u32): Remove.
7126 (vrshrq_m_n_u16): Remove.
7127 (vshrq_m_n_s8): Remove.
7128 (vshrq_m_n_s32): Remove.
7129 (vshrq_m_n_s16): Remove.
7130 (vshrq_m_n_u8): Remove.
7131 (vshrq_m_n_u32): Remove.
7132 (vshrq_m_n_u16): Remove.
7133 (vrshrq_x_n_s8): Remove.
7134 (vrshrq_x_n_s16): Remove.
7135 (vrshrq_x_n_s32): Remove.
7136 (vrshrq_x_n_u8): Remove.
7137 (vrshrq_x_n_u16): Remove.
7138 (vrshrq_x_n_u32): Remove.
7139 (vshrq_x_n_s8): Remove.
7140 (vshrq_x_n_s16): Remove.
7141 (vshrq_x_n_s32): Remove.
7142 (vshrq_x_n_u8): Remove.
7143 (vshrq_x_n_u16): Remove.
7144 (vshrq_x_n_u32): Remove.
7145 (__arm_vshrq_n_s8): Remove.
7146 (__arm_vshrq_n_s16): Remove.
7147 (__arm_vshrq_n_s32): Remove.
7148 (__arm_vshrq_n_u8): Remove.
7149 (__arm_vshrq_n_u16): Remove.
7150 (__arm_vshrq_n_u32): Remove.
7151 (__arm_vrshrq_n_u8): Remove.
7152 (__arm_vrshrq_n_s8): Remove.
7153 (__arm_vrshrq_n_u16): Remove.
7154 (__arm_vrshrq_n_s16): Remove.
7155 (__arm_vrshrq_n_u32): Remove.
7156 (__arm_vrshrq_n_s32): Remove.
7157 (__arm_vrshrq_m_n_s8): Remove.
7158 (__arm_vrshrq_m_n_s32): Remove.
7159 (__arm_vrshrq_m_n_s16): Remove.
7160 (__arm_vrshrq_m_n_u8): Remove.
7161 (__arm_vrshrq_m_n_u32): Remove.
7162 (__arm_vrshrq_m_n_u16): Remove.
7163 (__arm_vshrq_m_n_s8): Remove.
7164 (__arm_vshrq_m_n_s32): Remove.
7165 (__arm_vshrq_m_n_s16): Remove.
7166 (__arm_vshrq_m_n_u8): Remove.
7167 (__arm_vshrq_m_n_u32): Remove.
7168 (__arm_vshrq_m_n_u16): Remove.
7169 (__arm_vrshrq_x_n_s8): Remove.
7170 (__arm_vrshrq_x_n_s16): Remove.
7171 (__arm_vrshrq_x_n_s32): Remove.
7172 (__arm_vrshrq_x_n_u8): Remove.
7173 (__arm_vrshrq_x_n_u16): Remove.
7174 (__arm_vrshrq_x_n_u32): Remove.
7175 (__arm_vshrq_x_n_s8): Remove.
7176 (__arm_vshrq_x_n_s16): Remove.
7177 (__arm_vshrq_x_n_s32): Remove.
7178 (__arm_vshrq_x_n_u8): Remove.
7179 (__arm_vshrq_x_n_u16): Remove.
7180 (__arm_vshrq_x_n_u32): Remove.
7181 (__arm_vshrq): Remove.
7182 (__arm_vrshrq): Remove.
7183 (__arm_vrshrq_m): Remove.
7184 (__arm_vshrq_m): Remove.
7185 (__arm_vrshrq_x): Remove.
7186 (__arm_vshrq_x): Remove.
7187
7188 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7189
7190 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
7191 (mve_insn): Add vrshr, vshr.
7192 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
7193 (mve_vrshrq_n_<supf><mode>): Merge into ...
7194 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7195 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
7196 into ...
7197 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7198
7199 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7200
7201 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
7202 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
7203
7204 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7205
7206 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
7207 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
7208 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
7209 (vqrshrunbq, vqrshruntq): New.
7210 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
7211 (vqrshrunbq, vqrshruntq): New.
7212 * config/arm/arm-mve-builtins.cc
7213 (function_instance::has_inactive_argument): Handle vqshrunbq,
7214 vqshruntq, vqrshrunbq, vqrshruntq.
7215 * config/arm/arm_mve.h (vqrshrunbq): Remove.
7216 (vqrshruntq): Remove.
7217 (vqrshrunbq_m): Remove.
7218 (vqrshruntq_m): Remove.
7219 (vqrshrunbq_n_s16): Remove.
7220 (vqrshrunbq_n_s32): Remove.
7221 (vqrshruntq_n_s16): Remove.
7222 (vqrshruntq_n_s32): Remove.
7223 (vqrshrunbq_m_n_s32): Remove.
7224 (vqrshrunbq_m_n_s16): Remove.
7225 (vqrshruntq_m_n_s32): Remove.
7226 (vqrshruntq_m_n_s16): Remove.
7227 (__arm_vqrshrunbq_n_s16): Remove.
7228 (__arm_vqrshrunbq_n_s32): Remove.
7229 (__arm_vqrshruntq_n_s16): Remove.
7230 (__arm_vqrshruntq_n_s32): Remove.
7231 (__arm_vqrshrunbq_m_n_s32): Remove.
7232 (__arm_vqrshrunbq_m_n_s16): Remove.
7233 (__arm_vqrshruntq_m_n_s32): Remove.
7234 (__arm_vqrshruntq_m_n_s16): Remove.
7235 (__arm_vqrshrunbq): Remove.
7236 (__arm_vqrshruntq): Remove.
7237 (__arm_vqrshrunbq_m): Remove.
7238 (__arm_vqrshruntq_m): Remove.
7239 (vqshrunbq): Remove.
7240 (vqshruntq): Remove.
7241 (vqshrunbq_m): Remove.
7242 (vqshruntq_m): Remove.
7243 (vqshrunbq_n_s16): Remove.
7244 (vqshruntq_n_s16): Remove.
7245 (vqshrunbq_n_s32): Remove.
7246 (vqshruntq_n_s32): Remove.
7247 (vqshrunbq_m_n_s32): Remove.
7248 (vqshrunbq_m_n_s16): Remove.
7249 (vqshruntq_m_n_s32): Remove.
7250 (vqshruntq_m_n_s16): Remove.
7251 (__arm_vqshrunbq_n_s16): Remove.
7252 (__arm_vqshruntq_n_s16): Remove.
7253 (__arm_vqshrunbq_n_s32): Remove.
7254 (__arm_vqshruntq_n_s32): Remove.
7255 (__arm_vqshrunbq_m_n_s32): Remove.
7256 (__arm_vqshrunbq_m_n_s16): Remove.
7257 (__arm_vqshruntq_m_n_s32): Remove.
7258 (__arm_vqshruntq_m_n_s16): Remove.
7259 (__arm_vqshrunbq): Remove.
7260 (__arm_vqshruntq): Remove.
7261 (__arm_vqshrunbq_m): Remove.
7262 (__arm_vqshruntq_m): Remove.
7263
7264 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7265
7266 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
7267 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
7268 (MVE_SHRN_M_N): Likewise.
7269 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
7270 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
7271 (supf): Likewise.
7272 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
7273 (mve_vqrshruntq_n_s<mode>): Remove.
7274 (mve_vqshrunbq_n_s<mode>): Remove.
7275 (mve_vqshruntq_n_s<mode>): Remove.
7276 (mve_vqrshrunbq_m_n_s<mode>): Remove.
7277 (mve_vqrshruntq_m_n_s<mode>): Remove.
7278 (mve_vqshrunbq_m_n_s<mode>): Remove.
7279 (mve_vqshruntq_m_n_s<mode>): Remove.
7280
7281 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7282
7283 * config/arm/arm-mve-builtins-shapes.cc
7284 (binary_rshift_narrow_unsigned): New.
7285 * config/arm/arm-mve-builtins-shapes.h
7286 (binary_rshift_narrow_unsigned): New.
7287
7288 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7289
7290 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
7291 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
7292 (vqrshrnbq, vqrshrntq): New.
7293 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
7294 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
7295 New.
7296 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
7297 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
7298 * config/arm/arm-mve-builtins.cc
7299 (function_instance::has_inactive_argument): Handle vshrnbq,
7300 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
7301 vqrshrntq.
7302 * config/arm/arm_mve.h (vshrnbq): Remove.
7303 (vshrntq): Remove.
7304 (vshrnbq_m): Remove.
7305 (vshrntq_m): Remove.
7306 (vshrnbq_n_s16): Remove.
7307 (vshrntq_n_s16): Remove.
7308 (vshrnbq_n_u16): Remove.
7309 (vshrntq_n_u16): Remove.
7310 (vshrnbq_n_s32): Remove.
7311 (vshrntq_n_s32): Remove.
7312 (vshrnbq_n_u32): Remove.
7313 (vshrntq_n_u32): Remove.
7314 (vshrnbq_m_n_s32): Remove.
7315 (vshrnbq_m_n_s16): Remove.
7316 (vshrnbq_m_n_u32): Remove.
7317 (vshrnbq_m_n_u16): Remove.
7318 (vshrntq_m_n_s32): Remove.
7319 (vshrntq_m_n_s16): Remove.
7320 (vshrntq_m_n_u32): Remove.
7321 (vshrntq_m_n_u16): Remove.
7322 (__arm_vshrnbq_n_s16): Remove.
7323 (__arm_vshrntq_n_s16): Remove.
7324 (__arm_vshrnbq_n_u16): Remove.
7325 (__arm_vshrntq_n_u16): Remove.
7326 (__arm_vshrnbq_n_s32): Remove.
7327 (__arm_vshrntq_n_s32): Remove.
7328 (__arm_vshrnbq_n_u32): Remove.
7329 (__arm_vshrntq_n_u32): Remove.
7330 (__arm_vshrnbq_m_n_s32): Remove.
7331 (__arm_vshrnbq_m_n_s16): Remove.
7332 (__arm_vshrnbq_m_n_u32): Remove.
7333 (__arm_vshrnbq_m_n_u16): Remove.
7334 (__arm_vshrntq_m_n_s32): Remove.
7335 (__arm_vshrntq_m_n_s16): Remove.
7336 (__arm_vshrntq_m_n_u32): Remove.
7337 (__arm_vshrntq_m_n_u16): Remove.
7338 (__arm_vshrnbq): Remove.
7339 (__arm_vshrntq): Remove.
7340 (__arm_vshrnbq_m): Remove.
7341 (__arm_vshrntq_m): Remove.
7342 (vrshrnbq): Remove.
7343 (vrshrntq): Remove.
7344 (vrshrnbq_m): Remove.
7345 (vrshrntq_m): Remove.
7346 (vrshrnbq_n_s16): Remove.
7347 (vrshrntq_n_s16): Remove.
7348 (vrshrnbq_n_u16): Remove.
7349 (vrshrntq_n_u16): Remove.
7350 (vrshrnbq_n_s32): Remove.
7351 (vrshrntq_n_s32): Remove.
7352 (vrshrnbq_n_u32): Remove.
7353 (vrshrntq_n_u32): Remove.
7354 (vrshrnbq_m_n_s32): Remove.
7355 (vrshrnbq_m_n_s16): Remove.
7356 (vrshrnbq_m_n_u32): Remove.
7357 (vrshrnbq_m_n_u16): Remove.
7358 (vrshrntq_m_n_s32): Remove.
7359 (vrshrntq_m_n_s16): Remove.
7360 (vrshrntq_m_n_u32): Remove.
7361 (vrshrntq_m_n_u16): Remove.
7362 (__arm_vrshrnbq_n_s16): Remove.
7363 (__arm_vrshrntq_n_s16): Remove.
7364 (__arm_vrshrnbq_n_u16): Remove.
7365 (__arm_vrshrntq_n_u16): Remove.
7366 (__arm_vrshrnbq_n_s32): Remove.
7367 (__arm_vrshrntq_n_s32): Remove.
7368 (__arm_vrshrnbq_n_u32): Remove.
7369 (__arm_vrshrntq_n_u32): Remove.
7370 (__arm_vrshrnbq_m_n_s32): Remove.
7371 (__arm_vrshrnbq_m_n_s16): Remove.
7372 (__arm_vrshrnbq_m_n_u32): Remove.
7373 (__arm_vrshrnbq_m_n_u16): Remove.
7374 (__arm_vrshrntq_m_n_s32): Remove.
7375 (__arm_vrshrntq_m_n_s16): Remove.
7376 (__arm_vrshrntq_m_n_u32): Remove.
7377 (__arm_vrshrntq_m_n_u16): Remove.
7378 (__arm_vrshrnbq): Remove.
7379 (__arm_vrshrntq): Remove.
7380 (__arm_vrshrnbq_m): Remove.
7381 (__arm_vrshrntq_m): Remove.
7382 (vqshrnbq): Remove.
7383 (vqshrntq): Remove.
7384 (vqshrnbq_m): Remove.
7385 (vqshrntq_m): Remove.
7386 (vqshrnbq_n_s16): Remove.
7387 (vqshrntq_n_s16): Remove.
7388 (vqshrnbq_n_u16): Remove.
7389 (vqshrntq_n_u16): Remove.
7390 (vqshrnbq_n_s32): Remove.
7391 (vqshrntq_n_s32): Remove.
7392 (vqshrnbq_n_u32): Remove.
7393 (vqshrntq_n_u32): Remove.
7394 (vqshrnbq_m_n_s32): Remove.
7395 (vqshrnbq_m_n_s16): Remove.
7396 (vqshrnbq_m_n_u32): Remove.
7397 (vqshrnbq_m_n_u16): Remove.
7398 (vqshrntq_m_n_s32): Remove.
7399 (vqshrntq_m_n_s16): Remove.
7400 (vqshrntq_m_n_u32): Remove.
7401 (vqshrntq_m_n_u16): Remove.
7402 (__arm_vqshrnbq_n_s16): Remove.
7403 (__arm_vqshrntq_n_s16): Remove.
7404 (__arm_vqshrnbq_n_u16): Remove.
7405 (__arm_vqshrntq_n_u16): Remove.
7406 (__arm_vqshrnbq_n_s32): Remove.
7407 (__arm_vqshrntq_n_s32): Remove.
7408 (__arm_vqshrnbq_n_u32): Remove.
7409 (__arm_vqshrntq_n_u32): Remove.
7410 (__arm_vqshrnbq_m_n_s32): Remove.
7411 (__arm_vqshrnbq_m_n_s16): Remove.
7412 (__arm_vqshrnbq_m_n_u32): Remove.
7413 (__arm_vqshrnbq_m_n_u16): Remove.
7414 (__arm_vqshrntq_m_n_s32): Remove.
7415 (__arm_vqshrntq_m_n_s16): Remove.
7416 (__arm_vqshrntq_m_n_u32): Remove.
7417 (__arm_vqshrntq_m_n_u16): Remove.
7418 (__arm_vqshrnbq): Remove.
7419 (__arm_vqshrntq): Remove.
7420 (__arm_vqshrnbq_m): Remove.
7421 (__arm_vqshrntq_m): Remove.
7422 (vqrshrnbq): Remove.
7423 (vqrshrntq): Remove.
7424 (vqrshrnbq_m): Remove.
7425 (vqrshrntq_m): Remove.
7426 (vqrshrnbq_n_s16): Remove.
7427 (vqrshrnbq_n_u16): Remove.
7428 (vqrshrnbq_n_s32): Remove.
7429 (vqrshrnbq_n_u32): Remove.
7430 (vqrshrntq_n_s16): Remove.
7431 (vqrshrntq_n_u16): Remove.
7432 (vqrshrntq_n_s32): Remove.
7433 (vqrshrntq_n_u32): Remove.
7434 (vqrshrnbq_m_n_s32): Remove.
7435 (vqrshrnbq_m_n_s16): Remove.
7436 (vqrshrnbq_m_n_u32): Remove.
7437 (vqrshrnbq_m_n_u16): Remove.
7438 (vqrshrntq_m_n_s32): Remove.
7439 (vqrshrntq_m_n_s16): Remove.
7440 (vqrshrntq_m_n_u32): Remove.
7441 (vqrshrntq_m_n_u16): Remove.
7442 (__arm_vqrshrnbq_n_s16): Remove.
7443 (__arm_vqrshrnbq_n_u16): Remove.
7444 (__arm_vqrshrnbq_n_s32): Remove.
7445 (__arm_vqrshrnbq_n_u32): Remove.
7446 (__arm_vqrshrntq_n_s16): Remove.
7447 (__arm_vqrshrntq_n_u16): Remove.
7448 (__arm_vqrshrntq_n_s32): Remove.
7449 (__arm_vqrshrntq_n_u32): Remove.
7450 (__arm_vqrshrnbq_m_n_s32): Remove.
7451 (__arm_vqrshrnbq_m_n_s16): Remove.
7452 (__arm_vqrshrnbq_m_n_u32): Remove.
7453 (__arm_vqrshrnbq_m_n_u16): Remove.
7454 (__arm_vqrshrntq_m_n_s32): Remove.
7455 (__arm_vqrshrntq_m_n_s16): Remove.
7456 (__arm_vqrshrntq_m_n_u32): Remove.
7457 (__arm_vqrshrntq_m_n_u16): Remove.
7458 (__arm_vqrshrnbq): Remove.
7459 (__arm_vqrshrntq): Remove.
7460 (__arm_vqrshrnbq_m): Remove.
7461 (__arm_vqrshrntq_m): Remove.
7462
7463 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7464
7465 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
7466 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
7467 vrshrnt, vshrnb, vshrnt.
7468 (isu): New.
7469 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
7470 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
7471 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
7472 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
7473 (mve_vshrntq_n_<supf><mode>): Merge into ...
7474 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7475 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
7476 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
7477 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
7478 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
7479 Merge into ...
7480 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7481
7482 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7483
7484 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
7485 New.
7486 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
7487
7488 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7489
7490 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
7491 (vmaxq, vminq): New.
7492 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
7493 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
7494 * config/arm/arm_mve.h (vminq): Remove.
7495 (vmaxq): Remove.
7496 (vmaxq_m): Remove.
7497 (vminq_m): Remove.
7498 (vminq_x): Remove.
7499 (vmaxq_x): Remove.
7500 (vminq_u8): Remove.
7501 (vmaxq_u8): Remove.
7502 (vminq_s8): Remove.
7503 (vmaxq_s8): Remove.
7504 (vminq_u16): Remove.
7505 (vmaxq_u16): Remove.
7506 (vminq_s16): Remove.
7507 (vmaxq_s16): Remove.
7508 (vminq_u32): Remove.
7509 (vmaxq_u32): Remove.
7510 (vminq_s32): Remove.
7511 (vmaxq_s32): Remove.
7512 (vmaxq_m_s8): Remove.
7513 (vmaxq_m_s32): Remove.
7514 (vmaxq_m_s16): Remove.
7515 (vmaxq_m_u8): Remove.
7516 (vmaxq_m_u32): Remove.
7517 (vmaxq_m_u16): Remove.
7518 (vminq_m_s8): Remove.
7519 (vminq_m_s32): Remove.
7520 (vminq_m_s16): Remove.
7521 (vminq_m_u8): Remove.
7522 (vminq_m_u32): Remove.
7523 (vminq_m_u16): Remove.
7524 (vminq_x_s8): Remove.
7525 (vminq_x_s16): Remove.
7526 (vminq_x_s32): Remove.
7527 (vminq_x_u8): Remove.
7528 (vminq_x_u16): Remove.
7529 (vminq_x_u32): Remove.
7530 (vmaxq_x_s8): Remove.
7531 (vmaxq_x_s16): Remove.
7532 (vmaxq_x_s32): Remove.
7533 (vmaxq_x_u8): Remove.
7534 (vmaxq_x_u16): Remove.
7535 (vmaxq_x_u32): Remove.
7536 (__arm_vminq_u8): Remove.
7537 (__arm_vmaxq_u8): Remove.
7538 (__arm_vminq_s8): Remove.
7539 (__arm_vmaxq_s8): Remove.
7540 (__arm_vminq_u16): Remove.
7541 (__arm_vmaxq_u16): Remove.
7542 (__arm_vminq_s16): Remove.
7543 (__arm_vmaxq_s16): Remove.
7544 (__arm_vminq_u32): Remove.
7545 (__arm_vmaxq_u32): Remove.
7546 (__arm_vminq_s32): Remove.
7547 (__arm_vmaxq_s32): Remove.
7548 (__arm_vmaxq_m_s8): Remove.
7549 (__arm_vmaxq_m_s32): Remove.
7550 (__arm_vmaxq_m_s16): Remove.
7551 (__arm_vmaxq_m_u8): Remove.
7552 (__arm_vmaxq_m_u32): Remove.
7553 (__arm_vmaxq_m_u16): Remove.
7554 (__arm_vminq_m_s8): Remove.
7555 (__arm_vminq_m_s32): Remove.
7556 (__arm_vminq_m_s16): Remove.
7557 (__arm_vminq_m_u8): Remove.
7558 (__arm_vminq_m_u32): Remove.
7559 (__arm_vminq_m_u16): Remove.
7560 (__arm_vminq_x_s8): Remove.
7561 (__arm_vminq_x_s16): Remove.
7562 (__arm_vminq_x_s32): Remove.
7563 (__arm_vminq_x_u8): Remove.
7564 (__arm_vminq_x_u16): Remove.
7565 (__arm_vminq_x_u32): Remove.
7566 (__arm_vmaxq_x_s8): Remove.
7567 (__arm_vmaxq_x_s16): Remove.
7568 (__arm_vmaxq_x_s32): Remove.
7569 (__arm_vmaxq_x_u8): Remove.
7570 (__arm_vmaxq_x_u16): Remove.
7571 (__arm_vmaxq_x_u32): Remove.
7572 (__arm_vminq): Remove.
7573 (__arm_vmaxq): Remove.
7574 (__arm_vmaxq_m): Remove.
7575 (__arm_vminq_m): Remove.
7576 (__arm_vminq_x): Remove.
7577 (__arm_vmaxq_x): Remove.
7578
7579 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7580
7581 * config/arm/iterators.md (MAX_MIN_SU): New.
7582 (max_min_su_str): New.
7583 (max_min_supf): New.
7584 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
7585 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
7586 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
7587
7588 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7589
7590 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
7591 (vqshlq, vshlq): New.
7592 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
7593 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
7594 * config/arm/arm_mve.h (vshlq): Remove.
7595 (vshlq_r): Remove.
7596 (vshlq_n): Remove.
7597 (vshlq_m_r): Remove.
7598 (vshlq_m): Remove.
7599 (vshlq_m_n): Remove.
7600 (vshlq_x): Remove.
7601 (vshlq_x_n): Remove.
7602 (vshlq_s8): Remove.
7603 (vshlq_s16): Remove.
7604 (vshlq_s32): Remove.
7605 (vshlq_u8): Remove.
7606 (vshlq_u16): Remove.
7607 (vshlq_u32): Remove.
7608 (vshlq_r_u8): Remove.
7609 (vshlq_n_u8): Remove.
7610 (vshlq_r_s8): Remove.
7611 (vshlq_n_s8): Remove.
7612 (vshlq_r_u16): Remove.
7613 (vshlq_n_u16): Remove.
7614 (vshlq_r_s16): Remove.
7615 (vshlq_n_s16): Remove.
7616 (vshlq_r_u32): Remove.
7617 (vshlq_n_u32): Remove.
7618 (vshlq_r_s32): Remove.
7619 (vshlq_n_s32): Remove.
7620 (vshlq_m_r_u8): Remove.
7621 (vshlq_m_r_s8): Remove.
7622 (vshlq_m_r_u16): Remove.
7623 (vshlq_m_r_s16): Remove.
7624 (vshlq_m_r_u32): Remove.
7625 (vshlq_m_r_s32): Remove.
7626 (vshlq_m_u8): Remove.
7627 (vshlq_m_s8): Remove.
7628 (vshlq_m_u16): Remove.
7629 (vshlq_m_s16): Remove.
7630 (vshlq_m_u32): Remove.
7631 (vshlq_m_s32): Remove.
7632 (vshlq_m_n_s8): Remove.
7633 (vshlq_m_n_s32): Remove.
7634 (vshlq_m_n_s16): Remove.
7635 (vshlq_m_n_u8): Remove.
7636 (vshlq_m_n_u32): Remove.
7637 (vshlq_m_n_u16): Remove.
7638 (vshlq_x_s8): Remove.
7639 (vshlq_x_s16): Remove.
7640 (vshlq_x_s32): Remove.
7641 (vshlq_x_u8): Remove.
7642 (vshlq_x_u16): Remove.
7643 (vshlq_x_u32): Remove.
7644 (vshlq_x_n_s8): Remove.
7645 (vshlq_x_n_s16): Remove.
7646 (vshlq_x_n_s32): Remove.
7647 (vshlq_x_n_u8): Remove.
7648 (vshlq_x_n_u16): Remove.
7649 (vshlq_x_n_u32): Remove.
7650 (__arm_vshlq_s8): Remove.
7651 (__arm_vshlq_s16): Remove.
7652 (__arm_vshlq_s32): Remove.
7653 (__arm_vshlq_u8): Remove.
7654 (__arm_vshlq_u16): Remove.
7655 (__arm_vshlq_u32): Remove.
7656 (__arm_vshlq_r_u8): Remove.
7657 (__arm_vshlq_n_u8): Remove.
7658 (__arm_vshlq_r_s8): Remove.
7659 (__arm_vshlq_n_s8): Remove.
7660 (__arm_vshlq_r_u16): Remove.
7661 (__arm_vshlq_n_u16): Remove.
7662 (__arm_vshlq_r_s16): Remove.
7663 (__arm_vshlq_n_s16): Remove.
7664 (__arm_vshlq_r_u32): Remove.
7665 (__arm_vshlq_n_u32): Remove.
7666 (__arm_vshlq_r_s32): Remove.
7667 (__arm_vshlq_n_s32): Remove.
7668 (__arm_vshlq_m_r_u8): Remove.
7669 (__arm_vshlq_m_r_s8): Remove.
7670 (__arm_vshlq_m_r_u16): Remove.
7671 (__arm_vshlq_m_r_s16): Remove.
7672 (__arm_vshlq_m_r_u32): Remove.
7673 (__arm_vshlq_m_r_s32): Remove.
7674 (__arm_vshlq_m_u8): Remove.
7675 (__arm_vshlq_m_s8): Remove.
7676 (__arm_vshlq_m_u16): Remove.
7677 (__arm_vshlq_m_s16): Remove.
7678 (__arm_vshlq_m_u32): Remove.
7679 (__arm_vshlq_m_s32): Remove.
7680 (__arm_vshlq_m_n_s8): Remove.
7681 (__arm_vshlq_m_n_s32): Remove.
7682 (__arm_vshlq_m_n_s16): Remove.
7683 (__arm_vshlq_m_n_u8): Remove.
7684 (__arm_vshlq_m_n_u32): Remove.
7685 (__arm_vshlq_m_n_u16): Remove.
7686 (__arm_vshlq_x_s8): Remove.
7687 (__arm_vshlq_x_s16): Remove.
7688 (__arm_vshlq_x_s32): Remove.
7689 (__arm_vshlq_x_u8): Remove.
7690 (__arm_vshlq_x_u16): Remove.
7691 (__arm_vshlq_x_u32): Remove.
7692 (__arm_vshlq_x_n_s8): Remove.
7693 (__arm_vshlq_x_n_s16): Remove.
7694 (__arm_vshlq_x_n_s32): Remove.
7695 (__arm_vshlq_x_n_u8): Remove.
7696 (__arm_vshlq_x_n_u16): Remove.
7697 (__arm_vshlq_x_n_u32): Remove.
7698 (__arm_vshlq): Remove.
7699 (__arm_vshlq_r): Remove.
7700 (__arm_vshlq_n): Remove.
7701 (__arm_vshlq_m_r): Remove.
7702 (__arm_vshlq_m): Remove.
7703 (__arm_vshlq_m_n): Remove.
7704 (__arm_vshlq_x): Remove.
7705 (__arm_vshlq_x_n): Remove.
7706 (vqshlq): Remove.
7707 (vqshlq_r): Remove.
7708 (vqshlq_n): Remove.
7709 (vqshlq_m_r): Remove.
7710 (vqshlq_m_n): Remove.
7711 (vqshlq_m): Remove.
7712 (vqshlq_u8): Remove.
7713 (vqshlq_r_u8): Remove.
7714 (vqshlq_n_u8): Remove.
7715 (vqshlq_s8): Remove.
7716 (vqshlq_r_s8): Remove.
7717 (vqshlq_n_s8): Remove.
7718 (vqshlq_u16): Remove.
7719 (vqshlq_r_u16): Remove.
7720 (vqshlq_n_u16): Remove.
7721 (vqshlq_s16): Remove.
7722 (vqshlq_r_s16): Remove.
7723 (vqshlq_n_s16): Remove.
7724 (vqshlq_u32): Remove.
7725 (vqshlq_r_u32): Remove.
7726 (vqshlq_n_u32): Remove.
7727 (vqshlq_s32): Remove.
7728 (vqshlq_r_s32): Remove.
7729 (vqshlq_n_s32): Remove.
7730 (vqshlq_m_r_u8): Remove.
7731 (vqshlq_m_r_s8): Remove.
7732 (vqshlq_m_r_u16): Remove.
7733 (vqshlq_m_r_s16): Remove.
7734 (vqshlq_m_r_u32): Remove.
7735 (vqshlq_m_r_s32): Remove.
7736 (vqshlq_m_n_s8): Remove.
7737 (vqshlq_m_n_s32): Remove.
7738 (vqshlq_m_n_s16): Remove.
7739 (vqshlq_m_n_u8): Remove.
7740 (vqshlq_m_n_u32): Remove.
7741 (vqshlq_m_n_u16): Remove.
7742 (vqshlq_m_s8): Remove.
7743 (vqshlq_m_s32): Remove.
7744 (vqshlq_m_s16): Remove.
7745 (vqshlq_m_u8): Remove.
7746 (vqshlq_m_u32): Remove.
7747 (vqshlq_m_u16): Remove.
7748 (__arm_vqshlq_u8): Remove.
7749 (__arm_vqshlq_r_u8): Remove.
7750 (__arm_vqshlq_n_u8): Remove.
7751 (__arm_vqshlq_s8): Remove.
7752 (__arm_vqshlq_r_s8): Remove.
7753 (__arm_vqshlq_n_s8): Remove.
7754 (__arm_vqshlq_u16): Remove.
7755 (__arm_vqshlq_r_u16): Remove.
7756 (__arm_vqshlq_n_u16): Remove.
7757 (__arm_vqshlq_s16): Remove.
7758 (__arm_vqshlq_r_s16): Remove.
7759 (__arm_vqshlq_n_s16): Remove.
7760 (__arm_vqshlq_u32): Remove.
7761 (__arm_vqshlq_r_u32): Remove.
7762 (__arm_vqshlq_n_u32): Remove.
7763 (__arm_vqshlq_s32): Remove.
7764 (__arm_vqshlq_r_s32): Remove.
7765 (__arm_vqshlq_n_s32): Remove.
7766 (__arm_vqshlq_m_r_u8): Remove.
7767 (__arm_vqshlq_m_r_s8): Remove.
7768 (__arm_vqshlq_m_r_u16): Remove.
7769 (__arm_vqshlq_m_r_s16): Remove.
7770 (__arm_vqshlq_m_r_u32): Remove.
7771 (__arm_vqshlq_m_r_s32): Remove.
7772 (__arm_vqshlq_m_n_s8): Remove.
7773 (__arm_vqshlq_m_n_s32): Remove.
7774 (__arm_vqshlq_m_n_s16): Remove.
7775 (__arm_vqshlq_m_n_u8): Remove.
7776 (__arm_vqshlq_m_n_u32): Remove.
7777 (__arm_vqshlq_m_n_u16): Remove.
7778 (__arm_vqshlq_m_s8): Remove.
7779 (__arm_vqshlq_m_s32): Remove.
7780 (__arm_vqshlq_m_s16): Remove.
7781 (__arm_vqshlq_m_u8): Remove.
7782 (__arm_vqshlq_m_u32): Remove.
7783 (__arm_vqshlq_m_u16): Remove.
7784 (__arm_vqshlq): Remove.
7785 (__arm_vqshlq_r): Remove.
7786 (__arm_vqshlq_n): Remove.
7787 (__arm_vqshlq_m_r): Remove.
7788 (__arm_vqshlq_m_n): Remove.
7789 (__arm_vqshlq_m): Remove.
7790
7791 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7792
7793 * config/arm/arm-mve-builtins-functions.h (class
7794 unspec_mve_function_exact_insn_vshl): New.
7795
7796 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7797
7798 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
7799 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
7800
7801 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7802
7803 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
7804 (finish_opt_n_resolution): Handle MODE_r.
7805 * config/arm/arm-mve-builtins.def (r): New mode.
7806
7807 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7808
7809 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
7810 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
7811
7812 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7813
7814 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
7815 (vabdq): New.
7816 * config/arm/arm-mve-builtins-base.def (vabdq): New.
7817 * config/arm/arm-mve-builtins-base.h (vabdq): New.
7818 * config/arm/arm_mve.h (vabdq): Remove.
7819 (vabdq_m): Remove.
7820 (vabdq_x): Remove.
7821 (vabdq_u8): Remove.
7822 (vabdq_s8): Remove.
7823 (vabdq_u16): Remove.
7824 (vabdq_s16): Remove.
7825 (vabdq_u32): Remove.
7826 (vabdq_s32): Remove.
7827 (vabdq_f16): Remove.
7828 (vabdq_f32): Remove.
7829 (vabdq_m_s8): Remove.
7830 (vabdq_m_s32): Remove.
7831 (vabdq_m_s16): Remove.
7832 (vabdq_m_u8): Remove.
7833 (vabdq_m_u32): Remove.
7834 (vabdq_m_u16): Remove.
7835 (vabdq_m_f32): Remove.
7836 (vabdq_m_f16): Remove.
7837 (vabdq_x_s8): Remove.
7838 (vabdq_x_s16): Remove.
7839 (vabdq_x_s32): Remove.
7840 (vabdq_x_u8): Remove.
7841 (vabdq_x_u16): Remove.
7842 (vabdq_x_u32): Remove.
7843 (vabdq_x_f16): Remove.
7844 (vabdq_x_f32): Remove.
7845 (__arm_vabdq_u8): Remove.
7846 (__arm_vabdq_s8): Remove.
7847 (__arm_vabdq_u16): Remove.
7848 (__arm_vabdq_s16): Remove.
7849 (__arm_vabdq_u32): Remove.
7850 (__arm_vabdq_s32): Remove.
7851 (__arm_vabdq_m_s8): Remove.
7852 (__arm_vabdq_m_s32): Remove.
7853 (__arm_vabdq_m_s16): Remove.
7854 (__arm_vabdq_m_u8): Remove.
7855 (__arm_vabdq_m_u32): Remove.
7856 (__arm_vabdq_m_u16): Remove.
7857 (__arm_vabdq_x_s8): Remove.
7858 (__arm_vabdq_x_s16): Remove.
7859 (__arm_vabdq_x_s32): Remove.
7860 (__arm_vabdq_x_u8): Remove.
7861 (__arm_vabdq_x_u16): Remove.
7862 (__arm_vabdq_x_u32): Remove.
7863 (__arm_vabdq_f16): Remove.
7864 (__arm_vabdq_f32): Remove.
7865 (__arm_vabdq_m_f32): Remove.
7866 (__arm_vabdq_m_f16): Remove.
7867 (__arm_vabdq_x_f16): Remove.
7868 (__arm_vabdq_x_f32): Remove.
7869 (__arm_vabdq): Remove.
7870 (__arm_vabdq_m): Remove.
7871 (__arm_vabdq_x): Remove.
7872
7873 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7874
7875 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
7876 (MVE_FP_VABDQ_ONLY): New.
7877 (mve_insn): Add vabd.
7878 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
7879 (@mve_<mve_insn>q_f<mode>): ... this.
7880 (mve_vabdq_m_f<mode>): Remove.
7881
7882 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7883
7884 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
7885 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
7886 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
7887 * config/arm/arm_mve.h (vqrdmulhq): Remove.
7888 (vqrdmulhq_m): Remove.
7889 (vqrdmulhq_s8): Remove.
7890 (vqrdmulhq_n_s8): Remove.
7891 (vqrdmulhq_s16): Remove.
7892 (vqrdmulhq_n_s16): Remove.
7893 (vqrdmulhq_s32): Remove.
7894 (vqrdmulhq_n_s32): Remove.
7895 (vqrdmulhq_m_n_s8): Remove.
7896 (vqrdmulhq_m_n_s32): Remove.
7897 (vqrdmulhq_m_n_s16): Remove.
7898 (vqrdmulhq_m_s8): Remove.
7899 (vqrdmulhq_m_s32): Remove.
7900 (vqrdmulhq_m_s16): Remove.
7901 (__arm_vqrdmulhq_s8): Remove.
7902 (__arm_vqrdmulhq_n_s8): Remove.
7903 (__arm_vqrdmulhq_s16): Remove.
7904 (__arm_vqrdmulhq_n_s16): Remove.
7905 (__arm_vqrdmulhq_s32): Remove.
7906 (__arm_vqrdmulhq_n_s32): Remove.
7907 (__arm_vqrdmulhq_m_n_s8): Remove.
7908 (__arm_vqrdmulhq_m_n_s32): Remove.
7909 (__arm_vqrdmulhq_m_n_s16): Remove.
7910 (__arm_vqrdmulhq_m_s8): Remove.
7911 (__arm_vqrdmulhq_m_s32): Remove.
7912 (__arm_vqrdmulhq_m_s16): Remove.
7913 (__arm_vqrdmulhq): Remove.
7914 (__arm_vqrdmulhq_m): Remove.
7915
7916 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7917
7918 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
7919 (MVE_SHIFT_N, MVE_SHIFT_R): New.
7920 (mve_insn): Add vqshl, vshl.
7921 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
7922 (mve_vshlq_n_<supf><mode>): Merge into ...
7923 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7924 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
7925 ...
7926 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
7927 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
7928 into ...
7929 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
7930 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
7931 into ...
7932 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7933 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
7934 into ...
7935 (@mve_<mve_insn>q_<supf><mode>): ... this.
7936
7937 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7938
7939 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
7940 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
7941 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
7942 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
7943 vqrshlq, vrshlq.
7944 * config/arm/arm_mve.h (vrshlq): Remove.
7945 (vrshlq_m_n): Remove.
7946 (vrshlq_m): Remove.
7947 (vrshlq_x): Remove.
7948 (vrshlq_u8): Remove.
7949 (vrshlq_n_u8): Remove.
7950 (vrshlq_s8): Remove.
7951 (vrshlq_n_s8): Remove.
7952 (vrshlq_u16): Remove.
7953 (vrshlq_n_u16): Remove.
7954 (vrshlq_s16): Remove.
7955 (vrshlq_n_s16): Remove.
7956 (vrshlq_u32): Remove.
7957 (vrshlq_n_u32): Remove.
7958 (vrshlq_s32): Remove.
7959 (vrshlq_n_s32): Remove.
7960 (vrshlq_m_n_u8): Remove.
7961 (vrshlq_m_n_s8): Remove.
7962 (vrshlq_m_n_u16): Remove.
7963 (vrshlq_m_n_s16): Remove.
7964 (vrshlq_m_n_u32): Remove.
7965 (vrshlq_m_n_s32): Remove.
7966 (vrshlq_m_s8): Remove.
7967 (vrshlq_m_s32): Remove.
7968 (vrshlq_m_s16): Remove.
7969 (vrshlq_m_u8): Remove.
7970 (vrshlq_m_u32): Remove.
7971 (vrshlq_m_u16): Remove.
7972 (vrshlq_x_s8): Remove.
7973 (vrshlq_x_s16): Remove.
7974 (vrshlq_x_s32): Remove.
7975 (vrshlq_x_u8): Remove.
7976 (vrshlq_x_u16): Remove.
7977 (vrshlq_x_u32): Remove.
7978 (__arm_vrshlq_u8): Remove.
7979 (__arm_vrshlq_n_u8): Remove.
7980 (__arm_vrshlq_s8): Remove.
7981 (__arm_vrshlq_n_s8): Remove.
7982 (__arm_vrshlq_u16): Remove.
7983 (__arm_vrshlq_n_u16): Remove.
7984 (__arm_vrshlq_s16): Remove.
7985 (__arm_vrshlq_n_s16): Remove.
7986 (__arm_vrshlq_u32): Remove.
7987 (__arm_vrshlq_n_u32): Remove.
7988 (__arm_vrshlq_s32): Remove.
7989 (__arm_vrshlq_n_s32): Remove.
7990 (__arm_vrshlq_m_n_u8): Remove.
7991 (__arm_vrshlq_m_n_s8): Remove.
7992 (__arm_vrshlq_m_n_u16): Remove.
7993 (__arm_vrshlq_m_n_s16): Remove.
7994 (__arm_vrshlq_m_n_u32): Remove.
7995 (__arm_vrshlq_m_n_s32): Remove.
7996 (__arm_vrshlq_m_s8): Remove.
7997 (__arm_vrshlq_m_s32): Remove.
7998 (__arm_vrshlq_m_s16): Remove.
7999 (__arm_vrshlq_m_u8): Remove.
8000 (__arm_vrshlq_m_u32): Remove.
8001 (__arm_vrshlq_m_u16): Remove.
8002 (__arm_vrshlq_x_s8): Remove.
8003 (__arm_vrshlq_x_s16): Remove.
8004 (__arm_vrshlq_x_s32): Remove.
8005 (__arm_vrshlq_x_u8): Remove.
8006 (__arm_vrshlq_x_u16): Remove.
8007 (__arm_vrshlq_x_u32): Remove.
8008 (__arm_vrshlq): Remove.
8009 (__arm_vrshlq_m_n): Remove.
8010 (__arm_vrshlq_m): Remove.
8011 (__arm_vrshlq_x): Remove.
8012 (vqrshlq): Remove.
8013 (vqrshlq_m_n): Remove.
8014 (vqrshlq_m): Remove.
8015 (vqrshlq_u8): Remove.
8016 (vqrshlq_n_u8): Remove.
8017 (vqrshlq_s8): Remove.
8018 (vqrshlq_n_s8): Remove.
8019 (vqrshlq_u16): Remove.
8020 (vqrshlq_n_u16): Remove.
8021 (vqrshlq_s16): Remove.
8022 (vqrshlq_n_s16): Remove.
8023 (vqrshlq_u32): Remove.
8024 (vqrshlq_n_u32): Remove.
8025 (vqrshlq_s32): Remove.
8026 (vqrshlq_n_s32): Remove.
8027 (vqrshlq_m_n_u8): Remove.
8028 (vqrshlq_m_n_s8): Remove.
8029 (vqrshlq_m_n_u16): Remove.
8030 (vqrshlq_m_n_s16): Remove.
8031 (vqrshlq_m_n_u32): Remove.
8032 (vqrshlq_m_n_s32): Remove.
8033 (vqrshlq_m_s8): Remove.
8034 (vqrshlq_m_s32): Remove.
8035 (vqrshlq_m_s16): Remove.
8036 (vqrshlq_m_u8): Remove.
8037 (vqrshlq_m_u32): Remove.
8038 (vqrshlq_m_u16): Remove.
8039 (__arm_vqrshlq_u8): Remove.
8040 (__arm_vqrshlq_n_u8): Remove.
8041 (__arm_vqrshlq_s8): Remove.
8042 (__arm_vqrshlq_n_s8): Remove.
8043 (__arm_vqrshlq_u16): Remove.
8044 (__arm_vqrshlq_n_u16): Remove.
8045 (__arm_vqrshlq_s16): Remove.
8046 (__arm_vqrshlq_n_s16): Remove.
8047 (__arm_vqrshlq_u32): Remove.
8048 (__arm_vqrshlq_n_u32): Remove.
8049 (__arm_vqrshlq_s32): Remove.
8050 (__arm_vqrshlq_n_s32): Remove.
8051 (__arm_vqrshlq_m_n_u8): Remove.
8052 (__arm_vqrshlq_m_n_s8): Remove.
8053 (__arm_vqrshlq_m_n_u16): Remove.
8054 (__arm_vqrshlq_m_n_s16): Remove.
8055 (__arm_vqrshlq_m_n_u32): Remove.
8056 (__arm_vqrshlq_m_n_s32): Remove.
8057 (__arm_vqrshlq_m_s8): Remove.
8058 (__arm_vqrshlq_m_s32): Remove.
8059 (__arm_vqrshlq_m_s16): Remove.
8060 (__arm_vqrshlq_m_u8): Remove.
8061 (__arm_vqrshlq_m_u32): Remove.
8062 (__arm_vqrshlq_m_u16): Remove.
8063 (__arm_vqrshlq): Remove.
8064 (__arm_vqrshlq_m_n): Remove.
8065 (__arm_vqrshlq_m): Remove.
8066
8067 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8068
8069 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
8070 (mve_insn): Add vqrshl, vrshl.
8071 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
8072 (mve_vrshlq_n_<supf><mode>): Merge into ...
8073 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8074 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
8075 into ...
8076 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8077
8078 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8079
8080 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
8081 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
8082
8083 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8084
8085 PR target/109615
8086 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
8087 denegrate PHI optmization.
8088
8089 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
8090
8091 * config/i386/predicates.md (register_no_SP_operand):
8092 Rename from index_register_operand.
8093 (call_register_operand): Update for rename.
8094 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
8095
8096 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8097
8098 PR bootstrap/84402
8099 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
8100 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
8101 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
8102 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
8103 (s-match): Split into s-generic-match and s-gimple-match.
8104 * configure.ac (with-matchpd-partitions,
8105 DEFAULT_MATCHPD_PARTITIONS): New.
8106 * configure: Regenerate.
8107
8108 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8109
8110 PR bootstrap/84402
8111 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
8112 (decision_tree::gen): Accept list of files instead of single and update
8113 to write function definition to header and main file.
8114 (write_predicate): Likewise.
8115 (write_header): Emit pragmas and new includes.
8116 (main): Create file buffers and cleanup.
8117 (showUsage, write_header_includes): New.
8118
8119 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8120
8121 PR bootstrap/84402
8122 * Makefile.in (OBJS): Add gimple-match-exports.o.
8123 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
8124 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
8125 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
8126 gimple_resimplify5, constant_for_folding, convert_conditional_op,
8127 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
8128 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
8129 do_valueize, try_conditional_simplification, gimple_extract,
8130 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
8131 commutative_ternary_op_p, first_commutative_argument,
8132 associative_binary_op_p, directly_supported_p,
8133 get_conditional_internal_fn): Moved to gimple-match-exports.cc
8134 * gimple-match-exports.cc: New file.
8135
8136 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8137
8138 PR bootstrap/84402
8139 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
8140 debug_dump var.
8141 (dt_simplify::gen_1): Use it.
8142
8143 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8144
8145 PR bootstrap/84402
8146 * genmatch.cc (output_line_directive): Only emit commented directive
8147 when -vv.
8148
8149 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8150
8151 PR bootstrap/84402
8152 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
8153
8154 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
8155
8156 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
8157 unused in_mode/in_n variables.
8158
8159 2023-05-05 Richard Biener <rguenther@suse.de>
8160
8161 PR tree-optimization/109735
8162 * tree-vect-stmts.cc (vectorizable_operation): Perform
8163 conversion for POINTER_DIFF_EXPR unconditionally.
8164
8165 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
8166
8167 * config/i386/mmx.md (mulv2si3): New expander.
8168 (*mulv2si3): New insn pattern.
8169
8170 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
8171 Thomas Schwinge <thomas@codesourcery.com>
8172
8173 PR libgomp/108098
8174 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
8175 alongside reverse-offload function table to prevent NULL values
8176 of the function addresses.
8177
8178 2023-05-05 Jakub Jelinek <jakub@redhat.com>
8179
8180 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
8181 mpft_t -> mpfr_t.
8182 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
8183
8184 2023-05-05 Andrew Pinski <apinski@marvell.com>
8185
8186 PR tree-optimization/109732
8187 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
8188 of the argtrue/argfalse.
8189
8190 2023-05-05 Andrew Pinski <apinski@marvell.com>
8191
8192 PR tree-optimization/109722
8193 * match.pd: Extend the `ABS<a> == 0` pattern
8194 to cover `ABSU<a> == 0` too.
8195
8196 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
8197
8198 PR target/109733
8199 * config/i386/predicates.md (index_reg_operand): New predicate.
8200 * config/i386/i386.md (ashift to lea spliter): Use
8201 general_reg_operand and index_reg_operand predicates.
8202
8203 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8204
8205 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
8206 Rename and reimplement with RTL codes to...
8207 (aarch64_<optab>hn2<mode>_insn_le): .. This.
8208 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
8209 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
8210 codes to...
8211 (aarch64_<optab>hn2<mode>_insn_be): ... This.
8212 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
8213 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
8214 (aarch64_<optab>hn2<mode>): ... This.
8215 (aarch64_r<optab>hn2<mode>): New expander.
8216 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
8217 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
8218 (ADDSUBHN): Delete.
8219 (sur): Remove handling of the above.
8220 (addsub): Likewise.
8221
8222 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8223
8224 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
8225 Delete.
8226 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
8227 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
8228 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
8229 (aarch64_<sur><addsub>hn<mode>): Delete.
8230 (aarch64_<optab>hn<mode>): New define_expand.
8231 (aarch64_r<optab>hn<mode>): Likewise.
8232 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
8233 New predicate.
8234
8235 2023-05-04 Andrew Pinski <apinski@marvell.com>
8236
8237 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
8238 diamond form bb with forwarder only empty blocks better.
8239
8240 2023-05-04 Andrew Pinski <apinski@marvell.com>
8241
8242 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
8243 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
8244 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
8245 of an inline version of it.
8246 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
8247 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
8248
8249 2023-05-04 Andrew Pinski <apinski@marvell.com>
8250
8251 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
8252 the default argument value for dce_ssa_names to nullptr.
8253 Check to make sure dce_ssa_names is a non-nullptr before
8254 calling simple_dce_from_worklist.
8255
8256 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
8257
8258 * config/i386/predicates.md (index_register_operand): Reject
8259 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
8260 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
8261 (call_register_no_elim_operand): Rewrite as ...
8262 (call_register_operand): ... this.
8263 (call_insn_operand): Use call_register_operand predicate.
8264
8265 2023-05-04 Richard Biener <rguenther@suse.de>
8266
8267 PR tree-optimization/109721
8268 * tree-vect-stmts.cc (vectorizable_operation): Make sure
8269 to test word_mode for all !target_support_p operations.
8270
8271 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8272
8273 PR target/99195
8274 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
8275 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
8276 (aarch64_mla<mode>): Rename to...
8277 (aarch64_mla<mode><vczle><vczbe>): ... This.
8278 (*aarch64_mla_elt<mode>): Rename to...
8279 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
8280 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
8281 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8282 (aarch64_mla_n<mode>): Rename to...
8283 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
8284 (aarch64_mls<mode>): Rename to...
8285 (aarch64_mls<mode><vczle><vczbe>): ... This.
8286 (*aarch64_mls_elt<mode>): Rename to...
8287 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
8288 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
8289 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8290 (aarch64_mls_n<mode>): Rename to...
8291 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
8292 (fma<mode>4): Rename to...
8293 (fma<mode>4<vczle><vczbe>): ... This.
8294 (*aarch64_fma4_elt<mode>): Rename to...
8295 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
8296 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
8297 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8298 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
8299 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
8300 (fnma<mode>4): Rename to...
8301 (fnma<mode>4<vczle><vczbe>): ... This.
8302 (*aarch64_fnma4_elt<mode>): Rename to...
8303 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
8304 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
8305 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8306 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
8307 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
8308 (aarch64_simd_bsl<mode>_internal): Rename to...
8309 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
8310 (*aarch64_simd_bsl<mode>_alt): Rename to...
8311 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
8312
8313 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8314
8315 PR target/99195
8316 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
8317 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
8318 (fabd<mode>3): Rename to...
8319 (fabd<mode>3<vczle><vczbe>): ... This.
8320 (aarch64_<optab>p<mode>): Rename to...
8321 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
8322 (aarch64_faddp<mode>): Rename to...
8323 (aarch64_faddp<mode><vczle><vczbe>): ... This.
8324
8325 2023-05-04 Martin Liska <mliska@suse.cz>
8326
8327 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
8328 (print_version): Use it.
8329 (generate_results): Likewise.
8330
8331 2023-05-04 Richard Biener <rguenther@suse.de>
8332
8333 * tree-cfg.h (last_stmt): Rename to ...
8334 (last_nondebug_stmt): ... this.
8335 * tree-cfg.cc (last_stmt): Rename to ...
8336 (last_nondebug_stmt): ... this.
8337 (assign_discriminators): Adjust.
8338 (group_case_labels_stmt): Likewise.
8339 (gimple_can_duplicate_bb_p): Likewise.
8340 (execute_fixup_cfg): Likewise.
8341 * auto-profile.cc (afdo_propagate_circuit): Likewise.
8342 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
8343 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
8344 (determine_parallel_type): Likewise.
8345 (adjust_context_and_scope): Likewise.
8346 (expand_task_call): Likewise.
8347 (remove_exit_barrier): Likewise.
8348 (expand_omp_taskreg): Likewise.
8349 (expand_omp_for_init_counts): Likewise.
8350 (expand_omp_for_init_vars): Likewise.
8351 (expand_omp_for_static_chunk): Likewise.
8352 (expand_omp_simd): Likewise.
8353 (expand_oacc_for): Likewise.
8354 (expand_omp_for): Likewise.
8355 (expand_omp_sections): Likewise.
8356 (expand_omp_atomic_fetch_op): Likewise.
8357 (expand_omp_atomic_cas): Likewise.
8358 (expand_omp_atomic): Likewise.
8359 (expand_omp_target): Likewise.
8360 (expand_omp): Likewise.
8361 (omp_make_gimple_edges): Likewise.
8362 * trans-mem.cc (tm_region_init): Likewise.
8363 * tree-inline.cc (redirect_all_calls): Likewise.
8364 * tree-parloops.cc (gen_parallel_loop): Likewise.
8365 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
8366 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
8367 Likewise.
8368 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
8369 (may_eliminate_iv): Likewise.
8370 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
8371 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
8372 Likewise.
8373 (estimate_numbers_of_iterations): Likewise.
8374 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
8375 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
8376 (set_predicates_for_bb): Likewise.
8377 (init_loop_unswitch_info): Likewise.
8378 (hoist_guard): Likewise.
8379 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
8380 (minmax_replacement): Likewise.
8381 * tree-ssa-reassoc.cc (update_range_test): Likewise.
8382 (optimize_range_tests_to_bit_test): Likewise.
8383 (optimize_range_tests_var_bound): Likewise.
8384 (optimize_range_tests): Likewise.
8385 (no_side_effect_bb): Likewise.
8386 (suitable_cond_bb): Likewise.
8387 (maybe_optimize_range_tests): Likewise.
8388 (reassociate_bb): Likewise.
8389 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
8390
8391 2023-05-04 Jakub Jelinek <jakub@redhat.com>
8392
8393 PR debug/109676
8394 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
8395 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
8396 for it only if it still has TImode. Don't decide whether to call
8397 fix_debug_reg_uses based on whether SRC is ever set or not.
8398
8399 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8400
8401 * config/cris/cris.cc (cris_split_constant): New function.
8402 * config/cris/cris.md (splitop): New iterator.
8403 (opsplit1): New define_peephole2.
8404 * config/cris/cris-protos.h (cris_split_constant): Declare.
8405 (cris_splittable_constant_p): New macro.
8406
8407 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8408
8409 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
8410 to ALL_REGS.
8411
8412 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8413
8414 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
8415 lra_in_progress, not reload_in_progress.
8416 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
8417 * config/cris/constraints.md ("Q"): Ditto.
8418
8419 2023-05-03 Andrew Pinski <apinski@marvell.com>
8420
8421 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
8422 stats on removed number of statements and phis.
8423
8424 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
8425
8426 PR tree-optimization/109711
8427 * value-range.cc (irange::verify_range): Allow types of
8428 error_mark_node.
8429
8430 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
8431
8432 PR sanitizer/90746
8433 * calls.cc (can_implement_as_sibling_call_p): Reject calls
8434 to __sanitizer_cov_trace_pc.
8435
8436 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
8437
8438 PR target/109661
8439 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
8440 a new ABI break parameter for GCC 14. Set it to the alignment
8441 of enums that have an underlying type. Take the true alignment
8442 of such enums from the TYPE_ALIGN of the underlying type's
8443 TYPE_MAIN_VARIANT.
8444 (aarch64_function_arg_boundary): Update accordingly.
8445 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
8446 Warn about ABI differences.
8447
8448 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
8449
8450 PR target/109661
8451 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
8452 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
8453 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
8454 (aarch64_gimplify_va_arg_expr): Likewise.
8455
8456 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8457
8458 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
8459 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
8460 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
8461 (vrmulhq): New.
8462 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
8463 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
8464 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
8465 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
8466 * config/arm/arm_mve.h (vhsubq): Remove.
8467 (vhaddq): Remove.
8468 (vhaddq_m): Remove.
8469 (vhsubq_m): Remove.
8470 (vhaddq_x): Remove.
8471 (vhsubq_x): Remove.
8472 (vhsubq_u8): Remove.
8473 (vhsubq_n_u8): Remove.
8474 (vhaddq_u8): Remove.
8475 (vhaddq_n_u8): Remove.
8476 (vhsubq_s8): Remove.
8477 (vhsubq_n_s8): Remove.
8478 (vhaddq_s8): Remove.
8479 (vhaddq_n_s8): Remove.
8480 (vhsubq_u16): Remove.
8481 (vhsubq_n_u16): Remove.
8482 (vhaddq_u16): Remove.
8483 (vhaddq_n_u16): Remove.
8484 (vhsubq_s16): Remove.
8485 (vhsubq_n_s16): Remove.
8486 (vhaddq_s16): Remove.
8487 (vhaddq_n_s16): Remove.
8488 (vhsubq_u32): Remove.
8489 (vhsubq_n_u32): Remove.
8490 (vhaddq_u32): Remove.
8491 (vhaddq_n_u32): Remove.
8492 (vhsubq_s32): Remove.
8493 (vhsubq_n_s32): Remove.
8494 (vhaddq_s32): Remove.
8495 (vhaddq_n_s32): Remove.
8496 (vhaddq_m_n_s8): Remove.
8497 (vhaddq_m_n_s32): Remove.
8498 (vhaddq_m_n_s16): Remove.
8499 (vhaddq_m_n_u8): Remove.
8500 (vhaddq_m_n_u32): Remove.
8501 (vhaddq_m_n_u16): Remove.
8502 (vhaddq_m_s8): Remove.
8503 (vhaddq_m_s32): Remove.
8504 (vhaddq_m_s16): Remove.
8505 (vhaddq_m_u8): Remove.
8506 (vhaddq_m_u32): Remove.
8507 (vhaddq_m_u16): Remove.
8508 (vhsubq_m_n_s8): Remove.
8509 (vhsubq_m_n_s32): Remove.
8510 (vhsubq_m_n_s16): Remove.
8511 (vhsubq_m_n_u8): Remove.
8512 (vhsubq_m_n_u32): Remove.
8513 (vhsubq_m_n_u16): Remove.
8514 (vhsubq_m_s8): Remove.
8515 (vhsubq_m_s32): Remove.
8516 (vhsubq_m_s16): Remove.
8517 (vhsubq_m_u8): Remove.
8518 (vhsubq_m_u32): Remove.
8519 (vhsubq_m_u16): Remove.
8520 (vhaddq_x_n_s8): Remove.
8521 (vhaddq_x_n_s16): Remove.
8522 (vhaddq_x_n_s32): Remove.
8523 (vhaddq_x_n_u8): Remove.
8524 (vhaddq_x_n_u16): Remove.
8525 (vhaddq_x_n_u32): Remove.
8526 (vhaddq_x_s8): Remove.
8527 (vhaddq_x_s16): Remove.
8528 (vhaddq_x_s32): Remove.
8529 (vhaddq_x_u8): Remove.
8530 (vhaddq_x_u16): Remove.
8531 (vhaddq_x_u32): Remove.
8532 (vhsubq_x_n_s8): Remove.
8533 (vhsubq_x_n_s16): Remove.
8534 (vhsubq_x_n_s32): Remove.
8535 (vhsubq_x_n_u8): Remove.
8536 (vhsubq_x_n_u16): Remove.
8537 (vhsubq_x_n_u32): Remove.
8538 (vhsubq_x_s8): Remove.
8539 (vhsubq_x_s16): Remove.
8540 (vhsubq_x_s32): Remove.
8541 (vhsubq_x_u8): Remove.
8542 (vhsubq_x_u16): Remove.
8543 (vhsubq_x_u32): Remove.
8544 (__arm_vhsubq_u8): Remove.
8545 (__arm_vhsubq_n_u8): Remove.
8546 (__arm_vhaddq_u8): Remove.
8547 (__arm_vhaddq_n_u8): Remove.
8548 (__arm_vhsubq_s8): Remove.
8549 (__arm_vhsubq_n_s8): Remove.
8550 (__arm_vhaddq_s8): Remove.
8551 (__arm_vhaddq_n_s8): Remove.
8552 (__arm_vhsubq_u16): Remove.
8553 (__arm_vhsubq_n_u16): Remove.
8554 (__arm_vhaddq_u16): Remove.
8555 (__arm_vhaddq_n_u16): Remove.
8556 (__arm_vhsubq_s16): Remove.
8557 (__arm_vhsubq_n_s16): Remove.
8558 (__arm_vhaddq_s16): Remove.
8559 (__arm_vhaddq_n_s16): Remove.
8560 (__arm_vhsubq_u32): Remove.
8561 (__arm_vhsubq_n_u32): Remove.
8562 (__arm_vhaddq_u32): Remove.
8563 (__arm_vhaddq_n_u32): Remove.
8564 (__arm_vhsubq_s32): Remove.
8565 (__arm_vhsubq_n_s32): Remove.
8566 (__arm_vhaddq_s32): Remove.
8567 (__arm_vhaddq_n_s32): Remove.
8568 (__arm_vhaddq_m_n_s8): Remove.
8569 (__arm_vhaddq_m_n_s32): Remove.
8570 (__arm_vhaddq_m_n_s16): Remove.
8571 (__arm_vhaddq_m_n_u8): Remove.
8572 (__arm_vhaddq_m_n_u32): Remove.
8573 (__arm_vhaddq_m_n_u16): Remove.
8574 (__arm_vhaddq_m_s8): Remove.
8575 (__arm_vhaddq_m_s32): Remove.
8576 (__arm_vhaddq_m_s16): Remove.
8577 (__arm_vhaddq_m_u8): Remove.
8578 (__arm_vhaddq_m_u32): Remove.
8579 (__arm_vhaddq_m_u16): Remove.
8580 (__arm_vhsubq_m_n_s8): Remove.
8581 (__arm_vhsubq_m_n_s32): Remove.
8582 (__arm_vhsubq_m_n_s16): Remove.
8583 (__arm_vhsubq_m_n_u8): Remove.
8584 (__arm_vhsubq_m_n_u32): Remove.
8585 (__arm_vhsubq_m_n_u16): Remove.
8586 (__arm_vhsubq_m_s8): Remove.
8587 (__arm_vhsubq_m_s32): Remove.
8588 (__arm_vhsubq_m_s16): Remove.
8589 (__arm_vhsubq_m_u8): Remove.
8590 (__arm_vhsubq_m_u32): Remove.
8591 (__arm_vhsubq_m_u16): Remove.
8592 (__arm_vhaddq_x_n_s8): Remove.
8593 (__arm_vhaddq_x_n_s16): Remove.
8594 (__arm_vhaddq_x_n_s32): Remove.
8595 (__arm_vhaddq_x_n_u8): Remove.
8596 (__arm_vhaddq_x_n_u16): Remove.
8597 (__arm_vhaddq_x_n_u32): Remove.
8598 (__arm_vhaddq_x_s8): Remove.
8599 (__arm_vhaddq_x_s16): Remove.
8600 (__arm_vhaddq_x_s32): Remove.
8601 (__arm_vhaddq_x_u8): Remove.
8602 (__arm_vhaddq_x_u16): Remove.
8603 (__arm_vhaddq_x_u32): Remove.
8604 (__arm_vhsubq_x_n_s8): Remove.
8605 (__arm_vhsubq_x_n_s16): Remove.
8606 (__arm_vhsubq_x_n_s32): Remove.
8607 (__arm_vhsubq_x_n_u8): Remove.
8608 (__arm_vhsubq_x_n_u16): Remove.
8609 (__arm_vhsubq_x_n_u32): Remove.
8610 (__arm_vhsubq_x_s8): Remove.
8611 (__arm_vhsubq_x_s16): Remove.
8612 (__arm_vhsubq_x_s32): Remove.
8613 (__arm_vhsubq_x_u8): Remove.
8614 (__arm_vhsubq_x_u16): Remove.
8615 (__arm_vhsubq_x_u32): Remove.
8616 (__arm_vhsubq): Remove.
8617 (__arm_vhaddq): Remove.
8618 (__arm_vhaddq_m): Remove.
8619 (__arm_vhsubq_m): Remove.
8620 (__arm_vhaddq_x): Remove.
8621 (__arm_vhsubq_x): Remove.
8622 (vmulhq): Remove.
8623 (vmulhq_m): Remove.
8624 (vmulhq_x): Remove.
8625 (vmulhq_u8): Remove.
8626 (vmulhq_s8): Remove.
8627 (vmulhq_u16): Remove.
8628 (vmulhq_s16): Remove.
8629 (vmulhq_u32): Remove.
8630 (vmulhq_s32): Remove.
8631 (vmulhq_m_s8): Remove.
8632 (vmulhq_m_s32): Remove.
8633 (vmulhq_m_s16): Remove.
8634 (vmulhq_m_u8): Remove.
8635 (vmulhq_m_u32): Remove.
8636 (vmulhq_m_u16): Remove.
8637 (vmulhq_x_s8): Remove.
8638 (vmulhq_x_s16): Remove.
8639 (vmulhq_x_s32): Remove.
8640 (vmulhq_x_u8): Remove.
8641 (vmulhq_x_u16): Remove.
8642 (vmulhq_x_u32): Remove.
8643 (__arm_vmulhq_u8): Remove.
8644 (__arm_vmulhq_s8): Remove.
8645 (__arm_vmulhq_u16): Remove.
8646 (__arm_vmulhq_s16): Remove.
8647 (__arm_vmulhq_u32): Remove.
8648 (__arm_vmulhq_s32): Remove.
8649 (__arm_vmulhq_m_s8): Remove.
8650 (__arm_vmulhq_m_s32): Remove.
8651 (__arm_vmulhq_m_s16): Remove.
8652 (__arm_vmulhq_m_u8): Remove.
8653 (__arm_vmulhq_m_u32): Remove.
8654 (__arm_vmulhq_m_u16): Remove.
8655 (__arm_vmulhq_x_s8): Remove.
8656 (__arm_vmulhq_x_s16): Remove.
8657 (__arm_vmulhq_x_s32): Remove.
8658 (__arm_vmulhq_x_u8): Remove.
8659 (__arm_vmulhq_x_u16): Remove.
8660 (__arm_vmulhq_x_u32): Remove.
8661 (__arm_vmulhq): Remove.
8662 (__arm_vmulhq_m): Remove.
8663 (__arm_vmulhq_x): Remove.
8664 (vqsubq): Remove.
8665 (vqaddq): Remove.
8666 (vqaddq_m): Remove.
8667 (vqsubq_m): Remove.
8668 (vqsubq_u8): Remove.
8669 (vqsubq_n_u8): Remove.
8670 (vqaddq_u8): Remove.
8671 (vqaddq_n_u8): Remove.
8672 (vqsubq_s8): Remove.
8673 (vqsubq_n_s8): Remove.
8674 (vqaddq_s8): Remove.
8675 (vqaddq_n_s8): Remove.
8676 (vqsubq_u16): Remove.
8677 (vqsubq_n_u16): Remove.
8678 (vqaddq_u16): Remove.
8679 (vqaddq_n_u16): Remove.
8680 (vqsubq_s16): Remove.
8681 (vqsubq_n_s16): Remove.
8682 (vqaddq_s16): Remove.
8683 (vqaddq_n_s16): Remove.
8684 (vqsubq_u32): Remove.
8685 (vqsubq_n_u32): Remove.
8686 (vqaddq_u32): Remove.
8687 (vqaddq_n_u32): Remove.
8688 (vqsubq_s32): Remove.
8689 (vqsubq_n_s32): Remove.
8690 (vqaddq_s32): Remove.
8691 (vqaddq_n_s32): Remove.
8692 (vqaddq_m_n_s8): Remove.
8693 (vqaddq_m_n_s32): Remove.
8694 (vqaddq_m_n_s16): Remove.
8695 (vqaddq_m_n_u8): Remove.
8696 (vqaddq_m_n_u32): Remove.
8697 (vqaddq_m_n_u16): Remove.
8698 (vqaddq_m_s8): Remove.
8699 (vqaddq_m_s32): Remove.
8700 (vqaddq_m_s16): Remove.
8701 (vqaddq_m_u8): Remove.
8702 (vqaddq_m_u32): Remove.
8703 (vqaddq_m_u16): Remove.
8704 (vqsubq_m_n_s8): Remove.
8705 (vqsubq_m_n_s32): Remove.
8706 (vqsubq_m_n_s16): Remove.
8707 (vqsubq_m_n_u8): Remove.
8708 (vqsubq_m_n_u32): Remove.
8709 (vqsubq_m_n_u16): Remove.
8710 (vqsubq_m_s8): Remove.
8711 (vqsubq_m_s32): Remove.
8712 (vqsubq_m_s16): Remove.
8713 (vqsubq_m_u8): Remove.
8714 (vqsubq_m_u32): Remove.
8715 (vqsubq_m_u16): Remove.
8716 (__arm_vqsubq_u8): Remove.
8717 (__arm_vqsubq_n_u8): Remove.
8718 (__arm_vqaddq_u8): Remove.
8719 (__arm_vqaddq_n_u8): Remove.
8720 (__arm_vqsubq_s8): Remove.
8721 (__arm_vqsubq_n_s8): Remove.
8722 (__arm_vqaddq_s8): Remove.
8723 (__arm_vqaddq_n_s8): Remove.
8724 (__arm_vqsubq_u16): Remove.
8725 (__arm_vqsubq_n_u16): Remove.
8726 (__arm_vqaddq_u16): Remove.
8727 (__arm_vqaddq_n_u16): Remove.
8728 (__arm_vqsubq_s16): Remove.
8729 (__arm_vqsubq_n_s16): Remove.
8730 (__arm_vqaddq_s16): Remove.
8731 (__arm_vqaddq_n_s16): Remove.
8732 (__arm_vqsubq_u32): Remove.
8733 (__arm_vqsubq_n_u32): Remove.
8734 (__arm_vqaddq_u32): Remove.
8735 (__arm_vqaddq_n_u32): Remove.
8736 (__arm_vqsubq_s32): Remove.
8737 (__arm_vqsubq_n_s32): Remove.
8738 (__arm_vqaddq_s32): Remove.
8739 (__arm_vqaddq_n_s32): Remove.
8740 (__arm_vqaddq_m_n_s8): Remove.
8741 (__arm_vqaddq_m_n_s32): Remove.
8742 (__arm_vqaddq_m_n_s16): Remove.
8743 (__arm_vqaddq_m_n_u8): Remove.
8744 (__arm_vqaddq_m_n_u32): Remove.
8745 (__arm_vqaddq_m_n_u16): Remove.
8746 (__arm_vqaddq_m_s8): Remove.
8747 (__arm_vqaddq_m_s32): Remove.
8748 (__arm_vqaddq_m_s16): Remove.
8749 (__arm_vqaddq_m_u8): Remove.
8750 (__arm_vqaddq_m_u32): Remove.
8751 (__arm_vqaddq_m_u16): Remove.
8752 (__arm_vqsubq_m_n_s8): Remove.
8753 (__arm_vqsubq_m_n_s32): Remove.
8754 (__arm_vqsubq_m_n_s16): Remove.
8755 (__arm_vqsubq_m_n_u8): Remove.
8756 (__arm_vqsubq_m_n_u32): Remove.
8757 (__arm_vqsubq_m_n_u16): Remove.
8758 (__arm_vqsubq_m_s8): Remove.
8759 (__arm_vqsubq_m_s32): Remove.
8760 (__arm_vqsubq_m_s16): Remove.
8761 (__arm_vqsubq_m_u8): Remove.
8762 (__arm_vqsubq_m_u32): Remove.
8763 (__arm_vqsubq_m_u16): Remove.
8764 (__arm_vqsubq): Remove.
8765 (__arm_vqaddq): Remove.
8766 (__arm_vqaddq_m): Remove.
8767 (__arm_vqsubq_m): Remove.
8768 (vqdmulhq): Remove.
8769 (vqdmulhq_m): Remove.
8770 (vqdmulhq_s8): Remove.
8771 (vqdmulhq_n_s8): Remove.
8772 (vqdmulhq_s16): Remove.
8773 (vqdmulhq_n_s16): Remove.
8774 (vqdmulhq_s32): Remove.
8775 (vqdmulhq_n_s32): Remove.
8776 (vqdmulhq_m_n_s8): Remove.
8777 (vqdmulhq_m_n_s32): Remove.
8778 (vqdmulhq_m_n_s16): Remove.
8779 (vqdmulhq_m_s8): Remove.
8780 (vqdmulhq_m_s32): Remove.
8781 (vqdmulhq_m_s16): Remove.
8782 (__arm_vqdmulhq_s8): Remove.
8783 (__arm_vqdmulhq_n_s8): Remove.
8784 (__arm_vqdmulhq_s16): Remove.
8785 (__arm_vqdmulhq_n_s16): Remove.
8786 (__arm_vqdmulhq_s32): Remove.
8787 (__arm_vqdmulhq_n_s32): Remove.
8788 (__arm_vqdmulhq_m_n_s8): Remove.
8789 (__arm_vqdmulhq_m_n_s32): Remove.
8790 (__arm_vqdmulhq_m_n_s16): Remove.
8791 (__arm_vqdmulhq_m_s8): Remove.
8792 (__arm_vqdmulhq_m_s32): Remove.
8793 (__arm_vqdmulhq_m_s16): Remove.
8794 (__arm_vqdmulhq): Remove.
8795 (__arm_vqdmulhq_m): Remove.
8796 (vrhaddq): Remove.
8797 (vrhaddq_m): Remove.
8798 (vrhaddq_x): Remove.
8799 (vrhaddq_u8): Remove.
8800 (vrhaddq_s8): Remove.
8801 (vrhaddq_u16): Remove.
8802 (vrhaddq_s16): Remove.
8803 (vrhaddq_u32): Remove.
8804 (vrhaddq_s32): Remove.
8805 (vrhaddq_m_s8): Remove.
8806 (vrhaddq_m_s32): Remove.
8807 (vrhaddq_m_s16): Remove.
8808 (vrhaddq_m_u8): Remove.
8809 (vrhaddq_m_u32): Remove.
8810 (vrhaddq_m_u16): Remove.
8811 (vrhaddq_x_s8): Remove.
8812 (vrhaddq_x_s16): Remove.
8813 (vrhaddq_x_s32): Remove.
8814 (vrhaddq_x_u8): Remove.
8815 (vrhaddq_x_u16): Remove.
8816 (vrhaddq_x_u32): Remove.
8817 (__arm_vrhaddq_u8): Remove.
8818 (__arm_vrhaddq_s8): Remove.
8819 (__arm_vrhaddq_u16): Remove.
8820 (__arm_vrhaddq_s16): Remove.
8821 (__arm_vrhaddq_u32): Remove.
8822 (__arm_vrhaddq_s32): Remove.
8823 (__arm_vrhaddq_m_s8): Remove.
8824 (__arm_vrhaddq_m_s32): Remove.
8825 (__arm_vrhaddq_m_s16): Remove.
8826 (__arm_vrhaddq_m_u8): Remove.
8827 (__arm_vrhaddq_m_u32): Remove.
8828 (__arm_vrhaddq_m_u16): Remove.
8829 (__arm_vrhaddq_x_s8): Remove.
8830 (__arm_vrhaddq_x_s16): Remove.
8831 (__arm_vrhaddq_x_s32): Remove.
8832 (__arm_vrhaddq_x_u8): Remove.
8833 (__arm_vrhaddq_x_u16): Remove.
8834 (__arm_vrhaddq_x_u32): Remove.
8835 (__arm_vrhaddq): Remove.
8836 (__arm_vrhaddq_m): Remove.
8837 (__arm_vrhaddq_x): Remove.
8838 (vrmulhq): Remove.
8839 (vrmulhq_m): Remove.
8840 (vrmulhq_x): Remove.
8841 (vrmulhq_u8): Remove.
8842 (vrmulhq_s8): Remove.
8843 (vrmulhq_u16): Remove.
8844 (vrmulhq_s16): Remove.
8845 (vrmulhq_u32): Remove.
8846 (vrmulhq_s32): Remove.
8847 (vrmulhq_m_s8): Remove.
8848 (vrmulhq_m_s32): Remove.
8849 (vrmulhq_m_s16): Remove.
8850 (vrmulhq_m_u8): Remove.
8851 (vrmulhq_m_u32): Remove.
8852 (vrmulhq_m_u16): Remove.
8853 (vrmulhq_x_s8): Remove.
8854 (vrmulhq_x_s16): Remove.
8855 (vrmulhq_x_s32): Remove.
8856 (vrmulhq_x_u8): Remove.
8857 (vrmulhq_x_u16): Remove.
8858 (vrmulhq_x_u32): Remove.
8859 (__arm_vrmulhq_u8): Remove.
8860 (__arm_vrmulhq_s8): Remove.
8861 (__arm_vrmulhq_u16): Remove.
8862 (__arm_vrmulhq_s16): Remove.
8863 (__arm_vrmulhq_u32): Remove.
8864 (__arm_vrmulhq_s32): Remove.
8865 (__arm_vrmulhq_m_s8): Remove.
8866 (__arm_vrmulhq_m_s32): Remove.
8867 (__arm_vrmulhq_m_s16): Remove.
8868 (__arm_vrmulhq_m_u8): Remove.
8869 (__arm_vrmulhq_m_u32): Remove.
8870 (__arm_vrmulhq_m_u16): Remove.
8871 (__arm_vrmulhq_x_s8): Remove.
8872 (__arm_vrmulhq_x_s16): Remove.
8873 (__arm_vrmulhq_x_s32): Remove.
8874 (__arm_vrmulhq_x_u8): Remove.
8875 (__arm_vrmulhq_x_u16): Remove.
8876 (__arm_vrmulhq_x_u32): Remove.
8877 (__arm_vrmulhq): Remove.
8878 (__arm_vrmulhq_m): Remove.
8879 (__arm_vrmulhq_x): Remove.
8880
8881 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8882
8883 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
8884 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
8885 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
8886 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
8887 * config/arm/mve.md (mve_vabdq_<supf><mode>)
8888 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
8889 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
8890 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
8891 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
8892 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
8893 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
8894 ...
8895 (@mve_<mve_insn>q_<supf><mode>): ... this.
8896 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
8897 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
8898 gen_mve_vhaddq / gen_mve_vrhaddq.
8899
8900 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8901
8902 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
8903 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
8904 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
8905 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
8906 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
8907 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
8908 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
8909 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
8910 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
8911 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
8912 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
8913 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
8914 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8915
8916 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8917
8918 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
8919 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
8920 vqsubq.
8921 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
8922 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
8923 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
8924 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
8925 (mve_vqsubq_n_<supf><mode>): Merge into ...
8926 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8927
8928 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8929
8930 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
8931 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
8932 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
8933 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
8934 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
8935 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
8936 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
8937 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
8938 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
8939 (mve_vshlq_m_<supf><mode>): Merged into
8940 @mve_<mve_insn>q_m_<supf><mode>.
8941 (mve_vabdq_m_<supf><mode>): Likewise.
8942 (mve_vhaddq_m_<supf><mode>): Likewise.
8943 (mve_vhsubq_m_<supf><mode>): Likewise.
8944 (mve_vmaxq_m_<supf><mode>): Likewise.
8945 (mve_vminq_m_<supf><mode>): Likewise.
8946 (mve_vmulhq_m_<supf><mode>): Likewise.
8947 (mve_vqaddq_m_<supf><mode>): Likewise.
8948 (mve_vqrshlq_m_<supf><mode>): Likewise.
8949 (mve_vqshlq_m_<supf><mode>): Likewise.
8950 (mve_vqsubq_m_<supf><mode>): Likewise.
8951 (mve_vrhaddq_m_<supf><mode>): Likewise.
8952 (mve_vrmulhq_m_<supf><mode>): Likewise.
8953 (mve_vrshlq_m_<supf><mode>): Likewise.
8954 (mve_vqdmladhq_m_s<mode>): Likewise.
8955 (mve_vqdmladhxq_m_s<mode>): Likewise.
8956 (mve_vqdmlsdhq_m_s<mode>): Likewise.
8957 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
8958 (mve_vqdmulhq_m_s<mode>): Likewise.
8959 (mve_vqrdmladhq_m_s<mode>): Likewise.
8960 (mve_vqrdmladhxq_m_s<mode>): Likewise.
8961 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
8962 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
8963 (mve_vqrdmulhq_m_s<mode>): Likewise.
8964
8965 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8966
8967 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
8968 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
8969 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
8970 * config/arm/arm_mve.h (vcreateq_f16): Remove.
8971 (vcreateq_f32): Remove.
8972 (vcreateq_u8): Remove.
8973 (vcreateq_u16): Remove.
8974 (vcreateq_u32): Remove.
8975 (vcreateq_u64): Remove.
8976 (vcreateq_s8): Remove.
8977 (vcreateq_s16): Remove.
8978 (vcreateq_s32): Remove.
8979 (vcreateq_s64): Remove.
8980 (__arm_vcreateq_u8): Remove.
8981 (__arm_vcreateq_u16): Remove.
8982 (__arm_vcreateq_u32): Remove.
8983 (__arm_vcreateq_u64): Remove.
8984 (__arm_vcreateq_s8): Remove.
8985 (__arm_vcreateq_s16): Remove.
8986 (__arm_vcreateq_s32): Remove.
8987 (__arm_vcreateq_s64): Remove.
8988 (__arm_vcreateq_f16): Remove.
8989 (__arm_vcreateq_f32): Remove.
8990
8991 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8992
8993 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
8994 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
8995 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
8996 (@mve_<mve_insn>q_f<mode>): ... this.
8997 (mve_vcreateq_<supf><mode>): Rename into ...
8998 (@mve_<mve_insn>q_<supf><mode>): ... this.
8999
9000 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9001
9002 * config/arm/arm-mve-builtins-shapes.cc (create): New.
9003 * config/arm/arm-mve-builtins-shapes.h: (create): New.
9004
9005 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9006
9007 * config/arm/arm-mve-builtins-functions.h (class
9008 unspec_mve_function_exact_insn): New.
9009
9010 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9011
9012 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
9013 (vorrq): New.
9014 * config/arm/arm-mve-builtins-base.def (vorrq): New.
9015 * config/arm/arm-mve-builtins-base.h (vorrq): New.
9016 * config/arm/arm-mve-builtins.cc
9017 (function_instance::has_inactive_argument): Handle vorrq.
9018 * config/arm/arm_mve.h (vorrq): Remove.
9019 (vorrq_m_n): Remove.
9020 (vorrq_m): Remove.
9021 (vorrq_x): Remove.
9022 (vorrq_u8): Remove.
9023 (vorrq_s8): Remove.
9024 (vorrq_u16): Remove.
9025 (vorrq_s16): Remove.
9026 (vorrq_u32): Remove.
9027 (vorrq_s32): Remove.
9028 (vorrq_n_u16): Remove.
9029 (vorrq_f16): Remove.
9030 (vorrq_n_s16): Remove.
9031 (vorrq_n_u32): Remove.
9032 (vorrq_f32): Remove.
9033 (vorrq_n_s32): Remove.
9034 (vorrq_m_n_s16): Remove.
9035 (vorrq_m_n_u16): Remove.
9036 (vorrq_m_n_s32): Remove.
9037 (vorrq_m_n_u32): Remove.
9038 (vorrq_m_s8): Remove.
9039 (vorrq_m_s32): Remove.
9040 (vorrq_m_s16): Remove.
9041 (vorrq_m_u8): Remove.
9042 (vorrq_m_u32): Remove.
9043 (vorrq_m_u16): Remove.
9044 (vorrq_m_f32): Remove.
9045 (vorrq_m_f16): Remove.
9046 (vorrq_x_s8): Remove.
9047 (vorrq_x_s16): Remove.
9048 (vorrq_x_s32): Remove.
9049 (vorrq_x_u8): Remove.
9050 (vorrq_x_u16): Remove.
9051 (vorrq_x_u32): Remove.
9052 (vorrq_x_f16): Remove.
9053 (vorrq_x_f32): Remove.
9054 (__arm_vorrq_u8): Remove.
9055 (__arm_vorrq_s8): Remove.
9056 (__arm_vorrq_u16): Remove.
9057 (__arm_vorrq_s16): Remove.
9058 (__arm_vorrq_u32): Remove.
9059 (__arm_vorrq_s32): Remove.
9060 (__arm_vorrq_n_u16): Remove.
9061 (__arm_vorrq_n_s16): Remove.
9062 (__arm_vorrq_n_u32): Remove.
9063 (__arm_vorrq_n_s32): Remove.
9064 (__arm_vorrq_m_n_s16): Remove.
9065 (__arm_vorrq_m_n_u16): Remove.
9066 (__arm_vorrq_m_n_s32): Remove.
9067 (__arm_vorrq_m_n_u32): Remove.
9068 (__arm_vorrq_m_s8): Remove.
9069 (__arm_vorrq_m_s32): Remove.
9070 (__arm_vorrq_m_s16): Remove.
9071 (__arm_vorrq_m_u8): Remove.
9072 (__arm_vorrq_m_u32): Remove.
9073 (__arm_vorrq_m_u16): Remove.
9074 (__arm_vorrq_x_s8): Remove.
9075 (__arm_vorrq_x_s16): Remove.
9076 (__arm_vorrq_x_s32): Remove.
9077 (__arm_vorrq_x_u8): Remove.
9078 (__arm_vorrq_x_u16): Remove.
9079 (__arm_vorrq_x_u32): Remove.
9080 (__arm_vorrq_f16): Remove.
9081 (__arm_vorrq_f32): Remove.
9082 (__arm_vorrq_m_f32): Remove.
9083 (__arm_vorrq_m_f16): Remove.
9084 (__arm_vorrq_x_f16): Remove.
9085 (__arm_vorrq_x_f32): Remove.
9086 (__arm_vorrq): Remove.
9087 (__arm_vorrq_m_n): Remove.
9088 (__arm_vorrq_m): Remove.
9089 (__arm_vorrq_x): Remove.
9090
9091 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9092
9093 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
9094 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
9095 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
9096 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
9097
9098 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9099
9100 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
9101 (vandq,veorq): New.
9102 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
9103 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
9104 * config/arm/arm_mve.h (vandq): Remove.
9105 (vandq_m): Remove.
9106 (vandq_x): Remove.
9107 (vandq_u8): Remove.
9108 (vandq_s8): Remove.
9109 (vandq_u16): Remove.
9110 (vandq_s16): Remove.
9111 (vandq_u32): Remove.
9112 (vandq_s32): Remove.
9113 (vandq_f16): Remove.
9114 (vandq_f32): Remove.
9115 (vandq_m_s8): Remove.
9116 (vandq_m_s32): Remove.
9117 (vandq_m_s16): Remove.
9118 (vandq_m_u8): Remove.
9119 (vandq_m_u32): Remove.
9120 (vandq_m_u16): Remove.
9121 (vandq_m_f32): Remove.
9122 (vandq_m_f16): Remove.
9123 (vandq_x_s8): Remove.
9124 (vandq_x_s16): Remove.
9125 (vandq_x_s32): Remove.
9126 (vandq_x_u8): Remove.
9127 (vandq_x_u16): Remove.
9128 (vandq_x_u32): Remove.
9129 (vandq_x_f16): Remove.
9130 (vandq_x_f32): Remove.
9131 (__arm_vandq_u8): Remove.
9132 (__arm_vandq_s8): Remove.
9133 (__arm_vandq_u16): Remove.
9134 (__arm_vandq_s16): Remove.
9135 (__arm_vandq_u32): Remove.
9136 (__arm_vandq_s32): Remove.
9137 (__arm_vandq_m_s8): Remove.
9138 (__arm_vandq_m_s32): Remove.
9139 (__arm_vandq_m_s16): Remove.
9140 (__arm_vandq_m_u8): Remove.
9141 (__arm_vandq_m_u32): Remove.
9142 (__arm_vandq_m_u16): Remove.
9143 (__arm_vandq_x_s8): Remove.
9144 (__arm_vandq_x_s16): Remove.
9145 (__arm_vandq_x_s32): Remove.
9146 (__arm_vandq_x_u8): Remove.
9147 (__arm_vandq_x_u16): Remove.
9148 (__arm_vandq_x_u32): Remove.
9149 (__arm_vandq_f16): Remove.
9150 (__arm_vandq_f32): Remove.
9151 (__arm_vandq_m_f32): Remove.
9152 (__arm_vandq_m_f16): Remove.
9153 (__arm_vandq_x_f16): Remove.
9154 (__arm_vandq_x_f32): Remove.
9155 (__arm_vandq): Remove.
9156 (__arm_vandq_m): Remove.
9157 (__arm_vandq_x): Remove.
9158 (veorq_m): Remove.
9159 (veorq_x): Remove.
9160 (veorq_u8): Remove.
9161 (veorq_s8): Remove.
9162 (veorq_u16): Remove.
9163 (veorq_s16): Remove.
9164 (veorq_u32): Remove.
9165 (veorq_s32): Remove.
9166 (veorq_f16): Remove.
9167 (veorq_f32): Remove.
9168 (veorq_m_s8): Remove.
9169 (veorq_m_s32): Remove.
9170 (veorq_m_s16): Remove.
9171 (veorq_m_u8): Remove.
9172 (veorq_m_u32): Remove.
9173 (veorq_m_u16): Remove.
9174 (veorq_m_f32): Remove.
9175 (veorq_m_f16): Remove.
9176 (veorq_x_s8): Remove.
9177 (veorq_x_s16): Remove.
9178 (veorq_x_s32): Remove.
9179 (veorq_x_u8): Remove.
9180 (veorq_x_u16): Remove.
9181 (veorq_x_u32): Remove.
9182 (veorq_x_f16): Remove.
9183 (veorq_x_f32): Remove.
9184 (__arm_veorq_u8): Remove.
9185 (__arm_veorq_s8): Remove.
9186 (__arm_veorq_u16): Remove.
9187 (__arm_veorq_s16): Remove.
9188 (__arm_veorq_u32): Remove.
9189 (__arm_veorq_s32): Remove.
9190 (__arm_veorq_m_s8): Remove.
9191 (__arm_veorq_m_s32): Remove.
9192 (__arm_veorq_m_s16): Remove.
9193 (__arm_veorq_m_u8): Remove.
9194 (__arm_veorq_m_u32): Remove.
9195 (__arm_veorq_m_u16): Remove.
9196 (__arm_veorq_x_s8): Remove.
9197 (__arm_veorq_x_s16): Remove.
9198 (__arm_veorq_x_s32): Remove.
9199 (__arm_veorq_x_u8): Remove.
9200 (__arm_veorq_x_u16): Remove.
9201 (__arm_veorq_x_u32): Remove.
9202 (__arm_veorq_f16): Remove.
9203 (__arm_veorq_f32): Remove.
9204 (__arm_veorq_m_f32): Remove.
9205 (__arm_veorq_m_f16): Remove.
9206 (__arm_veorq_x_f16): Remove.
9207 (__arm_veorq_x_f32): Remove.
9208 (__arm_veorq): Remove.
9209 (__arm_veorq_m): Remove.
9210 (__arm_veorq_x): Remove.
9211
9212 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9213
9214 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
9215 (MVE_FP_M_BINARY_LOGIC): New.
9216 (MVE_INT_M_N_BINARY_LOGIC): New.
9217 (MVE_INT_N_BINARY_LOGIC): New.
9218 (mve_insn): Add vand, veor, vorr, vbic.
9219 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
9220 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
9221 (mve_vbicq_m_<supf><mode>): Merge into ...
9222 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
9223 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
9224 (mve_vbicq_m_f<mode>): Merge into ...
9225 (@mve_<mve_insn>q_m_f<mode>): ... this.
9226 (mve_vorrq_n_<supf><mode>)
9227 (mve_vbicq_n_<supf><mode>): Merge into ...
9228 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9229 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
9230 into ...
9231 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9232
9233 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9234
9235 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
9236 * config/arm/arm-mve-builtins-shapes.h (binary): New.
9237
9238 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9239
9240 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
9241 New.
9242 (vaddq, vmulq, vsubq): New.
9243 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
9244 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
9245 * config/arm/arm_mve.h (vaddq): Remove.
9246 (vaddq_m): Remove.
9247 (vaddq_x): Remove.
9248 (vaddq_n_u8): Remove.
9249 (vaddq_n_s8): Remove.
9250 (vaddq_n_u16): Remove.
9251 (vaddq_n_s16): Remove.
9252 (vaddq_n_u32): Remove.
9253 (vaddq_n_s32): Remove.
9254 (vaddq_n_f16): Remove.
9255 (vaddq_n_f32): Remove.
9256 (vaddq_m_n_s8): Remove.
9257 (vaddq_m_n_s32): Remove.
9258 (vaddq_m_n_s16): Remove.
9259 (vaddq_m_n_u8): Remove.
9260 (vaddq_m_n_u32): Remove.
9261 (vaddq_m_n_u16): Remove.
9262 (vaddq_m_s8): Remove.
9263 (vaddq_m_s32): Remove.
9264 (vaddq_m_s16): Remove.
9265 (vaddq_m_u8): Remove.
9266 (vaddq_m_u32): Remove.
9267 (vaddq_m_u16): Remove.
9268 (vaddq_m_f32): Remove.
9269 (vaddq_m_f16): Remove.
9270 (vaddq_m_n_f32): Remove.
9271 (vaddq_m_n_f16): Remove.
9272 (vaddq_s8): Remove.
9273 (vaddq_s16): Remove.
9274 (vaddq_s32): Remove.
9275 (vaddq_u8): Remove.
9276 (vaddq_u16): Remove.
9277 (vaddq_u32): Remove.
9278 (vaddq_f16): Remove.
9279 (vaddq_f32): Remove.
9280 (vaddq_x_s8): Remove.
9281 (vaddq_x_s16): Remove.
9282 (vaddq_x_s32): Remove.
9283 (vaddq_x_n_s8): Remove.
9284 (vaddq_x_n_s16): Remove.
9285 (vaddq_x_n_s32): Remove.
9286 (vaddq_x_u8): Remove.
9287 (vaddq_x_u16): Remove.
9288 (vaddq_x_u32): Remove.
9289 (vaddq_x_n_u8): Remove.
9290 (vaddq_x_n_u16): Remove.
9291 (vaddq_x_n_u32): Remove.
9292 (vaddq_x_f16): Remove.
9293 (vaddq_x_f32): Remove.
9294 (vaddq_x_n_f16): Remove.
9295 (vaddq_x_n_f32): Remove.
9296 (__arm_vaddq_n_u8): Remove.
9297 (__arm_vaddq_n_s8): Remove.
9298 (__arm_vaddq_n_u16): Remove.
9299 (__arm_vaddq_n_s16): Remove.
9300 (__arm_vaddq_n_u32): Remove.
9301 (__arm_vaddq_n_s32): Remove.
9302 (__arm_vaddq_m_n_s8): Remove.
9303 (__arm_vaddq_m_n_s32): Remove.
9304 (__arm_vaddq_m_n_s16): Remove.
9305 (__arm_vaddq_m_n_u8): Remove.
9306 (__arm_vaddq_m_n_u32): Remove.
9307 (__arm_vaddq_m_n_u16): Remove.
9308 (__arm_vaddq_m_s8): Remove.
9309 (__arm_vaddq_m_s32): Remove.
9310 (__arm_vaddq_m_s16): Remove.
9311 (__arm_vaddq_m_u8): Remove.
9312 (__arm_vaddq_m_u32): Remove.
9313 (__arm_vaddq_m_u16): Remove.
9314 (__arm_vaddq_s8): Remove.
9315 (__arm_vaddq_s16): Remove.
9316 (__arm_vaddq_s32): Remove.
9317 (__arm_vaddq_u8): Remove.
9318 (__arm_vaddq_u16): Remove.
9319 (__arm_vaddq_u32): Remove.
9320 (__arm_vaddq_x_s8): Remove.
9321 (__arm_vaddq_x_s16): Remove.
9322 (__arm_vaddq_x_s32): Remove.
9323 (__arm_vaddq_x_n_s8): Remove.
9324 (__arm_vaddq_x_n_s16): Remove.
9325 (__arm_vaddq_x_n_s32): Remove.
9326 (__arm_vaddq_x_u8): Remove.
9327 (__arm_vaddq_x_u16): Remove.
9328 (__arm_vaddq_x_u32): Remove.
9329 (__arm_vaddq_x_n_u8): Remove.
9330 (__arm_vaddq_x_n_u16): Remove.
9331 (__arm_vaddq_x_n_u32): Remove.
9332 (__arm_vaddq_n_f16): Remove.
9333 (__arm_vaddq_n_f32): Remove.
9334 (__arm_vaddq_m_f32): Remove.
9335 (__arm_vaddq_m_f16): Remove.
9336 (__arm_vaddq_m_n_f32): Remove.
9337 (__arm_vaddq_m_n_f16): Remove.
9338 (__arm_vaddq_f16): Remove.
9339 (__arm_vaddq_f32): Remove.
9340 (__arm_vaddq_x_f16): Remove.
9341 (__arm_vaddq_x_f32): Remove.
9342 (__arm_vaddq_x_n_f16): Remove.
9343 (__arm_vaddq_x_n_f32): Remove.
9344 (__arm_vaddq): Remove.
9345 (__arm_vaddq_m): Remove.
9346 (__arm_vaddq_x): Remove.
9347 (vmulq): Remove.
9348 (vmulq_m): Remove.
9349 (vmulq_x): Remove.
9350 (vmulq_u8): Remove.
9351 (vmulq_n_u8): Remove.
9352 (vmulq_s8): Remove.
9353 (vmulq_n_s8): Remove.
9354 (vmulq_u16): Remove.
9355 (vmulq_n_u16): Remove.
9356 (vmulq_s16): Remove.
9357 (vmulq_n_s16): Remove.
9358 (vmulq_u32): Remove.
9359 (vmulq_n_u32): Remove.
9360 (vmulq_s32): Remove.
9361 (vmulq_n_s32): Remove.
9362 (vmulq_n_f16): Remove.
9363 (vmulq_f16): Remove.
9364 (vmulq_n_f32): Remove.
9365 (vmulq_f32): Remove.
9366 (vmulq_m_n_s8): Remove.
9367 (vmulq_m_n_s32): Remove.
9368 (vmulq_m_n_s16): Remove.
9369 (vmulq_m_n_u8): Remove.
9370 (vmulq_m_n_u32): Remove.
9371 (vmulq_m_n_u16): Remove.
9372 (vmulq_m_s8): Remove.
9373 (vmulq_m_s32): Remove.
9374 (vmulq_m_s16): Remove.
9375 (vmulq_m_u8): Remove.
9376 (vmulq_m_u32): Remove.
9377 (vmulq_m_u16): Remove.
9378 (vmulq_m_f32): Remove.
9379 (vmulq_m_f16): Remove.
9380 (vmulq_m_n_f32): Remove.
9381 (vmulq_m_n_f16): Remove.
9382 (vmulq_x_s8): Remove.
9383 (vmulq_x_s16): Remove.
9384 (vmulq_x_s32): Remove.
9385 (vmulq_x_n_s8): Remove.
9386 (vmulq_x_n_s16): Remove.
9387 (vmulq_x_n_s32): Remove.
9388 (vmulq_x_u8): Remove.
9389 (vmulq_x_u16): Remove.
9390 (vmulq_x_u32): Remove.
9391 (vmulq_x_n_u8): Remove.
9392 (vmulq_x_n_u16): Remove.
9393 (vmulq_x_n_u32): Remove.
9394 (vmulq_x_f16): Remove.
9395 (vmulq_x_f32): Remove.
9396 (vmulq_x_n_f16): Remove.
9397 (vmulq_x_n_f32): Remove.
9398 (__arm_vmulq_u8): Remove.
9399 (__arm_vmulq_n_u8): Remove.
9400 (__arm_vmulq_s8): Remove.
9401 (__arm_vmulq_n_s8): Remove.
9402 (__arm_vmulq_u16): Remove.
9403 (__arm_vmulq_n_u16): Remove.
9404 (__arm_vmulq_s16): Remove.
9405 (__arm_vmulq_n_s16): Remove.
9406 (__arm_vmulq_u32): Remove.
9407 (__arm_vmulq_n_u32): Remove.
9408 (__arm_vmulq_s32): Remove.
9409 (__arm_vmulq_n_s32): Remove.
9410 (__arm_vmulq_m_n_s8): Remove.
9411 (__arm_vmulq_m_n_s32): Remove.
9412 (__arm_vmulq_m_n_s16): Remove.
9413 (__arm_vmulq_m_n_u8): Remove.
9414 (__arm_vmulq_m_n_u32): Remove.
9415 (__arm_vmulq_m_n_u16): Remove.
9416 (__arm_vmulq_m_s8): Remove.
9417 (__arm_vmulq_m_s32): Remove.
9418 (__arm_vmulq_m_s16): Remove.
9419 (__arm_vmulq_m_u8): Remove.
9420 (__arm_vmulq_m_u32): Remove.
9421 (__arm_vmulq_m_u16): Remove.
9422 (__arm_vmulq_x_s8): Remove.
9423 (__arm_vmulq_x_s16): Remove.
9424 (__arm_vmulq_x_s32): Remove.
9425 (__arm_vmulq_x_n_s8): Remove.
9426 (__arm_vmulq_x_n_s16): Remove.
9427 (__arm_vmulq_x_n_s32): Remove.
9428 (__arm_vmulq_x_u8): Remove.
9429 (__arm_vmulq_x_u16): Remove.
9430 (__arm_vmulq_x_u32): Remove.
9431 (__arm_vmulq_x_n_u8): Remove.
9432 (__arm_vmulq_x_n_u16): Remove.
9433 (__arm_vmulq_x_n_u32): Remove.
9434 (__arm_vmulq_n_f16): Remove.
9435 (__arm_vmulq_f16): Remove.
9436 (__arm_vmulq_n_f32): Remove.
9437 (__arm_vmulq_f32): Remove.
9438 (__arm_vmulq_m_f32): Remove.
9439 (__arm_vmulq_m_f16): Remove.
9440 (__arm_vmulq_m_n_f32): Remove.
9441 (__arm_vmulq_m_n_f16): Remove.
9442 (__arm_vmulq_x_f16): Remove.
9443 (__arm_vmulq_x_f32): Remove.
9444 (__arm_vmulq_x_n_f16): Remove.
9445 (__arm_vmulq_x_n_f32): Remove.
9446 (__arm_vmulq): Remove.
9447 (__arm_vmulq_m): Remove.
9448 (__arm_vmulq_x): Remove.
9449 (vsubq): Remove.
9450 (vsubq_m): Remove.
9451 (vsubq_x): Remove.
9452 (vsubq_n_f16): Remove.
9453 (vsubq_n_f32): Remove.
9454 (vsubq_u8): Remove.
9455 (vsubq_n_u8): Remove.
9456 (vsubq_s8): Remove.
9457 (vsubq_n_s8): Remove.
9458 (vsubq_u16): Remove.
9459 (vsubq_n_u16): Remove.
9460 (vsubq_s16): Remove.
9461 (vsubq_n_s16): Remove.
9462 (vsubq_u32): Remove.
9463 (vsubq_n_u32): Remove.
9464 (vsubq_s32): Remove.
9465 (vsubq_n_s32): Remove.
9466 (vsubq_f16): Remove.
9467 (vsubq_f32): Remove.
9468 (vsubq_m_s8): Remove.
9469 (vsubq_m_u8): Remove.
9470 (vsubq_m_s16): Remove.
9471 (vsubq_m_u16): Remove.
9472 (vsubq_m_s32): Remove.
9473 (vsubq_m_u32): Remove.
9474 (vsubq_m_n_s8): Remove.
9475 (vsubq_m_n_s32): Remove.
9476 (vsubq_m_n_s16): Remove.
9477 (vsubq_m_n_u8): Remove.
9478 (vsubq_m_n_u32): Remove.
9479 (vsubq_m_n_u16): Remove.
9480 (vsubq_m_f32): Remove.
9481 (vsubq_m_f16): Remove.
9482 (vsubq_m_n_f32): Remove.
9483 (vsubq_m_n_f16): Remove.
9484 (vsubq_x_s8): Remove.
9485 (vsubq_x_s16): Remove.
9486 (vsubq_x_s32): Remove.
9487 (vsubq_x_n_s8): Remove.
9488 (vsubq_x_n_s16): Remove.
9489 (vsubq_x_n_s32): Remove.
9490 (vsubq_x_u8): Remove.
9491 (vsubq_x_u16): Remove.
9492 (vsubq_x_u32): Remove.
9493 (vsubq_x_n_u8): Remove.
9494 (vsubq_x_n_u16): Remove.
9495 (vsubq_x_n_u32): Remove.
9496 (vsubq_x_f16): Remove.
9497 (vsubq_x_f32): Remove.
9498 (vsubq_x_n_f16): Remove.
9499 (vsubq_x_n_f32): Remove.
9500 (__arm_vsubq_u8): Remove.
9501 (__arm_vsubq_n_u8): Remove.
9502 (__arm_vsubq_s8): Remove.
9503 (__arm_vsubq_n_s8): Remove.
9504 (__arm_vsubq_u16): Remove.
9505 (__arm_vsubq_n_u16): Remove.
9506 (__arm_vsubq_s16): Remove.
9507 (__arm_vsubq_n_s16): Remove.
9508 (__arm_vsubq_u32): Remove.
9509 (__arm_vsubq_n_u32): Remove.
9510 (__arm_vsubq_s32): Remove.
9511 (__arm_vsubq_n_s32): Remove.
9512 (__arm_vsubq_m_s8): Remove.
9513 (__arm_vsubq_m_u8): Remove.
9514 (__arm_vsubq_m_s16): Remove.
9515 (__arm_vsubq_m_u16): Remove.
9516 (__arm_vsubq_m_s32): Remove.
9517 (__arm_vsubq_m_u32): Remove.
9518 (__arm_vsubq_m_n_s8): Remove.
9519 (__arm_vsubq_m_n_s32): Remove.
9520 (__arm_vsubq_m_n_s16): Remove.
9521 (__arm_vsubq_m_n_u8): Remove.
9522 (__arm_vsubq_m_n_u32): Remove.
9523 (__arm_vsubq_m_n_u16): Remove.
9524 (__arm_vsubq_x_s8): Remove.
9525 (__arm_vsubq_x_s16): Remove.
9526 (__arm_vsubq_x_s32): Remove.
9527 (__arm_vsubq_x_n_s8): Remove.
9528 (__arm_vsubq_x_n_s16): Remove.
9529 (__arm_vsubq_x_n_s32): Remove.
9530 (__arm_vsubq_x_u8): Remove.
9531 (__arm_vsubq_x_u16): Remove.
9532 (__arm_vsubq_x_u32): Remove.
9533 (__arm_vsubq_x_n_u8): Remove.
9534 (__arm_vsubq_x_n_u16): Remove.
9535 (__arm_vsubq_x_n_u32): Remove.
9536 (__arm_vsubq_n_f16): Remove.
9537 (__arm_vsubq_n_f32): Remove.
9538 (__arm_vsubq_f16): Remove.
9539 (__arm_vsubq_f32): Remove.
9540 (__arm_vsubq_m_f32): Remove.
9541 (__arm_vsubq_m_f16): Remove.
9542 (__arm_vsubq_m_n_f32): Remove.
9543 (__arm_vsubq_m_n_f16): Remove.
9544 (__arm_vsubq_x_f16): Remove.
9545 (__arm_vsubq_x_f32): Remove.
9546 (__arm_vsubq_x_n_f16): Remove.
9547 (__arm_vsubq_x_n_f32): Remove.
9548 (__arm_vsubq): Remove.
9549 (__arm_vsubq_m): Remove.
9550 (__arm_vsubq_x): Remove.
9551 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
9552 Remove.
9553 (vmulq_u, vmulq_s, vmulq_f): Remove.
9554 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
9555 (mve_vmulq_<supf><mode>): Remove.
9556
9557 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9558
9559 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
9560 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
9561 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
9562 iterators.
9563 * config/arm/mve.md
9564 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
9565 Factorize into ...
9566 (@mve_<mve_insn>q_n_f<mode>): ... this.
9567 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
9568 (mve_vsubq_n_<supf><mode>): Factorize into ...
9569 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9570 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
9571 into ...
9572 (mve_<mve_addsubmul>q<mode>): ... this.
9573 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
9574 Factorize into ...
9575 (mve_<mve_addsubmul>q_f<mode>): ... this.
9576 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
9577 (mve_vsubq_m_<supf><mode>): Factorize into ...
9578 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
9579 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
9580 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
9581 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9582 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
9583 Factorize into ...
9584 (@mve_<mve_insn>q_m_f<mode>): ... this.
9585 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
9586 (mve_vsubq_m_n_f<mode>): Factorize into ...
9587 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
9588
9589 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9590
9591 * config/arm/arm-mve-builtins-functions.h (class
9592 unspec_based_mve_function_base): New.
9593 (class unspec_based_mve_function_exact_insn): New.
9594
9595 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9596
9597 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
9598 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
9599
9600 2023-05-03 Murray Steele <murray.steele@arm.com>
9601 Christophe Lyon <christophe.lyon@arm.com>
9602
9603 * config/arm/arm-mve-builtins-base.cc (class
9604 vuninitializedq_impl): New.
9605 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
9606 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
9607 declaration.
9608 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
9609 * config/arm/arm-mve-builtins-shapes.h (inherent): New
9610 declaration.
9611 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
9612 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
9613 (__arm_vuninitializedq_u8): Remove.
9614 (__arm_vuninitializedq_u16): Remove.
9615 (__arm_vuninitializedq_u32): Remove.
9616 (__arm_vuninitializedq_u64): Remove.
9617 (__arm_vuninitializedq_s8): Remove.
9618 (__arm_vuninitializedq_s16): Remove.
9619 (__arm_vuninitializedq_s32): Remove.
9620 (__arm_vuninitializedq_s64): Remove.
9621 (__arm_vuninitializedq_f16): Remove.
9622 (__arm_vuninitializedq_f32): Remove.
9623
9624 2023-05-03 Murray Steele <murray.steele@arm.com>
9625 Christophe Lyon <christophe.lyon@arm.com>
9626
9627 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
9628 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
9629 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
9630 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
9631 (parse_type): Likewise.
9632 (parse_signature): Likewise.
9633 (build_one): Likewise.
9634 (build_all): Likewise.
9635 (overloaded_base): New struct.
9636 (unary_convert_def): Likewise.
9637 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
9638 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
9639 macro.
9640 (TYPES_reinterpret_unsigned1): Likewise.
9641 (TYPES_reinterpret_integer): Likewise.
9642 (TYPES_reinterpret_integer1): Likewise.
9643 (TYPES_reinterpret_float1): Likewise.
9644 (TYPES_reinterpret_float): Likewise.
9645 (reinterpret_integer): New.
9646 (reinterpret_float): New.
9647 (handle_arm_mve_h): Register builtins.
9648 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
9649 (vreinterpretq_s32): Likewise.
9650 (vreinterpretq_s64): Likewise.
9651 (vreinterpretq_s8): Likewise.
9652 (vreinterpretq_u16): Likewise.
9653 (vreinterpretq_u32): Likewise.
9654 (vreinterpretq_u64): Likewise.
9655 (vreinterpretq_u8): Likewise.
9656 (vreinterpretq_f16): Likewise.
9657 (vreinterpretq_f32): Likewise.
9658 (vreinterpretq_s16_s32): Likewise.
9659 (vreinterpretq_s16_s64): Likewise.
9660 (vreinterpretq_s16_s8): Likewise.
9661 (vreinterpretq_s16_u16): Likewise.
9662 (vreinterpretq_s16_u32): Likewise.
9663 (vreinterpretq_s16_u64): Likewise.
9664 (vreinterpretq_s16_u8): Likewise.
9665 (vreinterpretq_s32_s16): Likewise.
9666 (vreinterpretq_s32_s64): Likewise.
9667 (vreinterpretq_s32_s8): Likewise.
9668 (vreinterpretq_s32_u16): Likewise.
9669 (vreinterpretq_s32_u32): Likewise.
9670 (vreinterpretq_s32_u64): Likewise.
9671 (vreinterpretq_s32_u8): Likewise.
9672 (vreinterpretq_s64_s16): Likewise.
9673 (vreinterpretq_s64_s32): Likewise.
9674 (vreinterpretq_s64_s8): Likewise.
9675 (vreinterpretq_s64_u16): Likewise.
9676 (vreinterpretq_s64_u32): Likewise.
9677 (vreinterpretq_s64_u64): Likewise.
9678 (vreinterpretq_s64_u8): Likewise.
9679 (vreinterpretq_s8_s16): Likewise.
9680 (vreinterpretq_s8_s32): Likewise.
9681 (vreinterpretq_s8_s64): Likewise.
9682 (vreinterpretq_s8_u16): Likewise.
9683 (vreinterpretq_s8_u32): Likewise.
9684 (vreinterpretq_s8_u64): Likewise.
9685 (vreinterpretq_s8_u8): Likewise.
9686 (vreinterpretq_u16_s16): Likewise.
9687 (vreinterpretq_u16_s32): Likewise.
9688 (vreinterpretq_u16_s64): Likewise.
9689 (vreinterpretq_u16_s8): Likewise.
9690 (vreinterpretq_u16_u32): Likewise.
9691 (vreinterpretq_u16_u64): Likewise.
9692 (vreinterpretq_u16_u8): Likewise.
9693 (vreinterpretq_u32_s16): Likewise.
9694 (vreinterpretq_u32_s32): Likewise.
9695 (vreinterpretq_u32_s64): Likewise.
9696 (vreinterpretq_u32_s8): Likewise.
9697 (vreinterpretq_u32_u16): Likewise.
9698 (vreinterpretq_u32_u64): Likewise.
9699 (vreinterpretq_u32_u8): Likewise.
9700 (vreinterpretq_u64_s16): Likewise.
9701 (vreinterpretq_u64_s32): Likewise.
9702 (vreinterpretq_u64_s64): Likewise.
9703 (vreinterpretq_u64_s8): Likewise.
9704 (vreinterpretq_u64_u16): Likewise.
9705 (vreinterpretq_u64_u32): Likewise.
9706 (vreinterpretq_u64_u8): Likewise.
9707 (vreinterpretq_u8_s16): Likewise.
9708 (vreinterpretq_u8_s32): Likewise.
9709 (vreinterpretq_u8_s64): Likewise.
9710 (vreinterpretq_u8_s8): Likewise.
9711 (vreinterpretq_u8_u16): Likewise.
9712 (vreinterpretq_u8_u32): Likewise.
9713 (vreinterpretq_u8_u64): Likewise.
9714 (vreinterpretq_s32_f16): Likewise.
9715 (vreinterpretq_s32_f32): Likewise.
9716 (vreinterpretq_u16_f16): Likewise.
9717 (vreinterpretq_u16_f32): Likewise.
9718 (vreinterpretq_u32_f16): Likewise.
9719 (vreinterpretq_u32_f32): Likewise.
9720 (vreinterpretq_u64_f16): Likewise.
9721 (vreinterpretq_u64_f32): Likewise.
9722 (vreinterpretq_u8_f16): Likewise.
9723 (vreinterpretq_u8_f32): Likewise.
9724 (vreinterpretq_f16_f32): Likewise.
9725 (vreinterpretq_f16_s16): Likewise.
9726 (vreinterpretq_f16_s32): Likewise.
9727 (vreinterpretq_f16_s64): Likewise.
9728 (vreinterpretq_f16_s8): Likewise.
9729 (vreinterpretq_f16_u16): Likewise.
9730 (vreinterpretq_f16_u32): Likewise.
9731 (vreinterpretq_f16_u64): Likewise.
9732 (vreinterpretq_f16_u8): Likewise.
9733 (vreinterpretq_f32_f16): Likewise.
9734 (vreinterpretq_f32_s16): Likewise.
9735 (vreinterpretq_f32_s32): Likewise.
9736 (vreinterpretq_f32_s64): Likewise.
9737 (vreinterpretq_f32_s8): Likewise.
9738 (vreinterpretq_f32_u16): Likewise.
9739 (vreinterpretq_f32_u32): Likewise.
9740 (vreinterpretq_f32_u64): Likewise.
9741 (vreinterpretq_f32_u8): Likewise.
9742 (vreinterpretq_s16_f16): Likewise.
9743 (vreinterpretq_s16_f32): Likewise.
9744 (vreinterpretq_s64_f16): Likewise.
9745 (vreinterpretq_s64_f32): Likewise.
9746 (vreinterpretq_s8_f16): Likewise.
9747 (vreinterpretq_s8_f32): Likewise.
9748 (__arm_vreinterpretq_f16): Likewise.
9749 (__arm_vreinterpretq_f32): Likewise.
9750 (__arm_vreinterpretq_s16): Likewise.
9751 (__arm_vreinterpretq_s32): Likewise.
9752 (__arm_vreinterpretq_s64): Likewise.
9753 (__arm_vreinterpretq_s8): Likewise.
9754 (__arm_vreinterpretq_u16): Likewise.
9755 (__arm_vreinterpretq_u32): Likewise.
9756 (__arm_vreinterpretq_u64): Likewise.
9757 (__arm_vreinterpretq_u8): Likewise.
9758 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
9759 (__arm_vreinterpretq_s16_s64): Likewise.
9760 (__arm_vreinterpretq_s16_s8): Likewise.
9761 (__arm_vreinterpretq_s16_u16): Likewise.
9762 (__arm_vreinterpretq_s16_u32): Likewise.
9763 (__arm_vreinterpretq_s16_u64): Likewise.
9764 (__arm_vreinterpretq_s16_u8): Likewise.
9765 (__arm_vreinterpretq_s32_s16): Likewise.
9766 (__arm_vreinterpretq_s32_s64): Likewise.
9767 (__arm_vreinterpretq_s32_s8): Likewise.
9768 (__arm_vreinterpretq_s32_u16): Likewise.
9769 (__arm_vreinterpretq_s32_u32): Likewise.
9770 (__arm_vreinterpretq_s32_u64): Likewise.
9771 (__arm_vreinterpretq_s32_u8): Likewise.
9772 (__arm_vreinterpretq_s64_s16): Likewise.
9773 (__arm_vreinterpretq_s64_s32): Likewise.
9774 (__arm_vreinterpretq_s64_s8): Likewise.
9775 (__arm_vreinterpretq_s64_u16): Likewise.
9776 (__arm_vreinterpretq_s64_u32): Likewise.
9777 (__arm_vreinterpretq_s64_u64): Likewise.
9778 (__arm_vreinterpretq_s64_u8): Likewise.
9779 (__arm_vreinterpretq_s8_s16): Likewise.
9780 (__arm_vreinterpretq_s8_s32): Likewise.
9781 (__arm_vreinterpretq_s8_s64): Likewise.
9782 (__arm_vreinterpretq_s8_u16): Likewise.
9783 (__arm_vreinterpretq_s8_u32): Likewise.
9784 (__arm_vreinterpretq_s8_u64): Likewise.
9785 (__arm_vreinterpretq_s8_u8): Likewise.
9786 (__arm_vreinterpretq_u16_s16): Likewise.
9787 (__arm_vreinterpretq_u16_s32): Likewise.
9788 (__arm_vreinterpretq_u16_s64): Likewise.
9789 (__arm_vreinterpretq_u16_s8): Likewise.
9790 (__arm_vreinterpretq_u16_u32): Likewise.
9791 (__arm_vreinterpretq_u16_u64): Likewise.
9792 (__arm_vreinterpretq_u16_u8): Likewise.
9793 (__arm_vreinterpretq_u32_s16): Likewise.
9794 (__arm_vreinterpretq_u32_s32): Likewise.
9795 (__arm_vreinterpretq_u32_s64): Likewise.
9796 (__arm_vreinterpretq_u32_s8): Likewise.
9797 (__arm_vreinterpretq_u32_u16): Likewise.
9798 (__arm_vreinterpretq_u32_u64): Likewise.
9799 (__arm_vreinterpretq_u32_u8): Likewise.
9800 (__arm_vreinterpretq_u64_s16): Likewise.
9801 (__arm_vreinterpretq_u64_s32): Likewise.
9802 (__arm_vreinterpretq_u64_s64): Likewise.
9803 (__arm_vreinterpretq_u64_s8): Likewise.
9804 (__arm_vreinterpretq_u64_u16): Likewise.
9805 (__arm_vreinterpretq_u64_u32): Likewise.
9806 (__arm_vreinterpretq_u64_u8): Likewise.
9807 (__arm_vreinterpretq_u8_s16): Likewise.
9808 (__arm_vreinterpretq_u8_s32): Likewise.
9809 (__arm_vreinterpretq_u8_s64): Likewise.
9810 (__arm_vreinterpretq_u8_s8): Likewise.
9811 (__arm_vreinterpretq_u8_u16): Likewise.
9812 (__arm_vreinterpretq_u8_u32): Likewise.
9813 (__arm_vreinterpretq_u8_u64): Likewise.
9814 (__arm_vreinterpretq_s32_f16): Likewise.
9815 (__arm_vreinterpretq_s32_f32): Likewise.
9816 (__arm_vreinterpretq_s16_f16): Likewise.
9817 (__arm_vreinterpretq_s16_f32): Likewise.
9818 (__arm_vreinterpretq_s64_f16): Likewise.
9819 (__arm_vreinterpretq_s64_f32): Likewise.
9820 (__arm_vreinterpretq_s8_f16): Likewise.
9821 (__arm_vreinterpretq_s8_f32): Likewise.
9822 (__arm_vreinterpretq_u16_f16): Likewise.
9823 (__arm_vreinterpretq_u16_f32): Likewise.
9824 (__arm_vreinterpretq_u32_f16): Likewise.
9825 (__arm_vreinterpretq_u32_f32): Likewise.
9826 (__arm_vreinterpretq_u64_f16): Likewise.
9827 (__arm_vreinterpretq_u64_f32): Likewise.
9828 (__arm_vreinterpretq_u8_f16): Likewise.
9829 (__arm_vreinterpretq_u8_f32): Likewise.
9830 (__arm_vreinterpretq_f16_f32): Likewise.
9831 (__arm_vreinterpretq_f16_s16): Likewise.
9832 (__arm_vreinterpretq_f16_s32): Likewise.
9833 (__arm_vreinterpretq_f16_s64): Likewise.
9834 (__arm_vreinterpretq_f16_s8): Likewise.
9835 (__arm_vreinterpretq_f16_u16): Likewise.
9836 (__arm_vreinterpretq_f16_u32): Likewise.
9837 (__arm_vreinterpretq_f16_u64): Likewise.
9838 (__arm_vreinterpretq_f16_u8): Likewise.
9839 (__arm_vreinterpretq_f32_f16): Likewise.
9840 (__arm_vreinterpretq_f32_s16): Likewise.
9841 (__arm_vreinterpretq_f32_s32): Likewise.
9842 (__arm_vreinterpretq_f32_s64): Likewise.
9843 (__arm_vreinterpretq_f32_s8): Likewise.
9844 (__arm_vreinterpretq_f32_u16): Likewise.
9845 (__arm_vreinterpretq_f32_u32): Likewise.
9846 (__arm_vreinterpretq_f32_u64): Likewise.
9847 (__arm_vreinterpretq_f32_u8): Likewise.
9848 (__arm_vreinterpretq_s16): Likewise.
9849 (__arm_vreinterpretq_s32): Likewise.
9850 (__arm_vreinterpretq_s64): Likewise.
9851 (__arm_vreinterpretq_s8): Likewise.
9852 (__arm_vreinterpretq_u16): Likewise.
9853 (__arm_vreinterpretq_u32): Likewise.
9854 (__arm_vreinterpretq_u64): Likewise.
9855 (__arm_vreinterpretq_u8): Likewise.
9856 (__arm_vreinterpretq_f16): Likewise.
9857 (__arm_vreinterpretq_f32): Likewise.
9858 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
9859 * config/arm/unspecs.md: (REINTERPRET): New unspec.
9860
9861 2023-05-03 Murray Steele <murray.steele@arm.com>
9862 Christophe Lyon <christophe.lyon@arm.com>
9863 Christophe Lyon <christophe.lyon@arm.com
9864
9865 * config.gcc: Add arm-mve-builtins-base.o and
9866 arm-mve-builtins-shapes.o to extra_objs.
9867 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
9868 numberspace.
9869 (arm_expand_builtin): Likewise
9870 (arm_check_builtin_call): Likewise
9871 (arm_describe_resolver): Likewise.
9872 * config/arm/arm-builtins.h (enum resolver_ident): Add
9873 arm_mve_resolver.
9874 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
9875 (arm_resolve_overloaded_builtin): Handle MVE builtins.
9876 (arm_register_target_pragmas): Register arm_check_builtin_call.
9877 * config/arm/arm-mve-builtins.cc (class registered_function): New
9878 class.
9879 (struct registered_function_hasher): New struct.
9880 (pred_suffixes): New table.
9881 (mode_suffixes): New table.
9882 (type_suffix_info): New table.
9883 (TYPES_float16): New.
9884 (TYPES_all_float): New.
9885 (TYPES_integer_8): New.
9886 (TYPES_integer_8_16): New.
9887 (TYPES_integer_16_32): New.
9888 (TYPES_integer_32): New.
9889 (TYPES_signed_16_32): New.
9890 (TYPES_signed_32): New.
9891 (TYPES_all_signed): New.
9892 (TYPES_all_unsigned): New.
9893 (TYPES_all_integer): New.
9894 (TYPES_all_integer_with_64): New.
9895 (DEF_VECTOR_TYPE): New.
9896 (DEF_DOUBLE_TYPE): New.
9897 (DEF_MVE_TYPES_ARRAY): New.
9898 (all_integer): New.
9899 (all_integer_with_64): New.
9900 (float16): New.
9901 (all_float): New.
9902 (all_signed): New.
9903 (all_unsigned): New.
9904 (integer_8): New.
9905 (integer_8_16): New.
9906 (integer_16_32): New.
9907 (integer_32): New.
9908 (signed_16_32): New.
9909 (signed_32): New.
9910 (register_vector_type): Use void_type_node for mve.fp-only types when
9911 mve.fp is not enabled.
9912 (register_builtin_tuple_types): Likewise.
9913 (handle_arm_mve_h): New function..
9914 (matches_type_p): Likewise..
9915 (report_out_of_range): Likewise.
9916 (report_not_enum): Likewise.
9917 (report_missing_float): Likewise.
9918 (report_non_ice): Likewise.
9919 (check_requires_float): Likewise.
9920 (function_instance::hash): Likewise
9921 (function_instance::call_properties): Likewise.
9922 (function_instance::reads_global_state_p): Likewise.
9923 (function_instance::modifies_global_state_p): Likewise.
9924 (function_instance::could_trap_p): Likewise.
9925 (function_instance::has_inactive_argument): Likewise.
9926 (registered_function_hasher::hash): Likewise.
9927 (registered_function_hasher::equal): Likewise.
9928 (function_builder::function_builder): Likewise.
9929 (function_builder::~function_builder): Likewise.
9930 (function_builder::append_name): Likewise.
9931 (function_builder::finish_name): Likewise.
9932 (function_builder::get_name): Likewise.
9933 (add_attribute): Likewise.
9934 (function_builder::get_attributes): Likewise.
9935 (function_builder::add_function): Likewise.
9936 (function_builder::add_unique_function): Likewise.
9937 (function_builder::add_overloaded_function): Likewise.
9938 (function_builder::add_overloaded_functions): Likewise.
9939 (function_builder::register_function_group): Likewise.
9940 (function_call_info::function_call_info): Likewise.
9941 (function_resolver::function_resolver): Likewise.
9942 (function_resolver::get_vector_type): Likewise.
9943 (function_resolver::get_scalar_type_name): Likewise.
9944 (function_resolver::get_argument_type): Likewise.
9945 (function_resolver::scalar_argument_p): Likewise.
9946 (function_resolver::report_no_such_form): Likewise.
9947 (function_resolver::lookup_form): Likewise.
9948 (function_resolver::resolve_to): Likewise.
9949 (function_resolver::infer_vector_or_tuple_type): Likewise.
9950 (function_resolver::infer_vector_type): Likewise.
9951 (function_resolver::require_vector_or_scalar_type): Likewise.
9952 (function_resolver::require_vector_type): Likewise.
9953 (function_resolver::require_matching_vector_type): Likewise.
9954 (function_resolver::require_derived_vector_type): Likewise.
9955 (function_resolver::require_derived_scalar_type): Likewise.
9956 (function_resolver::require_integer_immediate): Likewise.
9957 (function_resolver::require_scalar_type): Likewise.
9958 (function_resolver::check_num_arguments): Likewise.
9959 (function_resolver::check_gp_argument): Likewise.
9960 (function_resolver::finish_opt_n_resolution): Likewise.
9961 (function_resolver::resolve_unary): Likewise.
9962 (function_resolver::resolve_unary_n): Likewise.
9963 (function_resolver::resolve_uniform): Likewise.
9964 (function_resolver::resolve_uniform_opt_n): Likewise.
9965 (function_resolver::resolve): Likewise.
9966 (function_checker::function_checker): Likewise.
9967 (function_checker::argument_exists_p): Likewise.
9968 (function_checker::require_immediate): Likewise.
9969 (function_checker::require_immediate_enum): Likewise.
9970 (function_checker::require_immediate_range): Likewise.
9971 (function_checker::check): Likewise.
9972 (gimple_folder::gimple_folder): Likewise.
9973 (gimple_folder::fold): Likewise.
9974 (function_expander::function_expander): Likewise.
9975 (function_expander::direct_optab_handler): Likewise.
9976 (function_expander::get_fallback_value): Likewise.
9977 (function_expander::get_reg_target): Likewise.
9978 (function_expander::add_output_operand): Likewise.
9979 (function_expander::add_input_operand): Likewise.
9980 (function_expander::add_integer_operand): Likewise.
9981 (function_expander::generate_insn): Likewise.
9982 (function_expander::use_exact_insn): Likewise.
9983 (function_expander::use_unpred_insn): Likewise.
9984 (function_expander::use_pred_x_insn): Likewise.
9985 (function_expander::use_cond_insn): Likewise.
9986 (function_expander::map_to_rtx_codes): Likewise.
9987 (function_expander::expand): Likewise.
9988 (resolve_overloaded_builtin): Likewise.
9989 (check_builtin_call): Likewise.
9990 (gimple_fold_builtin): Likewise.
9991 (expand_builtin): Likewise.
9992 (gt_ggc_mx): Likewise.
9993 (gt_pch_nx): Likewise.
9994 (gt_pch_nx): Likewise.
9995 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
9996 (s16): Likewise.
9997 (s32): Likewise.
9998 (s64): Likewise.
9999 (u8): Likewise.
10000 (u16): Likewise.
10001 (u32): Likewise.
10002 (u64): Likewise.
10003 (f16): Likewise.
10004 (f32): Likewise.
10005 (n): New mode.
10006 (offset): New mode.
10007 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
10008 (CP_READ_FPCR): Likewise.
10009 (CP_RAISE_FP_EXCEPTIONS): Likewise.
10010 (CP_READ_MEMORY): Likewise.
10011 (CP_WRITE_MEMORY): Likewise.
10012 (enum units_index): New enum.
10013 (enum predication_index): New.
10014 (enum type_class_index): New.
10015 (enum mode_suffix_index): New enum.
10016 (enum type_suffix_index): New.
10017 (struct mode_suffix_info): New struct.
10018 (struct type_suffix_info): New.
10019 (struct function_group_info): Likewise.
10020 (class function_instance): Likewise.
10021 (class registered_function): Likewise.
10022 (class function_builder): Likewise.
10023 (class function_call_info): Likewise.
10024 (class function_resolver): Likewise.
10025 (class function_checker): Likewise.
10026 (class gimple_folder): Likewise.
10027 (class function_expander): Likewise.
10028 (get_mve_pred16_t): Likewise.
10029 (find_mode_suffix): New function.
10030 (class function_base): Likewise.
10031 (class function_shape): Likewise.
10032 (function_instance::operator==): New function.
10033 (function_instance::operator!=): Likewise.
10034 (function_instance::vectors_per_tuple): Likewise.
10035 (function_instance::mode_suffix): Likewise.
10036 (function_instance::type_suffix): Likewise.
10037 (function_instance::scalar_type): Likewise.
10038 (function_instance::vector_type): Likewise.
10039 (function_instance::tuple_type): Likewise.
10040 (function_instance::vector_mode): Likewise.
10041 (function_call_info::function_returns_void_p): Likewise.
10042 (function_base::call_properties): Likewise.
10043 * config/arm/arm-protos.h (enum arm_builtin_class): Add
10044 ARM_BUILTIN_MVE.
10045 (handle_arm_mve_h): New.
10046 (resolve_overloaded_builtin): New.
10047 (check_builtin_call): New.
10048 (gimple_fold_builtin): New.
10049 (expand_builtin): New.
10050 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
10051 arm_gimple_fold_builtin.
10052 (arm_gimple_fold_builtin): New function.
10053 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
10054 * config/arm/predicates.md (arm_any_register_operand): New predicate.
10055 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
10056 (arm-mve-builtins-shapes.o): New target.
10057 (arm-mve-builtins-base.o): New target.
10058 * config/arm/arm-mve-builtins-base.cc: New file.
10059 * config/arm/arm-mve-builtins-base.def: New file.
10060 * config/arm/arm-mve-builtins-base.h: New file.
10061 * config/arm/arm-mve-builtins-functions.h: New file.
10062 * config/arm/arm-mve-builtins-shapes.cc: New file.
10063 * config/arm/arm-mve-builtins-shapes.h: New file.
10064
10065 2023-05-03 Murray Steele <murray.steele@arm.com>
10066 Christophe Lyon <christophe.lyon@arm.com>
10067 Christophe Lyon <christophe.lyon@arm.com>
10068
10069 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
10070 New function.
10071 (arm_init_builtin): Use arm_general_add_builtin_function instead
10072 of arm_add_builtin_function.
10073 (arm_init_acle_builtins): Likewise.
10074 (arm_init_mve_builtins): Likewise.
10075 (arm_init_crypto_builtins): Likewise.
10076 (arm_init_builtins): Likewise.
10077 (arm_general_builtin_decl): New function.
10078 (arm_builtin_decl): Defer to numberspace-specialized functions.
10079 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
10080 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
10081 (arm_general_expand_builtin_1): ... specialize for general builtins.
10082 (arm_expand_acle_builtin): Use arm_general_expand_builtin
10083 instead of arm_expand_builtin.
10084 (arm_expand_mve_builtin): Likewise.
10085 (arm_expand_neon_builtin): Likewise.
10086 (arm_expand_vfp_builtin): Likewise.
10087 (arm_general_expand_builtin): New function.
10088 (arm_expand_builtin): Specialize for general builtins.
10089 (arm_general_check_builtin_call): New function.
10090 (arm_check_builtin_call): Specialize for general builtins.
10091 (arm_describe_resolver): Validate numberspace.
10092 (arm_cde_end_args): Likewise.
10093 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
10094 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
10095
10096 2023-05-03 Martin Liska <mliska@suse.cz>
10097
10098 PR target/109713
10099 * config/riscv/sync.md: Add gcc_unreachable to a switch.
10100
10101 2023-05-03 Richard Biener <rguenther@suse.de>
10102
10103 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
10104 (patch_loop_exit): Likewise.
10105 (connect_loops): Likewise.
10106 (split_loop): Likewise.
10107 (control_dep_semi_invariant_p): Likewise.
10108 (do_split_loop_on_cond): Likewise.
10109 (split_loop_on_cond): Likewise.
10110 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
10111 Likewise.
10112 (simplify_loop_version): Likewise.
10113 (evaluate_bbs): Likewise.
10114 (find_loop_guard): Likewise.
10115 (clean_up_after_unswitching): Likewise.
10116 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
10117 Likewise.
10118 (optimize_spaceship): Take a gcond * argument, avoid
10119 last_stmt.
10120 (math_opts_dom_walker::after_dom_children): Adjust call to
10121 optimize_spaceship.
10122 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
10123 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
10124 Likewise.
10125
10126 2023-05-03 Andreas Schwab <schwab@suse.de>
10127
10128 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
10129
10130 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10131
10132 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
10133 New function.
10134 (class vlseg): New class.
10135 (class vsseg): Ditto.
10136 (class vlsseg): Ditto.
10137 (class vssseg): Ditto.
10138 (class seg_indexed_load): Ditto.
10139 (class seg_indexed_store): Ditto.
10140 (class vlsegff): Ditto.
10141 (BASE): Ditto.
10142 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10143 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
10144 Ditto.
10145 (vsseg): Ditto.
10146 (vlsseg): Ditto.
10147 (vssseg): Ditto.
10148 (vluxseg): Ditto.
10149 (vloxseg): Ditto.
10150 (vsuxseg): Ditto.
10151 (vsoxseg): Ditto.
10152 (vlsegff): Ditto.
10153 * config/riscv/riscv-vector-builtins-shapes.cc (struct
10154 seg_loadstore_def): Ditto.
10155 (struct seg_indexed_loadstore_def): Ditto.
10156 (struct seg_fault_load_def): Ditto.
10157 (SHAPE): Ditto.
10158 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
10159 * config/riscv/riscv-vector-builtins.cc
10160 (function_builder::append_nf): New function.
10161 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
10162 Change ptr from double into float.
10163 (vfloat32m1x3_t): Ditto.
10164 (vfloat32m1x4_t): Ditto.
10165 (vfloat32m1x5_t): Ditto.
10166 (vfloat32m1x6_t): Ditto.
10167 (vfloat32m1x7_t): Ditto.
10168 (vfloat32m1x8_t): Ditto.
10169 (vfloat32m2x2_t): Ditto.
10170 (vfloat32m2x3_t): Ditto.
10171 (vfloat32m2x4_t): Ditto.
10172 (vfloat32m4x2_t): Ditto.
10173 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
10174 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
10175 segment ff load.
10176 * config/riscv/riscv.md: Add segment instructions.
10177 * config/riscv/vector-iterators.md: Support segment intrinsics.
10178 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
10179 pattern.
10180 (@pred_unit_strided_store<mode>): Ditto.
10181 (@pred_strided_load<mode>): Ditto.
10182 (@pred_strided_store<mode>): Ditto.
10183 (@pred_fault_load<mode>): Ditto.
10184 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
10185 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
10186 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
10187 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
10188 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
10189 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
10190 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
10191 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
10192 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
10193 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
10194 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
10195 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
10196 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
10197 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
10198
10199 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10200
10201 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
10202 tuple type support.
10203 (inttype): Ditto.
10204 (floattype): Ditto.
10205 (main): Ditto.
10206 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
10207 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
10208 tuple type vset.
10209 (vget): Add tuple type vget.
10210 * config/riscv/riscv-vector-builtins-types.def
10211 (DEF_RVV_TUPLE_OPS): New macro.
10212 (vint8mf8x2_t): Ditto.
10213 (vuint8mf8x2_t): Ditto.
10214 (vint8mf8x3_t): Ditto.
10215 (vuint8mf8x3_t): Ditto.
10216 (vint8mf8x4_t): Ditto.
10217 (vuint8mf8x4_t): Ditto.
10218 (vint8mf8x5_t): Ditto.
10219 (vuint8mf8x5_t): Ditto.
10220 (vint8mf8x6_t): Ditto.
10221 (vuint8mf8x6_t): Ditto.
10222 (vint8mf8x7_t): Ditto.
10223 (vuint8mf8x7_t): Ditto.
10224 (vint8mf8x8_t): Ditto.
10225 (vuint8mf8x8_t): Ditto.
10226 (vint8mf4x2_t): Ditto.
10227 (vuint8mf4x2_t): Ditto.
10228 (vint8mf4x3_t): Ditto.
10229 (vuint8mf4x3_t): Ditto.
10230 (vint8mf4x4_t): Ditto.
10231 (vuint8mf4x4_t): Ditto.
10232 (vint8mf4x5_t): Ditto.
10233 (vuint8mf4x5_t): Ditto.
10234 (vint8mf4x6_t): Ditto.
10235 (vuint8mf4x6_t): Ditto.
10236 (vint8mf4x7_t): Ditto.
10237 (vuint8mf4x7_t): Ditto.
10238 (vint8mf4x8_t): Ditto.
10239 (vuint8mf4x8_t): Ditto.
10240 (vint8mf2x2_t): Ditto.
10241 (vuint8mf2x2_t): Ditto.
10242 (vint8mf2x3_t): Ditto.
10243 (vuint8mf2x3_t): Ditto.
10244 (vint8mf2x4_t): Ditto.
10245 (vuint8mf2x4_t): Ditto.
10246 (vint8mf2x5_t): Ditto.
10247 (vuint8mf2x5_t): Ditto.
10248 (vint8mf2x6_t): Ditto.
10249 (vuint8mf2x6_t): Ditto.
10250 (vint8mf2x7_t): Ditto.
10251 (vuint8mf2x7_t): Ditto.
10252 (vint8mf2x8_t): Ditto.
10253 (vuint8mf2x8_t): Ditto.
10254 (vint8m1x2_t): Ditto.
10255 (vuint8m1x2_t): Ditto.
10256 (vint8m1x3_t): Ditto.
10257 (vuint8m1x3_t): Ditto.
10258 (vint8m1x4_t): Ditto.
10259 (vuint8m1x4_t): Ditto.
10260 (vint8m1x5_t): Ditto.
10261 (vuint8m1x5_t): Ditto.
10262 (vint8m1x6_t): Ditto.
10263 (vuint8m1x6_t): Ditto.
10264 (vint8m1x7_t): Ditto.
10265 (vuint8m1x7_t): Ditto.
10266 (vint8m1x8_t): Ditto.
10267 (vuint8m1x8_t): Ditto.
10268 (vint8m2x2_t): Ditto.
10269 (vuint8m2x2_t): Ditto.
10270 (vint8m2x3_t): Ditto.
10271 (vuint8m2x3_t): Ditto.
10272 (vint8m2x4_t): Ditto.
10273 (vuint8m2x4_t): Ditto.
10274 (vint8m4x2_t): Ditto.
10275 (vuint8m4x2_t): Ditto.
10276 (vint16mf4x2_t): Ditto.
10277 (vuint16mf4x2_t): Ditto.
10278 (vint16mf4x3_t): Ditto.
10279 (vuint16mf4x3_t): Ditto.
10280 (vint16mf4x4_t): Ditto.
10281 (vuint16mf4x4_t): Ditto.
10282 (vint16mf4x5_t): Ditto.
10283 (vuint16mf4x5_t): Ditto.
10284 (vint16mf4x6_t): Ditto.
10285 (vuint16mf4x6_t): Ditto.
10286 (vint16mf4x7_t): Ditto.
10287 (vuint16mf4x7_t): Ditto.
10288 (vint16mf4x8_t): Ditto.
10289 (vuint16mf4x8_t): Ditto.
10290 (vint16mf2x2_t): Ditto.
10291 (vuint16mf2x2_t): Ditto.
10292 (vint16mf2x3_t): Ditto.
10293 (vuint16mf2x3_t): Ditto.
10294 (vint16mf2x4_t): Ditto.
10295 (vuint16mf2x4_t): Ditto.
10296 (vint16mf2x5_t): Ditto.
10297 (vuint16mf2x5_t): Ditto.
10298 (vint16mf2x6_t): Ditto.
10299 (vuint16mf2x6_t): Ditto.
10300 (vint16mf2x7_t): Ditto.
10301 (vuint16mf2x7_t): Ditto.
10302 (vint16mf2x8_t): Ditto.
10303 (vuint16mf2x8_t): Ditto.
10304 (vint16m1x2_t): Ditto.
10305 (vuint16m1x2_t): Ditto.
10306 (vint16m1x3_t): Ditto.
10307 (vuint16m1x3_t): Ditto.
10308 (vint16m1x4_t): Ditto.
10309 (vuint16m1x4_t): Ditto.
10310 (vint16m1x5_t): Ditto.
10311 (vuint16m1x5_t): Ditto.
10312 (vint16m1x6_t): Ditto.
10313 (vuint16m1x6_t): Ditto.
10314 (vint16m1x7_t): Ditto.
10315 (vuint16m1x7_t): Ditto.
10316 (vint16m1x8_t): Ditto.
10317 (vuint16m1x8_t): Ditto.
10318 (vint16m2x2_t): Ditto.
10319 (vuint16m2x2_t): Ditto.
10320 (vint16m2x3_t): Ditto.
10321 (vuint16m2x3_t): Ditto.
10322 (vint16m2x4_t): Ditto.
10323 (vuint16m2x4_t): Ditto.
10324 (vint16m4x2_t): Ditto.
10325 (vuint16m4x2_t): Ditto.
10326 (vint32mf2x2_t): Ditto.
10327 (vuint32mf2x2_t): Ditto.
10328 (vint32mf2x3_t): Ditto.
10329 (vuint32mf2x3_t): Ditto.
10330 (vint32mf2x4_t): Ditto.
10331 (vuint32mf2x4_t): Ditto.
10332 (vint32mf2x5_t): Ditto.
10333 (vuint32mf2x5_t): Ditto.
10334 (vint32mf2x6_t): Ditto.
10335 (vuint32mf2x6_t): Ditto.
10336 (vint32mf2x7_t): Ditto.
10337 (vuint32mf2x7_t): Ditto.
10338 (vint32mf2x8_t): Ditto.
10339 (vuint32mf2x8_t): Ditto.
10340 (vint32m1x2_t): Ditto.
10341 (vuint32m1x2_t): Ditto.
10342 (vint32m1x3_t): Ditto.
10343 (vuint32m1x3_t): Ditto.
10344 (vint32m1x4_t): Ditto.
10345 (vuint32m1x4_t): Ditto.
10346 (vint32m1x5_t): Ditto.
10347 (vuint32m1x5_t): Ditto.
10348 (vint32m1x6_t): Ditto.
10349 (vuint32m1x6_t): Ditto.
10350 (vint32m1x7_t): Ditto.
10351 (vuint32m1x7_t): Ditto.
10352 (vint32m1x8_t): Ditto.
10353 (vuint32m1x8_t): Ditto.
10354 (vint32m2x2_t): Ditto.
10355 (vuint32m2x2_t): Ditto.
10356 (vint32m2x3_t): Ditto.
10357 (vuint32m2x3_t): Ditto.
10358 (vint32m2x4_t): Ditto.
10359 (vuint32m2x4_t): Ditto.
10360 (vint32m4x2_t): Ditto.
10361 (vuint32m4x2_t): Ditto.
10362 (vint64m1x2_t): Ditto.
10363 (vuint64m1x2_t): Ditto.
10364 (vint64m1x3_t): Ditto.
10365 (vuint64m1x3_t): Ditto.
10366 (vint64m1x4_t): Ditto.
10367 (vuint64m1x4_t): Ditto.
10368 (vint64m1x5_t): Ditto.
10369 (vuint64m1x5_t): Ditto.
10370 (vint64m1x6_t): Ditto.
10371 (vuint64m1x6_t): Ditto.
10372 (vint64m1x7_t): Ditto.
10373 (vuint64m1x7_t): Ditto.
10374 (vint64m1x8_t): Ditto.
10375 (vuint64m1x8_t): Ditto.
10376 (vint64m2x2_t): Ditto.
10377 (vuint64m2x2_t): Ditto.
10378 (vint64m2x3_t): Ditto.
10379 (vuint64m2x3_t): Ditto.
10380 (vint64m2x4_t): Ditto.
10381 (vuint64m2x4_t): Ditto.
10382 (vint64m4x2_t): Ditto.
10383 (vuint64m4x2_t): Ditto.
10384 (vfloat32mf2x2_t): Ditto.
10385 (vfloat32mf2x3_t): Ditto.
10386 (vfloat32mf2x4_t): Ditto.
10387 (vfloat32mf2x5_t): Ditto.
10388 (vfloat32mf2x6_t): Ditto.
10389 (vfloat32mf2x7_t): Ditto.
10390 (vfloat32mf2x8_t): Ditto.
10391 (vfloat32m1x2_t): Ditto.
10392 (vfloat32m1x3_t): Ditto.
10393 (vfloat32m1x4_t): Ditto.
10394 (vfloat32m1x5_t): Ditto.
10395 (vfloat32m1x6_t): Ditto.
10396 (vfloat32m1x7_t): Ditto.
10397 (vfloat32m1x8_t): Ditto.
10398 (vfloat32m2x2_t): Ditto.
10399 (vfloat32m2x3_t): Ditto.
10400 (vfloat32m2x4_t): Ditto.
10401 (vfloat32m4x2_t): Ditto.
10402 (vfloat64m1x2_t): Ditto.
10403 (vfloat64m1x3_t): Ditto.
10404 (vfloat64m1x4_t): Ditto.
10405 (vfloat64m1x5_t): Ditto.
10406 (vfloat64m1x6_t): Ditto.
10407 (vfloat64m1x7_t): Ditto.
10408 (vfloat64m1x8_t): Ditto.
10409 (vfloat64m2x2_t): Ditto.
10410 (vfloat64m2x3_t): Ditto.
10411 (vfloat64m2x4_t): Ditto.
10412 (vfloat64m4x2_t): Ditto.
10413 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
10414 Ditto.
10415 (DEF_RVV_TYPE_INDEX): Ditto.
10416 (rvv_arg_type_info::get_tuple_subpart_type): New function.
10417 (DEF_RVV_TUPLE_TYPE): New macro.
10418 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
10419 Adapt for tuple vget/vset support.
10420 (vint8mf4_t): Ditto.
10421 (vuint8mf4_t): Ditto.
10422 (vint8mf2_t): Ditto.
10423 (vuint8mf2_t): Ditto.
10424 (vint8m1_t): Ditto.
10425 (vuint8m1_t): Ditto.
10426 (vint8m2_t): Ditto.
10427 (vuint8m2_t): Ditto.
10428 (vint8m4_t): Ditto.
10429 (vuint8m4_t): Ditto.
10430 (vint8m8_t): Ditto.
10431 (vuint8m8_t): Ditto.
10432 (vint16mf4_t): Ditto.
10433 (vuint16mf4_t): Ditto.
10434 (vint16mf2_t): Ditto.
10435 (vuint16mf2_t): Ditto.
10436 (vint16m1_t): Ditto.
10437 (vuint16m1_t): Ditto.
10438 (vint16m2_t): Ditto.
10439 (vuint16m2_t): Ditto.
10440 (vint16m4_t): Ditto.
10441 (vuint16m4_t): Ditto.
10442 (vint16m8_t): Ditto.
10443 (vuint16m8_t): Ditto.
10444 (vint32mf2_t): Ditto.
10445 (vuint32mf2_t): Ditto.
10446 (vint32m1_t): Ditto.
10447 (vuint32m1_t): Ditto.
10448 (vint32m2_t): Ditto.
10449 (vuint32m2_t): Ditto.
10450 (vint32m4_t): Ditto.
10451 (vuint32m4_t): Ditto.
10452 (vint32m8_t): Ditto.
10453 (vuint32m8_t): Ditto.
10454 (vint64m1_t): Ditto.
10455 (vuint64m1_t): Ditto.
10456 (vint64m2_t): Ditto.
10457 (vuint64m2_t): Ditto.
10458 (vint64m4_t): Ditto.
10459 (vuint64m4_t): Ditto.
10460 (vint64m8_t): Ditto.
10461 (vuint64m8_t): Ditto.
10462 (vfloat32mf2_t): Ditto.
10463 (vfloat32m1_t): Ditto.
10464 (vfloat32m2_t): Ditto.
10465 (vfloat32m4_t): Ditto.
10466 (vfloat32m8_t): Ditto.
10467 (vfloat64m1_t): Ditto.
10468 (vfloat64m2_t): Ditto.
10469 (vfloat64m4_t): Ditto.
10470 (vfloat64m8_t): Ditto.
10471 (tuple_subpart): Add tuple subpart base type.
10472 * config/riscv/riscv-vector-builtins.h (struct
10473 rvv_arg_type_info): Ditto.
10474 (tuple_type_field): New function.
10475
10476 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10477
10478 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
10479 (RVV_TUPLE_PARTIAL_MODES): Ditto.
10480 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
10481 function.
10482 (get_nf): Ditto.
10483 (get_subpart_mode): Ditto.
10484 (get_tuple_mode): Ditto.
10485 (expand_tuple_move): Ditto.
10486 * config/riscv/riscv-v.cc (ENTRY): New macro.
10487 (TUPLE_ENTRY): Ditto.
10488 (get_nf): New function.
10489 (get_subpart_mode): Ditto.
10490 (get_tuple_mode): Ditto.
10491 (expand_tuple_move): Ditto.
10492 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
10493 New macro.
10494 (register_tuple_type): New function
10495 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
10496 New macro.
10497 (vint8mf8x2_t): New macro.
10498 (vuint8mf8x2_t): Ditto.
10499 (vint8mf8x3_t): Ditto.
10500 (vuint8mf8x3_t): Ditto.
10501 (vint8mf8x4_t): Ditto.
10502 (vuint8mf8x4_t): Ditto.
10503 (vint8mf8x5_t): Ditto.
10504 (vuint8mf8x5_t): Ditto.
10505 (vint8mf8x6_t): Ditto.
10506 (vuint8mf8x6_t): Ditto.
10507 (vint8mf8x7_t): Ditto.
10508 (vuint8mf8x7_t): Ditto.
10509 (vint8mf8x8_t): Ditto.
10510 (vuint8mf8x8_t): Ditto.
10511 (vint8mf4x2_t): Ditto.
10512 (vuint8mf4x2_t): Ditto.
10513 (vint8mf4x3_t): Ditto.
10514 (vuint8mf4x3_t): Ditto.
10515 (vint8mf4x4_t): Ditto.
10516 (vuint8mf4x4_t): Ditto.
10517 (vint8mf4x5_t): Ditto.
10518 (vuint8mf4x5_t): Ditto.
10519 (vint8mf4x6_t): Ditto.
10520 (vuint8mf4x6_t): Ditto.
10521 (vint8mf4x7_t): Ditto.
10522 (vuint8mf4x7_t): Ditto.
10523 (vint8mf4x8_t): Ditto.
10524 (vuint8mf4x8_t): Ditto.
10525 (vint8mf2x2_t): Ditto.
10526 (vuint8mf2x2_t): Ditto.
10527 (vint8mf2x3_t): Ditto.
10528 (vuint8mf2x3_t): Ditto.
10529 (vint8mf2x4_t): Ditto.
10530 (vuint8mf2x4_t): Ditto.
10531 (vint8mf2x5_t): Ditto.
10532 (vuint8mf2x5_t): Ditto.
10533 (vint8mf2x6_t): Ditto.
10534 (vuint8mf2x6_t): Ditto.
10535 (vint8mf2x7_t): Ditto.
10536 (vuint8mf2x7_t): Ditto.
10537 (vint8mf2x8_t): Ditto.
10538 (vuint8mf2x8_t): Ditto.
10539 (vint8m1x2_t): Ditto.
10540 (vuint8m1x2_t): Ditto.
10541 (vint8m1x3_t): Ditto.
10542 (vuint8m1x3_t): Ditto.
10543 (vint8m1x4_t): Ditto.
10544 (vuint8m1x4_t): Ditto.
10545 (vint8m1x5_t): Ditto.
10546 (vuint8m1x5_t): Ditto.
10547 (vint8m1x6_t): Ditto.
10548 (vuint8m1x6_t): Ditto.
10549 (vint8m1x7_t): Ditto.
10550 (vuint8m1x7_t): Ditto.
10551 (vint8m1x8_t): Ditto.
10552 (vuint8m1x8_t): Ditto.
10553 (vint8m2x2_t): Ditto.
10554 (vuint8m2x2_t): Ditto.
10555 (vint8m2x3_t): Ditto.
10556 (vuint8m2x3_t): Ditto.
10557 (vint8m2x4_t): Ditto.
10558 (vuint8m2x4_t): Ditto.
10559 (vint8m4x2_t): Ditto.
10560 (vuint8m4x2_t): Ditto.
10561 (vint16mf4x2_t): Ditto.
10562 (vuint16mf4x2_t): Ditto.
10563 (vint16mf4x3_t): Ditto.
10564 (vuint16mf4x3_t): Ditto.
10565 (vint16mf4x4_t): Ditto.
10566 (vuint16mf4x4_t): Ditto.
10567 (vint16mf4x5_t): Ditto.
10568 (vuint16mf4x5_t): Ditto.
10569 (vint16mf4x6_t): Ditto.
10570 (vuint16mf4x6_t): Ditto.
10571 (vint16mf4x7_t): Ditto.
10572 (vuint16mf4x7_t): Ditto.
10573 (vint16mf4x8_t): Ditto.
10574 (vuint16mf4x8_t): Ditto.
10575 (vint16mf2x2_t): Ditto.
10576 (vuint16mf2x2_t): Ditto.
10577 (vint16mf2x3_t): Ditto.
10578 (vuint16mf2x3_t): Ditto.
10579 (vint16mf2x4_t): Ditto.
10580 (vuint16mf2x4_t): Ditto.
10581 (vint16mf2x5_t): Ditto.
10582 (vuint16mf2x5_t): Ditto.
10583 (vint16mf2x6_t): Ditto.
10584 (vuint16mf2x6_t): Ditto.
10585 (vint16mf2x7_t): Ditto.
10586 (vuint16mf2x7_t): Ditto.
10587 (vint16mf2x8_t): Ditto.
10588 (vuint16mf2x8_t): Ditto.
10589 (vint16m1x2_t): Ditto.
10590 (vuint16m1x2_t): Ditto.
10591 (vint16m1x3_t): Ditto.
10592 (vuint16m1x3_t): Ditto.
10593 (vint16m1x4_t): Ditto.
10594 (vuint16m1x4_t): Ditto.
10595 (vint16m1x5_t): Ditto.
10596 (vuint16m1x5_t): Ditto.
10597 (vint16m1x6_t): Ditto.
10598 (vuint16m1x6_t): Ditto.
10599 (vint16m1x7_t): Ditto.
10600 (vuint16m1x7_t): Ditto.
10601 (vint16m1x8_t): Ditto.
10602 (vuint16m1x8_t): Ditto.
10603 (vint16m2x2_t): Ditto.
10604 (vuint16m2x2_t): Ditto.
10605 (vint16m2x3_t): Ditto.
10606 (vuint16m2x3_t): Ditto.
10607 (vint16m2x4_t): Ditto.
10608 (vuint16m2x4_t): Ditto.
10609 (vint16m4x2_t): Ditto.
10610 (vuint16m4x2_t): Ditto.
10611 (vint32mf2x2_t): Ditto.
10612 (vuint32mf2x2_t): Ditto.
10613 (vint32mf2x3_t): Ditto.
10614 (vuint32mf2x3_t): Ditto.
10615 (vint32mf2x4_t): Ditto.
10616 (vuint32mf2x4_t): Ditto.
10617 (vint32mf2x5_t): Ditto.
10618 (vuint32mf2x5_t): Ditto.
10619 (vint32mf2x6_t): Ditto.
10620 (vuint32mf2x6_t): Ditto.
10621 (vint32mf2x7_t): Ditto.
10622 (vuint32mf2x7_t): Ditto.
10623 (vint32mf2x8_t): Ditto.
10624 (vuint32mf2x8_t): Ditto.
10625 (vint32m1x2_t): Ditto.
10626 (vuint32m1x2_t): Ditto.
10627 (vint32m1x3_t): Ditto.
10628 (vuint32m1x3_t): Ditto.
10629 (vint32m1x4_t): Ditto.
10630 (vuint32m1x4_t): Ditto.
10631 (vint32m1x5_t): Ditto.
10632 (vuint32m1x5_t): Ditto.
10633 (vint32m1x6_t): Ditto.
10634 (vuint32m1x6_t): Ditto.
10635 (vint32m1x7_t): Ditto.
10636 (vuint32m1x7_t): Ditto.
10637 (vint32m1x8_t): Ditto.
10638 (vuint32m1x8_t): Ditto.
10639 (vint32m2x2_t): Ditto.
10640 (vuint32m2x2_t): Ditto.
10641 (vint32m2x3_t): Ditto.
10642 (vuint32m2x3_t): Ditto.
10643 (vint32m2x4_t): Ditto.
10644 (vuint32m2x4_t): Ditto.
10645 (vint32m4x2_t): Ditto.
10646 (vuint32m4x2_t): Ditto.
10647 (vint64m1x2_t): Ditto.
10648 (vuint64m1x2_t): Ditto.
10649 (vint64m1x3_t): Ditto.
10650 (vuint64m1x3_t): Ditto.
10651 (vint64m1x4_t): Ditto.
10652 (vuint64m1x4_t): Ditto.
10653 (vint64m1x5_t): Ditto.
10654 (vuint64m1x5_t): Ditto.
10655 (vint64m1x6_t): Ditto.
10656 (vuint64m1x6_t): Ditto.
10657 (vint64m1x7_t): Ditto.
10658 (vuint64m1x7_t): Ditto.
10659 (vint64m1x8_t): Ditto.
10660 (vuint64m1x8_t): Ditto.
10661 (vint64m2x2_t): Ditto.
10662 (vuint64m2x2_t): Ditto.
10663 (vint64m2x3_t): Ditto.
10664 (vuint64m2x3_t): Ditto.
10665 (vint64m2x4_t): Ditto.
10666 (vuint64m2x4_t): Ditto.
10667 (vint64m4x2_t): Ditto.
10668 (vuint64m4x2_t): Ditto.
10669 (vfloat32mf2x2_t): Ditto.
10670 (vfloat32mf2x3_t): Ditto.
10671 (vfloat32mf2x4_t): Ditto.
10672 (vfloat32mf2x5_t): Ditto.
10673 (vfloat32mf2x6_t): Ditto.
10674 (vfloat32mf2x7_t): Ditto.
10675 (vfloat32mf2x8_t): Ditto.
10676 (vfloat32m1x2_t): Ditto.
10677 (vfloat32m1x3_t): Ditto.
10678 (vfloat32m1x4_t): Ditto.
10679 (vfloat32m1x5_t): Ditto.
10680 (vfloat32m1x6_t): Ditto.
10681 (vfloat32m1x7_t): Ditto.
10682 (vfloat32m1x8_t): Ditto.
10683 (vfloat32m2x2_t): Ditto.
10684 (vfloat32m2x3_t): Ditto.
10685 (vfloat32m2x4_t): Ditto.
10686 (vfloat32m4x2_t): Ditto.
10687 (vfloat64m1x2_t): Ditto.
10688 (vfloat64m1x3_t): Ditto.
10689 (vfloat64m1x4_t): Ditto.
10690 (vfloat64m1x5_t): Ditto.
10691 (vfloat64m1x6_t): Ditto.
10692 (vfloat64m1x7_t): Ditto.
10693 (vfloat64m1x8_t): Ditto.
10694 (vfloat64m2x2_t): Ditto.
10695 (vfloat64m2x3_t): Ditto.
10696 (vfloat64m2x4_t): Ditto.
10697 (vfloat64m4x2_t): Ditto.
10698 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
10699 Ditto.
10700 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
10701 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
10702 function.
10703 (TUPLE_ENTRY): Ditto.
10704 (riscv_v_ext_mode_p): New function.
10705 (riscv_v_adjust_nunits): Add tuple mode adjustment.
10706 (riscv_classify_address): Ditto.
10707 (riscv_binary_cost): Ditto.
10708 (riscv_rtx_costs): Ditto.
10709 (riscv_secondary_memory_needed): Ditto.
10710 (riscv_hard_regno_nregs): Ditto.
10711 (riscv_hard_regno_mode_ok): Ditto.
10712 (riscv_vector_mode_supported_p): Ditto.
10713 (riscv_regmode_natural_size): Ditto.
10714 (riscv_array_mode): New function.
10715 (TARGET_ARRAY_MODE): New target hook.
10716 * config/riscv/riscv.md: Add tuple modes.
10717 * config/riscv/vector-iterators.md: Ditto.
10718 * config/riscv/vector.md (mov<mode>): Add tuple modes data
10719 movement.
10720 (*mov<VT:mode>_<P:mode>): Ditto.
10721
10722 2023-05-03 Richard Biener <rguenther@suse.de>
10723
10724 * cse.cc (cse_insn): Track an equivalence to the destination
10725 separately and delay using src_related for it.
10726
10727 2023-05-03 Richard Biener <rguenther@suse.de>
10728
10729 * cse.cc (HASH): Turn into inline function and mix
10730 in another HASH_SHIFT bits.
10731 (SAFE_HASH): Likewise.
10732
10733 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10734
10735 PR target/99195
10736 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
10737 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
10738
10739 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10740
10741 PR target/99195
10742 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
10743 (add<mode>3<vczle><vczbe>): ... This.
10744 (sub<mode>3): Rename to...
10745 (sub<mode>3<vczle><vczbe>): ... This.
10746 (mul<mode>3): Rename to...
10747 (mul<mode>3<vczle><vczbe>): ... This.
10748 (*div<mode>3): Rename to...
10749 (*div<mode>3<vczle><vczbe>): ... This.
10750 (neg<mode>2): Rename to...
10751 (neg<mode>2<vczle><vczbe>): ... This.
10752 (abs<mode>2): Rename to...
10753 (abs<mode>2<vczle><vczbe>): ... This.
10754 (<frint_pattern><mode>2): Rename to...
10755 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
10756 (<fmaxmin><mode>3): Rename to...
10757 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
10758 (*sqrt<mode>2): Rename to...
10759 (*sqrt<mode>2<vczle><vczbe>): ... This.
10760
10761 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
10762
10763 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
10764
10765 2023-05-03 Martin Liska <mliska@suse.cz>
10766
10767 PR tree-optimization/109693
10768 * value-range-storage.cc (vrange_allocator::vrange_allocator):
10769 Remove unused field.
10770 * value-range-storage.h: Likewise.
10771
10772 2023-05-02 Andrew Pinski <apinski@marvell.com>
10773
10774 * tree-ssa-phiopt.cc (move_stmt): New function.
10775 (match_simplify_replacement): Use move_stmt instead
10776 of the inlined version.
10777
10778 2023-05-02 Andrew Pinski <apinski@marvell.com>
10779
10780 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
10781 pattern.
10782
10783 2023-05-02 Andrew Pinski <apinski@marvell.com>
10784
10785 PR tree-optimization/109702
10786 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
10787 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
10788
10789 2023-05-02 Andrew Pinski <apinski@marvell.com>
10790
10791 PR target/109657
10792 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
10793 insn_and_split pattern.
10794
10795 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10796
10797 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
10798 load mapping.
10799
10800 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10801
10802 * config/riscv/sync.md (mem_thread_fence_1): Change fence
10803 depending on the given memory model.
10804
10805 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10806
10807 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
10808 riscv_union_memmodels function to sync.md.
10809 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
10810 get the union of two memmodels in sync.md.
10811 (riscv_print_operand): Add %I and %J flags that output the
10812 optimal LR/SC flag bits for a given memory model.
10813 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
10814 bits on SC op and replace with optimized %I, %J flags.
10815
10816 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10817
10818 * config/riscv/riscv.cc
10819 (riscv_memmodel_needs_amo_release): Change function name.
10820 (riscv_print_operand): Remove unneeded %F case.
10821 * config/riscv/sync.md: Remove unneeded fences.
10822
10823 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10824
10825 PR target/89835
10826 * config/riscv/sync.md (atomic_store<mode>): Use simple store
10827 instruction in combination with fence(s).
10828
10829 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10830
10831 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
10832 of %A to include release bits.
10833
10834 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10835
10836 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
10837 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
10838 pair.
10839
10840 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10841
10842 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
10843 sequentially consistent LR.aqrl/SC.rl pairs.
10844
10845 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
10846
10847 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
10848 sanitize memmodel input with memmodel_base.
10849
10850 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
10851 Pan Li <pan2.li@intel.com>
10852
10853 PR target/109617
10854 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
10855
10856 2023-05-02 Romain Naour <romain.naour@gmail.com>
10857
10858 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
10859 the namespace.
10860
10861 2023-05-02 Martin Liska <mliska@suse.cz>
10862
10863 * doc/invoke.texi: Update documentation based on param.opt file.
10864
10865 2023-05-02 Richard Biener <rguenther@suse.de>
10866
10867 PR tree-optimization/109672
10868 * tree-vect-stmts.cc (vectorizable_operation): For plus,
10869 minus and negate always check the vector mode is word mode.
10870
10871 2023-05-01 Andrew Pinski <apinski@marvell.com>
10872
10873 * tree-ssa-phiopt.cc: Update comment about
10874 how the transformation are implemented.
10875
10876 2023-05-01 Jeff Law <jlaw@ventanamicro>
10877
10878 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
10879
10880 2023-05-01 Jeff Law <jlaw@ventanamicro>
10881
10882 * config/cris/cris.cc (TARGET_LRA_P): Remove.
10883 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
10884 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
10885 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
10886 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
10887 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
10888
10889 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
10890
10891 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
10892 * print-tree.cc (print_decl_identifier): Implement it.
10893 * toplev.cc (output_stack_usage_1): Use it.
10894
10895 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10896
10897 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
10898 friends.
10899
10900 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10901
10902 * value-range.h (irange::set_nonzero): Inline.
10903
10904 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10905
10906 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
10907 precision.
10908 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
10909 invalid_range, as it is an inverse range.
10910 * tree-vrp.cc (find_case_label_range): Avoid trees.
10911 * value-range.cc (irange::irange_set): Delete.
10912 (irange::irange_set_1bit_anti_range): Delete.
10913 (irange::irange_set_anti_range): Delete.
10914 (irange::set): Cleanup.
10915 * value-range.h (class irange): Remove irange_set,
10916 irange_set_anti_range, irange_set_1bit_anti_range.
10917 (irange::set_undefined): Remove set to m_type.
10918
10919 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10920
10921 * range-op.cc (update_known_bitmask): Adjust for irange containing
10922 wide_ints internally.
10923 * tree-ssanames.cc (set_nonzero_bits): Same.
10924 * tree-ssanames.h (set_nonzero_bits): Same.
10925 * value-range-storage.cc (irange_storage::set_irange): Same.
10926 (irange_storage::get_irange): Same.
10927 * value-range.cc (irange::operator=): Same.
10928 (irange::irange_set): Same.
10929 (irange::irange_set_1bit_anti_range): Same.
10930 (irange::irange_set_anti_range): Same.
10931 (irange::set): Same.
10932 (irange::verify_range): Same.
10933 (irange::contains_p): Same.
10934 (irange::irange_single_pair_union): Same.
10935 (irange::union_): Same.
10936 (irange::irange_contains_p): Same.
10937 (irange::intersect): Same.
10938 (irange::invert): Same.
10939 (irange::set_range_from_nonzero_bits): Same.
10940 (irange::set_nonzero_bits): Same.
10941 (mask_to_wi): Same.
10942 (irange::intersect_nonzero_bits): Same.
10943 (irange::union_nonzero_bits): Same.
10944 (gt_ggc_mx): Same.
10945 (gt_pch_nx): Same.
10946 (tree_range): Same.
10947 (range_tests_strict_enum): Same.
10948 (range_tests_misc): Same.
10949 (range_tests_nonzero_bits): Same.
10950 * value-range.h (irange::type): Same.
10951 (irange::varying_compatible_p): Same.
10952 (irange::irange): Same.
10953 (int_range::int_range): Same.
10954 (irange::set_undefined): Same.
10955 (irange::set_varying): Same.
10956 (irange::lower_bound): Same.
10957 (irange::upper_bound): Same.
10958
10959 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10960
10961 * gimple-range-fold.cc (tree_lower_bound): Delete.
10962 (tree_upper_bound): Delete.
10963 (vrp_val_max): Delete.
10964 (vrp_val_min): Delete.
10965 (fold_using_range::range_of_ssa_name_with_loop_info): Call
10966 range_of_var_in_loop.
10967 * vr-values.cc (valid_value_p): Delete.
10968 (fix_overflow): Delete.
10969 (get_scev_info): New.
10970 (bounds_of_var_in_loop): Refactor into...
10971 (induction_variable_may_overflow_p): ...this,
10972 (range_from_loop_direction): ...and this,
10973 (range_of_var_in_loop): ...and this.
10974 * vr-values.h (bounds_of_var_in_loop): Delete.
10975 (range_of_var_in_loop): New.
10976
10977 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
10978
10979 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
10980 irange_val*.
10981 (vrp_val_max): New.
10982 (vrp_val_min): New.
10983 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
10984 * range-op.cc (max_limit): Same.
10985 (min_limit): Same.
10986 (plus_minus_ranges): Same.
10987 (operator_rshift::op1_range): Same.
10988 (operator_cast::inside_domain_p): Same.
10989 * value-range.cc (vrp_val_is_max): Delete.
10990 (vrp_val_is_min): Delete.
10991 (range_tests_misc): Use irange_val_*.
10992 * value-range.h (vrp_val_is_min): Delete.
10993 (vrp_val_is_max): Delete.
10994 (vrp_val_max): Delete.
10995 (irange_val_min): New.
10996 (vrp_val_min): Delete.
10997 (irange_val_max): New.
10998 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
10999
11000 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11001
11002 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
11003 * gimple-fold.cc (size_must_be_zero_p): Same.
11004 * gimple-loop-versioning.cc
11005 (loop_versioning::prune_loop_conditions): Same.
11006 * gimple-range-edge.cc (gcond_edge_range): Same.
11007 (gimple_outgoing_range::calc_switch_ranges): Same.
11008 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
11009 (adjust_realpart_expr): Same.
11010 (fold_using_range::range_of_address): Same.
11011 (fold_using_range::relation_fold_and_or): Same.
11012 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
11013 (range_is_either_true_or_false): Same.
11014 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
11015 (cfn_clz::fold_range): Same.
11016 (cfn_ctz::fold_range): Same.
11017 * gimple-range-tests.cc (class test_expr_eval): Same.
11018 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
11019 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
11020 (propagate_vr_across_jump_function): Same.
11021 (decide_whether_version_node): Same.
11022 * ipa-prop.cc (ipa_get_value_range): Same.
11023 * ipa-prop.h (ipa_range_set_and_normalize): Same.
11024 * range-op.cc (get_shift_range): Same.
11025 (value_range_from_overflowed_bounds): Same.
11026 (value_range_with_overflow): Same.
11027 (create_possibly_reversed_range): Same.
11028 (equal_op1_op2_relation): Same.
11029 (not_equal_op1_op2_relation): Same.
11030 (lt_op1_op2_relation): Same.
11031 (le_op1_op2_relation): Same.
11032 (gt_op1_op2_relation): Same.
11033 (ge_op1_op2_relation): Same.
11034 (operator_mult::op1_range): Same.
11035 (operator_exact_divide::op1_range): Same.
11036 (operator_lshift::op1_range): Same.
11037 (operator_rshift::op1_range): Same.
11038 (operator_cast::op1_range): Same.
11039 (operator_logical_and::fold_range): Same.
11040 (set_nonzero_range_from_mask): Same.
11041 (operator_bitwise_or::op1_range): Same.
11042 (operator_bitwise_xor::op1_range): Same.
11043 (operator_addr_expr::fold_range): Same.
11044 (pointer_plus_operator::wi_fold): Same.
11045 (pointer_or_operator::op1_range): Same.
11046 (INT): Same.
11047 (UINT): Same.
11048 (INT16): Same.
11049 (UINT16): Same.
11050 (SCHAR): Same.
11051 (UCHAR): Same.
11052 (range_op_cast_tests): Same.
11053 (range_op_lshift_tests): Same.
11054 (range_op_rshift_tests): Same.
11055 (range_op_bitwise_and_tests): Same.
11056 (range_relational_tests): Same.
11057 * range.cc (range_zero): Same.
11058 (range_nonzero): Same.
11059 * range.h (range_true): Same.
11060 (range_false): Same.
11061 (range_true_and_false): Same.
11062 * tree-data-ref.cc (split_constant_offset_1): Same.
11063 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
11064 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
11065 (find_unswitching_predicates_for_bb): Same.
11066 * tree-ssa-phiopt.cc (value_replacement): Same.
11067 * tree-ssa-threadbackward.cc
11068 (back_threader::find_taken_edge_cond): Same.
11069 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
11070 * tree-vrp.cc (find_case_label_range): Same.
11071 * value-query.cc (range_query::get_tree_range): Same.
11072 * value-range.cc (irange::set_nonnegative): Same.
11073 (frange::contains_p): Same.
11074 (frange::singleton_p): Same.
11075 (frange::internal_singleton_p): Same.
11076 (irange::irange_set): Same.
11077 (irange::irange_set_1bit_anti_range): Same.
11078 (irange::irange_set_anti_range): Same.
11079 (irange::set): Same.
11080 (irange::operator==): Same.
11081 (irange::singleton_p): Same.
11082 (irange::contains_p): Same.
11083 (irange::set_range_from_nonzero_bits): Same.
11084 (DEFINE_INT_RANGE_INSTANCE): Same.
11085 (INT): Same.
11086 (UINT): Same.
11087 (SCHAR): Same.
11088 (UINT128): Same.
11089 (UCHAR): Same.
11090 (range): New.
11091 (tree_range): New.
11092 (range_int): New.
11093 (range_uint): New.
11094 (range_uint128): New.
11095 (range_uchar): New.
11096 (range_char): New.
11097 (build_range3): Convert to irange wide_int API.
11098 (range_tests_irange3): Same.
11099 (range_tests_int_range_max): Same.
11100 (range_tests_strict_enum): Same.
11101 (range_tests_misc): Same.
11102 (range_tests_nonzero_bits): Same.
11103 (range_tests_nan): Same.
11104 (range_tests_signed_zeros): Same.
11105 * value-range.h (Value_Range::Value_Range): Same.
11106 (irange::set): Same.
11107 (irange::nonzero_p): Same.
11108 (irange::contains_p): Same.
11109 (range_includes_zero_p): Same.
11110 (irange::set_nonzero): Same.
11111 (irange::set_zero): Same.
11112 (contains_zero_p): Same.
11113 (frange::contains_p): Same.
11114 * vr-values.cc
11115 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
11116 (bounds_of_var_in_loop): Same.
11117 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
11118
11119 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11120
11121 * value-range.cc (irange::irange_union): Rename to...
11122 (irange::union_): ...this.
11123 (irange::irange_intersect): Rename to...
11124 (irange::intersect): ...this.
11125 * value-range.h (irange::union_): Delete.
11126 (irange::intersect): Delete.
11127
11128 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11129
11130 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
11131
11132 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11133
11134 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
11135 ranger API.
11136 (compare_ranges): Delete.
11137 (compare_range_with_value): Delete.
11138 (bounds_of_var_in_loop): Tidy up by using ranger API.
11139 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
11140 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
11141 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
11142 strict_overflow_p and only_ranges.
11143 (simplify_using_ranges::legacy_fold_cond): Adjust call to
11144 legacy_fold_cond_overflow.
11145 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
11146 rename.
11147 (range_fits_type_p): Rename value_range to irange.
11148 * vr-values.h (range_fits_type_p): Adjust prototype.
11149
11150 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11151
11152 * value-range.cc (irange::irange_set_anti_range): Remove uses of
11153 tree_lower_bound and tree_upper_bound.
11154 (irange::verify_range): Same.
11155 (irange::operator==): Same.
11156 (irange::singleton_p): Same.
11157 * value-range.h (irange::tree_lower_bound): Delete.
11158 (irange::tree_upper_bound): Delete.
11159 (irange::lower_bound): Delete.
11160 (irange::upper_bound): Delete.
11161 (irange::zero_p): Remove uses of tree_lower_bound and
11162 tree_upper_bound.
11163
11164 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11165
11166 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
11167 kind() call.
11168 (determine_value_range): Same.
11169 (record_nonwrapping_iv): Same.
11170 (infer_loop_bounds_from_signedness): Same.
11171 (scev_var_range_cant_overflow): Same.
11172 * tree-vrp.cc (operand_less_p): Delete.
11173 * tree-vrp.h (operand_less_p): Delete.
11174 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
11175 (irange::value_inside_range): Delete.
11176 * value-range.h (vrange::kind): Delete.
11177 (irange::num_pairs): Remove check of m_kind.
11178 (irange::min): Delete.
11179 (irange::max): Delete.
11180
11181 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11182
11183 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
11184 for vrange_storage.
11185 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
11186 (sbr_vector::grow): Same.
11187 (sbr_vector::set_bb_range): Same.
11188 (sbr_vector::get_bb_range): Same.
11189 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
11190 (sbr_sparse_bitmap::set_bb_range): Same.
11191 (sbr_sparse_bitmap::get_bb_range): Same.
11192 (block_range_cache::block_range_cache): Same.
11193 (ssa_global_cache::ssa_global_cache): Same.
11194 (ssa_global_cache::get_global_range): Same.
11195 (ssa_global_cache::set_global_range): Same.
11196 * gimple-range-cache.h: Same.
11197 * gimple-range-edge.cc
11198 (gimple_outgoing_range::gimple_outgoing_range): Same.
11199 (gimple_outgoing_range::switch_edge_range): Same.
11200 (gimple_outgoing_range::calc_switch_ranges): Same.
11201 * gimple-range-edge.h: Same.
11202 * gimple-range-infer.cc
11203 (infer_range_manager::infer_range_manager): Same.
11204 (infer_range_manager::get_nonzero): Same.
11205 (infer_range_manager::maybe_adjust_range): Same.
11206 (infer_range_manager::add_range): Same.
11207 * gimple-range-infer.h: Rename obstack_vrange_allocator to
11208 vrange_allocator.
11209 * tree-core.h (struct irange_storage_slot): Remove.
11210 (struct tree_ssa_name): Remove irange_info and frange_info. Make
11211 range_info a pointer to vrange_storage.
11212 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
11213 (range_info_alloc): Same.
11214 (range_info_free): Same.
11215 (range_info_get_range): Same.
11216 (range_info_set_range): Same.
11217 (get_nonzero_bits): Same.
11218 * value-query.cc (get_ssa_name_range_info): Same.
11219 * value-range-storage.cc (class vrange_internal_alloc): New.
11220 (class vrange_obstack_alloc): New.
11221 (class vrange_ggc_alloc): New.
11222 (vrange_allocator::vrange_allocator): New.
11223 (vrange_allocator::~vrange_allocator): New.
11224 (vrange_storage::alloc_slot): New.
11225 (vrange_allocator::alloc): New.
11226 (vrange_allocator::free): New.
11227 (vrange_allocator::clone): New.
11228 (vrange_allocator::clone_varying): New.
11229 (vrange_allocator::clone_undefined): New.
11230 (vrange_storage::alloc): New.
11231 (vrange_storage::set_vrange): Remove slot argument.
11232 (vrange_storage::get_vrange): Same.
11233 (vrange_storage::fits_p): Same.
11234 (vrange_storage::equal_p): New.
11235 (irange_storage::write_lengths_address): New.
11236 (irange_storage::lengths_address): New.
11237 (irange_storage_slot::alloc_slot): Remove.
11238 (irange_storage::alloc): New.
11239 (irange_storage_slot::irange_storage_slot): Remove.
11240 (irange_storage::irange_storage): New.
11241 (write_wide_int): New.
11242 (irange_storage_slot::set_irange): Remove.
11243 (irange_storage::set_irange): New.
11244 (read_wide_int): New.
11245 (irange_storage_slot::get_irange): Remove.
11246 (irange_storage::get_irange): New.
11247 (irange_storage_slot::size): Remove.
11248 (irange_storage::equal_p): New.
11249 (irange_storage_slot::num_wide_ints_needed): Remove.
11250 (irange_storage::size): New.
11251 (irange_storage_slot::fits_p): Remove.
11252 (irange_storage::fits_p): New.
11253 (irange_storage_slot::dump): Remove.
11254 (irange_storage::dump): New.
11255 (frange_storage_slot::alloc_slot): Remove.
11256 (frange_storage::alloc): New.
11257 (frange_storage_slot::set_frange): Remove.
11258 (frange_storage::set_frange): New.
11259 (frange_storage_slot::get_frange): Remove.
11260 (frange_storage::get_frange): New.
11261 (frange_storage_slot::fits_p): Remove.
11262 (frange_storage::equal_p): New.
11263 (frange_storage::fits_p): New.
11264 (ggc_vrange_allocator): New.
11265 (ggc_alloc_vrange_storage): New.
11266 * value-range-storage.h (class vrange_storage): Rewrite.
11267 (class irange_storage): Rewrite.
11268 (class frange_storage): Rewrite.
11269 (class obstack_vrange_allocator): Remove.
11270 (class ggc_vrange_allocator): Remove.
11271 (vrange_allocator::alloc_vrange): Remove.
11272 (vrange_allocator::alloc_irange): Remove.
11273 (vrange_allocator::alloc_frange): Remove.
11274 (ggc_alloc_vrange_storage): New.
11275 * value-range.h (class irange): Rename vrange_allocator to
11276 irange_storage.
11277 (class frange): Same.
11278
11279 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
11280
11281 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
11282 inc to avoid clobbering the carry flag.
11283
11284 2023-04-30 Andrew Pinski <apinski@marvell.com>
11285
11286 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
11287 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
11288
11289 2023-04-30 Andrew Pinski <apinski@marvell.com>
11290
11291 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
11292 Allow some builtin/internal function calls which
11293 are known not to trap/throw.
11294 (phiopt_worker::match_simplify_replacement):
11295 Use name instead of getting the lhs again.
11296
11297 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
11298
11299 * configure: Regenerate.
11300 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
11301
11302 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
11303
11304 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
11305 emit_insn_if_valid_for_reload.
11306 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
11307 to be recognized, also try emitting a parallel that clobbers
11308 TARGET_FLAGS_REGNUM, as applicable.
11309
11310 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
11311
11312 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
11313 to a define_insn.
11314 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
11315 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
11316
11317 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
11318
11319 * config/stormy16/stormy16.md (any_lshift): New code iterator.
11320 (any_or_plus): Likewise.
11321 (any_rotate): Likewise.
11322 (*<any_lshift>_and_internal): New define_insn_and_split to
11323 recognize a logical shift followed by an AND, and split it
11324 again after reload.
11325 (*swpn): New define_insn matching xstormy16's swpn.
11326 (*swpn_zext): New define_insn recognizing swpn followed by
11327 zero_extendqihi2, i.e. with the high byte set to zero.
11328 (*swpn_sext): Likewise, for swpn followed by cbw.
11329 (*swpn_sext_2): Likewise, for an alternate RTL form.
11330 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
11331 sequence is split in the correct place to recognize the *swpn_zext
11332 followed by any_or_plus (ior, xor or plus) instruction.
11333
11334 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
11335
11336 PR target/105525
11337 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
11338 (lm32-*-uclinux*): Likewise.
11339
11340 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
11341
11342 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
11343 for riscv_use_save_libcall.
11344 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
11345 (riscv_compute_frame_info): restructure to decouple stack allocation
11346 for rv32e w/o save-restore.
11347
11348 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
11349
11350 * doc/install.texi: Fix documentation typo
11351
11352 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
11353
11354 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
11355 (u): Add div/udiv cases.
11356 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
11357 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
11358 divmod expansion.
11359 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
11360 (thead_c906_tune_info): Likewise.
11361 (optimize_size_tune_info): Likewise.
11362 (riscv_use_divmod_expander): New function.
11363 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
11364
11365 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
11366
11367 * config/riscv/bitmanip.md: Added clmulr instruction.
11368 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
11369 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
11370 (type): Add clmul
11371 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
11372 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
11373 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
11374 functions to riscv-cmo.def.
11375 * config/riscv/generic.md: Add clmul to list of instructions
11376 using the generic_imul reservation.
11377
11378 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
11379
11380 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
11381
11382 2023-04-28 Andrew Pinski <apinski@marvell.com>
11383
11384 PR tree-optimization/100958
11385 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
11386 (pass_phiopt::execute): Don't call two_value_replacement.
11387 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
11388 handle what two_value_replacement did.
11389
11390 2023-04-28 Andrew Pinski <apinski@marvell.com>
11391
11392 * match.pd: Add patterns for
11393 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
11394
11395 2023-04-28 Andrew Pinski <apinski@marvell.com>
11396
11397 * match.pd: Factor out the deciding the min/max from
11398 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
11399 pattern to ...
11400 * fold-const.cc (minmax_from_comparison): this new function.
11401 * fold-const.h (minmax_from_comparison): New prototype.
11402
11403 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
11404
11405 PR rtl-optimization/109476
11406 * lower-subreg.cc: Include explow.h for force_reg.
11407 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
11408 If decomposing a suitable LSHIFTRT and we're not splitting
11409 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
11410 instead of setting a high part SUBREG to zero, which helps combine.
11411 (decompose_multiword_subregs): Update call to resolve_shift_zext.
11412
11413 2023-04-28 Richard Biener <rguenther@suse.de>
11414
11415 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
11416 consider scatters.
11417 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
11418 gather-scatter info and cost emulated scatters accordingly.
11419 (get_load_store_type): Support emulated scatters.
11420 (vectorizable_store): Likewise. Emulate them by extracting
11421 scalar offsets and data, doing scalar stores.
11422
11423 2023-04-28 Richard Biener <rguenther@suse.de>
11424
11425 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
11426 Tame down element extracts and scalar loads for gather/scatter
11427 similar to elementwise strided accesses.
11428
11429 2023-04-28 Pan Li <pan2.li@intel.com>
11430 kito-cheng <kito.cheng@sifive.com>
11431
11432 * config/riscv/vector.md: Add new define split to perform
11433 the simplification.
11434
11435 2023-04-28 Richard Biener <rguenther@suse.de>
11436
11437 PR ipa/109652
11438 * ipa-param-manipulation.cc
11439 (ipa_param_body_adjustments::modify_expression): Allow
11440 conversion of a register to a non-register type. Elide
11441 conversions inside BIT_FIELD_REFs.
11442
11443 2023-04-28 Richard Biener <rguenther@suse.de>
11444
11445 PR tree-optimization/109644
11446 * tree-cfg.cc (verify_types_in_gimple_reference): Check
11447 register constraints on the outermost VIEW_CONVERT_EXPR
11448 only. Do not allow register or invariant bases on
11449 multi-level or possibly variable index handled components.
11450
11451 2023-04-28 Richard Biener <rguenther@suse.de>
11452
11453 * gimplify.cc (gimplify_compound_lval): When there's a
11454 non-register type produced by one of the handled component
11455 operations make sure we get a non-register base.
11456
11457 2023-04-28 Richard Biener <rguenther@suse.de>
11458
11459 PR tree-optimization/108752
11460 * tree-vect-generic.cc (build_replicated_const): Rename
11461 to build_replicated_int_cst and move to tree.{h,cc}.
11462 (do_plus_minus): Adjust.
11463 (do_negate): Likewise.
11464 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
11465 arithmetic vector operations in lowered form.
11466 * tree.h (build_replicated_int_cst): Declare.
11467 * tree.cc (build_replicated_int_cst): Moved from
11468 tree-vect-generic.cc build_replicated_const.
11469
11470 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11471
11472 PR target/99195
11473 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
11474 (aarch64_rbit<mode><vczle><vczbe>): ... This.
11475 (neg<mode>2): Rename to...
11476 (neg<mode>2<vczle><vczbe>): ... This.
11477 (abs<mode>2): Rename to...
11478 (abs<mode>2<vczle><vczbe>): ... This.
11479 (aarch64_abs<mode>): Rename to...
11480 (aarch64_abs<mode><vczle><vczbe>): ... This.
11481 (one_cmpl<mode>2): Rename to...
11482 (one_cmpl<mode>2<vczle><vczbe>): ... This.
11483 (clrsb<mode>2): Rename to...
11484 (clrsb<mode>2<vczle><vczbe>): ... This.
11485 (clz<mode>2): Rename to...
11486 (clz<mode>2<vczle><vczbe>): ... This.
11487 (popcount<mode>2): Rename to...
11488 (popcount<mode>2<vczle><vczbe>): ... This.
11489
11490 2023-04-28 Jakub Jelinek <jakub@redhat.com>
11491
11492 * gimple-range-op.cc (class cfn_sqrt): New type.
11493 (op_cfn_sqrt): New variable.
11494 (gimple_range_op_handler::maybe_builtin_call): Handle
11495 CASE_CFN_SQRT{,_FN}.
11496
11497 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
11498 Jakub Jelinek <jakub@redhat.com>
11499
11500 * value-range.h (frange_nextafter): Declare.
11501 * gimple-range-op.cc (class cfn_sincos): New.
11502 (op_cfn_sin, op_cfn_cos): New variables.
11503 (gimple_range_op_handler::maybe_builtin_call): Handle
11504 CASE_CFN_{SIN,COS}{,_FN}.
11505
11506 2023-04-28 Jakub Jelinek <jakub@redhat.com>
11507
11508 * target.def (libm_function_max_error): New target hook.
11509 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
11510 * doc/tm.texi: Regenerated.
11511 * targhooks.h (default_libm_function_max_error,
11512 glibc_linux_libm_function_max_error): Declare.
11513 * targhooks.cc: Include case-cfn-macros.h.
11514 (default_libm_function_max_error,
11515 glibc_linux_libm_function_max_error): New functions.
11516 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11517 * config/linux-protos.h (linux_libm_function_max_error): Declare.
11518 * config/linux.cc: Include target.h and targhooks.h.
11519 (linux_libm_function_max_error): New function.
11520 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
11521 (arc_libm_function_max_error): New function.
11522 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11523 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
11524 (ix86_libm_function_max_error): New function.
11525 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11526 * config/rs6000/rs6000-protos.h
11527 (rs6000_linux_libm_function_max_error): Declare.
11528 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
11529 and case-cfn-macros.h.
11530 (rs6000_linux_libm_function_max_error): New function.
11531 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11532 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11533 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
11534 (or1k_libm_function_max_error): New function.
11535 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11536
11537 2023-04-28 Alexandre Oliva <oliva@adacore.com>
11538
11539 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
11540 Move detach value calls...
11541 (pass_harden_conditional_branches::execute): ... here.
11542 (pass_harden_compares::execute): Detach values before
11543 compares.
11544
11545 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
11546
11547 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
11548 (cml<addsub_as><mode>4): Likewise.
11549 (vec_addsub<mode>3): Likewise.
11550 (cadd<rot><mode>3): Likewise.
11551 (vec_fmaddsub<mode>4): Likewise.
11552 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
11553
11554 2023-04-27 Andrew Pinski <apinski@marvell.com>
11555
11556 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
11557 up to 2 min/max expressions in the sequence/match code.
11558
11559 2023-04-27 Andrew Pinski <apinski@marvell.com>
11560
11561 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
11562 COMPARISON.
11563 * tree-eh.cc (operation_could_trap_helper_p): Treate
11564 MIN_EXPR/MAX_EXPR similar as other comparisons.
11565
11566 2023-04-27 Andrew Pinski <apinski@marvell.com>
11567
11568 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
11569 prototype.
11570 (cond_if_else_store_replacement): Likewise.
11571 (get_non_trapping): Likewise.
11572 (store_elim_worker): Move into ...
11573 (pass_cselim::execute): This.
11574
11575 2023-04-27 Andrew Pinski <apinski@marvell.com>
11576
11577 * tree-ssa-phiopt.cc (two_value_replacement): Remove
11578 prototype.
11579 (match_simplify_replacement): Likewise.
11580 (factor_out_conditional_conversion): Likewise.
11581 (value_replacement): Likewise.
11582 (minmax_replacement): Likewise.
11583 (spaceship_replacement): Likewise.
11584 (cond_removal_in_builtin_zero_pattern): Likewise.
11585 (hoist_adjacent_loads): Likewise.
11586 (tree_ssa_phiopt_worker): Move into ...
11587 (pass_phiopt::execute): this.
11588
11589 2023-04-27 Andrew Pinski <apinski@marvell.com>
11590
11591 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
11592 do_store_elim argument and split that part out to ...
11593 (store_elim_worker): This new function.
11594 (pass_cselim::execute): Call store_elim_worker.
11595 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
11596
11597 2023-04-27 Jan Hubicka <jh@suse.cz>
11598
11599 * cfgloopmanip.h (unloop_loops): Export.
11600 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
11601 that no longer loop.
11602 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
11603 vectors of loops to unloop.
11604 (canonicalize_induction_variables): Free vectors here.
11605 (tree_unroll_loops_completely): Free vectors here.
11606
11607 2023-04-27 Richard Biener <rguenther@suse.de>
11608
11609 PR tree-optimization/109170
11610 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
11611 Handle __builtin_expect and similar via cfn_pass_through_arg1
11612 and inspecting the calls fnspec.
11613 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
11614 and BUILT_IN_EXPECT_WITH_PROBABILITY.
11615
11616 2023-04-27 Alexandre Oliva <oliva@adacore.com>
11617
11618 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
11619
11620 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
11621
11622 PR tree-optimization/109639
11623 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
11624 (propagate_vr_across_jump_function): Same.
11625 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
11626 * ipa-prop.h (ipa_range_set_and_normalize): New.
11627 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
11628
11629 2023-04-27 Richard Biener <rguenther@suse.de>
11630
11631 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
11632 create a CTOR operand in the result when simplifying GIMPLE.
11633
11634 2023-04-27 Richard Biener <rguenther@suse.de>
11635
11636 * gimplify.cc (gimplify_compound_lval): When the base
11637 gimplified to a register make sure to split up chains
11638 of operations.
11639
11640 2023-04-27 Richard Biener <rguenther@suse.de>
11641
11642 PR ipa/109607
11643 * ipa-param-manipulation.h
11644 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
11645 argument.
11646 * ipa-param-manipulation.cc
11647 (ipa_param_body_adjustments::modify_expression): Likewise.
11648 When we need a conversion and the replacement is a register
11649 split the conversion out.
11650 (ipa_param_body_adjustments::modify_assignment): Pass
11651 extra_stmts to RHS modify_expression.
11652
11653 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
11654
11655 * doc/extend.texi (Zero Length): Describe example.
11656
11657 2023-04-27 Richard Biener <rguenther@suse.de>
11658
11659 PR tree-optimization/109594
11660 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
11661 what we rewrite to a register based on the above.
11662
11663 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
11664
11665 * config/riscv/riscv.cc: Fix whitespace.
11666 * config/riscv/sync.md: Fix whitespace.
11667
11668 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11669
11670 PR tree-optimization/108697
11671 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
11672 not clear the vector on an out of range query.
11673 (ssa_cache::dump): Use dump_range_query instead of get_range.
11674 (ssa_cache::dump_range_query): New.
11675 (ssa_lazy_cache::dump_range_query): New.
11676 (ssa_lazy_cache::set_range): New.
11677 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
11678 (class ssa_lazy_cache): New.
11679 (ssa_lazy_cache::ssa_lazy_cache): New.
11680 (ssa_lazy_cache::~ssa_lazy_cache): New.
11681 (ssa_lazy_cache::get_range): New.
11682 (ssa_lazy_cache::clear_range): New.
11683 (ssa_lazy_cache::clear): New.
11684 (ssa_lazy_cache::dump): New.
11685 * gimple-range-path.cc (path_range_query::path_range_query): Do
11686 not allocate a ssa_cache object nor has_cache bitmap.
11687 (path_range_query::~path_range_query): Do not free objects.
11688 (path_range_query::clear_cache): Remove.
11689 (path_range_query::get_cache): Adjust.
11690 (path_range_query::set_cache): Remove.
11691 (path_range_query::dump): Don't call through a pointer.
11692 (path_range_query::internal_range_of_expr): Set cache directly.
11693 (path_range_query::reset_path): Clear cache directly.
11694 (path_range_query::ssa_range_in_phi): Fold with globals only.
11695 (path_range_query::compute_ranges_in_phis): Simply set range.
11696 (path_range_query::compute_ranges_in_block): Call cache directly.
11697 * gimple-range-path.h (class path_range_query): Replace bitmap
11698 and cache pointer with lazy cache object.
11699 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
11700
11701 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11702
11703 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
11704 (ssa_cache::~ssa_cache): Rename.
11705 (ssa_cache::has_range): New.
11706 (ssa_cache::get_range): Rename.
11707 (ssa_cache::set_range): Rename.
11708 (ssa_cache::clear_range): Rename.
11709 (ssa_cache::clear): Rename.
11710 (ssa_cache::dump): Rename and use get_range.
11711 (ranger_cache::get_global_range): Use get_range and set_range.
11712 (ranger_cache::range_of_def): Use get_range.
11713 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
11714 (class ranger_cache): Use ssa_cache.
11715 * gimple-range-path.cc (path_range_query::path_range_query): Use
11716 ssa_cache.
11717 (path_range_query::get_cache): Use get_range.
11718 (path_range_query::set_cache): Use set_range.
11719 * gimple-range-path.h (class path_range_query): Use ssa_cache.
11720 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
11721 (assume_query::range_of_expr): Use get_range.
11722 (assume_query::assume_query): Use set_range.
11723 (assume_query::calculate_op): Use get_range and set_range.
11724 * gimple-range.h (class assume_query): Use ssa_cache.
11725
11726 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11727
11728 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
11729 and local to optionally zero memory.
11730 (br_vector::grow): Only zero memory if flag is set.
11731 (class sbr_lazy_vector): New.
11732 (sbr_lazy_vector::sbr_lazy_vector): New.
11733 (sbr_lazy_vector::set_bb_range): New.
11734 (sbr_lazy_vector::get_bb_range): New.
11735 (sbr_lazy_vector::bb_range_p): New.
11736 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
11737 * gimple-range-gori.cc (gori_map::calculate_gori): Use
11738 param_vrp_switch_limit.
11739 (gori_compute::gori_compute): Use param_vrp_switch_limit.
11740 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
11741 (vrp_switch_limit): Rename from evrp_switch_limit.
11742 (vrp_vector_threshold): New.
11743
11744 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11745
11746 * value-relation.cc (dom_oracle::query_relation): Check early for lack
11747 of any relation.
11748 * value-relation.h (equiv_oracle::has_equiv_p): New.
11749
11750 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11751
11752 PR tree-optimization/109417
11753 * gimple-range-gori.cc (range_def_chain::register_dependency):
11754 Save the ssa version number, not the pointer.
11755 (gori_compute::may_recompute_p): No need to check if a dependency
11756 is in the free list.
11757 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
11758 fields to be unsigned int instead of trees.
11759 (ange_def_chain::depend1): Adjust.
11760 (ange_def_chain::depend2): Adjust.
11761 * gimple-range.h: Include "ssa.h" to inline ssa_name().
11762
11763 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
11764
11765 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
11766 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
11767 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
11768
11769 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
11770
11771 PR target/104338
11772 * config/riscv/riscv-protos.h: Add helper function stubs.
11773 * config/riscv/riscv.cc: Add helper functions for subword masking.
11774 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
11775 -mno-inline-atomics.
11776 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
11777 fetch_and_nand, CAS, and exchange ops.
11778 * doc/invoke.texi: Add blurb regarding new command-line flags
11779 -minline-atomics and -mno-inline-atomics.
11780
11781 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11782
11783 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
11784 Reimplement using standard RTL codes instead of unspec.
11785 (aarch64_rshrn2<mode>_insn_be): Likewise.
11786 (aarch64_rshrn2<mode>): Adjust for the above.
11787 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
11788
11789 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11790
11791 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
11792 with standard RTL codes instead of an UNSPEC.
11793 (aarch64_rshrn<mode>_insn_be): Likewise.
11794 (aarch64_rshrn<mode>): Adjust for the above.
11795 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
11796
11797 2023-04-26 Pan Li <pan2.li@intel.com>
11798 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
11799
11800 * config/riscv/riscv.cc (riscv_classify_address): Allow
11801 const0_rtx for the RVV load/store.
11802
11803 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11804
11805 * range-op.cc (range_op_cast_tests): Remove legacy support.
11806 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
11807 * value-range.cc (irange::operator=): Same.
11808 (get_legacy_range): Same.
11809 (irange::copy_legacy_to_multi_range): Delete.
11810 (irange::copy_to_legacy): Delete.
11811 (irange::irange_set_anti_range): Delete.
11812 (irange::set): Remove legacy support.
11813 (irange::verify_range): Same.
11814 (irange::legacy_lower_bound): Delete.
11815 (irange::legacy_upper_bound): Delete.
11816 (irange::legacy_equal_p): Delete.
11817 (irange::operator==): Remove legacy support.
11818 (irange::singleton_p): Same.
11819 (irange::value_inside_range): Same.
11820 (irange::contains_p): Same.
11821 (intersect_ranges): Delete.
11822 (irange::legacy_intersect): Delete.
11823 (union_ranges): Delete.
11824 (irange::legacy_union): Delete.
11825 (irange::legacy_verbose_union_): Delete.
11826 (irange::legacy_verbose_intersect): Delete.
11827 (irange::irange_union): Remove legacy support.
11828 (irange::irange_intersect): Same.
11829 (irange::intersect): Same.
11830 (irange::invert): Same.
11831 (ranges_from_anti_range): Delete.
11832 (gt_pch_nx): Adjust for legacy removal.
11833 (gt_ggc_mx): Same.
11834 (range_tests_legacy): Delete.
11835 (range_tests_misc): Adjust for legacy removal.
11836 (range_tests): Same.
11837 * value-range.h (class irange): Same.
11838 (irange::legacy_mode_p): Delete.
11839 (ranges_from_anti_range): Delete.
11840 (irange::nonzero_p): Adjust for legacy removal.
11841 (irange::lower_bound): Same.
11842 (irange::upper_bound): Same.
11843 (irange::union_): Same.
11844 (irange::intersect): Same.
11845 (irange::set_nonzero): Same.
11846 (irange::set_zero): Same.
11847 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
11848
11849 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11850
11851 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
11852 of range_has_numeric_bounds_p with irange API.
11853 (range_has_numeric_bounds_p): Delete.
11854 * value-range.h (range_has_numeric_bounds_p): Delete.
11855
11856 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11857
11858 * tree-data-ref.cc (compute_distributive_range): Replace uses of
11859 range_int_cst_p with irange API.
11860 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
11861 * tree-vrp.h (range_int_cst_p): Delete.
11862 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
11863 range_int_cst_p with irange API.
11864 (vr_set_zero_nonzero_bits): Same.
11865 (range_fits_type_p): Same.
11866 (simplify_using_ranges::simplify_casted_cond): Same.
11867 * tree-vrp.cc (range_int_cst_p): Remove.
11868
11869 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11870
11871 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
11872
11873 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11874
11875 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
11876 API uses to new API.
11877 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
11878 * internal-fn.cc (get_min_precision): Same.
11879 * match.pd: Same.
11880 * tree-affine.cc (expr_to_aff_combination): Same.
11881 * tree-data-ref.cc (dr_step_indicator): Same.
11882 * tree-dfa.cc (get_ref_base_and_extent): Same.
11883 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
11884 * tree-ssa-phiopt.cc (two_value_replacement): Same.
11885 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
11886 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
11887 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
11888 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
11889 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
11890 * tree.cc (get_range_pos_neg): Same.
11891
11892 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11893
11894 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
11895 vrange::dump instead of ad-hoc dumper.
11896 * tree-ssa-strlen.cc (dump_strlen_info): Same.
11897 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
11898 dump_generic_node.
11899
11900 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11901
11902 * range-op.cc (operator_cast::op1_range): Use
11903 create_possibly_reversed_range.
11904 (operator_bitwise_and::simple_op1_range_solver): Same.
11905 * value-range.cc (swap_out_of_order_endpoints): Delete.
11906 (irange::set): Remove call to swap_out_of_order_endpoints.
11907
11908 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11909
11910 * builtins.cc (determine_block_size): Convert use of legacy API to
11911 get_legacy_range.
11912 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
11913 (array_bounds_checker::check_array_ref): Same.
11914 * gimple-ssa-warn-restrict.cc
11915 (builtin_memref::extend_offset_range): Same.
11916 * ipa-cp.cc (ipcp_store_vr_results): Same.
11917 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
11918 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
11919 (ipa_write_jump_function): Same.
11920 * pointer-query.cc (get_size_range): Same.
11921 * tree-data-ref.cc (split_constant_offset): Same.
11922 * tree-ssa-strlen.cc (get_range): Same.
11923 (maybe_diag_stxncpy_trunc): Same.
11924 (strlen_pass::get_len_or_size): Same.
11925 (strlen_pass::count_nonzero_bytes_addr): Same.
11926 * tree-vect-patterns.cc (vect_get_range_info): Same.
11927 * value-range.cc (irange::maybe_anti_range): Remove.
11928 (get_legacy_range): New.
11929 (irange::copy_to_legacy): Use get_legacy_range.
11930 (ranges_from_anti_range): Same.
11931 * value-range.h (class irange): Remove maybe_anti_range.
11932 (get_legacy_range): New.
11933 * vr-values.cc (check_for_binary_op_overflow): Convert use of
11934 legacy API to get_legacy_range.
11935 (compare_ranges): Same.
11936 (compare_range_with_value): Same.
11937 (bounds_of_var_in_loop): Same.
11938 (find_case_label_ranges): Same.
11939 (simplify_using_ranges::simplify_switch_using_ranges): Same.
11940
11941 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11942
11943 * value-range-pretty-print.cc (vrange_printer::visit): Remove
11944 constant_p use.
11945 * value-range.cc (irange::constant_p): Remove.
11946 (irange::get_nonzero_bits_from_range): Remove constant_p use.
11947 * value-range.h (class irange): Remove constant_p.
11948 (irange::num_pairs): Remove constant_p use.
11949
11950 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11951
11952 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
11953 symbolics support.
11954 (irange::set): Same.
11955 (irange::legacy_lower_bound): Same.
11956 (irange::legacy_upper_bound): Same.
11957 (irange::contains_p): Same.
11958 (range_tests_legacy): Same.
11959 (irange::normalize_addresses): Remove.
11960 (irange::normalize_symbolics): Remove.
11961 (irange::symbolic_p): Remove.
11962 * value-range.h (class irange): Remove symbolic_p,
11963 normalize_symbolics, and normalize_addresses.
11964 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
11965 Remove symbolics support.
11966
11967 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11968
11969 * value-range.cc (irange::may_contain_p): Remove.
11970 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
11971 usage with contains_p.
11972 * vr-values.cc (compare_range_with_value): Same.
11973
11974 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11975
11976 * tree-vrp.cc (supported_types_p): Remove.
11977 (defined_ranges_p): Remove.
11978 (range_fold_binary_expr): Remove.
11979 (range_fold_unary_expr): Remove.
11980 * tree-vrp.h (range_fold_unary_expr): Remove.
11981 (range_fold_binary_expr): Remove.
11982
11983 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11984
11985 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
11986 (ipa_value_range_from_jfunc): Same.
11987 (propagate_vr_across_jump_function): Same.
11988 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
11989 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
11990 * vr-values.cc (bounds_of_var_in_loop): Same.
11991
11992 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
11993
11994 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
11995 Add irange argument.
11996 (check_out_of_bounds_and_warn): Remove check for vr.
11997 (array_bounds_checker::check_array_ref): Remove pointer qualifier
11998 for vr and adjust accordingly.
11999 * gimple-array-bounds.h (get_value_range): Add irange argument.
12000 * value-query.cc (class equiv_allocator): Delete.
12001 (range_query::get_value_range): Delete.
12002 (range_query::range_query): Remove allocator access.
12003 (range_query::~range_query): Same.
12004 * value-query.h (get_value_range): Delete.
12005 * vr-values.cc
12006 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
12007 call to get_value_range.
12008 (check_for_binary_op_overflow): Same.
12009 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
12010 (simplify_using_ranges::simplify_abs_using_ranges): Same.
12011 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
12012 (simplify_using_ranges::simplify_casted_cond): Same.
12013 (simplify_using_ranges::simplify_switch_using_ranges): Same.
12014 (simplify_using_ranges::two_valued_val_range_p): Same.
12015
12016 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12017
12018 * vr-values.cc
12019 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
12020 Rename to...
12021 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
12022 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
12023 (simplify_using_ranges::legacy_fold_cond): ...this.
12024 (simplify_using_ranges::fold_cond): Rename
12025 vrp_evaluate_conditional_warnv_with_ops to
12026 legacy_fold_cond_overflow.
12027 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
12028 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
12029 legacy_fold_cond_overflow respectively.
12030
12031 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12032
12033 * vr-values.cc (get_vr_for_comparison): Remove.
12034 (compare_name_with_value): Same.
12035 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
12036 compare_name_with_value.
12037 * vr-values.h: Remove compare_name_with_value.
12038 Remove get_vr_for_comparison.
12039
12040 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
12041
12042 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
12043 (bswapsi2): New define_insn.
12044 (swaphi): New define_insn to exchange two registers (swpw).
12045 (define_peephole2): Recognize exchange of registers as swaphi.
12046
12047 2023-04-26 Richard Biener <rguenther@suse.de>
12048
12049 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
12050 Avoid last_stmt.
12051 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
12052 * predict.cc (apply_return_prediction): Likewise.
12053 * sese.cc (set_ifsese_condition): Likewise. Simplify.
12054 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
12055 (make_edges_bb): Likewise.
12056 (make_cond_expr_edges): Likewise.
12057 (end_recording_case_labels): Likewise.
12058 (make_gimple_asm_edges): Likewise.
12059 (cleanup_dead_labels): Likewise.
12060 (group_case_labels): Likewise.
12061 (gimple_can_merge_blocks_p): Likewise.
12062 (gimple_merge_blocks): Likewise.
12063 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
12064 (gimple_duplicate_sese_tail): Avoid last_stmt.
12065 (find_loop_dist_alias): Likewise.
12066 (gimple_block_ends_with_condjump_p): Likewise.
12067 (gimple_purge_dead_eh_edges): Likewise.
12068 (gimple_purge_dead_abnormal_call_edges): Likewise.
12069 (pass_warn_function_return::execute): Likewise.
12070 (execute_fixup_cfg): Likewise.
12071 * tree-eh.cc (redirect_eh_edge_1): Likewise.
12072 (pass_lower_resx::execute): Likewise.
12073 (pass_lower_eh_dispatch::execute): Likewise.
12074 (cleanup_empty_eh): Likewise.
12075 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
12076 (predicate_bbs): Likewise.
12077 (ifcvt_split_critical_edges): Likewise.
12078 * tree-loop-distribution.cc (create_edge_for_control_dependence):
12079 Likewise.
12080 (loop_distribution::transform_reduction_loop): Likewise.
12081 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
12082 (try_transform_to_exit_first_loop_alt): Likewise.
12083 (transform_to_exit_first_loop): Likewise.
12084 (create_parallel_loop): Likewise.
12085 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
12086 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
12087 (eliminate_unnecessary_stmts): Likewise.
12088 * tree-ssa-dom.cc
12089 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
12090 Likewise.
12091 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
12092 (pass_tree_ifcombine::execute): Likewise.
12093 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
12094 (should_duplicate_loop_header_p): Likewise.
12095 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
12096 (tree_estimate_loop_size): Likewise.
12097 (try_unroll_loop_completely): Likewise.
12098 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
12099 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
12100 (canonicalize_loop_ivs): Likewise.
12101 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
12102 (bound_difference): Likewise.
12103 (number_of_iterations_popcount): Likewise.
12104 (number_of_iterations_cltz): Likewise.
12105 (number_of_iterations_cltz_complement): Likewise.
12106 (simplify_using_initial_conditions): Likewise.
12107 (number_of_iterations_exit_assumptions): Likewise.
12108 (loop_niter_by_eval): Likewise.
12109 (estimate_numbers_of_iterations): Likewise.
12110
12111 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12112
12113 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
12114
12115 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
12116
12117 PR target/108758
12118 * config/rs6000/rs6000-builtins.def
12119 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
12120 __builtin_vsx_scalar_cmp_exp_qp_lt,
12121 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
12122 to power9-vector.
12123
12124 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
12125
12126 PR target/109069
12127 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
12128 easy_vector_constant with const_vector_each_byte_same, add
12129 handlings in preparation for !easy_vector_constant, and update
12130 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
12131 * config/rs6000/predicates.md (const_vector_each_byte_same): New
12132 predicate.
12133
12134 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12135
12136 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
12137 (*pred_ltge<mode>_merge_tie_mask): Ditto.
12138 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
12139 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
12140 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
12141 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
12142 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
12143
12144 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12145
12146 * config/riscv/vector.md: Fix redundant vmv1r.v.
12147
12148 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12149
12150 * config/riscv/vector.md: Fix RA constraint.
12151
12152 2023-04-26 Pan Li <pan2.li@intel.com>
12153
12154 PR target/109272
12155 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
12156 check for vn_reference equal.
12157
12158 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12159
12160 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
12161 auto-vectorization preference.
12162 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
12163 auto-vectorization.
12164 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
12165
12166 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
12167
12168 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
12169 and bclridisi_nottwobits patterns.
12170 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
12171 predicate to avoid splitting arith constants.
12172 (const_nottwobits_not_arith_operand): New predicate.
12173
12174 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
12175
12176 * recog.cc (peep2_attempt, peep2_update_life): Correct
12177 head-comment description of parameter match_len.
12178
12179 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
12180
12181 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
12182 riscv_split_symbol() drop in_splitter arg.
12183 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
12184 riscv_split_symbol() drop in_splitter arg.
12185 riscv_force_temporary() drop in_splitter arg.
12186 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
12187 riscv_split_symbol() drop in_splitter arg.
12188
12189 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
12190
12191 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
12192 superfluous debug temporaries for single GIMPLE assignments.
12193
12194 2023-04-25 Richard Biener <rguenther@suse.de>
12195
12196 PR tree-optimization/109609
12197 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
12198 Clarify semantics.
12199 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
12200 the size given by arg_max_access_size_given_by_arg_p as
12201 maximum, not exact, size.
12202
12203 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12204
12205 PR target/99195
12206 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
12207 (orn<mode>3<vczle><vczbe>): ... This.
12208 (bic<mode>3): Rename to...
12209 (bic<mode>3<vczle><vczbe>): ... This.
12210 (<su><maxmin><mode>3): Rename to...
12211 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
12212
12213 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12214
12215 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
12216 * config/aarch64/iterators.md (VQDIV): New mode iterator.
12217 (vnx2di): New mode attribute.
12218
12219 2023-04-25 Richard Biener <rguenther@suse.de>
12220
12221 PR rtl-optimization/109585
12222 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
12223
12224 2023-04-25 Jakub Jelinek <jakub@redhat.com>
12225
12226 PR target/109566
12227 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
12228 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
12229 is larger than signed int maximum.
12230
12231 2023-04-25 Martin Liska <mliska@suse.cz>
12232
12233 * doc/gcov.texi: Document the new "calls" field and document
12234 the API bump. Mention also "block_ids" for lines.
12235 * gcov.cc (output_intermediate_json_line): Output info about
12236 calls and extend branches as well.
12237 (generate_results): Bump version to 2.
12238 (output_line_details): Use block ID instead of a non-sensual
12239 index.
12240
12241 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
12242
12243 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
12244 length attribute for the first (memory operand) alternative.
12245
12246 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
12247
12248 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
12249 * config/aarch64/constraints.md: Make "Umn" relaxed memory
12250 constraint.
12251 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
12252
12253 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
12254
12255 * value-range.cc (frange::set): Adjust constructor.
12256 * value-range.h (nan_state::nan_state): Replace default
12257 constructor with one taking an argument.
12258
12259 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
12260
12261 * ipa-cp.cc (ipa_range_contains_p): New.
12262 (decide_whether_version_node): Use it.
12263
12264 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12265
12266 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
12267 simplify two successive VEC_PERM_EXPRs with same VLA mask,
12268 where mask chooses elements in reverse order.
12269
12270 2023-04-24 Andrew Pinski <apinski@marvell.com>
12271
12272 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
12273 and support diamond shaped basic block form.
12274 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
12275
12276 2023-04-24 Andrew Pinski <apinski@marvell.com>
12277
12278 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
12279 Instead of calling last_and_only_stmt, look for the last statement
12280 manually.
12281
12282 2023-04-24 Andrew Pinski <apinski@marvell.com>
12283
12284 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
12285 New function.
12286 (match_simplify_replacement): Call
12287 empty_bb_or_one_feeding_into_p instead of doing it inline.
12288
12289 2023-04-24 Andrew Pinski <apinski@marvell.com>
12290
12291 PR tree-optimization/68894
12292 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
12293 continue for the do_hoist_loads diamond case.
12294
12295 2023-04-24 Andrew Pinski <apinski@marvell.com>
12296
12297 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
12298 code for better code readability.
12299
12300 2023-04-24 Andrew Pinski <apinski@marvell.com>
12301
12302 PR tree-optimization/109604
12303 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
12304 diamond form check from ...
12305 (minmax_replacement): Here.
12306
12307 2023-04-24 Patrick Palka <ppalka@redhat.com>
12308
12309 * tree.cc (strip_array_types): Don't define here.
12310 (is_typedef_decl): Don't define here.
12311 (typedef_variant_p): Don't define here.
12312 * tree.h (strip_array_types): Define here.
12313 (is_typedef_decl): Define here.
12314 (typedef_variant_p): Define here.
12315
12316 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
12317
12318 * doc/generic.texi (OpenMP): Add != to allowed
12319 conditions and state that vars can be unsigned.
12320 * tree.def (OMP_FOR): Likewise.
12321
12322 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12323
12324 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
12325
12326 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12327
12328 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
12329 Remove explicit Solaris 11 references.
12330 Markup fixes.
12331 (Options specification, --with-gnu-as): as and gas always differ
12332 on Solaris.
12333 Remove /usr/ccs/bin reference.
12334 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
12335 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
12336 (*-*-solaris2*): ... here.
12337 Update bundled GCC versions.
12338 Don't refer to pre-built binaries.
12339 Remove /bin/sh warning.
12340 Update assembler, linker recommendations.
12341 Document GNAT bootstrap compiler.
12342 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
12343 (sparc64-*-solaris2*): Move content...
12344 (sparcv9-*-solaris2*): ...here.
12345 Add GDC for 64-bit bootstrap compilers.
12346
12347 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12348
12349 PR target/109406
12350 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
12351 case.
12352 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
12353 pattern.
12354
12355 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12356
12357 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
12358 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
12359 (aarch64_<su>abal2<mode>): New define_expand.
12360 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
12361 (aarch64_rtx_costs): Handle ABD rtxes.
12362 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
12363 * config/aarch64/iterators.md (ABAL2): Delete.
12364 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
12365
12366 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12367
12368 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
12369 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
12370 (<sur>sadv16qi): Rename to...
12371 (<su>sadv16qi): ... This. Adjust for the above.
12372 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
12373 (<su>sad<vsi2qi>): ... This. Adjust for the above.
12374 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
12375 * config/aarch64/iterators.md (ABAL): Delete.
12376 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
12377
12378 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12379
12380 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
12381 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
12382 (aarch64_<su>abdl2<mode>): New define_expand.
12383 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
12384 * config/aarch64/iterators.md (ABDL2): Delete.
12385 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
12386
12387 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12388
12389 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
12390 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
12391 unspec.
12392 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
12393 * config/aarch64/iterators.md (ABDL): Delete.
12394 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
12395
12396 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12397
12398 * config/aarch64/aarch64-simd.md
12399 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
12400
12401 2023-04-24 Richard Biener <rguenther@suse.de>
12402
12403 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
12404 last_stmt.
12405 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
12406 Likewise.
12407 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
12408 (set_switch_stmt_execution_predicate): Likewise.
12409 (phi_result_unknown_predicate): Likewise.
12410 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
12411 (ipa_analyze_indirect_call_uses): Likewise.
12412 * predict.cc (predict_iv_comparison): Likewise.
12413 (predict_extra_loop_exits): Likewise.
12414 (predict_loops): Likewise.
12415 (tree_predict_by_opcode): Likewise.
12416 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
12417 Likewise.
12418 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
12419 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
12420 (replace_phi_edge_with_variable): Likewise.
12421 (two_value_replacement): Likewise.
12422 (value_replacement): Likewise.
12423 (minmax_replacement): Likewise.
12424 (spaceship_replacement): Likewise.
12425 (cond_removal_in_builtin_zero_pattern): Likewise.
12426 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
12427 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
12428 (vn_phi_lookup): Likewise.
12429 (vn_phi_insert): Likewise.
12430 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
12431 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
12432 Likewise.
12433 (back_threader_profitability::possibly_profitable_path_p):
12434 Likewise.
12435 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
12436 Likewise.
12437 * tree-switch-conversion.cc (pass_convert_switch::execute):
12438 Likewise.
12439 (pass_lower_switch<O0>::execute): Likewise.
12440 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
12441 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
12442 * tree-vect-slp.cc (vect_slp_function): Likewise.
12443 * tree-vect-stmts.cc (cfun_returns): Likewise.
12444 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
12445 (vect_loop_dist_alias_call): Likewise.
12446
12447 2023-04-24 Richard Biener <rguenther@suse.de>
12448
12449 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
12450
12451 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12452
12453 * config/riscv/riscv-vsetvl.cc
12454 (vector_infos_manager::all_avail_in_compatible_p): New function.
12455 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
12456 * config/riscv/riscv-vsetvl.h: New function.
12457
12458 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12459
12460 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
12461 comment for cleanup_insns.
12462
12463 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12464
12465 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
12466 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
12467 with the fault first load property.
12468
12469 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12470
12471 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
12472 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
12473
12474 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12475
12476 PR target/99195
12477 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
12478 (aarch64_addp<mode><vczle><vczbe>): ... This.
12479
12480 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12481
12482 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
12483 provide reasonable values for common arithmetic operations and
12484 immediate operands (in several machine modes).
12485
12486 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12487
12488 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
12489 format specifier to output high_part register name of SImode reg.
12490 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
12491 (zero_extendqihi2): Fix lengths, consistent formatting and add
12492 "and Rx,#255" alternative, for documentation purposes.
12493 (zero_extendhisi2): New define_insn.
12494
12495 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12496
12497 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
12498 SImode shifts by two by performing a single bit SImode shift twice.
12499
12500 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
12501
12502 PR tree-optimization/109593
12503 * value-range.cc (frange::operator==): Handle NANs.
12504
12505 2023-04-23 liuhongt <hongtao.liu@intel.com>
12506
12507 PR rtl-optimization/108707
12508 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
12509 GENERAL_REGS when preferred reg_class is not known.
12510
12511 2023-04-22 Andrew Pinski <apinski@marvell.com>
12512
12513 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
12514 Change the code around slightly to move diamond
12515 handling for do_store_elim/do_hoist_loads out of
12516 the big if/else.
12517
12518 2023-04-22 Andrew Pinski <apinski@marvell.com>
12519
12520 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
12521 Remove check on empty_block_p.
12522
12523 2023-04-22 Jakub Jelinek <jakub@redhat.com>
12524
12525 PR bootstrap/109589
12526 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
12527 * realmpfr.h (class auto_mpfr): Likewise.
12528
12529 2023-04-22 Jakub Jelinek <jakub@redhat.com>
12530
12531 PR tree-optimization/109583
12532 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
12533 if vec_mode is not VECTOR_MODE_P.
12534
12535 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
12536 Ondrej Kubanek <kubanek0ondrej@gmail.com>
12537
12538 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
12539 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
12540 loop profile and bounds after header duplication.
12541 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
12542 Break out from try_peel_loop; fix handling of 0 iterations.
12543 (try_peel_loop): Use adjust_loop_info_after_peeling.
12544
12545 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
12546
12547 PR tree-optimization/109546
12548 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
12549 not fold conditions with ADDR_EXPR early.
12550
12551 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12552
12553 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
12554 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
12555 for umax.
12556 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
12557 (*aarch64_<optab><mode>3_zero): Define.
12558 (*aarch64_<optab><mode>3_cssc): Likewise.
12559 * config/aarch64/iterators.md (maxminand): New code attribute.
12560
12561 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12562
12563 PR target/108779
12564 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
12565 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
12566 Define prototype.
12567 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
12568 (aarch64_override_options_internal): Handle the above.
12569 (aarch64_output_load_tp): New function.
12570 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
12571 aarch64_output_load_tp.
12572 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
12573 (mtp=): New option.
12574 * doc/invoke.texi (AArch64 Options): Document -mtp=.
12575
12576 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12577
12578 PR target/99195
12579 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
12580 (add_vec_concat_subst_be): Likewise.
12581 (vczle): Likewise.
12582 (vczbe): Likewise.
12583 (add<mode>3): Rename to...
12584 (add<mode>3<vczle><vczbe>): ... This.
12585 (sub<mode>3): Rename to...
12586 (sub<mode>3<vczle><vczbe>): ... This.
12587 (mul<mode>3): Rename to...
12588 (mul<mode>3<vczle><vczbe>): ... This.
12589 (and<mode>3): Rename to...
12590 (and<mode>3<vczle><vczbe>): ... This.
12591 (ior<mode>3): Rename to...
12592 (ior<mode>3<vczle><vczbe>): ... This.
12593 (xor<mode>3): Rename to...
12594 (xor<mode>3<vczle><vczbe>): ... This.
12595 * config/aarch64/iterators.md (VDZ): Define.
12596
12597 2023-04-21 Patrick Palka <ppalka@redhat.com>
12598
12599 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
12600 and type_p.
12601
12602 2023-04-21 Jan Hubicka <jh@suse.cz>
12603
12604 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
12605 commit.
12606
12607 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
12608
12609 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
12610 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
12611
12612 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12613
12614 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
12615 force_reg instead of copy_to_mode_reg.
12616 (aarch64_expand_vector_init): Likewise.
12617
12618 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
12619
12620 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
12621 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
12622 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
12623 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
12624 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
12625 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
12626 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
12627 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
12628 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
12629 * config/i386/predicates.md (index_register_operand):
12630 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
12631 * config/i386/i386.cc (ix86_legitimate_address_p): Use
12632 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
12633 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
12634
12635 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12636 Ondrej Kubanek <kubanek0ondrej@gmail.com>
12637
12638 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
12639 latch.
12640
12641 2023-04-21 Richard Biener <rguenther@suse.de>
12642
12643 * is-a.h (safe_is_a): New.
12644
12645 2023-04-21 Richard Biener <rguenther@suse.de>
12646
12647 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
12648 (gphi_iterator::operator*): Likewise.
12649
12650 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12651 Michal Jires <michal@jires.eu>
12652
12653 * ipa-inline.cc (class inline_badness): New class.
12654 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
12655 of sreal.
12656 (update_edge_key): Update.
12657 (lookup_recursive_calls): Likewise.
12658 (recursive_inlining): Likewise.
12659 (add_new_edges_to_heap): Likewise.
12660 (inline_small_functions): Likewise.
12661
12662 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12663
12664 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
12665
12666 2023-04-21 Richard Biener <rguenther@suse.de>
12667
12668 PR tree-optimization/109573
12669 * tree-vect-loop.cc (vectorizable_live_operation): Allow
12670 unhandled SSA copy as well. Demote assert to checking only.
12671
12672 2023-04-21 Richard Biener <rguenther@suse.de>
12673
12674 * df-core.cc (df_analyze): Compute RPO on the reverse graph
12675 for DF_BACKWARD problems.
12676 (loop_post_order_compute): Rename to ...
12677 (loop_rev_post_order_compute): ... this, compute a RPO.
12678 (loop_inverted_post_order_compute): Rename to ...
12679 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
12680 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
12681 problems, RPO on the inverted graph for DF_BACKWARD.
12682
12683 2023-04-21 Richard Biener <rguenther@suse.de>
12684
12685 * cfganal.h (inverted_rev_post_order_compute): Rename
12686 from ...
12687 (inverted_post_order_compute): ... this. Add struct function
12688 argument, change allocation to a C array.
12689 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
12690 * lcm.cc (compute_antinout_edge): Adjust.
12691 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
12692 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
12693 * tree-ssa-pre.cc (compute_antic): Likewise.
12694
12695 2023-04-21 Richard Biener <rguenther@suse.de>
12696
12697 * df.h (df_d::postorder_inverted): Change back to int *,
12698 clarify comments.
12699 * df-core.cc (rest_of_handle_df_finish): Adjust.
12700 (df_analyze_1): Likewise.
12701 (df_analyze): For DF_FORWARD problems use RPO on the forward
12702 graph. Adjust.
12703 (loop_inverted_post_order_compute): Adjust API.
12704 (df_analyze_loop): Adjust.
12705 (df_get_n_blocks): Likewise.
12706 (df_get_postorder): Likewise.
12707
12708 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12709
12710 PR target/108270
12711 * config/riscv/riscv-vsetvl.cc
12712 (vector_infos_manager::all_empty_predecessor_p): New function.
12713 (pass_vsetvl::backward_demand_fusion): Ditto.
12714 * config/riscv/riscv-vsetvl.h: Ditto.
12715
12716 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
12717
12718 PR target/109582
12719 * config/riscv/generic.md: Change standard names to insn names.
12720
12721 2023-04-21 Richard Biener <rguenther@suse.de>
12722
12723 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
12724 (compute_laterin): Use RPO.
12725 (compute_available): Likewise.
12726
12727 2023-04-21 Peng Fan <fanpeng@loongson.cn>
12728
12729 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
12730
12731 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12732
12733 PR target/109547
12734 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
12735 (vector_insn_info::skip_avl_compatible_p): Ditto.
12736 (vector_insn_info::merge): Remove default value.
12737 (pass_vsetvl::compute_local_backward_infos): Ditto.
12738 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
12739 * config/riscv/riscv-vsetvl.h: Ditto.
12740
12741 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
12742
12743 * doc/extend.texi (Common Function Attributes): Remove duplicate
12744 word.
12745
12746 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
12747
12748 PR tree-optimization/109564
12749 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
12750 UNDEFINED range names when deciding if all PHI arguments are the same,
12751
12752 2023-04-20 Jakub Jelinek <jakub@redhat.com>
12753
12754 PR tree-optimization/109011
12755 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
12756 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
12757 .CTZ (X) = PREC - .POPCOUNT (X | -X).
12758
12759 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
12760
12761 * lra-constraints.cc (match_reload): Exclude some hard regs for
12762 multi-reg inout reload pseudos used in asm in different mode.
12763
12764 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
12765
12766 * config/arm/arm.cc (thumb1_legitimate_address_p):
12767 Use VIRTUAL_REGISTER_P predicate.
12768 (arm_eliminable_register): Ditto.
12769 * config/avr/avr.md (push<mode>_1): Ditto.
12770 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
12771 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
12772 * config/i386/predicates.md (register_no_elim_operand): Ditto.
12773 * config/iq2000/predicates.md (call_insn_operand): Ditto.
12774 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
12775
12776 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
12777
12778 PR target/78952
12779 * config/i386/predicates.md (extract_operator): New predicate.
12780 * config/i386/i386.md (any_extract): Remove code iterator.
12781 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
12782 (*cmpqi_ext<mode>_1): Ditto.
12783 (*cmpqi_ext<mode>_2): Ditto.
12784 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
12785 (*cmpqi_ext<mode>_3): Ditto.
12786 (*cmpqi_ext<mode>_4): Ditto.
12787 (*extzvqi_mem_rex64): Ditto.
12788 (*extzvqi): Ditto.
12789 (*insvqi_2): Ditto.
12790 (*extendqi<SWI24:mode>_ext_1): Ditto.
12791 (*addqi_ext<mode>_0): Ditto.
12792 (*addqi_ext<mode>_1): Ditto.
12793 (*addqi_ext<mode>_2): Ditto.
12794 (*subqi_ext<mode>_0): Ditto.
12795 (*subqi_ext<mode>_2): Ditto.
12796 (*testqi_ext<mode>_1): Ditto.
12797 (*testqi_ext<mode>_2): Ditto.
12798 (*andqi_ext<mode>_0): Ditto.
12799 (*andqi_ext<mode>_1): Ditto.
12800 (*andqi_ext<mode>_1_cc): Ditto.
12801 (*andqi_ext<mode>_2): Ditto.
12802 (*<any_or:code>qi_ext<mode>_0): Ditto.
12803 (*<any_or:code>qi_ext<mode>_1): Ditto.
12804 (*<any_or:code>qi_ext<mode>_2): Ditto.
12805 (*xorqi_ext<mode>_1_cc): Ditto.
12806 (*negqi_ext<mode>_2): Ditto.
12807 (*ashlqi_ext<mode>_2): Ditto.
12808 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
12809
12810 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
12811
12812 PR target/108248
12813 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
12814 <bitmanip_insn> as the type to allow for fine grained control of
12815 scheduling these insns.
12816 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
12817 min, max.
12818 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
12819 pcnt, signed and unsigned min/max.
12820
12821 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12822 kito-cheng <kito.cheng@sifive.com>
12823
12824 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
12825
12826 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12827 kito-cheng <kito.cheng@sifive.com>
12828
12829 PR target/109535
12830 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
12831 (pass_vsetvl::cleanup_insns): Fix bug.
12832
12833 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
12834
12835 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
12836 (ldexp<mode>3): Delete.
12837 (ldexp<mode>3<exec>): Change "B" to "A".
12838
12839 2023-04-20 Jakub Jelinek <jakub@redhat.com>
12840 Jonathan Wakely <jwakely@redhat.com>
12841
12842 * tree.h (built_in_function_equal_p): New helper function.
12843 (fndecl_built_in_p): Turn into variadic template to support
12844 1 or more built_in_function arguments.
12845 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
12846 * gimplify.cc (goa_stabilize_expr): Likewise.
12847 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
12848 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
12849 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
12850 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
12851 cgraph_update_edges_for_call_stmt_node,
12852 cgraph_edge::verify_corresponds_to_fndecl,
12853 cgraph_node::verify_node): Likewise.
12854 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
12855 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
12856 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
12857
12858 2023-04-20 Jakub Jelinek <jakub@redhat.com>
12859
12860 PR tree-optimization/109011
12861 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
12862 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
12863 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
12864 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
12865 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
12866 case.
12867 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
12868
12869 2023-04-20 Richard Biener <rguenther@suse.de>
12870
12871 * df-core.cc (rest_of_handle_df_initialize): Remove
12872 computation of df->postorder, df->postorder_inverted and
12873 df->n_blocks.
12874
12875 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
12876
12877 * common/config/i386/i386-common.cc
12878 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
12879 (ix86_handle_option): Set AVX flag for VAES.
12880 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
12881 Add OPTION_MASK_ISA2_VAES_UNSET.
12882 (def_builtin): Share builtin between AES and VAES.
12883 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
12884 Ditto.
12885 * config/i386/i386.md (aes): New isa attribute.
12886 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
12887 (aesenclast): Ditto.
12888 (aesdec): Ditto.
12889 (aesdeclast): Ditto.
12890 * config/i386/vaesintrin.h: Remove redundant avx target push.
12891 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
12892 (_mm_aesdeclast_si128): Ditto.
12893 (_mm_aesenc_si128): Ditto.
12894 (_mm_aesenclast_si128): Ditto.
12895
12896 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
12897
12898 * config/i386/avx2intrin.h
12899 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
12900 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
12901 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
12902 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
12903 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
12904 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
12905 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
12906 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
12907 (_mm_reduce_add_epi16): New instrinsics.
12908 (_mm_reduce_mul_epi16): Ditto.
12909 (_mm_reduce_and_epi16): Ditto.
12910 (_mm_reduce_or_epi16): Ditto.
12911 (_mm_reduce_max_epi16): Ditto.
12912 (_mm_reduce_max_epu16): Ditto.
12913 (_mm_reduce_min_epi16): Ditto.
12914 (_mm_reduce_min_epu16): Ditto.
12915 (_mm256_reduce_add_epi16): Ditto.
12916 (_mm256_reduce_mul_epi16): Ditto.
12917 (_mm256_reduce_and_epi16): Ditto.
12918 (_mm256_reduce_or_epi16): Ditto.
12919 (_mm256_reduce_max_epi16): Ditto.
12920 (_mm256_reduce_max_epu16): Ditto.
12921 (_mm256_reduce_min_epi16): Ditto.
12922 (_mm256_reduce_min_epu16): Ditto.
12923 (_mm_reduce_add_epi8): Ditto.
12924 (_mm_reduce_mul_epi8): Ditto.
12925 (_mm_reduce_and_epi8): Ditto.
12926 (_mm_reduce_or_epi8): Ditto.
12927 (_mm_reduce_max_epi8): Ditto.
12928 (_mm_reduce_max_epu8): Ditto.
12929 (_mm_reduce_min_epi8): Ditto.
12930 (_mm_reduce_min_epu8): Ditto.
12931 (_mm256_reduce_add_epi8): Ditto.
12932 (_mm256_reduce_mul_epi8): Ditto.
12933 (_mm256_reduce_and_epi8): Ditto.
12934 (_mm256_reduce_or_epi8): Ditto.
12935 (_mm256_reduce_max_epi8): Ditto.
12936 (_mm256_reduce_max_epu8): Ditto.
12937 (_mm256_reduce_min_epi8): Ditto.
12938 (_mm256_reduce_min_epu8): Ditto.
12939 * config/i386/avx512vlbwintrin.h:
12940 (_mm_mask_reduce_add_epi16): Ditto.
12941 (_mm_mask_reduce_mul_epi16): Ditto.
12942 (_mm_mask_reduce_and_epi16): Ditto.
12943 (_mm_mask_reduce_or_epi16): Ditto.
12944 (_mm_mask_reduce_max_epi16): Ditto.
12945 (_mm_mask_reduce_max_epu16): Ditto.
12946 (_mm_mask_reduce_min_epi16): Ditto.
12947 (_mm_mask_reduce_min_epu16): Ditto.
12948 (_mm256_mask_reduce_add_epi16): Ditto.
12949 (_mm256_mask_reduce_mul_epi16): Ditto.
12950 (_mm256_mask_reduce_and_epi16): Ditto.
12951 (_mm256_mask_reduce_or_epi16): Ditto.
12952 (_mm256_mask_reduce_max_epi16): Ditto.
12953 (_mm256_mask_reduce_max_epu16): Ditto.
12954 (_mm256_mask_reduce_min_epi16): Ditto.
12955 (_mm256_mask_reduce_min_epu16): Ditto.
12956 (_mm_mask_reduce_add_epi8): Ditto.
12957 (_mm_mask_reduce_mul_epi8): Ditto.
12958 (_mm_mask_reduce_and_epi8): Ditto.
12959 (_mm_mask_reduce_or_epi8): Ditto.
12960 (_mm_mask_reduce_max_epi8): Ditto.
12961 (_mm_mask_reduce_max_epu8): Ditto.
12962 (_mm_mask_reduce_min_epi8): Ditto.
12963 (_mm_mask_reduce_min_epu8): Ditto.
12964 (_mm256_mask_reduce_add_epi8): Ditto.
12965 (_mm256_mask_reduce_mul_epi8): Ditto.
12966 (_mm256_mask_reduce_and_epi8): Ditto.
12967 (_mm256_mask_reduce_or_epi8): Ditto.
12968 (_mm256_mask_reduce_max_epi8): Ditto.
12969 (_mm256_mask_reduce_max_epu8): Ditto.
12970 (_mm256_mask_reduce_min_epi8): Ditto.
12971 (_mm256_mask_reduce_min_epu8): Ditto.
12972
12973 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
12974
12975 * common/config/i386/i386-common.cc
12976 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
12977 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
12978 (OPTION_MASK_ISA_AVX_UNSET):
12979 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
12980 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
12981 * config/i386/i386.md (vpclmulqdqvl): New.
12982 * config/i386/sse.md (pclmulqdq): Add evex encoding.
12983 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
12984 push.
12985
12986 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
12987
12988 * config/i386/avx512vlbwintrin.h
12989 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
12990 (_mm_mask_blend_epi8): Ditto.
12991 (_mm256_mask_blend_epi16): Ditto.
12992 (_mm256_mask_blend_epi8): Ditto.
12993 * config/i386/avx512vlintrin.h
12994 (_mm256_mask_blend_pd): Ditto.
12995 (_mm256_mask_blend_ps): Ditto.
12996 (_mm256_mask_blend_epi64): Ditto.
12997 (_mm256_mask_blend_epi32): Ditto.
12998 (_mm_mask_blend_pd): Ditto.
12999 (_mm_mask_blend_ps): Ditto.
13000 (_mm_mask_blend_epi64): Ditto.
13001 (_mm_mask_blend_epi32): Ditto.
13002 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
13003 (VF_AVX512HFBFVL): Move it before the first usage.
13004 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
13005 to VF_AVX512HFBFVL.
13006
13007 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13008
13009 * common/config/i386/i386-common.cc
13010 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
13011 to OPTION_MASK_ISA_AVX512BW_SET.
13012 (OPTION_MASK_ISA_AVX512F_UNSET):
13013 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
13014 (OPTION_MASK_ISA_AVX512BW_UNSET):
13015 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
13016 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
13017 * config/i386/avx512vbmi2vlintrin.h: Ditto.
13018 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
13019 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
13020 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
13021 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
13022 VI12_AVX512VL.
13023 (compressstore<mode>_mask): Ditto.
13024 (expand<mode>_mask): Ditto.
13025 (expand<mode>_maskz): Ditto.
13026 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
13027 VI12_VI48F_AVX512VL.
13028
13029 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13030
13031 * common/config/i386/i386-common.cc
13032 (OPTION_MASK_ISA_AVX512BITALG_SET):
13033 Change OPTION_MASK_ISA_AVX512F_SET
13034 to OPTION_MASK_ISA_AVX512BW_SET.
13035 (OPTION_MASK_ISA_AVX512F_UNSET):
13036 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
13037 (OPTION_MASK_ISA_AVX512BW_UNSET):
13038 Add OPTION_MASK_ISA_AVX512BITALG_SET.
13039 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
13040 * config/i386/i386-builtin.def:
13041 Remove redundant OPTION_MASK_ISA_AVX512BW.
13042 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
13043 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
13044 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
13045
13046 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13047
13048 * config/i386/i386-expand.cc
13049 (ix86_check_builtin_isa_match): Correct wrong comments.
13050 Add a new macro SHARE_BUILTIN and refactor the current if
13051 clauses to macro.
13052
13053 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
13054
13055 * config/i386/cpuid.h: Open a new section for Extended Features
13056 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
13057 %ecx == 1).
13058
13059 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
13060
13061 * config/i386/sse.md: Modify insn vperm{i,f}
13062 and vshuf{i,f}.
13063
13064 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
13065
13066 * config/xtensa/xtensa-opts.h: New header.
13067 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
13068 xtensa_strict_align.
13069 * config/xtensa/xtensa.cc (xtensa_option_override): When
13070 -m[no-]strict-align is not specified in the command line set
13071 xtensa_strict_align to 0 if the hardware supports both unaligned
13072 loads and stores or to 1 otherwise.
13073 * config/xtensa/xtensa.opt (mstrict-align): New option.
13074 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
13075
13076 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
13077
13078 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
13079 function.
13080
13081 2023-04-19 Andrew Pinski <apinski@marvell.com>
13082
13083 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
13084
13085 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13086
13087 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
13088 (VECTOR_BOOL_MODE): Ditto.
13089 (ADJUST_NUNITS): Ditto.
13090 (ADJUST_ALIGNMENT): Ditto.
13091 (ADJUST_BYTESIZE): Ditto.
13092 (ADJUST_PRECISION): Ditto.
13093 (RVV_MODES): Ditto.
13094 (VECTOR_MODE_WITH_PREFIX): Ditto.
13095 * config/riscv/riscv-v.cc (ENTRY): Ditto.
13096 (get_vlmul): Ditto.
13097 (get_ratio): Ditto.
13098 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
13099 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
13100 (vbool64_t): Ditto.
13101 (vbool32_t): Ditto.
13102 (vbool16_t): Ditto.
13103 (vbool8_t): Ditto.
13104 (vbool4_t): Ditto.
13105 (vbool2_t): Ditto.
13106 (vbool1_t): Ditto.
13107 (vint8mf8_t): Ditto.
13108 (vuint8mf8_t): Ditto.
13109 (vint8mf4_t): Ditto.
13110 (vuint8mf4_t): Ditto.
13111 (vint8mf2_t): Ditto.
13112 (vuint8mf2_t): Ditto.
13113 (vint8m1_t): Ditto.
13114 (vuint8m1_t): Ditto.
13115 (vint8m2_t): Ditto.
13116 (vuint8m2_t): Ditto.
13117 (vint8m4_t): Ditto.
13118 (vuint8m4_t): Ditto.
13119 (vint8m8_t): Ditto.
13120 (vuint8m8_t): Ditto.
13121 (vint16mf4_t): Ditto.
13122 (vuint16mf4_t): Ditto.
13123 (vint16mf2_t): Ditto.
13124 (vuint16mf2_t): Ditto.
13125 (vint16m1_t): Ditto.
13126 (vuint16m1_t): Ditto.
13127 (vint16m2_t): Ditto.
13128 (vuint16m2_t): Ditto.
13129 (vint16m4_t): Ditto.
13130 (vuint16m4_t): Ditto.
13131 (vint16m8_t): Ditto.
13132 (vuint16m8_t): Ditto.
13133 (vint32mf2_t): Ditto.
13134 (vuint32mf2_t): Ditto.
13135 (vint32m1_t): Ditto.
13136 (vuint32m1_t): Ditto.
13137 (vint32m2_t): Ditto.
13138 (vuint32m2_t): Ditto.
13139 (vint32m4_t): Ditto.
13140 (vuint32m4_t): Ditto.
13141 (vint32m8_t): Ditto.
13142 (vuint32m8_t): Ditto.
13143 (vint64m1_t): Ditto.
13144 (vuint64m1_t): Ditto.
13145 (vint64m2_t): Ditto.
13146 (vuint64m2_t): Ditto.
13147 (vint64m4_t): Ditto.
13148 (vuint64m4_t): Ditto.
13149 (vint64m8_t): Ditto.
13150 (vuint64m8_t): Ditto.
13151 (vfloat32mf2_t): Ditto.
13152 (vfloat32m1_t): Ditto.
13153 (vfloat32m2_t): Ditto.
13154 (vfloat32m4_t): Ditto.
13155 (vfloat32m8_t): Ditto.
13156 (vfloat64m1_t): Ditto.
13157 (vfloat64m2_t): Ditto.
13158 (vfloat64m4_t): Ditto.
13159 (vfloat64m8_t): Ditto.
13160 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
13161 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
13162 (riscv_convert_vector_bits): Ditto.
13163 * config/riscv/riscv.md:
13164 * config/riscv/vector-iterators.md:
13165 * config/riscv/vector.md
13166 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
13167 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
13168 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
13169 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
13170 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
13171 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
13172 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
13173 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
13174 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
13175
13176 2023-04-19 Pan Li <pan2.li@intel.com>
13177
13178 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
13179 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
13180
13181 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
13182
13183 PR target/78904
13184 PR target/78952
13185 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
13186 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
13187 for operand 0. Use any_extract code iterator.
13188 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
13189 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
13190 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
13191 (*cmpqi_ext<mode>_1): Use general_operand predicate
13192 for operand 1. Use any_extract code iterator.
13193 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
13194 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
13195
13196 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13197
13198 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
13199 (aarch64_uaddw2<mode>): Delete.
13200 (aarch64_ssubw2<mode>): Delete.
13201 (aarch64_usubw2<mode>): Delete.
13202 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
13203
13204 2023-04-19 Richard Biener <rguenther@suse.de>
13205
13206 * tree-ssa-structalias.cc (do_ds_constraint): Use
13207 solve_add_graph_edge.
13208
13209 2023-04-19 Richard Biener <rguenther@suse.de>
13210
13211 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
13212 split out from ...
13213 (do_sd_constraint): ... here.
13214
13215 2023-04-19 Richard Biener <rguenther@suse.de>
13216
13217 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
13218 rejecting the merge when A contains only a non-local label.
13219
13220 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
13221
13222 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
13223 (VIRTUAL_REGISTER_NUM_P): Ditto.
13224 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
13225 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
13226 * function.cc (instantiate_decl_rtl): Ditto.
13227 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
13228 (nonzero_address_p): Ditto.
13229 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
13230
13231 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
13232
13233 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
13234
13235 2023-04-19 Richard Biener <rguenther@suse.de>
13236
13237 * system.h (auto_mpz::operator->()): New.
13238 * realmpfr.h (auto_mpfr::operator->()): New.
13239 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
13240 * real.cc (real_from_string): Likewise.
13241 (dconst_e_ptr): Likewise.
13242 (dconst_sqrt2_ptr): Likewise.
13243 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
13244 Use auto_mpz.
13245 (bound_difference_of_offsetted_base): Likewise.
13246 (number_of_iterations_ne): Likewise.
13247 (number_of_iterations_lt_to_ne): Likewise.
13248 * ubsan.cc: Include realmpfr.h.
13249 (ubsan_instrument_float_cast): Use auto_mpfr.
13250
13251 2023-04-19 Richard Biener <rguenther@suse.de>
13252
13253 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
13254 edges, remove edges from escaped after special-casing them.
13255
13256 2023-04-19 Richard Biener <rguenther@suse.de>
13257
13258 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
13259 special casing.
13260
13261 2023-04-19 Richard Biener <rguenther@suse.de>
13262
13263 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
13264 to the LHS varinfo solution member.
13265
13266 2023-04-19 Richard Biener <rguenther@suse.de>
13267
13268 * tree-ssa-structalias.cc (topo_visit): Look at the real
13269 destination of edges.
13270
13271 2023-04-19 Richard Biener <rguenther@suse.de>
13272
13273 PR tree-optimization/44794
13274 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
13275 If an epilogue loop is required set its iteration upper bound.
13276
13277 2023-04-19 Xi Ruoyao <xry111@xry111.site>
13278
13279 PR target/109465
13280 * config/loongarch/loongarch-protos.h
13281 (loongarch_expand_block_move): Add a parameter as alignment RTX.
13282 * config/loongarch/loongarch.h:
13283 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
13284 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
13285 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
13286 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
13287 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
13288 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
13289 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
13290 Take the alignment from the parameter, but set it to
13291 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
13292 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
13293 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
13294 (loongarch_block_move_straight): When there are left-over bytes,
13295 half the mode size instead of falling back to byte mode at once.
13296 (loongarch_block_move_loop): Limit the length of loop body with
13297 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
13298 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
13299 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
13300 to loongarch_expand_block_move.
13301
13302 2023-04-19 Xi Ruoyao <xry111@xry111.site>
13303
13304 * config/loongarch/loongarch.cc
13305 (loongarch_setup_incoming_varargs): Don't save more GARs than
13306 cfun->va_list_gpr_size / UNITS_PER_WORD.
13307
13308 2023-04-19 Richard Biener <rguenther@suse.de>
13309
13310 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
13311 no epilogue condition.
13312
13313 2023-04-19 Richard Biener <rguenther@suse.de>
13314
13315 * gimple.h (gimple_assign_load): Outline...
13316 * gimple.cc (gimple_assign_load): ... here. Avoid
13317 get_base_address and instead just strip the outermost
13318 handled component, treating a remaining handled component
13319 as load.
13320
13321 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13322
13323 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
13324 definition.
13325 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
13326
13327 2023-04-19 Jakub Jelinek <jakub@redhat.com>
13328
13329 PR tree-optimization/109011
13330 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
13331 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
13332 CLZ, CTZ and FFS. Remove vargs variable, use
13333 gimple_build_call_internal rather than gimple_build_call_internal_vec.
13334 (vect_vect_recog_func_ptrs): Adjust popcount entry.
13335
13336 2023-04-19 Jakub Jelinek <jakub@redhat.com>
13337
13338 PR target/109040
13339 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
13340 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
13341 a new REG rather than the SUBREG.
13342
13343 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13344
13345 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
13346 New pattern.
13347
13348 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13349
13350 PR target/108840
13351 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
13352 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
13353
13354 2023-04-19 Richard Biener <rguenther@suse.de>
13355
13356 PR rtl-optimization/109237
13357 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
13358 TREE_VISITED on INSN_VAR_LOCATION_DECL.
13359 (delete_trivially_dead_insns): Maintain TREE_VISITED on
13360 active debug bind INSN_VAR_LOCATION_DECL.
13361
13362 2023-04-19 Richard Biener <rguenther@suse.de>
13363
13364 PR rtl-optimization/109237
13365 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
13366
13367 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
13368
13369 * doc/install.texi (enable-decimal-float): Add AArch64.
13370
13371 2023-04-19 liuhongt <hongtao.liu@intel.com>
13372
13373 PR rtl-optimization/109351
13374 * ira.cc (setup_class_subset_and_memory_move_costs): Check
13375 hard_regno_mode_ok before setting lowest memory move cost for
13376 the mode with different reg classes.
13377
13378 2023-04-18 Jason Merrill <jason@redhat.com>
13379
13380 * doc/invoke.texi: Remove stray @gol.
13381
13382 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
13383
13384 * ifcvt.cc (cond_move_process_if_block): Consider the result of
13385 targetm.noce_conversion_profitable_p() when replacing the original
13386 sequence with the converted one.
13387
13388 2023-04-18 Mark Harmstone <mark@harmstone.com>
13389
13390 * common.opt (gcodeview): Add new option.
13391 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
13392 * opts.cc (command_handle_option): Similarly.
13393 * doc/invoke.texi: Add documentation for -gcodeview.
13394
13395 2023-04-18 Andrew Pinski <apinski@marvell.com>
13396
13397 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
13398 (make_pass_phiopt): Make execute out of line.
13399 (tree_ssa_cs_elim): Move code into ...
13400 (pass_cselim::execute): here.
13401
13402 2023-04-18 Sam James <sam@gentoo.org>
13403
13404 * system.h: Drop unused INCLUDE_PTHREAD_H.
13405
13406 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
13407
13408 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
13409 condition.
13410
13411 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
13412
13413 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
13414 (bswapdi2, bswapsi2): Similarly.
13415
13416 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
13417
13418 PR target/94908
13419 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
13420 Use CODE_FOR_sse4_1_insertps_v4sf.
13421 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
13422 (expand_vec_perm_1): Call expand_vec_per_insertps.
13423 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
13424 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
13425 (@sse4_1_insertps_<mode>): New insn pattern.
13426 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
13427 pattern from sse4_1_insertps using VI4F_128 mode iterator.
13428
13429 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13430
13431 * value-range.cc (gt_ggc_mx): New.
13432 (gt_pch_nx): New.
13433 * value-range.h (class vrange): Add GTY marker.
13434 (class frange): Same.
13435 (gt_ggc_mx): Remove.
13436 (gt_pch_nx): Remove.
13437
13438 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
13439
13440 * lra-constraints.cc (constraint_unique): New.
13441 (process_address_1): Apply constraint_unique test.
13442 * recog.cc (constrain_operands): Allow relaxed memory
13443 constaints.
13444
13445 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
13446
13447 * doc/extend.texi (Target Builtins): Add RISC-V Vector
13448 Intrinsics.
13449 (RISC-V Vector Intrinsics): Document GCC implemented which
13450 version of RISC-V vector intrinsics and its reference.
13451
13452 2023-04-18 Richard Biener <rguenther@suse.de>
13453
13454 PR middle-end/108786
13455 * bitmap.h (bitmap_clear_first_set_bit): New.
13456 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
13457 bitmap_first_set_bit and add optional clearing of the bit.
13458 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
13459 (bitmap_clear_first_set_bit): Likewise.
13460 * df-core.cc (df_worklist_dataflow_doublequeue): Use
13461 bitmap_clear_first_set_bit.
13462 * graphite-scop-detection.cc (scop_detection::merge_sese):
13463 Likewise.
13464 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
13465 (sanitize_asan_mark_poison): Likewise.
13466 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
13467 * tree-into-ssa.cc (rewrite_blocks): Likewise.
13468 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
13469 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
13470
13471 2023-04-18 Richard Biener <rguenther@suse.de>
13472
13473 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
13474 (dump_sa_points_to_info): ... this function.
13475 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
13476 and call dump_sa_stats guarded with TDF_STATS.
13477 (ipa_pta_execute): Likewise.
13478 (compute_may_aliases): Guard dump_alias_info with
13479 TDF_DETAILS|TDF_ALIAS.
13480
13481 2023-04-18 Andrew Pinski <apinski@marvell.com>
13482
13483 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
13484 the expression that is being tried when TDF_FOLDING
13485 is true.
13486 (phiopt_worker::match_simplify_replacement): Dump
13487 the sequence which was created by gimple_simplify_phiopt
13488 when TDF_FOLDING is true.
13489
13490 2023-04-18 Andrew Pinski <apinski@marvell.com>
13491
13492 * tree-ssa-phiopt.cc (match_simplify_replacement):
13493 Simplify code that does the movement slightly.
13494
13495 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13496
13497 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
13498 define_expand.
13499 (rev16<mode>2): Rename to...
13500 (aarch64_rev16<mode>2_alt1): ... This.
13501 (rev16<mode>2_alt): Rename to...
13502 (*aarch64_rev16<mode>2_alt2): ... This.
13503
13504 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13505
13506 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
13507 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
13508 declaration.
13509 * range-op-float.cc (zero_range): Use dconstm0.
13510 (zero_to_inf_range): Same.
13511 * real.h (dconstm0): New.
13512 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
13513 (frange::set_zero): Do not declare dconstm0.
13514
13515 2023-04-18 Richard Biener <rguenther@suse.de>
13516
13517 * system.h (class auto_mpz): New,
13518 * realmpfr.h (class auto_mpfr): Likewise.
13519 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
13520 (do_mpfr_arg2): Likewise.
13521 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
13522
13523 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13524
13525 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
13526 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
13527
13528 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13529
13530 * value-range.cc (frange::operator==): Adjust for NAN.
13531 (range_tests_nan): Remove some NAN tests.
13532
13533 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13534
13535 * inchash.cc (hash::add_real_value): New.
13536 * inchash.h (class hash): Add add_real_value.
13537 * value-range.cc (add_vrange): New.
13538 * value-range.h (inchash::add_vrange): New.
13539
13540 2023-04-18 Richard Biener <rguenther@suse.de>
13541
13542 PR tree-optimization/109539
13543 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
13544 Re-implement pointer relatedness for PHIs.
13545
13546 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
13547
13548 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
13549 (SV_FP): New iterator.
13550 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
13551 (recip<mode>2): Unify the two patterns using SV_FP.
13552 (div_scale<mode><exec_vcc>): New insn.
13553 (div_fmas<mode><exec>): New insn.
13554 (div_fixup<mode><exec>): New insn.
13555 (div<mode>3): Unify the two expanders and rewrite using hardfp.
13556 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
13557 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
13558 and UNSPEC_DIV_FIXUP.
13559 (vccwait): New attribute.
13560
13561 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13562
13563 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
13564 if the argument matches that.
13565
13566 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13567
13568 * config/aarch64/atomics.md
13569 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
13570 Use SD_HSDI for destination mode iterator.
13571
13572 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
13573
13574 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
13575 of z-extensions and s-extensions.
13576 (riscv_subset_list::parse): Likewise.
13577
13578 2023-04-18 Jakub Jelinek <jakub@redhat.com>
13579
13580 PR tree-optimization/109240
13581 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
13582 first vec_perm operand and minus as second using fneg/fadd and
13583 minus as first vec_perm operand and plus as second using fneg/fsub.
13584
13585 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13586
13587 * data-streamer.cc (bp_pack_real_value): New.
13588 (bp_unpack_real_value): New.
13589 * data-streamer.h (bp_pack_real_value): New.
13590 (bp_unpack_real_value): New.
13591 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
13592 bp_unpack_real_value.
13593 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
13594 bp_pack_real_value.
13595
13596 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13597
13598 * wide-int.h (WIDE_INT_MAX_HWIS): New.
13599 (class fixed_wide_int_storage): Use it.
13600 (trailing_wide_ints <N>::set_precision): Use it.
13601 (trailing_wide_ints <N>::extra_size): Use it.
13602
13603 2023-04-18 Xi Ruoyao <xry111@xry111.site>
13604
13605 * config/loongarch/loongarch-protos.h
13606 (loongarch_addu16i_imm12_operand_p): New function prototype.
13607 (loongarch_split_plus_constant): Likewise.
13608 * config/loongarch/loongarch.cc
13609 (loongarch_addu16i_imm12_operand_p): New function.
13610 (loongarch_split_plus_constant): Likewise.
13611 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
13612 (DUAL_IMM12_OPERAND): Likewise.
13613 (DUAL_ADDU16I_OPERAND): Likewise.
13614 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
13615 constraint.
13616 * config/loongarch/predicates.md (const_dual_imm12_operand): New
13617 predicate.
13618 (const_addu16i_operand): Likewise.
13619 (const_addu16i_imm12_di_operand): Likewise.
13620 (const_addu16i_imm12_si_operand): Likewise.
13621 (plus_di_operand): Likewise.
13622 (plus_si_operand): Likewise.
13623 (plus_si_extend_operand): Likewise.
13624 * config/loongarch/loongarch.md (add<mode>3): Convert to
13625 define_insn_and_split. Use plus_<mode>_operand predicate
13626 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
13627 and Le constraints.
13628 (*addsi3_extended): Convert to define_insn_and_split. Use
13629 plus_si_extend_operand instead of arith_operand. Add
13630 alternatives for La and Le alternatives.
13631
13632 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13633
13634 * value-range.h (Value_Range::Value_Range): New.
13635 (Value_Range::contains_p): New.
13636
13637 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13638
13639 * value-range.h (class vrange): Make m_discriminator const.
13640 (class irange): Make m_max_ranges const. Adjust constructors
13641 accordingly.
13642 (class unsupported_range): Construct vrange appropriately.
13643 (class frange): Same.
13644
13645 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
13646
13647 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
13648 definition.
13649
13650 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
13651
13652 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
13653
13654 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
13655
13656 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
13657 readable.
13658 (riscv_expand_epilogue): Likewise.
13659
13660 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
13661
13662 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
13663 stack allocation.
13664 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
13665
13666 2023-04-17 Andrew Pinski <apinski@marvell.com>
13667
13668 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
13669 prototype.
13670
13671 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
13672
13673 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
13674 global ranges.
13675
13676 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
13677
13678 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
13679 parameter remaining_size.
13680 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
13681 (riscv_expand_prologue): Likewise.
13682 (riscv_expand_epilogue): Likewise.
13683
13684 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
13685
13686 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
13687 roriw for constant counts.
13688 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
13689 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
13690 (simplify_context::simplify_binary_operation_1): Use it.
13691 * expmed.cc (expand_shift_1): Likewise.
13692
13693 2023-04-17 Martin Jambor <mjambor@suse.cz>
13694
13695 PR ipa/107769
13696 PR ipa/109318
13697 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
13698 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
13699 (ipa_zap_jf_refdesc): New function.
13700 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
13701 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
13702 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
13703 the new parameter of find_reference.
13704 (adjust_references_in_caller): Likewise. Make sure the constant jump
13705 function is not used to decrement a refdec counter again. Only
13706 decrement refdesc counters when the pass_through jump function allows
13707 it. Added a detailed dump when decrementing refdesc counters.
13708 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
13709 (ipa_set_jf_simple_pass_through): Initialize the new flag.
13710 (ipa_set_jf_unary_pass_through): Likewise.
13711 (ipa_set_jf_arith_pass_through): Likewise.
13712 (remove_described_reference): Provide a value for the new parameter of
13713 find_reference.
13714 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
13715 the previous pass_through had a flag mandating that we do so.
13716 (propagate_controlled_uses): Likewise. Only decrement refdesc
13717 counters when the pass_through jump function allows it.
13718 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
13719 parameter of find_reference.
13720 (ipa_write_jump_function): Assert the new flag does not have to be
13721 streamed.
13722 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
13723 it in searching.
13724
13725 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
13726 Di Zhao <di.zhao@amperecomputing.com>
13727
13728 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
13729 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
13730 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
13731 Check for the above tuning option when processing loads.
13732
13733 2023-04-17 Richard Biener <rguenther@suse.de>
13734
13735 PR tree-optimization/109524
13736 * tree-vrp.cc (remove_unreachable::m_list): Change to a
13737 vector of pairs of block indices.
13738 (remove_unreachable::maybe_register_block): Adjust.
13739 (remove_unreachable::remove_and_update_globals): Likewise.
13740 Deal with removed blocks.
13741
13742 2023-04-16 Jeff Law <jlaw@ventanamicro>
13743
13744 PR target/109508
13745 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
13746 TARGET_SFB_ALU, force the true arm into a register.
13747
13748 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
13749
13750 PR target/104989
13751 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
13752 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
13753 size is zero.
13754 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
13755 (pa_function_arg_size): Change return type to int. Return zero
13756 for arguments larger than 1 GB. Update comments.
13757
13758 2023-04-15 Jakub Jelinek <jakub@redhat.com>
13759
13760 PR tree-optimization/109154
13761 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
13762 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
13763
13764 2023-04-15 Jason Merrill <jason@redhat.com>
13765
13766 PR c++/109514
13767 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
13768 Overhaul lhs_ref.ref analysis.
13769
13770 2023-04-14 Richard Biener <rguenther@suse.de>
13771
13772 PR tree-optimization/109502
13773 * tree-vect-stmts.cc (vectorizable_assignment): Fix
13774 check for conversion between mask and non-mask types.
13775
13776 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
13777 Jakub Jelinek <jakub@redhat.com>
13778
13779 PR target/108947
13780 PR target/109040
13781 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
13782 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
13783 smaller than word_mode.
13784 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
13785 <case AND>: Likewise.
13786
13787 2023-04-14 Jakub Jelinek <jakub@redhat.com>
13788
13789 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
13790 of GEN_INT.
13791
13792 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
13793
13794 PR tree-optimization/108139
13795 PR tree-optimization/109462
13796 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
13797 equivalency check for PHI nodes.
13798 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
13799 does not dominate single-arg equivalency edges.
13800
13801 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
13802
13803 PR target/108910
13804 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
13805 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
13806
13807 2023-04-13 Richard Biener <rguenther@suse.de>
13808
13809 PR tree-optimization/109491
13810 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
13811 NULL operands test.
13812
13813 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13814
13815 PR target/109479
13816 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
13817 (vint16mf4_t): Ditto.
13818 (vint32mf2_t): Ditto.
13819 (vint64m1_t): Ditto.
13820 (vint64m2_t): Ditto.
13821 (vint64m4_t): Ditto.
13822 (vint64m8_t): Ditto.
13823 (vuint8mf8_t): Ditto.
13824 (vuint16mf4_t): Ditto.
13825 (vuint32mf2_t): Ditto.
13826 (vuint64m1_t): Ditto.
13827 (vuint64m2_t): Ditto.
13828 (vuint64m4_t): Ditto.
13829 (vuint64m8_t): Ditto.
13830 (vfloat32mf2_t): Ditto.
13831 (vbool64_t): Ditto.
13832 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
13833 (register_vector_type): Ditto.
13834 (check_required_extensions): Fix condition.
13835 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
13836 (RVV_REQUIRE_ELEN_64): New define.
13837 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
13838 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
13839 (TARGET_VECTOR_FP64): Ditto.
13840 (ENTRY): Fix predicate.
13841 * config/riscv/vector-iterators.md: Fix predicate.
13842
13843 2023-04-12 Jakub Jelinek <jakub@redhat.com>
13844
13845 PR tree-optimization/109410
13846 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
13847 block if first statement of the function is a call to returns_twice
13848 function.
13849
13850 2023-04-12 Jakub Jelinek <jakub@redhat.com>
13851
13852 PR target/109458
13853 * config/i386/i386.cc: Include rtl-error.h.
13854 (ix86_print_operand): For z modifier warning, use warning_for_asm
13855 if this_is_asm_operands. For Z modifier errors, use %c and code
13856 instead of hardcoded Z.
13857
13858 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
13859
13860 * config/i386/x-mingw32-utf8: Remove extrataneous $@
13861
13862 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
13863
13864 PR tree-optimization/109462
13865 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
13866 check for equivalences if NAME is a phi node.
13867
13868 2023-04-12 Richard Biener <rguenther@suse.de>
13869
13870 PR tree-optimization/109473
13871 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
13872 Convert scalar result to the computation type before performing
13873 the reduction adjustment.
13874
13875 2023-04-12 Richard Biener <rguenther@suse.de>
13876
13877 PR tree-optimization/109469
13878 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
13879 a returns-twice call.
13880
13881 2023-04-12 Richard Biener <rguenther@suse.de>
13882
13883 PR tree-optimization/109434
13884 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
13885 handle possibly throwing calls when processing the LHS
13886 and may-defs are not OK.
13887
13888 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
13889
13890 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
13891 predicate to avoid splitting arith constants.
13892
13893 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
13894 Pan Li <pan2.li@intel.com>
13895 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13896 Kito Cheng <kito.cheng@sifive.com>
13897
13898 PR target/109104
13899 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
13900 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
13901 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
13902 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
13903 (riscv_zero_call_used_regs): New.
13904 (TARGET_ZERO_CALL_USED_REGS): New.
13905
13906 2023-04-11 Martin Liska <mliska@suse.cz>
13907
13908 PR driver/108241
13909 * opts.cc (finish_options): Drop also
13910 x_flag_var_tracking_assignments.
13911
13912 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
13913
13914 PR tree-optimization/108888
13915 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
13916
13917 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
13918
13919 PR target/108812
13920 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
13921 (vsx_sign_extend_v16qi_<mode>): ... this.
13922 (vsx_sign_extend_hi_<mode>): Rename to...
13923 (vsx_sign_extend_v8hi_<mode>): ... this.
13924 (vsx_sign_extend_si_v2di): Rename to...
13925 (vsx_sign_extend_v4si_v2di): ... this.
13926 (vsignextend_qi_<mode>): Remove.
13927 (vsignextend_hi_<mode>): Remove.
13928 (vsignextend_si_v2di): Remove.
13929 (vsignextend_v2di_v1ti): Remove.
13930 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
13931 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
13932 with gen_vsx_sign_extend_v16qi_v4si.
13933 * config/rs6000/rs6000.md (split for DI constant generation):
13934 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
13935 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
13936 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
13937 with gen_vsx_sign_extend_v16qi_si.
13938 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
13939 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
13940 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
13941 vsx_sign_extend_v16qi_v4si.
13942 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
13943 vsx_sign_extend_v8hi_v2di.
13944 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
13945 vsx_sign_extend_v8hi_v4si.
13946 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
13947 vsx_sign_extend_si_v2di.
13948 (__builtin_altivec_vsignext): Set bif-pattern to
13949 vsx_sign_extend_v2di_v1ti.
13950 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
13951 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
13952 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
13953 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
13954
13955 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
13956
13957 PR target/70243
13958 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
13959 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
13960
13961 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
13962
13963 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
13964
13965 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
13966
13967 * common/config/i386/cpuinfo.h (get_available_features):
13968 Detect AMX-COMPLEX.
13969 * common/config/i386/i386-common.cc
13970 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
13971 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
13972 (ix86_handle_option): Handle -mamx-complex.
13973 * common/config/i386/i386-cpuinfo.h (enum processor_features):
13974 Add FEATURE_AMX_COMPLEX.
13975 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
13976 amx-complex.
13977 * config.gcc: Add amxcomplexintrin.h.
13978 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
13979 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
13980 __AMX_COMPLEX__.
13981 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
13982 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
13983 Handle amx-complex.
13984 * config/i386/i386.opt: Add option -mamx-complex.
13985 * config/i386/immintrin.h: Include amxcomplexintrin.h.
13986 * doc/extend.texi: Document amx-complex.
13987 * doc/invoke.texi: Document -mamx-complex.
13988 * doc/sourcebuild.texi: Document target amx-complex.
13989 * config/i386/amxcomplexintrin.h: New file.
13990
13991 2023-04-08 Jakub Jelinek <jakub@redhat.com>
13992
13993 PR tree-optimization/109392
13994 * tree-vect-generic.cc (tree_vec_extract): Handle failure
13995 of maybe_push_res_to_seq better.
13996
13997 2023-04-08 Jakub Jelinek <jakub@redhat.com>
13998
13999 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
14000 poly-int-types.h.
14001 (SYSTEM_H): Depend on $(HASHTAB_H).
14002 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
14003 dependency on $(RTL_BASE_H), remove redundant dependency on
14004 insn-modes.h.
14005
14006 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
14007
14008 PR target/107674
14009 * config/arm/arm.cc (arm_effective_regno): New function.
14010 (mve_vector_mem_operand): Use it.
14011
14012 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
14013
14014 PR tree-optimization/109417
14015 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
14016 dependency is in SSA_NAME_FREE_LIST.
14017
14018 2023-04-06 Andrew Pinski <apinski@marvell.com>
14019
14020 PR tree-optimization/109427
14021 * params.opt (-param=vect-induction-float=):
14022 Fix option attribute typo for IntegerRange.
14023
14024 2023-04-05 Jeff Law <jlaw@ventanamicro>
14025
14026 PR target/108892
14027 * combine.cc (combine_instructions): Force re-recognition when
14028 after restoring the body of an insn to its original form.
14029
14030 2023-04-05 Martin Jambor <mjambor@suse.cz>
14031
14032 PR ipa/108959
14033 * ipa-sra.cc (zap_useless_ipcp_results): New function.
14034 (process_isra_node_results): Call it.
14035
14036 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14037
14038 * config/riscv/vector.md: Fix incorrect operand order.
14039
14040 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14041
14042 * config/riscv/riscv-vsetvl.cc
14043 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
14044 demand fusion.
14045
14046 2023-04-05 Li Xu <xuli1@eswincomputing.com>
14047
14048 * config/riscv/riscv-vector-builtins.def: Fix typo.
14049 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
14050 * config/riscv/vector-iterators.md: Ditto.
14051
14052 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
14053
14054 * doc/md.texi (Including Patterns): Fix page break.
14055
14056 2023-04-04 Jakub Jelinek <jakub@redhat.com>
14057
14058 PR tree-optimization/109386
14059 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
14060 foperator_le::op1_range, foperator_le::op2_range,
14061 foperator_gt::op1_range, foperator_gt::op2_range,
14062 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
14063 BRS_FALSE case even if the other op is maybe_isnan, not just
14064 known_isnan.
14065 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
14066 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
14067 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
14068 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
14069 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
14070 not just known_isnan.
14071
14072 2023-04-04 Marek Polacek <polacek@redhat.com>
14073
14074 PR sanitizer/109107
14075 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
14076 when associating.
14077 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
14078
14079 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
14080
14081 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
14082 (mve_vcreateq_f<mode>): Swap operands.
14083
14084 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
14085
14086 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
14087
14088 2023-04-04 Jakub Jelinek <jakub@redhat.com>
14089
14090 PR target/109384
14091 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
14092 Reword diagnostics about zfinx conflict with f, formatting fixes.
14093
14094 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14095
14096 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
14097
14098 2023-04-04 Richard Biener <rguenther@suse.de>
14099
14100 PR tree-optimization/109304
14101 * tree-profile.cc (tree_profiling): Use symtab node
14102 availability to decide whether to skip adjusting calls.
14103 Do not adjust calls to internal functions.
14104
14105 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
14106
14107 PR target/108807
14108 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
14109 function for permutation control vector by considering big endianness.
14110
14111 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
14112
14113 PR target/108699
14114 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
14115 (rs6000_vprtyb<mode>2): ... this.
14116 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
14117 rs6000_vprtybv2di2.
14118 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
14119 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
14120 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
14121 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
14122
14123 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
14124 Sandra Loosemore <sandra@codesourcery.com>
14125
14126 * doc/md.texi (Insn Splitting): Tweak wording for readability.
14127
14128 2023-04-03 Martin Jambor <mjambor@suse.cz>
14129
14130 PR ipa/109303
14131 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
14132 offset + size will be representable in unsigned int.
14133
14134 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14135
14136 * configure.ac (ZSTD_LIB): Move before zstd.h check.
14137 Unset gcc_cv_header_zstd_h without libzstd.
14138 * configure: Regenerate.
14139
14140 2023-04-03 Martin Liska <mliska@suse.cz>
14141
14142 * doc/invoke.texi: Document new param.
14143
14144 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
14145
14146 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
14147 new check_effective_target function.
14148
14149 2023-04-03 Li Xu <xuli1@eswincomputing.com>
14150
14151 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
14152 (vfloat32m8_t): Likewise
14153
14154 2023-04-03 liuhongt <hongtao.liu@intel.com>
14155
14156 * doc/md.texi: Document signbitm2.
14157
14158 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14159 kito-cheng <kito.cheng@sifive.com>
14160
14161 * config/riscv/vector.md: Fix RA constraint.
14162
14163 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14164
14165 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
14166 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
14167 * config/riscv/vector.md: Fix scalar move bug.
14168
14169 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14170
14171 * range-op-float.cc (foperator_equal::fold_range): If at least
14172 one of the op ranges is not singleton and neither is NaN and all
14173 4 bounds are zero, return [1, 1].
14174 (foperator_not_equal::fold_range): In the same case return [0, 0].
14175
14176 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14177
14178 * range-op-float.cc (foperator_equal::fold_range): Perform the
14179 non-singleton handling regardless of maybe_isnan (op1, op2).
14180 (foperator_not_equal::fold_range): Likewise.
14181 (foperator_lt::fold_range, foperator_le::fold_range,
14182 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
14183 real_* comparison check which results in range_false (type)
14184 even if maybe_isnan (op1, op2). Simplify.
14185 (foperator_ltgt): New class.
14186 (fop_ltgt): New variable.
14187 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
14188 fop_ltgt.
14189
14190 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14191
14192 PR target/109254
14193 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
14194 returns VOIDmode, handle it like if the register isn't used for
14195 passing arguments at all.
14196 (apply_result_size): If targetm.calls.get_raw_result_mode returns
14197 VOIDmode, handle it like if the register isn't used for returning
14198 results at all.
14199 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
14200 means to return VOIDmode.
14201 * doc/tm.texi: Regenerated.
14202 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
14203 TARGET_SVE for P0_REGNUM.
14204 (aarch64_function_arg_regno_p): Also return true for p0-p3.
14205 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
14206
14207 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
14208
14209 * lra-constraints.cc: (combine_reload_insn): New function.
14210
14211 2023-03-31 Jakub Jelinek <jakub@redhat.com>
14212
14213 PR tree-optimization/91645
14214 * range-op-float.cc (foperator_unordered_lt::fold_range,
14215 foperator_unordered_le::fold_range,
14216 foperator_unordered_gt::fold_range,
14217 foperator_unordered_ge::fold_range,
14218 foperator_unordered_equal::fold_range): Call the ordered
14219 fold_range on ranges with cleared NaNs.
14220 * value-query.cc (range_query::get_tree_range): Handle also
14221 COMPARISON_CLASS_P trees.
14222
14223 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
14224 Andrew Pinski <pinskia@gmail.com>
14225
14226 PR target/109328
14227 * config/riscv/t-riscv: Add missing dependencies.
14228
14229 2023-03-31 liuhongt <hongtao.liu@intel.com>
14230
14231 * config/i386/i386.cc (inline_memory_move_cost): Return 100
14232 for MASK_REGS when MODE_SIZE > 8.
14233
14234 2023-03-31 liuhongt <hongtao.liu@intel.com>
14235
14236 PR target/85048
14237 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
14238 ufloat/ufix to floatuns/fixuns.
14239 * config/i386/i386-expand.cc
14240 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
14241 * config/i386/sse.md
14242 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
14243 Renamed to ..
14244 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
14245 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
14246 Renamed to ..
14247 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
14248 .. this.
14249 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
14250 Renamed to ..
14251 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
14252 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
14253 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
14254 (ufloatv2siv2df2<mask_name>): Renamed to ..
14255 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
14256 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
14257 Renamed to ..
14258 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
14259 .. this.
14260 (ufix_notruncv2dfv2si2): Renamed to ..
14261 (fixuns_notruncv2dfv2si2):.. this.
14262 (ufix_notruncv2dfv2si2_mask): Renamed to ..
14263 (fixuns_notruncv2dfv2si2_mask): .. this.
14264 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
14265 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
14266 (ufix_truncv2dfv2si2): Renamed to ..
14267 (*fixuns_truncv2dfv2si2): .. this.
14268 (ufix_truncv2dfv2si2_mask): Renamed to ..
14269 (fixuns_truncv2dfv2si2_mask): .. this.
14270 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
14271 (*fixuns_truncv2dfv2si2_mask_1): .. this.
14272 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
14273 (fixuns_truncv4dfv4si2<mask_name>): .. this.
14274 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
14275 Renamed to ..
14276 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
14277 .. this.
14278 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
14279 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
14280 .. this.
14281
14282 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
14283
14284 PR tree-optimization/109154
14285 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
14286 * gimple-range-gori.h (may_recompute_p): Add depth param.
14287 * params.opt (ranger-recompute-depth): New param.
14288
14289 2023-03-30 Jason Merrill <jason@redhat.com>
14290
14291 PR c++/107897
14292 PR c++/108887
14293 * cgraph.h: Move reset() from cgraph_node to symtab_node.
14294 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
14295 remove_from_same_comdat_group.
14296
14297 2023-03-30 Richard Biener <rguenther@suse.de>
14298
14299 PR tree-optimization/107561
14300 * gimple-ssa-warn-access.cc (get_size_range): Add flags
14301 argument and pass it on.
14302 (check_access): When querying for the size range pass
14303 SR_ALLOW_ZERO when the known destination size is zero.
14304
14305 2023-03-30 Richard Biener <rguenther@suse.de>
14306
14307 PR tree-optimization/109342
14308 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
14309 overload for edge. When that edge is a backedge use
14310 dominated_by_p directly.
14311
14312 2023-03-30 liuhongt <hongtao.liu@intel.com>
14313
14314 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
14315 vpblendd instead of vpblendw for V4SI under avx2.
14316
14317 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
14318
14319 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
14320 for many quick operands, for register-sized modes.
14321
14322 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
14323
14324 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
14325 New check.
14326
14327 2023-03-29 Martin Liska <mliska@suse.cz>
14328
14329 PR bootstrap/109310
14330 * configure.ac: Emit a warning for deprecated option
14331 --enable-link-mutex.
14332 * configure: Regenerate.
14333
14334 2023-03-29 Richard Biener <rguenther@suse.de>
14335
14336 PR tree-optimization/109331
14337 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
14338 discover a taken edge make sure to cleanup the CFG.
14339
14340 2023-03-29 Richard Biener <rguenther@suse.de>
14341
14342 PR tree-optimization/109327
14343 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
14344 already removed stmts when draining to_remove.
14345
14346 2023-03-29 Richard Biener <rguenther@suse.de>
14347
14348 PR ipa/106124
14349 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
14350 so we can re-create the DIE for the type if required.
14351
14352 2023-03-29 Jakub Jelinek <jakub@redhat.com>
14353 Richard Biener <rguenther@suse.de>
14354
14355 PR tree-optimization/109301
14356 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
14357 properties_provided from PROP_gimple_opt_math to 0.
14358 (pass_data_expand_powcabs): Change properties_provided from 0 to
14359 PROP_gimple_opt_math.
14360
14361 2023-03-29 Richard Biener <rguenther@suse.de>
14362
14363 PR tree-optimization/109154
14364 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
14365 inverted condition specially by inverting at the caller.
14366 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
14367
14368 2023-03-28 David Malcolm <dmalcolm@redhat.com>
14369
14370 PR c/107002
14371 * diagnostic-show-locus.cc (column_range::column_range): Factor
14372 out assertion conditional into...
14373 (column_range::valid_p): ...this new function.
14374 (line_corrections::add_hint): Don't attempt to consolidate hints
14375 if it would lead to invalid column_range instances.
14376
14377 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
14378
14379 PR target/109312
14380 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
14381 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
14382 minor refactor.
14383
14384 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
14385
14386 PR rtl-optimization/109187
14387 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
14388 subtraction in three-way comparison.
14389
14390 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
14391
14392 PR tree-optimization/109265
14393 PR tree-optimization/109274
14394 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
14395 not create a relation record is op1 and op2 are the same symbol.
14396 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
14397 handler for this stmt, but create a new record only if this statement
14398 generates a relation based on the ranges.
14399 (gori_compute::compute_operand2_range): Ditto.
14400 * value-relation.h (value_relation::set_relation): Always create the
14401 record that is requested.
14402
14403 2023-03-28 Richard Biener <rguenther@suse.de>
14404
14405 PR tree-optimization/107087
14406 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
14407 executable regions to avoid useless work and to better
14408 propagate degenerate PHIs.
14409
14410 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
14411
14412 * config/i386/x-mingw32-utf8: update comments.
14413
14414 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
14415
14416 PR target/109072
14417 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
14418 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
14419 variable.
14420 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
14421 New function.
14422 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
14423 after inlining. Record which decls are loaded from. Fix handling
14424 of vops for loads and stores.
14425 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
14426 (aarch64_accesses_vector_load_decl_p): Likewise.
14427 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
14428 variable.
14429 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
14430 that loads from a decl, treat vector stores to those decls as
14431 zero cost.
14432 (aarch64_vector_costs::finish_cost): ...and in that case,
14433 if the vector code does nothing more than a store, give the
14434 prologue a zero cost as well.
14435
14436 2023-03-28 Richard Biener <rguenther@suse.de>
14437
14438 PR bootstrap/84402
14439 PR tree-optimization/108129
14440 * genmatch.cc (lower_for): For (match ...) delay
14441 substituting into the match operator if possible.
14442 (dt_operand::gen_gimple_expr): For user_id look at the
14443 first substitute for determining how to access operands.
14444 (dt_operand::gen_generic_expr): Likewise.
14445 (dt_node::gen_kids): Properly sort user_ids according
14446 to their substitutes.
14447 (dt_node::gen_kids_1): Code-generate user_id matching.
14448
14449 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14450 Jonathan Wakely <jwakely@redhat.com>
14451
14452 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
14453 Use subcommand rather than sub-command in function comments.
14454
14455 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14456
14457 PR tree-optimization/109154
14458 * value-range.h (frange::flush_denormals_to_zero): Make it public
14459 rather than private.
14460 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
14461 here.
14462 * range-op-float.cc (range_operator_float::fold_range): Call
14463 flush_denormals_to_zero.
14464
14465 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14466
14467 PR middle-end/106190
14468 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
14469 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
14470
14471 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14472
14473 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
14474 as 4th argument to set to avoid clear_nan and union_ calls.
14475
14476 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14477
14478 PR target/109276
14479 * config/i386/i386.cc (assign_386_stack_local): For DImode
14480 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
14481 align 32 rather than 0 to assign_stack_local.
14482
14483 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
14484
14485 PR target/109140
14486 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
14487 on operand #3 to get the final condition code. Use std::swap.
14488 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
14489 (fucmp<gcond:code>8<P:mode>_vis): Move around.
14490 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
14491 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
14492
14493 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
14494
14495 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
14496 top-level sections.
14497
14498 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
14499
14500 * config.host: Pull in i386/x-mingw32-utf8 Makefile
14501 fragment and reference utf8rc-mingw32.o explicitly
14502 for mingw hosts.
14503 * config/i386/sym-mingw32.cc: prevent name mangling of
14504 stub symbol.
14505 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
14506 depend on manifest file explicitly.
14507
14508 2023-03-28 Richard Biener <rguenther@suse.de>
14509
14510 Revert:
14511 2023-03-27 Richard Biener <rguenther@suse.de>
14512
14513 PR rtl-optimization/109237
14514 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
14515
14516 2023-03-28 Richard Biener <rguenther@suse.de>
14517
14518 * common.opt (gdwarf): Remove Negative(gdwarf-).
14519
14520 2023-03-28 Richard Biener <rguenther@suse.de>
14521
14522 * common.opt (gdwarf): Add RejectNegative.
14523 (gdwarf-): Likewise.
14524 (ggdb): Likewise.
14525 (gvms): Likewise.
14526
14527 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14528
14529 * config/cris/constraints.md ("T"): Correct to
14530 define_memory_constraint.
14531
14532 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14533
14534 * config/cris/cris.md (BW2): New mode-iterator.
14535 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
14536 peephole2s.
14537
14538 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14539
14540 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
14541 for possible eliminable compares.
14542
14543 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14544
14545 * config/cris/constraints.md ("R"): Remove unused constraint.
14546
14547 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
14548
14549 PR gcov-profile/109297
14550 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
14551 (merge_stream_usage): Likewise.
14552 (overlap_usage): Likewise.
14553
14554 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
14555
14556 PR target/109296
14557 * config/riscv/thead.md: Add missing mode specifiers.
14558
14559 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
14560 Jiangning Liu <jiangning.liu@amperecomputing.com>
14561 Manolis Tsamis <manolis.tsamis@vrull.eu>
14562
14563 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
14564
14565 2023-03-27 Richard Biener <rguenther@suse.de>
14566
14567 PR rtl-optimization/109237
14568 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
14569
14570 2023-03-27 Richard Biener <rguenther@suse.de>
14571
14572 PR lto/109263
14573 * lto-wrapper.cc (run_gcc): Parse alternate debug options
14574 as well, they always enable debug.
14575
14576 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
14577
14578 PR target/109167
14579 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
14580 from ...
14581 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
14582
14583 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
14584
14585 PR target/109082
14586 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
14587 than zero when calling vec_sld.
14588 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
14589 zero when calling vec_sld.
14590 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
14591 than zero when calling vec_sld.
14592
14593 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
14594
14595 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
14596 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
14597 loops are represented and which fields are vectors. Add
14598 documentation for OMP_FOR_PRE_BODY field. Document internal
14599 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
14600 * tree.def (OMP_FOR): Make documentation consistent with the
14601 Texinfo manual, to fill some gaps and correct errors.
14602
14603 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
14604
14605 PR target/106282
14606 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
14607 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
14608 (handle_move_double): Call it before handle_movsi.
14609 * config/m68k/m68k-protos.h: Declare it.
14610
14611 2023-03-26 Jakub Jelinek <jakub@redhat.com>
14612
14613 PR tree-optimization/109230
14614 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
14615
14616 2023-03-26 Jakub Jelinek <jakub@redhat.com>
14617
14618 PR ipa/105685
14619 * predict.cc (compute_function_frequency): Don't call
14620 warn_function_cold if function already has cold attribute.
14621
14622 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
14623
14624 * doc/install.texi: Remove anachronistic note
14625 related to languages built and separate source tarballs.
14626
14627 2023-03-25 David Malcolm <dmalcolm@redhat.com>
14628
14629 PR analyzer/109098
14630 * diagnostic-format-sarif.cc (read_until_eof): Delete.
14631 (maybe_read_file): Delete.
14632 (sarif_builder::maybe_make_artifact_content_object): Use
14633 get_source_file_content rather than maybe_read_file.
14634 Reject it if it's not valid UTF-8.
14635 * input.cc (file_cache_slot::get_full_file_content): New.
14636 (get_source_file_content): New.
14637 (selftest::check_cpp_valid_utf8_p): New.
14638 (selftest::test_cpp_valid_utf8_p): New.
14639 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
14640 * input.h (get_source_file_content): New prototype.
14641
14642 2023-03-24 David Malcolm <dmalcolm@redhat.com>
14643
14644 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
14645 debugging options.
14646 (Special Functions for Debugging the Analyzer): Convert to a
14647 table, and rewrite in places.
14648 (Other Debugging Techniques): Add notes on how to compare two
14649 different exploded graphs.
14650
14651 2023-03-24 David Malcolm <dmalcolm@redhat.com>
14652
14653 PR other/109163
14654 * json.cc: Update comments to indicate that we now preserve
14655 insertion order of keys within objects.
14656 (object::print): Traverse keys in insertion order.
14657 (object::set): Preserve insertion order of keys.
14658 (selftest::test_writing_objects): Add an additional key to verify
14659 that we preserve insertion order.
14660 * json.h (object::m_keys): New field.
14661
14662 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
14663
14664 PR tree-optimization/109238
14665 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
14666 predecessors which this block dominates.
14667
14668 2023-03-24 Richard Biener <rguenther@suse.de>
14669
14670 PR tree-optimization/106912
14671 * tree-profile.cc (tree_profiling): Update stmts only when
14672 profiling or testing coverage. Make sure to update calls
14673 fntype, stripping 'const' there.
14674
14675 2023-03-24 Jakub Jelinek <jakub@redhat.com>
14676
14677 PR middle-end/109258
14678 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
14679 if target == const0_rtx.
14680
14681 2023-03-24 Alexandre Oliva <oliva@adacore.com>
14682
14683 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
14684 Document options and effective targets.
14685
14686 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
14687
14688 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
14689 optional.
14690
14691 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
14692
14693 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
14694 non-earlyclobber alternative.
14695
14696 2023-03-23 Andrew Pinski <apinski@marvell.com>
14697
14698 PR c/84900
14699 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
14700 as a lvalue.
14701
14702 2023-03-23 Richard Biener <rguenther@suse.de>
14703
14704 PR tree-optimization/107569
14705 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
14706 Do not push SSA names with zero uses as available leader.
14707 (process_bb): Likewise.
14708
14709 2023-03-23 Richard Biener <rguenther@suse.de>
14710
14711 PR tree-optimization/109262
14712 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
14713 combining a piecewise complex load avoid touching loads
14714 that throw internally. Use fun, not cfun throughout.
14715
14716 2023-03-23 Jakub Jelinek <jakub@redhat.com>
14717
14718 * value-range.cc (irange::irange_union, irange::intersect): Fix
14719 comment spelling bugs.
14720 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
14721 * gimple-range-trace.h: Likewise.
14722 * gimple-range-edge.cc: Likewise.
14723 (gimple_outgoing_range_stmt_p,
14724 gimple_outgoing_range::switch_edge_range,
14725 gimple_outgoing_range::edge_range_p): Likewise.
14726 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
14727 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
14728 assume_query::assume_query, assume_query::calculate_phi): Likewise.
14729 * gimple-range-edge.h: Likewise.
14730 * value-range.h (Value_Range::set, Value_Range::lower_bound,
14731 Value_Range::upper_bound, frange::set_undefined): Likewise.
14732 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
14733 gori_compute): Likewise.
14734 * gimple-range-fold.h (fold_using_range): Likewise.
14735 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
14736 Likewise.
14737 * gimple-range-gori.cc (range_def_chain::in_chain_p,
14738 range_def_chain::dump, gori_map::calculate_gori,
14739 gori_compute::compute_operand_range_switch,
14740 gori_compute::logical_combine, gori_compute::refine_using_relation,
14741 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
14742 Likewise.
14743 * gimple-range.h: Likewise.
14744 (enable_ranger): Likewise.
14745 * range-op.h (empty_range_varying): Likewise.
14746 * value-query.h (value_query): Likewise.
14747 * gimple-range-cache.cc (block_range_cache::set_bb_range,
14748 block_range_cache::dump, ssa_global_cache::clear_global_range,
14749 temporal_cache::temporal_value, temporal_cache::current_p,
14750 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
14751 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
14752 Likewise.
14753 * gimple-range-fold.cc (fur_edge::get_phi_operand,
14754 fur_stmt::get_operand, gimple_range_adjustment,
14755 fold_using_range::range_of_phi,
14756 fold_using_range::relation_fold_and_or): Likewise.
14757 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
14758 * value-query.cc (range_query::value_of_expr,
14759 range_query::value_on_edge, range_query::query_relation): Likewise.
14760 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
14761 intersect_range_with_nonzero_bits): Likewise.
14762 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
14763 exit_range): Likewise.
14764 * value-relation.h: Likewise.
14765 (equiv_oracle, relation_trio::relation_trio, value_relation,
14766 value_relation::value_relation, pe_min): Likewise.
14767 * range-op-float.cc (range_operator_float::rv_fold,
14768 frange_arithmetic, foperator_unordered_equal::op1_range,
14769 foperator_div::rv_fold): Likewise.
14770 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
14771 * value-relation.cc (equiv_oracle::query_relation,
14772 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
14773 value_relation::apply_transitive, relation_chain_head::find_relation,
14774 dom_oracle::query_relation, dom_oracle::find_relation_block,
14775 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
14776 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
14777 create_possibly_reversed_range, adjust_op1_for_overflow,
14778 operator_mult::wi_fold, operator_exact_divide::op1_range,
14779 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
14780 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
14781 range_op_lshift_tests): Likewise.
14782
14783 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
14784
14785 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
14786 (move_callee_saved_registers): Detect the bug condition early.
14787
14788 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
14789
14790 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
14791 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
14792 (V_2REG_ALT): New.
14793 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
14794 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
14795 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
14796 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
14797 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
14798
14799 2023-03-23 Jakub Jelinek <jakub@redhat.com>
14800
14801 PR tree-optimization/109176
14802 * tree-vect-generic.cc (expand_vector_condition): If a has
14803 vector boolean type and is a comparison, also check if both
14804 the comparison and VEC_COND_EXPR could be successfully expanded
14805 individually.
14806
14807 2023-03-23 Pan Li <pan2.li@intel.com>
14808 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14809
14810 PR target/108654
14811 PR target/108185
14812 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
14813 for vector mask modes.
14814 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
14815 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
14816
14817 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
14818
14819 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
14820
14821 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14822
14823 PR target/109244
14824 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
14825 (emit_vlmax_op): Ditto.
14826 * config/riscv/riscv-v.cc (get_sew): New function.
14827 (emit_vlmax_vsetvl): Adapt function.
14828 (emit_pred_op): Ditto.
14829 (emit_vlmax_op): Ditto.
14830 (emit_nonvlmax_op): Ditto.
14831 (legitimize_move): Fix LRA ICE.
14832 (gen_no_side_effects_vsetvl_rtx): Adapt function.
14833 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
14834 (@mov<VB:mode><P:mode>_lra): Ditto.
14835 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
14836 (*mov<VB:mode><P:mode>_lra): Ditto.
14837
14838 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14839
14840 PR target/109228
14841 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
14842 __riscv_vlenb support.
14843 (BASE): Ditto.
14844 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
14845 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
14846 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
14847 (SHAPE): Ditto.
14848 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
14849 * config/riscv/riscv-vector-builtins.cc: Ditto.
14850
14851 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14852 kito-cheng <kito.cheng@sifive.com>
14853
14854 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
14855 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
14856 (pass_vsetvl::need_vsetvl): Fix bugs.
14857 (pass_vsetvl::backward_demand_fusion): Fix bugs.
14858 (pass_vsetvl::demand_fusion): Fix bugs.
14859 (eliminate_insn): Fix bugs.
14860 (insert_vsetvl): Ditto.
14861 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
14862 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
14863 * config/riscv/vector.md: Ditto.
14864
14865 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14866 kito-cheng <kito.cheng@sifive.com>
14867
14868 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
14869 * config/riscv/vector-iterators.md (nmsac): Ditto.
14870 (nmsub): Ditto.
14871 (msac): Ditto.
14872 (msub): Ditto.
14873 (nmadd): Ditto.
14874 (nmacc): Ditto.
14875 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
14876 (@pred_mul_plus<mode>): Ditto.
14877 (*pred_madd<mode>): Ditto.
14878 (*pred_macc<mode>): Ditto.
14879 (*pred_mul_plus<mode>): Ditto.
14880 (@pred_mul_plus<mode>_scalar): Ditto.
14881 (*pred_madd<mode>_scalar): Ditto.
14882 (*pred_macc<mode>_scalar): Ditto.
14883 (*pred_mul_plus<mode>_scalar): Ditto.
14884 (*pred_madd<mode>_extended_scalar): Ditto.
14885 (*pred_macc<mode>_extended_scalar): Ditto.
14886 (*pred_mul_plus<mode>_extended_scalar): Ditto.
14887 (@pred_minus_mul<mode>): Ditto.
14888 (*pred_<madd_nmsub><mode>): Ditto.
14889 (*pred_nmsub<mode>): Ditto.
14890 (*pred_<macc_nmsac><mode>): Ditto.
14891 (*pred_nmsac<mode>): Ditto.
14892 (*pred_mul_<optab><mode>): Ditto.
14893 (*pred_minus_mul<mode>): Ditto.
14894 (@pred_mul_<optab><mode>_scalar): Ditto.
14895 (@pred_minus_mul<mode>_scalar): Ditto.
14896 (*pred_<madd_nmsub><mode>_scalar): Ditto.
14897 (*pred_nmsub<mode>_scalar): Ditto.
14898 (*pred_<macc_nmsac><mode>_scalar): Ditto.
14899 (*pred_nmsac<mode>_scalar): Ditto.
14900 (*pred_mul_<optab><mode>_scalar): Ditto.
14901 (*pred_minus_mul<mode>_scalar): Ditto.
14902 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
14903 (*pred_nmsub<mode>_extended_scalar): Ditto.
14904 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
14905 (*pred_nmsac<mode>_extended_scalar): Ditto.
14906 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
14907 (*pred_minus_mul<mode>_extended_scalar): Ditto.
14908 (*pred_<madd_msub><mode>): Ditto.
14909 (*pred_<macc_msac><mode>): Ditto.
14910 (*pred_<madd_msub><mode>_scalar): Ditto.
14911 (*pred_<macc_msac><mode>_scalar): Ditto.
14912 (@pred_neg_mul_<optab><mode>): Ditto.
14913 (@pred_mul_neg_<optab><mode>): Ditto.
14914 (*pred_<nmadd_msub><mode>): Ditto.
14915 (*pred_<nmsub_nmadd><mode>): Ditto.
14916 (*pred_<nmacc_msac><mode>): Ditto.
14917 (*pred_<nmsac_nmacc><mode>): Ditto.
14918 (*pred_neg_mul_<optab><mode>): Ditto.
14919 (*pred_mul_neg_<optab><mode>): Ditto.
14920 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
14921 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
14922 (*pred_<nmadd_msub><mode>_scalar): Ditto.
14923 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
14924 (*pred_<nmacc_msac><mode>_scalar): Ditto.
14925 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
14926 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
14927 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
14928 (@pred_widen_neg_mul_<optab><mode>): Ditto.
14929 (@pred_widen_mul_neg_<optab><mode>): Ditto.
14930 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
14931 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
14932
14933 2023-03-23 liuhongt <hongtao.liu@intel.com>
14934
14935 * builtins.cc (builtin_memset_read_str): Replace
14936 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
14937 (builtin_memset_gen_str): Ditto.
14938 * config/i386/i386-expand.cc
14939 (ix86_convert_const_wide_int_to_broadcast): Replace
14940 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
14941 (ix86_expand_vector_move): Ditto.
14942 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
14943 Removed.
14944 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
14945 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
14946 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
14947 * doc/tm.texi.in: Ditto.
14948 * target.def: Ditto.
14949
14950 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
14951
14952 * lra.cc (lra): Do not repeat inheritance and live range splitting
14953 when asm error is found.
14954
14955 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
14956
14957 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
14958 (gcn_expand_dpp_distribute_even_insn)
14959 (gcn_expand_dpp_distribute_odd_insn): Declare.
14960 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
14961 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
14962 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
14963 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
14964 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
14965 (fms<mode>4_negop2): New patterns.
14966 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
14967 (gcn_expand_dpp_distribute_even_insn)
14968 (gcn_expand_dpp_distribute_odd_insn): New functions.
14969 * config/gcn/gcn.md: Add entries to unspec enum.
14970
14971 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
14972
14973 PR tree-optimization/109008
14974 * value-range.cc (frange::set): Add nan_state argument.
14975 * value-range.h (class nan_state): New.
14976 (frange::get_nan_state): New.
14977
14978 2023-03-22 Martin Liska <mliska@suse.cz>
14979
14980 * configure: Regenerate.
14981
14982 2023-03-21 Joseph Myers <joseph@codesourcery.com>
14983
14984 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
14985 to variants.
14986
14987 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
14988
14989 PR tree-optimization/109192
14990 * gimple-range-gori.cc (gori_compute::compute_operand_range):
14991 Terminate gori calculations if a relation is not relevant.
14992 * value-relation.h (value_relation::set_relation): Allow
14993 equality between op1 and op2 if they are the same.
14994
14995 2023-03-21 Richard Biener <rguenther@suse.de>
14996
14997 PR tree-optimization/109219
14998 * tree-vect-loop.cc (vectorizable_reduction): Check
14999 slp_node, not STMT_SLP_TYPE.
15000 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
15001 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
15002 Remove assertion on STMT_SLP_TYPE.
15003
15004 2023-03-21 Jakub Jelinek <jakub@redhat.com>
15005
15006 PR tree-optimization/109215
15007 * tree.h (enum special_array_member): Adjust comments for int_0
15008 and trail_0.
15009 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
15010 has zero sized element type and the array has variable number of
15011 elements or constant one or more elements.
15012 (component_ref_size): Adjust comments, formatting fix.
15013
15014 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15015
15016 * configure.ac: Add check for the Texinfo 6.8
15017 CONTENTS_OUTPUT_LOCATION customization variable and set it if
15018 supported.
15019 * configure: Regenerate.
15020 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
15021 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
15022 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
15023 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
15024
15025 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15026
15027 * doc/extend.texi: Associate use_hazard_barrier_return index
15028 entry with its attribute.
15029 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
15030 its attribute
15031
15032 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15033
15034 * doc/implement-c.texi: Remove usage of @gol.
15035 * doc/invoke.texi: Ditto.
15036 * doc/sourcebuild.texi: Ditto.
15037 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
15038 texinfo.tex versions, the bug it was working around appears to
15039 be gone.
15040
15041 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15042
15043 * doc/include/texinfo.tex: Update to 2023-01-17.19.
15044
15045 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15046
15047 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
15048 @enddefbuiltin for defining built-in functions.
15049 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
15050 places where it should be used.
15051
15052 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15053
15054 * doc/extend.texi (Formatted Output Function Checking): New
15055 subsection for grouping together printf et al.
15056 (Exception handling) Fix missing @ sign before copyright
15057 header, which lead to the copyright line leaking into
15058 '(gcc)Exception handling'.
15059 * doc/gcc.texi: Set document language to en_US.
15060 (@copying): Wrap front cover texts in quotations, move in manual
15061 description text.
15062
15063 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15064
15065 * doc/gcc.texi: Add the Indices appendix, to make texinfo
15066 generate nice indices overview page.
15067
15068 2023-03-21 Richard Biener <rguenther@suse.de>
15069
15070 PR tree-optimization/109170
15071 * gimple-range-op.cc (cfn_pass_through_arg1): New.
15072 (gimple_range_op_handler::maybe_builtin_call): Handle
15073 __builtin_expect via cfn_pass_through_arg1.
15074
15075 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
15076
15077 PR target/109067
15078 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
15079 (init_float128_ieee): Delete code to switch complex multiply and divide
15080 for long double.
15081 (complex_multiply_builtin_code): New helper function.
15082 (complex_divide_builtin_code): Likewise.
15083 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
15084 of complex 128-bit multiply and divide built-in functions.
15085
15086 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
15087
15088 PR target/109178
15089 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
15090
15091 2023-03-19 Jonny Grant <jg@jguk.org>
15092
15093 * doc/extend.texi (Common Function Attributes) <nonnull>:
15094 Correct typo.
15095
15096 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
15097
15098 PR rtl-optimization/109179
15099 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
15100 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
15101
15102 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15103
15104 PR target/105554
15105 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
15106 to false.
15107 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
15108 to allocate_struct_function instead of false.
15109 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
15110 nor DECL_RESULT here. Pass true as ABSTRACT_P to
15111 push_struct_function. Call targetm.target_option.relayout_function
15112 after it.
15113 (tree_function_versioning): Formatting fix.
15114
15115 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
15116
15117 * lra-constraints.cc: Include hooks.h.
15118 (combine_reload_insn): New function.
15119 (lra_constraints): Call it.
15120
15121 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15122 kito-cheng <kito.cheng@sifive.com>
15123
15124 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
15125 as legitimate value.
15126 * config/riscv/riscv-vector-builtins.cc
15127 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
15128 (function_expander::use_widen_ternop_insn): Ditto.
15129 * config/riscv/vector.md (@vundefined<mode>): New pattern.
15130 (pred_mul_<optab><mode>_undef_merge): Remove.
15131 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
15132 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
15133 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
15134 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
15135
15136 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15137
15138 PR target/109092
15139 * config/riscv/riscv.md: Fix subreg bug.
15140
15141 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15142
15143 PR middle-end/108685
15144 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
15145 use its loop_father rather than BODY_BB's loop_father.
15146 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
15147 If broken_loop with ordered > collapse and at least one of those
15148 extra loops aren't guaranteed to have at least one iteration, change
15149 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
15150 loop_father to l0_bb's loop_father rather than l1_bb's.
15151
15152 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15153
15154 PR plugins/108634
15155 * gdbhooks.py (TreePrinter.to_string): Wrap
15156 gdb.parse_and_eval('tree_code_type') in a try block, parse
15157 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
15158 raises exception. Update comments for the recent tree_code_type
15159 changes.
15160
15161 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
15162
15163 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
15164 issues. Add more line breaks to example so it doesn't overflow
15165 the margins.
15166
15167 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
15168
15169 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
15170 line breaks in examples.
15171 <malloc>: Fix bad line breaks in running text, also copy-edit
15172 for consistency.
15173 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
15174 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
15175 @gol.
15176 (C++ Dialect Options) <-fcontracts>: Add line break in example.
15177 <-Wctad-maybe-unsupported>: Likewise.
15178 <-Winvalid-constexpr>: Likewise.
15179 (Warning Options) <-Wdangling-pointer>: Likewise.
15180 <-Winterference-size>: Likewise.
15181 <-Wvla-parameter>: Likewise.
15182 (Static Analyzer Options): Fix bad line breaks in running text,
15183 plus add some missing markup.
15184 (Optimize Options) <openacc-privatization>: Fix more bad line
15185 breaks in running text.
15186
15187 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
15188
15189 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
15190 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
15191 (expand_vec_perm_2perm_pblendv): Ditto.
15192
15193 2023-03-16 Martin Liska <mliska@suse.cz>
15194
15195 PR middle-end/106133
15196 * gcc.cc (driver_handle_option): Use x_main_input_basename
15197 if x_dump_base_name is null.
15198 * opts.cc (common_handle_option): Likewise.
15199
15200 2023-03-16 Richard Biener <rguenther@suse.de>
15201
15202 PR tree-optimization/109123
15203 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
15204 Do not emit -Wuse-after-free late.
15205 (pass_waccess::check_call): Always check call pointer uses.
15206
15207 2023-03-16 Richard Biener <rguenther@suse.de>
15208
15209 PR tree-optimization/109141
15210 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
15211 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
15212 out from ...
15213 (renumber_gimple_stmt_uids): ... here and
15214 (renumber_gimple_stmt_uids_in_blocks): ... here.
15215 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
15216 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
15217 to PHIs.
15218 (pass_waccess::check_pointer_uses): Process all PHIs.
15219
15220 2023-03-15 David Malcolm <dmalcolm@redhat.com>
15221
15222 PR analyzer/109097
15223 * diagnostic-format-sarif.cc (class sarif_invocation): New.
15224 (class sarif_ice_notification): New.
15225 (sarif_builder::m_invocation_obj): New field.
15226 (sarif_invocation::add_notification_for_ice): New.
15227 (sarif_invocation::prepare_to_flush): New.
15228 (sarif_ice_notification::sarif_ice_notification): New.
15229 (sarif_builder::sarif_builder): Add m_invocation_obj.
15230 (sarif_builder::end_diagnostic): Special-case DK_ICE and
15231 DK_ICE_NOBT.
15232 (sarif_builder::flush_to_file): Call prepare_to_flush on
15233 m_invocation_obj. Pass the latter to make_top_level_object.
15234 (sarif_builder::make_result_object): Move creation of "locations"
15235 array to...
15236 (sarif_builder::make_locations_arr): ...this new function.
15237 (sarif_builder::make_top_level_object): Add "invocation_obj" param
15238 and pass it to make_run_object.
15239 (sarif_builder::make_run_object): Add "invocation_obj" param and
15240 use it.
15241 (sarif_ice_handler): New callback.
15242 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
15243 * diagnostic.cc (diagnostic_initialize): Initialize new field
15244 "ice_handler_cb".
15245 (diagnostic_action_after_output): If it is set, make one attempt
15246 to call ice_handler_cb.
15247 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
15248
15249 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
15250
15251 * config/i386/i386-expand.cc (expand_vec_perm_blend):
15252 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
15253 and fix V2HImode handling.
15254 (expand_vec_perm_1): Try to emit BLEND instruction
15255 before MOVSS/MOVSD.
15256 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
15257
15258 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
15259
15260 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
15261
15262 2023-03-15 Richard Biener <rguenther@suse.de>
15263
15264 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
15265 Do not diagnose clobbers.
15266
15267 2023-03-15 Richard Biener <rguenther@suse.de>
15268
15269 PR tree-optimization/109139
15270 * tree-ssa-live.cc (remove_unused_locals): Look at the
15271 base address for unused decls on the LHS of .DEFERRED_INIT.
15272
15273 2023-03-15 Xi Ruoyao <xry111@xry111.site>
15274
15275 PR other/109086
15276 * builtins.cc (inline_string_cmp): Force the character
15277 difference into "result" pseudo-register, instead of reassign
15278 the pseudo-register.
15279
15280 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15281
15282 * config.gcc: Add thead.o to RISC-V extra_objs.
15283 * config/riscv/peephole.md: Add mempair peephole passes.
15284 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
15285 prototype.
15286 (th_mempair_operands_p): Likewise.
15287 (th_mempair_order_operands): Likewise.
15288 (th_mempair_prepare_save_restore_operands): Likewise.
15289 (th_mempair_save_restore_regs): Likewise.
15290 (th_mempair_output_move): Likewise.
15291 * config/riscv/riscv.cc (riscv_save_reg): Move code.
15292 (riscv_restore_reg): Move code.
15293 (riscv_for_each_saved_reg): Add code to emit mempair insns.
15294 * config/riscv/t-riscv: Add thead.cc.
15295 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
15296 New insn.
15297 (*th_mempair_store_<GPR:mode>2): Likewise.
15298 (*th_mempair_load_extendsidi2): Likewise.
15299 (*th_mempair_load_zero_extendsidi2): Likewise.
15300 * config/riscv/thead.cc: New file.
15301
15302 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15303
15304 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
15305 New constraint "th_f_fmv".
15306 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
15307 "th_r_fmv".
15308 * config/riscv/riscv.cc (riscv_split_doubleword_move):
15309 Add split code for XTheadFmv.
15310 (riscv_secondary_memory_needed): XTheadFmv does not need
15311 secondary memory.
15312 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
15313 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
15314 movdf_hardfloat_rv32.
15315 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
15316 (th_fmv_x_w): New INSN.
15317 (th_fmv_x_hw): New INSN.
15318
15319 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15320
15321 * config/riscv/riscv.md (maddhisi4): New expand.
15322 (msubhisi4): New expand.
15323 * config/riscv/thead.md (*th_mula<mode>): New pattern.
15324 (*th_mulawsi): New pattern.
15325 (*th_mulawsi2): New pattern.
15326 (*th_maddhisi4): New pattern.
15327 (*th_sextw_maddhisi4): New pattern.
15328 (*th_muls<mode>): New pattern.
15329 (*th_mulswsi): New pattern.
15330 (*th_mulswsi2): New pattern.
15331 (*th_msubhisi4): New pattern.
15332 (*th_sextw_msubhisi4): New pattern.
15333
15334 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15335
15336 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
15337 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
15338 Add prototype.
15339 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
15340 XTheadCondMov.
15341 (riscv_expand_conditional_move): New function.
15342 (riscv_expand_conditional_move_onesided): New function.
15343 * config/riscv/riscv.md: Add support for XTheadCondMov.
15344 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
15345 support for XTheadCondMov.
15346 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
15347
15348 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15349
15350 * config/riscv/bitmanip.md (clzdi2): New expand.
15351 (clzsi2): New expand.
15352 (ctz<mode>2): New expand.
15353 (popcount<mode>2): New expand.
15354 (<bitmanip_optab>si2): Rename INSN.
15355 (*<bitmanip_optab>si2): Hide INSN name.
15356 (<bitmanip_optab>di2): Rename INSN.
15357 (*<bitmanip_optab>di2): Hide INSN name.
15358 (rotrsi3): Remove INSN.
15359 (rotr<mode>3): Add expand.
15360 (*rotrsi3): New INSN.
15361 (rotrdi3): Rename INSN.
15362 (*rotrdi3): Hide INSN name.
15363 (rotrsi3_sext): Rename INSN.
15364 (*rotrsi3_sext): Hide INSN name.
15365 (bswap<mode>2): Remove INSN.
15366 (bswapdi2): Add expand.
15367 (bswapsi2): Add expand.
15368 (*bswap<mode>2): Hide INSN name.
15369 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
15370 extraction.
15371 * config/riscv/riscv.md (extv<mode>): New expand.
15372 (extzv<mode>): New expand.
15373 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
15374 (*th_ext<mode>): New INSN.
15375 (*th_extu<mode>): New INSN.
15376 (*th_clz<mode>2): New INSN.
15377 (*th_rev<mode>2): New INSN.
15378
15379 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15380
15381 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
15382 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
15383
15384 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15385
15386 * config/riscv/riscv.md: Include thead.md
15387 * config/riscv/thead.md: New file.
15388
15389 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15390
15391 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
15392
15393 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15394
15395 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
15396 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
15397 (MASK_XTHEADBB): New.
15398 (MASK_XTHEADBS): New.
15399 (MASK_XTHEADCMO): New.
15400 (MASK_XTHEADCONDMOV): New.
15401 (MASK_XTHEADFMEMIDX): New.
15402 (MASK_XTHEADFMV): New.
15403 (MASK_XTHEADINT): New.
15404 (MASK_XTHEADMAC): New.
15405 (MASK_XTHEADMEMIDX): New.
15406 (MASK_XTHEADMEMPAIR): New.
15407 (MASK_XTHEADSYNC): New.
15408 (TARGET_XTHEADBA): New.
15409 (TARGET_XTHEADBB): New.
15410 (TARGET_XTHEADBS): New.
15411 (TARGET_XTHEADCMO): New.
15412 (TARGET_XTHEADCONDMOV): New.
15413 (TARGET_XTHEADFMEMIDX): New.
15414 (TARGET_XTHEADFMV): New.
15415 (TARGET_XTHEADINT): New.
15416 (TARGET_XTHEADMAC): New.
15417 (TARGET_XTHEADMEMIDX): New.
15418 (TARGET_XTHEADMEMPAIR): new.
15419 (TARGET_XTHEADSYNC): New.
15420 * config/riscv/riscv.opt: Add riscv_xthead_subext.
15421
15422 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
15423
15424 PR target/109117
15425 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
15426 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
15427 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
15428
15429 2023-03-14 Jakub Jelinek <jakub@redhat.com>
15430
15431 PR target/109109
15432 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
15433 when lo is equal to dhi and hi is a MEM which uses dlo register.
15434
15435 2023-03-14 Martin Jambor <mjambor@suse.cz>
15436
15437 PR ipa/107925
15438 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
15439 global0 instead of zeroing when it does not have as many counts as
15440 it should.
15441
15442 2023-03-14 Martin Jambor <mjambor@suse.cz>
15443
15444 PR ipa/107925
15445 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
15446 ipa count, remove assert, lenient_count_portion_handling, dump
15447 also orig_node_count.
15448
15449 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
15450
15451 * config/i386/i386-expand.cc (expand_vec_perm_movs):
15452 Handle V2SImode for TARGET_MMX_WITH_SSE.
15453 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
15454 using V2FI mode iterator to handle both V2SI and V2SF modes.
15455
15456 2023-03-14 Sam James <sam@gentoo.org>
15457
15458 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
15459 including <sstream> earlier.
15460 * system.h: Add INCLUDE_SSTREAM.
15461
15462 2023-03-14 Richard Biener <rguenther@suse.de>
15463
15464 * tree-ssa-live.cc (remove_unused_locals): Do not treat
15465 the .DEFERRED_INIT of a variable as use, instead remove
15466 that if it is the only use.
15467
15468 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
15469
15470 PR rtl-optimization/107762
15471 * expr.cc (emit_group_store): Revert latest change.
15472
15473 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
15474
15475 PR tree-optimization/109005
15476 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
15477 aggregate type check.
15478
15479 2023-03-14 Jakub Jelinek <jakub@redhat.com>
15480
15481 PR tree-optimization/109115
15482 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
15483 r.upper_bound () on r.undefined_p () range.
15484
15485 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
15486
15487 PR tree-optimization/106896
15488 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
15489 implementatoin with probability_in; avoid some asserts.
15490
15491 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
15492
15493 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
15494
15495 2023-03-13 Sean Bright <sean@seanbright.com>
15496
15497 * doc/invoke.texi (Warning Options): Remove errant 'See'
15498 before @xref.
15499
15500 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15501
15502 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
15503 REG_OK_FOR_BASE_P): Remove.
15504
15505 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15506
15507 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
15508 (=vd,vd,vr,vr): Ditto.
15509 * config/riscv/vector.md: Ditto.
15510
15511 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15512
15513 * config/riscv/riscv-vector-builtins.cc
15514 (function_expander::use_compare_insn): Add operand predicate check.
15515
15516 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15517
15518 * config/riscv/vector.md: Fine tune RA constraints.
15519
15520 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
15521
15522 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
15523 hsaco assemble/link.
15524
15525 2023-03-13 Richard Biener <rguenther@suse.de>
15526
15527 PR tree-optimization/109046
15528 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
15529 piecewise complex loads.
15530
15531 2023-03-12 Jakub Jelinek <jakub@redhat.com>
15532
15533 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
15534 (aarch64_bf16_ptr_type_node): Adjust comment.
15535 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
15536 bfloat16_type_node rather than aarch64_bf16_type_node.
15537 (aarch64_libgcc_floating_mode_supported_p,
15538 aarch64_scalar_mode_supported_p): Also support BFmode.
15539 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
15540 (aarch64_invalid_binary_op): Remove BFmode related rejections.
15541 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
15542 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
15543 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
15544 aarch64_bf16_type_node.
15545 (aarch64_init_simd_builtin_types): Likewise.
15546 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
15547 which is created in tree.cc already.
15548 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
15549
15550 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
15551
15552 PR middle-end/109031
15553 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
15554 ensure that the type of x is as wide or wider than the type of a.
15555
15556 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15557
15558 PR target/108583
15559 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
15560 (*bitmask_shift_plus<mode>): New.
15561 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
15562 (@aarch64_bitmask_udiv<mode>3): Remove.
15563 * config/aarch64/aarch64.cc
15564 (aarch64_vectorize_can_special_div_by_constant,
15565 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
15566 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
15567 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
15568
15569 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15570
15571 PR target/108583
15572 * target.def (preferred_div_as_shifts_over_mult): New.
15573 * doc/tm.texi.in: Document it.
15574 * doc/tm.texi: Regenerate.
15575 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
15576 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
15577 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
15578
15579 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15580 Richard Sandiford <richard.sandiford@arm.com>
15581
15582 PR target/108583
15583 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
15584 single use.
15585
15586 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15587 Andrew MacLeod <amacleod@redhat.com>
15588
15589 PR target/108583
15590 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
15591 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
15592 Use it.
15593 (gimple_range_op_handler::maybe_non_standard): New.
15594 * range-op.cc (class operator_widen_plus_signed,
15595 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
15596 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
15597 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
15598 operator_widen_mult_unsigned::wi_fold,
15599 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
15600 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
15601 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
15602 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
15603
15604 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15605
15606 PR target/108583
15607 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
15608 * doc/tm.texi.in: Likewise.
15609 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
15610 * expmed.cc (expand_divmod): Likewise.
15611 * expmed.h (expand_divmod): Likewise.
15612 * expr.cc (force_operand, expand_expr_divmod): Likewise.
15613 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
15614 * target.def (can_special_div_by_const): Remove.
15615 * target.h: Remove tree-core.h include
15616 * targhooks.cc (default_can_special_div_by_const): Remove.
15617 * targhooks.h (default_can_special_div_by_const): Remove.
15618 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
15619 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
15620 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
15621
15622 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
15623
15624 * doc/install.texi2html: Fix issue number typo in comment.
15625
15626 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
15627
15628 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
15629 bool.
15630
15631 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
15632
15633 * doc/invoke.texi (Optimize Options): Add markup to
15634 description of asan-kernel-mem-intrinsic-prefix, and clarify
15635 wording slightly.
15636
15637 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
15638
15639 * doc/extend.texi (Named Address Spaces): Drop a redundant link
15640 to AVR-LibC.
15641
15642 2023-03-11 Jeff Law <jlaw@ventanamicro>
15643
15644 PR web/88860
15645 * doc/extend.texi: Clarify Attribute Syntax a bit.
15646
15647 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
15648
15649 * doc/install.texi (Prerequisites): Suggest using newer versions
15650 of Texinfo.
15651 (Final install): Clean up and modernize discussion of how to
15652 build or obtain the GCC manuals.
15653 * doc/install.texi2html: Update comment to point to the PR instead
15654 of "makeinfo 4.7 brokenness" (it's not specific to that version).
15655
15656 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15657
15658 PR target/107703
15659 * optabs.cc (expand_fix): For conversions from BFmode to integral,
15660 use shifts to convert it to SFmode first and then convert SFmode
15661 to integral.
15662
15663 2023-03-10 Andrew Pinski <apinski@marvell.com>
15664
15665 * config/aarch64/aarch64.md: Add a new define_split
15666 to help combine.
15667
15668 2023-03-10 Richard Biener <rguenther@suse.de>
15669
15670 * tree-ssa-structalias.cc (solve_graph): Immediately
15671 iterate self-cycles.
15672
15673 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15674
15675 PR tree-optimization/109008
15676 * range-op-float.cc (float_widen_lhs_range): If not
15677 -frounding-math and not IBM double double format, extend lhs
15678 range just by 0.5ulp rather than 1ulp in each direction.
15679
15680 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15681
15682 PR target/107998
15683 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
15684 $tmake_file.
15685 * config/i386/t-cygwin-w64: Remove.
15686
15687 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15688
15689 PR plugins/108634
15690 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
15691 C++14, don't declare as extern const arrays.
15692 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
15693 static constexpr member arrays for C++11 or C++14.
15694 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
15695 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
15696 (TREE_CODE_LENGTH): For C++11 or C++14 use
15697 tree_code_length_tmpl <0>::tree_code_length instead of
15698 tree_code_length.
15699 * tree.cc (tree_code_type, tree_code_length): Remove.
15700
15701 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15702
15703 PR other/108464
15704 * common.opt (fcanon-prefix-map): New option.
15705 * opts.cc: Include file-prefix-map.h.
15706 (flag_canon_prefix_map): New variable.
15707 (common_handle_option): Handle OPT_fcanon_prefix_map.
15708 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
15709 * file-prefix-map.h (flag_canon_prefix_map): Declare.
15710 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
15711 member.
15712 (add_prefix_map): Initialize canonicalize member from
15713 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
15714 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
15715 use lrealpath result only for map->canonicalize map entries.
15716 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
15717 * opts-global.cc (handle_common_deferred_options): Clear
15718 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
15719 * doc/invoke.texi (-fcanon-prefix-map): Document.
15720 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
15721 see also for -fcanon-prefix-map.
15722 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
15723
15724 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15725
15726 PR c/108079
15727 * cgraphunit.cc (check_global_declaration): Don't warn for unused
15728 variables which have OPT_Wunused_variable warning suppressed.
15729
15730 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15731
15732 PR tree-optimization/109008
15733 * range-op-float.cc (float_widen_lhs_range): If lb is
15734 minimum representable finite number or ub is maximum
15735 representable finite number, instead of widening it to
15736 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
15737 Temporarily clear flag_finite_math_only when canonicalizing
15738 the widened range.
15739
15740 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15741
15742 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
15743 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
15744 (gimple_fold_builtin): Ditto.
15745 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
15746 (class vleff): Ditto.
15747 (BASE): Ditto.
15748 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15749 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
15750 (vleff): Ditto.
15751 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
15752 (struct fault_load_def): Ditto.
15753 (SHAPE): Ditto.
15754 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15755 * config/riscv/riscv-vector-builtins.cc
15756 (rvv_arg_type_info::get_tree_type): Add size_ptr.
15757 (gimple_folder::gimple_folder): New class.
15758 (gimple_folder::fold): Ditto.
15759 (gimple_fold_builtin): New function.
15760 (get_read_vl_instance): Ditto.
15761 (get_read_vl_decl): Ditto.
15762 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
15763 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
15764 (get_read_vl_instance): New function.
15765 (get_read_vl_decl): Ditto.
15766 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
15767 (read_vl_insn_p): Ditto.
15768 (available_occurrence_p): Ditto.
15769 (backward_propagate_worthwhile_p): Ditto.
15770 (gen_vsetvl_pat): Adapt for vleff support.
15771 (get_forward_read_vl_insn): New function.
15772 (get_backward_fault_first_load_insn): Ditto.
15773 (source_equal_p): Adapt for vleff support.
15774 (first_ratio_invalid_for_second_sew_p): Remove.
15775 (first_ratio_invalid_for_second_lmul_p): Ditto.
15776 (first_lmul_less_than_second_lmul_p): Ditto.
15777 (first_ratio_less_than_second_ratio_p): Ditto.
15778 (support_relaxed_compatible_p): New function.
15779 (vector_insn_info::operator>): Remove.
15780 (vector_insn_info::operator>=): Refine.
15781 (vector_insn_info::parse_insn): Adapt for vleff support.
15782 (vector_insn_info::compatible_p): Ditto.
15783 (vector_insn_info::update_fault_first_load_avl): New function.
15784 (pass_vsetvl::transfer_after): Adapt for vleff support.
15785 (pass_vsetvl::demand_fusion): Ditto.
15786 (pass_vsetvl::cleanup_insns): Ditto.
15787 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
15788 redundant condtions.
15789 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
15790 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
15791 * config/riscv/riscv.md: Adapt for vleff support.
15792 * config/riscv/t-riscv: Ditto.
15793 * config/riscv/vector-iterators.md: New iterator.
15794 * config/riscv/vector.md (read_vlsi): New pattern.
15795 (read_vldi_zero_extend): Ditto.
15796 (@pred_fault_load<mode>): Ditto.
15797
15798 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15799
15800 * config/riscv/riscv-vector-builtins.cc
15801 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
15802 (function_expander::use_widen_ternop_insn): Ditto.
15803 * optabs.cc (maybe_gen_insn): Extend nops handling.
15804
15805 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15806
15807 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
15808 patterns according to RVV ISA.
15809 * config/riscv/vector-iterators.md: New iterators.
15810 * config/riscv/vector.md
15811 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
15812 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
15813 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
15814 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
15815 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
15816 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
15817 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
15818 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
15819 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
15820 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
15821 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
15822 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
15823 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
15824 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
15825
15826 2023-03-10 Michael Collison <collison@rivosinc.com>
15827
15828 * tree-vect-loop-manip.cc (vect_do_peeling): Use
15829 result of constant_lower_bound instead of vf for the lower
15830 bound of the epilog loop trip count.
15831
15832 2023-03-09 Tamar Christina <tamar.christina@arm.com>
15833
15834 * passes.cc (emergency_dump_function): Finish graph generation.
15835
15836 2023-03-09 Tamar Christina <tamar.christina@arm.com>
15837
15838 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
15839 and bottom bit only.
15840
15841 2023-03-09 Andrew Pinski <apinski@marvell.com>
15842
15843 PR tree-optimization/108980
15844 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
15845 Reorgnize the call to warning for not strict flexible arrays
15846 to be before the check of warned.
15847
15848 2023-03-09 Jason Merrill <jason@redhat.com>
15849
15850 * doc/extend.texi: Comment out __is_deducible docs.
15851
15852 2023-03-09 Jason Merrill <jason@redhat.com>
15853
15854 PR c++/105841
15855 * doc/extend.texi (Type Traits):: Document __is_deducible.
15856
15857 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
15858
15859 PR driver/108865
15860 * config.host: add object for x86_64-*-mingw*.
15861 * config/i386/sym-mingw32.cc: dummy file to attach
15862 symbol.
15863 * config/i386/utf8-mingw32.rc: windres resource file.
15864 * config/i386/winnt-utf8.manifest: XML manifest to
15865 enable UTF-8.
15866 * config/i386/x-mingw32: reference to x-mingw32-utf8.
15867 * config/i386/x-mingw32-utf8: Makefile fragment to
15868 embed UTF-8 manifest.
15869
15870 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
15871
15872 * lra-constraints.cc (process_alt_operands): Use operand modes for
15873 clobbered regs instead of the biggest access mode.
15874
15875 2023-03-09 Richard Biener <rguenther@suse.de>
15876
15877 PR middle-end/108995
15878 * fold-const.cc (extract_muldiv_1): Avoid folding
15879 (CST * b) / CST2 when sanitizing overflow and we rely on
15880 overflow being undefined.
15881
15882 2023-03-09 Jakub Jelinek <jakub@redhat.com>
15883 Richard Biener <rguenther@suse.de>
15884
15885 PR tree-optimization/109008
15886 * range-op-float.cc (float_widen_lhs_range): New function.
15887 (foperator_plus::op1_range, foperator_minus::op1_range,
15888 foperator_minus::op2_range, foperator_mult::op1_range,
15889 foperator_div::op1_range, foperator_div::op2_range): Use it.
15890
15891 2023-03-07 Jonathan Grant <jg@jguk.org>
15892
15893 PR sanitizer/81649
15894 * doc/invoke.texi (Instrumentation Options): Clarify
15895 LeakSanitizer behavior.
15896
15897 2023-03-07 Benson Muite <benson_muite@emailplus.org>
15898
15899 * doc/install.texi (Prerequisites): Add link to gmplib.org.
15900
15901 2023-03-07 Pan Li <pan2.li@intel.com>
15902 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15903
15904 PR target/108185
15905 PR target/108654
15906 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
15907 modes.
15908 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
15909 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
15910 * genmodes.cc (adj_precision): New.
15911 (ADJUST_PRECISION): New.
15912 (emit_mode_adjustments): Handle ADJUST_PRECISION.
15913
15914 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
15915
15916 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
15917
15918 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
15919
15920 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
15921 {s|u}{max|min} in QI, HI and DI modes.
15922 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
15923 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
15924 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
15925 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
15926 saved in SGPRs.
15927
15928 2023-03-06 Richard Biener <rguenther@suse.de>
15929
15930 PR tree-optimization/109025
15931 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
15932 the inner LC PHI use is the inner loop PHI latch definition
15933 before classifying an outer PHI as double reduction.
15934
15935 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
15936
15937 PR target/108429
15938 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
15939 generic.
15940 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
15941 (X86_TUNE_USE_SCATTER): Likewise.
15942
15943 2023-03-06 Xi Ruoyao <xry111@xry111.site>
15944
15945 PR target/109000
15946 * config/loongarch/loongarch.h (FP_RETURN): Use
15947 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
15948 (UNITS_PER_FP_ARG): Likewise.
15949
15950 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15951
15952 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
15953 (pass_vsetvl::backward_demand_fusion): Ditto.
15954
15955 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
15956 SiYu Wu <siyu@isrc.iscas.ac.cn>
15957
15958 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
15959 instructions.
15960 (riscv_sm3p1_<mode>): New.
15961 (riscv_sm4ed_<mode>): New.
15962 (riscv_sm4ks_<mode>): New.
15963 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
15964 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
15965 ZKSH's built-in functions.
15966
15967 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
15968 SiYu Wu <siyu@isrc.iscas.ac.cn>
15969
15970 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
15971 (riscv_sha256sig1_<mode>): New.
15972 (riscv_sha256sum0_<mode>): New.
15973 (riscv_sha256sum1_<mode>): New.
15974 (riscv_sha512sig0h): New.
15975 (riscv_sha512sig0l): New.
15976 (riscv_sha512sig1h): New.
15977 (riscv_sha512sig1l): New.
15978 (riscv_sha512sum0r): New.
15979 (riscv_sha512sum1r): New.
15980 (riscv_sha512sig0): New.
15981 (riscv_sha512sig1): New.
15982 (riscv_sha512sum0): New.
15983 (riscv_sha512sum1): New.
15984 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
15985 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
15986 built-in functions.
15987 (DIRECT_BUILTIN): Add new.
15988
15989 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
15990 SiYu Wu <siyu@isrc.iscas.ac.cn>
15991
15992 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
15993 (DsA): New.
15994 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
15995 (riscv_aes32dsmi): New.
15996 (riscv_aes64ds): New.
15997 (riscv_aes64dsm): New.
15998 (riscv_aes64im): New.
15999 (riscv_aes64ks1i): New.
16000 (riscv_aes64ks2): New.
16001 (riscv_aes32esi): New.
16002 (riscv_aes32esmi): New.
16003 (riscv_aes64es): New.
16004 (riscv_aes64esm): New.
16005 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
16006 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
16007 ZKNE's built-in functions.
16008
16009 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16010 SiYu Wu <siyu@isrc.iscas.ac.cn>
16011
16012 * config/riscv/bitmanip.md: Add ZBKB's instructions.
16013 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
16014 * config/riscv/riscv.md: Add new type for crypto instructions.
16015 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
16016 description file.
16017 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
16018 extension's built-in function file.
16019
16020 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16021 SiYu Wu <siyu@isrc.iscas.ac.cn>
16022
16023 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
16024 (RISCV_FTYPE_NAME3): New.
16025 (RISCV_ATYPE_QI): New.
16026 (RISCV_ATYPE_HI): New.
16027 (RISCV_FTYPE_ATYPES2): New.
16028 (RISCV_FTYPE_ATYPES3): New.
16029 * config/riscv/riscv-ftypes.def (2): New.
16030 (3): New.
16031
16032 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
16033
16034 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
16035 use exact_log2().
16036
16037 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16038 kito-cheng <kito.cheng@sifive.com>
16039
16040 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
16041 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
16042 (riscv_register_pragmas): Add builtin function check call.
16043 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
16044 (check_builtin_call): New function.
16045 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
16046 (class vreinterpret): Ditto.
16047 (class vlmul_ext): Ditto.
16048 (class vlmul_trunc): Ditto.
16049 (class vset): Ditto.
16050 (class vget): Ditto.
16051 (BASE): Ditto.
16052 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16053 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
16054 (vluxei16): Ditto.
16055 (vluxei32): Ditto.
16056 (vluxei64): Ditto.
16057 (vloxei8): Ditto.
16058 (vloxei16): Ditto.
16059 (vloxei32): Ditto.
16060 (vloxei64): Ditto.
16061 (vsuxei8): Ditto.
16062 (vsuxei16): Ditto.
16063 (vsuxei32): Ditto.
16064 (vsuxei64): Ditto.
16065 (vsoxei8): Ditto.
16066 (vsoxei16): Ditto.
16067 (vsoxei32): Ditto.
16068 (vsoxei64): Ditto.
16069 (vundefined): Add new intrinsic.
16070 (vreinterpret): Ditto.
16071 (vlmul_ext): Ditto.
16072 (vlmul_trunc): Ditto.
16073 (vset): Ditto.
16074 (vget): Ditto.
16075 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
16076 (struct narrow_alu_def): Ditto.
16077 (struct reduc_alu_def): Ditto.
16078 (struct vundefined_def): Ditto.
16079 (struct misc_def): Ditto.
16080 (struct vset_def): Ditto.
16081 (struct vget_def): Ditto.
16082 (SHAPE): Ditto.
16083 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16084 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
16085 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
16086 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
16087 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
16088 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
16089 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
16090 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
16091 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
16092 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
16093 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
16094 (DEF_RVV_LMUL1_OPS): Ditto.
16095 (DEF_RVV_LMUL2_OPS): Ditto.
16096 (DEF_RVV_LMUL4_OPS): Ditto.
16097 (vint16mf4_t): Ditto.
16098 (vint16mf2_t): Ditto.
16099 (vint16m1_t): Ditto.
16100 (vint16m2_t): Ditto.
16101 (vint16m4_t): Ditto.
16102 (vint16m8_t): Ditto.
16103 (vint32mf2_t): Ditto.
16104 (vint32m1_t): Ditto.
16105 (vint32m2_t): Ditto.
16106 (vint32m4_t): Ditto.
16107 (vint32m8_t): Ditto.
16108 (vint64m1_t): Ditto.
16109 (vint64m2_t): Ditto.
16110 (vint64m4_t): Ditto.
16111 (vint64m8_t): Ditto.
16112 (vuint16mf4_t): Ditto.
16113 (vuint16mf2_t): Ditto.
16114 (vuint16m1_t): Ditto.
16115 (vuint16m2_t): Ditto.
16116 (vuint16m4_t): Ditto.
16117 (vuint16m8_t): Ditto.
16118 (vuint32mf2_t): Ditto.
16119 (vuint32m1_t): Ditto.
16120 (vuint32m2_t): Ditto.
16121 (vuint32m4_t): Ditto.
16122 (vuint32m8_t): Ditto.
16123 (vuint64m1_t): Ditto.
16124 (vuint64m2_t): Ditto.
16125 (vuint64m4_t): Ditto.
16126 (vuint64m8_t): Ditto.
16127 (vint8mf4_t): Ditto.
16128 (vint8mf2_t): Ditto.
16129 (vint8m1_t): Ditto.
16130 (vint8m2_t): Ditto.
16131 (vint8m4_t): Ditto.
16132 (vint8m8_t): Ditto.
16133 (vuint8mf4_t): Ditto.
16134 (vuint8mf2_t): Ditto.
16135 (vuint8m1_t): Ditto.
16136 (vuint8m2_t): Ditto.
16137 (vuint8m4_t): Ditto.
16138 (vuint8m8_t): Ditto.
16139 (vint8mf8_t): Ditto.
16140 (vuint8mf8_t): Ditto.
16141 (vfloat32mf2_t): Ditto.
16142 (vfloat32m1_t): Ditto.
16143 (vfloat32m2_t): Ditto.
16144 (vfloat32m4_t): Ditto.
16145 (vfloat64m1_t): Ditto.
16146 (vfloat64m2_t): Ditto.
16147 (vfloat64m4_t): Ditto.
16148 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
16149 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
16150 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
16151 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
16152 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
16153 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
16154 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
16155 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
16156 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
16157 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
16158 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
16159 (DEF_RVV_LMUL1_OPS): Ditto.
16160 (DEF_RVV_LMUL2_OPS): Ditto.
16161 (DEF_RVV_LMUL4_OPS): Ditto.
16162 (DEF_RVV_TYPE_INDEX): Ditto.
16163 (required_extensions_p): Adapt for new intrinsic support/
16164 (get_required_extensions): New function.
16165 (check_required_extensions): Ditto.
16166 (unsigned_base_type_p): Remove.
16167 (rvv_arg_type_info::get_scalar_ptr_type): New function.
16168 (get_mode_for_bitsize): Remove.
16169 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
16170 (rvv_arg_type_info::get_base_vector_type): Ditto.
16171 (rvv_arg_type_info::get_function_type_index): Ditto.
16172 (DEF_RVV_BASE_TYPE): New def.
16173 (function_builder::apply_predication): New class.
16174 (function_expander::mask_mode): Ditto.
16175 (function_checker::function_checker): Ditto.
16176 (function_checker::report_non_ice): Ditto.
16177 (function_checker::report_out_of_range): Ditto.
16178 (function_checker::require_immediate): Ditto.
16179 (function_checker::require_immediate_range): Ditto.
16180 (function_checker::check): Ditto.
16181 (check_builtin_call): Ditto.
16182 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
16183 (DEF_RVV_BASE_TYPE): Ditto.
16184 (DEF_RVV_TYPE_INDEX): Ditto.
16185 (vbool64_t): Ditto.
16186 (vbool32_t): Ditto.
16187 (vbool16_t): Ditto.
16188 (vbool8_t): Ditto.
16189 (vbool4_t): Ditto.
16190 (vbool2_t): Ditto.
16191 (vbool1_t): Ditto.
16192 (vuint8mf8_t): Ditto.
16193 (vuint8mf4_t): Ditto.
16194 (vuint8mf2_t): Ditto.
16195 (vuint8m1_t): Ditto.
16196 (vuint8m2_t): Ditto.
16197 (vint8m4_t): Ditto.
16198 (vuint8m4_t): Ditto.
16199 (vint8m8_t): Ditto.
16200 (vuint8m8_t): Ditto.
16201 (vint16mf4_t): Ditto.
16202 (vuint16mf2_t): Ditto.
16203 (vuint16m1_t): Ditto.
16204 (vuint16m2_t): Ditto.
16205 (vuint16m4_t): Ditto.
16206 (vuint16m8_t): Ditto.
16207 (vint32mf2_t): Ditto.
16208 (vuint32m1_t): Ditto.
16209 (vuint32m2_t): Ditto.
16210 (vuint32m4_t): Ditto.
16211 (vuint32m8_t): Ditto.
16212 (vuint64m1_t): Ditto.
16213 (vuint64m2_t): Ditto.
16214 (vuint64m4_t): Ditto.
16215 (vuint64m8_t): Ditto.
16216 (vfloat32mf2_t): Ditto.
16217 (vfloat32m1_t): Ditto.
16218 (vfloat32m2_t): Ditto.
16219 (vfloat32m4_t): Ditto.
16220 (vfloat32m8_t): Ditto.
16221 (vfloat64m1_t): Ditto.
16222 (vfloat64m4_t): Ditto.
16223 (vector): Move it def.
16224 (scalar): Ditto.
16225 (mask): Ditto.
16226 (signed_vector): Ditto.
16227 (unsigned_vector): Ditto.
16228 (unsigned_scalar): Ditto.
16229 (vector_ptr): Ditto.
16230 (scalar_ptr): Ditto.
16231 (scalar_const_ptr): Ditto.
16232 (void): Ditto.
16233 (size): Ditto.
16234 (ptrdiff): Ditto.
16235 (unsigned_long): Ditto.
16236 (long): Ditto.
16237 (eew8_index): Ditto.
16238 (eew16_index): Ditto.
16239 (eew32_index): Ditto.
16240 (eew64_index): Ditto.
16241 (shift_vector): Ditto.
16242 (double_trunc_vector): Ditto.
16243 (quad_trunc_vector): Ditto.
16244 (oct_trunc_vector): Ditto.
16245 (double_trunc_scalar): Ditto.
16246 (double_trunc_signed_vector): Ditto.
16247 (double_trunc_unsigned_vector): Ditto.
16248 (double_trunc_unsigned_scalar): Ditto.
16249 (double_trunc_float_vector): Ditto.
16250 (float_vector): Ditto.
16251 (lmul1_vector): Ditto.
16252 (widen_lmul1_vector): Ditto.
16253 (eew8_interpret): Ditto.
16254 (eew16_interpret): Ditto.
16255 (eew32_interpret): Ditto.
16256 (eew64_interpret): Ditto.
16257 (vlmul_ext_x2): Ditto.
16258 (vlmul_ext_x4): Ditto.
16259 (vlmul_ext_x8): Ditto.
16260 (vlmul_ext_x16): Ditto.
16261 (vlmul_ext_x32): Ditto.
16262 (vlmul_ext_x64): Ditto.
16263 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
16264 (struct function_type_info): New function.
16265 (struct rvv_arg_type_info): Ditto.
16266 (class function_checker): New class.
16267 (rvv_arg_type_info::get_scalar_type): New function.
16268 (rvv_arg_type_info::get_vector_type): Ditto.
16269 (function_expander::ret_mode): New function.
16270 (function_checker::arg_mode): Ditto.
16271 (function_checker::ret_mode): Ditto.
16272 * config/riscv/t-riscv: Add generator.
16273 * config/riscv/vector-iterators.md: New iterators.
16274 * config/riscv/vector.md (vundefined<mode>): New pattern.
16275 (@vundefined<mode>): Ditto.
16276 (@vreinterpret<mode>): Ditto.
16277 (@vlmul_extx2<mode>): Ditto.
16278 (@vlmul_extx4<mode>): Ditto.
16279 (@vlmul_extx8<mode>): Ditto.
16280 (@vlmul_extx16<mode>): Ditto.
16281 (@vlmul_extx32<mode>): Ditto.
16282 (@vlmul_extx64<mode>): Ditto.
16283 (*vlmul_extx2<mode>): Ditto.
16284 (*vlmul_extx4<mode>): Ditto.
16285 (*vlmul_extx8<mode>): Ditto.
16286 (*vlmul_extx16<mode>): Ditto.
16287 (*vlmul_extx32<mode>): Ditto.
16288 (*vlmul_extx64<mode>): Ditto.
16289 * config/riscv/genrvv-type-indexer.cc: New file.
16290
16291 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16292
16293 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
16294 (slide1_sew64_helper): New function.
16295 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
16296 (get_unknown_min_value): Ditto.
16297 (force_vector_length_operand): Ditto.
16298 (gen_no_side_effects_vsetvl_rtx): Ditto.
16299 (get_vl_x2_rtx): Ditto.
16300 (slide1_sew64_helper): Ditto.
16301 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
16302 (class vrgather): Ditto.
16303 (class vrgatherei16): Ditto.
16304 (class vcompress): Ditto.
16305 (BASE): Ditto.
16306 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16307 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
16308 (vslidedown): Ditto.
16309 (vslide1up): Ditto.
16310 (vslide1down): Ditto.
16311 (vfslide1up): Ditto.
16312 (vfslide1down): Ditto.
16313 (vrgather): Ditto.
16314 (vrgatherei16): Ditto.
16315 (vcompress): Ditto.
16316 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
16317 (vint8mf8_t): Ditto.
16318 (vint8mf4_t): Ditto.
16319 (vint8mf2_t): Ditto.
16320 (vint8m1_t): Ditto.
16321 (vint8m2_t): Ditto.
16322 (vint8m4_t): Ditto.
16323 (vint16mf4_t): Ditto.
16324 (vint16mf2_t): Ditto.
16325 (vint16m1_t): Ditto.
16326 (vint16m2_t): Ditto.
16327 (vint16m4_t): Ditto.
16328 (vint16m8_t): Ditto.
16329 (vint32mf2_t): Ditto.
16330 (vint32m1_t): Ditto.
16331 (vint32m2_t): Ditto.
16332 (vint32m4_t): Ditto.
16333 (vint32m8_t): Ditto.
16334 (vint64m1_t): Ditto.
16335 (vint64m2_t): Ditto.
16336 (vint64m4_t): Ditto.
16337 (vint64m8_t): Ditto.
16338 (vuint8mf8_t): Ditto.
16339 (vuint8mf4_t): Ditto.
16340 (vuint8mf2_t): Ditto.
16341 (vuint8m1_t): Ditto.
16342 (vuint8m2_t): Ditto.
16343 (vuint8m4_t): Ditto.
16344 (vuint16mf4_t): Ditto.
16345 (vuint16mf2_t): Ditto.
16346 (vuint16m1_t): Ditto.
16347 (vuint16m2_t): Ditto.
16348 (vuint16m4_t): Ditto.
16349 (vuint16m8_t): Ditto.
16350 (vuint32mf2_t): Ditto.
16351 (vuint32m1_t): Ditto.
16352 (vuint32m2_t): Ditto.
16353 (vuint32m4_t): Ditto.
16354 (vuint32m8_t): Ditto.
16355 (vuint64m1_t): Ditto.
16356 (vuint64m2_t): Ditto.
16357 (vuint64m4_t): Ditto.
16358 (vuint64m8_t): Ditto.
16359 (vfloat32mf2_t): Ditto.
16360 (vfloat32m1_t): Ditto.
16361 (vfloat32m2_t): Ditto.
16362 (vfloat32m4_t): Ditto.
16363 (vfloat32m8_t): Ditto.
16364 (vfloat64m1_t): Ditto.
16365 (vfloat64m2_t): Ditto.
16366 (vfloat64m4_t): Ditto.
16367 (vfloat64m8_t): Ditto.
16368 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
16369 * config/riscv/riscv.md: Adjust RVV instruction types.
16370 * config/riscv/vector-iterators.md (down): New iterator.
16371 (=vd,vr): New attribute.
16372 (UNSPEC_VSLIDE1UP): New unspec.
16373 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
16374 (*pred_slide<ud><mode>): Ditto.
16375 (*pred_slide<ud><mode>_extended): Ditto.
16376 (@pred_gather<mode>): Ditto.
16377 (@pred_gather<mode>_scalar): Ditto.
16378 (@pred_gatherei16<mode>): Ditto.
16379 (@pred_compress<mode>): Ditto.
16380
16381 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16382
16383 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
16384
16385 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16386
16387 * config/riscv/constraints.md (Wb1): New constraint.
16388 * config/riscv/predicates.md
16389 (vector_least_significant_set_mask_operand): New predicate.
16390 (vector_broadcast_mask_operand): Ditto.
16391 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
16392 (gen_scalar_move_mask): New function.
16393 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
16394 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
16395 (class vmv_s): Ditto.
16396 (BASE): Ditto.
16397 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16398 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
16399 (vmv_s): Ditto.
16400 (vfmv_f): Ditto.
16401 (vfmv_s): Ditto.
16402 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
16403 (SHAPE): Ditto.
16404 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16405 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
16406 (function_expander::use_exact_insn): New function.
16407 (function_expander::use_contiguous_load_insn): New function.
16408 (function_expander::use_contiguous_store_insn): New function.
16409 (function_expander::use_ternop_insn): New function.
16410 (function_expander::use_widen_ternop_insn): New function.
16411 (function_expander::use_scalar_move_insn): New function.
16412 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
16413 * config/riscv/riscv-vector-builtins.h
16414 (function_expander::add_scalar_move_mask_operand): New class.
16415 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
16416 (scalar_move_insn_p): Ditto.
16417 (has_vsetvl_killed_avl_p): Ditto.
16418 (anticipatable_occurrence_p): Ditto.
16419 (insert_vsetvl): Ditto.
16420 (get_vl_vtype_info): Ditto.
16421 (calculate_sew): Ditto.
16422 (calculate_vlmul): Ditto.
16423 (incompatible_avl_p): Ditto.
16424 (different_sew_p): Ditto.
16425 (different_lmul_p): Ditto.
16426 (different_ratio_p): Ditto.
16427 (different_tail_policy_p): Ditto.
16428 (different_mask_policy_p): Ditto.
16429 (possible_zero_avl_p): Ditto.
16430 (first_ratio_invalid_for_second_sew_p): Ditto.
16431 (first_ratio_invalid_for_second_lmul_p): Ditto.
16432 (second_ratio_invalid_for_first_sew_p): Ditto.
16433 (second_ratio_invalid_for_first_lmul_p): Ditto.
16434 (second_sew_less_than_first_sew_p): Ditto.
16435 (first_sew_less_than_second_sew_p): Ditto.
16436 (compare_lmul): Ditto.
16437 (second_lmul_less_than_first_lmul_p): Ditto.
16438 (first_lmul_less_than_second_lmul_p): Ditto.
16439 (first_ratio_less_than_second_ratio_p): Ditto.
16440 (second_ratio_less_than_first_ratio_p): Ditto.
16441 (DEF_INCOMPATIBLE_COND): Ditto.
16442 (greatest_sew): Ditto.
16443 (first_sew): Ditto.
16444 (second_sew): Ditto.
16445 (first_vlmul): Ditto.
16446 (second_vlmul): Ditto.
16447 (first_ratio): Ditto.
16448 (second_ratio): Ditto.
16449 (vlmul_for_first_sew_second_ratio): Ditto.
16450 (ratio_for_second_sew_first_vlmul): Ditto.
16451 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
16452 (always_unavailable): Ditto.
16453 (avl_unavailable_p): Ditto.
16454 (sew_unavailable_p): Ditto.
16455 (lmul_unavailable_p): Ditto.
16456 (ge_sew_unavailable_p): Ditto.
16457 (ge_sew_lmul_unavailable_p): Ditto.
16458 (ge_sew_ratio_unavailable_p): Ditto.
16459 (DEF_UNAVAILABLE_COND): Ditto.
16460 (same_sew_lmul_demand_p): Ditto.
16461 (propagate_avl_across_demands_p): Ditto.
16462 (reg_available_p): Ditto.
16463 (avl_info::has_non_zero_avl): Ditto.
16464 (vl_vtype_info::has_non_zero_avl): Ditto.
16465 (vector_insn_info::operator>=): Refactor.
16466 (vector_insn_info::parse_insn): Adjust for scalar move.
16467 (vector_insn_info::demand_vl_vtype): Remove.
16468 (vector_insn_info::compatible_p): New function.
16469 (vector_insn_info::compatible_avl_p): Ditto.
16470 (vector_insn_info::compatible_vtype_p): Ditto.
16471 (vector_insn_info::available_p): Ditto.
16472 (vector_insn_info::merge): Ditto.
16473 (vector_insn_info::fuse_avl): Ditto.
16474 (vector_insn_info::fuse_sew_lmul): Ditto.
16475 (vector_insn_info::fuse_tail_policy): Ditto.
16476 (vector_insn_info::fuse_mask_policy): Ditto.
16477 (vector_insn_info::dump): Ditto.
16478 (vector_infos_manager::release): Ditto.
16479 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
16480 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
16481 (pass_vsetvl::hard_empty_block_p): Ditto.
16482 (pass_vsetvl::backward_demand_fusion): Ditto.
16483 (pass_vsetvl::forward_demand_fusion): Ditto.
16484 (pass_vsetvl::refine_vsetvls): Ditto.
16485 (pass_vsetvl::cleanup_vsetvls): Ditto.
16486 (pass_vsetvl::commit_vsetvls): Ditto.
16487 (pass_vsetvl::propagate_avl): Ditto.
16488 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
16489 (struct demands_pair): Ditto.
16490 (struct demands_cond): Ditto.
16491 (struct demands_fuse_rule): Ditto.
16492 * config/riscv/vector-iterators.md: New iterator.
16493 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
16494 (*pred_broadcast<mode>): Ditto.
16495 (*pred_broadcast<mode>_extended_scalar): Ditto.
16496 (@pred_extract_first<mode>): Ditto.
16497 (*pred_extract_first<mode>): Ditto.
16498 (@pred_extract_first_trunc<mode>): Ditto.
16499 * config/riscv/riscv-vsetvl.def: New file.
16500
16501 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
16502
16503 * config/riscv/bitmanip.md: allow 0 constant in max/min
16504 pattern.
16505
16506 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
16507
16508 * config/riscv/bitmanip.md: Fix wrong index in the check.
16509
16510 2023-03-04 Jakub Jelinek <jakub@redhat.com>
16511
16512 PR middle-end/109006
16513 * vec.cc (test_auto_alias): Adjust comment for removal of
16514 m_vecdata.
16515 * read-rtl-function.cc (function_reader::parse_block): Likewise.
16516 * gdbhooks.py: Likewise.
16517
16518 2023-03-04 Jakub Jelinek <jakub@redhat.com>
16519
16520 PR testsuite/108973
16521 * selftest-diagnostic.cc
16522 (test_diagnostic_context::test_diagnostic_context): Set
16523 caret_max_width to 80.
16524
16525 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16526
16527 * gimple-ssa-warn-access.cc
16528 (pass_waccess::check_dangling_stores): Skip non-stores.
16529
16530 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16531
16532 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
16533 after vmsr and vmrs, and lower the case of P0.
16534
16535 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
16536
16537 PR middle-end/109006
16538 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
16539
16540 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
16541
16542 PR middle-end/109006
16543 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
16544
16545 2023-03-03 Jakub Jelinek <jakub@redhat.com>
16546
16547 PR c/108986
16548 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
16549 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
16550 suppressed on stmt. For [static %E] warning, print access_nelts
16551 rather than access_size. Fix up comment wording.
16552
16553 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
16554
16555 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
16556 arch14 instead of z16.
16557
16558 2023-03-03 Anthony Green <green@moxielogic.com>
16559
16560 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
16561
16562 2023-03-03 Anthony Green <green@moxielogic.com>
16563
16564 * config/moxie/constraints.md (A, B, W): Change
16565 define_constraint to define_memory_constraint.
16566
16567 2023-03-03 Xi Ruoyao <xry111@xry111.site>
16568
16569 * toplev.cc (process_options): Fix the spelling of
16570 "-fstack-clash-protection".
16571
16572 2023-03-03 Richard Biener <rguenther@suse.de>
16573
16574 PR tree-optimization/109002
16575 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
16576 PHI-translate ANTIC_IN.
16577
16578 2023-03-03 Jakub Jelinek <jakub@redhat.com>
16579
16580 PR tree-optimization/108988
16581 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
16582 size_type_node before passing it as argument to fwrite. Formatting
16583 fixes.
16584
16585 2023-03-03 Richard Biener <rguenther@suse.de>
16586
16587 PR target/108738
16588 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
16589 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
16590 * config/i386/i386-features.h (scalar_chain::max_visits): New.
16591 (scalar_chain::build): Add bitmap parameter, return boolean.
16592 (scalar_chain::add_insn): Likewise.
16593 (scalar_chain::analyze_register_chain): Likewise.
16594 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
16595 Initialize max_visits.
16596 (scalar_chain::analyze_register_chain): When we exhaust
16597 max_visits, abort. Also abort when running into any
16598 disallowed insn.
16599 (scalar_chain::add_insn): Propagate abort.
16600 (scalar_chain::build): Likewise. When aborting amend
16601 the set of disallowed insn with the insns set.
16602 (convert_scalars_to_vector): Adjust. Do not convert aborted
16603 chains.
16604
16605 2023-03-03 Richard Biener <rguenther@suse.de>
16606
16607 PR debug/108772
16608 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
16609 generate a DIE for a function scope static.
16610
16611 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16612
16613 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
16614
16615 2023-03-02 Jakub Jelinek <jakub@redhat.com>
16616
16617 PR target/108883
16618 * target.h (emit_support_tinfos_callback): New typedef.
16619 * targhooks.h (default_emit_support_tinfos): Declare.
16620 * targhooks.cc (default_emit_support_tinfos): New function.
16621 * target.def (emit_support_tinfos): New target hook.
16622 * doc/tm.texi.in (emit_support_tinfos): Document it.
16623 * doc/tm.texi: Regenerated.
16624 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
16625 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
16626
16627 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
16628
16629 * ira-costs.cc: Include print-rtl.h.
16630 (record_reg_classes, scan_one_insn): Add code to print debug info.
16631 (record_operand_costs): Find and use smaller cost for hard reg
16632 move.
16633
16634 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
16635 Paul-Antoine Arras <pa@codesourcery.com>
16636
16637 * builtins.cc (mathfn_built_in_explicit): New.
16638 * config/gcn/gcn.cc: Include case-cfn-macros.h.
16639 (mathfn_built_in_explicit): Add prototype.
16640 (gcn_vectorize_builtin_vectorized_function): New.
16641 (gcn_libc_has_function): New.
16642 (TARGET_LIBC_HAS_FUNCTION): Define.
16643 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
16644
16645 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16646
16647 PR tree-optimization/108979
16648 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
16649 operations on invariants.
16650
16651 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
16652
16653 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
16654 * config/s390/s390.cc (s390_option_override_internal): Make
16655 partial vector usage the default from z13 on.
16656 * config/s390/vector.md (len_load_v16qi): Add.
16657 (len_store_v16qi): Add.
16658
16659 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
16660
16661 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
16662 of constant 0 offset.
16663
16664 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
16665
16666 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
16667 instead of long.
16668 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
16669
16670 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
16671
16672 * config.gcc: add -with-{no-}msa build option.
16673 * config/mips/mips.h: Likewise.
16674 * doc/install.texi: Likewise.
16675
16676 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16677
16678 PR tree-optimization/108603
16679 * explow.cc (convert_memory_address_addr_space_1): Only wrap
16680 the result of a recursive call in a CONST if no instructions
16681 were emitted.
16682
16683 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16684
16685 PR tree-optimization/108430
16686 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
16687 of inverted condition.
16688
16689 2023-03-02 Jakub Jelinek <jakub@redhat.com>
16690
16691 PR c++/108934
16692 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
16693 comparison copy the bytes from ptr to a temporary buffer and clearing
16694 padding bits in there.
16695
16696 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
16697
16698 PR middle-end/108545
16699 * gimplify.cc (struct tree_operand_hash_no_se): New.
16700 (omp_index_mapping_groups_1, omp_index_mapping_groups,
16701 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
16702 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
16703 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
16704 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
16705 of tree_operand_hash.
16706
16707 2023-03-01 LIU Hao <lh_mouse@126.com>
16708
16709 PR pch/14940
16710 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
16711 Remove the size limit `pch_VA_max_size`
16712
16713 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
16714
16715 PR middle-end/108546
16716 * omp-low.cc (lower_omp_target): Remove optional handling
16717 on the receiver side, i.e. inside target (data), for
16718 use_device_ptr.
16719
16720 2023-03-01 Jakub Jelinek <jakub@redhat.com>
16721
16722 PR debug/108967
16723 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
16724 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
16725
16726 2023-03-01 Richard Biener <rguenther@suse.de>
16727
16728 PR tree-optimization/108970
16729 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
16730 Check we can copy the BBs.
16731 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
16732 check.
16733 (vect_do_peeling): Streamline error handling.
16734
16735 2023-03-01 Richard Biener <rguenther@suse.de>
16736
16737 PR tree-optimization/108950
16738 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
16739 Check oprnd0 is defined in the loop.
16740 * tree-vect-loop.cc (vectorizable_reduction): Record all
16741 operands vector types, compute that of invariants and
16742 properly update their SLP nodes.
16743
16744 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
16745
16746 PR target/108240
16747 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
16748 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
16749
16750 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
16751
16752 PR middle-end/107411
16753 PR middle-end/107411
16754 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
16755 xasprintf.
16756 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
16757 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
16758
16759 2023-02-28 Jakub Jelinek <jakub@redhat.com>
16760
16761 PR sanitizer/108894
16762 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
16763 comparison rather than index > bound.
16764 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
16765 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
16766 * doc/invoke.texi (-fsanitize=bounds): Document that whether
16767 flexible array member-like arrays are instrumented or not depends
16768 on -fstrict-flex-arrays* options of strict_flex_array attributes.
16769 (-fsanitize=bounds-strict): Document that flexible array members
16770 are not instrumented.
16771
16772 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
16773
16774 PR target/108922
16775 Revert:
16776 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
16777 (fmod<mode>3): Ditto.
16778 (fpremxf4_i387): Ditto.
16779 (reminderxf3): Ditto.
16780 (reminder<mode>3): Ditto.
16781 (fprem1xf4_i387): Ditto.
16782
16783 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
16784
16785 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
16786 generating FFS with mismatched operand and result modes, by using
16787 an explicit SIGN_EXTEND/ZERO_EXTEND.
16788 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
16789 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
16790
16791 2023-02-27 Patrick Palka <ppalka@redhat.com>
16792
16793 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
16794 * lra-int.h (lra_change_class): Likewise.
16795 * recog.h (which_op_alt): Likewise.
16796 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
16797 instead of static.
16798
16799 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
16800
16801 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
16802 New prototype.
16803 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
16804 New function.
16805 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
16806 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
16807
16808 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
16809
16810 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
16811 (xtensa_get_config_v3): New functions.
16812
16813 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16814
16815 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
16816
16817 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
16818
16819 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
16820 the macro to 0x1000000000.
16821
16822 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
16823
16824 PR modula2/108261
16825 * doc/gm2.texi (-fm2-pathname): New option documented.
16826 (-fm2-pathnameI): New option documented.
16827 (-fm2-prefix=): New option documented.
16828 (-fruntime-modules=): Update default module list.
16829
16830 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
16831
16832 PR target/108919
16833 * config/xtensa/xtensa-protos.h
16834 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
16835 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
16836 to xtensa_expand_call.
16837 (xtensa_expand_call): Emit the call and add a clobber expression
16838 for the static chain to it in case of windowed ABI.
16839 * config/xtensa/xtensa.md (call, call_value, sibcall)
16840 (sibcall_value): Call xtensa_expand_call and complete expansion
16841 right after that call.
16842
16843 2023-02-24 Richard Biener <rguenther@suse.de>
16844
16845 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
16846 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
16847 changing alignment of vec<T, A, vl_embed> and simplifying
16848 address.
16849 (vec<T, A, vl_embed>::address): Compute as this + 1.
16850 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
16851 vector instead of the offset of the m_vecdata member.
16852 (auto_vec<T, N>::m_data): Turn storage into
16853 uninitialized unsigned char.
16854 (auto_vec<T, N>::auto_vec): Allow allocation of one
16855 stack member. Initialize m_vec in a special way to
16856 avoid later stringop overflow diagnostics.
16857 * vec.cc (test_auto_alias): New.
16858 (vec_cc_tests): Call it.
16859
16860 2023-02-24 Richard Biener <rguenther@suse.de>
16861
16862 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
16863 take a const reference to the object, use address to
16864 access data.
16865 (vec<T, A, vl_embed>::contains): Use address to access data.
16866 (vec<T, A, vl_embed>::operator[]): Use address instead of
16867 m_vecdata to access data.
16868 (vec<T, A, vl_embed>::iterate): Likewise.
16869 (vec<T, A, vl_embed>::copy): Likewise.
16870 (vec<T, A, vl_embed>::quick_push): Likewise.
16871 (vec<T, A, vl_embed>::pop): Likewise.
16872 (vec<T, A, vl_embed>::quick_insert): Likewise.
16873 (vec<T, A, vl_embed>::ordered_remove): Likewise.
16874 (vec<T, A, vl_embed>::unordered_remove): Likewise.
16875 (vec<T, A, vl_embed>::block_remove): Likewise.
16876 (vec<T, A, vl_heap>::address): Likewise.
16877
16878 2023-02-24 Martin Liska <mliska@suse.cz>
16879
16880 PR sanitizer/108834
16881 * asan.cc (asan_add_global): Use proper TU name for normal
16882 global variables (and aux_base_name for the artificial one).
16883
16884 2023-02-24 Jakub Jelinek <jakub@redhat.com>
16885
16886 * config/i386/i386-builtin.def: Update description of BDESC
16887 and BDESC_FIRST in file comment to include mask2.
16888
16889 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16890
16891 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
16892
16893 2023-02-24 Jakub Jelinek <jakub@redhat.com>
16894
16895 PR middle-end/108854
16896 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
16897 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
16898 nodes and adjust their DECL_CONTEXT.
16899
16900 2023-02-24 Jakub Jelinek <jakub@redhat.com>
16901
16902 PR target/108881
16903 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
16904 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
16905 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
16906 __builtin_ia32_cvtne2ps2bf16_v8bf,
16907 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
16908 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
16909 __builtin_ia32_cvtneps2bf16_v8sf_mask,
16910 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
16911 __builtin_ia32_cvtneps2bf16_v4sf_mask,
16912 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
16913 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
16914 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
16915 __builtin_ia32_dpbf16ps_v4sf_mask,
16916 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
16917 OPTION_MASK_ISA_AVX512VL.
16918
16919 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
16920
16921 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
16922 Add non-compact 32-bit multilibs.
16923
16924 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
16925
16926 * config/mips/mips.md (*clo<mode>2): New pattern.
16927
16928 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
16929
16930 * config/mips/mips.h (machine_function): New variable
16931 use_hazard_barrier_return_p.
16932 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
16933 (mips_hb_return_internal): New insn pattern.
16934 * config/mips/mips.cc (mips_attribute_table): Add attribute
16935 use_hazard_barrier_return.
16936 (mips_use_hazard_barrier_return_p): New static function.
16937 (mips_function_attr_inlinable_p): Likewise.
16938 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
16939 Emit error for unsupported architecture choice.
16940 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
16941 Return false for use_hazard_barrier_return.
16942 (mips_expand_epilogue): Emit hazard barrier return.
16943 * doc/extend.texi: Document use_hazard_barrier_return.
16944
16945 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
16946
16947 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
16948 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
16949 for the gcc-internal headers.
16950
16951 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
16952
16953 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
16954 and $(POSTCOMPILE) instead of manual dependency listing.
16955 * config/xtensa/xtensa-dynconfig.c: Rename to ...
16956 * config/xtensa/xtensa-dynconfig.cc: ... this.
16957
16958 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
16959
16960 * doc/cfg.texi: Reorder index entries around @items.
16961 * doc/cpp.texi: Ditto.
16962 * doc/cppenv.texi: Ditto.
16963 * doc/cppopts.texi: Ditto.
16964 * doc/generic.texi: Ditto.
16965 * doc/install.texi: Ditto.
16966 * doc/extend.texi: Ditto.
16967 * doc/invoke.texi: Ditto.
16968 * doc/md.texi: Ditto.
16969 * doc/rtl.texi: Ditto.
16970 * doc/tm.texi.in: Ditto.
16971 * doc/trouble.texi: Ditto.
16972 * doc/tm.texi: Regenerate.
16973
16974 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
16975
16976 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
16977 the occurrence of general-purpose register used only once and for
16978 transferring intermediate value.
16979
16980 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
16981
16982 * config/xtensa/xtensa.cc (machine_function): Add new member
16983 'eliminated_callee_saved_bmp'.
16984 (xtensa_can_eliminate_callee_saved_reg_p): New function to
16985 determine whether the register can be eliminated or not.
16986 (xtensa_expand_prologue): Add invoking the above function and
16987 elimination the use of callee-saved register by using its stack
16988 slot through the stack pointer (or the frame pointer if needed)
16989 directly.
16990 (xtensa_expand_prologue): Modify to not emit register restoration
16991 insn from its stack slot if the register is already eliminated.
16992
16993 2023-02-23 Jakub Jelinek <jakub@redhat.com>
16994
16995 PR translation/108890
16996 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
16997 around fatal_error format strings.
16998
16999 2023-02-23 Richard Biener <rguenther@suse.de>
17000
17001 * tree-ssa-structalias.cc (handle_lhs_call): Do not
17002 re-create rhsc, only truncate it.
17003
17004 2023-02-23 Jakub Jelinek <jakub@redhat.com>
17005
17006 PR middle-end/106258
17007 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
17008 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
17009
17010 2023-02-23 Richard Biener <rguenther@suse.de>
17011
17012 * tree-if-conv.cc (tree_if_conversion): Properly manage
17013 memory of refs and the contained data references.
17014
17015 2023-02-23 Richard Biener <rguenther@suse.de>
17016
17017 PR tree-optimization/108888
17018 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
17019 calls to predicate.
17020 (predicate_statements): Only predicate calls with PLF_2.
17021
17022 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17023
17024 * config/xtensa/xtensa.md
17025 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
17026 Add missing "SI:" to PLUS RTXes.
17027
17028 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
17029
17030 PR target/108876
17031 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
17032 Emit (use (reg:SI A0_REG)) at the end in the sibling call
17033 (i.e. the same place as (return) in the normal call).
17034
17035 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
17036
17037 Revert:
17038 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
17039
17040 PR target/108876
17041 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
17042 for A0_REG.
17043 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
17044 (sibcall_value, sibcall_value_internal): Add 'use' expression
17045 for A0_REG.
17046
17047 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
17048
17049 * doc/cppdiropts.texi: Reorder @opindex commands to precede
17050 @items they relate to.
17051 * doc/cppopts.texi: Ditto.
17052 * doc/cppwarnopts.texi: Ditto.
17053 * doc/invoke.texi: Ditto.
17054 * doc/lto.texi: Ditto.
17055
17056 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
17057
17058 * internal-fn.cc (expand_MASK_CALL): New.
17059 * internal-fn.def (MASK_CALL): New.
17060 * internal-fn.h (expand_MASK_CALL): New prototype.
17061 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
17062 for mask arguments also.
17063 * tree-if-conv.cc: Include cgraph.h.
17064 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
17065 (predicate_statements): Convert functions to IFN_MASK_CALL.
17066 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
17067 IFN_MASK_CALL as a SIMD function call.
17068 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
17069 IFN_MASK_CALL as an inbranch SIMD function call.
17070 Generate the mask vector arguments.
17071
17072 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17073
17074 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
17075 (class widen_reducop): Ditto.
17076 (class freducop): Ditto.
17077 (class widen_freducop): Ditto.
17078 (BASE): Ditto.
17079 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17080 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
17081 (vredmaxu): Ditto.
17082 (vredmax): Ditto.
17083 (vredminu): Ditto.
17084 (vredmin): Ditto.
17085 (vredand): Ditto.
17086 (vredor): Ditto.
17087 (vredxor): Ditto.
17088 (vwredsum): Ditto.
17089 (vwredsumu): Ditto.
17090 (vfredusum): Ditto.
17091 (vfredosum): Ditto.
17092 (vfredmax): Ditto.
17093 (vfredmin): Ditto.
17094 (vfwredosum): Ditto.
17095 (vfwredusum): Ditto.
17096 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
17097 (SHAPE): Ditto.
17098 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17099 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
17100 (DEF_RVV_WU_OPS): Ditto.
17101 (DEF_RVV_WF_OPS): Ditto.
17102 (vint8mf8_t): Ditto.
17103 (vint8mf4_t): Ditto.
17104 (vint8mf2_t): Ditto.
17105 (vint8m1_t): Ditto.
17106 (vint8m2_t): Ditto.
17107 (vint8m4_t): Ditto.
17108 (vint8m8_t): Ditto.
17109 (vint16mf4_t): Ditto.
17110 (vint16mf2_t): Ditto.
17111 (vint16m1_t): Ditto.
17112 (vint16m2_t): Ditto.
17113 (vint16m4_t): Ditto.
17114 (vint16m8_t): Ditto.
17115 (vint32mf2_t): Ditto.
17116 (vint32m1_t): Ditto.
17117 (vint32m2_t): Ditto.
17118 (vint32m4_t): Ditto.
17119 (vint32m8_t): Ditto.
17120 (vuint8mf8_t): Ditto.
17121 (vuint8mf4_t): Ditto.
17122 (vuint8mf2_t): Ditto.
17123 (vuint8m1_t): Ditto.
17124 (vuint8m2_t): Ditto.
17125 (vuint8m4_t): Ditto.
17126 (vuint8m8_t): Ditto.
17127 (vuint16mf4_t): Ditto.
17128 (vuint16mf2_t): Ditto.
17129 (vuint16m1_t): Ditto.
17130 (vuint16m2_t): Ditto.
17131 (vuint16m4_t): Ditto.
17132 (vuint16m8_t): Ditto.
17133 (vuint32mf2_t): Ditto.
17134 (vuint32m1_t): Ditto.
17135 (vuint32m2_t): Ditto.
17136 (vuint32m4_t): Ditto.
17137 (vuint32m8_t): Ditto.
17138 (vfloat32mf2_t): Ditto.
17139 (vfloat32m1_t): Ditto.
17140 (vfloat32m2_t): Ditto.
17141 (vfloat32m4_t): Ditto.
17142 (vfloat32m8_t): Ditto.
17143 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
17144 (DEF_RVV_WU_OPS): Ditto.
17145 (DEF_RVV_WF_OPS): Ditto.
17146 (required_extensions_p): Add reduction support.
17147 (rvv_arg_type_info::get_base_vector_type): Ditto.
17148 (rvv_arg_type_info::get_tree_type): Ditto.
17149 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
17150 * config/riscv/riscv.md: Ditto.
17151 * config/riscv/vector-iterators.md (minu): Ditto.
17152 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
17153 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
17154 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
17155 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
17156 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
17157 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
17158 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
17159
17160 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17161
17162 * config/riscv/iterators.md: New iterator.
17163 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
17164 (enum ternop_type): New enum.
17165 (class vmacc): New class.
17166 (class imac): Ditto.
17167 (class vnmsac): Ditto.
17168 (enum widen_ternop_type): New enum.
17169 (class vmadd): Ditto.
17170 (class vnmsub): Ditto.
17171 (class iwmac): Ditto.
17172 (class vwmacc): Ditto.
17173 (class vwmaccu): Ditto.
17174 (class vwmaccsu): Ditto.
17175 (class vwmaccus): Ditto.
17176 (class reverse_binop): Ditto.
17177 (class vfmacc): Ditto.
17178 (class vfnmsac): Ditto.
17179 (class vfmadd): Ditto.
17180 (class vfnmsub): Ditto.
17181 (class vfnmacc): Ditto.
17182 (class vfmsac): Ditto.
17183 (class vfnmadd): Ditto.
17184 (class vfmsub): Ditto.
17185 (class vfwmacc): Ditto.
17186 (class vfwnmacc): Ditto.
17187 (class vfwmsac): Ditto.
17188 (class vfwnmsac): Ditto.
17189 (class float_misc): Ditto.
17190 (class fcmp): Ditto.
17191 (class vfclass): Ditto.
17192 (class vfcvt_x): Ditto.
17193 (class vfcvt_rtz_x): Ditto.
17194 (class vfcvt_f): Ditto.
17195 (class vfwcvt_x): Ditto.
17196 (class vfwcvt_rtz_x): Ditto.
17197 (class vfwcvt_f): Ditto.
17198 (class vfncvt_x): Ditto.
17199 (class vfncvt_rtz_x): Ditto.
17200 (class vfncvt_f): Ditto.
17201 (class vfncvt_rod_f): Ditto.
17202 (BASE): Ditto.
17203 * config/riscv/riscv-vector-builtins-bases.h:
17204 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
17205 (vsext): Ditto.
17206 (vfadd): Ditto.
17207 (vfsub): Ditto.
17208 (vfrsub): Ditto.
17209 (vfwadd): Ditto.
17210 (vfwsub): Ditto.
17211 (vfmul): Ditto.
17212 (vfdiv): Ditto.
17213 (vfrdiv): Ditto.
17214 (vfwmul): Ditto.
17215 (vfmacc): Ditto.
17216 (vfnmsac): Ditto.
17217 (vfmadd): Ditto.
17218 (vfnmsub): Ditto.
17219 (vfnmacc): Ditto.
17220 (vfmsac): Ditto.
17221 (vfnmadd): Ditto.
17222 (vfmsub): Ditto.
17223 (vfwmacc): Ditto.
17224 (vfwnmacc): Ditto.
17225 (vfwmsac): Ditto.
17226 (vfwnmsac): Ditto.
17227 (vfsqrt): Ditto.
17228 (vfrsqrt7): Ditto.
17229 (vfrec7): Ditto.
17230 (vfmin): Ditto.
17231 (vfmax): Ditto.
17232 (vfsgnj): Ditto.
17233 (vfsgnjn): Ditto.
17234 (vfsgnjx): Ditto.
17235 (vfneg): Ditto.
17236 (vfabs): Ditto.
17237 (vmfeq): Ditto.
17238 (vmfne): Ditto.
17239 (vmflt): Ditto.
17240 (vmfle): Ditto.
17241 (vmfgt): Ditto.
17242 (vmfge): Ditto.
17243 (vfclass): Ditto.
17244 (vfmerge): Ditto.
17245 (vfmv_v): Ditto.
17246 (vfcvt_x): Ditto.
17247 (vfcvt_xu): Ditto.
17248 (vfcvt_rtz_x): Ditto.
17249 (vfcvt_rtz_xu): Ditto.
17250 (vfcvt_f): Ditto.
17251 (vfwcvt_x): Ditto.
17252 (vfwcvt_xu): Ditto.
17253 (vfwcvt_rtz_x): Ditto.
17254 (vfwcvt_rtz_xu): Ditto.
17255 (vfwcvt_f): Ditto.
17256 (vfncvt_x): Ditto.
17257 (vfncvt_xu): Ditto.
17258 (vfncvt_rtz_x): Ditto.
17259 (vfncvt_rtz_xu): Ditto.
17260 (vfncvt_f): Ditto.
17261 (vfncvt_rod_f): Ditto.
17262 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
17263 (struct move_def): Ditto.
17264 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
17265 (DEF_RVV_CONVERT_I_OPS): Ditto.
17266 (DEF_RVV_CONVERT_U_OPS): Ditto.
17267 (DEF_RVV_WCONVERT_I_OPS): Ditto.
17268 (DEF_RVV_WCONVERT_U_OPS): Ditto.
17269 (DEF_RVV_WCONVERT_F_OPS): Ditto.
17270 (vfloat64m1_t): Ditto.
17271 (vfloat64m2_t): Ditto.
17272 (vfloat64m4_t): Ditto.
17273 (vfloat64m8_t): Ditto.
17274 (vint32mf2_t): Ditto.
17275 (vint32m1_t): Ditto.
17276 (vint32m2_t): Ditto.
17277 (vint32m4_t): Ditto.
17278 (vint32m8_t): Ditto.
17279 (vint64m1_t): Ditto.
17280 (vint64m2_t): Ditto.
17281 (vint64m4_t): Ditto.
17282 (vint64m8_t): Ditto.
17283 (vuint32mf2_t): Ditto.
17284 (vuint32m1_t): Ditto.
17285 (vuint32m2_t): Ditto.
17286 (vuint32m4_t): Ditto.
17287 (vuint32m8_t): Ditto.
17288 (vuint64m1_t): Ditto.
17289 (vuint64m2_t): Ditto.
17290 (vuint64m4_t): Ditto.
17291 (vuint64m8_t): Ditto.
17292 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
17293 (DEF_RVV_CONVERT_U_OPS): Ditto.
17294 (DEF_RVV_WCONVERT_I_OPS): Ditto.
17295 (DEF_RVV_WCONVERT_U_OPS): Ditto.
17296 (DEF_RVV_WCONVERT_F_OPS): Ditto.
17297 (DEF_RVV_F_OPS): Ditto.
17298 (DEF_RVV_WEXTF_OPS): Ditto.
17299 (required_extensions_p): Adjust for floating-point support.
17300 (check_required_extensions): Ditto.
17301 (unsigned_base_type_p): Ditto.
17302 (get_mode_for_bitsize): Ditto.
17303 (rvv_arg_type_info::get_base_vector_type): Ditto.
17304 (rvv_arg_type_info::get_tree_type): Ditto.
17305 * config/riscv/riscv-vector-builtins.def (v_f): New define.
17306 (f): New define.
17307 (f_v): New define.
17308 (xu_v): New define.
17309 (f_w): New define.
17310 (xu_w): New define.
17311 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
17312 (function_expander::arg_mode): New function.
17313 * config/riscv/vector-iterators.md (sof): New iterator.
17314 (vfrecp): Ditto.
17315 (copysign): Ditto.
17316 (n): Ditto.
17317 (msac): Ditto.
17318 (msub): Ditto.
17319 (fixuns_trunc): Ditto.
17320 (floatuns): Ditto.
17321 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
17322 (@pred_<optab><mode>): Ditto.
17323 (@pred_<optab><mode>_scalar): Ditto.
17324 (@pred_<optab><mode>_reverse_scalar): Ditto.
17325 (@pred_<copysign><mode>): Ditto.
17326 (@pred_<copysign><mode>_scalar): Ditto.
17327 (@pred_mul_<optab><mode>): Ditto.
17328 (pred_mul_<optab><mode>_undef_merge): Ditto.
17329 (*pred_<madd_nmsub><mode>): Ditto.
17330 (*pred_<macc_nmsac><mode>): Ditto.
17331 (*pred_mul_<optab><mode>): Ditto.
17332 (@pred_mul_<optab><mode>_scalar): Ditto.
17333 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
17334 (*pred_<madd_nmsub><mode>_scalar): Ditto.
17335 (*pred_<macc_nmsac><mode>_scalar): Ditto.
17336 (*pred_mul_<optab><mode>_scalar): Ditto.
17337 (@pred_neg_mul_<optab><mode>): Ditto.
17338 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
17339 (*pred_<nmadd_msub><mode>): Ditto.
17340 (*pred_<nmacc_msac><mode>): Ditto.
17341 (*pred_neg_mul_<optab><mode>): Ditto.
17342 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
17343 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
17344 (*pred_<nmadd_msub><mode>_scalar): Ditto.
17345 (*pred_<nmacc_msac><mode>_scalar): Ditto.
17346 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
17347 (@pred_<misc_op><mode>): Ditto.
17348 (@pred_class<mode>): Ditto.
17349 (@pred_dual_widen_<optab><mode>): Ditto.
17350 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
17351 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
17352 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
17353 (@pred_widen_mul_<optab><mode>): Ditto.
17354 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
17355 (@pred_widen_neg_mul_<optab><mode>): Ditto.
17356 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
17357 (@pred_cmp<mode>): Ditto.
17358 (*pred_cmp<mode>): Ditto.
17359 (*pred_cmp<mode>_narrow): Ditto.
17360 (@pred_cmp<mode>_scalar): Ditto.
17361 (*pred_cmp<mode>_scalar): Ditto.
17362 (*pred_cmp<mode>_scalar_narrow): Ditto.
17363 (@pred_eqne<mode>_scalar): Ditto.
17364 (*pred_eqne<mode>_scalar): Ditto.
17365 (*pred_eqne<mode>_scalar_narrow): Ditto.
17366 (@pred_merge<mode>_scalar): Ditto.
17367 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
17368 (@pred_<fix_cvt><mode>): Ditto.
17369 (@pred_<float_cvt><mode>): Ditto.
17370 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
17371 (@pred_widen_<fix_cvt><mode>): Ditto.
17372 (@pred_widen_<float_cvt><mode>): Ditto.
17373 (@pred_extend<mode>): Ditto.
17374 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
17375 (@pred_narrow_<fix_cvt><mode>): Ditto.
17376 (@pred_narrow_<float_cvt><mode>): Ditto.
17377 (@pred_trunc<mode>): Ditto.
17378 (@pred_rod_trunc<mode>): Ditto.
17379
17380 2023-02-22 Jakub Jelinek <jakub@redhat.com>
17381
17382 PR middle-end/106258
17383 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
17384 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
17385 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
17386 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
17387
17388 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
17389
17390 * common.opt (-Wcomplain-wrong-lang): New.
17391 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
17392 * opts-common.cc (prune_options): Handle it.
17393 * opts-global.cc (complain_wrong_lang): Use it.
17394
17395 2023-02-21 David Malcolm <dmalcolm@redhat.com>
17396
17397 PR analyzer/108830
17398 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
17399
17400 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
17401
17402 PR target/108876
17403 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
17404 for A0_REG.
17405 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
17406 (sibcall_value, sibcall_value_internal): Add 'use' expression
17407 for A0_REG.
17408
17409 2023-02-21 Richard Biener <rguenther@suse.de>
17410
17411 PR tree-optimization/108691
17412 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
17413 assert about calls_setjmp not becoming true when it was false.
17414
17415 2023-02-21 Richard Biener <rguenther@suse.de>
17416
17417 PR tree-optimization/108793
17418 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
17419 Use convert operands to niter_type when computing num.
17420
17421 2023-02-21 Richard Biener <rguenther@suse.de>
17422
17423 Revert:
17424 2023-02-13 Richard Biener <rguenther@suse.de>
17425
17426 PR tree-optimization/108691
17427 * tree-cfg.cc (notice_special_calls): When the CFG is built
17428 honor gimple_call_ctrl_altering_p.
17429 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
17430 temporarily if the call is not control-altering.
17431 * calls.cc (emit_call_1): Do not add REG_SETJMP if
17432 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
17433
17434 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17435
17436 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
17437 true if register A0 (return address register) when -Og is specified.
17438
17439 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
17440
17441 * config/i386/predicates.md
17442 (general_x64constmem_operand): New predicate.
17443 * config/i386/i386.md (*cmpqi_ext<mode>_1):
17444 Use nonimm_x64constmem_operand.
17445 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
17446 (*addqi_ext<mode>_1): Ditto.
17447 (*testqi_ext<mode>_1): Ditto.
17448 (*andqi_ext<mode>_1): Ditto.
17449 (*andqi_ext<mode>_1_cc): Ditto.
17450 (*<any_or:code>qi_ext<mode>_1): Ditto.
17451 (*xorqi_ext<mode>_1_cc): Ditto.
17452
17453 2023-02-20 Jakub Jelinek <jakub2redhat.com>
17454
17455 PR target/108862
17456 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
17457 gen_umadddi4_highpart{,_le}.
17458
17459 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
17460
17461 * config/riscv/riscv.md (prefetch): Use r instead of p for the
17462 address operand.
17463 (riscv_prefetchi_<mode>): Ditto.
17464
17465 2023-02-20 Richard Biener <rguenther@suse.de>
17466
17467 PR tree-optimization/108816
17468 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
17469 versioning condition split prerequesite, assert required
17470 invariant.
17471
17472 2023-02-20 Richard Biener <rguenther@suse.de>
17473
17474 PR tree-optimization/108825
17475 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
17476 loop-local verfication only verify there's no pending SSA
17477 update.
17478
17479 2023-02-20 Richard Biener <rguenther@suse.de>
17480
17481 PR tree-optimization/108819
17482 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
17483 we have an SSA name as iv_2 as expected.
17484
17485 2023-02-18 Jakub Jelinek <jakub@redhat.com>
17486
17487 PR tree-optimization/108819
17488 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
17489
17490 2023-02-18 Jakub Jelinek <jakub@redhat.com>
17491
17492 PR target/108832
17493 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
17494 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
17495 function.
17496 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
17497 with ix86_replace_reg_with_reg.
17498
17499 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
17500
17501 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
17502
17503 2023-02-18 Xi Ruoyao <xry111@xry111.site>
17504
17505 * config.gcc (triplet_abi): Set its value based on $with_abi,
17506 instead of $target.
17507 (la_canonical_triplet): Set it after $triplet_abi is set
17508 correctly.
17509 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
17510 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
17511 "f64" suffix).
17512
17513 2023-02-18 Andrew Pinski <apinski@marvell.com>
17514
17515 * match.pd: Remove #if GIMPLE around the
17516 "1 - a" pattern
17517
17518 2023-02-18 Andrew Pinski <apinski@marvell.com>
17519
17520 * value-query.h (get_range_query): Return the global ranges
17521 for a nullptr func.
17522
17523 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
17524
17525 * doc/invoke.texi (@item -Wall): Fix typo in
17526 -Wuse-after-free.
17527
17528 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
17529
17530 PR target/108831
17531 * config/i386/predicates.md
17532 (nonimm_x64constmem_operand): New predicate.
17533 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
17534 (*subqi_ext<mode>_0): Ditto.
17535 (*andqi_ext<mode>_0): Ditto.
17536 (*<any_or:code>qi_ext<mode>_0): Ditto.
17537
17538 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
17539
17540 PR target/108805
17541 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
17542 int_outermode instead of GET_MODE (tem) to prevent
17543 VOIDmode from entering simplify_gen_subreg.
17544
17545 2023-02-17 Richard Biener <rguenther@suse.de>
17546
17547 PR tree-optimization/108821
17548 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
17549 move volatile accesses.
17550
17551 2023-02-17 Richard Biener <rguenther@suse.de>
17552
17553 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
17554 called on virtual operands.
17555 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
17556 ssa_undefined_value_p calls.
17557 (vn_phi_insert): Likewise.
17558 (set_ssa_val_to): Likewise.
17559 (visit_phi): Avoid extra work with equivalences for
17560 virtual operand PHIs.
17561
17562 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17563
17564 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
17565 class.
17566 (class mask_nlogic): Ditto.
17567 (class mask_notlogic): Ditto.
17568 (class vmmv): Ditto.
17569 (class vmclr): Ditto.
17570 (class vmset): Ditto.
17571 (class vmnot): Ditto.
17572 (class vcpop): Ditto.
17573 (class vfirst): Ditto.
17574 (class mask_misc): Ditto.
17575 (class viota): Ditto.
17576 (class vid): Ditto.
17577 (BASE): Ditto.
17578 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17579 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
17580 (vmnand): Ditto.
17581 (vmandn): Ditto.
17582 (vmxor): Ditto.
17583 (vmor): Ditto.
17584 (vmnor): Ditto.
17585 (vmorn): Ditto.
17586 (vmxnor): Ditto.
17587 (vmmv): Ditto.
17588 (vmclr): Ditto.
17589 (vmset): Ditto.
17590 (vmnot): Ditto.
17591 (vcpop): Ditto.
17592 (vfirst): Ditto.
17593 (vmsbf): Ditto.
17594 (vmsif): Ditto.
17595 (vmsof): Ditto.
17596 (viota): Ditto.
17597 (vid): Ditto.
17598 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
17599 (struct mask_alu_def): Ditto.
17600 (SHAPE): Ditto.
17601 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17602 * config/riscv/riscv-vector-builtins.cc: Ditto.
17603 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
17604 for dest it scalar RVV intrinsics.
17605 * config/riscv/vector-iterators.md (sof): New iterator.
17606 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
17607 (@pred_<optab>not<mode>): New pattern.
17608 (@pred_popcount<VB:mode><P:mode>): New pattern.
17609 (@pred_ffs<VB:mode><P:mode>): New pattern.
17610 (@pred_<misc_op><mode>): New pattern.
17611 (@pred_iota<mode>): New pattern.
17612 (@pred_series<mode>): New pattern.
17613
17614 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17615
17616 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
17617 (vsbc): Ditto.
17618 (vmerge): Ditto.
17619 (vmv_v): Ditto.
17620 * config/riscv/riscv-vector-builtins.cc: Ditto.
17621
17622 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17623 kito-cheng <kito.cheng@sifive.com>
17624
17625 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
17626 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
17627 (sew64_scalar_helper): New function.
17628 * config/riscv/vector.md: Normalization.
17629
17630 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17631
17632 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
17633 (vsm): Ditto.
17634 (vsse): Ditto.
17635 (vsoxei64): Ditto.
17636 (vsub): Ditto.
17637 (vand): Ditto.
17638 (vor): Ditto.
17639 (vxor): Ditto.
17640 (vsll): Ditto.
17641 (vsra): Ditto.
17642 (vsrl): Ditto.
17643 (vmin): Ditto.
17644 (vmax): Ditto.
17645 (vminu): Ditto.
17646 (vmaxu): Ditto.
17647 (vmul): Ditto.
17648 (vmulh): Ditto.
17649 (vmulhu): Ditto.
17650 (vmulhsu): Ditto.
17651 (vdiv): Ditto.
17652 (vrem): Ditto.
17653 (vdivu): Ditto.
17654 (vremu): Ditto.
17655 (vnot): Ditto.
17656 (vsext): Ditto.
17657 (vzext): Ditto.
17658 (vwadd): Ditto.
17659 (vwsub): Ditto.
17660 (vwmul): Ditto.
17661 (vwmulu): Ditto.
17662 (vwmulsu): Ditto.
17663 (vwaddu): Ditto.
17664 (vwsubu): Ditto.
17665 (vsbc): Ditto.
17666 (vmsbc): Ditto.
17667 (vnsra): Ditto.
17668 (vmerge): Ditto.
17669 (vmv_v): Ditto.
17670 (vmsne): Ditto.
17671 (vmslt): Ditto.
17672 (vmsgt): Ditto.
17673 (vmsle): Ditto.
17674 (vmsge): Ditto.
17675 (vmsltu): Ditto.
17676 (vmsgtu): Ditto.
17677 (vmsleu): Ditto.
17678 (vmsgeu): Ditto.
17679 (vnmsac): Ditto.
17680 (vmadd): Ditto.
17681 (vnmsub): Ditto.
17682 (vwmacc): Ditto.
17683 (vsadd): Ditto.
17684 (vssub): Ditto.
17685 (vssubu): Ditto.
17686 (vaadd): Ditto.
17687 (vasub): Ditto.
17688 (vasubu): Ditto.
17689 (vsmul): Ditto.
17690 (vssra): Ditto.
17691 (vssrl): Ditto.
17692 (vnclip): Ditto.
17693
17694 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17695
17696 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
17697 (@pred_<optab><mode>_scalar): Ditto.
17698 (*pred_<optab><mode>_scalar): Ditto.
17699 (*pred_<optab><mode>_extended_scalar): Ditto.
17700
17701 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17702
17703 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
17704 (init_builtins): Ditto.
17705 (mangle_builtin_type): Ditto.
17706 (verify_type_context): Ditto.
17707 (handle_pragma_vector): Ditto.
17708 (builtin_decl): Ditto.
17709 (expand_builtin): Ditto.
17710 (const_vec_all_same_in_range_p): Ditto.
17711 (legitimize_move): Ditto.
17712 (emit_vlmax_op): Ditto.
17713 (emit_nonvlmax_op): Ditto.
17714 (get_vlmul): Ditto.
17715 (get_ratio): Ditto.
17716 (get_ta): Ditto.
17717 (get_ma): Ditto.
17718 (get_avl_type): Ditto.
17719 (calculate_ratio): Ditto.
17720 (enum vlmul_type): Ditto.
17721 (simm5_p): Ditto.
17722 (neg_simm5_p): Ditto.
17723 (has_vi_variant_p): Ditto.
17724
17725 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17726
17727 * config/riscv/riscv-protos.h (simm32_p): Remove.
17728 * config/riscv/riscv-v.cc (simm32_p): Ditto.
17729 * config/riscv/vector.md: Use immediate_operand
17730 instead of riscv_vector::simm32_p.
17731
17732 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
17733
17734 * doc/invoke.texi (Optimize Options): Reword the explanation
17735 getting minimal, maximal and default values of a parameter.
17736
17737 2023-02-16 Patrick Palka <ppalka@redhat.com>
17738
17739 * addresses.h: Mechanically drop 'static' from 'static inline'
17740 functions via s/^static inline/inline/g.
17741 * asan.h: Likewise.
17742 * attribs.h: Likewise.
17743 * basic-block.h: Likewise.
17744 * bitmap.h: Likewise.
17745 * cfghooks.h: Likewise.
17746 * cfgloop.h: Likewise.
17747 * cgraph.h: Likewise.
17748 * cselib.h: Likewise.
17749 * data-streamer.h: Likewise.
17750 * debug.h: Likewise.
17751 * df.h: Likewise.
17752 * diagnostic.h: Likewise.
17753 * dominance.h: Likewise.
17754 * dumpfile.h: Likewise.
17755 * emit-rtl.h: Likewise.
17756 * except.h: Likewise.
17757 * expmed.h: Likewise.
17758 * expr.h: Likewise.
17759 * fixed-value.h: Likewise.
17760 * gengtype.h: Likewise.
17761 * gimple-expr.h: Likewise.
17762 * gimple-iterator.h: Likewise.
17763 * gimple-predict.h: Likewise.
17764 * gimple-range-fold.h: Likewise.
17765 * gimple-ssa.h: Likewise.
17766 * gimple.h: Likewise.
17767 * graphite.h: Likewise.
17768 * hard-reg-set.h: Likewise.
17769 * hash-map.h: Likewise.
17770 * hash-set.h: Likewise.
17771 * hash-table.h: Likewise.
17772 * hwint.h: Likewise.
17773 * input.h: Likewise.
17774 * insn-addr.h: Likewise.
17775 * internal-fn.h: Likewise.
17776 * ipa-fnsummary.h: Likewise.
17777 * ipa-icf-gimple.h: Likewise.
17778 * ipa-inline.h: Likewise.
17779 * ipa-modref.h: Likewise.
17780 * ipa-prop.h: Likewise.
17781 * ira-int.h: Likewise.
17782 * ira.h: Likewise.
17783 * lra-int.h: Likewise.
17784 * lra.h: Likewise.
17785 * lto-streamer.h: Likewise.
17786 * memmodel.h: Likewise.
17787 * omp-general.h: Likewise.
17788 * optabs-query.h: Likewise.
17789 * optabs.h: Likewise.
17790 * plugin.h: Likewise.
17791 * pretty-print.h: Likewise.
17792 * range.h: Likewise.
17793 * read-md.h: Likewise.
17794 * recog.h: Likewise.
17795 * regs.h: Likewise.
17796 * rtl-iter.h: Likewise.
17797 * rtl.h: Likewise.
17798 * sbitmap.h: Likewise.
17799 * sched-int.h: Likewise.
17800 * sel-sched-ir.h: Likewise.
17801 * sese.h: Likewise.
17802 * sparseset.h: Likewise.
17803 * ssa-iterators.h: Likewise.
17804 * system.h: Likewise.
17805 * target-globals.h: Likewise.
17806 * target.h: Likewise.
17807 * timevar.h: Likewise.
17808 * tree-chrec.h: Likewise.
17809 * tree-data-ref.h: Likewise.
17810 * tree-iterator.h: Likewise.
17811 * tree-outof-ssa.h: Likewise.
17812 * tree-phinodes.h: Likewise.
17813 * tree-scalar-evolution.h: Likewise.
17814 * tree-sra.h: Likewise.
17815 * tree-ssa-alias.h: Likewise.
17816 * tree-ssa-live.h: Likewise.
17817 * tree-ssa-loop-manip.h: Likewise.
17818 * tree-ssa-loop.h: Likewise.
17819 * tree-ssa-operands.h: Likewise.
17820 * tree-ssa-propagate.h: Likewise.
17821 * tree-ssa-sccvn.h: Likewise.
17822 * tree-ssa.h: Likewise.
17823 * tree-ssanames.h: Likewise.
17824 * tree-streamer.h: Likewise.
17825 * tree-switch-conversion.h: Likewise.
17826 * tree-vectorizer.h: Likewise.
17827 * tree.h: Likewise.
17828 * wide-int.h: Likewise.
17829
17830 2023-02-16 Jakub Jelinek <jakub@redhat.com>
17831
17832 PR tree-optimization/108657
17833 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
17834 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
17835 is a call to internal or builtin function.
17836
17837 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
17838
17839 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
17840 using-declaration to unhide functions.
17841
17842 2023-02-16 Jakub Jelinek <jakub@redhat.com>
17843
17844 PR tree-optimization/108783
17845 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
17846 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
17847 t to curr->op. Otherwise, punt if either newop1 or newop2 are
17848 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
17849
17850 2023-02-16 Richard Biener <rguenther@suse.de>
17851
17852 PR tree-optimization/108791
17853 * tree-ssa-forwprop.cc (optimize_vector_load): Build
17854 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
17855 type.
17856
17857 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
17858
17859 PR target/90458
17860 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
17861 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
17862 (ix86_expand_prologue): Likewise.
17863
17864 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
17865
17866 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
17867
17868 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
17869
17870 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
17871 int248_register_operand predicate in zero_extract sub-RTX.
17872 (*cmpqi_ext<mode>_2): Ditto.
17873 (*cmpqi_ext<mode>_3): Ditto.
17874 (*cmpqi_ext<mode>_4): Ditto.
17875 (*extzvqi_mem_rex64): Ditto.
17876 (*extzvqi): Ditto.
17877 (*insvqi_1_mem_rex64): Ditto.
17878 (@insv<mode>_1): Ditto.
17879 (*insvqi_1): Ditto.
17880 (*insvqi_2): Ditto.
17881 (*insvqi_3): Ditto.
17882 (*extendqi<SWI24:mode>_ext_1): Ditto.
17883 (*addqi_ext<mode>_1): Ditto.
17884 (*addqi_ext<mode>_2): Ditto.
17885 (*subqi_ext<mode>_2): Ditto.
17886 (*testqi_ext<mode>_1): Ditto.
17887 (*testqi_ext<mode>_2): Ditto.
17888 (*andqi_ext<mode>_1): Ditto.
17889 (*andqi_ext<mode>_1_cc): Ditto.
17890 (*andqi_ext<mode>_2): Ditto.
17891 (*<any_or:code>qi_ext<mode>_1): Ditto.
17892 (*<any_or:code>qi_ext<mode>_2): Ditto.
17893 (*xorqi_ext<mode>_1_cc): Ditto.
17894 (*negqi_ext<mode>_2): Ditto.
17895 (*ashlqi_ext<mode>_2): Ditto.
17896 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
17897
17898 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
17899
17900 * config/i386/predicates.md (int248_register_operand):
17901 Rename from extr_register_operand.
17902 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
17903 (*extzx<mode>): Ditto.
17904 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
17905 (*ashl<mode>3_mask): Ditto.
17906 (*<any_shiftrt:insn><mode>3_mask): Ditto.
17907 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
17908 (*<any_rotate:insn><mode>3_mask): Ditto.
17909 (*<btsc><mode>_mask): Ditto.
17910 (*btr<mode>_mask): Ditto.
17911 (*jcc_bt<mode>_mask_1): Ditto.
17912
17913 2023-02-15 Richard Biener <rguenther@suse.de>
17914
17915 PR middle-end/26854
17916 * df-core.cc (df_worklist_propagate_forward): Put later
17917 blocks on worklist and only earlier blocks on pending.
17918 (df_worklist_propagate_backward): Likewise.
17919 (df_worklist_dataflow_doublequeue): Change the iteration
17920 to process new blocks in the same iteration if that
17921 maintains the iteration order.
17922
17923 2023-02-15 Marek Polacek <polacek@redhat.com>
17924
17925 PR middle-end/106080
17926 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
17927 instead.
17928
17929 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17930
17931 * config/riscv/predicates.md: Refine codes.
17932 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
17933 * config/riscv/riscv-v.cc: Refine codes.
17934 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
17935 enum.
17936 (class imac): New class.
17937 (enum widen_ternop_type): New enum.
17938 (class iwmac): New class.
17939 (BASE): New class.
17940 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17941 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
17942 (vnmsac): Ditto.
17943 (vmadd): Ditto.
17944 (vnmsub): Ditto.
17945 (vwmacc): Ditto.
17946 (vwmaccu): Ditto.
17947 (vwmaccsu): Ditto.
17948 (vwmaccus): Ditto.
17949 * config/riscv/riscv-vector-builtins.cc
17950 (function_builder::apply_predication): Adjust for multiply-add support.
17951 (function_expander::add_vundef_operand): Refine codes.
17952 (function_expander::use_ternop_insn): New function.
17953 (function_expander::use_widen_ternop_insn): Ditto.
17954 * config/riscv/riscv-vector-builtins.h: New function.
17955 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
17956 (pred_mul_<optab><mode>_undef_merge): Ditto.
17957 (*pred_<madd_nmsub><mode>): Ditto.
17958 (*pred_<macc_nmsac><mode>): Ditto.
17959 (*pred_mul_<optab><mode>): Ditto.
17960 (@pred_mul_<optab><mode>_scalar): Ditto.
17961 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
17962 (*pred_<madd_nmsub><mode>_scalar): Ditto.
17963 (*pred_<macc_nmsac><mode>_scalar): Ditto.
17964 (*pred_mul_<optab><mode>_scalar): Ditto.
17965 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
17966 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
17967 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
17968 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
17969 (@pred_widen_mul_plus<su><mode>): Ditto.
17970 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
17971 (@pred_widen_mul_plussu<mode>): Ditto.
17972 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
17973 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
17974
17975 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17976
17977 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
17978 (vector_all_trues_mask_operand): New predicate.
17979 (vector_undef_operand): New predicate.
17980 (ltge_operator): New predicate.
17981 (comparison_except_ltge_operator): New predicate.
17982 (comparison_except_eqge_operator): New predicate.
17983 (ge_operator): New predicate.
17984 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
17985 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
17986 (BASE): Ditto.
17987 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17988 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
17989 (vmsne): Ditto.
17990 (vmslt): Ditto.
17991 (vmsgt): Ditto.
17992 (vmsle): Ditto.
17993 (vmsge): Ditto.
17994 (vmsltu): Ditto.
17995 (vmsgtu): Ditto.
17996 (vmsleu): Ditto.
17997 (vmsgeu): Ditto.
17998 * config/riscv/riscv-vector-builtins-shapes.cc
17999 (struct return_mask_def): Adjust for compare support.
18000 * config/riscv/riscv-vector-builtins.cc
18001 (function_expander::use_compare_insn): New function.
18002 * config/riscv/riscv-vector-builtins.h
18003 (function_expander::add_integer_operand): Ditto.
18004 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
18005 * config/riscv/riscv.md: Add vector min/max attributes.
18006 * config/riscv/vector-iterators.md (xnor): New iterator.
18007 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
18008 (*pred_cmp<mode>): Ditto.
18009 (*pred_cmp<mode>_narrow): Ditto.
18010 (@pred_ltge<mode>): Ditto.
18011 (*pred_ltge<mode>): Ditto.
18012 (*pred_ltge<mode>_narrow): Ditto.
18013 (@pred_cmp<mode>_scalar): Ditto.
18014 (*pred_cmp<mode>_scalar): Ditto.
18015 (*pred_cmp<mode>_scalar_narrow): Ditto.
18016 (@pred_eqne<mode>_scalar): Ditto.
18017 (*pred_eqne<mode>_scalar): Ditto.
18018 (*pred_eqne<mode>_scalar_narrow): Ditto.
18019 (*pred_cmp<mode>_extended_scalar): Ditto.
18020 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
18021 (*pred_eqne<mode>_extended_scalar): Ditto.
18022 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
18023 (@pred_ge<mode>_scalar): Ditto.
18024 (@pred_<optab><mode>): Ditto.
18025 (@pred_n<optab><mode>): Ditto.
18026 (@pred_<optab>n<mode>): Ditto.
18027 (@pred_not<mode>): Ditto.
18028
18029 2023-02-15 Martin Jambor <mjambor@suse.cz>
18030
18031 PR ipa/108679
18032 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
18033 creation of non-scalar replacements even if IPA-CP knows their
18034 contents.
18035
18036 2023-02-15 Jakub Jelinek <jakub@redhat.com>
18037
18038 PR target/108787
18039 PR target/103109
18040 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
18041 expander, change operand 3 to be TImode, emit maddlddi4 and
18042 umadddi4_highpart{,_le} with its low half and finally add the high
18043 half to the result.
18044
18045 2023-02-15 Martin Liska <mliska@suse.cz>
18046
18047 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
18048
18049 2023-02-15 Richard Biener <rguenther@suse.de>
18050
18051 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
18052 for with_poison and alias worklist to it.
18053 (sanitize_asan_mark_poison): Likewise.
18054
18055 2023-02-15 Richard Biener <rguenther@suse.de>
18056
18057 PR target/108738
18058 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
18059 Combine bitmap test and set.
18060 (scalar_chain::add_insn): Likewise.
18061 (scalar_chain::analyze_register_chain): Remove redundant
18062 attempt to add to queue and instead strengthen assert.
18063 Sink common attempts to mark the def dual-mode.
18064 (scalar_chain::add_to_queue): Remove redundant insn bitmap
18065 check.
18066
18067 2023-02-15 Richard Biener <rguenther@suse.de>
18068
18069 PR target/108738
18070 * config/i386/i386-features.cc (convert_scalars_to_vector):
18071 Switch candidates bitmaps to tree view before building the chains.
18072
18073 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
18074
18075 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
18076 "failure trying to reload" call.
18077
18078 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
18079
18080 * gdbinit.in (phrs): New command.
18081 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
18082 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
18083
18084 2023-02-14 David Faust <david.faust@oracle.com>
18085
18086 PR target/108790
18087 * config/bpf/constraints.md (q): New memory constraint.
18088 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
18089 (zero_extendqidi2): Likewise.
18090 (zero_extendsidi2): Likewise.
18091 (*mov<MM:mode>): Likewise.
18092
18093 2023-02-14 Andrew Pinski <apinski@marvell.com>
18094
18095 PR tree-optimization/108355
18096 PR tree-optimization/96921
18097 * match.pd: Add pattern for "1 - bool_val".
18098
18099 2023-02-14 Richard Biener <rguenther@suse.de>
18100
18101 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
18102 basic block index hashing on the availability of ->cclhs.
18103 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
18104 rely on ->cclhs availability.
18105 (vn_phi_lookup): Set ->cclhs only when we are eventually
18106 going to CSE the PHI.
18107 (vn_phi_insert): Likewise.
18108
18109 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
18110
18111 * gimplify.cc (gimplify_save_expr): Add missing guard.
18112
18113 2023-02-14 Richard Biener <rguenther@suse.de>
18114
18115 PR tree-optimization/108782
18116 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
18117 Make sure we're not vectorizing an inner loop.
18118
18119 2023-02-14 Jakub Jelinek <jakub@redhat.com>
18120
18121 PR sanitizer/108777
18122 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
18123 * asan.h (asan_memfn_rtl): Declare.
18124 * asan.cc (asan_memfn_rtls): New variable.
18125 (asan_memfn_rtl): New function.
18126 * builtins.cc (expand_builtin): If
18127 param_asan_kernel_mem_intrinsic_prefix and function is
18128 kernel-{,hw}address sanitized, emit calls to
18129 __{,hw}asan_{memcpy,memmove,memset} rather than
18130 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
18131 instead of flag_sanitize & SANITIZE_ADDRESS to check if
18132 asan_intercepted_p functions shouldn't be expanded inline.
18133
18134 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
18135
18136 PR tree-optimization/96373
18137 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
18138 operations on the loop mask. Reject partial vectors if this isn't
18139 possible.
18140
18141 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
18142
18143 PR rtl-optimization/108681
18144 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
18145 code to handle bare uses and clobbers.
18146
18147 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
18148
18149 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
18150 caller_save_p flag when clearing defined_p flag.
18151 (setup_reg_equiv): Ditto.
18152 * lra-constraints.cc (lra_constraints): Ditto.
18153
18154 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
18155
18156 PR target/108516
18157 * config/i386/predicates.md (extr_register_operand):
18158 New special predicate.
18159 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
18160 as operand 1 predicate.
18161 (*exzv<mode>): Ditto.
18162 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
18163
18164 2023-02-13 Richard Biener <rguenther@suse.de>
18165
18166 PR tree-optimization/28614
18167 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
18168 walking all edges in most cases.
18169 (vn_nary_op_insert_pieces_predicated): Avoid repeated
18170 calls to can_track_predicate_on_edge unless checking is
18171 enabled.
18172 (process_bb): Instead call it once here for each edge
18173 we register possibly multiple predicates on.
18174
18175 2023-02-13 Richard Biener <rguenther@suse.de>
18176
18177 PR tree-optimization/108691
18178 * tree-cfg.cc (notice_special_calls): When the CFG is built
18179 honor gimple_call_ctrl_altering_p.
18180 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
18181 temporarily if the call is not control-altering.
18182 * calls.cc (emit_call_1): Do not add REG_SETJMP if
18183 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
18184
18185 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
18186
18187 PR target/108102
18188 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
18189 (struct s390_sched_state): Initialise to zero.
18190 (s390_sched_variable_issue): For better debuggability also emit
18191 the current side.
18192 (s390_sched_init): Unconditionally reset scheduler state.
18193
18194 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
18195
18196 * ifcvt.h (noce_if_info::cond_inverted): New field.
18197 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
18198 values when cond_inverted is true.
18199 (noce_find_if_block): Allow the condition to be inverted when
18200 handling conditional moves.
18201
18202 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
18203
18204 * config/s390/predicates.md (execute_operation): Use
18205 constrain_operands instead of extract_constrain_insn in order to
18206 determine wheter there exists a valid alternative.
18207
18208 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
18209
18210 * common/config/arc/arc-common.cc (arc_option_optimization_table):
18211 Remove millicode from list.
18212
18213 2023-02-13 Martin Liska <mliska@suse.cz>
18214
18215 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
18216
18217 2023-02-13 Richard Biener <rguenther@suse.de>
18218
18219 PR tree-optimization/106722
18220 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
18221 whether we marked a stmt.
18222 (mark_control_dependent_edges_necessary): When
18223 mark_last_stmt_necessary didn't mark any stmt make sure
18224 to mark its control dependent edges.
18225 (propagate_necessity): Likewise.
18226
18227 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
18228
18229 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
18230 (DWARF_FRAME_REGISTERS): New.
18231 (DWARF_REG_TO_UNWIND_COLUMN): New.
18232
18233 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
18234
18235 * doc/sourcebuild.texi: Remove (broken) direct reference to
18236 "The GNU configure and build system".
18237
18238 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
18239
18240 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
18241 gen_add3_insn to gen_rtx_SET.
18242 (riscv_adjust_libcall_cfi_epilogue): Likewise.
18243
18244 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18245
18246 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
18247 (class vnclip): Ditto.
18248 (BASE): Ditto.
18249 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18250 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
18251 (vasub): Ditto.
18252 (vaaddu): Ditto.
18253 (vasubu): Ditto.
18254 (vsmul): Ditto.
18255 (vssra): Ditto.
18256 (vssrl): Ditto.
18257 (vnclipu): Ditto.
18258 (vnclip): Ditto.
18259 * config/riscv/vector-iterators.md (su): Add instruction.
18260 (aadd): Ditto.
18261 (vaalu): Ditto.
18262 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
18263 (@pred_<sat_op><mode>_scalar): Ditto.
18264 (*pred_<sat_op><mode>_scalar): Ditto.
18265 (*pred_<sat_op><mode>_extended_scalar): Ditto.
18266 (@pred_narrow_clip<v_su><mode>): Ditto.
18267 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
18268
18269 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18270
18271 * config/riscv/constraints.md (Wbr): Remove unused constraint.
18272 * config/riscv/predicates.md: Fix move operand predicate.
18273 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
18274 (class vncvt_x): Ditto.
18275 (class vmerge): Ditto.
18276 (class vmv_v): Ditto.
18277 (BASE): Ditto.
18278 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18279 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
18280 (vsrl): Ditto.
18281 (vnsrl): Ditto.
18282 (vnsra): Ditto.
18283 (vncvt_x): Ditto.
18284 (vmerge): Ditto.
18285 (vmv_v): Ditto.
18286 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
18287 (struct move_def): Ditto.
18288 (SHAPE): Ditto.
18289 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18290 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
18291 (DEF_RVV_WEXTU_OPS): Ditto
18292 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
18293 (v_v): Ditto.
18294 (v_x): Ditto.
18295 (x_w): Ditto.
18296 (x): Ditto.
18297 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
18298 * config/riscv/vector-iterators.md (nmsac):New iterator.
18299 (nmsub): New iterator.
18300 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
18301 (@pred_merge<mode>_scalar): New pattern.
18302 (*pred_merge<mode>_scalar): New pattern.
18303 (*pred_merge<mode>_extended_scalar): New pattern.
18304 (@pred_narrow_<optab><mode>): New pattern.
18305 (@pred_narrow_<optab><mode>_scalar): New pattern.
18306 (@pred_trunc<mode>): New pattern.
18307
18308 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18309
18310 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
18311 (class vmsbc): Ditto.
18312 (BASE): Define new class.
18313 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18314 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
18315 (vmsbc): Ditto.
18316 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
18317 New class.
18318 (SHAPE): Ditto.
18319 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18320 * config/riscv/riscv-vector-builtins.cc
18321 (function_expander::use_exact_insn): Adjust for new support
18322 * config/riscv/riscv-vector-builtins.h
18323 (function_base::has_merge_operand_p): New function.
18324 * config/riscv/vector-iterators.md: New iterator.
18325 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
18326 (@pred_msbc<mode>): Ditto.
18327 (@pred_madc<mode>_scalar): Ditto.
18328 (@pred_msbc<mode>_scalar): Ditto.
18329 (*pred_madc<mode>_scalar): Ditto.
18330 (*pred_madc<mode>_extended_scalar): Ditto.
18331 (*pred_msbc<mode>_scalar): Ditto.
18332 (*pred_msbc<mode>_extended_scalar): Ditto.
18333 (@pred_madc<mode>_overflow): Ditto.
18334 (@pred_msbc<mode>_overflow): Ditto.
18335 (@pred_madc<mode>_overflow_scalar): Ditto.
18336 (@pred_msbc<mode>_overflow_scalar): Ditto.
18337 (*pred_madc<mode>_overflow_scalar): Ditto.
18338 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
18339 (*pred_msbc<mode>_overflow_scalar): Ditto.
18340 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
18341
18342 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18343
18344 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
18345 * config/riscv/riscv-v.cc (simm32_p): Ditto.
18346 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
18347 (class vsbc): Ditto.
18348 (BASE): Ditto.
18349 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18350 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
18351 (vsbc): Ditto.
18352 * config/riscv/riscv-vector-builtins-shapes.cc
18353 (struct no_mask_policy_def): Ditto.
18354 (SHAPE): Ditto.
18355 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18356 * config/riscv/riscv-vector-builtins.cc
18357 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
18358 (rvv_arg_type_info::get_tree_type): Ditto.
18359 (function_expander::use_exact_insn): Ditto.
18360 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
18361 (function_base::use_mask_predication_p): New function.
18362 * config/riscv/vector-iterators.md: New iterator.
18363 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
18364 (@pred_sbc<mode>): Ditto.
18365 (@pred_adc<mode>_scalar): Ditto.
18366 (@pred_sbc<mode>_scalar): Ditto.
18367 (*pred_adc<mode>_scalar): Ditto.
18368 (*pred_adc<mode>_extended_scalar): Ditto.
18369 (*pred_sbc<mode>_scalar): Ditto.
18370 (*pred_sbc<mode>_extended_scalar): Ditto.
18371
18372 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18373
18374 * config/riscv/vector.md: use "zero" reg.
18375
18376 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18377
18378 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
18379 class.
18380 (class vwmulsu): Ditto.
18381 (class vwcvt): Ditto.
18382 (BASE): Add integer widening support.
18383 * config/riscv/riscv-vector-builtins-bases.h: Ditto
18384 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
18385 (vwsub): New class.
18386 (vwmul): New class.
18387 (vwmulu): New class.
18388 (vwmulsu): New class.
18389 (vwaddu): New class.
18390 (vwsubu): New class.
18391 (vwcvt_x): New class.
18392 (vwcvtu_x): New class.
18393 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
18394 class.
18395 (struct widen_alu_def): New class.
18396 (SHAPE): New class.
18397 * config/riscv/riscv-vector-builtins-shapes.h: New class.
18398 * config/riscv/riscv-vector-builtins.cc
18399 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
18400 (rvv_arg_type_info::get_tree_type): Ditto.
18401 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
18402 (x_v): Ditto.
18403 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
18404 widening support.
18405 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
18406 * config/riscv/riscv.h (X0_REGNUM): New constant.
18407 * config/riscv/vector-iterators.md: New iterators.
18408 * config/riscv/vector.md
18409 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
18410 pattern.
18411 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
18412 Ditto.
18413 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
18414 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
18415 Ditto.
18416 (@pred_widen_mulsu<mode>): Ditto.
18417 (@pred_widen_mulsu<mode>_scalar): Ditto.
18418 (@pred_<optab><mode>): Ditto.
18419
18420 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18421 kito-cheng <kito.cheng@sifive.com>
18422
18423 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
18424 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
18425 (BASE): Ditto.
18426 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18427 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
18428 API support.
18429 (vmulhu): Ditto.
18430 (vmulhsu): Ditto.
18431 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
18432 New macro.
18433 (DEF_RVV_FULL_V_U_OPS): Ditto.
18434 (vint8mf8_t): Ditto.
18435 (vint8mf4_t): Ditto.
18436 (vint8mf2_t): Ditto.
18437 (vint8m1_t): Ditto.
18438 (vint8m2_t): Ditto.
18439 (vint8m4_t): Ditto.
18440 (vint8m8_t): Ditto.
18441 (vint16mf4_t): Ditto.
18442 (vint16mf2_t): Ditto.
18443 (vint16m1_t): Ditto.
18444 (vint16m2_t): Ditto.
18445 (vint16m4_t): Ditto.
18446 (vint16m8_t): Ditto.
18447 (vint32mf2_t): Ditto.
18448 (vint32m1_t): Ditto.
18449 (vint32m2_t): Ditto.
18450 (vint32m4_t): Ditto.
18451 (vint32m8_t): Ditto.
18452 (vint64m1_t): Ditto.
18453 (vint64m2_t): Ditto.
18454 (vint64m4_t): Ditto.
18455 (vint64m8_t): Ditto.
18456 (vuint8mf8_t): Ditto.
18457 (vuint8mf4_t): Ditto.
18458 (vuint8mf2_t): Ditto.
18459 (vuint8m1_t): Ditto.
18460 (vuint8m2_t): Ditto.
18461 (vuint8m4_t): Ditto.
18462 (vuint8m8_t): Ditto.
18463 (vuint16mf4_t): Ditto.
18464 (vuint16mf2_t): Ditto.
18465 (vuint16m1_t): Ditto.
18466 (vuint16m2_t): Ditto.
18467 (vuint16m4_t): Ditto.
18468 (vuint16m8_t): Ditto.
18469 (vuint32mf2_t): Ditto.
18470 (vuint32m1_t): Ditto.
18471 (vuint32m2_t): Ditto.
18472 (vuint32m4_t): Ditto.
18473 (vuint32m8_t): Ditto.
18474 (vuint64m1_t): Ditto.
18475 (vuint64m2_t): Ditto.
18476 (vuint64m4_t): Ditto.
18477 (vuint64m8_t): Ditto.
18478 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
18479 (DEF_RVV_FULL_V_U_OPS): Ditto.
18480 (check_required_extensions): Add vmulh support.
18481 (rvv_arg_type_info::get_tree_type): Ditto.
18482 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
18483 (enum rvv_base_type): Ditto.
18484 * config/riscv/riscv.opt: Add 'V' extension flag.
18485 * config/riscv/vector-iterators.md (su): New iterator.
18486 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
18487 (@pred_mulh<v_su><mode>_scalar): Ditto.
18488 (*pred_mulh<v_su><mode>_scalar): Ditto.
18489 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
18490
18491 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18492
18493 * config/riscv/iterators.md: Add sign_extend/zero_extend.
18494 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
18495 (BASE): Ditto.
18496 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
18497 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
18498 define.
18499 (vzext): Ditto.
18500 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
18501 for vsext/vzext support.
18502 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
18503 macro define.
18504 (DEF_RVV_QEXTI_OPS): Ditto.
18505 (DEF_RVV_OEXTI_OPS): Ditto.
18506 (DEF_RVV_WEXTU_OPS): Ditto.
18507 (DEF_RVV_QEXTU_OPS): Ditto.
18508 (DEF_RVV_OEXTU_OPS): Ditto.
18509 (vint16mf4_t): Ditto.
18510 (vint16mf2_t): Ditto.
18511 (vint16m1_t): Ditto.
18512 (vint16m2_t): Ditto.
18513 (vint16m4_t): Ditto.
18514 (vint16m8_t): Ditto.
18515 (vint32mf2_t): Ditto.
18516 (vint32m1_t): Ditto.
18517 (vint32m2_t): Ditto.
18518 (vint32m4_t): Ditto.
18519 (vint32m8_t): Ditto.
18520 (vint64m1_t): Ditto.
18521 (vint64m2_t): Ditto.
18522 (vint64m4_t): Ditto.
18523 (vint64m8_t): Ditto.
18524 (vuint16mf4_t): Ditto.
18525 (vuint16mf2_t): Ditto.
18526 (vuint16m1_t): Ditto.
18527 (vuint16m2_t): Ditto.
18528 (vuint16m4_t): Ditto.
18529 (vuint16m8_t): Ditto.
18530 (vuint32mf2_t): Ditto.
18531 (vuint32m1_t): Ditto.
18532 (vuint32m2_t): Ditto.
18533 (vuint32m4_t): Ditto.
18534 (vuint32m8_t): Ditto.
18535 (vuint64m1_t): Ditto.
18536 (vuint64m2_t): Ditto.
18537 (vuint64m4_t): Ditto.
18538 (vuint64m8_t): Ditto.
18539 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
18540 (DEF_RVV_QEXTI_OPS): Ditto.
18541 (DEF_RVV_OEXTI_OPS): Ditto.
18542 (DEF_RVV_WEXTU_OPS): Ditto.
18543 (DEF_RVV_QEXTU_OPS): Ditto.
18544 (DEF_RVV_OEXTU_OPS): Ditto.
18545 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
18546 support.
18547 (rvv_arg_type_info::get_tree_type): Ditto.
18548 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
18549 * config/riscv/vector-iterators.md (z): New attribute.
18550 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
18551 (@pred_<optab><mode>_vf4): Ditto.
18552 (@pred_<optab><mode>_vf8): Ditto.
18553
18554 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18555
18556 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
18557 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
18558 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
18559 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18560 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
18561 (vssub): Ditto.
18562 (vsaddu): Ditto.
18563 (vssubu): Ditto.
18564 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
18565 support.
18566 (sll.vv): Ditto.
18567 (%3,%v4): Ditto.
18568 (%3,%4): Ditto.
18569 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
18570 (@pred_<optab><mode>_scalar): New pattern.
18571 (*pred_<optab><mode>_scalar): New pattern.
18572 (*pred_<optab><mode>_extended_scalar): New pattern.
18573
18574 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18575
18576 * config/riscv/iterators.md: Add neg and not.
18577 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
18578 (BASE): Ditto.
18579 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18580 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
18581 into alu.
18582 (vsub): Ditto.
18583 (vand): Ditto.
18584 (vor): Ditto.
18585 (vxor): Ditto.
18586 (vsll): Ditto.
18587 (vsra): Ditto.
18588 (vsrl): Ditto.
18589 (vmin): Ditto.
18590 (vmax): Ditto.
18591 (vminu): Ditto.
18592 (vmaxu): Ditto.
18593 (vmul): Ditto.
18594 (vdiv): Ditto.
18595 (vrem): Ditto.
18596 (vdivu): Ditto.
18597 (vremu): Ditto.
18598 (vrsub): Ditto.
18599 (vneg): Ditto.
18600 (vnot): Ditto.
18601 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
18602 (struct alu_def): Ditto.
18603 (SHAPE): Ditto.
18604 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18605 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
18606 * config/riscv/vector-iterators.md: New iterator.
18607 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
18608
18609 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18610
18611 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
18612
18613 2023-02-11 Jakub Jelinek <jakub@redhat.com>
18614
18615 PR ipa/108605
18616 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
18617 item->offset bit position is too large to be representable as
18618 unsigned int byte position.
18619
18620 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
18621
18622 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
18623
18624 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
18625
18626 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
18627 valid_combine only when ira_use_lra_p is true.
18628
18629 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
18630
18631 * params.opt (ira-simple-lra-insn-threshold): Add new param.
18632 * ira.cc (ira): Use the param to switch on simple LRA.
18633
18634 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
18635
18636 PR tree-optimization/108687
18637 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
18638 back to RFD_NONE mode for calculations.
18639 (ranger_cache::propagate_cache): Call the internal edge range API
18640 with RFD_READ_ONLY instead of changing the external routine.
18641
18642 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
18643
18644 PR tree-optimization/108520
18645 * gimple-range-infer.cc (check_assume_func): Invoke
18646 gimple_range_global directly instead using global_range_query.
18647 * value-query.cc (get_range_global): Add function context and
18648 avoid calling nonnull_arg_p if not cfun.
18649 (gimple_range_global): Add function context pointer.
18650 * value-query.h (imple_range_global): Add function context.
18651
18652 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18653
18654 * config/riscv/constraints.md (Wdm): Adjust constraint.
18655 (Wbr): New constraint.
18656 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
18657 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
18658 (emit_vlmax_op): New function.
18659 (emit_nonvlmax_op): Ditto.
18660 (simm32_p): Ditto.
18661 (neg_simm5_p): Ditto.
18662 (has_vi_variant_p): Ditto.
18663 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
18664 (emit_vlmax_op): New function.
18665 (emit_nonvlmax_op): Ditto.
18666 (expand_const_vector): Adjust function.
18667 (legitimize_move): Ditto.
18668 (simm32_p): New function.
18669 (simm5_p): Ditto.
18670 (neg_simm5_p): Ditto.
18671 (has_vi_variant_p): Ditto.
18672 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
18673 (BASE): Ditto.
18674 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18675 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
18676 unsigned cases.
18677 (vmax): Ditto.
18678 (vminu): Remove signed cases.
18679 (vmaxu): Ditto.
18680 (vdiv): Remove unsigned cases.
18681 (vrem): Ditto.
18682 (vdivu): Remove signed cases.
18683 (vremu): Ditto.
18684 (vadd): Adjust.
18685 (vsub): Ditto.
18686 (vrsub): New class.
18687 (vand): Adjust.
18688 (vor): Ditto.
18689 (vxor): Ditto.
18690 (vmul): Ditto.
18691 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
18692 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
18693 * config/riscv/vector-iterators.md: New iterators.
18694 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
18695 support.
18696 (@pred_<optab><mode>_scalar): New pattern.
18697 (@pred_sub<mode>_reverse_scalar): Ditto.
18698 (*pred_<optab><mode>_scalar): Ditto.
18699 (*pred_<optab><mode>_extended_scalar): Ditto.
18700 (*pred_sub<mode>_reverse_scalar): Ditto.
18701 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
18702
18703 2023-02-10 Richard Biener <rguenther@suse.de>
18704
18705 PR tree-optimization/108724
18706 * tree-vect-stmts.cc (vectorizable_operation): Avoid
18707 using word_mode vectors when vector lowering will
18708 decompose them to elementwise operations.
18709
18710 2023-02-10 Jakub Jelinek <jakub@redhat.com>
18711
18712 Revert:
18713 2023-02-09 Martin Liska <mliska@suse.cz>
18714
18715 PR target/100758
18716 * doc/extend.texi: Document that the function
18717 does not work correctly for old VIA processors.
18718
18719 2023-02-10 Andrew Pinski <apinski@marvell.com>
18720 Andrew Macleod <amacleod@redhat.com>
18721
18722 PR tree-optimization/108684
18723 * tree-ssa-dce.cc (simple_dce_from_worklist):
18724 Check all ssa names and not just non-vdef ones
18725 before accepting the inline-asm.
18726 Call unlink_stmt_vdef on the statement before
18727 removing it.
18728
18729 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
18730
18731 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
18732 * ira.cc (validate_equiv_mem): Check memref address variance.
18733 (no_equiv): Clear caller_save_p flag.
18734 (update_equiv_regs): Define caller save equivalence for
18735 valid_combine.
18736 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
18737 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
18738 call_save_p. Use caller save equivalence depending on the arg.
18739 (split_reg): Adjust the call.
18740
18741 2023-02-09 Jakub Jelinek <jakub@redhat.com>
18742
18743 PR target/100758
18744 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
18745 (cpu_indicator_init): Call get_available_features for all CPUs with
18746 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
18747 fixes.
18748
18749 2023-02-09 Jakub Jelinek <jakub@redhat.com>
18750
18751 PR tree-optimization/108688
18752 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
18753 of BIT_INSERT_EXPR extracting exactly all inserted bits even
18754 when without mode precision. Formatting fixes.
18755
18756 2023-02-09 Andrew Pinski <apinski@marvell.com>
18757
18758 PR tree-optimization/108688
18759 * match.pd (bit_field_ref [bit_insert]): Avoid generating
18760 BIT_FIELD_REFs of non-mode-precision integral operands.
18761
18762 2023-02-09 Martin Liska <mliska@suse.cz>
18763
18764 PR target/100758
18765 * doc/extend.texi: Document that the function
18766 does not work correctly for old VIA processors.
18767
18768 2023-02-09 Andreas Schwab <schwab@suse.de>
18769
18770 * lto-wrapper.cc (merge_and_complain): Handle
18771 -funwind-tables and -fasynchronous-unwind-tables.
18772 (append_compiler_options): Likewise.
18773
18774 2023-02-09 Richard Biener <rguenther@suse.de>
18775
18776 PR tree-optimization/26854
18777 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
18778 view around insert_updated_phi_nodes_for.
18779 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
18780 in tree view.
18781 (walk_aliased_vdefs_1): Likewise.
18782
18783 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
18784
18785 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
18786
18787 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
18788
18789 PR target/108505
18790 * config.gcc (tm_mlib_file): Define new variable.
18791
18792 2023-02-08 Jakub Jelinek <jakub@redhat.com>
18793
18794 PR tree-optimization/108692
18795 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
18796 widened_code which is different from code, don't call
18797 vect_look_through_possible_promotion but instead just check op is
18798 SSA_NAME with integral type for which vect_is_simple_use is true
18799 and call set_op on this_unprom.
18800
18801 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
18802
18803 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
18804 declaration.
18805 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
18806 definition.
18807 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
18808 to 'aarch_ra_sign_key'.
18809 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
18810 declaration.
18811 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
18812 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
18813 * config/arm/arm.opt: Define.
18814
18815 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
18816
18817 PR tree-optimization/108316
18818 * tree-vect-stmts.cc (get_load_store_type): When using
18819 internal functions for gather/scatter, make sure that the type
18820 of the offset argument is consistent with the offset vector type.
18821
18822 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
18823
18824 Revert:
18825 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
18826
18827 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
18828 * ira.cc (validate_equiv_mem): Check memref address variance.
18829 (update_equiv_regs): Define caller save equivalence for
18830 valid_combine.
18831 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
18832 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
18833 call_save_p. Use caller save equivalence depending on the arg.
18834 (split_reg): Adjust the call.
18835
18836 2023-02-08 Jakub Jelinek <jakub@redhat.com>
18837
18838 * tree.def (SAD_EXPR): Remove outdated comment about missing
18839 WIDEN_MINUS_EXPR.
18840
18841 2023-02-07 Marek Polacek <polacek@redhat.com>
18842
18843 * doc/invoke.texi: Update -fchar8_t documentation.
18844
18845 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
18846
18847 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
18848 * ira.cc (validate_equiv_mem): Check memref address variance.
18849 (update_equiv_regs): Define caller save equivalence for
18850 valid_combine.
18851 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
18852 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
18853 call_save_p. Use caller save equivalence depending on the arg.
18854 (split_reg): Adjust the call.
18855
18856 2023-02-07 Richard Biener <rguenther@suse.de>
18857
18858 PR tree-optimization/26854
18859 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
18860 instead of immediate uses.
18861
18862 2023-02-07 Jakub Jelinek <jakub@redhat.com>
18863
18864 PR tree-optimization/106923
18865 * ipa-split.cc (execute_split_functions): Don't split returns_twice
18866 functions.
18867
18868 2023-02-07 Jakub Jelinek <jakub@redhat.com>
18869
18870 PR tree-optimization/106433
18871 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
18872 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
18873
18874 2023-02-07 Jan Hubicka <jh@suse.cz>
18875
18876 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
18877 for znver4.
18878
18879 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
18880
18881 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
18882 (process_asm): Create a constructor for GCN_STACK_SIZE.
18883 (main): Parse the -mstack-size option.
18884
18885 2023-02-06 Alex Coplan <alex.coplan@arm.com>
18886
18887 PR target/104921
18888 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
18889 Use correct constraint for operand 3.
18890
18891 2023-02-06 Martin Jambor <mjambor@suse.cz>
18892
18893 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
18894
18895 2023-02-06 Xi Ruoyao <xry111@xry111.site>
18896
18897 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
18898 New define_int_iterator.
18899 (bytepick_d_ashift_amount): Likewise.
18900 (bytepick_imm): New define_int_attr.
18901 (bytepick_w_lshiftrt_amount): Likewise.
18902 (bytepick_d_lshiftrt_amount): Likewise.
18903 (bytepick_w_<bytepick_imm>): New define_insn template.
18904 (bytepick_w_<bytepick_imm>_extend): Likewise.
18905 (bytepick_d_<bytepick_imm>): Likewise.
18906 (bytepick_w): Remove unused define_insn.
18907 (bytepick_d): Likewise.
18908 (UNSPEC_BYTEPICK_W): Remove unused unspec.
18909 (UNSPEC_BYTEPICK_D): Likewise.
18910 * config/loongarch/predicates.md (const_0_to_3_operand):
18911 Remove unused define_predicate.
18912 (const_0_to_7_operand): Likewise.
18913
18914 2023-02-06 Jakub Jelinek <jakub@redhat.com>
18915
18916 PR tree-optimization/108655
18917 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
18918 or -fsanitize=unreachable -fsanitize-trap=unreachable return
18919 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
18920
18921 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
18922
18923 * doc/install.texi (Specific): Remove PW32.
18924
18925 2023-02-03 Jakub Jelinek <jakub@redhat.com>
18926
18927 PR tree-optimization/108647
18928 * range-op.cc (operator_equal::op1_range,
18929 operator_not_equal::op1_range): Don't test op2 bound
18930 equality if op2.undefined_p (), instead set_varying.
18931 (operator_lt::op1_range, operator_le::op1_range,
18932 operator_gt::op1_range, operator_ge::op1_range): Return false if
18933 op2.undefined_p ().
18934 (operator_lt::op2_range, operator_le::op2_range,
18935 operator_gt::op2_range, operator_ge::op2_range): Return false if
18936 op1.undefined_p ().
18937
18938 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
18939
18940 PR tree-optimization/108639
18941 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
18942 widest_int.
18943 (irange::operator==): Same.
18944
18945 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
18946
18947 PR tree-optimization/108647
18948 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
18949 (foperator_lt::op2_range): Same.
18950 (foperator_le::op1_range): Same.
18951 (foperator_le::op2_range): Same.
18952 (foperator_gt::op1_range): Same.
18953 (foperator_gt::op2_range): Same.
18954 (foperator_ge::op1_range): Same.
18955 (foperator_ge::op2_range): Same.
18956 (foperator_unordered_lt::op1_range): Same.
18957 (foperator_unordered_lt::op2_range): Same.
18958 (foperator_unordered_le::op1_range): Same.
18959 (foperator_unordered_le::op2_range): Same.
18960 (foperator_unordered_gt::op1_range): Same.
18961 (foperator_unordered_gt::op2_range): Same.
18962 (foperator_unordered_ge::op1_range): Same.
18963 (foperator_unordered_ge::op2_range): Same.
18964
18965 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
18966
18967 PR tree-optimization/107570
18968 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
18969
18970 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
18971
18972 * doc/gm2.texi (Internals): Remove from menu.
18973 (Using): Comment out ifnohtml conditional.
18974 (Documentation): Use gcc url.
18975 (License): Node simplified.
18976 (Copying): New node. Include gpl_v3_without_node.
18977 (Contributing): Node simplified.
18978 (Internals): Commented out.
18979 (Libraries): Node simplified.
18980 (Indices): Ditto.
18981 (Contents): Ditto.
18982 (Functions): Ditto.
18983
18984 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
18985
18986 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
18987 attribute.
18988 (mve_vqshluq_m_n_s<mode>): Likewise.
18989 (mve_vshlq_m_<supf><mode>): Likewise.
18990 (mve_vsriq_m_n_<supf><mode>): Likewise.
18991 (mve_vsubq_m_<supf><mode>): Likewise.
18992
18993 2023-02-03 Martin Jambor <mjambor@suse.cz>
18994
18995 PR ipa/108384
18996 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
18997 when comparing to an IPA-CP value.
18998 (dump_list_of_param_indices): New function.
18999 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
19000 Dump removed candidates using dump_list_of_param_indices.
19001 * ipa-param-manipulation.cc
19002 (ipa_param_body_adjustments::modify_expression): Add assert checking
19003 sizes of a VIEW_CONVERT_EXPR will match.
19004 (ipa_param_body_adjustments::modify_assignment): Likewise.
19005
19006 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
19007
19008 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
19009 * config/riscv/riscv.cc: Ditto.
19010
19011 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19012
19013 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
19014 (sll.vv): Ditto.
19015 (%3,%4): Ditto.
19016 (%3,%v4): Ditto.
19017 * config/riscv/vector.md: Ditto.
19018
19019 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19020
19021 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
19022 * config/riscv/riscv-vector-builtins-bases.cc: New class.
19023 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
19024 (vsra): Ditto.
19025 (vsrl): Ditto.
19026 * config/riscv/riscv-vector-builtins.cc: Ditto.
19027 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
19028
19029 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
19030
19031 * toplev.cc (toplev::main): Only print the version information header
19032 from toplevel main().
19033
19034 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
19035
19036 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
19037 cond_{ashl|ashr|lshr}
19038
19039 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
19040
19041 PR rtl-optimization/108086
19042 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
19043 Adjust size-related commentary accordingly.
19044
19045 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
19046
19047 PR rtl-optimization/108508
19048 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
19049 the splay tree search gives the first clobber in the second group,
19050 make sure that the root of the first clobber group is updated
19051 correctly. Enter the new clobber group into the definition splay
19052 tree.
19053
19054 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
19055
19056 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
19057 Fix finding best match score.
19058
19059 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19060
19061 PR debug/106746
19062 PR rtl-optimization/108463
19063 PR target/108484
19064 * cselib.cc (cselib_current_insn): Move declaration earlier.
19065 (cselib_hasher::equal): For debug only locs, temporarily override
19066 cselib_current_insn to their l->setting_insn for the
19067 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
19068 promote some debug locs.
19069 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
19070 when using cselib call cselib_lookup_from_insn on the address but
19071 don't substitute it.
19072
19073 2023-02-02 Richard Biener <rguenther@suse.de>
19074
19075 PR middle-end/108625
19076 * genmatch.cc (expr::gen_transform): Also disallow resimplification
19077 from pushing to lseq with force_leaf.
19078 (dt_simplify::gen_1): Likewise.
19079
19080 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
19081
19082 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
19083 (struct kernargs): Replace the common content with kernargs_abi.
19084 (struct heap): Delete.
19085 (main): Read GCN_STACK_SIZE envvar.
19086 Allocate space for the device stacks.
19087 Write the new kernargs fields.
19088 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
19089 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
19090 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
19091 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
19092 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
19093 Set up the stacks from the values in the kernargs, not private.
19094 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
19095 (gcn_hsa_declare_function_name): Turn off the private segment.
19096 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
19097 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
19098 * config/gcn/gcn.opt (mstack-size): Change the description.
19099
19100 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19101
19102 PR target/108443
19103 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
19104 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
19105 addressing MVE predicate modes.
19106 (mve_bool_vec_to_const): Change to represent correct MVE predicate
19107 format.
19108 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
19109 modes.
19110 (arm_vector_mode_supported_p): Likewise.
19111 (arm_mode_to_pred_mode): Add V2QI.
19112 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
19113 qualifier.
19114 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
19115 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
19116 (v2qi_UP): New macro.
19117 (v4bi_UP): New macro.
19118 (v8bi_UP): New macro.
19119 (v16bi_UP): New macro.
19120 (arm_expand_builtin_args): Make it able to expand the new predicate
19121 modes.
19122 * config/arm/arm-modes.def (V2QI): New mode.
19123 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
19124 Pred4x4_t): Remove unused predicate builtin types.
19125 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
19126 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
19127 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
19128 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
19129 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
19130 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
19131 of MODE_VECTOR_BOOL.
19132 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
19133 (MVE_VPRED): Likewise.
19134 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
19135 (MVE_vctp): New mode attribute.
19136 (mode1): Remove.
19137 (VCTPQ): Remove.
19138 (VCTPQ_M): Remove.
19139 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
19140 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
19141 attributes.
19142 (mve_vpnothi): Rename this...
19143 (mve_vpnotv16bi): ... to this.
19144 (mve_vctp<mode1>q_mhi): Rename this...
19145 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
19146 (mve_vldrdq_gather_base_z_<supf>v2di,
19147 mve_vldrdq_gather_offset_z_<supf>v2di,
19148 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
19149 mve_vstrdq_scatter_base_p_<supf>v2di,
19150 mve_vstrdq_scatter_offset_p_<supf>v2di,
19151 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
19152 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
19153 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
19154 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
19155 mve_vldrdq_gather_base_wb_z_<supf>v2di,
19156 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
19157 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
19158 predicates.
19159 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
19160 these...
19161 (VCTP): ... with this.
19162 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
19163 (VCTP_M): ... with this.
19164 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
19165 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
19166
19167 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19168
19169 PR target/107674
19170 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
19171 (arm_modes_tieable_p): Make MVE predicate modes tieable.
19172 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
19173 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
19174 simplify_subreg to simplify subregs where the outermode is not scalar.
19175
19176 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19177
19178 PR target/107674
19179 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
19180 new qualifiers parameter and use unsigned short type for MVE predicate.
19181 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
19182 parameter.
19183 (arm_init_crypto_builtins): Likewise.
19184
19185 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19186
19187 PR ipa/107300
19188 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
19189 * internal-fn.def (TRAP): Remove.
19190 * internal-fn.cc (expand_TRAP): Remove.
19191 * tree.cc (build_common_builtin_nodes): Define
19192 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
19193 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
19194 instead of BUILT_IN_TRAP.
19195 * gimple.cc (gimple_build_builtin_unreachable): Remove
19196 emitting internal function for BUILT_IN_TRAP.
19197 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
19198 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
19199 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
19200 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
19201 BUILT_IN_UNREACHABLE_TRAP.
19202 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
19203 * tree-cfg.cc (verify_gimple_call,
19204 pass_warn_function_return::execute): Likewise.
19205 * attribs.cc (decl_attributes): Don't report exclusions on
19206 BUILT_IN_UNREACHABLE_TRAP either.
19207
19208 2023-02-02 liuhongt <hongtao.liu@intel.com>
19209
19210 PR tree-optimization/108601
19211 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
19212 * tree-vect-loop.cc
19213 (vectorizable_nonlinear_induction): Remove
19214 vect_can_peel_nonlinear_iv_p.
19215 (vect_can_peel_nonlinear_iv_p): Don't peel
19216 nonlinear iv(mult or shift) for epilog when vf is not
19217 constant and moved the defination to ..
19218 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
19219 .. Here.
19220
19221 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19222
19223 PR middle-end/108435
19224 * tree-nested.cc (convert_nonlocal_omp_clauses)
19225 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
19226 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
19227 before calling declare_vars.
19228 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
19229 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
19230 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
19231 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
19232
19233 2023-02-01 Tamar Christina <tamar.christina@arm.com>
19234
19235 * common/config/aarch64/aarch64-common.cc
19236 (struct aarch64_option_extension): Add native_detect and document struct
19237 a bit more.
19238 (all_extensions): Set new field native_detect.
19239 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
19240 unused struct.
19241
19242 2023-02-01 Martin Liska <mliska@suse.cz>
19243
19244 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
19245 value if set.
19246
19247 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
19248
19249 PR tree-optimization/108356
19250 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
19251 do a search of the DOM tree for a range.
19252
19253 2023-02-01 Martin Liska <mliska@suse.cz>
19254
19255 PR ipa/108509
19256 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
19257 ony non-null values.
19258 * ipa.cc (walk_polymorphic_call_targets): Likewise.
19259
19260 2023-02-01 Martin Liska <mliska@suse.cz>
19261
19262 PR driver/108572
19263 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
19264 -gz=zstd.
19265
19266 2023-02-01 Jakub Jelinek <jakub@redhat.com>
19267
19268 PR debug/108573
19269 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
19270 subregs in DEBUG_INSNs.
19271
19272 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
19273
19274 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
19275
19276 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19277
19278 * config/s390/s390.cc (s390_restore_gpr_p): New function.
19279 (s390_preserve_gpr_arg_in_range_p): New function.
19280 (s390_preserve_gpr_arg_p): New function.
19281 (s390_preserve_fpr_arg_p): New function.
19282 (s390_register_info_stdarg_fpr): Rename to ...
19283 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
19284 (s390_register_info_stdarg_gpr): Rename to ...
19285 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
19286 (s390_register_info): Use the renamed functions above.
19287 (s390_optimize_register_info): Likewise.
19288 (save_fpr): Generate CFI for -mpreserve-args.
19289 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
19290 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
19291 (s390_optimize_prologue): Likewise.
19292 * config/s390/s390.opt: New option -mpreserve-args
19293
19294 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19295
19296 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
19297 (restore_gprs): Likewise.
19298 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
19299 frame pointer if a frame-pointer is used.
19300 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
19301 * config/s390/s390.md (stack_tie): Add a register operand and
19302 rename to ...
19303 (@stack_tie<mode>): ... this.
19304
19305 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19306
19307 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
19308 EMIT_CFI parameter.
19309 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
19310 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
19311
19312 2023-02-01 Richard Biener <rguenther@suse.de>
19313
19314 PR middle-end/108500
19315 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
19316 with tree traversal algorithm.
19317
19318 2023-02-01 Jason Merrill <jason@redhat.com>
19319
19320 * doc/invoke.texi: Document -Wno-changes-meaning.
19321
19322 2023-02-01 David Malcolm <dmalcolm@redhat.com>
19323
19324 * doc/invoke.texi (Static Analyzer Options): Add notes about
19325 limitations of -fanalyzer.
19326
19327 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19328
19329 * config/riscv/constraints.md (vj): New.
19330 (vk): Ditto
19331 * config/riscv/iterators.md: Add more opcode.
19332 * config/riscv/predicates.md (vector_arith_operand): New.
19333 (vector_neg_arith_operand): New.
19334 (vector_shift_operand): New.
19335 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
19336 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
19337 (vsub): Ditto.
19338 (vand): Ditto.
19339 (vor): Ditto.
19340 (vxor): Ditto.
19341 (vsll): Ditto.
19342 (vsra): Ditto.
19343 (vsrl): Ditto.
19344 (vmin): Ditto.
19345 (vmax): Ditto.
19346 (vminu): Ditto.
19347 (vmaxu): Ditto.
19348 (vmul): Ditto.
19349 (vdiv): Ditto.
19350 (vrem): Ditto.
19351 (vdivu): Ditto.
19352 (vremu): Ditto.
19353 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
19354 (vsub): Ditto.
19355 (vand): Ditto.
19356 (vor): Ditto.
19357 (vxor): Ditto.
19358 (vsll): Ditto.
19359 (vsra): Ditto.
19360 (vsrl): Ditto.
19361 (vmin): Ditto.
19362 (vmax): Ditto.
19363 (vminu): Ditto.
19364 (vmaxu): Ditto.
19365 (vmul): Ditto.
19366 (vdiv): Ditto.
19367 (vrem): Ditto.
19368 (vdivu): Ditto.
19369 (vremu): Ditto.
19370 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
19371 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
19372 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
19373 (DEF_RVV_U_OPS): New.
19374 (rvv_arg_type_info::get_base_vector_type): Handle
19375 RVV_BASE_shift_vector.
19376 (rvv_arg_type_info::get_tree_type): Ditto.
19377 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
19378 RVV_BASE_shift_vector.
19379 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
19380 * config/riscv/vector-iterators.md: Handle more opcode.
19381 * config/riscv/vector.md (@pred_<optab><mode>): New.
19382
19383 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
19384
19385 PR target/108589
19386 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
19387 REG_P on SET_DEST.
19388
19389 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
19390
19391 PR tree-optimization/108608
19392 * tree-vect-loop.cc (vect_transform_reduction): Handle single
19393 def-use cycles that involve function calls rather than tree codes.
19394
19395 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19396
19397 PR tree-optimization/108385
19398 * gimple-range-gori.cc (gori_compute::compute_operand_range):
19399 Allow VARYING computations to continue if there is a relation.
19400 * range-op.cc (pointer_plus_operator::op2_range): New.
19401
19402 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19403
19404 PR tree-optimization/108359
19405 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
19406 (range_operator::fold_range): If op1 is equivalent to op2 then
19407 invoke new fold_in_parts_equiv to operate on sub-components.
19408 * range-op.h (wi_fold_in_parts_equiv): New prototype.
19409
19410 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19411
19412 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
19413 not abort calculations if there is a valid relation available.
19414 (gori_compute::refine_using_relation): Pass correct relation trio.
19415 (gori_compute::compute_operand1_range): Create trio and use it.
19416 (gori_compute::compute_operand2_range): Ditto.
19417 * range-op.cc (operator_plus::op1_range): Use correct trio member.
19418 (operator_minus::op1_range): Use correct trio member.
19419 * value-relation.cc (value_relation::create_trio): New.
19420 * value-relation.h (value_relation::create_trio): New prototype.
19421
19422 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19423
19424 PR target/108599
19425 * config/i386/i386-expand.cc
19426 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
19427 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
19428 equal to bitsize of mode.
19429
19430 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19431
19432 PR rtl-optimization/108596
19433 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
19434 ends with asm goto and has a crossing fallthrough edge to the same bb
19435 that contains at least one of its labels by restoring EDGE_CROSSING
19436 flag even on possible edge from cur_bb to new_bb successor.
19437
19438 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19439
19440 PR c++/105593
19441 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
19442 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
19443 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
19444 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
19445 uninitialized automatic variable __W.
19446
19447 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
19448
19449 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
19450
19451 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19452
19453 * config/riscv/riscv-protos.h (get_vector_mode): New function.
19454 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
19455 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
19456 (class loadstore): Adjust for indexed loads/stores support.
19457 (BASE): Ditto.
19458 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
19459 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
19460 (vluxei16): Ditto.
19461 (vluxei32): Ditto.
19462 (vluxei64): Ditto.
19463 (vloxei8): Ditto.
19464 (vloxei16): Ditto.
19465 (vloxei32): Ditto.
19466 (vloxei64): Ditto.
19467 (vsuxei8): Ditto.
19468 (vsuxei16): Ditto.
19469 (vsuxei32): Ditto.
19470 (vsuxei64): Ditto.
19471 (vsoxei8): Ditto.
19472 (vsoxei16): Ditto.
19473 (vsoxei32): Ditto.
19474 (vsoxei64): Ditto.
19475 * config/riscv/riscv-vector-builtins-shapes.cc
19476 (struct indexed_loadstore_def): New class.
19477 (SHAPE): Ditto.
19478 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19479 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
19480 for indexed loads/stores support.
19481 (check_required_extensions): Ditto.
19482 (rvv_arg_type_info::get_base_vector_type): New function.
19483 (rvv_arg_type_info::get_tree_type): Ditto.
19484 (function_builder::add_unique_function): Adjust for indexed loads/stores
19485 support.
19486 (function_expander::use_exact_insn): New function.
19487 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
19488 indexed loads/stores support.
19489 (struct rvv_arg_type_info): Ditto.
19490 (function_expander::index_mode): New function.
19491 (function_base::apply_tail_policy_p): Ditto.
19492 (function_base::apply_mask_policy_p): Ditto.
19493 * config/riscv/vector-iterators.md (unspec): New unspec.
19494 * config/riscv/vector.md (unspec): Ditto.
19495 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
19496 pattern.
19497 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
19498 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
19499 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
19500 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
19501 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
19502 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
19503 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
19504 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
19505 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
19506 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19507 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19508 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19509 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19510
19511 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
19512
19513 * config.gcc: Recognize x86_64-*-gnu* targets and include
19514 i386/gnu64.h.
19515 * config/i386/gnu64.h: Define configuration for new target
19516 including ld.so location.
19517
19518 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
19519
19520 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
19521 ampere1a to include SM4.
19522
19523 2023-01-30 Andrew Pinski <apinski@marvell.com>
19524
19525 PR tree-optimization/108582
19526 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
19527 for middlebb to have no phi nodes.
19528
19529 2023-01-30 Richard Biener <rguenther@suse.de>
19530
19531 PR tree-optimization/108574
19532 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
19533 sameval and def, ignore the equivalence if there's the
19534 danger of oscillating between two values.
19535
19536 2023-01-30 Andreas Schwab <schwab@suse.de>
19537
19538 * common/config/riscv/riscv-common.cc
19539 (riscv_option_optimization_table)
19540 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
19541 -fasynchronous-unwind-tables and -funwind-tables.
19542 * config.gcc (riscv*-*-linux*): Define
19543 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
19544
19545 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
19546
19547 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
19548 value of includedir.
19549
19550 2023-01-30 Richard Biener <rguenther@suse.de>
19551
19552 PR ipa/108511
19553 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
19554 assert.
19555
19556 2023-01-30 liuhongt <hongtao.liu@intel.com>
19557
19558 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
19559 * doc/invoke.texi: Ditto.
19560
19561 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
19562
19563 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
19564 (stmt_may_terminate_function_p): If assuming return or EH
19565 volatile asm is safe.
19566 (find_always_executed_bbs): Fix handling of terminating BBS and
19567 infinite loops; add debug output.
19568 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
19569
19570 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
19571
19572 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
19573 off-by-one in checking the permissible shift-amount.
19574
19575 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19576
19577 * doc/extend.texi (Named Address Spaces): Update link to the
19578 AVR-Libc manual.
19579
19580 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19581
19582 * doc/standards.texi (Standards): Fix markup.
19583
19584 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19585
19586 * doc/standards.texi (Standards): Update link to Objective-C book.
19587
19588 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19589
19590 * doc/invoke.texi (Instrumentation Options): Update reference to
19591 AddressSanitizer.
19592
19593 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19594
19595 * doc/standards.texi: Update Go1 link.
19596
19597 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19598
19599 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
19600 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
19601 Support vlse/vsse.
19602 (BASE): Ditto.
19603 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19604 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
19605 (vsse): New class.
19606 * config/riscv/riscv-vector-builtins.cc
19607 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
19608 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
19609 (@pred_strided_store<mode>): Ditto.
19610
19611 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19612
19613 * config/riscv/vector.md (tail_policy_op_idx): Remove.
19614 (mask_policy_op_idx): Remove.
19615 (avl_type_op_idx): Remove.
19616
19617 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
19618
19619 PR tree-optimization/96373
19620 * tree.h (sign_mask_for): Declare.
19621 * tree.cc (sign_mask_for): New function.
19622 (signed_or_unsigned_type_for): For vector types, try to use the
19623 related_int_vector_mode.
19624 * genmatch.cc (commutative_op): Handle conditional internal functions.
19625 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
19626
19627 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
19628
19629 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
19630 Use the likely minimum VF when bounding the denominators to
19631 the estimated number of iterations.
19632
19633 2023-01-27 Richard Biener <rguenther@suse.de>
19634
19635 PR target/55522
19636 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
19637 and -Ofast FP environment side-effects.
19638
19639 2023-01-27 Richard Biener <rguenther@suse.de>
19640
19641 PR target/55522
19642 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
19643 Don't add crtfastmath.o for -shared.
19644
19645 2023-01-27 Richard Biener <rguenther@suse.de>
19646
19647 PR target/55522
19648 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
19649 for -shared.
19650
19651 2023-01-27 Richard Biener <rguenther@suse.de>
19652
19653 PR target/55522
19654 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
19655 crtfastmath.o for -shared.
19656
19657 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
19658
19659 PR tree-optimization/108306
19660 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
19661 varying for shifts that are always out of void range.
19662 (operator_rshift::fold_range): Return [0, 0] not
19663 varying for shifts that are always out of void range.
19664
19665 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
19666
19667 PR tree-optimization/108447
19668 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
19669 Do not attempt to fold HONOR_NAN types.
19670
19671 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19672
19673 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
19674 Remove _m suffix for "vop_m" C++ overloaded API name.
19675
19676 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19677
19678 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
19679 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19680 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
19681 (vsm): Ditto.
19682 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
19683 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
19684 (vbool64_t): Ditto.
19685 (vbool32_t): Ditto.
19686 (vbool16_t): Ditto.
19687 (vbool8_t): Ditto.
19688 (vbool4_t): Ditto.
19689 (vbool2_t): Ditto.
19690 (vbool1_t): Ditto.
19691 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
19692 (rvv_arg_type_info::get_tree_type): Ditto.
19693 (function_expander::use_contiguous_load_insn): Ditto.
19694 * config/riscv/vector.md (@pred_store<mode>): Ditto.
19695
19696 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19697
19698 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
19699 (vsetvl_discard_result_insn_p): New function.
19700 (reg_killed_by_bb_p): rename to find_reg_killed_by.
19701 (find_reg_killed_by): New name.
19702 (get_vl): allow it to be called by more functions.
19703 (has_vsetvl_killed_avl_p): Add condition.
19704 (get_avl): allow it to be called by more functions.
19705 (insn_should_be_added_p): New function.
19706 (get_all_nonphi_defs): Refine function.
19707 (get_all_sets): Ditto.
19708 (get_same_bb_set): New function.
19709 (any_insn_in_bb_p): Ditto.
19710 (any_set_in_bb_p): Ditto.
19711 (get_vl_vtype_info): Add VLMAX forward optimization.
19712 (source_equal_p): Fix issues.
19713 (extract_single_source): Refine.
19714 (avl_info::multiple_source_equal_p): New function.
19715 (avl_info::operator==): Adjust for final version.
19716 (vl_vtype_info::operator==): Ditto.
19717 (vl_vtype_info::same_avl_p): Ditto.
19718 (vector_insn_info::parse_insn): Ditto.
19719 (vector_insn_info::available_p): New function.
19720 (vector_insn_info::merge): Adjust for final version.
19721 (vector_insn_info::dump): Add hard_empty.
19722 (pass_vsetvl::hard_empty_block_p): New function.
19723 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
19724 (pass_vsetvl::forward_demand_fusion): Ditto.
19725 (pass_vsetvl::demand_fusion): Ditto.
19726 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
19727 (pass_vsetvl::compute_local_properties): Adjust for final version.
19728 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
19729 (pass_vsetvl::refine_vsetvls): Ditto.
19730 (pass_vsetvl::commit_vsetvls): Ditto.
19731 (pass_vsetvl::propagate_avl): New function.
19732 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
19733 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
19734
19735 2023-01-27 Jakub Jelinek <jakub@redhat.com>
19736
19737 PR other/108560
19738 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
19739 from size_t to int.
19740
19741 2023-01-27 Jakub Jelinek <jakub@redhat.com>
19742
19743 PR ipa/106061
19744 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
19745 redirection of calls to __builtin_trap in addition to redirection
19746 to __builtin_unreachable.
19747
19748 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19749
19750 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
19751
19752 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19753
19754 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
19755 (emit_vsetvl_insn): Ditto.
19756
19757 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19758
19759 * config/riscv/vector.md: Fix constraints.
19760
19761 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19762
19763 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
19764
19765 2023-01-27 Patrick Palka <ppalka@redhat.com>
19766 Jakub Jelinek <jakub@redhat.com>
19767
19768 * tree-core.h (tree_code_type, tree_code_length): For
19769 C++17 and later, add inline keyword, otherwise don't define
19770 the arrays, but declare extern arrays.
19771 * tree.cc (tree_code_type, tree_code_length): Define these
19772 arrays for C++14 and older.
19773
19774 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19775
19776 * config/riscv/riscv-vsetvl.h: Change it into public.
19777
19778 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19779
19780 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
19781 pass.
19782
19783 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19784
19785 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
19786
19787 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19788
19789 * config/riscv/vector.md: Fix incorrect attributes.
19790
19791 2023-01-27 Richard Biener <rguenther@suse.de>
19792
19793 PR target/55522
19794 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
19795 Don't add crtfastmath.o for -shared.
19796
19797 2023-01-27 Alexandre Oliva <oliva@gnu.org>
19798
19799 * doc/options.texi (option, RejectNegative): Mention that
19800 -g-started options are also implicitly negatable.
19801
19802 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
19803
19804 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
19805 Use get_typenode_from_name to get fixed-width integer type
19806 nodes.
19807 * config/riscv/riscv-vector-builtins.def: Update define with
19808 fixed-width integer type nodes.
19809
19810 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19811
19812 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
19813 (real_insn_and_same_bb_p): New function.
19814 (same_bb_and_after_or_equal_p): Remove it.
19815 (before_p): New function.
19816 (reg_killed_by_bb_p): Ditto.
19817 (has_vsetvl_killed_avl_p): Ditto.
19818 (get_vl): Move location so that we can call it.
19819 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
19820 (available_occurrence_p): Ditto.
19821 (dominate_probability_p): Remove it.
19822 (can_backward_propagate_p): Remove it.
19823 (get_all_nonphi_defs): New function.
19824 (get_all_predecessors): Ditto.
19825 (any_insn_in_bb_p): Ditto.
19826 (insert_vsetvl): Adjust AVL REG.
19827 (source_equal_p): New function.
19828 (extract_single_source): Ditto.
19829 (avl_info::single_source_equal_p): Ditto.
19830 (avl_info::operator==): Adjust for AVL=REG.
19831 (vl_vtype_info::same_avl_p): Ditto.
19832 (vector_insn_info::set_demand_info): Remove it.
19833 (vector_insn_info::compatible_p): Adjust for AVL=REG.
19834 (vector_insn_info::compatible_avl_p): New function.
19835 (vector_insn_info::merge): Adjust AVL=REG.
19836 (vector_insn_info::dump): Ditto.
19837 (pass_vsetvl::merge_successors): Remove it.
19838 (enum fusion_type): New enum.
19839 (pass_vsetvl::get_backward_fusion_type): New function.
19840 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
19841 (pass_vsetvl::forward_demand_fusion): Ditto.
19842 (pass_vsetvl::demand_fusion): Ditto.
19843 (pass_vsetvl::prune_expressions): Ditto.
19844 (pass_vsetvl::compute_local_properties): Ditto.
19845 (pass_vsetvl::cleanup_vsetvls): Ditto.
19846 (pass_vsetvl::commit_vsetvls): Ditto.
19847 (pass_vsetvl::init): Ditto.
19848 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
19849 (enum merge_type): New enum.
19850
19851 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19852
19853 * config/riscv/riscv-vsetvl.cc
19854 (vector_infos_manager::vector_infos_manager): Add probability.
19855 (vector_infos_manager::dump): Ditto.
19856 (pass_vsetvl::compute_probabilities): Ditto.
19857 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
19858
19859 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19860
19861 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
19862 (vector_insn_info::merge): Ditto.
19863 (vector_insn_info::dump): Ditto.
19864 (pass_vsetvl::merge_successors): Ditto.
19865 (pass_vsetvl::backward_demand_fusion): Ditto.
19866 (pass_vsetvl::forward_demand_fusion): Ditto.
19867 (pass_vsetvl::commit_vsetvls): Ditto.
19868 * config/riscv/riscv-vsetvl.h: Ditto.
19869
19870 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19871
19872 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
19873 rinsn.
19874
19875 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19876
19877 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
19878
19879 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19880
19881 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
19882 Add pre-check for redundant flow.
19883
19884 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19885
19886 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
19887 (vector_infos_manager::free_bitmap_vectors): Ditto.
19888 (pass_vsetvl::pre_vsetvl): Adjust codes.
19889 * config/riscv/riscv-vsetvl.h: New function declaration.
19890
19891 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19892
19893 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
19894 (vector_insn_info::set_demand_info): New function.
19895 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
19896 (pass_vsetvl::merge_successors): Ditto.
19897 (pass_vsetvl::compute_global_backward_infos): Ditto.
19898 (pass_vsetvl::backward_demand_fusion): Ditto.
19899 (pass_vsetvl::forward_demand_fusion): Ditto.
19900 (pass_vsetvl::demand_fusion): New function.
19901 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
19902 * config/riscv/riscv-vsetvl.h: New function declaration.
19903
19904 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19905
19906 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
19907
19908 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19909
19910 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
19911 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
19912
19913 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19914
19915 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
19916 (backward_propagate_worthwhile_p): Fix non-worthwhile.
19917
19918 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19919
19920 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
19921
19922 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19923
19924 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
19925 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
19926 (pass_vsetvl::commit_vsetvls): Ditto.
19927 * config/riscv/riscv-vsetvl.h: New function declaration.
19928
19929 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19930
19931 * config/riscv/vector.md:
19932
19933 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19934
19935 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
19936 pred_store for vse.
19937 * config/riscv/riscv-vector-builtins.cc
19938 (function_expander::add_mem_operand): Refine function.
19939 (function_expander::use_contiguous_load_insn): Adjust new
19940 implementation.
19941 (function_expander::use_contiguous_store_insn): Ditto.
19942 * config/riscv/riscv-vector-builtins.h: Refine function.
19943 * config/riscv/vector.md (@pred_store<mode>): New pattern.
19944
19945 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19946
19947 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
19948
19949 2023-01-26 Marek Polacek <polacek@redhat.com>
19950
19951 PR middle-end/108543
19952 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
19953 if it was previously set.
19954
19955 2023-01-26 Jakub Jelinek <jakub@redhat.com>
19956
19957 PR tree-optimization/108540
19958 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
19959 are singletons, use range_true even if op1 != op2
19960 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
19961 even if intersection of the ranges is empty and one has
19962 zero low bound and another zero high bound, use range_true_and_false
19963 rather than range_false.
19964 (foperator_not_equal::fold_range): If both op1 and op2
19965 are singletons, use range_false even if op1 != op2
19966 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
19967 even if intersection of the ranges is empty and one has
19968 zero low bound and another zero high bound, use range_true_and_false
19969 rather than range_true.
19970
19971 2023-01-26 Jakub Jelinek <jakub@redhat.com>
19972
19973 * value-relation.cc (kind_string): Add const.
19974 (rr_negate_table, rr_swap_table, rr_intersect_table,
19975 rr_union_table, rr_transitive_table): Add static const, change
19976 element type from relation_kind to unsigned char.
19977 (relation_negate, relation_swap, relation_intersect, relation_union,
19978 relation_transitive): Cast rr_*_table element to relation_kind.
19979 (relation_to_code): Add static const.
19980 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
19981
19982 2023-01-26 Richard Biener <rguenther@suse.de>
19983
19984 PR tree-optimization/108547
19985 * gimple-predicate-analysis.cc (value_sat_pred_p):
19986 Use widest_int.
19987
19988 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
19989
19990 PR tree-optimization/108522
19991 * tree-object-size.cc (compute_object_offset): Make EXPR
19992 argument non-const. Call component_ref_field_offset.
19993
19994 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19995
19996 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
19997 FEATURE_STRING field.
19998
19999 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
20000
20001 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
20002
20003 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
20004
20005 PR modula2/102343
20006 PR modula2/108182
20007 * gcc.cc: Provide default specs for Modula-2 so that when the
20008 language is not built-in better diagnostics are emitted for
20009 attempts to use .mod or .m2i file extensions.
20010
20011 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20012
20013 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
20014
20015 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20016
20017 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
20018
20019 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20020
20021 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
20022 Fix spacing.
20023
20024 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20025
20026 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
20027
20028 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20029
20030 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
20031
20032 2023-01-25 Richard Biener <rguenther@suse.de>
20033
20034 PR tree-optimization/108523
20035 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
20036 backedge value for the result when using predication to
20037 prove equivalence.
20038
20039 2023-01-25 Richard Biener <rguenther@suse.de>
20040
20041 * doc/lto.texi (Command line options): Reword and update reference
20042 to removed lto_read_all_file_options.
20043
20044 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
20045
20046 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
20047 tests.
20048
20049 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
20050
20051 * doc/contrib.texi: Add Jose E. Marchesi.
20052
20053 2023-01-25 Jakub Jelinek <jakub@redhat.com>
20054
20055 PR tree-optimization/108498
20056 * gimple-ssa-store-merging.cc (class store_operand_info):
20057 End coment with full stop rather than comma.
20058 (split_group): Likewise.
20059 (merged_store_group::apply_stores): Clear string_concatenation if
20060 start or end aren't on a byte boundary.
20061
20062 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
20063 Jakub Jelinek <jakub@redhat.com>
20064
20065 PR tree-optimization/108522
20066 * tree-object-size.cc (compute_object_offset): Use
20067 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
20068
20069 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20070
20071 * config/xtensa/xtensa.md:
20072 Fix exit from loops detecting references before overwriting in the
20073 split pattern.
20074
20075 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
20076
20077 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
20078 do elimination but only for hard register.
20079 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
20080 calls of get_hard_regno.
20081
20082 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
20083
20084 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
20085 of CPU version.
20086
20087 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
20088
20089 PR target/108177
20090 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
20091 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
20092 as input operand.
20093
20094 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20095
20096 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
20097 and only include 'csky/t-csky-linux' when enable multilib.
20098 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
20099 define it when disable multilib.
20100
20101 2023-01-24 Richard Biener <rguenther@suse.de>
20102
20103 PR tree-optimization/108500
20104 * dominance.h (calculate_dominance_info): Add parameter
20105 to indicate fast-query compute, defaulted to true.
20106 * dominance.cc (calculate_dominance_info): Honor
20107 fast-query compute parameter.
20108 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
20109 not compute the dominator fast-query DFS numbers.
20110
20111 2023-01-24 Eric Biggers <ebiggers@google.com>
20112
20113 PR bootstrap/90543
20114 * optc-save-gen.awk: Fix copy-and-paste error.
20115
20116 2023-01-24 Jakub Jelinek <jakub@redhat.com>
20117
20118 PR c++/108474
20119 * cgraphbuild.cc: Include gimplify.h.
20120 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
20121 their corresponding DECL_VALUE_EXPR expressions after unsharing.
20122
20123 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20124
20125 PR target/108505
20126 * config.gcc (tm_file): Move the variable out of loop.
20127
20128 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
20129 Yang Yujie <yangyujie@loongson.cn>
20130
20131 PR target/107731
20132 * config/loongarch/loongarch.cc (loongarch_classify_address):
20133 Add precessint for CONST_INT.
20134 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
20135 (loongarch_print_operand): Increase the processing of '%c'.
20136 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
20137 And port the public operand modifiers information to this document.
20138
20139 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20140
20141 * doc/invoke.texi (-mbranch-protection): Update documentation.
20142
20143 2023-01-23 Richard Biener <rguenther@suse.de>
20144
20145 PR target/55522
20146 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
20147 for -shared.
20148 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
20149 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
20150 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
20151 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
20152
20153 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20154
20155 * config/arm/aout.h (ra_auth_code): Add entry in enum.
20156 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
20157 to dwarf frame expression.
20158 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
20159 (arm_expand_prologue): Update frame related information and reg notes
20160 for pac/pacbit insn.
20161 (arm_regno_class): Check for pac pseudo reigster.
20162 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
20163 (arm_init_machine_status): Set pacspval_needed to zero.
20164 (arm_debugger_regno): Check for PAC register.
20165 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
20166 register.
20167 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
20168 (arm_unwind_emit): Update REG_CFA_REGISTER case._
20169 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
20170 (DWARF_PAC_REGNUM): Define.
20171 (IS_PAC_REGNUM): Likewise.
20172 (enum reg_class): Add PAC_REG entry.
20173 (machine_function): Add pacbti_needed state to structure.
20174 * config/arm/arm.md (RA_AUTH_CODE): Define.
20175
20176 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20177
20178 * config.gcc ($tm_file): Update variable.
20179 * config/arm/arm-mlib.h: Create new header file.
20180 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
20181 multilib arch directory.
20182 (MULTILIB_REUSE): Add multilib reuse rules.
20183 (MULTILIB_MATCHES): Add multilib match rules.
20184
20185 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20186
20187 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
20188 * config/arm/arm-tables.opt: Regenerate.
20189 * config/arm/arm-tune.md: Likewise.
20190 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
20191 * (-mfix-cmse-cve-2021-35465): Likewise.
20192
20193 2023-01-23 Richard Biener <rguenther@suse.de>
20194
20195 PR tree-optimization/108482
20196 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
20197 .LOOP_DIST_ALIAS calls.
20198
20199 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20200
20201 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
20202 * config/arm/arm-protos.h: Update.
20203 * config/arm/aarch-common-protos.h: Declare
20204 'aarch_bti_arch_check'.
20205 * config/arm/arm.cc (aarch_bti_enabled) Update.
20206 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
20207 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
20208 * config/arm/arm.md (bti_nop): New insn.
20209 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
20210 (aarch-bti-insert.o): New target.
20211 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
20212 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
20213 compatibility.
20214 (gate): Make use of 'aarch_bti_arch_check'.
20215 * config/arm/arm-passes.def: New file.
20216 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
20217
20218 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20219
20220 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
20221 'aarch-bti-insert.o'.
20222 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
20223 proto.
20224 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
20225 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
20226 (aarch64_output_mi_thunk)
20227 (aarch64_print_patchable_function_entry)
20228 (aarch64_file_end_indicate_exec_stack): Update renamed function
20229 calls to renamed functions.
20230 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
20231 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
20232 target.
20233 * config/aarch64/aarch64-bti-insert.cc: Delete.
20234 * config/arm/aarch-bti-insert.cc: New file including and
20235 generalizing code from aarch64-bti-insert.cc.
20236 * config/arm/aarch-common-protos.h: Update.
20237
20238 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20239
20240 * config/arm/arm.h (arm_arch8m_main): Declare it.
20241 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
20242 Declare it.
20243 * config/arm/arm.cc (arm_arch8m_main): Define it.
20244 (arm_option_reconfigure_globals): Set arm_arch8m_main.
20245 (arm_compute_frame_layout, arm_expand_prologue)
20246 (thumb2_expand_return, arm_expand_epilogue)
20247 (arm_conditional_register_usage): Update for pac codegen.
20248 (arm_current_function_pac_enabled_p): New function.
20249 (aarch_bti_enabled) New function.
20250 (use_return_insn): Return zero when pac is enabled.
20251 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
20252 Add new patterns.
20253 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
20254 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
20255
20256 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20257
20258 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
20259 mbranch-protection.
20260
20261 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20262 Tejas Belagod <tbelagod@arm.com>
20263
20264 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
20265 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
20266
20267 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20268 Tejas Belagod <tbelagod@arm.com>
20269 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20270
20271 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
20272 new pseudo register class _UVRSC_PAC.
20273
20274 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20275 Tejas Belagod <tbelagod@arm.com>
20276
20277 * config/arm/arm-c.cc (arm_cpu_builtins): Define
20278 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
20279 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
20280
20281 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20282 Tejas Belagod <tbelagod@arm.com>
20283
20284 * doc/sourcebuild.texi: Document arm_pacbti_hw.
20285
20286 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20287 Tejas Belagod <tbelagod@arm.com>
20288 Richard Earnshaw <Richard.Earnshaw@arm.com>
20289
20290 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
20291 -mbranch-protection option and initialize appropriate data structures.
20292 * config/arm/arm.opt (-mbranch-protection): New option.
20293 * doc/invoke.texi (Arm Options): Document it.
20294
20295 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20296 Tejas Belagod <tbelagod@arm.com>
20297
20298 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
20299 * config/arm/arm-cpus.in (pacbti): New feature.
20300 * doc/invoke.texi (Arm Options): Document it.
20301
20302 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20303 Tejas Belagod <tbelagod@arm.com>
20304
20305 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
20306 (all_architectures): Fix comment.
20307 (aarch64_parse_extension): Rename return type, enum value names.
20308 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
20309 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
20310 Also rename corresponding enum values.
20311 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
20312 out aarch64_function_type and move it to common code as
20313 aarch_function_type in aarch-common.h.
20314 * config/aarch64/aarch64-protos.h: Include common types header,
20315 move out types aarch64_parse_opt_result and aarch64_key_type to
20316 aarch-common.h
20317 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
20318 and functions out into aarch-common.h and aarch-common.cc. Fix up
20319 all the name changes resulting from the move.
20320 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
20321 and enum value.
20322 * config/aarch64/aarch64.opt: Include aarch-common.h to import
20323 type move. Fix up name changes from factoring out common code and
20324 data.
20325 * config/arm/aarch-common-protos.h: Export factored out routines to both
20326 backends.
20327 * config/arm/aarch-common.cc: Include newly factored out types.
20328 Move all mbranch-protection code and data structures from
20329 aarch64.cc.
20330 * config/arm/aarch-common.h: New header that declares types shared
20331 between aarch32 and aarch64 backends.
20332 * config/arm/arm-protos.h: Declare types and variables that are
20333 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
20334 aarch_ra_sign_scope and aarch_enable_bti.
20335 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
20336 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
20337 * config/arm/arm.cc: Add missing includes.
20338
20339 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
20340
20341 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
20342
20343 2023-01-23 Richard Biener <rguenther@suse.de>
20344
20345 PR tree-optimization/108449
20346 * cgraphunit.cc (check_global_declaration): Do not turn
20347 undefined statics into externs.
20348
20349 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
20350
20351 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
20352 and HI input modes.
20353 * config/pru/pru.md (clz): Fix generated code for QI and HI
20354 input modes.
20355
20356 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
20357
20358 * config/v850/v850.cc (v850_select_section): Put const volatile
20359 objects into read-only sections.
20360
20361 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
20362
20363 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
20364 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
20365 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
20366
20367 2023-01-20 Jakub Jelinek <jakub@redhat.com>
20368
20369 PR tree-optimization/108457
20370 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
20371 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
20372 argument instead of a temporary. Formatting fixes.
20373
20374 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20375
20376 PR tree-optimization/108447
20377 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
20378 (relation_tests): Add self-tests for relation_{intersect,union}
20379 commutativity.
20380 * selftest.h (relation_tests): Declare.
20381 * function-tests.cc (test_ranges): Call it.
20382
20383 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
20384
20385 PR target/108436
20386 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
20387 invalid third argument to __builtin_ia32_prefetch.
20388
20389 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20390
20391 PR middle-end/108459
20392 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
20393 than fold_unary for NEGATE_EXPR.
20394
20395 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
20396
20397 PR target/108411
20398 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
20399 comment. Move assert about alignment a bit later.
20400
20401 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20402
20403 PR tree-optimization/108440
20404 * tree-ssa-forwprop.cc: Include gimple-range.h.
20405 (simplify_rotate): For the forms with T2 wider than T and shift counts of
20406 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
20407 to B. For the forms with T2 wider than T and shift counts of
20408 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
20409 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
20410 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
20411 pass specific ranger instead of get_global_range_query.
20412 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
20413 been created.
20414
20415 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
20416
20417 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
20418 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
20419 the pattern.
20420 (aarch64_simd_vec_copy_lane<mode>): Likewise.
20421 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
20422
20423 2023-01-19 Alexandre Oliva <oliva@adacore.com>
20424
20425 PR debug/106746
20426 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
20427 within debug insns.
20428
20429 2023-01-18 Martin Jambor <mjambor@suse.cz>
20430
20431 PR ipa/107944
20432 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
20433 lcone_of chain also do not need the body.
20434
20435 2023-01-18 Richard Biener <rguenther@suse.de>
20436
20437 Revert:
20438 2022-12-16 Richard Biener <rguenther@suse.de>
20439
20440 PR middle-end/108086
20441 * tree-inline.cc (remap_ssa_name): Do not unshare the
20442 result from the decl_map.
20443
20444 2023-01-18 Murray Steele <murray.steele@arm.com>
20445
20446 PR target/108442
20447 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
20448 function.
20449 (__arm_vst1q_p_s8): Likewise.
20450 (__arm_vld1q_z_u8): Likewise.
20451 (__arm_vld1q_z_s8): Likewise.
20452 (__arm_vst1q_p_u16): Likewise.
20453 (__arm_vst1q_p_s16): Likewise.
20454 (__arm_vld1q_z_u16): Likewise.
20455 (__arm_vld1q_z_s16): Likewise.
20456 (__arm_vst1q_p_u32): Likewise.
20457 (__arm_vst1q_p_s32): Likewise.
20458 (__arm_vld1q_z_u32): Likewise.
20459 (__arm_vld1q_z_s32): Likewise.
20460 (__arm_vld1q_z_f16): Likewise.
20461 (__arm_vst1q_p_f16): Likewise.
20462 (__arm_vld1q_z_f32): Likewise.
20463 (__arm_vst1q_p_f32): Likewise.
20464
20465 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20466
20467 * config/xtensa/xtensa.md (xorsi3_internal):
20468 Rename from the original of "xorsi3".
20469 (xorsi3): New expansion pattern that emits addition rather than
20470 bitwise-XOR when the second source is a constant of -2147483648
20471 if TARGET_DENSITY.
20472
20473 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
20474 Andrew Pinski <apinski@marvell.com>
20475
20476 PR target/108396
20477 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
20478 vec_vsubcuqP with vec_vsubcuq.
20479
20480 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
20481
20482 PR target/108348
20483 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
20484 support for invalid uses of MMA opaque type in function arguments.
20485
20486 2023-01-18 liuhongt <hongtao.liu@intel.com>
20487
20488 PR target/55522
20489 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
20490 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
20491 -share or -mno-daz-ftz is specified.
20492 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
20493 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
20494
20495 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
20496
20497 * config/bpf/bpf.cc (bpf_option_override): Disable
20498 -fstack-protector.
20499
20500 2023-01-17 Jakub Jelinek <jakub@redhat.com>
20501
20502 PR tree-optimization/106523
20503 * tree-ssa-forwprop.cc (simplify_rotate): For the
20504 patterns with (-Y) & (B - 1) in one operand's shift
20505 count and Y in another, if T2 has wider precision than T,
20506 punt if Y could have a value in [B, B2 - 1] range.
20507
20508 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
20509
20510 PR target/105980
20511 * config/i386/i386.cc (x86_output_mi_thunk): Disable
20512 -mforce-indirect-call for PIC in 32-bit mode.
20513
20514 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
20515
20516 PR ipa/106077
20517 * ipa-modref.cc (modref_access_analysis::analyze): Use
20518 find_always_executed_bbs.
20519 * ipa-sra.cc (process_scan_results): Likewise.
20520 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
20521 (find_always_executed_bbs): New function.
20522 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
20523 (find_always_executed_bbs): Declare.
20524
20525 2023-01-16 Jan Hubicka <jh@suse.cz>
20526
20527 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
20528 by TARGET_USE_SCATTER.
20529 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
20530 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
20531 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
20532 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
20533 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
20534 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
20535
20536 2023-01-16 Richard Biener <rguenther@suse.de>
20537
20538 PR target/55522
20539 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
20540
20541 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
20542
20543 PR target/96795
20544 PR target/107515
20545 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
20546 (__ARM_mve_coerce3): Likewise.
20547
20548 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20549
20550 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
20551
20552 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20553
20554 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
20555 (number_of_iterations_bitcount): Add call to the above.
20556 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
20557 c[lt]z idiom recognition.
20558
20559 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20560
20561 * doc/sourcebuild.texi: Add missing target attributes.
20562
20563 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20564
20565 PR tree-optimization/94793
20566 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
20567 for c[lt]z optabs.
20568 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
20569 (number_of_iterations_cltz_complement): New.
20570 (number_of_iterations_bitcount): Add call to the above.
20571
20572 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
20573
20574 * doc/extend.texi (Common Function Attributes): Fix grammar.
20575
20576 2023-01-16 Jakub Jelinek <jakub@redhat.com>
20577
20578 PR other/108413
20579 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
20580 * config/riscv/riscv-vsetvl.cc: Likewise.
20581
20582 2023-01-16 Jakub Jelinek <jakub@redhat.com>
20583
20584 PR c++/105593
20585 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
20586 disable -Winit-self using pragma GCC diagnostic ignored.
20587 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
20588 Likewise.
20589 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
20590 _mm256_undefined_si256): Likewise.
20591 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
20592 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
20593 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
20594 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
20595
20596 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
20597
20598 PR target/108272
20599 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
20600 support for invalid uses in inline asm, factor out the checking and
20601 erroring to lambda function check_and_error_invalid_use.
20602
20603 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
20604
20605 PR tree-optimization/107608
20606 * range-op-float.cc (range_operator_float::fold_range): Avoid
20607 folding into INF when flag_trapping_math.
20608 * value-range.h (frange::known_isinf): Return false for possible NANs.
20609
20610 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20611
20612 * config.gcc (csky-*-*): Support --with-float=softfp.
20613
20614 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20615
20616 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
20617 Rename to xtensa_adjust_reg_alloc_order.
20618 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
20619 Ditto. And also remove code to reorder register numbers for
20620 leaf functions, rename the tables, and adjust the allocation
20621 order for the call0 ABI to use register A0 more.
20622 (xtensa_leaf_regs): Remove.
20623 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
20624 (order_regs_for_local_alloc): Rename as the above.
20625 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
20626
20627 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
20628
20629 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
20630 Change to define_insn_and_split to fold ldr+dup to ld1rq.
20631 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
20632
20633 2023-01-14 Alexandre Oliva <oliva@adacore.com>
20634
20635 * hash-table.h (is_deleted): Precheck !is_empty.
20636 (mark_deleted): Postcheck !is_empty.
20637 (copy constructor): Test is_empty before is_deleted.
20638
20639 2023-01-14 Alexandre Oliva <oliva@adacore.com>
20640
20641 PR target/40457
20642 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
20643 moves.
20644
20645 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
20646
20647 PR rtl-optimization/108274
20648 * function.cc (thread_prologue_and_epilogue_insns): Also update the
20649 DF information for calls in a few more cases.
20650
20651 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
20652
20653 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
20654 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
20655 define.
20656 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
20657 (MAX_SYNC_LIBFUNC_SIZE): Define.
20658 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
20659 enabled.
20660 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
20661 libcall when sync libcalls are disabled.
20662 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
20663 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
20664 are disabled on 32-bit target.
20665 * config/pa/pa.opt (matomic-libcalls): New option.
20666 * doc/invoke.texi (HPPA Options): Update.
20667
20668 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
20669
20670 PR rtl-optimization/108117
20671 PR rtl-optimization/108132
20672 * sched-deps.cc (deps_analyze_insn): Do not schedule across
20673 calls before reload.
20674
20675 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20676
20677 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
20678 options for -mlibarch.
20679 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
20680 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
20681
20682 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
20683
20684 * attribs.cc (strict_flex_array_level_of): Move this function to ...
20685 * attribs.h (strict_flex_array_level_of): Remove the declaration.
20686 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
20687 replace the referece to strict_flex_array_level_of with
20688 DECL_NOT_FLEXARRAY.
20689 * tree.cc (component_ref_size): Likewise.
20690
20691 2023-01-13 Richard Biener <rguenther@suse.de>
20692
20693 PR target/55522
20694 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
20695 crtfastmath.o for -shared.
20696 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
20697
20698 2023-01-13 Richard Biener <rguenther@suse.de>
20699
20700 PR target/55522
20701 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
20702 crtfastmath.o for -shared.
20703 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
20704 Likewise.
20705 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
20706 Likewise.
20707
20708 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
20709
20710 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
20711 function.
20712 (TARGET_DWARF_FRAME_REG_MODE): Define.
20713
20714 2023-01-13 Richard Biener <rguenther@suse.de>
20715
20716 PR target/107209
20717 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
20718 update EH info on the fly.
20719
20720 2023-01-13 Richard Biener <rguenther@suse.de>
20721
20722 PR tree-optimization/108387
20723 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
20724 value before inserting expression into the tables.
20725
20726 2023-01-12 Andrew Pinski <apinski@marvell.com>
20727 Roger Sayle <roger@nextmovesoftware.com>
20728
20729 PR tree-optimization/92342
20730 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
20731 Use tcc_comparison and :c for the multiply.
20732 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
20733
20734 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
20735 Richard Sandiford <richard.sandiford@arm.com>
20736
20737 PR target/105549
20738 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
20739 Check DECL_PACKED for bitfield.
20740 (aarch64_layout_arg): Warn when parameter passing ABI changes.
20741 (aarch64_function_arg_boundary): Do not warn here.
20742 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
20743 changes.
20744
20745 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
20746 Richard Sandiford <richard.sandiford@arm.com>
20747
20748 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
20749 comment.
20750 (aarch64_layout_arg): Factorize warning conditions.
20751 (aarch64_function_arg_boundary): Fix typo.
20752 * function.cc (currently_expanding_function_start): New variable.
20753 (expand_function_start): Handle
20754 currently_expanding_function_start.
20755 * function.h (currently_expanding_function_start): Declare.
20756
20757 2023-01-12 Richard Biener <rguenther@suse.de>
20758
20759 PR tree-optimization/99412
20760 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
20761 (swap_ops_for_binary_stmt): Remove reduction handling.
20762 (rewrite_expr_tree_parallel): Adjust.
20763 (reassociate_bb): Likewise.
20764 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
20765
20766 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20767
20768 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
20769 Rearrange the emitting codes.
20770
20771 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20772
20773 * config/xtensa/xtensa.md (*btrue):
20774 Correct value of the attribute "length" that depends on
20775 TARGET_DENSITY and operands, and add '?' character to the register
20776 constraint of the compared operand.
20777
20778 2023-01-12 Alexandre Oliva <oliva@adacore.com>
20779
20780 * hash-table.h (expand): Check elements and deleted counts.
20781 (verify): Likewise.
20782
20783 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
20784
20785 PR tree-optimization/71343
20786 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
20787 the value number of the expression X << C the same as the value
20788 number for the multiplication X * (1<<C).
20789
20790 2023-01-11 David Faust <david.faust@oracle.com>
20791
20792 PR target/108293
20793 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
20794 floating point modes.
20795
20796 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
20797
20798 PR tree-optimization/108199
20799 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
20800 for bit-field references.
20801
20802 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
20803
20804 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
20805 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
20806 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
20807 OPTION_MASK_P10_FUSION.
20808
20809 2023-01-11 Richard Biener <rguenther@suse.de>
20810
20811 PR tree-optimization/107767
20812 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
20813 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
20814 * tree-switch-conversion.cc (switch_conversion::collect):
20815 Count unique non-default targets accounting for later
20816 merging opportunities.
20817
20818 2023-01-11 Martin Liska <mliska@suse.cz>
20819
20820 PR middle-end/107976
20821 * params.opt: Limit JT params.
20822 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
20823
20824 2023-01-11 Richard Biener <rguenther@suse.de>
20825
20826 PR tree-optimization/108352
20827 * tree-ssa-threadbackward.cc
20828 (back_threader_profitability::profitable_path_p): Adjust
20829 heuristic that allows non-multi-way branch threads creating
20830 irreducible loops.
20831 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
20832 (--param fsm-scale-path-stmts): Adjust.
20833 * params.opt (--param=fsm-scale-path-blocks=): Remove.
20834 (-param=fsm-scale-path-stmts=): Adjust description.
20835
20836 2023-01-11 Richard Biener <rguenther@suse.de>
20837
20838 PR tree-optimization/108353
20839 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
20840 Remove.
20841 (add_ssa_edge): Simplify.
20842 (add_control_edge): Likewise.
20843 (ssa_prop_init): Likewise.
20844 (ssa_prop_fini): Likewise.
20845 (ssa_propagation_engine::ssa_propagate): Likewise.
20846
20847 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
20848
20849 * config/s390/s390.md (*not<mode>): New pattern.
20850
20851 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20852
20853 * config/xtensa/xtensa.cc (xtensa_insn_cost):
20854 Let insn cost for size be obtained by applying COSTS_N_INSNS()
20855 to instruction length and then dividing by 3.
20856
20857 2023-01-10 Richard Biener <rguenther@suse.de>
20858
20859 PR tree-optimization/106293
20860 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
20861 process degenerate PHI defs.
20862
20863 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
20864
20865 PR rtl-optimization/106421
20866 * cprop.cc (bypass_block): Check that DEST is local to this
20867 function (non-NULL) before calling find_edge.
20868
20869 2023-01-10 Martin Jambor <mjambor@suse.cz>
20870
20871 PR ipa/108110
20872 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
20873 sort_replacements, lookup_first_base_replacement and
20874 m_sorted_replacements_p.
20875 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
20876 (ipa_param_body_adjustments::register_replacement): Set
20877 m_sorted_replacements_p to false.
20878 (compare_param_body_replacement): New function.
20879 (ipa_param_body_adjustments::sort_replacements): Likewise.
20880 (ipa_param_body_adjustments::common_initialization): Call
20881 sort_replacements.
20882 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
20883 m_sorted_replacements_p.
20884 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
20885 std::lower_bound.
20886 (ipa_param_body_adjustments::lookup_first_base_replacement): New
20887 function.
20888 (ipa_param_body_adjustments::modify_call_stmt): Use
20889 lookup_first_base_replacement.
20890 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
20891 adjustments->sort_replacements.
20892
20893 2023-01-10 Richard Biener <rguenther@suse.de>
20894
20895 PR tree-optimization/108314
20896 * tree-vect-stmts.cc (vectorizable_condition): Do not
20897 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
20898
20899 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20900
20901 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
20902
20903 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20904
20905 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
20906
20907 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20908
20909 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
20910 defines for soft float abi.
20911
20912 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20913
20914 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
20915 (smart_bclri): Likewise.
20916 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
20917 (fast_bclri): Likewise.
20918 (fast_cmpnesi_i): Likewise.
20919 (*fast_cmpltsi_i): Likewise.
20920 (*fast_cmpgeusi_i): Likewise.
20921
20922 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20923
20924 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
20925 flag_fp_int_builtin_inexact || !flag_trapping_math.
20926 (<frm_pattern><mode>2): Likewise.
20927
20928 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
20929
20930 * config/s390/s390.cc (s390_register_info): Check call_used_regs
20931 instead of hard-coding the register numbers for call saved
20932 registers.
20933 (s390_optimize_register_info): Likewise.
20934
20935 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
20936
20937 * doc/gm2.texi (Overview): Fix @node markers.
20938 (Using): Likewise. Remove subsections that were moved to Overview
20939 from the menu and move others around.
20940
20941 2023-01-09 Richard Biener <rguenther@suse.de>
20942
20943 PR middle-end/108209
20944 * genmatch.cc (commutative_op): Fix return value for
20945 user-id with non-commutative first replacement.
20946
20947 2023-01-09 Jakub Jelinek <jakub@redhat.com>
20948
20949 PR target/107453
20950 * calls.cc (expand_call): For calls with
20951 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
20952 Formatting fix.
20953
20954 2023-01-09 Richard Biener <rguenther@suse.de>
20955
20956 PR middle-end/69482
20957 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
20958 qualified accesses also force objects to memory.
20959
20960 2023-01-09 Martin Liska <mliska@suse.cz>
20961
20962 PR lto/108330
20963 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
20964 NULL (deleleted value) to a hash_set.
20965
20966 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20967
20968 * config/xtensa/xtensa.md (*splice_bits):
20969 New insn_and_split pattern.
20970
20971 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20972
20973 * config/xtensa/xtensa.cc
20974 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
20975 New helper functions.
20976 (xtensa_set_return_address, xtensa_output_mi_thunk):
20977 Change to use the helper function.
20978 (xtensa_emit_adjust_stack_ptr): Ditto.
20979 And also change to try reusing the content of scratch register
20980 A9 if the register is not modified in the function body.
20981
20982 2023-01-07 LIU Hao <lh_mouse@126.com>
20983
20984 PR middle-end/108300
20985 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
20986 before <windows.h>.
20987 * diagnostic-color.cc: Likewise.
20988 * plugin.cc: Likewise.
20989 * prefix.cc: Likewise.
20990
20991 2023-01-06 Joseph Myers <joseph@codesourcery.com>
20992
20993 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
20994 for handling real integer types.
20995
20996 2023-01-06 Tamar Christina <tamar.christina@arm.com>
20997
20998 Revert:
20999 2022-12-12 Tamar Christina <tamar.christina@arm.com>
21000
21001 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
21002 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
21003 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
21004 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
21005 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
21006 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
21007 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
21008 (aarch64_simd_dupv2hf): New.
21009 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
21010 Add E_V2HFmode.
21011 * config/aarch64/iterators.md (VHSDF_P): New.
21012 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
21013 Vel, q, vp): Add V2HF.
21014 * config/arm/types.md (neon_fp_reduc_add_h): New.
21015
21016 2023-01-06 Martin Liska <mliska@suse.cz>
21017
21018 PR middle-end/107966
21019 * doc/options.texi: Fix Var documentation in internal manual.
21020
21021 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
21022
21023 Revert:
21024 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21025
21026 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
21027 RTL expansion to allow condition (mask) to be shared/reused,
21028 by avoiding overwriting pseudos and adding REG_EQUAL notes.
21029
21030 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
21031
21032 * common.opt: Add -static-libgm2.
21033 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
21034 * doc/gm2.texi: Document static-libgm2.
21035 * gcc.cc (driver_handle_option): Allow static-libgm2.
21036
21037 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
21038
21039 * common/config/i386/i386-common.cc (processor_alias_table):
21040 Use CPU_ZNVER4 for znver4.
21041 * config/i386/i386.md: Add znver4.md.
21042 * config/i386/znver4.md: New.
21043
21044 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21045
21046 PR tree-optimization/108253
21047 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
21048 types.
21049
21050 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21051
21052 PR middle-end/108237
21053 * generic-match-head.cc: Include tree-pass.h.
21054 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
21055 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
21056 resp. PROP_gimple_lvec property set.
21057
21058 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21059
21060 PR sanitizer/108256
21061 * convert.cc (do_narrow): Punt for MULT_EXPR if original
21062 type doesn't wrap around and -fsanitize=signed-integer-overflow
21063 is on.
21064 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
21065
21066 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
21067
21068 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
21069 * common/config/i386/i386-common.cc: Add Emeraldrapids.
21070
21071 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
21072
21073 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
21074 for meteorlake.
21075
21076 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
21077
21078 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
21079 default constructor to initialize it.
21080 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
21081 for last and iterate to handle recursive calls. Delete leftover
21082 candidates at the end.
21083 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
21084 on local clones.
21085 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
21086 gc_candidate bit when a clone is used.
21087
21088 2023-01-03 Florian Weimer <fweimer@redhat.com>
21089
21090 Revert:
21091 2023-01-02 Florian Weimer <fweimer@redhat.com>
21092
21093 * dwarf2cfi.cc (init_return_column_size): Remove.
21094 (init_one_dwarf_reg_size): Adjust.
21095 (generate_dwarf_reg_sizes): New function. Extracted
21096 from expand_builtin_init_dwarf_reg_sizes.
21097 (expand_builtin_init_dwarf_reg_sizes): Call
21098 generate_dwarf_reg_sizes.
21099 * target.def (init_dwarf_reg_sizes_extra): Adjust
21100 hook signature.
21101 * config/msp430/msp430.cc
21102 (msp430_init_dwarf_reg_sizes_extra): Adjust.
21103 * config/rs6000/rs6000.cc
21104 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
21105 * doc/tm.texi: Update.
21106
21107 2023-01-03 Florian Weimer <fweimer@redhat.com>
21108
21109 Revert:
21110 2023-01-02 Florian Weimer <fweimer@redhat.com>
21111
21112 * debug.h (dwarf_reg_sizes_constant): Declare.
21113 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
21114
21115 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
21116
21117 PR tree-optimization/105043
21118 * doc/extend.texi (Object Size Checking): Split out into two
21119 subsections and mention _FORTIFY_SOURCE.
21120
21121 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21122
21123 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
21124 RTL expansion to allow condition (mask) to be shared/reused,
21125 by avoiding overwriting pseudos and adding REG_EQUAL notes.
21126
21127 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21128
21129 PR target/108229
21130 * config/i386/i386-features.cc
21131 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
21132 the gain/cost of converting a MEM operand.
21133
21134 2023-01-03 Jakub Jelinek <jakub@redhat.com>
21135
21136 PR middle-end/108264
21137 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
21138 from source which doesn't have scalar integral mode first convert
21139 it to outer_mode.
21140
21141 2023-01-03 Jakub Jelinek <jakub@redhat.com>
21142
21143 PR rtl-optimization/108263
21144 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
21145 asm goto to EXIT.
21146
21147 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
21148
21149 PR target/87832
21150 * config/i386/lujiazui.md (lujiazui_div): New automaton.
21151 (lua_div): New unit.
21152 (lua_idiv_qi): Correct unit in the reservation.
21153 (lua_idiv_qi_load): Ditto.
21154 (lua_idiv_hi): Ditto.
21155 (lua_idiv_hi_load): Ditto.
21156 (lua_idiv_si): Ditto.
21157 (lua_idiv_si_load): Ditto.
21158 (lua_idiv_di): Ditto.
21159 (lua_idiv_di_load): Ditto.
21160 (lua_fdiv_SF): Ditto.
21161 (lua_fdiv_SF_load): Ditto.
21162 (lua_fdiv_DF): Ditto.
21163 (lua_fdiv_DF_load): Ditto.
21164 (lua_fdiv_XF): Ditto.
21165 (lua_fdiv_XF_load): Ditto.
21166 (lua_ssediv_SF): Ditto.
21167 (lua_ssediv_load_SF): Ditto.
21168 (lua_ssediv_V4SF): Ditto.
21169 (lua_ssediv_load_V4SF): Ditto.
21170 (lua_ssediv_V8SF): Ditto.
21171 (lua_ssediv_load_V8SF): Ditto.
21172 (lua_ssediv_SD): Ditto.
21173 (lua_ssediv_load_SD): Ditto.
21174 (lua_ssediv_V2DF): Ditto.
21175 (lua_ssediv_load_V2DF): Ditto.
21176 (lua_ssediv_V4DF): Ditto.
21177 (lua_ssediv_load_V4DF): Ditto.
21178
21179 2023-01-02 Florian Weimer <fweimer@redhat.com>
21180
21181 * debug.h (dwarf_reg_sizes_constant): Declare.
21182 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
21183
21184 2023-01-02 Florian Weimer <fweimer@redhat.com>
21185
21186 * dwarf2cfi.cc (init_return_column_size): Remove.
21187 (init_one_dwarf_reg_size): Adjust.
21188 (generate_dwarf_reg_sizes): New function. Extracted
21189 from expand_builtin_init_dwarf_reg_sizes.
21190 (expand_builtin_init_dwarf_reg_sizes): Call
21191 generate_dwarf_reg_sizes.
21192 * target.def (init_dwarf_reg_sizes_extra): Adjust
21193 hook signature.
21194 * config/msp430/msp430.cc
21195 (msp430_init_dwarf_reg_sizes_extra): Adjust.
21196 * config/rs6000/rs6000.cc
21197 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
21198 * doc/tm.texi: Update.
21199
21200 2023-01-02 Jakub Jelinek <jakub@redhat.com>
21201
21202 * gcc.cc (process_command): Update copyright notice dates.
21203 * gcov-dump.cc (print_version): Ditto.
21204 * gcov.cc (print_version): Ditto.
21205 * gcov-tool.cc (print_version): Ditto.
21206 * gengtype.cc (create_file): Ditto.
21207 * doc/cpp.texi: Bump @copying's copyright year.
21208 * doc/cppinternals.texi: Ditto.
21209 * doc/gcc.texi: Ditto.
21210 * doc/gccint.texi: Ditto.
21211 * doc/gcov.texi: Ditto.
21212 * doc/install.texi: Ditto.
21213 * doc/invoke.texi: Ditto.
21214
21215 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
21216 Uroš Bizjak <ubizjak@gmail.com>
21217
21218 * config/i386/i386.md (extendditi2): New define_insn.
21219 (define_split): Use DWIH mode iterator to treat new extendditi2
21220 identically to existing extendsidi2_1.
21221 (define_peephole2): Likewise.
21222 (define_peephole2): Likewise.
21223 (define_Split): Likewise.
21224
21225 \f
21226 Copyright (C) 2023 Free Software Foundation, Inc.
21227
21228 Copying and distribution of this file, with or without modification,
21229 are permitted in any medium without royalty provided the copyright
21230 notice and this notice are preserved.