1 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
3 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
4 avoid sign extension/undefined behaviour when setting each bit.
6 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
7 Uros Bizjak <ubizjak@gmail.com>
9 * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
10 Use new x86_stc instruction when the carry flag must be set.
11 * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
12 (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
13 * config/i386/i386.h (TARGET_SLOW_STC): New define.
14 * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
15 (x86_stc): New define_insn.
16 (define_peephole2): Convert x86_stc into alternate implementation
17 on pentium4 without -Os when a QImode register is available.
18 (*x86_cmc): New define_insn.
19 (define_peephole2): Convert *x86_cmc into alternate implementation
20 on pentium4 without -Os when a QImode register is available.
21 (*setccc): New define_insn_and_split for a no-op CCCmode move.
22 (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
23 recognize (and eliminate) the carry flag being copied to itself.
24 (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
25 * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
27 2023-06-07 Andrew Pinski <apinski@marvell.com>
29 * match.pd: Fix comment for the
30 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
32 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
33 Jeff Law <jlaw@ventanamicro.com>
35 * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
36 (rotrsi3_sext): Expose generator.
37 (rotlsi3 pattern): Hide generator.
38 * config/riscv/riscv-protos.h (riscv_emit_binary): New function
40 * config/riscv/riscv.cc (riscv_emit_binary): Removed static
41 * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
42 (mulsi3, <optab>si3): Likewise.
43 (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
44 (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
45 (<u>mulsidi3): Likewise.
46 (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
47 (mulsi3_extended, <optab>si3_extended): Likewise.
48 (splitter for shadd feeding divison): Update RTL pattern to account
49 for changes in how 32 bit ops are expanded for TARGET_64BIT.
50 * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
52 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
55 * config/riscv/riscv.cc (riscv_print_operand): Calculate
56 memmodel only when it is valid.
58 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
60 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
61 for constant element of a vector.
63 2023-06-07 Jakub Jelinek <jakub@redhat.com>
65 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
66 instead compare tree_nonzero_bits <= 1U rather than just == 1.
68 2023-06-07 Alex Coplan <alex.coplan@arm.com>
71 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
73 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
75 (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
76 setup if in_lto_p, just like we do for SVE.
77 * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
78 (__arm_st64b): Delete.
79 (__arm_st64bv): Delete.
80 (__arm_st64bv0): Delete.
82 2023-06-07 Alex Coplan <alex.coplan@arm.com>
85 * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
86 Use input operand for the destination address.
87 * config/aarch64/aarch64.md (st64b): Fix constraint on address
90 2023-06-07 Alex Coplan <alex.coplan@arm.com>
93 * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
94 Replace eight consecutive spaces with tabs.
95 (aarch64_init_ls64_builtins): Likewise.
96 (aarch64_expand_builtin_ls64): Likewise.
97 * config/aarch64/aarch64.md (ld64b): Likewise.
102 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
104 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
105 offset table pseudo to a general reg subset.
107 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
109 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
111 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
113 (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
114 (aarch64_sqxtun2<mode>_le): Likewise.
115 (aarch64_sqxtun2<mode>_be): Likewise.
116 (aarch64_sqxtun2<mode>): Adjust for the above.
117 (aarch64_sqmovun<mode>): New define_expand.
118 * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
119 (half_mask): New mode attribute.
120 * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
123 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
125 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
127 (aarch64_addp<mode>_insn): ... This...
128 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
129 (aarch64_addp<mode>): New define_expand.
131 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
133 * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
134 * config/riscv/riscv-v.cc
135 (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
137 (rvv_builder::single_step_npatterns_p): New function.
138 (rvv_builder::npatterns_all_equal_p): Ditto.
139 (const_vec_all_in_range_p): Support POLY handling.
140 (gen_const_vector_dup): Ditto.
141 (emit_vlmax_gather_insn): Add vrgatherei16.
142 (emit_vlmax_masked_gather_mu_insn): Ditto.
143 (expand_const_vector): Add VLA SLP const vector support.
144 (expand_vec_perm): Support POLY.
145 (struct expand_vec_perm_d): New struct.
146 (shuffle_generic_patterns): New function.
147 (expand_vec_perm_const_1): Ditto.
148 (expand_vec_perm_const): Ditto.
149 * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
150 (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
152 2023-06-07 Andrew Pinski <apinski@marvell.com>
155 * expr.cc (expand_single_bit_test): Handle
156 const_int from expand_expr.
158 2023-06-07 Andrew Pinski <apinski@marvell.com>
160 * expr.cc (do_store_flag): Rearrange the
161 TER code so that it overrides the nonzero bits
162 info if we had `a & POW2`.
164 2023-06-07 Andrew Pinski <apinski@marvell.com>
166 PR tree-optimization/110134
167 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
169 (-A CMP CST -> B CMP (-CST)): Likewise.
171 2023-06-07 Andrew Pinski <apinski@marvell.com>
173 PR tree-optimization/89263
174 PR tree-optimization/99069
175 PR tree-optimization/20083
176 PR tree-optimization/94898
177 * match.pd: Add patterns to optimize `a ? onezero : onezero` with
178 one of the operands are constant.
180 2023-06-07 Andrew Pinski <apinski@marvell.com>
182 * match.pd (zero_one_valued_p): Match 0 integer constant
185 2023-06-07 Pan Li <pan2.li@intel.com>
187 * config/riscv/riscv-vector-builtins-types.def
188 (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
189 (vfloat32m1_t): Ditto.
190 (vfloat32m2_t): Ditto.
191 (vfloat32m4_t): Ditto.
192 (vfloat32m8_t): Ditto.
193 (vint16mf4_t): Ditto.
194 (vint16mf2_t): Ditto.
199 (vuint16mf4_t): Ditto.
200 (vuint16mf2_t): Ditto.
201 (vuint16m1_t): Ditto.
202 (vuint16m2_t): Ditto.
203 (vuint16m4_t): Ditto.
204 (vuint16m8_t): Ditto.
205 (vint32mf2_t): Ditto.
210 (vuint32mf2_t): Ditto.
211 (vuint32m1_t): Ditto.
212 (vuint32m2_t): Ditto.
213 (vuint32m4_t): Ditto.
214 (vuint32m8_t): Ditto.
216 2023-06-07 Jason Merrill <jason@redhat.com>
219 * doc/invoke.texi: Document it.
221 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
223 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
224 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
225 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
226 NOT (BITREVERSE x) as BITREVERSE (NOT x).
227 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
228 Optimize PARITY (BITREVERSE x) as PARITY x.
229 Optimize BITREVERSE (BITREVERSE x) as x.
230 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
231 BITREVERSE of a constant integer at compile-time.
232 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
233 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
234 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
235 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
236 Optimize COPYSIGN (x, ABS y) as ABS x.
237 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
238 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
239 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
240 arguments at compile-time.
242 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
244 * rtl.h (function_invariant_p): Change return type from int to bool.
245 * reload1.cc (function_invariant_p): Change return type from
246 int to bool and adjust function body accordingly.
248 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
250 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
251 (*single_<optab>mult_plus<mode>): Ditto.
252 (*double_<optab>mult_plus<mode>): Ditto.
253 (*sign_zero_extend_fma): Ditto.
254 (*zero_sign_extend_fma): Ditto.
255 * config/riscv/riscv-protos.h (enum insn_type): New enum.
257 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
258 Tobias Burnus <tobias@codesourcery.com>
260 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
261 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
263 (omp_get_attachment): Handle map clauses with 'present' modifier.
264 (omp_group_base): Likewise.
265 (gimplify_scan_omp_clauses): Reorder present maps to come first.
266 Set GOVD flags for present defaultmaps.
267 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
268 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
270 (lower_omp_target): Handle map clauses with 'present' modifier.
271 Handle 'to' and 'from' clauses with 'present'.
272 * tree-core.h (enum omp_clause_defaultmap_kind): Add
273 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
274 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
275 'from' clauses with 'present' modifier. Handle present defaultmap.
276 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
278 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
280 * config/rs6000/genfusion.pl: Delete some dead code.
282 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
284 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
286 (gen_ld_cmpi_p10): ... this.
288 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
291 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
292 duplicate expression.
294 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
296 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
297 Handle unsigned reduc_plus_scal_ builtins.
298 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
299 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
300 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
301 __builtin_aarch64_reduc_plus_scal_v2di.
302 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
304 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
306 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
307 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
308 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
310 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
312 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
313 (aarch64_shrn<mode>_insn_be): Delete.
314 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
315 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
316 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
317 (aarch64_rshrn<mode>_insn_le): Delete.
318 (aarch64_rshrn<mode>_insn_be): Delete.
319 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
320 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
322 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
324 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
326 (aarch64_pars_overlap_p): Likewise.
327 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
328 Express in terms of UNSPEC_ADDV.
329 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
330 (*aarch64_<su>addlv<mode>_reduction): Define.
331 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
332 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
333 (aarch64_pars_overlap_p): Likewise.
334 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
335 (VQUADW): New mode attribute.
336 (VWIDE2X_S): Likewise.
338 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
339 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
341 2023-06-06 Richard Biener <rguenther@suse.de>
344 * gimplify.cc (gimplify_target_expr): Do not emit
345 CLOBBERs for variables which have static storage duration
346 after gimplifying their initializers.
348 2023-06-06 Richard Biener <rguenther@suse.de>
350 PR tree-optimization/109143
351 * tree-ssa-structalias.cc (solution_set_expand): Avoid
352 one bitmap iteration and optimize bit range setting.
354 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
357 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
358 XVECEXP, not XEXP, to access first item of a PARALLEL.
360 2023-06-06 Pan Li <pan2.li@intel.com>
362 * config/riscv/riscv-vector-builtins-types.def
363 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
364 (vfloat16mf2_t): Likewise.
365 (vfloat16m1_t): Likewise.
366 (vfloat16m2_t): Likewise.
367 (vfloat16m4_t): Likewise.
368 (vfloat16m8_t): Likewise.
369 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
370 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
372 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
374 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
375 for cfi reg/mem machmode
376 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
378 2023-06-06 Li Xu <xuli1@eswincomputing.com>
380 * config/riscv/vector-iterators.md:
381 Fix 'REQUIREMENT' for machine_mode 'MODE'.
382 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
383 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
384 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
386 2023-06-06 Pan Li <pan2.li@intel.com>
388 * config/riscv/vector-iterators.md: Fix typo in mode attr.
390 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
391 Joel Hutton <joel.hutton@arm.com>
393 * doc/generic.texi: Remove old tree codes.
394 * expr.cc (expand_expr_real_2): Remove old tree code cases.
395 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
396 * optabs-tree.cc (optab_for_tree_code): Likewise.
397 (supportable_half_widening_operation): Likewise.
398 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
399 * tree-inline.cc (estimate_operator_cost): Likewise.
400 (op_symbol_code): Likewise.
401 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
402 (vect_analyze_data_ref_accesses): Likewise.
403 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
404 * cfgexpand.cc (expand_debug_expr): Likewise.
405 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
406 (supportable_widening_operation): Likewise.
407 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
409 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
410 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
411 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
412 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
413 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
414 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
415 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
416 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
418 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
419 Joel Hutton <joel.hutton@arm.com>
420 Tamar Christina <tamar.christina@arm.com>
422 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
424 (vec_widen_<su>add_lo_<mode>): ... to this.
425 (vec_widen_<su>addl_hi_<mode>): Rename this ...
426 (vec_widen_<su>add_hi_<mode>): ... to this.
427 (vec_widen_<su>subl_lo_<mode>): Rename this ...
428 (vec_widen_<su>sub_lo_<mode>): ... to this.
429 (vec_widen_<su>subl_hi_<mode>): Rename this ...
430 (vec_widen_<su>sub_hi_<mode>): ...to this.
431 * doc/generic.texi: Document new IFN codes.
432 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
433 (commutative_binary_fn_p): Add widen_plus fn's.
434 (widening_fn_p): New function.
435 (narrowing_fn_p): New function.
436 (direct_internal_fn_optab): Change visibility.
437 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
438 internal_fn that expands into multiple internal_fns for widening.
439 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
440 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
441 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
442 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
443 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
444 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
445 (lookup_hilo_internal_fn): Likewise.
446 (widening_fn_p): Likewise.
447 (Narrowing_fn_p): Likewise.
448 * optabs.cc (commutative_optab_p): Add widening plus optabs.
449 * optabs.def (OPTAB_D): Define widen add, sub optabs.
450 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
451 patterns with a hi/lo or even/odd split.
452 (vect_recog_sad_pattern): Refactor to use new IFN codes.
453 (vect_recog_widen_plus_pattern): Likewise.
454 (vect_recog_widen_minus_pattern): Likewise.
455 (vect_recog_average_pattern): Likewise.
456 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
458 (supportable_widening_operation): Likewise.
459 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
461 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
462 Joel Hutton <joel.hutton@arm.com>
464 * tree-vect-patterns.cc: Add include for gimple-iterator.
465 (vect_recog_widen_op_pattern): Refactor to use code_helper.
466 (vect_gimple_build): New function.
467 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
469 (vectorizable_call): Likewise.
470 (vect_gen_widened_results_half): Likewise.
471 (vect_create_vectorized_demotion_stmts): Likewise.
472 (vect_create_vectorized_promotion_stmts): Likewise.
473 (vect_create_half_widening_stmts): Likewise.
474 (vectorizable_conversion): Likewise.
475 (supportable_widening_operation): Likewise.
476 (supportable_narrowing_operation): Likewise.
477 * tree-vectorizer.h (supportable_widening_operation): Change
478 prototype to use code_helper.
479 (supportable_narrowing_operation): Likewise.
480 (vect_gimple_build): New function prototype.
481 * tree.h (code_helper::safe_as_tree_code): New function.
482 (code_helper::safe_as_fn_code): New function.
484 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
486 * wide-int.cc (wi::bitreverse_large): New function implementing
487 bit reversal of an integer.
488 * wide-int.h (wi::bitreverse): New (template) function prototype.
489 (bitreverse_large): Prototype helper function/implementation.
490 (wi::bitreverse): New template wrapper around bitreverse_large.
492 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
494 * rtl.h (print_rtl_single): Change return type from int to void.
495 (print_rtl_single_with_indent): Ditto.
496 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
497 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
498 (rtx_writer::print_rtx_operand_code_0): Ditto.
499 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
500 (rtx_writer::print_rtx_operand_code_i): Ditto.
501 (rtx_writer::print_rtx_operand_code_u): Ditto.
502 (rtx_writer::print_rtx_operand): Ditto.
503 (rtx_writer::print_rtx): Ditto.
504 (rtx_writer::finish_directive): Ditto.
505 (print_rtl_single): Change return type from int to void
506 and adjust function body accordingly.
507 (rtx_writer::print_rtl_single_with_indent): Ditto.
509 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
511 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
512 (reg_class_subset_p): Ditto.
513 * reginfo.cc (reg_classes_intersect_p): Ditto.
514 (reg_class_subset_p): Ditto.
516 2023-06-05 Pan Li <pan2.li@intel.com>
518 * config/riscv/riscv-vector-builtins-types.def
519 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
520 (vfloat32m1_t): Ditto.
521 (vfloat32m2_t): Ditto.
522 (vfloat32m4_t): Ditto.
523 (vfloat32m8_t): Ditto.
524 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
525 (vint16mf2_t): Ditto.
530 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
531 (vuint16mf2_t): Ditto.
532 (vuint16m1_t): Ditto.
533 (vuint16m2_t): Ditto.
534 (vuint16m4_t): Ditto.
535 (vuint16m8_t): Ditto.
536 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
541 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
542 (vuint32m1_t): Ditto.
543 (vuint32m2_t): Ditto.
544 (vuint32m4_t): Ditto.
545 (vuint32m8_t): Ditto.
546 * config/riscv/vector-iterators.md: Add FP=16 support for V,
547 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
549 2023-06-05 Andrew Pinski <apinski@marvell.com>
552 * Makefile.in (clean): Remove the removing of
553 MULTILIB_DIR/MULTILIB_OPTIONS directories.
555 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
557 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
559 * config/mips/mips.cc (speculation_barrier_libfunc): New static
561 (mips_init_libfuncs): Initialize it.
562 (mips_emit_speculation_barrier): New function.
563 * config/mips/mips.md (speculation_barrier): Call
564 mips_emit_speculation_barrier.
566 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
568 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
569 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
570 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
571 (rvv_builder::get_merged_repeating_sequence): Ditto.
572 (rvv_builder::get_merge_scalar_mask): Ditto.
573 (emit_scalar_move_insn): Ditto.
574 (emit_vlmax_integer_move_insn): Ditto.
575 (emit_nonvlmax_integer_move_insn): Ditto.
576 (emit_vlmax_gather_insn): Ditto.
577 (emit_vlmax_masked_gather_mu_insn): Ditto.
578 (get_repeating_sequence_dup_machine_mode): Ditto.
580 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
582 * config/riscv/autovec.md: Split arguments.
583 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
584 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
586 2023-06-04 Andrew Pinski <apinski@marvell.com>
588 * expr.cc (do_store_flag): Improve for single bit testing
589 not against zero but against that single bit.
591 2023-06-04 Andrew Pinski <apinski@marvell.com>
593 * expr.cc (do_store_flag): Extend the one bit checking case
594 to handle the case where we don't have an and but rather still
595 one bit is known to be non-zero.
597 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
599 * config/h8300/constraints.md (Zz): Make this a normal
601 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
602 * config/h8300/logical.md (H8/SX bit patterns): Remove.
604 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
606 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
607 New insn_and_split patterns.
609 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
612 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
613 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
614 (@vlmul_extx4<mode>): Ditto.
615 (@vlmul_extx8<mode>): Ditto.
616 (@vlmul_extx16<mode>): Ditto.
617 (@vlmul_extx32<mode>): Ditto.
618 (@vlmul_extx64<mode>): Ditto.
619 (*vlmul_extx2<mode>): Ditto.
620 (*vlmul_extx4<mode>): Ditto.
621 (*vlmul_extx8<mode>): Ditto.
622 (*vlmul_extx16<mode>): Ditto.
623 (*vlmul_extx32<mode>): Ditto.
624 (*vlmul_extx64<mode>): Ditto.
626 2023-06-04 Pan Li <pan2.li@intel.com>
628 * config/riscv/riscv-vector-builtins-types.def
629 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
630 (vfloat32m1_t): Likewise.
631 (vfloat32m2_t): Likewise.
632 (vfloat32m4_t): Likewise.
633 (vfloat32m8_t): Likewise.
634 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
635 * config/riscv/vector-iterators.md: Add single to half machine
638 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
640 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
641 (*n<optab><mode>): Ditto.
642 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
643 (*n<optab><mode>): Ditto.
644 * config/riscv/vector.md: Ditto.
646 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
649 * config/i386/i386-features.cc (scalar_chain::convert_compare):
650 Update or delete REG_EQUAL notes, converting CONST_INT and
651 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
653 2023-06-04 Jason Merrill <jason@redhat.com>
656 * tree-eh.cc (lower_resx): Pass the exception pointer to the
658 * except.h: Tweak comment.
660 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
662 * postreload.cc (move2add_use_add2_insn): Handle
663 trivial single_sets. Rename variable PAT to SET.
664 (move2add_use_add3_insn, reload_cse_move2add): Similar.
666 2023-06-04 Pan Li <pan2.li@intel.com>
668 * config/riscv/riscv-vector-builtins-types.def
669 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
670 (vfloat16mf2_t): Likewise.
671 (vfloat16m1_t): Likewise.
672 (vfloat16m2_t): Likewise.
673 (vfloat16m4_t): Likewise.
674 (vfloat16m8_t): Likewise.
675 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
676 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
677 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
678 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
681 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
683 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
686 2023-06-03 Die Li <lidie@eswincomputing.com>
688 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
690 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
692 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
694 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
696 * config/riscv/vector.md: Add vector-opt.md.
697 * config/riscv/autovec-opt.md: New file.
699 2023-06-03 liuhongt <hongtao.liu@intel.com>
701 PR tree-optimization/110067
702 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
703 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
705 2023-06-03 liuhongt <hongtao.liu@intel.com>
708 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
709 (truncv2si<mode>2): Ditto.
711 2023-06-02 Andrew Pinski <apinski@marvell.com>
713 PR rtl-optimization/102733
714 * dse.cc (store_info): Add addrspace field.
715 (record_store): Record the address space
716 and check to make sure they are the same.
718 2023-06-02 Andrew Pinski <apinski@marvell.com>
720 PR rtl-optimization/110042
721 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
722 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
724 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
727 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
728 Make sure that we do not have a cap on field alignment before altering
729 the struct layout based on the type alignment of the first entry.
731 2023-06-02 David Faust <david.faust@oracle.com>
734 * btfout.cc (btf_absolute_func_id): New function.
735 (btf_asm_func_type): Call it here. Change index parameter from
736 size_t to ctf_id_t. Use PRIu64 formatter.
738 2023-06-02 Alex Coplan <alex.coplan@arm.com>
740 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
741 (btf_asm_datasec_type): Likewise.
743 2023-06-02 Carl Love <cel@us.ibm.com>
745 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
746 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
748 2023-06-02 Jason Merrill <jason@redhat.com>
752 * tree.h (DECL_MERGEABLE): New.
753 * tree-core.h (struct tree_decl_common): Mention it.
754 * gimplify.cc (gimplify_init_constructor): Check it.
755 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
756 * varasm.cc (categorize_decl_for_section): Likewise.
758 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
760 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
761 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
762 (stack_regs_mentioned_p): Change return type from int to bool
763 and adjust function body accordingly.
764 (stack_regs_mentioned): Ditto.
765 (check_asm_stack_operands): Ditto. Change "malformed_asm"
767 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
768 (swap_rtx_condition_1): Change return type from int to bool
769 and adjust function body accordingly. Change "r" variable to bool.
770 (swap_rtx_condition): Change return type from int to bool
771 and adjust function body accordingly.
772 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
773 (subst_stack_regs): Ditto.
774 (convert_regs_entry): Change return type from int to bool and adjust
775 function body accordingly. Change "inserted" variable to bool.
776 (convert_regs_1): Recode handling of control_flow_insn_deleted.
777 (convert_regs_2): Recode handling of cfg_altered.
778 (convert_regs): Ditto. Change "inserted" variable to bool.
780 2023-06-02 Jason Merrill <jason@redhat.com>
783 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
784 (initializer_constant_valid_p_1): Compare float precision.
786 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
788 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
791 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
793 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
794 (vect_set_loop_condition_partial_vectors): Ditto.
796 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
799 * config/avr/avr.md: Add an RTL peephole to optimize operations on
800 non-LD_REGS after a move from LD_REGS.
801 (piaop): New code iterator.
803 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
806 * doc/install.texi: Document (optional) Perl usage for parallel
809 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
812 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
815 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
816 KuanLin Chen <best124612@gmail.com>
818 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
819 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
821 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
823 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
825 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
827 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
829 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
831 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
833 (DEF_RVV_FRM_ENUM): Ditto.
835 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
837 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
838 intrinsic API expander
839 * config/riscv/vector.md
840 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
841 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
842 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
844 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
846 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
847 * config/riscv/predicates.md (vector_perm_operand): New predicate.
848 * config/riscv/riscv-protos.h (enum insn_type): New enum.
849 (expand_vec_perm): New function.
850 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
851 (gen_const_vector_dup): Ditto.
852 (emit_vlmax_gather_insn): Ditto.
853 (emit_vlmax_masked_gather_mu_insn): Ditto.
854 (expand_vec_perm): Ditto.
856 2023-06-01 Jason Merrill <jason@redhat.com>
858 * doc/invoke.texi (-Wpedantic): Improve clarity.
860 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
862 * rtl.h (exp_equiv_p): Change return type from int to bool.
863 * cse.cc (mention_regs): Change return type from int to bool
864 and adjust function body accordingly.
865 (exp_equiv_p): Ditto.
866 (insert_regs): Ditto. Change "modified" function argument to bool
867 and update usage accordingly.
868 (record_jump_cond): Remove always zero "reversed_nonequality"
869 function argument and update usage accordingly.
870 (fold_rtx): Change "changed" variable to bool.
871 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
872 (is_dead_reg): Change return type from int to bool.
874 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
876 * config/xtensa/xtensa.md (adddi3, subdi3):
877 New RTL generation patterns implemented according to the instruc-
878 tion idioms described in the Xtensa ISA reference manual (p. 600).
880 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
881 Uros Bizjak <ubizjak@gmail.com>
884 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
885 CODE_for_sse4_1_ptestzv2di.
886 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
887 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
888 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
889 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
890 when expanding UNSPEC_PTEST to compare against zero.
891 * config/i386/i386-features.cc (scalar_chain::convert_compare):
892 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
893 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
894 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
895 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
896 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
897 check for suitable matching modes for the UNSPEC_PTEST pattern.
898 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
899 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
900 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
901 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
902 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
903 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
904 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
906 (*ptest<mode>_and): Specify CCZ to only perform this optimization
907 when only the Z flag is required.
909 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
912 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
914 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
916 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
917 Add =r,m and =r,m alternatives.
918 (load_pair<DREG:mode><DREG2:mode>): Likewise.
919 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
921 2023-06-01 Pan Li <pan2.li@intel.com>
923 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
925 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
926 (main): Disable FP16 tuple.
927 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
928 (TARGET_VECTOR_ELEN_FP_16): Ditto.
929 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
931 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
932 (vfloat16mf2_t): Ditto.
933 (vfloat16m1_t): Ditto.
934 (vfloat16m2_t): Ditto.
935 (vfloat16m4_t): Ditto.
936 (vfloat16m8_t): Ditto.
937 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
939 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
940 machine mode based on TARGET_VECTOR_ELEN_FP_16.
942 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
944 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
945 (DEF_RVV_FRM_ENUM): New macro.
946 (handle_pragma_vector): Add FRM enum
947 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
954 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
955 Richard Sandiford <richard.sandiford@arm.com>
957 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
958 Update call to wi::bswap.
959 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
960 Update call to wi::bswap.
961 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
962 Update calls to wi::bswap.
963 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
964 (wi::bswap_large): New function, with revised API.
965 * wide-int.h (wi::bswap): New (template) function prototype.
966 (wide_int_storage::bswap): Remove method.
967 (sext_large, zext_large): Consistent indentation/line wrapping.
968 (bswap_large): Prototype helper function containing implementation.
969 (wi::bswap): New template wrapper around bswap_large.
971 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
974 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
975 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
976 (usdot_prod<vsi2qi>): Rename to...
977 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
978 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
979 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
980 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
981 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
982 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
983 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
986 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
989 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
990 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
991 (aarch64_sq<r>dmulh_n<mode>): Rename to...
992 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
993 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
994 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
995 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
996 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
997 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
998 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
999 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
1000 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
1001 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
1002 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
1004 2023-05-31 David Faust <david.faust@oracle.com>
1006 * btfout.cc (btf_kind_names): New.
1007 (btf_kind_name): New.
1008 (btf_absolute_var_id): New utility function.
1009 (btf_relative_var_id): Likewise.
1010 (btf_relative_func_id): Likewise.
1011 (btf_absolute_datasec_id): Likewise.
1012 (btf_asm_type_ref): New.
1013 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
1014 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
1015 (btf_asm_varent): Likewise.
1016 (btf_asm_func_arg): Likewise.
1017 (btf_asm_datasec_entry): Likewise.
1018 (btf_asm_datasec_type): Likewise.
1019 (btf_asm_func_type): Likewise. Add index parameter.
1020 (btf_asm_enum_const): Likewise.
1021 (btf_asm_sou_member): Likewise.
1022 (output_btf_vars): Update btf_asm_* call accordingly.
1023 (output_asm_btf_sou_fields): Likewise.
1024 (output_asm_btf_enum_list): Likewise.
1025 (output_asm_btf_func_args_list): Likewise.
1026 (output_asm_btf_vlen_bytes): Likewise.
1027 (output_btf_func_types): Add ctf_container_ref parameter.
1028 Pass it to btf_asm_func_type.
1029 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
1030 (btf_output): Update output_btf_func_types call similarly.
1032 2023-05-31 David Faust <david.faust@oracle.com>
1034 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
1035 and BTF_KIND_FWD which do not use the size/type field at all.
1037 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
1039 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
1040 (active_insn_p): Ditto.
1041 (in_sequence_p): Ditto.
1042 (unshare_all_rtl): Change return type from int to void.
1043 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
1044 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
1045 and adjust function body accordingly.
1046 (mem_expr_equal_p): Ditto.
1047 (unshare_all_rtl): Change return type from int to void
1048 and adjust function body accordingly.
1049 (verify_rtx_sharing): Remove unneeded return.
1050 (active_insn_p): Change return type from int to bool
1051 and adjust function body accordingly.
1052 (in_sequence_p): Ditto.
1054 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
1056 * rtl.h (true_dependence): Change return type from int to bool.
1057 (canon_true_dependence): Ditto.
1058 (read_dependence): Ditto.
1059 (anti_dependence): Ditto.
1060 (canon_anti_dependence): Ditto.
1061 (output_dependence): Ditto.
1062 (canon_output_dependence): Ditto.
1063 (may_alias_p): Ditto.
1064 * alias.h (alias_sets_conflict_p): Ditto.
1065 (alias_sets_must_conflict_p): Ditto.
1066 (objects_must_conflict_p): Ditto.
1067 (nonoverlapping_memrefs_p): Ditto.
1068 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
1069 (record_set): Ditto.
1070 (base_alias_check): Ditto.
1071 (find_base_value): Ditto.
1072 (mems_in_disjoint_alias_sets_p): Ditto.
1073 (get_alias_set_entry): Ditto.
1074 (decl_for_component_ref): Ditto.
1075 (write_dependence_p): Ditto.
1076 (memory_modified_1): Ditto.
1077 (mems_in_disjoint_alias_set_p): Change return type from int to bool
1078 and adjust function body accordingly.
1079 (alias_sets_conflict_p): Ditto.
1080 (alias_sets_must_conflict_p): Ditto.
1081 (objects_must_conflict_p): Ditto.
1082 (rtx_equal_for_memref_p): Ditto.
1083 (base_alias_check): Ditto.
1084 (read_dependence): Ditto.
1085 (nonoverlapping_memrefs_p): Ditto.
1086 (true_dependence_1): Ditto.
1087 (true_dependence): Ditto.
1088 (canon_true_dependence): Ditto.
1089 (write_dependence_p): Ditto.
1090 (anti_dependence): Ditto.
1091 (canon_anti_dependence): Ditto.
1092 (output_dependence): Ditto.
1093 (canon_output_dependence): Ditto.
1094 (may_alias_p): Ditto.
1095 (init_alias_analysis): Change "changed" variable to bool.
1097 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1099 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
1100 expand into define_insn_and_split.
1102 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1104 * config/riscv/vector.md: Remove FRM.
1106 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1108 * config/riscv/vector.md: Remove FRM.
1110 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1112 * config/riscv/vector.md: Remove FRM.
1114 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
1117 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
1120 2023-05-31 Richard Biener <rguenther@suse.de>
1123 PR tree-optimization/109143
1124 * tree-ssa-structalias.cc (struct topo_info): Remove.
1125 (init_topo_info): Likewise.
1126 (free_topo_info): Likewise.
1127 (compute_topo_order): Simplify API, put the component
1128 with ESCAPED last so it's processed first.
1129 (topo_visit): Adjust.
1130 (solve_graph): Likewise.
1132 2023-05-31 Richard Biener <rguenther@suse.de>
1134 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
1136 (add_graph_edge): Count redundant edges we avoid to create.
1137 (dump_sa_stats): Dump them.
1138 (ipa_pta_execute): Do not dump generating constraints when
1139 we are not dumping them.
1141 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1143 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
1144 output template to avoid explicit switch on which_alternative.
1145 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
1146 (and<mode>3): Likewise.
1147 (ior<mode>3): Likewise.
1148 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
1150 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1152 * config/xtensa/predicates.md (xtensa_bit_join_operator):
1154 * config/xtensa/xtensa.md (ior_op): Remove.
1155 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
1156 insn_and_split pattern of the same name to express and capture
1157 the bit-combining operation with both sides swapped.
1158 In addition, replace use of code iterator with new operator
1160 (*shlrd_const, *shlrd_per_byte):
1161 Likewise regarding the code iterator.
1163 2023-05-31 Cui, Lili <lili.cui@intel.com>
1165 PR tree-optimization/110038
1166 * params.opt: Add a limit on tree-reassoc-width.
1167 * tree-ssa-reassoc.cc
1168 (rewrite_expr_tree_parallel): Add width limit.
1170 2023-05-31 Pan Li <pan2.li@intel.com>
1172 * common/config/riscv/riscv-common.cc:
1173 (riscv_implied_info): Add zvfh item.
1174 (riscv_ext_version_table): Ditto.
1175 (riscv_ext_flag_table): Ditto.
1176 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
1177 (TARGET_ZVFH): Ditto.
1179 2023-05-30 liuhongt <hongtao.liu@intel.com>
1181 PR tree-optimization/108804
1182 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
1183 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
1184 Add new parameter narrow_src_p.
1185 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
1186 vectorization by truncating to lower precision.
1187 * tree-vectorizer.h (vect_get_range_info): New declare.
1189 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
1191 * lra-int.h (lra_update_sp_offset): Add the prototype.
1192 * lra.cc (setup_sp_offset): Change the return type. Use
1193 lra_update_sp_offset.
1194 * lra-eliminations.cc (lra_update_sp_offset): New function.
1195 (lra_process_new_insns): Push the current insn to reprocess if the
1196 input reload changes sp offset.
1198 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
1201 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
1202 Fix misleading identation.
1204 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
1206 * rtl.h (comparison_dominates_p): Change return type from int to bool.
1207 (condjump_p): Ditto.
1208 (any_condjump_p): Ditto.
1209 (any_uncondjump_p): Ditto.
1210 (simplejump_p): Ditto.
1211 (returnjump_p): Ditto.
1212 (eh_returnjump_p): Ditto.
1213 (onlyjump_p): Ditto.
1214 (invert_jump_1): Ditto.
1215 (invert_jump): Ditto.
1216 (rtx_renumbered_equal_p): Ditto.
1217 (redirect_jump_1): Ditto.
1218 (redirect_jump): Ditto.
1219 (condjump_in_parallel_p): Ditto.
1220 * jump.cc (invert_exp_1): Adjust forward declaration.
1221 (comparison_dominates_p): Change return type from int to bool
1222 and adjust function body accordingly.
1223 (simplejump_p): Ditto.
1224 (condjump_p): Ditto.
1225 (condjump_in_parallel_p): Ditto.
1226 (any_uncondjump_p): Ditto.
1227 (any_condjump_p): Ditto.
1228 (returnjump_p): Ditto.
1229 (eh_returnjump_p): Ditto.
1230 (onlyjump_p): Ditto.
1231 (redirect_jump_1): Ditto.
1232 (redirect_jump): Ditto.
1233 (invert_exp_1): Ditto.
1234 (invert_jump_1): Ditto.
1235 (invert_jump): Ditto.
1236 (rtx_renumbered_equal_p): Ditto.
1238 2023-05-30 Andrew Pinski <apinski@marvell.com>
1240 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
1241 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
1242 Add ne as a possible cmp.
1243 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
1245 2023-05-30 Andrew Pinski <apinski@marvell.com>
1247 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
1250 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
1252 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
1253 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
1254 (and (extend X) C) as (zero_extend (and X C)), to also optimize
1255 modes wider than HOST_WIDE_INT.
1257 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
1260 * simplify-rtx.cc (simplify_const_relational_operation): Return
1261 early if we have a MODE_CC comparison that isn't a COMPARE against
1264 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
1266 * config/riscv/riscv.cc (riscv_const_insns): Allow
1267 const_vec_duplicates.
1269 2023-05-30 liuhongt <hongtao.liu@intel.com>
1271 PR middle-end/108938
1272 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
1273 function, cut from original find_bswap_or_nop function.
1274 (find_bswap_or_nop): Add a new parameter, detect bswap +
1275 rotate and save rotate result in the new parameter.
1276 (bswap_replace): Add a new parameter to indicate rotate and
1277 generate rotate stmt if needed.
1278 (maybe_optimize_vector_constructor): Adjust for new rotate
1279 parameter in the upper 2 functions.
1280 (pass_optimize_bswap::execute): Ditto.
1281 (imm_store_chain_info::output_merged_store): Ditto.
1283 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1285 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
1286 (aarch64_<su>adalp<mode>): New define_expand.
1287 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
1288 (aarch64_<su>addlp<mode>): Convert to define_expand.
1289 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
1290 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
1292 (USADDLP): Likewise.
1293 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
1295 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1297 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
1298 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
1299 srhadd, urhadd builtin codes for standard optab ones.
1300 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
1301 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
1303 (<u>avg<mode>3_ceil): Rename to...
1304 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
1306 (aarch64_<su>hsub<mode>): New define_expand.
1307 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
1308 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
1309 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
1311 2023-05-30 Andreas Schwab <schwab@suse.de>
1314 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
1317 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1319 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
1320 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
1322 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
1323 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
1324 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
1325 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
1326 (aarch64_<sra_op>sra_n<mode>): New define_expand.
1327 (aarch64_<sra_op>rsra_n<mode>): Likewise.
1328 (aarch64_<sur>sra_n<mode>): Rename to...
1329 (aarch64_<sur>sra_ndi): ... This.
1330 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
1331 any_target_p argument.
1332 (aarch64_extract_vec_duplicate_wide_int): Define.
1333 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
1334 (aarch64_const_vec_rnd_cst_p): Likewise.
1335 (aarch64_vector_mode_supported_any_target_p): Likewise.
1336 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
1337 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
1338 (VSRA): Adjust for the above.
1340 (V2XWIDE): New mode_attr.
1341 (vec_or_offset): Likewise.
1342 (SHIFTEXTEND): Likewise.
1343 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
1345 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
1346 clarify that it applies to current target options.
1347 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
1348 * doc/tm.texi.in: Regenerate.
1349 * stor-layout.cc (mode_for_vector): Check
1350 vector_mode_supported_any_target_p when iterating through vector modes.
1351 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
1352 clarify that it applies to current target options.
1353 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
1355 2023-05-30 Lili Cui <lili.cui@intel.com>
1357 PR tree-optimization/98350
1358 * tree-ssa-reassoc.cc
1359 (rewrite_expr_tree_parallel): Rewrite this function.
1360 (rank_ops_for_fma): New.
1361 (reassociate_bb): Handle new function.
1363 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
1365 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
1366 (rtx_unstable_p): Ditto.
1367 (reg_mentioned_p): Ditto.
1368 (reg_referenced_p): Ditto.
1369 (reg_used_between_p): Ditto.
1370 (reg_set_between_p): Ditto.
1371 (modified_between_p): Ditto.
1372 (no_labels_between_p): Ditto.
1373 (modified_in_p): Ditto.
1375 (multiple_sets): Ditto.
1376 (set_noop_p): Ditto.
1377 (noop_move_p): Ditto.
1378 (reg_overlap_mentioned_p): Ditto.
1379 (dead_or_set_p): Ditto.
1380 (dead_or_set_regno_p): Ditto.
1381 (find_reg_fusage): Ditto.
1382 (find_regno_fusage): Ditto.
1383 (side_effects_p): Ditto.
1384 (volatile_refs_p): Ditto.
1385 (volatile_insn_p): Ditto.
1386 (may_trap_p_1): Ditto.
1387 (may_trap_p): Ditto.
1388 (may_trap_or_fault_p): Ditto.
1389 (computed_jump_p): Ditto.
1390 (auto_inc_p): Ditto.
1391 (loc_mentioned_in_p): Ditto.
1392 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
1393 (rtx_unstable_p): Change return type from int to bool
1394 and adjust function body accordingly.
1395 (rtx_addr_can_trap_p): Ditto.
1396 (reg_mentioned_p): Ditto.
1397 (no_labels_between_p): Ditto.
1398 (reg_used_between_p): Ditto.
1399 (reg_referenced_p): Ditto.
1400 (reg_set_between_p): Ditto.
1402 (modified_between_p): Ditto.
1403 (modified_in_p): Ditto.
1404 (multiple_sets): Ditto.
1405 (set_noop_p): Ditto.
1406 (noop_move_p): Ditto.
1407 (reg_overlap_mentioned_p): Ditto.
1408 (dead_or_set_p): Ditto.
1409 (dead_or_set_regno_p): Ditto.
1410 (find_reg_fusage): Ditto.
1411 (find_regno_fusage): Ditto.
1412 (remove_node_from_insn_list): Ditto.
1413 (volatile_insn_p): Ditto.
1414 (volatile_refs_p): Ditto.
1415 (side_effects_p): Ditto.
1416 (may_trap_p_1): Ditto.
1417 (may_trap_p): Ditto.
1418 (may_trap_or_fault_p): Ditto.
1419 (computed_jump_p): Ditto.
1420 (auto_inc_p): Ditto.
1421 (loc_mentioned_in_p): Ditto.
1422 * combine.cc (can_combine_p): Update indirect function.
1424 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1426 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
1427 * config/riscv/iterators.md: New attribute.
1428 * config/riscv/vector-iterators.md: New attribute.
1430 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
1432 * config/riscv/riscv.md: Fix signed and unsigned comparison
1435 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1437 * config/riscv/autovec.md (fnma<mode>4): New pattern.
1438 (*fnma<mode>): Ditto.
1440 2023-05-29 Die Li <lidie@eswincomputing.com>
1442 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
1444 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
1445 process for TARGET_XTHEADCONDMOV
1447 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
1450 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
1451 TARGET_AVX512BW to generate truncv16hiv16qi2.
1453 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
1455 * config/riscv/riscv.md (and<mode>3): New expander.
1456 (*and<mode>3) New pattern.
1457 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
1460 2023-05-29 Pan Li <pan2.li@intel.com>
1462 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
1463 comments and rename local variables.
1464 (emit_nonvlmax_insn): Diito.
1465 (emit_vlmax_merge_insn): Ditto.
1466 (emit_vlmax_cmp_insn): Ditto.
1467 (emit_vlmax_cmp_mu_insn): Ditto.
1468 (emit_scalar_move_insn): Ditto.
1470 2023-05-29 Pan Li <pan2.li@intel.com>
1472 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
1474 (emit_nonvlmax_insn): Ditto.
1475 (emit_vlmax_merge_insn): Ditto.
1476 (emit_vlmax_cmp_insn): Ditto.
1477 (emit_vlmax_cmp_mu_insn): Ditto.
1478 (expand_vec_series): Ditto.
1480 2023-05-29 Pan Li <pan2.li@intel.com>
1482 * config/riscv/riscv-protos.h (enum insn_type): New type.
1483 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
1484 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
1486 (rvv_builder::get_merged_repeating_sequence): Ditto.
1487 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
1488 to evaluate the optimization cost.
1489 (rvv_builder::get_merge_scalar_mask): New function to get the merge
1491 (emit_scalar_move_insn): New function to emit vmv.s.x.
1492 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
1493 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
1495 (get_repeating_sequence_dup_machine_mode): New function to get the dup
1497 (expand_vector_init_merge_repeating_sequence): New function to perform
1499 (expand_vec_init): Add this vector init optimization.
1500 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
1502 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
1504 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
1505 put onto the increment when it is inserted after the position.
1507 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
1509 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
1512 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1514 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
1516 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1518 * config/riscv/autovec.md (fma<mode>4): New pattern.
1519 (*fma<mode>): Ditto.
1520 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1521 (emit_vlmax_ternary_insn): New function.
1522 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
1524 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1526 * config/riscv/vector.md: Fix vimuladd instruction bug.
1528 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1530 * config/riscv/riscv.cc (global_state_unknown_p): New function.
1531 (riscv_mode_after): Fix incorrect VXM.
1533 2023-05-29 Pan Li <pan2.li@intel.com>
1535 * common/config/riscv/riscv-common.cc:
1536 (riscv_implied_info): Add zvfhmin item.
1537 (riscv_ext_version_table): Ditto.
1538 (riscv_ext_flag_table): Ditto.
1539 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
1540 (TARGET_ZFHMIN): Align indent.
1541 (TARGET_ZFH): Ditto.
1542 (TARGET_ZVFHMIN): New macro.
1544 2023-05-27 liuhongt <hongtao.liu@intel.com>
1547 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
1548 to VI_AVX2 to cover more modes.
1550 2023-05-27 liuhongt <hongtao.liu@intel.com>
1552 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
1553 Remove ATOM and ICELAKE(and later) core processors.
1555 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
1557 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
1559 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
1561 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
1564 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
1565 Juzhe Zhong <juzhe.zhong@rivai.ai>
1567 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
1569 (<optab><v_quad_trunc><mode>2): Dito.
1570 (<optab><v_oct_trunc><mode>2): Dito.
1571 (trunc<mode><v_double_trunc>2): Dito.
1572 (trunc<mode><v_quad_trunc>2): Dito.
1573 (trunc<mode><v_oct_trunc>2): Dito.
1574 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
1575 (autovectorize_vector_modes): Define.
1576 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
1578 (autovectorize_vector_modes): Implement hook.
1579 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
1580 Implement target hook.
1581 (riscv_vectorize_related_mode): Implement target hook.
1582 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
1583 (TARGET_VECTORIZE_RELATED_MODE): Define.
1584 * config/riscv/vector-iterators.md: Add lowercase versions of
1585 mode_attr iterators.
1587 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
1588 Tobias Burnus <tobias@codesourcery.com>
1590 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
1591 (ASM_SPEC): Use XNACKOPT.
1592 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
1593 (enum hsaco_attr_type): ... this, and generalize the names.
1594 (TARGET_XNACK): New macro.
1595 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
1597 (output_file_start): Update xnack handling.
1598 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
1599 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
1600 (sram_ecc_type): Rename to ...
1601 (hsaco_attr_type: ... this.)
1602 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
1603 (TEST_XNACK): Delete.
1604 (TEST_XNACK_ANY): New macro.
1605 (TEST_XNACK_ON): New macro.
1606 (main): Support the new -mxnack=on/off/any syntax.
1607 * doc/invoke.texi (-mxnack): Update for new syntax.
1609 2023-05-26 Andrew Pinski <apinski@marvell.com>
1611 * genmatch.cc (emit_debug_printf): New function.
1612 (dt_simplify::gen_1): Emit printf into the code
1613 before the `return true` or returning the folded result
1614 instead of emitting it always.
1616 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1618 * config/xtensa/xtensa-protos.h
1619 (xtensa_expand_block_set_unrolled_loop,
1620 xtensa_expand_block_set_small_loop): Remove.
1621 (xtensa_expand_block_set): New prototype.
1622 * config/xtensa/xtensa.cc
1623 (xtensa_expand_block_set_libcall): New subfunction.
1624 (xtensa_expand_block_set_unrolled_loop,
1625 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
1626 (xtensa_expand_block_set): New function that calls the above
1628 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
1629 xtensa_expand_block_set().
1631 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1633 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
1635 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
1637 * config/xtensa/constraints.md (O):
1638 Change to use the above function.
1639 * config/xtensa/xtensa.md (*subsi3_from_const):
1640 New insn_and_split pattern.
1642 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1644 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
1645 Retract excessive line folding, and correct the value of
1646 the "length" insn attribute related to TARGET_DENSITY.
1647 (*extzvsi-1bit_addsubx): Ditto.
1649 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
1651 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
1652 Do not disable call to ix86_expand_vecop_qihi2.
1654 2023-05-26 liuhongt <hongtao.liu@intel.com>
1658 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
1659 calculation when !hard_regno_mode_ok for GENERAL_REGS and
1660 mode, otherwise still use GENERAL_REGS.
1662 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1664 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
1665 explict VL and drop VL in ops.
1667 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
1669 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
1670 in different BB blocks.
1672 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
1674 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
1675 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
1676 instructions when available. Emulate truncation via
1677 ix86_expand_vec_perm_const_1 when native truncate insn
1679 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
1680 when available. Trivially rename some variables.
1681 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
1682 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
1683 calculation of V*QImode emulations to account for generation of
1684 2x-wider mode instructions.
1685 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
1686 emulations to account for generation of 2x-wider mode instructions.
1688 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
1691 * config/avr/avr.cc (avr_can_inline_p): New static function.
1692 (TARGET_CAN_INLINE_P): Define to that function.
1694 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
1697 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
1698 Handle any bit position and use mode QISI.
1699 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
1700 of 2 insns for bit-transfer of respective style.
1702 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
1704 * config/arm/iterators.md (MVE_6): Remove.
1705 * config/arm/mve.md: Replace MVE_6 with MVE_5.
1707 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1708 Richard Sandiford <richard.sandiford@arm.com>
1710 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
1712 (vect_set_loop_controls_directly): Add decrement IV support.
1713 (vect_set_loop_condition_partial_vectors): Ditto.
1714 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
1716 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
1719 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1722 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
1723 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
1724 Fix canonicalization of PLUS operands.
1725 (aarch64_fcmla<rot><mode>): Rename to...
1726 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
1727 Fix canonicalization of PLUS operands.
1728 (aarch64_fcmla_lane<rot><mode>): Rename to...
1729 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
1730 Fix canonicalization of PLUS operands.
1731 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
1732 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
1733 Fix canonicalization of PLUS operands.
1734 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
1736 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
1738 * config/arm/arm.md (rbitsi2): Rename to...
1739 (arm_rbit): ... This.
1740 (ctzsi2): Adjust for the above.
1741 (arm_rev16si2): Convert to define_expand.
1742 (arm_rev16si2_alt1): New pattern.
1743 (arm_rev16si2_alt): Rename to...
1744 (*arm_rev16si2_alt2): ... This.
1745 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
1746 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
1747 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
1748 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
1750 2023-05-25 Alex Coplan <alex.coplan@arm.com>
1753 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
1755 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
1756 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
1757 DFmode as an rvalue.
1759 2023-05-25 Richard Biener <rguenther@suse.de>
1762 * tree-vect-stmts.cc (vectorizable_condition): For
1763 embedded comparisons also handle the case when the target
1764 only provides vec_cmp and vcond_mask.
1766 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
1768 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
1771 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1773 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
1774 (seq_cost_ignoring_scalar_moves): Likewise.
1775 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
1777 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1779 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
1780 (vcage_f32): Likewise.
1781 (vcages_f32): Likewise.
1782 (vcageq_f32): Likewise.
1783 (vcaged_f64): Likewise.
1784 (vcageq_f64): Likewise.
1785 (vcagts_f32): Likewise.
1786 (vcagt_f32): Likewise.
1787 (vcagt_f64): Likewise.
1788 (vcagtq_f32): Likewise.
1789 (vcagtd_f64): Likewise.
1790 (vcagtq_f64): Likewise.
1791 (vcale_f32): Likewise.
1792 (vcale_f64): Likewise.
1793 (vcaled_f64): Likewise.
1794 (vcales_f32): Likewise.
1795 (vcaleq_f32): Likewise.
1796 (vcaleq_f64): Likewise.
1797 (vcalt_f32): Likewise.
1798 (vcalt_f64): Likewise.
1799 (vcaltd_f64): Likewise.
1800 (vcaltq_f32): Likewise.
1801 (vcaltq_f64): Likewise.
1802 (vcalts_f32): Likewise.
1804 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
1808 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
1809 int to const int or const int to const unsigned int.
1810 (_mm512_mask_srli_epi16): Ditto.
1811 (_mm512_slli_epi16): Ditto.
1812 (_mm512_mask_slli_epi16): Ditto.
1813 (_mm512_maskz_slli_epi16): Ditto.
1814 (_mm512_srai_epi16): Ditto.
1815 (_mm512_mask_srai_epi16): Ditto.
1816 (_mm512_maskz_srai_epi16): Ditto.
1817 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
1818 (_mm512_mask_slli_epi64): Ditto.
1819 (_mm512_maskz_slli_epi64): Ditto.
1820 (_mm512_srli_epi64): Ditto.
1821 (_mm512_mask_srli_epi64): Ditto.
1822 (_mm512_maskz_srli_epi64): Ditto.
1823 (_mm512_srai_epi64): Ditto.
1824 (_mm512_mask_srai_epi64): Ditto.
1825 (_mm512_maskz_srai_epi64): Ditto.
1826 (_mm512_slli_epi32): Ditto.
1827 (_mm512_mask_slli_epi32): Ditto.
1828 (_mm512_maskz_slli_epi32): Ditto.
1829 (_mm512_srli_epi32): Ditto.
1830 (_mm512_mask_srli_epi32): Ditto.
1831 (_mm512_maskz_srli_epi32): Ditto.
1832 (_mm512_srai_epi32): Ditto.
1833 (_mm512_mask_srai_epi32): Ditto.
1834 (_mm512_maskz_srai_epi32): Ditto.
1835 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
1836 (_mm256_maskz_srai_epi16): Ditto.
1837 (_mm_mask_srai_epi16): Ditto.
1838 (_mm_maskz_srai_epi16): Ditto.
1839 (_mm256_mask_slli_epi16): Ditto.
1840 (_mm256_maskz_slli_epi16): Ditto.
1841 (_mm_mask_slli_epi16): Ditto.
1842 (_mm_maskz_slli_epi16): Ditto.
1843 (_mm_maskz_srli_epi16): Ditto.
1844 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
1845 (_mm256_maskz_srli_epi32): Ditto.
1846 (_mm_mask_srli_epi32): Ditto.
1847 (_mm_maskz_srli_epi32): Ditto.
1848 (_mm256_mask_srli_epi64): Ditto.
1849 (_mm256_maskz_srli_epi64): Ditto.
1850 (_mm_mask_srli_epi64): Ditto.
1851 (_mm_maskz_srli_epi64): Ditto.
1852 (_mm256_mask_srai_epi32): Ditto.
1853 (_mm256_maskz_srai_epi32): Ditto.
1854 (_mm_mask_srai_epi32): Ditto.
1855 (_mm_maskz_srai_epi32): Ditto.
1856 (_mm256_srai_epi64): Ditto.
1857 (_mm256_mask_srai_epi64): Ditto.
1858 (_mm256_maskz_srai_epi64): Ditto.
1859 (_mm_srai_epi64): Ditto.
1860 (_mm_mask_srai_epi64): Ditto.
1861 (_mm_maskz_srai_epi64): Ditto.
1862 (_mm_mask_slli_epi32): Ditto.
1863 (_mm_maskz_slli_epi32): Ditto.
1864 (_mm_mask_slli_epi64): Ditto.
1865 (_mm_maskz_slli_epi64): Ditto.
1866 (_mm256_mask_slli_epi32): Ditto.
1867 (_mm256_maskz_slli_epi32): Ditto.
1868 (_mm256_mask_slli_epi64): Ditto.
1869 (_mm256_maskz_slli_epi64): Ditto.
1871 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1873 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
1876 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1878 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
1879 * data-streamer-out.cc (streamer_write_vrange): Same.
1880 * value-range.h (class vrange): Make streamer_write_vrange a friend.
1882 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1884 * value-query.cc (range_query::get_tree_range): Set NAN directly
1886 * value-range.cc (frange::set): Assert that bounds are not NAN.
1888 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1890 * value-range.cc (add_vrange): Handle known NANs.
1892 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
1894 * value-range.h (frange::set_nan): New.
1896 2023-05-25 Alexandre Oliva <oliva@adacore.com>
1899 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
1900 requires stricter alignment than MEM's.
1902 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1904 PR tree-optimization/107822
1905 PR tree-optimization/107986
1906 * Makefile.in (OBJS): Add gimple-range-phi.o.
1907 * gimple-range-cache.h (ranger_cache::m_estimate): New
1908 phi_analyzer pointer member.
1909 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
1910 phi_analyzer if no loop info is available.
1911 * gimple-range-phi.cc: New file.
1912 * gimple-range-phi.h: New file.
1913 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
1915 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1917 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
1919 (fold_range): Add range_query parameter.
1920 (fur_relation::fur_relation): New.
1921 (fur_relation::trio): New.
1922 (fur_relation::register_relation): New.
1923 (fold_relations): New.
1924 * gimple-range-fold.h (fold_range): Adjust prototypes.
1925 (fold_relations): New.
1927 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1929 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
1930 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
1931 (ranger_cache::const_query): New.
1932 * gimple-range.cc (gimple_ranger::const_query): New.
1933 * gimple-range.h (gimple_ranger::const_query): New prototype.
1935 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
1937 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
1938 (ssa_cache::dump_range_query): Delete.
1939 (ssa_lazy_cache::dump_range_query): Delete.
1940 (ssa_lazy_cache::get_range): Move from header file.
1941 (ssa_lazy_cache::clear_range): ditto.
1942 (ssa_lazy_cache::clear): Ditto.
1943 * gimple-range-cache.h (class ssa_cache): Virtualize.
1944 (class ssa_lazy_cache): Inherit and virtualize.
1946 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
1948 * value-range.h (vrange::kind): Remove.
1950 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
1952 PR middle-end/109840
1953 * match.pd <popcount optimizations>: Preserve zero-extension when
1954 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
1955 popcount((T)x), so the popcount's argument keeps the same type.
1956 <parity optimizations>: Likewise preserve extensions when
1957 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
1958 parity((T)x), so that the parity's argument type is the same.
1960 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
1962 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
1963 (ipcp_store_vr_results): Same.
1964 * ipa-prop.cc (ipa_vr::ipa_vr): New.
1965 (ipa_vr::get_vrange): New.
1966 (ipa_vr::set_unknown): New.
1967 (ipa_vr::streamer_read): New.
1968 (ipa_vr::streamer_write): New.
1969 (write_ipcp_transformation_info): Use new ipa_vr API.
1970 (read_ipcp_transformation_info): Same.
1971 (ipa_vr::nonzero_p): Delete.
1972 (ipcp_update_vr): Use new ipa_vr API.
1973 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
1974 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
1976 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
1978 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
1979 silence overflow warnings later on.
1981 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
1983 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
1984 Remove handling of V8QImode.
1985 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
1986 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
1987 (v<insn>v4qi3): Ditto.
1988 * config/i386/sse.md (v<insn>v8qi3): Remove.
1990 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1993 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
1994 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
1995 (aarch64_simd_ashr<mode>): Rename to...
1996 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
1997 (aarch64_simd_imm_shl<mode>): Rename to...
1998 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
1999 (aarch64_simd_reg_sshl<mode>): Rename to...
2000 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
2001 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
2002 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
2003 (aarch64_simd_reg_shl<mode>_signed): Rename to...
2004 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
2005 (vec_shr_<mode>): Rename to...
2006 (vec_shr_<mode><vczle><vczbe>): ... This.
2007 (aarch64_<sur>shl<mode>): Rename to...
2008 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
2009 (aarch64_<sur>q<r>shl<mode>): Rename to...
2010 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
2012 2023-05-24 Richard Biener <rguenther@suse.de>
2015 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
2016 Perform final vector composition using
2017 ix86_expand_vector_init_general instead of setting
2018 the highpart and lowpart which causes spilling.
2020 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2022 PR tree-optimization/109695
2023 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
2025 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
2026 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
2027 flag to set_global_range.
2028 (gimple_ranger::prefill_stmt_dependencies): Ditto.
2030 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2032 PR tree-optimization/109695
2033 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
2035 (temporal_cache::current_p): Check always_current method.
2036 (temporal_cache::set_always_current): Add param and set value
2038 (temporal_cache::always_current_p): New.
2039 (ranger_cache::get_global_range): Adjust.
2040 (ranger_cache::set_global_range): set always current first.
2042 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
2044 PR tree-optimization/109695
2045 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
2046 fold_range with global query to choose an initial value.
2048 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2050 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
2053 2023-05-24 Richard Biener <rguenther@suse.de>
2055 PR tree-optimization/109849
2056 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
2057 expressions but take the first sets.
2059 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
2062 * doc/gm2.texi (High procedure function): New node.
2063 (Using): New menu entry for High procedure function.
2065 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
2067 PR rtl-optimization/109940
2068 * early-remat.cc (postorder_index): Rename to...
2069 (rpo_index): ...this.
2070 (compare_candidates): Sort by decreasing rpo_index rather than
2071 increasing postorder_index.
2072 (early_remat::sort_candidates): Calculate the forward RPO from
2074 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
2075 rather than DF_BACKWARD in reverse.
2077 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2080 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
2081 qualifier_none for the return operand.
2083 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2085 * config/riscv/autovec.md (<optab><mode>3): New pattern.
2086 (one_cmpl<mode>2): Ditto.
2087 (*<optab>not<mode>): Ditto.
2088 (*n<optab><mode>): Ditto.
2089 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
2092 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
2094 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
2095 calculation on n_perms by considering nvectors_per_build.
2097 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2098 Richard Sandiford <richard.sandiford@arm.com>
2100 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
2101 (vec_cmp<mode><vm>): New pattern.
2102 (vec_cmpu<mode><vm>): New pattern.
2103 (vcond<V:mode><VI:mode>): New pattern.
2104 (vcondu<V:mode><VI:mode>): New pattern.
2105 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
2106 (emit_vlmax_merge_insn): New function.
2107 (emit_vlmax_cmp_insn): Ditto.
2108 (emit_vlmax_cmp_mu_insn): Ditto.
2109 (expand_vec_cmp): Ditto.
2110 (expand_vec_cmp_float): Ditto.
2111 (expand_vcond): Ditto.
2112 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
2113 (emit_vlmax_cmp_insn): Ditto.
2114 (emit_vlmax_cmp_mu_insn): Ditto.
2115 (get_cmp_insn_code): Ditto.
2116 (expand_vec_cmp): Ditto.
2117 (expand_vec_cmp_float): Ditto.
2118 (expand_vcond): Ditto.
2120 2023-05-24 Pan Li <pan2.li@intel.com>
2122 * config/riscv/genrvv-type-indexer.cc (main): Add
2123 unsigned_eew*_lmul1_interpret for indexer.
2124 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
2125 Register vuint*m1_t interpret function.
2126 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
2127 New macro for vuint8m1_t.
2128 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
2129 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
2130 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
2131 (vbool1_t): Add to unsigned_eew*_interpret_ops.
2132 (vbool2_t): Likewise.
2133 (vbool4_t): Likewise.
2134 (vbool8_t): Likewise.
2135 (vbool16_t): Likewise.
2136 (vbool32_t): Likewise.
2137 (vbool64_t): Likewise.
2138 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
2139 New macro for vuint*m1_t.
2140 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
2141 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
2142 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
2143 (required_extensions_p): Add vuint*m1_t interpret case.
2144 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
2145 Add vuint*m1_t interpret to base type.
2146 (unsigned_eew16_lmul1_interpret): Likewise.
2147 (unsigned_eew32_lmul1_interpret): Likewise.
2148 (unsigned_eew64_lmul1_interpret): Likewise.
2150 2023-05-24 Pan Li <pan2.li@intel.com>
2152 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
2153 for the eew size list.
2154 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
2155 (main): Add signed_eew*_lmul1_interpret for indexer.
2156 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
2157 Register vint*m1_t interpret function.
2158 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
2159 New macro for vint8m1_t.
2160 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
2161 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
2162 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
2163 (vbool1_t): Add to signed_eew*_interpret_ops.
2164 (vbool2_t): Likewise.
2165 (vbool4_t): Likewise.
2166 (vbool8_t): Likewise.
2167 (vbool16_t): Likewise.
2168 (vbool32_t): Likewise.
2169 (vbool64_t): Likewise.
2170 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
2171 New macro for vint*m1_t.
2172 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
2173 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
2174 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
2175 (required_extensions_p): Add vint8m1_t interpret case.
2176 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
2177 Add vint*m1_t interpret to base type.
2178 (signed_eew16_lmul1_interpret): Likewise.
2179 (signed_eew32_lmul1_interpret): Likewise.
2180 (signed_eew64_lmul1_interpret): Likewise.
2182 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2184 * config/riscv/autovec.md: Adjust for new interface.
2185 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
2186 (emit_nonvlmax_insn): Add AVL operand.
2187 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
2188 (emit_nonvlmax_insn): Add AVL operand.
2189 (sew64_scalar_helper): Adjust for new interface.
2190 (expand_tuple_move): Ditto.
2191 * config/riscv/vector.md: Ditto.
2193 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2195 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
2196 (expand_const_vector): Ditto.
2197 (legitimize_move): Ditto.
2198 (sew64_scalar_helper): Ditto.
2199 (expand_tuple_move): Ditto.
2200 (expand_vector_init_insert_elems): Ditto.
2201 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
2203 2023-05-24 liuhongt <hongtao.liu@intel.com>
2206 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
2207 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
2208 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
2209 (ix86_masked_all_ones): Handle 64-bit mask.
2210 * config/i386/i386-builtin.def: Replace icode of related
2211 non-mask simd abs builtins with CODE_FOR_nothing.
2213 2023-05-23 Martin Uecker <uecker@tugraz.at>
2216 * function.cc (gimplify_parm_type): Remove function.
2217 (gimplify_parameters): Call gimplify_type_sizes.
2219 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2221 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
2222 and change to also accept '*subx' pattern.
2225 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2227 * config/xtensa/predicates.md (addsub_operator): New.
2228 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
2229 *extzvsi-1bit_addsubx): New insn_and_split patterns.
2230 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
2231 Add a special case about ifcvt 'noce_try_cmove()' to handle
2232 constant loads that do not fit into signed 12 bits in the
2233 patterns added above.
2235 2023-05-23 Richard Biener <rguenther@suse.de>
2237 PR tree-optimization/109747
2238 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
2239 the SLP node only once to the cost hook.
2241 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
2243 * config/avr/avr.cc (avr_insn_cost): New static function.
2244 (TARGET_INSN_COST): Define to that function.
2246 2023-05-23 Richard Biener <rguenther@suse.de>
2249 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
2250 For vector construction or splats apply GPR->XMM move
2251 costing. QImode memory can be handled directly only
2254 2023-05-23 Richard Biener <rguenther@suse.de>
2256 PR tree-optimization/108752
2257 * tree-vect-stmts.cc (vectorizable_operation): For bit
2258 operations with generic word_mode vectors do not cost
2259 an extra stmt. For plus, minus and negate also cost the
2260 constant materialization.
2262 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
2264 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
2265 Call ix86_expand_vec_shift_qihi_constant for shifts
2266 with constant count operand.
2267 * config/i386/i386.cc (ix86_shift_rotate_cost):
2268 Handle V4QImode and V8QImode.
2269 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
2270 (<insn>v4qi3): Ditto.
2272 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2274 * config/riscv/vector.md: Add mode.
2276 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
2278 PR tree-optimization/109934
2279 * value-range.cc (irange::invert): Remove buggy special case.
2281 2023-05-23 Richard Biener <rguenther@suse.de>
2283 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
2286 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
2289 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
2290 subregs between any scalars that are 64 bits or smaller.
2291 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
2292 (bits_etype): New int attribute.
2293 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
2294 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
2295 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
2297 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
2299 * doc/md.texi: Document that <FOO> can be used to refer to the
2300 numerical value of an int iterator FOO. Tweak other parts of
2301 the int iterator documentation.
2302 * read-rtl.cc (iterator_group::has_self_attr): New field.
2303 (map_attr_string): When has_self_attr is true, make <FOO>
2304 expand to the current value of iterator FOO.
2305 (initialize_iterators): Set has_self_attr for int iterators.
2307 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2309 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
2310 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
2311 (RVV_UNOP_NUM): New macro.
2312 (RVV_BINOP_NUM): Ditto.
2313 (legitimize_move): Refactor the framework of RVV auto-vectorization.
2314 (emit_vlmax_op): Ditto.
2315 (emit_vlmax_reg_op): Ditto.
2316 (emit_len_op): Ditto.
2317 (emit_len_binop): Ditto.
2318 (emit_vlmax_tany_many): Ditto.
2319 (emit_nonvlmax_tany_many): Ditto.
2320 (sew64_scalar_helper): Ditto.
2321 (expand_tuple_move): Ditto.
2322 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
2323 (emit_pred_binop): Ditto.
2324 (emit_vlmax_op): Ditto.
2325 (emit_vlmax_tany_many): New function.
2326 (emit_len_op): Remove.
2327 (emit_nonvlmax_tany_many): New function.
2328 (emit_vlmax_reg_op): Remove.
2329 (emit_len_binop): Ditto.
2330 (emit_index_op): Ditto.
2331 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
2332 (expand_const_vector): Ditto.
2333 (legitimize_move): Ditto.
2334 (sew64_scalar_helper): Ditto.
2335 (expand_tuple_move): Ditto.
2336 (expand_vector_init_insert_elems): Ditto.
2337 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
2338 * config/riscv/vector.md: Ditto.
2340 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2343 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
2344 and constraint for operand 0.
2345 (add_vec_concat_subst_be): Likewise.
2347 2023-05-23 Richard Biener <rguenther@suse.de>
2349 PR tree-optimization/109849
2350 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
2351 and use that to determine what to hoist.
2353 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
2355 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
2356 specific treatment for bit-fields only if they have an integral type
2357 and filter out non-integral bit-fields that do not start and end on
2360 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
2362 PR tree-optimization/109920
2363 * value-range.h (RESIZABLE>::~int_range): Use delete[].
2365 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
2367 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
2368 calcuation of integer vector mode costs to reflect generated
2369 instruction sequences of different integer vector modes and
2370 different target ABIs. Remove "speed" function argument.
2371 (ix86_rtx_costs): Update call for removed function argument.
2372 (ix86_vector_costs::add_stmt_cost): Ditto.
2374 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
2376 * value-range.h (class Value_Range): Implement set_zero,
2377 set_nonzero, and nonzero_p.
2379 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
2381 * config/i386/i386.cc (ix86_multiplication_cost): Add
2382 the cost of a memory read to the cost of V?QImode sequences.
2384 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2386 * config/riscv/riscv-v.cc: Add "m_" prefix.
2388 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2390 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
2391 multiple-rgroup of length.
2392 * tree-vect-stmts.cc (vectorizable_store): Ditto.
2393 (vectorizable_load): Ditto.
2394 * tree-vectorizer.h (vect_get_loop_len): Ditto.
2396 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2398 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
2401 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
2403 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
2404 handling for the case index == count.
2406 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
2409 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
2410 Don't fold to XOR / AND / XOR if just one bit is copied to the
2413 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
2415 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
2416 builtin for bit reversal using brev instruction.
2417 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
2418 NVPTX_BUILTIN_BREVLL.
2419 (nvptx_init_builtins): Define "brev" and "brevll".
2420 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
2421 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
2422 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
2423 section, document __builtin_nvptx_brev{,ll}.
2425 2023-05-21 Jakub Jelinek <jakub@redhat.com>
2427 PR tree-optimization/109505
2428 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
2429 Combine successive equal operations with constants,
2430 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
2431 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
2434 2023-05-21 Andrew Pinski <apinski@marvell.com>
2436 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
2438 2023-05-21 Pan Li <pan2.li@intel.com>
2440 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
2441 rest bool size, aka 2, 4, 8, 16, 32, 64.
2442 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
2443 Register vbool[2|4|8|16|32|64] interpret function.
2444 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
2445 New macro for vbool2_t.
2446 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
2447 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
2448 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
2449 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
2450 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
2451 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
2452 (vint16m1_t): Likewise.
2453 (vint32m1_t): Likewise.
2454 (vint64m1_t): Likewise.
2455 (vuint8m1_t): Likewise.
2456 (vuint16m1_t): Likewise.
2457 (vuint32m1_t): Likewise.
2458 (vuint64m1_t): Likewise.
2459 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
2460 New macro for vbool2_t.
2461 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
2462 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
2463 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
2464 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
2465 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
2466 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
2467 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
2468 vbool2_t interprect to base type.
2469 (bool4_interpret): Likewise.
2470 (bool8_interpret): Likewise.
2471 (bool16_interpret): Likewise.
2472 (bool32_interpret): Likewise.
2473 (bool64_interpret): Likewise.
2475 2023-05-21 Andrew Pinski <apinski@marvell.com>
2477 PR middle-end/109919
2478 * expr.cc (expand_single_bit_test): Don't use the
2479 target for expand_expr.
2481 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
2483 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
2486 2023-05-20 Pan Li <pan2.li@intel.com>
2488 * mode-switching.cc (entity_map): Initialize the array to zero.
2491 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
2494 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
2495 Remove superfluous "parallel" in insn pattern.
2496 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
2497 printing error text to assembly.
2499 2023-05-20 Andrew Pinski <apinski@marvell.com>
2501 * expr.cc (fold_single_bit_test): Rename to ...
2502 (expand_single_bit_test): This and expand directly.
2503 (do_store_flag): Update for the rename function.
2505 2023-05-20 Andrew Pinski <apinski@marvell.com>
2507 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
2508 instead of shift/and.
2510 2023-05-20 Andrew Pinski <apinski@marvell.com>
2512 * expr.cc (fold_single_bit_test): Add an assert
2513 and simplify based on code being NE_EXPR or EQ_EXPR.
2515 2023-05-20 Andrew Pinski <apinski@marvell.com>
2517 * expr.cc (fold_single_bit_test): Take inner and bitnum
2518 instead of arg0 and arg1. Update the code.
2519 (do_store_flag): Don't create a tree when calling
2520 fold_single_bit_test instead just call it with the bitnum
2523 2023-05-20 Andrew Pinski <apinski@marvell.com>
2525 * expr.cc (fold_single_bit_test): Use get_def_for_expr
2526 instead of checking the inner's code.
2528 2023-05-20 Andrew Pinski <apinski@marvell.com>
2530 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
2531 (fold_single_bit_test): This and simplify.
2533 2023-05-20 Andrew Pinski <apinski@marvell.com>
2535 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
2537 (fold_single_bit_test): Likewise.
2538 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
2539 (fold_single_bit_test): Likewise and make static.
2540 * fold-const.h (fold_single_bit_test): Remove declaration.
2542 2023-05-20 Die Li <lidie@eswincomputing.com>
2544 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
2547 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
2549 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
2551 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
2554 * config/riscv/bitmanip.md
2555 (<bitmanip_optab>disi2): Match with any_extend.
2556 (<bitmanip_optab>disi2_sext): New pattern to match
2557 with sign extend using an ANDI instruction.
2559 2023-05-19 Nathan Sidwell <nathan@acm.org>
2562 * opts.h (handle_deferred_dump_options): Declare.
2563 * opts-global.cc (handle_common_deferred_options): Do not handle
2565 (handle_deferred_dump_options): New.
2566 * toplev.cc (toplev::main): Call it after plugin init.
2568 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
2570 * config/riscv/constraints.md (DsS, DsD): Restore agreement
2571 with shiftm1 mode attribute.
2573 2023-05-19 Andrew Pinski <apinski@marvell.com>
2576 * gcc.cc (default_compilers["@c-header"]): Add %w
2577 after the --output-pch.
2579 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
2581 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
2582 to hival, ASHIFT the corresponding regs.
2584 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
2586 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
2588 2023-05-19 Jakub Jelinek <jakub@redhat.com>
2590 PR tree-optimization/105776
2591 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
2592 non-NULL, allow division statement to have a cast as single imm use
2593 rather than comparison/condition.
2594 (match_arith_overflow): In that case remove the cast stmt in addition
2595 to the division statement.
2597 2023-05-19 Jakub Jelinek <jakub@redhat.com>
2599 PR tree-optimization/101856
2600 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
2601 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
2602 support it but umul_highpart_optab does.
2604 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
2606 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
2607 of tree_to_shwi on array indices. Minor tweaks.
2609 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2611 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
2612 * attribs.cc (diag_attr_exclusions): Ditto.
2613 (decl_attributes): Ditto.
2614 (build_type_attribute_qual_variant): Ditto.
2615 * builtins.cc (fold_builtin_carg): Ditto.
2616 (fold_builtin_next_arg): Ditto.
2617 (do_mpc_arg2): Ditto.
2618 * cfgexpand.cc (expand_return): Ditto.
2619 * cgraph.h (decl_in_symtab_p): Ditto.
2620 (symtab_node::get_create): Ditto.
2621 * dwarf2out.cc (base_type_die): Ditto.
2622 (implicit_ptr_descriptor): Ditto.
2623 (gen_array_type_die): Ditto.
2624 (gen_type_die_with_usage): Ditto.
2625 (optimize_location_into_implicit_ptr): Ditto.
2626 * expr.cc (do_store_flag): Ditto.
2627 * fold-const.cc (negate_expr_p): Ditto.
2628 (fold_negate_expr_1): Ditto.
2629 (fold_convert_const): Ditto.
2630 (fold_convert_loc): Ditto.
2631 (constant_boolean_node): Ditto.
2632 (fold_binary_op_with_conditional_arg): Ditto.
2633 (build_fold_addr_expr_with_type_loc): Ditto.
2634 (fold_comparison): Ditto.
2635 (fold_checksum_tree): Ditto.
2636 (tree_unary_nonnegative_warnv_p): Ditto.
2637 (integer_valued_real_unary_p): Ditto.
2638 (fold_read_from_constant_string): Ditto.
2639 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
2640 * gimple-expr.cc (useless_type_conversion_p): Ditto.
2641 (is_gimple_reg): Ditto.
2642 (is_gimple_asm_val): Ditto.
2643 (mark_addressable): Ditto.
2644 * gimple-expr.h (is_gimple_variable): Ditto.
2645 (virtual_operand_p): Ditto.
2646 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
2647 * gimplify.cc (gimplify_bind_expr): Ditto.
2648 (gimplify_return_expr): Ditto.
2649 (gimple_add_padding_init_for_auto_var): Ditto.
2650 (gimplify_addr_expr): Ditto.
2651 (omp_add_variable): Ditto.
2652 (omp_notice_variable): Ditto.
2653 (omp_get_base_pointer): Ditto.
2654 (omp_strip_components_and_deref): Ditto.
2655 (omp_strip_indirections): Ditto.
2656 (omp_accumulate_sibling_list): Ditto.
2657 (omp_build_struct_sibling_lists): Ditto.
2658 (gimplify_adjust_omp_clauses_1): Ditto.
2659 (gimplify_adjust_omp_clauses): Ditto.
2660 (gimplify_omp_for): Ditto.
2661 (goa_lhs_expr_p): Ditto.
2662 (gimplify_one_sizepos): Ditto.
2663 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
2664 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
2665 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
2666 (propagate_controlled_uses): Ditto.
2667 * ipa-sra.cc (type_prevails_p): Ditto.
2668 (scan_expr_access): Ditto.
2669 * optabs-tree.cc (optab_for_tree_code): Ditto.
2670 * toplev.cc (wrapup_global_declaration_1): Ditto.
2671 * trans-mem.cc (transaction_invariant_address_p): Ditto.
2672 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
2673 (verify_gimple_comparison): Ditto.
2674 (verify_gimple_assign_binary): Ditto.
2675 (verify_gimple_assign_single): Ditto.
2676 * tree-complex.cc (get_component_ssa_name): Ditto.
2677 * tree-emutls.cc (lower_emutls_2): Ditto.
2678 * tree-inline.cc (copy_tree_body_r): Ditto.
2679 (estimate_move_cost): Ditto.
2680 (copy_decl_for_dup_finish): Ditto.
2681 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
2682 (note_nonlocal_vla_type): Ditto.
2683 (convert_local_omp_clauses): Ditto.
2684 (remap_vla_decls): Ditto.
2685 (fixup_vla_decls): Ditto.
2686 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
2687 * tree-pretty-print.cc (print_declaration): Ditto.
2688 (print_call_name): Ditto.
2689 * tree-sra.cc (compare_access_positions): Ditto.
2690 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
2691 * tree-ssa-ccp.cc (get_default_value): Ditto.
2692 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
2693 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
2694 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
2695 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
2696 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
2697 * tree-ssa-sink.cc (statement_sink_location): Ditto.
2698 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
2699 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
2700 * tree-ssa-uninit.cc (warn_uninit): Ditto.
2701 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
2702 (non_rewritable_mem_ref_base): Ditto.
2703 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
2704 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
2705 * tree-vect-generic.cc (do_binop): Ditto.
2707 * tree-vect-stmts.cc (vect_init_vector): Ditto.
2708 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
2709 * tree.cc (sign_mask_for): Ditto.
2710 (verify_type_variant): Ditto.
2711 (gimple_canonical_types_compatible_p): Ditto.
2712 (verify_type): Ditto.
2713 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
2714 * var-tracking.cc (prepare_call_arguments): Ditto.
2715 (vt_add_function_parameters): Ditto.
2716 * varasm.cc (decode_addr_const): Ditto.
2718 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2720 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
2721 (lower_reduction_clauses): Ditto.
2722 (lower_send_clauses): Ditto.
2723 (lower_omp_task_reductions): Ditto.
2724 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
2725 (worker_single_copy): Ditto.
2726 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
2727 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
2729 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2731 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
2733 (lto_read_body_or_constructor): Ditto.
2734 * lto-streamer-out.cc (tree_is_indexable): Ditto.
2735 (lto_output_var_decl_ref): Ditto.
2736 (DFS::DFS_write_tree_body): Ditto.
2738 (write_symbol_extension_info): Ditto.
2740 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2742 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
2743 defines from tree.h.
2744 (aarch64_mangle_type): Ditto.
2745 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
2746 (alpha_gimplify_va_arg_1): Ditto.
2747 * config/arc/arc.cc (arc_encode_section_info): Ditto.
2748 (arc_is_aux_reg_p): Ditto.
2749 (arc_is_uncached_mem_p): Ditto.
2750 (arc_handle_aux_attribute): Ditto.
2751 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
2752 (arm_handle_cmse_nonsecure_call): Ditto.
2753 (arm_set_default_type_attributes): Ditto.
2754 (arm_is_segment_info_known): Ditto.
2755 (arm_mangle_type): Ditto.
2756 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
2757 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
2758 (avr_decl_absdata_p): Ditto.
2759 (avr_insert_attributes): Ditto.
2760 (avr_section_type_flags): Ditto.
2761 (avr_encode_section_info): Ditto.
2762 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
2763 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
2764 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
2765 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
2766 (csky_mangle_type): Ditto.
2767 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
2768 * config/darwin.cc (is_objc_metadata): Ditto.
2769 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
2770 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
2771 * config/frv/frv.cc (frv_emit_movsi): Ditto.
2772 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
2773 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
2774 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
2775 * config/i386/i386-expand.cc: Ditto.
2776 * config/i386/i386.cc (type_natural_mode): Ditto.
2777 (ix86_function_arg): Ditto.
2778 (ix86_data_alignment): Ditto.
2779 (ix86_local_alignment): Ditto.
2780 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
2781 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
2782 (i386_pe_type_dllexport_p): Ditto.
2783 (i386_pe_adjust_class_at_definition): Ditto.
2784 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
2785 (i386_pe_binds_local_p): Ditto.
2786 (i386_pe_section_type_flags): Ditto.
2787 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
2788 (ia64_gimplify_va_arg): Ditto.
2789 (ia64_in_small_data_p): Ditto.
2790 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
2791 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
2792 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
2793 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
2794 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
2795 (mcore_encode_section_info): Ditto.
2796 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
2797 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
2798 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
2799 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
2800 (pass_in_memory): Ditto.
2801 (nvptx_generate_vector_shuffle): Ditto.
2802 (nvptx_lockless_update): Ditto.
2803 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
2804 (pa_function_value): Ditto.
2805 (pa_function_arg): Ditto.
2806 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
2807 (TEXT_SPACE_P): Ditto.
2808 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
2809 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
2810 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
2811 (riscv_mangle_type): Ditto.
2812 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
2813 (rl78_addsi3_internal): Ditto.
2814 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
2815 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
2816 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
2817 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
2818 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
2819 (rs6000_function_arg_advance_1): Ditto.
2820 (rs6000_function_arg): Ditto.
2821 (rs6000_pass_by_reference): Ditto.
2822 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
2823 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
2824 (rs6000_set_default_type_attributes): Ditto.
2825 (rs6000_elf_in_small_data_p): Ditto.
2826 (IN_NAMED_SECTION): Ditto.
2827 (rs6000_xcoff_encode_section_info): Ditto.
2828 (rs6000_function_value): Ditto.
2829 (invalid_arg_for_unprototyped_fn): Ditto.
2830 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
2831 (s390_vec_n_elem): Ditto.
2832 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
2833 (s390_function_arg_integer): Ditto.
2834 (s390_return_in_memory): Ditto.
2835 (s390_encode_section_info): Ditto.
2836 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
2837 (sh_function_value): Ditto.
2838 * config/sol2.cc (solaris_insert_attributes): Ditto.
2839 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
2840 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
2841 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
2842 (xstormy16_handle_below100_attribute): Ditto.
2843 * config/v850/v850.cc (v850_encode_section_info): Ditto.
2844 (v850_insert_attributes): Ditto.
2845 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
2846 (visium_return_in_memory): Ditto.
2847 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
2849 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
2851 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
2852 (ix86_expand_vecop_qihi): Add op2vec bool variable.
2853 Do not set REG_EQUAL note.
2854 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
2856 * config/i386/i386.cc (ix86_multiplication_cost): Handle
2857 V4QImode and V8QImode.
2858 * config/i386/mmx.md (mulv8qi3): New expander.
2860 * config/i386/sse.md (mulv8qi3): Remove.
2862 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
2864 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
2866 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
2869 * config.gcc: Use = operator instead of ==.
2871 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
2874 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
2875 * configure.ac: Likewise.
2876 * configure: Regenerate.
2878 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2880 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
2881 (__ARM_mve_coerce1): Remove.
2882 (__ARM_mve_coerce2): Remove.
2883 (__ARM_mve_coerce3): Remove.
2884 (__ARM_mve_coerce_i_scalar): New.
2885 (__ARM_mve_coerce_s8_ptr): New.
2886 (__ARM_mve_coerce_u8_ptr): New.
2887 (__ARM_mve_coerce_s16_ptr): New.
2888 (__ARM_mve_coerce_u16_ptr): New.
2889 (__ARM_mve_coerce_s32_ptr): New.
2890 (__ARM_mve_coerce_u32_ptr): New.
2891 (__ARM_mve_coerce_s64_ptr): New.
2892 (__ARM_mve_coerce_u64_ptr): New.
2893 (__ARM_mve_coerce_f_scalar): New.
2894 (__ARM_mve_coerce_f16_ptr): New.
2895 (__ARM_mve_coerce_f32_ptr): New.
2896 (__arm_vst4q): Change _coerce_ overloads.
2897 (__arm_vbicq): Change _coerce_ overloads.
2898 (__arm_vld1q): Change _coerce_ overloads.
2899 (__arm_vld1q_z): Change _coerce_ overloads.
2900 (__arm_vld2q): Change _coerce_ overloads.
2901 (__arm_vld4q): Change _coerce_ overloads.
2902 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
2903 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
2904 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
2905 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
2906 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
2907 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
2908 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
2909 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
2910 (__arm_vst1q_p): Change _coerce_ overloads.
2911 (__arm_vst2q): Change _coerce_ overloads.
2912 (__arm_vst1q): Change _coerce_ overloads.
2913 (__arm_vstrhq): Change _coerce_ overloads.
2914 (__arm_vstrhq_p): Change _coerce_ overloads.
2915 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
2916 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
2917 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
2918 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
2919 (__arm_vstrwq_p): Change _coerce_ overloads.
2920 (__arm_vstrwq): Change _coerce_ overloads.
2921 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
2922 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
2923 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
2924 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
2925 (__arm_vsetq_lane): Change _coerce_ overloads.
2926 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
2927 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
2928 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
2929 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
2930 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
2931 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
2932 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
2933 (__arm_vidupq_x_u8): Change _coerce_ overloads.
2934 (__arm_vddupq_x_u8): Change _coerce_ overloads.
2935 (__arm_vidupq_x_u16): Change _coerce_ overloads.
2936 (__arm_vddupq_x_u16): Change _coerce_ overloads.
2937 (__arm_vidupq_x_u32): Change _coerce_ overloads.
2938 (__arm_vddupq_x_u32): Change _coerce_ overloads.
2939 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
2940 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
2941 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
2942 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
2943 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
2944 (__arm_vidupq_u16): Change _coerce_ overloads.
2945 (__arm_vidupq_u32): Change _coerce_ overloads.
2946 (__arm_vidupq_u8): Change _coerce_ overloads.
2947 (__arm_vddupq_u16): Change _coerce_ overloads.
2948 (__arm_vddupq_u32): Change _coerce_ overloads.
2949 (__arm_vddupq_u8): Change _coerce_ overloads.
2950 (__arm_viwdupq_m): Change _coerce_ overloads.
2951 (__arm_viwdupq_u16): Change _coerce_ overloads.
2952 (__arm_viwdupq_u32): Change _coerce_ overloads.
2953 (__arm_viwdupq_u8): Change _coerce_ overloads.
2954 (__arm_vdwdupq_m): Change _coerce_ overloads.
2955 (__arm_vdwdupq_u16): Change _coerce_ overloads.
2956 (__arm_vdwdupq_u32): Change _coerce_ overloads.
2957 (__arm_vdwdupq_u8): Change _coerce_ overloads.
2958 (__arm_vstrbq): Change _coerce_ overloads.
2959 (__arm_vstrbq_p): Change _coerce_ overloads.
2960 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
2961 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
2962 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
2963 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
2964 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
2966 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2968 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
2971 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2973 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
2974 (__arm_vadcq_u32): Likewise.
2975 (__arm_vadcq_m_s32): Likewise.
2976 (__arm_vadcq_m_u32): Likewise.
2977 (__arm_vsbcq_s32): Likewise.
2978 (__arm_vsbcq_u32): Likewise.
2979 (__arm_vsbcq_m_s32): Likewise.
2980 (__arm_vsbcq_m_u32): Likewise.
2981 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
2983 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
2985 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
2986 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
2987 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
2988 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
2989 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
2990 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
2991 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
2992 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
2993 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
2994 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
2995 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
2996 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
2997 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
2998 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
2999 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
3000 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
3001 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
3002 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
3003 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
3004 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
3005 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
3006 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
3007 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
3008 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
3009 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
3010 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
3011 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
3012 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
3013 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
3014 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
3015 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
3016 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
3017 (mve_vorrq_m_f<mode>)
3018 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
3019 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
3020 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
3021 capitalization in the emitted asm.
3023 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
3025 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
3027 (Ri): Move constraint definition from predicates.md.
3028 (Rl): Define new constraint.
3029 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
3031 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
3032 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
3033 op 2. Fix asm output spacing.
3034 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
3035 * config/arm/predicates.md (Ri) Move constraint to constraints.md
3036 (mve_vldrd_immediate): Move it from
3038 (mve_vstrw_immediate): New predicate.
3040 2023-05-18 Pan Li <pan2.li@intel.com>
3041 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3042 Kito Cheng <kito.cheng@sifive.com>
3043 Richard Biener <rguenther@suse.de>
3044 Richard Sandiford <richard.sandiford@arm.com>
3046 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
3047 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
3048 (struct table_elt): Extend machine_mode to 16 bits.
3049 (struct set): Ditto.
3050 * genmodes.cc (emit_mode_wider): Extend type from char to short.
3051 (emit_mode_complex): Ditto.
3052 (emit_mode_inner): Ditto.
3053 (emit_class_narrowest_mode): Ditto.
3054 * genopinit.cc (main): Extend the machine_mode limit.
3055 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
3056 re-ordered the struct fields for padding.
3057 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
3058 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
3059 (get_mode_alignment): Extend type from char to short.
3060 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
3061 removed the ATTRIBUTE_PACKED.
3062 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
3063 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
3064 m_kind to 2 bits and remove m_spare.
3065 * rtl.h (RTX_CODE_BITSIZE): New macro.
3066 (struct rtx_def): Swap both the bit size and location between the
3067 rtx_code and the machine_mode.
3068 (subreg_shape::unique_id): Extend the machine_mode limit.
3069 * rtlanal.h: Extend machine_mode to 16 bits.
3070 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
3071 bits and re-ordered the struct fields for padding.
3072 (struct tree_decl_common): Extend machine_mode to 16 bits.
3074 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
3076 * genrecog.cc (print_nonbool_test): Fix type error of
3077 switch (SUBREG_BYTE (op))'.
3079 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
3081 * common/config/riscv/riscv-common.cc: Remove
3082 trailing spaces on lines.
3083 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
3084 * config/riscv/riscv.h (enum reg_class): Likewise.
3085 * config/riscv/riscv.md: Likewise.
3087 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
3089 * config/pa/pa.md (clear_cache): New.
3091 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
3093 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
3094 parenthesis. Fix misnamed index entry.
3095 <concept>: Fix misnamed index entry.
3097 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
3099 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
3101 (*<optab>si3_mask, *<optab>di3_mask): Here.
3102 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
3103 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
3105 (*<bitmanip_optab>si3_sext_mask): Likewise.
3106 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
3107 and const_di_mask_operand.
3108 (bitmanip_rotate): New iterator.
3109 (bitmanip_optab): Add rotates.
3110 * config/riscv/predicates.md (const_si_mask_operand): Renamed
3111 from const31_operand. Generalize to handle more mask constants.
3112 (const_di_mask_operand): Similarly.
3114 2023-05-17 Jakub Jelinek <jakub@redhat.com>
3117 * config/i386/i386-builtin-types.def (FLOAT128): Use
3118 float128t_type_node rather than float128_type_node.
3120 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
3122 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
3123 FP_CONTRACT_FAST (no functional change).
3125 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
3127 * config/i386/i386.cc (ix86_multiplication_cost): Correct
3128 calcuation of integer vector mode costs to reflect generated
3129 instruction sequences of different integer vector modes and
3130 different target ABIs.
3132 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3134 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
3135 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
3136 (riscv_mode_needed): Ditto.
3137 (riscv_mode_after): Ditto.
3138 (riscv_mode_entry): Ditto.
3139 (riscv_mode_exit): Ditto.
3140 (riscv_mode_priority): Ditto.
3141 (TARGET_MODE_EMIT): New target hook.
3142 (TARGET_MODE_NEEDED): Ditto.
3143 (TARGET_MODE_AFTER): Ditto.
3144 (TARGET_MODE_ENTRY): Ditto.
3145 (TARGET_MODE_EXIT): Ditto.
3146 (TARGET_MODE_PRIORITY): Ditto.
3147 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
3148 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
3149 * config/riscv/riscv.md: Add csrwvxrm.
3150 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
3151 (vxrmsi): New pattern.
3153 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3155 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
3156 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
3157 (struct narrow_alu_def): Ditto.
3158 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
3159 (function_expander::use_exact_insn): Ditto.
3160 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
3161 (function_base::has_rounding_mode_operand_p): New function.
3163 2023-05-17 Andrew Pinski <apinski@marvell.com>
3165 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
3166 against 0 instead of calling integer_zerop.
3168 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3170 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
3171 (DEF_RVV_VXRM_ENUM): New macro.
3172 (handle_pragma_vector): Add vxrm enum register.
3173 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
3179 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
3181 * value-range.h (Value_Range::operator=): New.
3183 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
3185 * value-range.cc (vrange::operator=): Add a stub to copy
3187 * value-range.h (is_a <unsupported_range>): New.
3188 (Value_Range::operator=): Support copying unsupported ranges.
3190 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
3192 * data-streamer-in.cc (streamer_read_real_value): New.
3193 (streamer_read_value_range): New.
3194 * data-streamer-out.cc (streamer_write_real_value): New.
3195 (streamer_write_vrange): New.
3196 * data-streamer.h (streamer_write_vrange): New.
3197 (streamer_read_value_range): New.
3199 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
3202 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
3203 is ignored for a fixed underlying type.
3204 (C++ Dialect Options): Likewise for -fstrict-enums.
3206 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
3208 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
3211 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3213 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
3215 (s390_atomic_align_for_mode): New.
3217 2023-05-17 Jakub Jelinek <jakub@redhat.com>
3219 * wide-int.cc (wi::from_array): Add missing closing paren in function
3222 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
3224 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
3225 suggested unroll factor once the previous analysis fails.
3227 2023-05-17 Pan Li <pan2.li@intel.com>
3229 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
3231 (main): Add bool1 to the type indexer.
3232 * config/riscv/riscv-vector-builtins-functions.def
3233 (vreinterpret): Register vbool1 interpret function.
3234 * config/riscv/riscv-vector-builtins-types.def
3235 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
3236 (vint8m1_t): Add the type to bool1_interpret_ops.
3237 (vint16m1_t): Ditto.
3238 (vint32m1_t): Ditto.
3239 (vint64m1_t): Ditto.
3240 (vuint8m1_t): Ditto.
3241 (vuint16m1_t): Ditto.
3242 (vuint32m1_t): Ditto.
3243 (vuint64m1_t): Ditto.
3244 * config/riscv/riscv-vector-builtins.cc
3245 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
3246 (required_extensions_p): Add bool1 interpret case.
3247 * config/riscv/riscv-vector-builtins.def
3248 (bool1_interpret): Add bool1 interpret to base type.
3249 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
3250 with VB dest for vreinterpret.
3252 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
3255 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
3256 constants through "lis; xoris".
3258 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
3260 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
3261 default rs6000 target pass for O2 and above.
3262 * doc/invoke.texi: Document -free
3264 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
3266 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
3267 Fix wrong select_kind...
3269 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3271 * config/s390/s390-protos.h (s390_expand_setmem): Change
3273 * config/s390/s390.cc (s390_expand_setmem): For memset's less
3274 than or equal to 256 byte do not perform a libc call.
3275 * config/s390/s390.md: Change expander into a version which
3278 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3280 * config/s390/s390-protos.h (s390_expand_movmem): New.
3281 * config/s390/s390.cc (s390_expand_movmem): New.
3282 * config/s390/s390.md (movmem<mode>): New.
3286 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
3288 * config/s390/s390-protos.h (s390_expand_cpymem): Change
3290 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
3291 than or equal to 256 byte do not perform a libc call.
3292 (s390_expand_insv): Adapt new function signature of
3294 * config/s390/s390.md: Change expander into a version which
3297 2023-05-16 Andrew Pinski <apinski@marvell.com>
3299 PR tree-optimization/109424
3300 * match.pd: Add patterns for min/max of zero_one_valued
3303 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3305 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
3306 * config/riscv/riscv-vector-builtins.cc
3307 (function_expander::use_ternop_insn): Add default rounding mode.
3308 (function_expander::use_widen_ternop_insn): Ditto.
3309 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
3310 (riscv_hard_regno_mode_ok): Ditto.
3311 (riscv_conditional_register_usage): Ditto.
3312 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
3314 (RISCV_DWARF_FRM): Ditto.
3315 * config/riscv/riscv.md: Ditto.
3316 * config/riscv/vector-iterators.md: split no frm and has frm operations.
3317 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
3318 (@pred_<optab><mode>): Ditto.
3320 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
3322 PR tree-optimization/109695
3323 * value-range.cc (irange::operator=): Resize range.
3324 (irange::union_): Same.
3325 (irange::intersect): Same.
3326 (irange::invert): Same.
3327 (int_range_max): Default to 3 sub-ranges and resize as needed.
3328 * value-range.h (irange::maybe_resize): New.
3330 (int_range::int_range): Adjust for resizing.
3331 (int_range::operator=): Same.
3333 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
3335 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
3337 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
3340 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3342 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
3343 * config/riscv/riscv-vector-builtins.cc
3344 (function_expander::use_exact_insn): Add default rounding mode operand.
3345 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
3346 (riscv_hard_regno_mode_ok): Ditto.
3347 (riscv_conditional_register_usage): Ditto.
3348 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
3349 (VXRM_REG_P): Ditto.
3350 (RISCV_DWARF_VXRM): Ditto.
3351 * config/riscv/riscv.md: Ditto.
3352 * config/riscv/vector.md: Ditto
3354 2023-05-15 Pan Li <pan2.li@intel.com>
3356 * optabs.cc (maybe_gen_insn): Add case to generate instruction
3357 that has 11 operands.
3359 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3361 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
3362 logic for vector modes.
3364 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3367 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
3368 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
3369 (aarch64_cmtst<mode>): Rename to...
3370 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
3371 (*aarch64_cmtst_same_<mode>): Rename to...
3372 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
3373 (*aarch64_cmtstdi): Rename to...
3374 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
3375 (aarch64_fac<optab><mode>): Rename to...
3376 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
3378 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3381 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
3382 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
3384 2023-05-15 Pan Li <pan2.li@intel.com>
3385 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3386 kito-cheng <kito.cheng@sifive.com>
3388 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
3389 deciding the mode is constant or not.
3390 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
3392 2023-05-15 Richard Biener <rguenther@suse.de>
3394 PR tree-optimization/109848
3395 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
3396 TARGET_MEM_REF address preparation before the store, not
3399 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3401 * config/riscv/riscv.cc
3402 (riscv_vectorize_preferred_vector_alignment): New function.
3403 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
3405 2023-05-14 Andrew Pinski <apinski@marvell.com>
3407 PR tree-optimization/109829
3408 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
3410 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
3413 * config/i386/i386.cc: Revert the 2023-05-11 change.
3414 (ix86_widen_mult_cost): Return high value instead of
3415 ICEing for unsupported modes.
3417 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
3419 * config/i386/i386.cc (x86_function_profiler): Take
3420 ix86_direct_extern_access into account when generating calls
3423 2023-05-14 Pan Li <pan2.li@intel.com>
3425 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
3426 Refactor the or pattern to switch cases.
3428 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3430 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
3431 aarch64_expand_vector_init to this, and remove interleaving case.
3432 Recursively call aarch64_expand_vector_init_fallback, instead of
3433 aarch64_expand_vector_init.
3434 (aarch64_unzip_vector_init): New function.
3435 (aarch64_expand_vector_init): Likewise.
3437 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
3439 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
3440 Pull out function call from the gcc_assert.
3442 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
3444 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
3445 (policy_to_str): New.
3446 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
3448 2023-05-13 Andrew Pinski <apinski@marvell.com>
3450 PR tree-optimization/109834
3451 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
3452 (popcount(rotate(x,y))->popcount(x)): Likewise.
3454 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
3456 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
3457 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
3458 gen_extend_insn to generate zero/sign extension instructions.
3460 (ix86_expand_vecop_qihi): Initialize interleave functions
3461 for MULT code only. Fix comments.
3463 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
3466 * config/i386/mmx.md (mulv2si3): Remove expander.
3467 (mulv2si3): Rename insn pattern from *mulv2si.
3469 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
3472 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
3473 '!lto_stream_offload_p'.
3475 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
3476 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3479 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
3480 (local_avl_compatible_p): New.
3481 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
3482 for LCM, rewrite as a backward algorithm.
3483 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
3484 interface, handle a BB at once.
3486 2023-05-12 Richard Biener <rguenther@suse.de>
3488 PR tree-optimization/64731
3489 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
3490 handle TARGET_MEM_REF destinations of stores from vector
3493 2023-05-12 Richard Biener <rguenther@suse.de>
3495 PR tree-optimization/109791
3496 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
3498 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
3501 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3503 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
3504 * config/arm/arm-mve-builtins-base.def (vsriq): New.
3505 * config/arm/arm-mve-builtins-base.h (vsriq): New.
3506 * config/arm/arm-mve-builtins.cc
3507 (function_instance::has_inactive_argument): Handle vsriq.
3508 * config/arm/arm_mve.h (vsriq): Remove.
3510 (vsriq_n_u8): Remove.
3511 (vsriq_n_s8): Remove.
3512 (vsriq_n_u16): Remove.
3513 (vsriq_n_s16): Remove.
3514 (vsriq_n_u32): Remove.
3515 (vsriq_n_s32): Remove.
3516 (vsriq_m_n_s8): Remove.
3517 (vsriq_m_n_u8): Remove.
3518 (vsriq_m_n_s16): Remove.
3519 (vsriq_m_n_u16): Remove.
3520 (vsriq_m_n_s32): Remove.
3521 (vsriq_m_n_u32): Remove.
3522 (__arm_vsriq_n_u8): Remove.
3523 (__arm_vsriq_n_s8): Remove.
3524 (__arm_vsriq_n_u16): Remove.
3525 (__arm_vsriq_n_s16): Remove.
3526 (__arm_vsriq_n_u32): Remove.
3527 (__arm_vsriq_n_s32): Remove.
3528 (__arm_vsriq_m_n_s8): Remove.
3529 (__arm_vsriq_m_n_u8): Remove.
3530 (__arm_vsriq_m_n_s16): Remove.
3531 (__arm_vsriq_m_n_u16): Remove.
3532 (__arm_vsriq_m_n_s32): Remove.
3533 (__arm_vsriq_m_n_u32): Remove.
3534 (__arm_vsriq): Remove.
3535 (__arm_vsriq_m): Remove.
3537 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3539 * config/arm/iterators.md (mve_insn): Add vsri.
3540 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
3541 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
3542 (mve_vsriq_m_n_<supf><mode>): Rename into ...
3543 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3545 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3547 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
3548 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
3550 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3552 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
3553 * config/arm/arm-mve-builtins-base.def (vsliq): New.
3554 * config/arm/arm-mve-builtins-base.h (vsliq): New.
3555 * config/arm/arm-mve-builtins.cc
3556 (function_instance::has_inactive_argument): Handle vsliq.
3557 * config/arm/arm_mve.h (vsliq): Remove.
3559 (vsliq_n_u8): Remove.
3560 (vsliq_n_s8): Remove.
3561 (vsliq_n_u16): Remove.
3562 (vsliq_n_s16): Remove.
3563 (vsliq_n_u32): Remove.
3564 (vsliq_n_s32): Remove.
3565 (vsliq_m_n_s8): Remove.
3566 (vsliq_m_n_s32): Remove.
3567 (vsliq_m_n_s16): Remove.
3568 (vsliq_m_n_u8): Remove.
3569 (vsliq_m_n_u32): Remove.
3570 (vsliq_m_n_u16): Remove.
3571 (__arm_vsliq_n_u8): Remove.
3572 (__arm_vsliq_n_s8): Remove.
3573 (__arm_vsliq_n_u16): Remove.
3574 (__arm_vsliq_n_s16): Remove.
3575 (__arm_vsliq_n_u32): Remove.
3576 (__arm_vsliq_n_s32): Remove.
3577 (__arm_vsliq_m_n_s8): Remove.
3578 (__arm_vsliq_m_n_s32): Remove.
3579 (__arm_vsliq_m_n_s16): Remove.
3580 (__arm_vsliq_m_n_u8): Remove.
3581 (__arm_vsliq_m_n_u32): Remove.
3582 (__arm_vsliq_m_n_u16): Remove.
3583 (__arm_vsliq): Remove.
3584 (__arm_vsliq_m): Remove.
3586 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3588 * config/arm/iterators.md (mve_insn>): Add vsli.
3589 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
3590 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3591 (mve_vsliq_m_n_<supf><mode>): Rename into ...
3592 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3594 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3596 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
3597 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
3599 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3601 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
3602 * config/arm/arm-mve-builtins-base.def (vpselq): New.
3603 * config/arm/arm-mve-builtins-base.h (vpselq): New.
3604 * config/arm/arm_mve.h (vpselq): Remove.
3605 (vpselq_u8): Remove.
3606 (vpselq_s8): Remove.
3607 (vpselq_u16): Remove.
3608 (vpselq_s16): Remove.
3609 (vpselq_u32): Remove.
3610 (vpselq_s32): Remove.
3611 (vpselq_u64): Remove.
3612 (vpselq_s64): Remove.
3613 (vpselq_f16): Remove.
3614 (vpselq_f32): Remove.
3615 (__arm_vpselq_u8): Remove.
3616 (__arm_vpselq_s8): Remove.
3617 (__arm_vpselq_u16): Remove.
3618 (__arm_vpselq_s16): Remove.
3619 (__arm_vpselq_u32): Remove.
3620 (__arm_vpselq_s32): Remove.
3621 (__arm_vpselq_u64): Remove.
3622 (__arm_vpselq_s64): Remove.
3623 (__arm_vpselq_f16): Remove.
3624 (__arm_vpselq_f32): Remove.
3625 (__arm_vpselq): Remove.
3627 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3629 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
3630 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
3632 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3634 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
3636 * config/arm/iterators.md (MVE_VPSELQ_F): New.
3637 (mve_insn): Add vpsel.
3638 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
3639 (@mve_<mve_insn>q_<supf><mode>): ... this.
3640 (@mve_vpselq_f<mode>): Rename into ...
3641 (@mve_<mve_insn>q_f<mode>): ... this.
3643 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3645 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
3646 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
3647 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
3648 * config/arm/arm-mve-builtins.cc
3649 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
3651 * config/arm/arm_mve.h (vfmaq): Remove.
3657 (vfmaq_f16): Remove.
3658 (vfmaq_n_f16): Remove.
3659 (vfmasq_n_f16): Remove.
3660 (vfmsq_f16): Remove.
3661 (vfmaq_f32): Remove.
3662 (vfmaq_n_f32): Remove.
3663 (vfmasq_n_f32): Remove.
3664 (vfmsq_f32): Remove.
3665 (vfmaq_m_f32): Remove.
3666 (vfmaq_m_f16): Remove.
3667 (vfmaq_m_n_f32): Remove.
3668 (vfmaq_m_n_f16): Remove.
3669 (vfmasq_m_n_f32): Remove.
3670 (vfmasq_m_n_f16): Remove.
3671 (vfmsq_m_f32): Remove.
3672 (vfmsq_m_f16): Remove.
3673 (__arm_vfmaq_f16): Remove.
3674 (__arm_vfmaq_n_f16): Remove.
3675 (__arm_vfmasq_n_f16): Remove.
3676 (__arm_vfmsq_f16): Remove.
3677 (__arm_vfmaq_f32): Remove.
3678 (__arm_vfmaq_n_f32): Remove.
3679 (__arm_vfmasq_n_f32): Remove.
3680 (__arm_vfmsq_f32): Remove.
3681 (__arm_vfmaq_m_f32): Remove.
3682 (__arm_vfmaq_m_f16): Remove.
3683 (__arm_vfmaq_m_n_f32): Remove.
3684 (__arm_vfmaq_m_n_f16): Remove.
3685 (__arm_vfmasq_m_n_f32): Remove.
3686 (__arm_vfmasq_m_n_f16): Remove.
3687 (__arm_vfmsq_m_f32): Remove.
3688 (__arm_vfmsq_m_f16): Remove.
3689 (__arm_vfmaq): Remove.
3690 (__arm_vfmasq): Remove.
3691 (__arm_vfmsq): Remove.
3692 (__arm_vfmaq_m): Remove.
3693 (__arm_vfmasq_m): Remove.
3694 (__arm_vfmsq_m): Remove.
3696 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3698 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
3700 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
3701 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
3702 (mve_insn): Add vfma, vfmas, vfms.
3703 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
3705 (@mve_<mve_insn>q_f<mode>): ... this.
3706 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
3707 (@mve_<mve_insn>q_n_f<mode>): ... this.
3708 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
3709 @mve_<mve_insn>q_m_f<mode>.
3710 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
3711 @mve_<mve_insn>q_m_n_f<mode>.
3713 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3715 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
3716 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
3718 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3720 * config/arm/arm-mve-builtins-base.cc
3721 (FUNCTION_WITH_RTX_M_N_NO_F): New.
3723 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
3724 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
3725 * config/arm/arm_mve.h (vmvnq): Remove.
3729 (vmvnq_s16): Remove.
3730 (vmvnq_s32): Remove.
3731 (vmvnq_n_s16): Remove.
3732 (vmvnq_n_s32): Remove.
3734 (vmvnq_u16): Remove.
3735 (vmvnq_u32): Remove.
3736 (vmvnq_n_u16): Remove.
3737 (vmvnq_n_u32): Remove.
3738 (vmvnq_m_u8): Remove.
3739 (vmvnq_m_s8): Remove.
3740 (vmvnq_m_u16): Remove.
3741 (vmvnq_m_s16): Remove.
3742 (vmvnq_m_u32): Remove.
3743 (vmvnq_m_s32): Remove.
3744 (vmvnq_m_n_s16): Remove.
3745 (vmvnq_m_n_u16): Remove.
3746 (vmvnq_m_n_s32): Remove.
3747 (vmvnq_m_n_u32): Remove.
3748 (vmvnq_x_s8): Remove.
3749 (vmvnq_x_s16): Remove.
3750 (vmvnq_x_s32): Remove.
3751 (vmvnq_x_u8): Remove.
3752 (vmvnq_x_u16): Remove.
3753 (vmvnq_x_u32): Remove.
3754 (vmvnq_x_n_s16): Remove.
3755 (vmvnq_x_n_s32): Remove.
3756 (vmvnq_x_n_u16): Remove.
3757 (vmvnq_x_n_u32): Remove.
3758 (__arm_vmvnq_s8): Remove.
3759 (__arm_vmvnq_s16): Remove.
3760 (__arm_vmvnq_s32): Remove.
3761 (__arm_vmvnq_n_s16): Remove.
3762 (__arm_vmvnq_n_s32): Remove.
3763 (__arm_vmvnq_u8): Remove.
3764 (__arm_vmvnq_u16): Remove.
3765 (__arm_vmvnq_u32): Remove.
3766 (__arm_vmvnq_n_u16): Remove.
3767 (__arm_vmvnq_n_u32): Remove.
3768 (__arm_vmvnq_m_u8): Remove.
3769 (__arm_vmvnq_m_s8): Remove.
3770 (__arm_vmvnq_m_u16): Remove.
3771 (__arm_vmvnq_m_s16): Remove.
3772 (__arm_vmvnq_m_u32): Remove.
3773 (__arm_vmvnq_m_s32): Remove.
3774 (__arm_vmvnq_m_n_s16): Remove.
3775 (__arm_vmvnq_m_n_u16): Remove.
3776 (__arm_vmvnq_m_n_s32): Remove.
3777 (__arm_vmvnq_m_n_u32): Remove.
3778 (__arm_vmvnq_x_s8): Remove.
3779 (__arm_vmvnq_x_s16): Remove.
3780 (__arm_vmvnq_x_s32): Remove.
3781 (__arm_vmvnq_x_u8): Remove.
3782 (__arm_vmvnq_x_u16): Remove.
3783 (__arm_vmvnq_x_u32): Remove.
3784 (__arm_vmvnq_x_n_s16): Remove.
3785 (__arm_vmvnq_x_n_s32): Remove.
3786 (__arm_vmvnq_x_n_u16): Remove.
3787 (__arm_vmvnq_x_n_u32): Remove.
3788 (__arm_vmvnq): Remove.
3789 (__arm_vmvnq_m): Remove.
3790 (__arm_vmvnq_x): Remove.
3792 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3794 * config/arm/iterators.md (mve_insn): Add vmvn.
3795 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
3796 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3797 (mve_vmvnq_m_<supf><mode>): Rename into ...
3798 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
3799 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
3800 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3802 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3804 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
3805 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
3807 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3809 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
3810 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
3811 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
3812 * config/arm/arm_mve.h (vbrsrq): Remove.
3815 (vbrsrq_n_f16): Remove.
3816 (vbrsrq_n_f32): Remove.
3817 (vbrsrq_n_u8): Remove.
3818 (vbrsrq_n_s8): Remove.
3819 (vbrsrq_n_u16): Remove.
3820 (vbrsrq_n_s16): Remove.
3821 (vbrsrq_n_u32): Remove.
3822 (vbrsrq_n_s32): Remove.
3823 (vbrsrq_m_n_s8): Remove.
3824 (vbrsrq_m_n_s32): Remove.
3825 (vbrsrq_m_n_s16): Remove.
3826 (vbrsrq_m_n_u8): Remove.
3827 (vbrsrq_m_n_u32): Remove.
3828 (vbrsrq_m_n_u16): Remove.
3829 (vbrsrq_m_n_f32): Remove.
3830 (vbrsrq_m_n_f16): Remove.
3831 (vbrsrq_x_n_s8): Remove.
3832 (vbrsrq_x_n_s16): Remove.
3833 (vbrsrq_x_n_s32): Remove.
3834 (vbrsrq_x_n_u8): Remove.
3835 (vbrsrq_x_n_u16): Remove.
3836 (vbrsrq_x_n_u32): Remove.
3837 (vbrsrq_x_n_f16): Remove.
3838 (vbrsrq_x_n_f32): Remove.
3839 (__arm_vbrsrq_n_u8): Remove.
3840 (__arm_vbrsrq_n_s8): Remove.
3841 (__arm_vbrsrq_n_u16): Remove.
3842 (__arm_vbrsrq_n_s16): Remove.
3843 (__arm_vbrsrq_n_u32): Remove.
3844 (__arm_vbrsrq_n_s32): Remove.
3845 (__arm_vbrsrq_m_n_s8): Remove.
3846 (__arm_vbrsrq_m_n_s32): Remove.
3847 (__arm_vbrsrq_m_n_s16): Remove.
3848 (__arm_vbrsrq_m_n_u8): Remove.
3849 (__arm_vbrsrq_m_n_u32): Remove.
3850 (__arm_vbrsrq_m_n_u16): Remove.
3851 (__arm_vbrsrq_x_n_s8): Remove.
3852 (__arm_vbrsrq_x_n_s16): Remove.
3853 (__arm_vbrsrq_x_n_s32): Remove.
3854 (__arm_vbrsrq_x_n_u8): Remove.
3855 (__arm_vbrsrq_x_n_u16): Remove.
3856 (__arm_vbrsrq_x_n_u32): Remove.
3857 (__arm_vbrsrq_n_f16): Remove.
3858 (__arm_vbrsrq_n_f32): Remove.
3859 (__arm_vbrsrq_m_n_f32): Remove.
3860 (__arm_vbrsrq_m_n_f16): Remove.
3861 (__arm_vbrsrq_x_n_f16): Remove.
3862 (__arm_vbrsrq_x_n_f32): Remove.
3863 (__arm_vbrsrq): Remove.
3864 (__arm_vbrsrq_m): Remove.
3865 (__arm_vbrsrq_x): Remove.
3867 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3869 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
3870 (mve_insn): Add vbrsr.
3871 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
3872 (@mve_<mve_insn>q_n_f<mode>): ... this.
3873 (mve_vbrsrq_n_<supf><mode>): Rename into ...
3874 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3875 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
3876 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3877 (mve_vbrsrq_m_n_f<mode>): Rename into ...
3878 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
3880 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3882 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
3883 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
3885 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3887 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
3888 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
3889 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
3890 * config/arm/arm_mve.h (vqshluq): Remove.
3891 (vqshluq_m): Remove.
3892 (vqshluq_n_s8): Remove.
3893 (vqshluq_n_s16): Remove.
3894 (vqshluq_n_s32): Remove.
3895 (vqshluq_m_n_s8): Remove.
3896 (vqshluq_m_n_s16): Remove.
3897 (vqshluq_m_n_s32): Remove.
3898 (__arm_vqshluq_n_s8): Remove.
3899 (__arm_vqshluq_n_s16): Remove.
3900 (__arm_vqshluq_n_s32): Remove.
3901 (__arm_vqshluq_m_n_s8): Remove.
3902 (__arm_vqshluq_m_n_s16): Remove.
3903 (__arm_vqshluq_m_n_s32): Remove.
3904 (__arm_vqshluq): Remove.
3905 (__arm_vqshluq_m): Remove.
3907 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3909 * config/arm/iterators.md (mve_insn): Add vqshlu.
3910 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
3911 (VQSHLUQ_M_N, VQSHLUQ_N): New.
3912 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
3913 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
3914 (mve_vqshluq_m_n_s<mode>): Change name into ...
3915 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
3917 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3919 * config/arm/arm-mve-builtins-shapes.cc
3920 (binary_lshift_unsigned): New.
3921 * config/arm/arm-mve-builtins-shapes.h
3922 (binary_lshift_unsigned): New.
3924 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3926 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
3927 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3928 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
3929 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3930 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
3931 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
3932 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
3933 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
3934 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
3935 (vrmlaldavhaxq): Remove.
3936 (vrmlsldavhaq): Remove.
3937 (vrmlsldavhaxq): Remove.
3938 (vrmlaldavhaq_p): Remove.
3939 (vrmlaldavhaxq_p): Remove.
3940 (vrmlsldavhaq_p): Remove.
3941 (vrmlsldavhaxq_p): Remove.
3942 (vrmlaldavhaq_s32): Remove.
3943 (vrmlaldavhaq_u32): Remove.
3944 (vrmlaldavhaxq_s32): Remove.
3945 (vrmlsldavhaq_s32): Remove.
3946 (vrmlsldavhaxq_s32): Remove.
3947 (vrmlaldavhaq_p_s32): Remove.
3948 (vrmlaldavhaq_p_u32): Remove.
3949 (vrmlaldavhaxq_p_s32): Remove.
3950 (vrmlsldavhaq_p_s32): Remove.
3951 (vrmlsldavhaxq_p_s32): Remove.
3952 (__arm_vrmlaldavhaq_s32): Remove.
3953 (__arm_vrmlaldavhaq_u32): Remove.
3954 (__arm_vrmlaldavhaxq_s32): Remove.
3955 (__arm_vrmlsldavhaq_s32): Remove.
3956 (__arm_vrmlsldavhaxq_s32): Remove.
3957 (__arm_vrmlaldavhaq_p_s32): Remove.
3958 (__arm_vrmlaldavhaq_p_u32): Remove.
3959 (__arm_vrmlaldavhaxq_p_s32): Remove.
3960 (__arm_vrmlsldavhaq_p_s32): Remove.
3961 (__arm_vrmlsldavhaxq_p_s32): Remove.
3962 (__arm_vrmlaldavhaq): Remove.
3963 (__arm_vrmlaldavhaxq): Remove.
3964 (__arm_vrmlsldavhaq): Remove.
3965 (__arm_vrmlsldavhaxq): Remove.
3966 (__arm_vrmlaldavhaq_p): Remove.
3967 (__arm_vrmlaldavhaxq_p): Remove.
3968 (__arm_vrmlsldavhaq_p): Remove.
3969 (__arm_vrmlsldavhaxq_p): Remove.
3971 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3973 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
3974 (MVE_VRMLxLDAVHAxQ_P): New.
3975 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
3977 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
3978 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
3980 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
3981 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
3982 (mve_vrmlsldavhaq_sv4si): Merge into ...
3983 (@mve_<mve_insn>q_<supf>v4si): ... this.
3984 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
3985 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
3986 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
3987 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
3989 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
3991 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
3992 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
3994 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
3995 * config/arm/arm_mve.h (vqdmulltq): Remove.
3996 (vqdmullbq): Remove.
3997 (vqdmullbq_m): Remove.
3998 (vqdmulltq_m): Remove.
3999 (vqdmulltq_s16): Remove.
4000 (vqdmulltq_n_s16): Remove.
4001 (vqdmullbq_s16): Remove.
4002 (vqdmullbq_n_s16): Remove.
4003 (vqdmulltq_s32): Remove.
4004 (vqdmulltq_n_s32): Remove.
4005 (vqdmullbq_s32): Remove.
4006 (vqdmullbq_n_s32): Remove.
4007 (vqdmullbq_m_n_s32): Remove.
4008 (vqdmullbq_m_n_s16): Remove.
4009 (vqdmullbq_m_s32): Remove.
4010 (vqdmullbq_m_s16): Remove.
4011 (vqdmulltq_m_n_s32): Remove.
4012 (vqdmulltq_m_n_s16): Remove.
4013 (vqdmulltq_m_s32): Remove.
4014 (vqdmulltq_m_s16): Remove.
4015 (__arm_vqdmulltq_s16): Remove.
4016 (__arm_vqdmulltq_n_s16): Remove.
4017 (__arm_vqdmullbq_s16): Remove.
4018 (__arm_vqdmullbq_n_s16): Remove.
4019 (__arm_vqdmulltq_s32): Remove.
4020 (__arm_vqdmulltq_n_s32): Remove.
4021 (__arm_vqdmullbq_s32): Remove.
4022 (__arm_vqdmullbq_n_s32): Remove.
4023 (__arm_vqdmullbq_m_n_s32): Remove.
4024 (__arm_vqdmullbq_m_n_s16): Remove.
4025 (__arm_vqdmullbq_m_s32): Remove.
4026 (__arm_vqdmullbq_m_s16): Remove.
4027 (__arm_vqdmulltq_m_n_s32): Remove.
4028 (__arm_vqdmulltq_m_n_s16): Remove.
4029 (__arm_vqdmulltq_m_s32): Remove.
4030 (__arm_vqdmulltq_m_s16): Remove.
4031 (__arm_vqdmulltq): Remove.
4032 (__arm_vqdmullbq): Remove.
4033 (__arm_vqdmullbq_m): Remove.
4034 (__arm_vqdmulltq_m): Remove.
4036 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4038 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
4039 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
4040 (mve_insn): Add vqdmullb, vqdmullt.
4041 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
4042 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
4044 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
4045 (mve_vqdmulltq_n_s<mode>): Merge into ...
4046 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4047 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
4048 (@mve_<mve_insn>q_<supf><mode>): ... this.
4049 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
4051 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
4052 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
4053 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
4055 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
4057 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
4058 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
4060 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
4062 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
4063 Drop unused parameter.
4064 (riscv_select_multilib): Ditto.
4065 (riscv_compute_multilib): Update call site of
4066 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
4068 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
4070 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
4071 * config/riscv/riscv-protos.h (expand_vec_init): New function.
4072 * config/riscv/riscv-v.cc (class rvv_builder): New class.
4073 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
4074 (rvv_builder::get_merged_repeating_sequence): Ditto.
4075 (expand_vector_init_insert_elems): Ditto.
4076 (expand_vec_init): Ditto.
4077 * config/riscv/vector-iterators.md: New attribute.
4079 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
4081 * config/rs6000/rs6000-builtins.def
4082 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
4084 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
4085 xsiexpdpf to xsiexpdpf_di.
4086 * config/rs6000/vsx.md (xsiexpdp): Rename to...
4087 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
4088 replace TARGET_64BIT with TARGET_POWERPC64.
4089 (xsiexpdpf): Rename to...
4090 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
4091 replace TARGET_64BIT with TARGET_POWERPC64.
4093 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
4095 * config/rs6000/rs6000-builtins.def
4096 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
4098 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
4101 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
4103 * config/rs6000/rs6000-builtins.def
4104 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
4105 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
4107 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
4108 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
4110 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
4111 requirement when it has a 64-bit argument.
4113 2023-05-12 Pan Li <pan2.li@intel.com>
4114 Richard Sandiford <richard.sandiford@arm.com>
4115 Richard Biener <rguenther@suse.de>
4116 Jakub Jelinek <jakub@redhat.com>
4118 * mux-utils.h: Add overload operator == and != for pointer_mux.
4119 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
4120 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
4121 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
4122 (dv_as_decl): Ditto.
4123 (dv_as_opaque): Removed due to unnecessary.
4124 (struct variable_hasher): Take decl_or_value as compare_type.
4125 (variable_hasher::equal): Diito.
4126 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
4127 (dv_from_value): Ditto.
4128 (attrs_list_member): Ditto.
4130 (var_reg_decl_set): Ditto.
4131 (var_reg_delete_and_set): Ditto.
4132 (find_loc_in_1pdv): Ditto.
4133 (canonicalize_values_star): Ditto.
4134 (variable_post_merge_new_vals): Ditto.
4135 (dump_onepart_variable_differences): Ditto.
4136 (variable_different_p): Ditto.
4137 (set_slot_part): Ditto.
4138 (clobber_slot_part): Ditto.
4139 (clobber_variable_part): Ditto.
4141 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
4143 * match.pd: simplify vector shift + bit_and + multiply.
4145 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4147 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
4148 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
4149 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
4150 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
4151 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
4152 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
4153 * config/arm/arm-mve-builtins.cc
4154 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
4155 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
4156 * config/arm/arm_mve.h (vqrdmlashq): Remove.
4157 (vqrdmlahq): Remove.
4158 (vqdmlashq): Remove.
4164 (vqdmlashq_m): Remove.
4165 (vqdmlahq_m): Remove.
4166 (vqrdmlahq_m): Remove.
4167 (vqrdmlashq_m): Remove.
4168 (vmlasq_n_u8): Remove.
4169 (vmlaq_n_u8): Remove.
4170 (vqrdmlashq_n_s8): Remove.
4171 (vqrdmlahq_n_s8): Remove.
4172 (vqdmlahq_n_s8): Remove.
4173 (vqdmlashq_n_s8): Remove.
4174 (vmlasq_n_s8): Remove.
4175 (vmlaq_n_s8): Remove.
4176 (vmlasq_n_u16): Remove.
4177 (vmlaq_n_u16): Remove.
4178 (vqrdmlashq_n_s16): Remove.
4179 (vqrdmlahq_n_s16): Remove.
4180 (vqdmlashq_n_s16): Remove.
4181 (vqdmlahq_n_s16): Remove.
4182 (vmlasq_n_s16): Remove.
4183 (vmlaq_n_s16): Remove.
4184 (vmlasq_n_u32): Remove.
4185 (vmlaq_n_u32): Remove.
4186 (vqrdmlashq_n_s32): Remove.
4187 (vqrdmlahq_n_s32): Remove.
4188 (vqdmlashq_n_s32): Remove.
4189 (vqdmlahq_n_s32): Remove.
4190 (vmlasq_n_s32): Remove.
4191 (vmlaq_n_s32): Remove.
4192 (vmlaq_m_n_s8): Remove.
4193 (vmlaq_m_n_s32): Remove.
4194 (vmlaq_m_n_s16): Remove.
4195 (vmlaq_m_n_u8): Remove.
4196 (vmlaq_m_n_u32): Remove.
4197 (vmlaq_m_n_u16): Remove.
4198 (vmlasq_m_n_s8): Remove.
4199 (vmlasq_m_n_s32): Remove.
4200 (vmlasq_m_n_s16): Remove.
4201 (vmlasq_m_n_u8): Remove.
4202 (vmlasq_m_n_u32): Remove.
4203 (vmlasq_m_n_u16): Remove.
4204 (vqdmlashq_m_n_s8): Remove.
4205 (vqdmlashq_m_n_s32): Remove.
4206 (vqdmlashq_m_n_s16): Remove.
4207 (vqdmlahq_m_n_s8): Remove.
4208 (vqdmlahq_m_n_s32): Remove.
4209 (vqdmlahq_m_n_s16): Remove.
4210 (vqrdmlahq_m_n_s8): Remove.
4211 (vqrdmlahq_m_n_s32): Remove.
4212 (vqrdmlahq_m_n_s16): Remove.
4213 (vqrdmlashq_m_n_s8): Remove.
4214 (vqrdmlashq_m_n_s32): Remove.
4215 (vqrdmlashq_m_n_s16): Remove.
4216 (__arm_vmlasq_n_u8): Remove.
4217 (__arm_vmlaq_n_u8): Remove.
4218 (__arm_vqrdmlashq_n_s8): Remove.
4219 (__arm_vqdmlashq_n_s8): Remove.
4220 (__arm_vqrdmlahq_n_s8): Remove.
4221 (__arm_vqdmlahq_n_s8): Remove.
4222 (__arm_vmlasq_n_s8): Remove.
4223 (__arm_vmlaq_n_s8): Remove.
4224 (__arm_vmlasq_n_u16): Remove.
4225 (__arm_vmlaq_n_u16): Remove.
4226 (__arm_vqrdmlashq_n_s16): Remove.
4227 (__arm_vqdmlashq_n_s16): Remove.
4228 (__arm_vqrdmlahq_n_s16): Remove.
4229 (__arm_vqdmlahq_n_s16): Remove.
4230 (__arm_vmlasq_n_s16): Remove.
4231 (__arm_vmlaq_n_s16): Remove.
4232 (__arm_vmlasq_n_u32): Remove.
4233 (__arm_vmlaq_n_u32): Remove.
4234 (__arm_vqrdmlashq_n_s32): Remove.
4235 (__arm_vqdmlashq_n_s32): Remove.
4236 (__arm_vqrdmlahq_n_s32): Remove.
4237 (__arm_vqdmlahq_n_s32): Remove.
4238 (__arm_vmlasq_n_s32): Remove.
4239 (__arm_vmlaq_n_s32): Remove.
4240 (__arm_vmlaq_m_n_s8): Remove.
4241 (__arm_vmlaq_m_n_s32): Remove.
4242 (__arm_vmlaq_m_n_s16): Remove.
4243 (__arm_vmlaq_m_n_u8): Remove.
4244 (__arm_vmlaq_m_n_u32): Remove.
4245 (__arm_vmlaq_m_n_u16): Remove.
4246 (__arm_vmlasq_m_n_s8): Remove.
4247 (__arm_vmlasq_m_n_s32): Remove.
4248 (__arm_vmlasq_m_n_s16): Remove.
4249 (__arm_vmlasq_m_n_u8): Remove.
4250 (__arm_vmlasq_m_n_u32): Remove.
4251 (__arm_vmlasq_m_n_u16): Remove.
4252 (__arm_vqdmlahq_m_n_s8): Remove.
4253 (__arm_vqdmlahq_m_n_s32): Remove.
4254 (__arm_vqdmlahq_m_n_s16): Remove.
4255 (__arm_vqrdmlahq_m_n_s8): Remove.
4256 (__arm_vqrdmlahq_m_n_s32): Remove.
4257 (__arm_vqrdmlahq_m_n_s16): Remove.
4258 (__arm_vqrdmlashq_m_n_s8): Remove.
4259 (__arm_vqrdmlashq_m_n_s32): Remove.
4260 (__arm_vqrdmlashq_m_n_s16): Remove.
4261 (__arm_vqdmlashq_m_n_s8): Remove.
4262 (__arm_vqdmlashq_m_n_s16): Remove.
4263 (__arm_vqdmlashq_m_n_s32): Remove.
4264 (__arm_vmlasq): Remove.
4265 (__arm_vmlaq): Remove.
4266 (__arm_vqrdmlashq): Remove.
4267 (__arm_vqdmlashq): Remove.
4268 (__arm_vqrdmlahq): Remove.
4269 (__arm_vqdmlahq): Remove.
4270 (__arm_vmlaq_m): Remove.
4271 (__arm_vmlasq_m): Remove.
4272 (__arm_vqdmlahq_m): Remove.
4273 (__arm_vqrdmlahq_m): Remove.
4274 (__arm_vqrdmlashq_m): Remove.
4275 (__arm_vqdmlashq_m): Remove.
4277 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4279 * config/arm/iterators.md (MVE_VMLxQ_N): New.
4280 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
4282 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
4284 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
4285 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
4286 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
4287 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
4288 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
4290 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4292 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
4293 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
4295 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4297 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
4298 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4300 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
4301 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4303 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
4304 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
4306 * config/arm/arm-mve-builtins.cc
4307 (function_instance::has_inactive_argument): Handle vqrdmladhq,
4308 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
4309 vqdmlsdhq, vqdmlsdhxq.
4310 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
4311 (vqrdmlsdhq): Remove.
4312 (vqrdmladhxq): Remove.
4313 (vqrdmladhq): Remove.
4314 (vqdmlsdhxq): Remove.
4315 (vqdmlsdhq): Remove.
4316 (vqdmladhxq): Remove.
4317 (vqdmladhq): Remove.
4318 (vqdmladhq_m): Remove.
4319 (vqdmladhxq_m): Remove.
4320 (vqdmlsdhq_m): Remove.
4321 (vqdmlsdhxq_m): Remove.
4322 (vqrdmladhq_m): Remove.
4323 (vqrdmladhxq_m): Remove.
4324 (vqrdmlsdhq_m): Remove.
4325 (vqrdmlsdhxq_m): Remove.
4326 (vqrdmlsdhxq_s8): Remove.
4327 (vqrdmlsdhq_s8): Remove.
4328 (vqrdmladhxq_s8): Remove.
4329 (vqrdmladhq_s8): Remove.
4330 (vqdmlsdhxq_s8): Remove.
4331 (vqdmlsdhq_s8): Remove.
4332 (vqdmladhxq_s8): Remove.
4333 (vqdmladhq_s8): Remove.
4334 (vqrdmlsdhxq_s16): Remove.
4335 (vqrdmlsdhq_s16): Remove.
4336 (vqrdmladhxq_s16): Remove.
4337 (vqrdmladhq_s16): Remove.
4338 (vqdmlsdhxq_s16): Remove.
4339 (vqdmlsdhq_s16): Remove.
4340 (vqdmladhxq_s16): Remove.
4341 (vqdmladhq_s16): Remove.
4342 (vqrdmlsdhxq_s32): Remove.
4343 (vqrdmlsdhq_s32): Remove.
4344 (vqrdmladhxq_s32): Remove.
4345 (vqrdmladhq_s32): Remove.
4346 (vqdmlsdhxq_s32): Remove.
4347 (vqdmlsdhq_s32): Remove.
4348 (vqdmladhxq_s32): Remove.
4349 (vqdmladhq_s32): Remove.
4350 (vqdmladhq_m_s8): Remove.
4351 (vqdmladhq_m_s32): Remove.
4352 (vqdmladhq_m_s16): Remove.
4353 (vqdmladhxq_m_s8): Remove.
4354 (vqdmladhxq_m_s32): Remove.
4355 (vqdmladhxq_m_s16): Remove.
4356 (vqdmlsdhq_m_s8): Remove.
4357 (vqdmlsdhq_m_s32): Remove.
4358 (vqdmlsdhq_m_s16): Remove.
4359 (vqdmlsdhxq_m_s8): Remove.
4360 (vqdmlsdhxq_m_s32): Remove.
4361 (vqdmlsdhxq_m_s16): Remove.
4362 (vqrdmladhq_m_s8): Remove.
4363 (vqrdmladhq_m_s32): Remove.
4364 (vqrdmladhq_m_s16): Remove.
4365 (vqrdmladhxq_m_s8): Remove.
4366 (vqrdmladhxq_m_s32): Remove.
4367 (vqrdmladhxq_m_s16): Remove.
4368 (vqrdmlsdhq_m_s8): Remove.
4369 (vqrdmlsdhq_m_s32): Remove.
4370 (vqrdmlsdhq_m_s16): Remove.
4371 (vqrdmlsdhxq_m_s8): Remove.
4372 (vqrdmlsdhxq_m_s32): Remove.
4373 (vqrdmlsdhxq_m_s16): Remove.
4374 (__arm_vqrdmlsdhxq_s8): Remove.
4375 (__arm_vqrdmlsdhq_s8): Remove.
4376 (__arm_vqrdmladhxq_s8): Remove.
4377 (__arm_vqrdmladhq_s8): Remove.
4378 (__arm_vqdmlsdhxq_s8): Remove.
4379 (__arm_vqdmlsdhq_s8): Remove.
4380 (__arm_vqdmladhxq_s8): Remove.
4381 (__arm_vqdmladhq_s8): Remove.
4382 (__arm_vqrdmlsdhxq_s16): Remove.
4383 (__arm_vqrdmlsdhq_s16): Remove.
4384 (__arm_vqrdmladhxq_s16): Remove.
4385 (__arm_vqrdmladhq_s16): Remove.
4386 (__arm_vqdmlsdhxq_s16): Remove.
4387 (__arm_vqdmlsdhq_s16): Remove.
4388 (__arm_vqdmladhxq_s16): Remove.
4389 (__arm_vqdmladhq_s16): Remove.
4390 (__arm_vqrdmlsdhxq_s32): Remove.
4391 (__arm_vqrdmlsdhq_s32): Remove.
4392 (__arm_vqrdmladhxq_s32): Remove.
4393 (__arm_vqrdmladhq_s32): Remove.
4394 (__arm_vqdmlsdhxq_s32): Remove.
4395 (__arm_vqdmlsdhq_s32): Remove.
4396 (__arm_vqdmladhxq_s32): Remove.
4397 (__arm_vqdmladhq_s32): Remove.
4398 (__arm_vqdmladhq_m_s8): Remove.
4399 (__arm_vqdmladhq_m_s32): Remove.
4400 (__arm_vqdmladhq_m_s16): Remove.
4401 (__arm_vqdmladhxq_m_s8): Remove.
4402 (__arm_vqdmladhxq_m_s32): Remove.
4403 (__arm_vqdmladhxq_m_s16): Remove.
4404 (__arm_vqdmlsdhq_m_s8): Remove.
4405 (__arm_vqdmlsdhq_m_s32): Remove.
4406 (__arm_vqdmlsdhq_m_s16): Remove.
4407 (__arm_vqdmlsdhxq_m_s8): Remove.
4408 (__arm_vqdmlsdhxq_m_s32): Remove.
4409 (__arm_vqdmlsdhxq_m_s16): Remove.
4410 (__arm_vqrdmladhq_m_s8): Remove.
4411 (__arm_vqrdmladhq_m_s32): Remove.
4412 (__arm_vqrdmladhq_m_s16): Remove.
4413 (__arm_vqrdmladhxq_m_s8): Remove.
4414 (__arm_vqrdmladhxq_m_s32): Remove.
4415 (__arm_vqrdmladhxq_m_s16): Remove.
4416 (__arm_vqrdmlsdhq_m_s8): Remove.
4417 (__arm_vqrdmlsdhq_m_s32): Remove.
4418 (__arm_vqrdmlsdhq_m_s16): Remove.
4419 (__arm_vqrdmlsdhxq_m_s8): Remove.
4420 (__arm_vqrdmlsdhxq_m_s32): Remove.
4421 (__arm_vqrdmlsdhxq_m_s16): Remove.
4422 (__arm_vqrdmlsdhxq): Remove.
4423 (__arm_vqrdmlsdhq): Remove.
4424 (__arm_vqrdmladhxq): Remove.
4425 (__arm_vqrdmladhq): Remove.
4426 (__arm_vqdmlsdhxq): Remove.
4427 (__arm_vqdmlsdhq): Remove.
4428 (__arm_vqdmladhxq): Remove.
4429 (__arm_vqdmladhq): Remove.
4430 (__arm_vqdmladhq_m): Remove.
4431 (__arm_vqdmladhxq_m): Remove.
4432 (__arm_vqdmlsdhq_m): Remove.
4433 (__arm_vqdmlsdhxq_m): Remove.
4434 (__arm_vqrdmladhq_m): Remove.
4435 (__arm_vqrdmladhxq_m): Remove.
4436 (__arm_vqrdmlsdhq_m): Remove.
4437 (__arm_vqrdmlsdhxq_m): Remove.
4439 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4441 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
4442 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
4443 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
4444 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
4445 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
4446 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
4447 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
4448 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
4449 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
4450 (mve_vqdmladhq_s<mode>): Merge into ...
4451 (@mve_<mve_insn>q_<supf><mode>): ... this.
4453 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4455 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
4456 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
4458 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4460 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
4461 (vmlsldavaq, vmlsldavaxq): New.
4462 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
4463 (vmlsldavaq, vmlsldavaxq): New.
4464 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
4465 (vmlsldavaq, vmlsldavaxq): New.
4466 * config/arm/arm_mve.h (vmlaldavaq): Remove.
4467 (vmlaldavaxq): Remove.
4468 (vmlsldavaq): Remove.
4469 (vmlsldavaxq): Remove.
4470 (vmlaldavaq_p): Remove.
4471 (vmlaldavaxq_p): Remove.
4472 (vmlsldavaq_p): Remove.
4473 (vmlsldavaxq_p): Remove.
4474 (vmlaldavaq_s16): Remove.
4475 (vmlaldavaxq_s16): Remove.
4476 (vmlsldavaq_s16): Remove.
4477 (vmlsldavaxq_s16): Remove.
4478 (vmlaldavaq_u16): Remove.
4479 (vmlaldavaq_s32): Remove.
4480 (vmlaldavaxq_s32): Remove.
4481 (vmlsldavaq_s32): Remove.
4482 (vmlsldavaxq_s32): Remove.
4483 (vmlaldavaq_u32): Remove.
4484 (vmlaldavaq_p_s32): Remove.
4485 (vmlaldavaq_p_s16): Remove.
4486 (vmlaldavaq_p_u32): Remove.
4487 (vmlaldavaq_p_u16): Remove.
4488 (vmlaldavaxq_p_s32): Remove.
4489 (vmlaldavaxq_p_s16): Remove.
4490 (vmlsldavaq_p_s32): Remove.
4491 (vmlsldavaq_p_s16): Remove.
4492 (vmlsldavaxq_p_s32): Remove.
4493 (vmlsldavaxq_p_s16): Remove.
4494 (__arm_vmlaldavaq_s16): Remove.
4495 (__arm_vmlaldavaxq_s16): Remove.
4496 (__arm_vmlsldavaq_s16): Remove.
4497 (__arm_vmlsldavaxq_s16): Remove.
4498 (__arm_vmlaldavaq_u16): Remove.
4499 (__arm_vmlaldavaq_s32): Remove.
4500 (__arm_vmlaldavaxq_s32): Remove.
4501 (__arm_vmlsldavaq_s32): Remove.
4502 (__arm_vmlsldavaxq_s32): Remove.
4503 (__arm_vmlaldavaq_u32): Remove.
4504 (__arm_vmlaldavaq_p_s32): Remove.
4505 (__arm_vmlaldavaq_p_s16): Remove.
4506 (__arm_vmlaldavaq_p_u32): Remove.
4507 (__arm_vmlaldavaq_p_u16): Remove.
4508 (__arm_vmlaldavaxq_p_s32): Remove.
4509 (__arm_vmlaldavaxq_p_s16): Remove.
4510 (__arm_vmlsldavaq_p_s32): Remove.
4511 (__arm_vmlsldavaq_p_s16): Remove.
4512 (__arm_vmlsldavaxq_p_s32): Remove.
4513 (__arm_vmlsldavaxq_p_s16): Remove.
4514 (__arm_vmlaldavaq): Remove.
4515 (__arm_vmlaldavaxq): Remove.
4516 (__arm_vmlsldavaq): Remove.
4517 (__arm_vmlsldavaxq): Remove.
4518 (__arm_vmlaldavaq_p): Remove.
4519 (__arm_vmlaldavaxq_p): Remove.
4520 (__arm_vmlsldavaq_p): Remove.
4521 (__arm_vmlsldavaxq_p): Remove.
4523 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4525 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
4527 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
4528 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
4529 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
4530 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
4531 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
4532 (mve_vmlaldavaxq_s<mode>): Merge into ...
4533 (@mve_<mve_insn>q_<supf><mode>): ... this.
4534 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
4535 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
4537 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4539 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4541 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
4542 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
4544 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4546 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
4547 (vrmlsldavhq, vrmlsldavhxq): New.
4548 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
4549 (vrmlsldavhq, vrmlsldavhxq): New.
4550 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
4551 (vrmlsldavhq, vrmlsldavhxq): New.
4552 * config/arm/arm-mve-builtins-functions.h
4553 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
4554 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
4555 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
4556 (vrmlsldavhxq): Remove.
4557 (vrmlsldavhq): Remove.
4558 (vrmlaldavhxq): Remove.
4559 (vrmlaldavhq_p): Remove.
4560 (vrmlaldavhxq_p): Remove.
4561 (vrmlsldavhq_p): Remove.
4562 (vrmlsldavhxq_p): Remove.
4563 (vrmlaldavhq_u32): Remove.
4564 (vrmlsldavhxq_s32): Remove.
4565 (vrmlsldavhq_s32): Remove.
4566 (vrmlaldavhxq_s32): Remove.
4567 (vrmlaldavhq_s32): Remove.
4568 (vrmlaldavhq_p_s32): Remove.
4569 (vrmlaldavhxq_p_s32): Remove.
4570 (vrmlsldavhq_p_s32): Remove.
4571 (vrmlsldavhxq_p_s32): Remove.
4572 (vrmlaldavhq_p_u32): Remove.
4573 (__arm_vrmlaldavhq_u32): Remove.
4574 (__arm_vrmlsldavhxq_s32): Remove.
4575 (__arm_vrmlsldavhq_s32): Remove.
4576 (__arm_vrmlaldavhxq_s32): Remove.
4577 (__arm_vrmlaldavhq_s32): Remove.
4578 (__arm_vrmlaldavhq_p_s32): Remove.
4579 (__arm_vrmlaldavhxq_p_s32): Remove.
4580 (__arm_vrmlsldavhq_p_s32): Remove.
4581 (__arm_vrmlsldavhxq_p_s32): Remove.
4582 (__arm_vrmlaldavhq_p_u32): Remove.
4583 (__arm_vrmlaldavhq): Remove.
4584 (__arm_vrmlsldavhxq): Remove.
4585 (__arm_vrmlsldavhq): Remove.
4586 (__arm_vrmlaldavhxq): Remove.
4587 (__arm_vrmlaldavhq_p): Remove.
4588 (__arm_vrmlaldavhxq_p): Remove.
4589 (__arm_vrmlsldavhq_p): Remove.
4590 (__arm_vrmlsldavhxq_p): Remove.
4592 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4594 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
4596 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
4597 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
4598 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
4599 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
4600 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
4601 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
4602 (@mve_<mve_insn>q_<supf>v4si): ... this.
4603 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
4604 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
4606 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4608 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4610 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
4611 (vmlsldavq, vmlsldavxq): New.
4612 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
4613 (vmlsldavq, vmlsldavxq): New.
4614 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
4615 (vmlsldavq, vmlsldavxq): New.
4616 * config/arm/arm_mve.h (vmlaldavq): Remove.
4617 (vmlsldavxq): Remove.
4618 (vmlsldavq): Remove.
4619 (vmlaldavxq): Remove.
4620 (vmlaldavq_p): Remove.
4621 (vmlaldavxq_p): Remove.
4622 (vmlsldavq_p): Remove.
4623 (vmlsldavxq_p): Remove.
4624 (vmlaldavq_u16): Remove.
4625 (vmlsldavxq_s16): Remove.
4626 (vmlsldavq_s16): Remove.
4627 (vmlaldavxq_s16): Remove.
4628 (vmlaldavq_s16): Remove.
4629 (vmlaldavq_u32): Remove.
4630 (vmlsldavxq_s32): Remove.
4631 (vmlsldavq_s32): Remove.
4632 (vmlaldavxq_s32): Remove.
4633 (vmlaldavq_s32): Remove.
4634 (vmlaldavq_p_s16): Remove.
4635 (vmlaldavxq_p_s16): Remove.
4636 (vmlsldavq_p_s16): Remove.
4637 (vmlsldavxq_p_s16): Remove.
4638 (vmlaldavq_p_u16): Remove.
4639 (vmlaldavq_p_s32): Remove.
4640 (vmlaldavxq_p_s32): Remove.
4641 (vmlsldavq_p_s32): Remove.
4642 (vmlsldavxq_p_s32): Remove.
4643 (vmlaldavq_p_u32): Remove.
4644 (__arm_vmlaldavq_u16): Remove.
4645 (__arm_vmlsldavxq_s16): Remove.
4646 (__arm_vmlsldavq_s16): Remove.
4647 (__arm_vmlaldavxq_s16): Remove.
4648 (__arm_vmlaldavq_s16): Remove.
4649 (__arm_vmlaldavq_u32): Remove.
4650 (__arm_vmlsldavxq_s32): Remove.
4651 (__arm_vmlsldavq_s32): Remove.
4652 (__arm_vmlaldavxq_s32): Remove.
4653 (__arm_vmlaldavq_s32): Remove.
4654 (__arm_vmlaldavq_p_s16): Remove.
4655 (__arm_vmlaldavxq_p_s16): Remove.
4656 (__arm_vmlsldavq_p_s16): Remove.
4657 (__arm_vmlsldavxq_p_s16): Remove.
4658 (__arm_vmlaldavq_p_u16): Remove.
4659 (__arm_vmlaldavq_p_s32): Remove.
4660 (__arm_vmlaldavxq_p_s32): Remove.
4661 (__arm_vmlsldavq_p_s32): Remove.
4662 (__arm_vmlsldavxq_p_s32): Remove.
4663 (__arm_vmlaldavq_p_u32): Remove.
4664 (__arm_vmlaldavq): Remove.
4665 (__arm_vmlsldavxq): Remove.
4666 (__arm_vmlsldavq): Remove.
4667 (__arm_vmlaldavxq): Remove.
4668 (__arm_vmlaldavq_p): Remove.
4669 (__arm_vmlaldavxq_p): Remove.
4670 (__arm_vmlsldavq_p): Remove.
4671 (__arm_vmlsldavxq_p): Remove.
4673 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4675 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
4676 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
4677 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
4678 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
4679 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
4680 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
4681 (mve_vmlsldavxq_s<mode>): Merge into ...
4682 (@mve_<mve_insn>q_<supf><mode>): ... this.
4683 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
4684 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
4686 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4688 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4690 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
4691 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
4693 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4695 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
4696 * config/arm/arm-mve-builtins-base.def (vabavq): New.
4697 * config/arm/arm-mve-builtins-base.h (vabavq): New.
4698 * config/arm/arm_mve.h (vabavq): Remove.
4700 (vabavq_s8): Remove.
4701 (vabavq_s16): Remove.
4702 (vabavq_s32): Remove.
4703 (vabavq_u8): Remove.
4704 (vabavq_u16): Remove.
4705 (vabavq_u32): Remove.
4706 (vabavq_p_s8): Remove.
4707 (vabavq_p_u8): Remove.
4708 (vabavq_p_s16): Remove.
4709 (vabavq_p_u16): Remove.
4710 (vabavq_p_s32): Remove.
4711 (vabavq_p_u32): Remove.
4712 (__arm_vabavq_s8): Remove.
4713 (__arm_vabavq_s16): Remove.
4714 (__arm_vabavq_s32): Remove.
4715 (__arm_vabavq_u8): Remove.
4716 (__arm_vabavq_u16): Remove.
4717 (__arm_vabavq_u32): Remove.
4718 (__arm_vabavq_p_s8): Remove.
4719 (__arm_vabavq_p_u8): Remove.
4720 (__arm_vabavq_p_s16): Remove.
4721 (__arm_vabavq_p_u16): Remove.
4722 (__arm_vabavq_p_s32): Remove.
4723 (__arm_vabavq_p_u32): Remove.
4724 (__arm_vabavq): Remove.
4725 (__arm_vabavq_p): Remove.
4727 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4729 * config/arm/iterators.md (mve_insn): Add vabav.
4730 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
4731 (@mve_<mve_insn>q_<supf><mode>): ... this,.
4732 (mve_vabavq_p_<supf><mode>): Rename into ...
4733 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
4735 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4737 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
4738 (vmlsdavaq, vmlsdavaxq): New.
4739 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
4740 (vmlsdavaq, vmlsdavaxq): New.
4741 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
4742 (vmlsdavaq, vmlsdavaxq): New.
4743 * config/arm/arm_mve.h (vmladavaq): Remove.
4744 (vmlsdavaxq): Remove.
4745 (vmlsdavaq): Remove.
4746 (vmladavaxq): Remove.
4747 (vmladavaq_p): Remove.
4748 (vmladavaxq_p): Remove.
4749 (vmlsdavaq_p): Remove.
4750 (vmlsdavaxq_p): Remove.
4751 (vmladavaq_u8): Remove.
4752 (vmlsdavaxq_s8): Remove.
4753 (vmlsdavaq_s8): Remove.
4754 (vmladavaxq_s8): Remove.
4755 (vmladavaq_s8): Remove.
4756 (vmladavaq_u16): Remove.
4757 (vmlsdavaxq_s16): Remove.
4758 (vmlsdavaq_s16): Remove.
4759 (vmladavaxq_s16): Remove.
4760 (vmladavaq_s16): Remove.
4761 (vmladavaq_u32): Remove.
4762 (vmlsdavaxq_s32): Remove.
4763 (vmlsdavaq_s32): Remove.
4764 (vmladavaxq_s32): Remove.
4765 (vmladavaq_s32): Remove.
4766 (vmladavaq_p_s8): Remove.
4767 (vmladavaq_p_s32): Remove.
4768 (vmladavaq_p_s16): Remove.
4769 (vmladavaq_p_u8): Remove.
4770 (vmladavaq_p_u32): Remove.
4771 (vmladavaq_p_u16): Remove.
4772 (vmladavaxq_p_s8): Remove.
4773 (vmladavaxq_p_s32): Remove.
4774 (vmladavaxq_p_s16): Remove.
4775 (vmlsdavaq_p_s8): Remove.
4776 (vmlsdavaq_p_s32): Remove.
4777 (vmlsdavaq_p_s16): Remove.
4778 (vmlsdavaxq_p_s8): Remove.
4779 (vmlsdavaxq_p_s32): Remove.
4780 (vmlsdavaxq_p_s16): Remove.
4781 (__arm_vmladavaq_u8): Remove.
4782 (__arm_vmlsdavaxq_s8): Remove.
4783 (__arm_vmlsdavaq_s8): Remove.
4784 (__arm_vmladavaxq_s8): Remove.
4785 (__arm_vmladavaq_s8): Remove.
4786 (__arm_vmladavaq_u16): Remove.
4787 (__arm_vmlsdavaxq_s16): Remove.
4788 (__arm_vmlsdavaq_s16): Remove.
4789 (__arm_vmladavaxq_s16): Remove.
4790 (__arm_vmladavaq_s16): Remove.
4791 (__arm_vmladavaq_u32): Remove.
4792 (__arm_vmlsdavaxq_s32): Remove.
4793 (__arm_vmlsdavaq_s32): Remove.
4794 (__arm_vmladavaxq_s32): Remove.
4795 (__arm_vmladavaq_s32): Remove.
4796 (__arm_vmladavaq_p_s8): Remove.
4797 (__arm_vmladavaq_p_s32): Remove.
4798 (__arm_vmladavaq_p_s16): Remove.
4799 (__arm_vmladavaq_p_u8): Remove.
4800 (__arm_vmladavaq_p_u32): Remove.
4801 (__arm_vmladavaq_p_u16): Remove.
4802 (__arm_vmladavaxq_p_s8): Remove.
4803 (__arm_vmladavaxq_p_s32): Remove.
4804 (__arm_vmladavaxq_p_s16): Remove.
4805 (__arm_vmlsdavaq_p_s8): Remove.
4806 (__arm_vmlsdavaq_p_s32): Remove.
4807 (__arm_vmlsdavaq_p_s16): Remove.
4808 (__arm_vmlsdavaxq_p_s8): Remove.
4809 (__arm_vmlsdavaxq_p_s32): Remove.
4810 (__arm_vmlsdavaxq_p_s16): Remove.
4811 (__arm_vmladavaq): Remove.
4812 (__arm_vmlsdavaxq): Remove.
4813 (__arm_vmlsdavaq): Remove.
4814 (__arm_vmladavaxq): Remove.
4815 (__arm_vmladavaq_p): Remove.
4816 (__arm_vmladavaxq_p): Remove.
4817 (__arm_vmlsdavaq_p): Remove.
4818 (__arm_vmlsdavaxq_p): Remove.
4820 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4822 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
4823 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
4825 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4827 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
4828 (vmlsdavq, vmlsdavxq): New.
4829 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
4830 (vmlsdavq, vmlsdavxq): New.
4831 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
4832 (vmlsdavq, vmlsdavxq): New.
4833 * config/arm/arm_mve.h (vmladavq): Remove.
4834 (vmlsdavxq): Remove.
4836 (vmladavxq): Remove.
4837 (vmladavq_p): Remove.
4838 (vmlsdavxq_p): Remove.
4839 (vmlsdavq_p): Remove.
4840 (vmladavxq_p): Remove.
4841 (vmladavq_u8): Remove.
4842 (vmlsdavxq_s8): Remove.
4843 (vmlsdavq_s8): Remove.
4844 (vmladavxq_s8): Remove.
4845 (vmladavq_s8): Remove.
4846 (vmladavq_u16): Remove.
4847 (vmlsdavxq_s16): Remove.
4848 (vmlsdavq_s16): Remove.
4849 (vmladavxq_s16): Remove.
4850 (vmladavq_s16): Remove.
4851 (vmladavq_u32): Remove.
4852 (vmlsdavxq_s32): Remove.
4853 (vmlsdavq_s32): Remove.
4854 (vmladavxq_s32): Remove.
4855 (vmladavq_s32): Remove.
4856 (vmladavq_p_u8): Remove.
4857 (vmlsdavxq_p_s8): Remove.
4858 (vmlsdavq_p_s8): Remove.
4859 (vmladavxq_p_s8): Remove.
4860 (vmladavq_p_s8): Remove.
4861 (vmladavq_p_u16): Remove.
4862 (vmlsdavxq_p_s16): Remove.
4863 (vmlsdavq_p_s16): Remove.
4864 (vmladavxq_p_s16): Remove.
4865 (vmladavq_p_s16): Remove.
4866 (vmladavq_p_u32): Remove.
4867 (vmlsdavxq_p_s32): Remove.
4868 (vmlsdavq_p_s32): Remove.
4869 (vmladavxq_p_s32): Remove.
4870 (vmladavq_p_s32): Remove.
4871 (__arm_vmladavq_u8): Remove.
4872 (__arm_vmlsdavxq_s8): Remove.
4873 (__arm_vmlsdavq_s8): Remove.
4874 (__arm_vmladavxq_s8): Remove.
4875 (__arm_vmladavq_s8): Remove.
4876 (__arm_vmladavq_u16): Remove.
4877 (__arm_vmlsdavxq_s16): Remove.
4878 (__arm_vmlsdavq_s16): Remove.
4879 (__arm_vmladavxq_s16): Remove.
4880 (__arm_vmladavq_s16): Remove.
4881 (__arm_vmladavq_u32): Remove.
4882 (__arm_vmlsdavxq_s32): Remove.
4883 (__arm_vmlsdavq_s32): Remove.
4884 (__arm_vmladavxq_s32): Remove.
4885 (__arm_vmladavq_s32): Remove.
4886 (__arm_vmladavq_p_u8): Remove.
4887 (__arm_vmlsdavxq_p_s8): Remove.
4888 (__arm_vmlsdavq_p_s8): Remove.
4889 (__arm_vmladavxq_p_s8): Remove.
4890 (__arm_vmladavq_p_s8): Remove.
4891 (__arm_vmladavq_p_u16): Remove.
4892 (__arm_vmlsdavxq_p_s16): Remove.
4893 (__arm_vmlsdavq_p_s16): Remove.
4894 (__arm_vmladavxq_p_s16): Remove.
4895 (__arm_vmladavq_p_s16): Remove.
4896 (__arm_vmladavq_p_u32): Remove.
4897 (__arm_vmlsdavxq_p_s32): Remove.
4898 (__arm_vmlsdavq_p_s32): Remove.
4899 (__arm_vmladavxq_p_s32): Remove.
4900 (__arm_vmladavq_p_s32): Remove.
4901 (__arm_vmladavq): Remove.
4902 (__arm_vmlsdavxq): Remove.
4903 (__arm_vmlsdavq): Remove.
4904 (__arm_vmladavxq): Remove.
4905 (__arm_vmladavq_p): Remove.
4906 (__arm_vmlsdavxq_p): Remove.
4907 (__arm_vmlsdavq_p): Remove.
4908 (__arm_vmladavxq_p): Remove.
4910 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4912 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
4913 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
4914 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
4915 vmlsdavax, vmlsdav, vmlsdavx.
4916 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
4917 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
4918 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
4920 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
4921 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
4922 (mve_vmlsdavxq_s<mode>): Merge into ...
4923 (@mve_<mve_insn>q_<supf><mode>): ... this.
4924 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
4925 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
4927 (@mve_<mve_insn>q_<supf><mode>): ... this.
4928 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
4929 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
4930 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4931 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
4932 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
4934 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
4936 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4938 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
4939 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
4941 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4943 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
4944 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
4945 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
4946 * config/arm/arm_mve.h (vaddlvaq): Remove.
4947 (vaddlvaq_p): Remove.
4948 (vaddlvaq_u32): Remove.
4949 (vaddlvaq_s32): Remove.
4950 (vaddlvaq_p_s32): Remove.
4951 (vaddlvaq_p_u32): Remove.
4952 (__arm_vaddlvaq_u32): Remove.
4953 (__arm_vaddlvaq_s32): Remove.
4954 (__arm_vaddlvaq_p_s32): Remove.
4955 (__arm_vaddlvaq_p_u32): Remove.
4956 (__arm_vaddlvaq): Remove.
4957 (__arm_vaddlvaq_p): Remove.
4959 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4961 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
4962 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
4964 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
4966 * config/arm/iterators.md (mve_insn): Add vaddlva.
4967 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
4968 (@mve_<mve_insn>q_<supf>v4si): ... this.
4969 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
4970 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
4972 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
4975 * config/i386/i386.cc (ix86_widen_mult_cost):
4976 Handle V4HImode and V2SImode.
4978 2023-05-11 Andrew Pinski <apinski@marvell.com>
4980 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
4981 defined by a phi node with more than one uses, allow for the
4982 only uses are in that same defining statement.
4984 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4986 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
4989 2023-05-11 Pan Li <pan2.li@intel.com>
4991 * config/riscv/vector.md: Add comments for simplifying to vmset.
4993 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
4995 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
4997 (v<optab><mode>3): Add vector shift pattern.
4998 * config/riscv/vector-iterators.md: New iterator.
5000 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
5002 * config/riscv/autovec.md: Use renamed functions.
5003 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
5004 (emit_vlmax_reg_op): To this.
5005 (emit_nonvlmax_op): Rename.
5006 (emit_len_op): To this.
5007 (emit_nonvlmax_binop): Rename.
5008 (emit_len_binop): To this.
5009 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
5010 (emit_pred_binop): Remove vlmax_p.
5011 (emit_vlmax_op): Rename.
5012 (emit_vlmax_reg_op): To this.
5013 (emit_nonvlmax_op): Rename.
5014 (emit_len_op): To this.
5015 (emit_nonvlmax_binop): Rename.
5016 (emit_len_binop): To this.
5017 (sew64_scalar_helper): Use renamed functions.
5018 (expand_tuple_move): Use renamed functions.
5019 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
5021 * config/riscv/vector.md: Use renamed functions.
5023 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
5024 Michael Collison <collison@rivosinc.com>
5026 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
5027 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
5028 * config/riscv/riscv-v.cc (emit_pred_op): New function.
5029 (set_expander_dest_and_mask): New function.
5030 (emit_pred_binop): New function.
5031 (emit_nonvlmax_binop): New function.
5033 2023-05-11 Pan Li <pan2.li@intel.com>
5035 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
5036 * gimple-loop-interchange.cc
5037 (tree_loop_interchange::map_inductions_to_loop): Ditto.
5038 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
5039 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
5040 * tree-ssa-loop-manip.cc (create_iv): Ditto.
5041 (tree_transform_and_unroll_loop): Ditto.
5042 (canonicalize_loop_ivs): Ditto.
5043 * tree-ssa-loop-manip.h (create_iv): Ditto.
5044 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
5045 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
5047 (vect_set_loop_condition_normal): Ditto.
5048 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
5049 * tree-vect-stmts.cc (vectorizable_store): Ditto.
5050 (vectorizable_load): Ditto.
5052 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5054 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
5055 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
5056 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
5057 * config/arm/arm_mve.h (vmovlbq): Remove.
5059 (vmovlbq_m): Remove.
5060 (vmovltq_m): Remove.
5061 (vmovlbq_x): Remove.
5062 (vmovltq_x): Remove.
5063 (vmovlbq_s8): Remove.
5064 (vmovlbq_s16): Remove.
5065 (vmovltq_s8): Remove.
5066 (vmovltq_s16): Remove.
5067 (vmovltq_u8): Remove.
5068 (vmovltq_u16): Remove.
5069 (vmovlbq_u8): Remove.
5070 (vmovlbq_u16): Remove.
5071 (vmovlbq_m_s8): Remove.
5072 (vmovltq_m_s8): Remove.
5073 (vmovlbq_m_u8): Remove.
5074 (vmovltq_m_u8): Remove.
5075 (vmovlbq_m_s16): Remove.
5076 (vmovltq_m_s16): Remove.
5077 (vmovlbq_m_u16): Remove.
5078 (vmovltq_m_u16): Remove.
5079 (vmovlbq_x_s8): Remove.
5080 (vmovlbq_x_s16): Remove.
5081 (vmovlbq_x_u8): Remove.
5082 (vmovlbq_x_u16): Remove.
5083 (vmovltq_x_s8): Remove.
5084 (vmovltq_x_s16): Remove.
5085 (vmovltq_x_u8): Remove.
5086 (vmovltq_x_u16): Remove.
5087 (__arm_vmovlbq_s8): Remove.
5088 (__arm_vmovlbq_s16): Remove.
5089 (__arm_vmovltq_s8): Remove.
5090 (__arm_vmovltq_s16): Remove.
5091 (__arm_vmovltq_u8): Remove.
5092 (__arm_vmovltq_u16): Remove.
5093 (__arm_vmovlbq_u8): Remove.
5094 (__arm_vmovlbq_u16): Remove.
5095 (__arm_vmovlbq_m_s8): Remove.
5096 (__arm_vmovltq_m_s8): Remove.
5097 (__arm_vmovlbq_m_u8): Remove.
5098 (__arm_vmovltq_m_u8): Remove.
5099 (__arm_vmovlbq_m_s16): Remove.
5100 (__arm_vmovltq_m_s16): Remove.
5101 (__arm_vmovlbq_m_u16): Remove.
5102 (__arm_vmovltq_m_u16): Remove.
5103 (__arm_vmovlbq_x_s8): Remove.
5104 (__arm_vmovlbq_x_s16): Remove.
5105 (__arm_vmovlbq_x_u8): Remove.
5106 (__arm_vmovlbq_x_u16): Remove.
5107 (__arm_vmovltq_x_s8): Remove.
5108 (__arm_vmovltq_x_s16): Remove.
5109 (__arm_vmovltq_x_u8): Remove.
5110 (__arm_vmovltq_x_u16): Remove.
5111 (__arm_vmovlbq): Remove.
5112 (__arm_vmovltq): Remove.
5113 (__arm_vmovlbq_m): Remove.
5114 (__arm_vmovltq_m): Remove.
5115 (__arm_vmovlbq_x): Remove.
5116 (__arm_vmovltq_x): Remove.
5118 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5120 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
5121 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
5123 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5125 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
5126 (VMOVLBQ, VMOVLTQ): Merge into ...
5127 (VMOVLxQ): ... this.
5128 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
5129 (VMOVLxQ_M): ... this.
5130 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
5131 (mve_vmovlbq_<supf><mode>): Merge into ...
5132 (@mve_<mve_insn>q_<supf><mode>): ... this.
5133 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
5135 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
5137 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5139 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
5140 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
5141 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
5142 * config/arm/arm-mve-builtins-functions.h
5143 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
5144 * config/arm/arm_mve.h (vaddlvq): Remove.
5145 (vaddlvq_p): Remove.
5146 (vaddlvq_s32): Remove.
5147 (vaddlvq_u32): Remove.
5148 (vaddlvq_p_s32): Remove.
5149 (vaddlvq_p_u32): Remove.
5150 (__arm_vaddlvq_s32): Remove.
5151 (__arm_vaddlvq_u32): Remove.
5152 (__arm_vaddlvq_p_s32): Remove.
5153 (__arm_vaddlvq_p_u32): Remove.
5154 (__arm_vaddlvq): Remove.
5155 (__arm_vaddlvq_p): Remove.
5157 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5159 * config/arm/iterators.md (mve_insn): Add vaddlv.
5160 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
5161 (@mve_<mve_insn>q_<supf>v4si): ... this.
5162 (mve_vaddlvq_p_<supf>v4si): Rename into ...
5163 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
5165 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5167 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
5168 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
5170 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5172 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
5173 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
5174 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
5175 * config/arm/arm_mve.h (vaddvaq): Remove.
5176 (vaddvaq_p): Remove.
5177 (vaddvaq_u8): Remove.
5178 (vaddvaq_s8): Remove.
5179 (vaddvaq_u16): Remove.
5180 (vaddvaq_s16): Remove.
5181 (vaddvaq_u32): Remove.
5182 (vaddvaq_s32): Remove.
5183 (vaddvaq_p_u8): Remove.
5184 (vaddvaq_p_s8): Remove.
5185 (vaddvaq_p_u16): Remove.
5186 (vaddvaq_p_s16): Remove.
5187 (vaddvaq_p_u32): Remove.
5188 (vaddvaq_p_s32): Remove.
5189 (__arm_vaddvaq_u8): Remove.
5190 (__arm_vaddvaq_s8): Remove.
5191 (__arm_vaddvaq_u16): Remove.
5192 (__arm_vaddvaq_s16): Remove.
5193 (__arm_vaddvaq_u32): Remove.
5194 (__arm_vaddvaq_s32): Remove.
5195 (__arm_vaddvaq_p_u8): Remove.
5196 (__arm_vaddvaq_p_s8): Remove.
5197 (__arm_vaddvaq_p_u16): Remove.
5198 (__arm_vaddvaq_p_s16): Remove.
5199 (__arm_vaddvaq_p_u32): Remove.
5200 (__arm_vaddvaq_p_s32): Remove.
5201 (__arm_vaddvaq): Remove.
5202 (__arm_vaddvaq_p): Remove.
5204 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5206 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
5207 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
5209 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5211 * config/arm/iterators.md (mve_insn): Add vaddva.
5212 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
5213 (@mve_<mve_insn>q_<supf><mode>): ... this.
5214 (mve_vaddvaq_p_<supf><mode>): Rename into ...
5215 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5217 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5219 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
5220 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
5221 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
5222 * config/arm/arm_mve.h (vaddvq): Remove.
5224 (vaddvq_s8): Remove.
5225 (vaddvq_s16): Remove.
5226 (vaddvq_s32): Remove.
5227 (vaddvq_u8): Remove.
5228 (vaddvq_u16): Remove.
5229 (vaddvq_u32): Remove.
5230 (vaddvq_p_u8): Remove.
5231 (vaddvq_p_s8): Remove.
5232 (vaddvq_p_u16): Remove.
5233 (vaddvq_p_s16): Remove.
5234 (vaddvq_p_u32): Remove.
5235 (vaddvq_p_s32): Remove.
5236 (__arm_vaddvq_s8): Remove.
5237 (__arm_vaddvq_s16): Remove.
5238 (__arm_vaddvq_s32): Remove.
5239 (__arm_vaddvq_u8): Remove.
5240 (__arm_vaddvq_u16): Remove.
5241 (__arm_vaddvq_u32): Remove.
5242 (__arm_vaddvq_p_u8): Remove.
5243 (__arm_vaddvq_p_s8): Remove.
5244 (__arm_vaddvq_p_u16): Remove.
5245 (__arm_vaddvq_p_s16): Remove.
5246 (__arm_vaddvq_p_u32): Remove.
5247 (__arm_vaddvq_p_s32): Remove.
5248 (__arm_vaddvq): Remove.
5249 (__arm_vaddvq_p): Remove.
5251 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5253 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
5254 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
5256 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5258 * config/arm/iterators.md (mve_insn): Add vaddv.
5259 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
5260 (@mve_<mve_insn>q_<supf><mode>): ... this.
5261 (mve_vaddvq_p_<supf><mode>): Rename into ...
5262 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
5263 * config/arm/vec-common.md: Use gen_mve_q instead of
5266 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5268 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
5270 * config/arm/arm-mve-builtins-base.def (vdupq): New.
5271 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
5272 * config/arm/arm_mve.h (vdupq_n): Remove.
5274 (vdupq_n_f16): Remove.
5275 (vdupq_n_f32): Remove.
5276 (vdupq_n_s8): Remove.
5277 (vdupq_n_s16): Remove.
5278 (vdupq_n_s32): Remove.
5279 (vdupq_n_u8): Remove.
5280 (vdupq_n_u16): Remove.
5281 (vdupq_n_u32): Remove.
5282 (vdupq_m_n_u8): Remove.
5283 (vdupq_m_n_s8): Remove.
5284 (vdupq_m_n_u16): Remove.
5285 (vdupq_m_n_s16): Remove.
5286 (vdupq_m_n_u32): Remove.
5287 (vdupq_m_n_s32): Remove.
5288 (vdupq_m_n_f16): Remove.
5289 (vdupq_m_n_f32): Remove.
5290 (vdupq_x_n_s8): Remove.
5291 (vdupq_x_n_s16): Remove.
5292 (vdupq_x_n_s32): Remove.
5293 (vdupq_x_n_u8): Remove.
5294 (vdupq_x_n_u16): Remove.
5295 (vdupq_x_n_u32): Remove.
5296 (vdupq_x_n_f16): Remove.
5297 (vdupq_x_n_f32): Remove.
5298 (__arm_vdupq_n_s8): Remove.
5299 (__arm_vdupq_n_s16): Remove.
5300 (__arm_vdupq_n_s32): Remove.
5301 (__arm_vdupq_n_u8): Remove.
5302 (__arm_vdupq_n_u16): Remove.
5303 (__arm_vdupq_n_u32): Remove.
5304 (__arm_vdupq_m_n_u8): Remove.
5305 (__arm_vdupq_m_n_s8): Remove.
5306 (__arm_vdupq_m_n_u16): Remove.
5307 (__arm_vdupq_m_n_s16): Remove.
5308 (__arm_vdupq_m_n_u32): Remove.
5309 (__arm_vdupq_m_n_s32): Remove.
5310 (__arm_vdupq_x_n_s8): Remove.
5311 (__arm_vdupq_x_n_s16): Remove.
5312 (__arm_vdupq_x_n_s32): Remove.
5313 (__arm_vdupq_x_n_u8): Remove.
5314 (__arm_vdupq_x_n_u16): Remove.
5315 (__arm_vdupq_x_n_u32): Remove.
5316 (__arm_vdupq_n_f16): Remove.
5317 (__arm_vdupq_n_f32): Remove.
5318 (__arm_vdupq_m_n_f16): Remove.
5319 (__arm_vdupq_m_n_f32): Remove.
5320 (__arm_vdupq_x_n_f16): Remove.
5321 (__arm_vdupq_x_n_f32): Remove.
5322 (__arm_vdupq_n): Remove.
5323 (__arm_vdupq_m): Remove.
5325 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5327 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
5328 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
5330 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5332 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
5333 (MVE_FP_N_VDUPQ_ONLY): New.
5334 (mve_insn): Add vdupq.
5335 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
5336 (@mve_<mve_insn>q_n_f<mode>): ... this.
5337 (mve_vdupq_n_<supf><mode>): Rename into ...
5338 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
5339 (mve_vdupq_m_n_<supf><mode>): Rename into ...
5340 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
5341 (mve_vdupq_m_n_f<mode>): Rename into ...
5342 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
5344 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5346 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
5348 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
5350 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
5352 * config/arm/arm_mve.h (vrev16q): Remove.
5355 (vrev64q_m): Remove.
5356 (vrev16q_m): Remove.
5357 (vrev32q_m): Remove.
5358 (vrev16q_x): Remove.
5359 (vrev32q_x): Remove.
5360 (vrev64q_x): Remove.
5361 (vrev64q_f16): Remove.
5362 (vrev64q_f32): Remove.
5363 (vrev32q_f16): Remove.
5364 (vrev16q_s8): Remove.
5365 (vrev32q_s8): Remove.
5366 (vrev32q_s16): Remove.
5367 (vrev64q_s8): Remove.
5368 (vrev64q_s16): Remove.
5369 (vrev64q_s32): Remove.
5370 (vrev64q_u8): Remove.
5371 (vrev64q_u16): Remove.
5372 (vrev64q_u32): Remove.
5373 (vrev32q_u8): Remove.
5374 (vrev32q_u16): Remove.
5375 (vrev16q_u8): Remove.
5376 (vrev64q_m_u8): Remove.
5377 (vrev64q_m_s8): Remove.
5378 (vrev64q_m_u16): Remove.
5379 (vrev64q_m_s16): Remove.
5380 (vrev64q_m_u32): Remove.
5381 (vrev64q_m_s32): Remove.
5382 (vrev16q_m_s8): Remove.
5383 (vrev32q_m_f16): Remove.
5384 (vrev16q_m_u8): Remove.
5385 (vrev32q_m_s8): Remove.
5386 (vrev64q_m_f16): Remove.
5387 (vrev32q_m_u8): Remove.
5388 (vrev32q_m_s16): Remove.
5389 (vrev64q_m_f32): Remove.
5390 (vrev32q_m_u16): Remove.
5391 (vrev16q_x_s8): Remove.
5392 (vrev16q_x_u8): Remove.
5393 (vrev32q_x_s8): Remove.
5394 (vrev32q_x_s16): Remove.
5395 (vrev32q_x_u8): Remove.
5396 (vrev32q_x_u16): Remove.
5397 (vrev64q_x_s8): Remove.
5398 (vrev64q_x_s16): Remove.
5399 (vrev64q_x_s32): Remove.
5400 (vrev64q_x_u8): Remove.
5401 (vrev64q_x_u16): Remove.
5402 (vrev64q_x_u32): Remove.
5403 (vrev32q_x_f16): Remove.
5404 (vrev64q_x_f16): Remove.
5405 (vrev64q_x_f32): Remove.
5406 (__arm_vrev16q_s8): Remove.
5407 (__arm_vrev32q_s8): Remove.
5408 (__arm_vrev32q_s16): Remove.
5409 (__arm_vrev64q_s8): Remove.
5410 (__arm_vrev64q_s16): Remove.
5411 (__arm_vrev64q_s32): Remove.
5412 (__arm_vrev64q_u8): Remove.
5413 (__arm_vrev64q_u16): Remove.
5414 (__arm_vrev64q_u32): Remove.
5415 (__arm_vrev32q_u8): Remove.
5416 (__arm_vrev32q_u16): Remove.
5417 (__arm_vrev16q_u8): Remove.
5418 (__arm_vrev64q_m_u8): Remove.
5419 (__arm_vrev64q_m_s8): Remove.
5420 (__arm_vrev64q_m_u16): Remove.
5421 (__arm_vrev64q_m_s16): Remove.
5422 (__arm_vrev64q_m_u32): Remove.
5423 (__arm_vrev64q_m_s32): Remove.
5424 (__arm_vrev16q_m_s8): Remove.
5425 (__arm_vrev16q_m_u8): Remove.
5426 (__arm_vrev32q_m_s8): Remove.
5427 (__arm_vrev32q_m_u8): Remove.
5428 (__arm_vrev32q_m_s16): Remove.
5429 (__arm_vrev32q_m_u16): Remove.
5430 (__arm_vrev16q_x_s8): Remove.
5431 (__arm_vrev16q_x_u8): Remove.
5432 (__arm_vrev32q_x_s8): Remove.
5433 (__arm_vrev32q_x_s16): Remove.
5434 (__arm_vrev32q_x_u8): Remove.
5435 (__arm_vrev32q_x_u16): Remove.
5436 (__arm_vrev64q_x_s8): Remove.
5437 (__arm_vrev64q_x_s16): Remove.
5438 (__arm_vrev64q_x_s32): Remove.
5439 (__arm_vrev64q_x_u8): Remove.
5440 (__arm_vrev64q_x_u16): Remove.
5441 (__arm_vrev64q_x_u32): Remove.
5442 (__arm_vrev64q_f16): Remove.
5443 (__arm_vrev64q_f32): Remove.
5444 (__arm_vrev32q_f16): Remove.
5445 (__arm_vrev32q_m_f16): Remove.
5446 (__arm_vrev64q_m_f16): Remove.
5447 (__arm_vrev64q_m_f32): Remove.
5448 (__arm_vrev32q_x_f16): Remove.
5449 (__arm_vrev64q_x_f16): Remove.
5450 (__arm_vrev64q_x_f32): Remove.
5451 (__arm_vrev16q): Remove.
5452 (__arm_vrev32q): Remove.
5453 (__arm_vrev64q): Remove.
5454 (__arm_vrev64q_m): Remove.
5455 (__arm_vrev16q_m): Remove.
5456 (__arm_vrev32q_m): Remove.
5457 (__arm_vrev16q_x): Remove.
5458 (__arm_vrev32q_x): Remove.
5459 (__arm_vrev64q_x): Remove.
5461 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5463 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
5464 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
5465 (MVE_FP_M_VREV32Q_ONLY): New iterators.
5466 (mve_insn): Add vrev16q, vrev32q, vrev64q.
5467 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
5468 (@mve_<mve_insn>q_f<mode>): ... this
5469 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
5470 (mve_vrev64q_<supf><mode>): Rename into ...
5471 (@mve_<mve_insn>q_<supf><mode>): ... this.
5472 (mve_vrev32q_<supf><mode>): Rename into
5473 @mve_<mve_insn>q_<supf><mode>.
5474 (mve_vrev16q_<supf>v16qi): Rename into
5475 @mve_<mve_insn>q_<supf><mode>.
5476 (mve_vrev64q_m_<supf><mode>): Rename into
5477 @mve_<mve_insn>q_m_<supf><mode>.
5478 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
5479 (mve_vrev32q_m_<supf><mode>): Rename into
5480 @mve_<mve_insn>q_m_<supf><mode>.
5481 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
5482 (mve_vrev16q_m_<supf>v16qi): Rename into
5483 @mve_<mve_insn>q_m_<supf><mode>.
5485 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5487 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
5488 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5489 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
5490 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5491 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
5492 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
5493 * config/arm/arm-mve-builtins-functions.h (class
5494 unspec_based_mve_function_exact_insn_vcmp): New.
5495 * config/arm/arm-mve-builtins.cc
5496 (function_instance::has_inactive_argument): Handle vcmp.
5497 * config/arm/arm_mve.h (vcmpneq): Remove.
5505 (vcmpneq_m): Remove.
5506 (vcmphiq_m): Remove.
5507 (vcmpeqq_m): Remove.
5508 (vcmpcsq_m): Remove.
5509 (vcmpcsq_m_n): Remove.
5510 (vcmpltq_m): Remove.
5511 (vcmpleq_m): Remove.
5512 (vcmpgtq_m): Remove.
5513 (vcmpgeq_m): Remove.
5514 (vcmpneq_s8): Remove.
5515 (vcmpneq_s16): Remove.
5516 (vcmpneq_s32): Remove.
5517 (vcmpneq_u8): Remove.
5518 (vcmpneq_u16): Remove.
5519 (vcmpneq_u32): Remove.
5520 (vcmpneq_n_u8): Remove.
5521 (vcmphiq_u8): Remove.
5522 (vcmphiq_n_u8): Remove.
5523 (vcmpeqq_u8): Remove.
5524 (vcmpeqq_n_u8): Remove.
5525 (vcmpcsq_u8): Remove.
5526 (vcmpcsq_n_u8): Remove.
5527 (vcmpneq_n_s8): Remove.
5528 (vcmpltq_s8): Remove.
5529 (vcmpltq_n_s8): Remove.
5530 (vcmpleq_s8): Remove.
5531 (vcmpleq_n_s8): Remove.
5532 (vcmpgtq_s8): Remove.
5533 (vcmpgtq_n_s8): Remove.
5534 (vcmpgeq_s8): Remove.
5535 (vcmpgeq_n_s8): Remove.
5536 (vcmpeqq_s8): Remove.
5537 (vcmpeqq_n_s8): Remove.
5538 (vcmpneq_n_u16): Remove.
5539 (vcmphiq_u16): Remove.
5540 (vcmphiq_n_u16): Remove.
5541 (vcmpeqq_u16): Remove.
5542 (vcmpeqq_n_u16): Remove.
5543 (vcmpcsq_u16): Remove.
5544 (vcmpcsq_n_u16): Remove.
5545 (vcmpneq_n_s16): Remove.
5546 (vcmpltq_s16): Remove.
5547 (vcmpltq_n_s16): Remove.
5548 (vcmpleq_s16): Remove.
5549 (vcmpleq_n_s16): Remove.
5550 (vcmpgtq_s16): Remove.
5551 (vcmpgtq_n_s16): Remove.
5552 (vcmpgeq_s16): Remove.
5553 (vcmpgeq_n_s16): Remove.
5554 (vcmpeqq_s16): Remove.
5555 (vcmpeqq_n_s16): Remove.
5556 (vcmpneq_n_u32): Remove.
5557 (vcmphiq_u32): Remove.
5558 (vcmphiq_n_u32): Remove.
5559 (vcmpeqq_u32): Remove.
5560 (vcmpeqq_n_u32): Remove.
5561 (vcmpcsq_u32): Remove.
5562 (vcmpcsq_n_u32): Remove.
5563 (vcmpneq_n_s32): Remove.
5564 (vcmpltq_s32): Remove.
5565 (vcmpltq_n_s32): Remove.
5566 (vcmpleq_s32): Remove.
5567 (vcmpleq_n_s32): Remove.
5568 (vcmpgtq_s32): Remove.
5569 (vcmpgtq_n_s32): Remove.
5570 (vcmpgeq_s32): Remove.
5571 (vcmpgeq_n_s32): Remove.
5572 (vcmpeqq_s32): Remove.
5573 (vcmpeqq_n_s32): Remove.
5574 (vcmpneq_n_f16): Remove.
5575 (vcmpneq_f16): Remove.
5576 (vcmpltq_n_f16): Remove.
5577 (vcmpltq_f16): Remove.
5578 (vcmpleq_n_f16): Remove.
5579 (vcmpleq_f16): Remove.
5580 (vcmpgtq_n_f16): Remove.
5581 (vcmpgtq_f16): Remove.
5582 (vcmpgeq_n_f16): Remove.
5583 (vcmpgeq_f16): Remove.
5584 (vcmpeqq_n_f16): Remove.
5585 (vcmpeqq_f16): Remove.
5586 (vcmpneq_n_f32): Remove.
5587 (vcmpneq_f32): Remove.
5588 (vcmpltq_n_f32): Remove.
5589 (vcmpltq_f32): Remove.
5590 (vcmpleq_n_f32): Remove.
5591 (vcmpleq_f32): Remove.
5592 (vcmpgtq_n_f32): Remove.
5593 (vcmpgtq_f32): Remove.
5594 (vcmpgeq_n_f32): Remove.
5595 (vcmpgeq_f32): Remove.
5596 (vcmpeqq_n_f32): Remove.
5597 (vcmpeqq_f32): Remove.
5598 (vcmpeqq_m_f16): Remove.
5599 (vcmpeqq_m_f32): Remove.
5600 (vcmpneq_m_u8): Remove.
5601 (vcmpneq_m_n_u8): Remove.
5602 (vcmphiq_m_u8): Remove.
5603 (vcmphiq_m_n_u8): Remove.
5604 (vcmpeqq_m_u8): Remove.
5605 (vcmpeqq_m_n_u8): Remove.
5606 (vcmpcsq_m_u8): Remove.
5607 (vcmpcsq_m_n_u8): Remove.
5608 (vcmpneq_m_s8): Remove.
5609 (vcmpneq_m_n_s8): Remove.
5610 (vcmpltq_m_s8): Remove.
5611 (vcmpltq_m_n_s8): Remove.
5612 (vcmpleq_m_s8): Remove.
5613 (vcmpleq_m_n_s8): Remove.
5614 (vcmpgtq_m_s8): Remove.
5615 (vcmpgtq_m_n_s8): Remove.
5616 (vcmpgeq_m_s8): Remove.
5617 (vcmpgeq_m_n_s8): Remove.
5618 (vcmpeqq_m_s8): Remove.
5619 (vcmpeqq_m_n_s8): Remove.
5620 (vcmpneq_m_u16): Remove.
5621 (vcmpneq_m_n_u16): Remove.
5622 (vcmphiq_m_u16): Remove.
5623 (vcmphiq_m_n_u16): Remove.
5624 (vcmpeqq_m_u16): Remove.
5625 (vcmpeqq_m_n_u16): Remove.
5626 (vcmpcsq_m_u16): Remove.
5627 (vcmpcsq_m_n_u16): Remove.
5628 (vcmpneq_m_s16): Remove.
5629 (vcmpneq_m_n_s16): Remove.
5630 (vcmpltq_m_s16): Remove.
5631 (vcmpltq_m_n_s16): Remove.
5632 (vcmpleq_m_s16): Remove.
5633 (vcmpleq_m_n_s16): Remove.
5634 (vcmpgtq_m_s16): Remove.
5635 (vcmpgtq_m_n_s16): Remove.
5636 (vcmpgeq_m_s16): Remove.
5637 (vcmpgeq_m_n_s16): Remove.
5638 (vcmpeqq_m_s16): Remove.
5639 (vcmpeqq_m_n_s16): Remove.
5640 (vcmpneq_m_u32): Remove.
5641 (vcmpneq_m_n_u32): Remove.
5642 (vcmphiq_m_u32): Remove.
5643 (vcmphiq_m_n_u32): Remove.
5644 (vcmpeqq_m_u32): Remove.
5645 (vcmpeqq_m_n_u32): Remove.
5646 (vcmpcsq_m_u32): Remove.
5647 (vcmpcsq_m_n_u32): Remove.
5648 (vcmpneq_m_s32): Remove.
5649 (vcmpneq_m_n_s32): Remove.
5650 (vcmpltq_m_s32): Remove.
5651 (vcmpltq_m_n_s32): Remove.
5652 (vcmpleq_m_s32): Remove.
5653 (vcmpleq_m_n_s32): Remove.
5654 (vcmpgtq_m_s32): Remove.
5655 (vcmpgtq_m_n_s32): Remove.
5656 (vcmpgeq_m_s32): Remove.
5657 (vcmpgeq_m_n_s32): Remove.
5658 (vcmpeqq_m_s32): Remove.
5659 (vcmpeqq_m_n_s32): Remove.
5660 (vcmpeqq_m_n_f16): Remove.
5661 (vcmpgeq_m_f16): Remove.
5662 (vcmpgeq_m_n_f16): Remove.
5663 (vcmpgtq_m_f16): Remove.
5664 (vcmpgtq_m_n_f16): Remove.
5665 (vcmpleq_m_f16): Remove.
5666 (vcmpleq_m_n_f16): Remove.
5667 (vcmpltq_m_f16): Remove.
5668 (vcmpltq_m_n_f16): Remove.
5669 (vcmpneq_m_f16): Remove.
5670 (vcmpneq_m_n_f16): Remove.
5671 (vcmpeqq_m_n_f32): Remove.
5672 (vcmpgeq_m_f32): Remove.
5673 (vcmpgeq_m_n_f32): Remove.
5674 (vcmpgtq_m_f32): Remove.
5675 (vcmpgtq_m_n_f32): Remove.
5676 (vcmpleq_m_f32): Remove.
5677 (vcmpleq_m_n_f32): Remove.
5678 (vcmpltq_m_f32): Remove.
5679 (vcmpltq_m_n_f32): Remove.
5680 (vcmpneq_m_f32): Remove.
5681 (vcmpneq_m_n_f32): Remove.
5682 (__arm_vcmpneq_s8): Remove.
5683 (__arm_vcmpneq_s16): Remove.
5684 (__arm_vcmpneq_s32): Remove.
5685 (__arm_vcmpneq_u8): Remove.
5686 (__arm_vcmpneq_u16): Remove.
5687 (__arm_vcmpneq_u32): Remove.
5688 (__arm_vcmpneq_n_u8): Remove.
5689 (__arm_vcmphiq_u8): Remove.
5690 (__arm_vcmphiq_n_u8): Remove.
5691 (__arm_vcmpeqq_u8): Remove.
5692 (__arm_vcmpeqq_n_u8): Remove.
5693 (__arm_vcmpcsq_u8): Remove.
5694 (__arm_vcmpcsq_n_u8): Remove.
5695 (__arm_vcmpneq_n_s8): Remove.
5696 (__arm_vcmpltq_s8): Remove.
5697 (__arm_vcmpltq_n_s8): Remove.
5698 (__arm_vcmpleq_s8): Remove.
5699 (__arm_vcmpleq_n_s8): Remove.
5700 (__arm_vcmpgtq_s8): Remove.
5701 (__arm_vcmpgtq_n_s8): Remove.
5702 (__arm_vcmpgeq_s8): Remove.
5703 (__arm_vcmpgeq_n_s8): Remove.
5704 (__arm_vcmpeqq_s8): Remove.
5705 (__arm_vcmpeqq_n_s8): Remove.
5706 (__arm_vcmpneq_n_u16): Remove.
5707 (__arm_vcmphiq_u16): Remove.
5708 (__arm_vcmphiq_n_u16): Remove.
5709 (__arm_vcmpeqq_u16): Remove.
5710 (__arm_vcmpeqq_n_u16): Remove.
5711 (__arm_vcmpcsq_u16): Remove.
5712 (__arm_vcmpcsq_n_u16): Remove.
5713 (__arm_vcmpneq_n_s16): Remove.
5714 (__arm_vcmpltq_s16): Remove.
5715 (__arm_vcmpltq_n_s16): Remove.
5716 (__arm_vcmpleq_s16): Remove.
5717 (__arm_vcmpleq_n_s16): Remove.
5718 (__arm_vcmpgtq_s16): Remove.
5719 (__arm_vcmpgtq_n_s16): Remove.
5720 (__arm_vcmpgeq_s16): Remove.
5721 (__arm_vcmpgeq_n_s16): Remove.
5722 (__arm_vcmpeqq_s16): Remove.
5723 (__arm_vcmpeqq_n_s16): Remove.
5724 (__arm_vcmpneq_n_u32): Remove.
5725 (__arm_vcmphiq_u32): Remove.
5726 (__arm_vcmphiq_n_u32): Remove.
5727 (__arm_vcmpeqq_u32): Remove.
5728 (__arm_vcmpeqq_n_u32): Remove.
5729 (__arm_vcmpcsq_u32): Remove.
5730 (__arm_vcmpcsq_n_u32): Remove.
5731 (__arm_vcmpneq_n_s32): Remove.
5732 (__arm_vcmpltq_s32): Remove.
5733 (__arm_vcmpltq_n_s32): Remove.
5734 (__arm_vcmpleq_s32): Remove.
5735 (__arm_vcmpleq_n_s32): Remove.
5736 (__arm_vcmpgtq_s32): Remove.
5737 (__arm_vcmpgtq_n_s32): Remove.
5738 (__arm_vcmpgeq_s32): Remove.
5739 (__arm_vcmpgeq_n_s32): Remove.
5740 (__arm_vcmpeqq_s32): Remove.
5741 (__arm_vcmpeqq_n_s32): Remove.
5742 (__arm_vcmpneq_m_u8): Remove.
5743 (__arm_vcmpneq_m_n_u8): Remove.
5744 (__arm_vcmphiq_m_u8): Remove.
5745 (__arm_vcmphiq_m_n_u8): Remove.
5746 (__arm_vcmpeqq_m_u8): Remove.
5747 (__arm_vcmpeqq_m_n_u8): Remove.
5748 (__arm_vcmpcsq_m_u8): Remove.
5749 (__arm_vcmpcsq_m_n_u8): Remove.
5750 (__arm_vcmpneq_m_s8): Remove.
5751 (__arm_vcmpneq_m_n_s8): Remove.
5752 (__arm_vcmpltq_m_s8): Remove.
5753 (__arm_vcmpltq_m_n_s8): Remove.
5754 (__arm_vcmpleq_m_s8): Remove.
5755 (__arm_vcmpleq_m_n_s8): Remove.
5756 (__arm_vcmpgtq_m_s8): Remove.
5757 (__arm_vcmpgtq_m_n_s8): Remove.
5758 (__arm_vcmpgeq_m_s8): Remove.
5759 (__arm_vcmpgeq_m_n_s8): Remove.
5760 (__arm_vcmpeqq_m_s8): Remove.
5761 (__arm_vcmpeqq_m_n_s8): Remove.
5762 (__arm_vcmpneq_m_u16): Remove.
5763 (__arm_vcmpneq_m_n_u16): Remove.
5764 (__arm_vcmphiq_m_u16): Remove.
5765 (__arm_vcmphiq_m_n_u16): Remove.
5766 (__arm_vcmpeqq_m_u16): Remove.
5767 (__arm_vcmpeqq_m_n_u16): Remove.
5768 (__arm_vcmpcsq_m_u16): Remove.
5769 (__arm_vcmpcsq_m_n_u16): Remove.
5770 (__arm_vcmpneq_m_s16): Remove.
5771 (__arm_vcmpneq_m_n_s16): Remove.
5772 (__arm_vcmpltq_m_s16): Remove.
5773 (__arm_vcmpltq_m_n_s16): Remove.
5774 (__arm_vcmpleq_m_s16): Remove.
5775 (__arm_vcmpleq_m_n_s16): Remove.
5776 (__arm_vcmpgtq_m_s16): Remove.
5777 (__arm_vcmpgtq_m_n_s16): Remove.
5778 (__arm_vcmpgeq_m_s16): Remove.
5779 (__arm_vcmpgeq_m_n_s16): Remove.
5780 (__arm_vcmpeqq_m_s16): Remove.
5781 (__arm_vcmpeqq_m_n_s16): Remove.
5782 (__arm_vcmpneq_m_u32): Remove.
5783 (__arm_vcmpneq_m_n_u32): Remove.
5784 (__arm_vcmphiq_m_u32): Remove.
5785 (__arm_vcmphiq_m_n_u32): Remove.
5786 (__arm_vcmpeqq_m_u32): Remove.
5787 (__arm_vcmpeqq_m_n_u32): Remove.
5788 (__arm_vcmpcsq_m_u32): Remove.
5789 (__arm_vcmpcsq_m_n_u32): Remove.
5790 (__arm_vcmpneq_m_s32): Remove.
5791 (__arm_vcmpneq_m_n_s32): Remove.
5792 (__arm_vcmpltq_m_s32): Remove.
5793 (__arm_vcmpltq_m_n_s32): Remove.
5794 (__arm_vcmpleq_m_s32): Remove.
5795 (__arm_vcmpleq_m_n_s32): Remove.
5796 (__arm_vcmpgtq_m_s32): Remove.
5797 (__arm_vcmpgtq_m_n_s32): Remove.
5798 (__arm_vcmpgeq_m_s32): Remove.
5799 (__arm_vcmpgeq_m_n_s32): Remove.
5800 (__arm_vcmpeqq_m_s32): Remove.
5801 (__arm_vcmpeqq_m_n_s32): Remove.
5802 (__arm_vcmpneq_n_f16): Remove.
5803 (__arm_vcmpneq_f16): Remove.
5804 (__arm_vcmpltq_n_f16): Remove.
5805 (__arm_vcmpltq_f16): Remove.
5806 (__arm_vcmpleq_n_f16): Remove.
5807 (__arm_vcmpleq_f16): Remove.
5808 (__arm_vcmpgtq_n_f16): Remove.
5809 (__arm_vcmpgtq_f16): Remove.
5810 (__arm_vcmpgeq_n_f16): Remove.
5811 (__arm_vcmpgeq_f16): Remove.
5812 (__arm_vcmpeqq_n_f16): Remove.
5813 (__arm_vcmpeqq_f16): Remove.
5814 (__arm_vcmpneq_n_f32): Remove.
5815 (__arm_vcmpneq_f32): Remove.
5816 (__arm_vcmpltq_n_f32): Remove.
5817 (__arm_vcmpltq_f32): Remove.
5818 (__arm_vcmpleq_n_f32): Remove.
5819 (__arm_vcmpleq_f32): Remove.
5820 (__arm_vcmpgtq_n_f32): Remove.
5821 (__arm_vcmpgtq_f32): Remove.
5822 (__arm_vcmpgeq_n_f32): Remove.
5823 (__arm_vcmpgeq_f32): Remove.
5824 (__arm_vcmpeqq_n_f32): Remove.
5825 (__arm_vcmpeqq_f32): Remove.
5826 (__arm_vcmpeqq_m_f16): Remove.
5827 (__arm_vcmpeqq_m_f32): Remove.
5828 (__arm_vcmpeqq_m_n_f16): Remove.
5829 (__arm_vcmpgeq_m_f16): Remove.
5830 (__arm_vcmpgeq_m_n_f16): Remove.
5831 (__arm_vcmpgtq_m_f16): Remove.
5832 (__arm_vcmpgtq_m_n_f16): Remove.
5833 (__arm_vcmpleq_m_f16): Remove.
5834 (__arm_vcmpleq_m_n_f16): Remove.
5835 (__arm_vcmpltq_m_f16): Remove.
5836 (__arm_vcmpltq_m_n_f16): Remove.
5837 (__arm_vcmpneq_m_f16): Remove.
5838 (__arm_vcmpneq_m_n_f16): Remove.
5839 (__arm_vcmpeqq_m_n_f32): Remove.
5840 (__arm_vcmpgeq_m_f32): Remove.
5841 (__arm_vcmpgeq_m_n_f32): Remove.
5842 (__arm_vcmpgtq_m_f32): Remove.
5843 (__arm_vcmpgtq_m_n_f32): Remove.
5844 (__arm_vcmpleq_m_f32): Remove.
5845 (__arm_vcmpleq_m_n_f32): Remove.
5846 (__arm_vcmpltq_m_f32): Remove.
5847 (__arm_vcmpltq_m_n_f32): Remove.
5848 (__arm_vcmpneq_m_f32): Remove.
5849 (__arm_vcmpneq_m_n_f32): Remove.
5850 (__arm_vcmpneq): Remove.
5851 (__arm_vcmphiq): Remove.
5852 (__arm_vcmpeqq): Remove.
5853 (__arm_vcmpcsq): Remove.
5854 (__arm_vcmpltq): Remove.
5855 (__arm_vcmpleq): Remove.
5856 (__arm_vcmpgtq): Remove.
5857 (__arm_vcmpgeq): Remove.
5858 (__arm_vcmpneq_m): Remove.
5859 (__arm_vcmphiq_m): Remove.
5860 (__arm_vcmpeqq_m): Remove.
5861 (__arm_vcmpcsq_m): Remove.
5862 (__arm_vcmpltq_m): Remove.
5863 (__arm_vcmpleq_m): Remove.
5864 (__arm_vcmpgtq_m): Remove.
5865 (__arm_vcmpgeq_m): Remove.
5867 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5869 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
5870 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
5872 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
5874 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
5875 (MVE_CMP_M_N_F, mve_cmp_op1): New.
5878 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
5879 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
5880 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
5881 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
5882 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
5883 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
5884 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
5885 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
5886 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
5887 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
5889 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
5890 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
5891 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
5892 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
5893 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
5895 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
5896 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
5897 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
5898 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
5899 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
5901 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
5903 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
5904 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
5905 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
5908 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
5910 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
5911 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
5912 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
5913 Simplify parity(rotate(x,y)) as parity(x).
5915 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5917 * config/riscv/autovec.md (@vec_series<mode>): New pattern
5918 * config/riscv/riscv-protos.h (expand_vec_series): New function.
5919 * config/riscv/riscv-v.cc (emit_binop): Ditto.
5920 (emit_index_op): Ditto.
5921 (expand_vec_series): Ditto.
5922 (expand_const_vector): Add series vector handling.
5923 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
5925 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
5927 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
5928 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
5929 (*concat<mode><dwi>3_2): Likewise.
5930 (*concat<mode><dwi>3_3): Likewise.
5931 (*concat<mode><dwi>3_4): Likewise.
5932 (*concat<mode><dwi>3_5): Likewise.
5933 (*concat<mode><dwi>3_6): Likewise.
5934 (*concat<mode><dwi>3_7): Likewise.
5936 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
5939 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
5940 (<insn>v4qiv4hi2): New expander.
5941 (<insn>v2hiv2si2): Ditto.
5942 (<insn>v2qiv2si2): Ditto.
5943 (<insn>v2qiv2hi2): Ditto.
5945 2023-05-10 Jeff Law <jlaw@ventanamicro>
5947 * config/h8300/constraints.md (Q): Make this a special memory
5951 2023-05-10 Jakub Jelinek <jakub@redhat.com>
5954 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
5955 if t is void_list_node.
5957 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5959 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
5960 (aarch64_sqmovun<mode>_insn_be): Delete.
5961 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
5962 (aarch64_sqmovun<mode>): Delete expander.
5964 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5967 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
5969 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
5970 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
5971 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
5973 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5976 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
5978 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
5979 (aarch64_<sur>qadd<mode>): Rename to...
5980 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
5982 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5984 * config/aarch64/aarch64-simd.md
5985 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
5986 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
5987 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
5988 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
5990 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5993 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
5994 (aarch64_xtn<mode>_insn_be): Likewise.
5995 (trunc<mode><Vnarrowq>2): Rename to...
5996 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
5997 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
5998 (aarch64_<su>qmovn<mode>): Likewise.
5999 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
6000 (aarch64_<su>qmovn<mode>_insn_le): Delete.
6001 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
6003 2023-05-10 Li Xu <xuli1@eswincomputing.com>
6005 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
6006 intruction replace null avl with (const_int 0).
6008 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6010 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
6013 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6016 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
6017 (source_equal_p): Fix dead loop in vsetvl avl checking.
6019 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
6021 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
6022 of modeadjusted_dccr.
6024 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6026 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
6027 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
6028 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
6029 * config/arm/arm-mve-builtins.cc
6030 (function_instance::has_inactive_argument): Handle vmaxaq and
6032 * config/arm/arm_mve.h (vminaq): Remove.
6036 (vminaq_s8): Remove.
6037 (vmaxaq_s8): Remove.
6038 (vminaq_s16): Remove.
6039 (vmaxaq_s16): Remove.
6040 (vminaq_s32): Remove.
6041 (vmaxaq_s32): Remove.
6042 (vminaq_m_s8): Remove.
6043 (vmaxaq_m_s8): Remove.
6044 (vminaq_m_s16): Remove.
6045 (vmaxaq_m_s16): Remove.
6046 (vminaq_m_s32): Remove.
6047 (vmaxaq_m_s32): Remove.
6048 (__arm_vminaq_s8): Remove.
6049 (__arm_vmaxaq_s8): Remove.
6050 (__arm_vminaq_s16): Remove.
6051 (__arm_vmaxaq_s16): Remove.
6052 (__arm_vminaq_s32): Remove.
6053 (__arm_vmaxaq_s32): Remove.
6054 (__arm_vminaq_m_s8): Remove.
6055 (__arm_vmaxaq_m_s8): Remove.
6056 (__arm_vminaq_m_s16): Remove.
6057 (__arm_vmaxaq_m_s16): Remove.
6058 (__arm_vminaq_m_s32): Remove.
6059 (__arm_vmaxaq_m_s32): Remove.
6060 (__arm_vminaq): Remove.
6061 (__arm_vmaxaq): Remove.
6062 (__arm_vminaq_m): Remove.
6063 (__arm_vmaxaq_m): Remove.
6065 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6067 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
6069 (mve_insn): Add vmaxa, vmina.
6070 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
6071 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
6073 (@mve_<mve_insn>q_<supf><mode>): ... this.
6074 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
6075 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6077 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6079 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
6080 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
6082 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6084 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
6085 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
6086 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
6087 * config/arm/arm-mve-builtins.cc
6088 (function_instance::has_inactive_argument): Handle vmaxnmaq and
6090 * config/arm/arm_mve.h (vminnmaq): Remove.
6092 (vmaxnmaq_m): Remove.
6093 (vminnmaq_m): Remove.
6094 (vminnmaq_f16): Remove.
6095 (vmaxnmaq_f16): Remove.
6096 (vminnmaq_f32): Remove.
6097 (vmaxnmaq_f32): Remove.
6098 (vmaxnmaq_m_f16): Remove.
6099 (vminnmaq_m_f16): Remove.
6100 (vmaxnmaq_m_f32): Remove.
6101 (vminnmaq_m_f32): Remove.
6102 (__arm_vminnmaq_f16): Remove.
6103 (__arm_vmaxnmaq_f16): Remove.
6104 (__arm_vminnmaq_f32): Remove.
6105 (__arm_vmaxnmaq_f32): Remove.
6106 (__arm_vmaxnmaq_m_f16): Remove.
6107 (__arm_vminnmaq_m_f16): Remove.
6108 (__arm_vmaxnmaq_m_f32): Remove.
6109 (__arm_vminnmaq_m_f32): Remove.
6110 (__arm_vminnmaq): Remove.
6111 (__arm_vmaxnmaq): Remove.
6112 (__arm_vmaxnmaq_m): Remove.
6113 (__arm_vminnmaq_m): Remove.
6115 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6117 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
6118 (MVE_VMAXNMA_VMINNMAQ_M): New.
6119 (mve_insn): Add vmaxnma, vminnma.
6120 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
6122 (@mve_<mve_insn>q_f<mode>): ... this.
6123 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
6124 (@mve_<mve_insn>q_m_f<mode>): ... this.
6126 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6128 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
6129 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
6130 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
6131 (vminnmavq, vminnmvq): New.
6132 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
6133 (vminnmavq, vminnmvq): New.
6134 * config/arm/arm_mve.h (vminnmvq): Remove.
6135 (vminnmavq): Remove.
6137 (vmaxnmavq): Remove.
6138 (vmaxnmavq_p): Remove.
6139 (vmaxnmvq_p): Remove.
6140 (vminnmavq_p): Remove.
6141 (vminnmvq_p): Remove.
6142 (vminnmvq_f16): Remove.
6143 (vminnmavq_f16): Remove.
6144 (vmaxnmvq_f16): Remove.
6145 (vmaxnmavq_f16): Remove.
6146 (vminnmvq_f32): Remove.
6147 (vminnmavq_f32): Remove.
6148 (vmaxnmvq_f32): Remove.
6149 (vmaxnmavq_f32): Remove.
6150 (vmaxnmavq_p_f16): Remove.
6151 (vmaxnmvq_p_f16): Remove.
6152 (vminnmavq_p_f16): Remove.
6153 (vminnmvq_p_f16): Remove.
6154 (vmaxnmavq_p_f32): Remove.
6155 (vmaxnmvq_p_f32): Remove.
6156 (vminnmavq_p_f32): Remove.
6157 (vminnmvq_p_f32): Remove.
6158 (__arm_vminnmvq_f16): Remove.
6159 (__arm_vminnmavq_f16): Remove.
6160 (__arm_vmaxnmvq_f16): Remove.
6161 (__arm_vmaxnmavq_f16): Remove.
6162 (__arm_vminnmvq_f32): Remove.
6163 (__arm_vminnmavq_f32): Remove.
6164 (__arm_vmaxnmvq_f32): Remove.
6165 (__arm_vmaxnmavq_f32): Remove.
6166 (__arm_vmaxnmavq_p_f16): Remove.
6167 (__arm_vmaxnmvq_p_f16): Remove.
6168 (__arm_vminnmavq_p_f16): Remove.
6169 (__arm_vminnmvq_p_f16): Remove.
6170 (__arm_vmaxnmavq_p_f32): Remove.
6171 (__arm_vmaxnmvq_p_f32): Remove.
6172 (__arm_vminnmavq_p_f32): Remove.
6173 (__arm_vminnmvq_p_f32): Remove.
6174 (__arm_vminnmvq): Remove.
6175 (__arm_vminnmavq): Remove.
6176 (__arm_vmaxnmvq): Remove.
6177 (__arm_vmaxnmavq): Remove.
6178 (__arm_vmaxnmavq_p): Remove.
6179 (__arm_vmaxnmvq_p): Remove.
6180 (__arm_vminnmavq_p): Remove.
6181 (__arm_vminnmvq_p): Remove.
6182 (__arm_vmaxnmavq_m): Remove.
6183 (__arm_vmaxnmvq_m): Remove.
6185 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6187 * config/arm/arm-mve-builtins-functions.h
6188 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
6190 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6192 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
6193 (MVE_VMAXNMxV_MINNMxVQ_P): New.
6194 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
6195 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
6196 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
6197 (@mve_<mve_insn>q_f<mode>): ... this.
6198 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
6199 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
6200 (@mve_<mve_insn>q_p_f<mode>): ... this.
6202 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6204 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
6205 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
6206 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
6207 * config/arm/arm_mve.h (vminnmq): Remove.
6209 (vmaxnmq_m): Remove.
6210 (vminnmq_m): Remove.
6211 (vminnmq_x): Remove.
6212 (vmaxnmq_x): Remove.
6213 (vminnmq_f16): Remove.
6214 (vmaxnmq_f16): Remove.
6215 (vminnmq_f32): Remove.
6216 (vmaxnmq_f32): Remove.
6217 (vmaxnmq_m_f32): Remove.
6218 (vmaxnmq_m_f16): Remove.
6219 (vminnmq_m_f32): Remove.
6220 (vminnmq_m_f16): Remove.
6221 (vminnmq_x_f16): Remove.
6222 (vminnmq_x_f32): Remove.
6223 (vmaxnmq_x_f16): Remove.
6224 (vmaxnmq_x_f32): Remove.
6225 (__arm_vminnmq_f16): Remove.
6226 (__arm_vmaxnmq_f16): Remove.
6227 (__arm_vminnmq_f32): Remove.
6228 (__arm_vmaxnmq_f32): Remove.
6229 (__arm_vmaxnmq_m_f32): Remove.
6230 (__arm_vmaxnmq_m_f16): Remove.
6231 (__arm_vminnmq_m_f32): Remove.
6232 (__arm_vminnmq_m_f16): Remove.
6233 (__arm_vminnmq_x_f16): Remove.
6234 (__arm_vminnmq_x_f32): Remove.
6235 (__arm_vmaxnmq_x_f16): Remove.
6236 (__arm_vmaxnmq_x_f32): Remove.
6237 (__arm_vminnmq): Remove.
6238 (__arm_vmaxnmq): Remove.
6239 (__arm_vmaxnmq_m): Remove.
6240 (__arm_vminnmq_m): Remove.
6241 (__arm_vminnmq_x): Remove.
6242 (__arm_vmaxnmq_x): Remove.
6244 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6246 * config/arm/iterators.md (MAX_MIN_F): New.
6247 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
6248 (mve_insn): Add vmaxnm, vminnm.
6249 (max_min_f_str): New.
6250 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
6252 (@mve_<max_min_f_str>q_f<mode>): ... this.
6253 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
6254 (@mve_<mve_insn>q_m_f<mode>): ... this.
6256 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6258 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
6259 (smax<mode>3): Likewise.
6261 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6263 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
6264 (FUNCTION_PRED_P_S): New.
6265 (vmaxavq, vminavq, vmaxvq, vminvq): New.
6266 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
6268 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
6270 * config/arm/arm_mve.h (vminvq): Remove.
6274 (vminvq_u8): Remove.
6275 (vmaxvq_u8): Remove.
6276 (vminvq_s8): Remove.
6277 (vmaxvq_s8): Remove.
6278 (vminvq_u16): Remove.
6279 (vmaxvq_u16): Remove.
6280 (vminvq_s16): Remove.
6281 (vmaxvq_s16): Remove.
6282 (vminvq_u32): Remove.
6283 (vmaxvq_u32): Remove.
6284 (vminvq_s32): Remove.
6285 (vmaxvq_s32): Remove.
6286 (vminvq_p_u8): Remove.
6287 (vmaxvq_p_u8): Remove.
6288 (vminvq_p_s8): Remove.
6289 (vmaxvq_p_s8): Remove.
6290 (vminvq_p_u16): Remove.
6291 (vmaxvq_p_u16): Remove.
6292 (vminvq_p_s16): Remove.
6293 (vmaxvq_p_s16): Remove.
6294 (vminvq_p_u32): Remove.
6295 (vmaxvq_p_u32): Remove.
6296 (vminvq_p_s32): Remove.
6297 (vmaxvq_p_s32): Remove.
6298 (__arm_vminvq_u8): Remove.
6299 (__arm_vmaxvq_u8): Remove.
6300 (__arm_vminvq_s8): Remove.
6301 (__arm_vmaxvq_s8): Remove.
6302 (__arm_vminvq_u16): Remove.
6303 (__arm_vmaxvq_u16): Remove.
6304 (__arm_vminvq_s16): Remove.
6305 (__arm_vmaxvq_s16): Remove.
6306 (__arm_vminvq_u32): Remove.
6307 (__arm_vmaxvq_u32): Remove.
6308 (__arm_vminvq_s32): Remove.
6309 (__arm_vmaxvq_s32): Remove.
6310 (__arm_vminvq_p_u8): Remove.
6311 (__arm_vmaxvq_p_u8): Remove.
6312 (__arm_vminvq_p_s8): Remove.
6313 (__arm_vmaxvq_p_s8): Remove.
6314 (__arm_vminvq_p_u16): Remove.
6315 (__arm_vmaxvq_p_u16): Remove.
6316 (__arm_vminvq_p_s16): Remove.
6317 (__arm_vmaxvq_p_s16): Remove.
6318 (__arm_vminvq_p_u32): Remove.
6319 (__arm_vmaxvq_p_u32): Remove.
6320 (__arm_vminvq_p_s32): Remove.
6321 (__arm_vmaxvq_p_s32): Remove.
6322 (__arm_vminvq): Remove.
6323 (__arm_vmaxvq): Remove.
6324 (__arm_vminvq_p): Remove.
6325 (__arm_vmaxvq_p): Remove.
6328 (vminavq_p): Remove.
6329 (vmaxavq_p): Remove.
6330 (vminavq_s8): Remove.
6331 (vmaxavq_s8): Remove.
6332 (vminavq_s16): Remove.
6333 (vmaxavq_s16): Remove.
6334 (vminavq_s32): Remove.
6335 (vmaxavq_s32): Remove.
6336 (vminavq_p_s8): Remove.
6337 (vmaxavq_p_s8): Remove.
6338 (vminavq_p_s16): Remove.
6339 (vmaxavq_p_s16): Remove.
6340 (vminavq_p_s32): Remove.
6341 (vmaxavq_p_s32): Remove.
6342 (__arm_vminavq_s8): Remove.
6343 (__arm_vmaxavq_s8): Remove.
6344 (__arm_vminavq_s16): Remove.
6345 (__arm_vmaxavq_s16): Remove.
6346 (__arm_vminavq_s32): Remove.
6347 (__arm_vmaxavq_s32): Remove.
6348 (__arm_vminavq_p_s8): Remove.
6349 (__arm_vmaxavq_p_s8): Remove.
6350 (__arm_vminavq_p_s16): Remove.
6351 (__arm_vmaxavq_p_s16): Remove.
6352 (__arm_vminavq_p_s32): Remove.
6353 (__arm_vmaxavq_p_s32): Remove.
6354 (__arm_vminavq): Remove.
6355 (__arm_vmaxavq): Remove.
6356 (__arm_vminavq_p): Remove.
6357 (__arm_vmaxavq_p): Remove.
6359 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6361 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
6362 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
6363 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
6364 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
6365 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
6366 (@mve_<mve_insn>q_<supf><mode>): ... this.
6367 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
6368 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
6369 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
6371 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6373 * config/arm/arm-mve-builtins-functions.h (class
6374 unspec_mve_function_exact_insn_pred_p): New.
6376 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6378 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
6379 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
6381 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6383 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
6384 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
6386 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
6388 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
6390 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
6391 (ADJUST_REG_ALLOC_ORDER): Likewise.
6392 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
6394 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
6395 Upa rather than Upl for unpredicated movprfx alternatives.
6397 2023-05-09 Jeff Law <jlaw@ventanamicro>
6399 * config/h8300/testcompare.md: Add peephole2 which uses a memory
6400 load to set flags, thus eliminating a compare against zero.
6402 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6404 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
6405 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
6406 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
6407 * config/arm/arm_mve.h (vshlltq): Remove.
6409 (vshllbq_m): Remove.
6410 (vshlltq_m): Remove.
6411 (vshllbq_x): Remove.
6412 (vshlltq_x): Remove.
6413 (vshlltq_n_u8): Remove.
6414 (vshllbq_n_u8): Remove.
6415 (vshlltq_n_s8): Remove.
6416 (vshllbq_n_s8): Remove.
6417 (vshlltq_n_u16): Remove.
6418 (vshllbq_n_u16): Remove.
6419 (vshlltq_n_s16): Remove.
6420 (vshllbq_n_s16): Remove.
6421 (vshllbq_m_n_s8): Remove.
6422 (vshllbq_m_n_s16): Remove.
6423 (vshllbq_m_n_u8): Remove.
6424 (vshllbq_m_n_u16): Remove.
6425 (vshlltq_m_n_s8): Remove.
6426 (vshlltq_m_n_s16): Remove.
6427 (vshlltq_m_n_u8): Remove.
6428 (vshlltq_m_n_u16): Remove.
6429 (vshllbq_x_n_s8): Remove.
6430 (vshllbq_x_n_s16): Remove.
6431 (vshllbq_x_n_u8): Remove.
6432 (vshllbq_x_n_u16): Remove.
6433 (vshlltq_x_n_s8): Remove.
6434 (vshlltq_x_n_s16): Remove.
6435 (vshlltq_x_n_u8): Remove.
6436 (vshlltq_x_n_u16): Remove.
6437 (__arm_vshlltq_n_u8): Remove.
6438 (__arm_vshllbq_n_u8): Remove.
6439 (__arm_vshlltq_n_s8): Remove.
6440 (__arm_vshllbq_n_s8): Remove.
6441 (__arm_vshlltq_n_u16): Remove.
6442 (__arm_vshllbq_n_u16): Remove.
6443 (__arm_vshlltq_n_s16): Remove.
6444 (__arm_vshllbq_n_s16): Remove.
6445 (__arm_vshllbq_m_n_s8): Remove.
6446 (__arm_vshllbq_m_n_s16): Remove.
6447 (__arm_vshllbq_m_n_u8): Remove.
6448 (__arm_vshllbq_m_n_u16): Remove.
6449 (__arm_vshlltq_m_n_s8): Remove.
6450 (__arm_vshlltq_m_n_s16): Remove.
6451 (__arm_vshlltq_m_n_u8): Remove.
6452 (__arm_vshlltq_m_n_u16): Remove.
6453 (__arm_vshllbq_x_n_s8): Remove.
6454 (__arm_vshllbq_x_n_s16): Remove.
6455 (__arm_vshllbq_x_n_u8): Remove.
6456 (__arm_vshllbq_x_n_u16): Remove.
6457 (__arm_vshlltq_x_n_s8): Remove.
6458 (__arm_vshlltq_x_n_s16): Remove.
6459 (__arm_vshlltq_x_n_u8): Remove.
6460 (__arm_vshlltq_x_n_u16): Remove.
6461 (__arm_vshlltq): Remove.
6462 (__arm_vshllbq): Remove.
6463 (__arm_vshllbq_m): Remove.
6464 (__arm_vshlltq_m): Remove.
6465 (__arm_vshllbq_x): Remove.
6466 (__arm_vshlltq_x): Remove.
6468 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6470 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
6471 (VSHLLBQ_N, VSHLLTQ_N): Remove.
6473 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
6475 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
6476 (mve_vshlltq_n_<supf><mode>): Merge into ...
6477 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
6478 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
6480 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
6482 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6484 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
6485 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
6487 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6489 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
6490 (vqmovntq, vqmovunbq, vqmovuntq): New.
6491 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
6492 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
6493 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
6494 (vqmovntq, vqmovunbq, vqmovuntq): New.
6495 * config/arm/arm-mve-builtins.cc
6496 (function_instance::has_inactive_argument): Handle vmovnbq,
6497 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
6498 * config/arm/arm_mve.h (vqmovntq): Remove.
6500 (vqmovnbq_m): Remove.
6501 (vqmovntq_m): Remove.
6502 (vqmovntq_u16): Remove.
6503 (vqmovnbq_u16): Remove.
6504 (vqmovntq_s16): Remove.
6505 (vqmovnbq_s16): Remove.
6506 (vqmovntq_u32): Remove.
6507 (vqmovnbq_u32): Remove.
6508 (vqmovntq_s32): Remove.
6509 (vqmovnbq_s32): Remove.
6510 (vqmovnbq_m_s16): Remove.
6511 (vqmovntq_m_s16): Remove.
6512 (vqmovnbq_m_u16): Remove.
6513 (vqmovntq_m_u16): Remove.
6514 (vqmovnbq_m_s32): Remove.
6515 (vqmovntq_m_s32): Remove.
6516 (vqmovnbq_m_u32): Remove.
6517 (vqmovntq_m_u32): Remove.
6518 (__arm_vqmovntq_u16): Remove.
6519 (__arm_vqmovnbq_u16): Remove.
6520 (__arm_vqmovntq_s16): Remove.
6521 (__arm_vqmovnbq_s16): Remove.
6522 (__arm_vqmovntq_u32): Remove.
6523 (__arm_vqmovnbq_u32): Remove.
6524 (__arm_vqmovntq_s32): Remove.
6525 (__arm_vqmovnbq_s32): Remove.
6526 (__arm_vqmovnbq_m_s16): Remove.
6527 (__arm_vqmovntq_m_s16): Remove.
6528 (__arm_vqmovnbq_m_u16): Remove.
6529 (__arm_vqmovntq_m_u16): Remove.
6530 (__arm_vqmovnbq_m_s32): Remove.
6531 (__arm_vqmovntq_m_s32): Remove.
6532 (__arm_vqmovnbq_m_u32): Remove.
6533 (__arm_vqmovntq_m_u32): Remove.
6534 (__arm_vqmovntq): Remove.
6535 (__arm_vqmovnbq): Remove.
6536 (__arm_vqmovnbq_m): Remove.
6537 (__arm_vqmovntq_m): Remove.
6540 (vmovnbq_m): Remove.
6541 (vmovntq_m): Remove.
6542 (vmovntq_u16): Remove.
6543 (vmovnbq_u16): Remove.
6544 (vmovntq_s16): Remove.
6545 (vmovnbq_s16): Remove.
6546 (vmovntq_u32): Remove.
6547 (vmovnbq_u32): Remove.
6548 (vmovntq_s32): Remove.
6549 (vmovnbq_s32): Remove.
6550 (vmovnbq_m_s16): Remove.
6551 (vmovntq_m_s16): Remove.
6552 (vmovnbq_m_u16): Remove.
6553 (vmovntq_m_u16): Remove.
6554 (vmovnbq_m_s32): Remove.
6555 (vmovntq_m_s32): Remove.
6556 (vmovnbq_m_u32): Remove.
6557 (vmovntq_m_u32): Remove.
6558 (__arm_vmovntq_u16): Remove.
6559 (__arm_vmovnbq_u16): Remove.
6560 (__arm_vmovntq_s16): Remove.
6561 (__arm_vmovnbq_s16): Remove.
6562 (__arm_vmovntq_u32): Remove.
6563 (__arm_vmovnbq_u32): Remove.
6564 (__arm_vmovntq_s32): Remove.
6565 (__arm_vmovnbq_s32): Remove.
6566 (__arm_vmovnbq_m_s16): Remove.
6567 (__arm_vmovntq_m_s16): Remove.
6568 (__arm_vmovnbq_m_u16): Remove.
6569 (__arm_vmovntq_m_u16): Remove.
6570 (__arm_vmovnbq_m_s32): Remove.
6571 (__arm_vmovntq_m_s32): Remove.
6572 (__arm_vmovnbq_m_u32): Remove.
6573 (__arm_vmovntq_m_u32): Remove.
6574 (__arm_vmovntq): Remove.
6575 (__arm_vmovnbq): Remove.
6576 (__arm_vmovnbq_m): Remove.
6577 (__arm_vmovntq_m): Remove.
6578 (vqmovuntq): Remove.
6579 (vqmovunbq): Remove.
6580 (vqmovunbq_m): Remove.
6581 (vqmovuntq_m): Remove.
6582 (vqmovuntq_s16): Remove.
6583 (vqmovunbq_s16): Remove.
6584 (vqmovuntq_s32): Remove.
6585 (vqmovunbq_s32): Remove.
6586 (vqmovunbq_m_s16): Remove.
6587 (vqmovuntq_m_s16): Remove.
6588 (vqmovunbq_m_s32): Remove.
6589 (vqmovuntq_m_s32): Remove.
6590 (__arm_vqmovuntq_s16): Remove.
6591 (__arm_vqmovunbq_s16): Remove.
6592 (__arm_vqmovuntq_s32): Remove.
6593 (__arm_vqmovunbq_s32): Remove.
6594 (__arm_vqmovunbq_m_s16): Remove.
6595 (__arm_vqmovuntq_m_s16): Remove.
6596 (__arm_vqmovunbq_m_s32): Remove.
6597 (__arm_vqmovuntq_m_s32): Remove.
6598 (__arm_vqmovuntq): Remove.
6599 (__arm_vqmovunbq): Remove.
6600 (__arm_vqmovunbq_m): Remove.
6601 (__arm_vqmovuntq_m): Remove.
6603 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6605 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
6606 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
6609 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
6611 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
6612 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
6613 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
6614 (mve_vqmovuntq_s<mode>): Merge into ...
6615 (@mve_<mve_insn>q_<supf><mode>): ... this.
6616 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
6617 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
6618 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
6619 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6621 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6623 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
6624 (binary_move_narrow_unsigned): New.
6625 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
6626 (binary_move_narrow_unsigned): New.
6628 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6630 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
6631 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
6632 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
6633 (vrndpq, vrndq, vrndxq): New.
6634 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
6635 (vrndpq, vrndq, vrndxq): New.
6636 * config/arm/arm_mve.h (vrndxq): Remove.
6654 (vrndxq_f16): Remove.
6655 (vrndxq_f32): Remove.
6656 (vrndq_f16): Remove.
6657 (vrndq_f32): Remove.
6658 (vrndpq_f16): Remove.
6659 (vrndpq_f32): Remove.
6660 (vrndnq_f16): Remove.
6661 (vrndnq_f32): Remove.
6662 (vrndmq_f16): Remove.
6663 (vrndmq_f32): Remove.
6664 (vrndaq_f16): Remove.
6665 (vrndaq_f32): Remove.
6666 (vrndaq_m_f16): Remove.
6667 (vrndmq_m_f16): Remove.
6668 (vrndnq_m_f16): Remove.
6669 (vrndpq_m_f16): Remove.
6670 (vrndq_m_f16): Remove.
6671 (vrndxq_m_f16): Remove.
6672 (vrndaq_m_f32): Remove.
6673 (vrndmq_m_f32): Remove.
6674 (vrndnq_m_f32): Remove.
6675 (vrndpq_m_f32): Remove.
6676 (vrndq_m_f32): Remove.
6677 (vrndxq_m_f32): Remove.
6678 (vrndq_x_f16): Remove.
6679 (vrndq_x_f32): Remove.
6680 (vrndnq_x_f16): Remove.
6681 (vrndnq_x_f32): Remove.
6682 (vrndmq_x_f16): Remove.
6683 (vrndmq_x_f32): Remove.
6684 (vrndpq_x_f16): Remove.
6685 (vrndpq_x_f32): Remove.
6686 (vrndaq_x_f16): Remove.
6687 (vrndaq_x_f32): Remove.
6688 (vrndxq_x_f16): Remove.
6689 (vrndxq_x_f32): Remove.
6690 (__arm_vrndxq_f16): Remove.
6691 (__arm_vrndxq_f32): Remove.
6692 (__arm_vrndq_f16): Remove.
6693 (__arm_vrndq_f32): Remove.
6694 (__arm_vrndpq_f16): Remove.
6695 (__arm_vrndpq_f32): Remove.
6696 (__arm_vrndnq_f16): Remove.
6697 (__arm_vrndnq_f32): Remove.
6698 (__arm_vrndmq_f16): Remove.
6699 (__arm_vrndmq_f32): Remove.
6700 (__arm_vrndaq_f16): Remove.
6701 (__arm_vrndaq_f32): Remove.
6702 (__arm_vrndaq_m_f16): Remove.
6703 (__arm_vrndmq_m_f16): Remove.
6704 (__arm_vrndnq_m_f16): Remove.
6705 (__arm_vrndpq_m_f16): Remove.
6706 (__arm_vrndq_m_f16): Remove.
6707 (__arm_vrndxq_m_f16): Remove.
6708 (__arm_vrndaq_m_f32): Remove.
6709 (__arm_vrndmq_m_f32): Remove.
6710 (__arm_vrndnq_m_f32): Remove.
6711 (__arm_vrndpq_m_f32): Remove.
6712 (__arm_vrndq_m_f32): Remove.
6713 (__arm_vrndxq_m_f32): Remove.
6714 (__arm_vrndq_x_f16): Remove.
6715 (__arm_vrndq_x_f32): Remove.
6716 (__arm_vrndnq_x_f16): Remove.
6717 (__arm_vrndnq_x_f32): Remove.
6718 (__arm_vrndmq_x_f16): Remove.
6719 (__arm_vrndmq_x_f32): Remove.
6720 (__arm_vrndpq_x_f16): Remove.
6721 (__arm_vrndpq_x_f32): Remove.
6722 (__arm_vrndaq_x_f16): Remove.
6723 (__arm_vrndaq_x_f32): Remove.
6724 (__arm_vrndxq_x_f16): Remove.
6725 (__arm_vrndxq_x_f32): Remove.
6726 (__arm_vrndxq): Remove.
6727 (__arm_vrndq): Remove.
6728 (__arm_vrndpq): Remove.
6729 (__arm_vrndnq): Remove.
6730 (__arm_vrndmq): Remove.
6731 (__arm_vrndaq): Remove.
6732 (__arm_vrndaq_m): Remove.
6733 (__arm_vrndmq_m): Remove.
6734 (__arm_vrndnq_m): Remove.
6735 (__arm_vrndpq_m): Remove.
6736 (__arm_vrndq_m): Remove.
6737 (__arm_vrndxq_m): Remove.
6738 (__arm_vrndq_x): Remove.
6739 (__arm_vrndnq_x): Remove.
6740 (__arm_vrndmq_x): Remove.
6741 (__arm_vrndpq_x): Remove.
6742 (__arm_vrndaq_x): Remove.
6743 (__arm_vrndxq_x): Remove.
6745 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6747 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
6748 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
6749 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
6750 (vclzq, vqabsq, vqnegq): New.
6751 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
6752 (vqabsq, vqnegq): New.
6753 * config/arm/arm_mve.h (vabsq): Remove.
6756 (vabsq_f16): Remove.
6757 (vabsq_f32): Remove.
6759 (vabsq_s16): Remove.
6760 (vabsq_s32): Remove.
6761 (vabsq_m_s8): Remove.
6762 (vabsq_m_s16): Remove.
6763 (vabsq_m_s32): Remove.
6764 (vabsq_m_f16): Remove.
6765 (vabsq_m_f32): Remove.
6766 (vabsq_x_s8): Remove.
6767 (vabsq_x_s16): Remove.
6768 (vabsq_x_s32): Remove.
6769 (vabsq_x_f16): Remove.
6770 (vabsq_x_f32): Remove.
6771 (__arm_vabsq_s8): Remove.
6772 (__arm_vabsq_s16): Remove.
6773 (__arm_vabsq_s32): Remove.
6774 (__arm_vabsq_m_s8): Remove.
6775 (__arm_vabsq_m_s16): Remove.
6776 (__arm_vabsq_m_s32): Remove.
6777 (__arm_vabsq_x_s8): Remove.
6778 (__arm_vabsq_x_s16): Remove.
6779 (__arm_vabsq_x_s32): Remove.
6780 (__arm_vabsq_f16): Remove.
6781 (__arm_vabsq_f32): Remove.
6782 (__arm_vabsq_m_f16): Remove.
6783 (__arm_vabsq_m_f32): Remove.
6784 (__arm_vabsq_x_f16): Remove.
6785 (__arm_vabsq_x_f32): Remove.
6786 (__arm_vabsq): Remove.
6787 (__arm_vabsq_m): Remove.
6788 (__arm_vabsq_x): Remove.
6792 (vnegq_f16): Remove.
6793 (vnegq_f32): Remove.
6795 (vnegq_s16): Remove.
6796 (vnegq_s32): Remove.
6797 (vnegq_m_s8): Remove.
6798 (vnegq_m_s16): Remove.
6799 (vnegq_m_s32): Remove.
6800 (vnegq_m_f16): Remove.
6801 (vnegq_m_f32): Remove.
6802 (vnegq_x_s8): Remove.
6803 (vnegq_x_s16): Remove.
6804 (vnegq_x_s32): Remove.
6805 (vnegq_x_f16): Remove.
6806 (vnegq_x_f32): Remove.
6807 (__arm_vnegq_s8): Remove.
6808 (__arm_vnegq_s16): Remove.
6809 (__arm_vnegq_s32): Remove.
6810 (__arm_vnegq_m_s8): Remove.
6811 (__arm_vnegq_m_s16): Remove.
6812 (__arm_vnegq_m_s32): Remove.
6813 (__arm_vnegq_x_s8): Remove.
6814 (__arm_vnegq_x_s16): Remove.
6815 (__arm_vnegq_x_s32): Remove.
6816 (__arm_vnegq_f16): Remove.
6817 (__arm_vnegq_f32): Remove.
6818 (__arm_vnegq_m_f16): Remove.
6819 (__arm_vnegq_m_f32): Remove.
6820 (__arm_vnegq_x_f16): Remove.
6821 (__arm_vnegq_x_f32): Remove.
6822 (__arm_vnegq): Remove.
6823 (__arm_vnegq_m): Remove.
6824 (__arm_vnegq_x): Remove.
6829 (vclsq_s16): Remove.
6830 (vclsq_s32): Remove.
6831 (vclsq_m_s8): Remove.
6832 (vclsq_m_s16): Remove.
6833 (vclsq_m_s32): Remove.
6834 (vclsq_x_s8): Remove.
6835 (vclsq_x_s16): Remove.
6836 (vclsq_x_s32): Remove.
6837 (__arm_vclsq_s8): Remove.
6838 (__arm_vclsq_s16): Remove.
6839 (__arm_vclsq_s32): Remove.
6840 (__arm_vclsq_m_s8): Remove.
6841 (__arm_vclsq_m_s16): Remove.
6842 (__arm_vclsq_m_s32): Remove.
6843 (__arm_vclsq_x_s8): Remove.
6844 (__arm_vclsq_x_s16): Remove.
6845 (__arm_vclsq_x_s32): Remove.
6846 (__arm_vclsq): Remove.
6847 (__arm_vclsq_m): Remove.
6848 (__arm_vclsq_x): Remove.
6853 (vclzq_s16): Remove.
6854 (vclzq_s32): Remove.
6856 (vclzq_u16): Remove.
6857 (vclzq_u32): Remove.
6858 (vclzq_m_u8): Remove.
6859 (vclzq_m_s8): Remove.
6860 (vclzq_m_u16): Remove.
6861 (vclzq_m_s16): Remove.
6862 (vclzq_m_u32): Remove.
6863 (vclzq_m_s32): Remove.
6864 (vclzq_x_s8): Remove.
6865 (vclzq_x_s16): Remove.
6866 (vclzq_x_s32): Remove.
6867 (vclzq_x_u8): Remove.
6868 (vclzq_x_u16): Remove.
6869 (vclzq_x_u32): Remove.
6870 (__arm_vclzq_s8): Remove.
6871 (__arm_vclzq_s16): Remove.
6872 (__arm_vclzq_s32): Remove.
6873 (__arm_vclzq_u8): Remove.
6874 (__arm_vclzq_u16): Remove.
6875 (__arm_vclzq_u32): Remove.
6876 (__arm_vclzq_m_u8): Remove.
6877 (__arm_vclzq_m_s8): Remove.
6878 (__arm_vclzq_m_u16): Remove.
6879 (__arm_vclzq_m_s16): Remove.
6880 (__arm_vclzq_m_u32): Remove.
6881 (__arm_vclzq_m_s32): Remove.
6882 (__arm_vclzq_x_s8): Remove.
6883 (__arm_vclzq_x_s16): Remove.
6884 (__arm_vclzq_x_s32): Remove.
6885 (__arm_vclzq_x_u8): Remove.
6886 (__arm_vclzq_x_u16): Remove.
6887 (__arm_vclzq_x_u32): Remove.
6888 (__arm_vclzq): Remove.
6889 (__arm_vclzq_m): Remove.
6890 (__arm_vclzq_x): Remove.
6895 (vqabsq_s8): Remove.
6896 (vqabsq_s16): Remove.
6897 (vqabsq_s32): Remove.
6898 (vqnegq_s8): Remove.
6899 (vqnegq_s16): Remove.
6900 (vqnegq_s32): Remove.
6901 (vqnegq_m_s8): Remove.
6902 (vqabsq_m_s8): Remove.
6903 (vqnegq_m_s16): Remove.
6904 (vqabsq_m_s16): Remove.
6905 (vqnegq_m_s32): Remove.
6906 (vqabsq_m_s32): Remove.
6907 (__arm_vqabsq_s8): Remove.
6908 (__arm_vqabsq_s16): Remove.
6909 (__arm_vqabsq_s32): Remove.
6910 (__arm_vqnegq_s8): Remove.
6911 (__arm_vqnegq_s16): Remove.
6912 (__arm_vqnegq_s32): Remove.
6913 (__arm_vqnegq_m_s8): Remove.
6914 (__arm_vqabsq_m_s8): Remove.
6915 (__arm_vqnegq_m_s16): Remove.
6916 (__arm_vqabsq_m_s16): Remove.
6917 (__arm_vqnegq_m_s32): Remove.
6918 (__arm_vqabsq_m_s32): Remove.
6919 (__arm_vqabsq): Remove.
6920 (__arm_vqnegq): Remove.
6921 (__arm_vqnegq_m): Remove.
6922 (__arm_vqabsq_m): Remove.
6924 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6926 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
6927 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
6928 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
6929 vrndm, vrndn, vrndp, vrnd, vrndx.
6930 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
6931 VQABSQ_M_S, VQNEGQ_M_S.
6933 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
6934 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
6935 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
6936 (@mve_<mve_insn>q_f<mode>): ... this.
6937 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
6938 (mve_v<absneg_str>q_f<mode>): ... this.
6939 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
6940 (mve_v<absneg_str>q_s<mode>): ... this.
6941 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
6942 (@mve_<mve_insn>q_<supf><mode>): ... this.
6943 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
6944 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
6945 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
6946 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
6947 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
6948 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
6949 (mve_vrndxq_m_f<mode>): Merge into ...
6950 (@mve_<mve_insn>q_m_f<mode>): ... this.
6952 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
6954 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
6955 * config/arm/arm-mve-builtins-shapes.h (unary): New.
6957 2023-05-09 Jakub Jelinek <jakub@redhat.com>
6959 * mux-utils.h: Fix comment typo, avoides -> avoids.
6961 2023-05-09 Jakub Jelinek <jakub@redhat.com>
6963 PR tree-optimization/109778
6964 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
6965 wi::zext (x, width) rather than x if width != precision, rather
6966 than using wi::zext (right, width) after the shift.
6967 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
6968 of wi::lrotate or wi::rrotate.
6970 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6972 * genmatch.cc (get_out_file): Make static and rename to ...
6973 (choose_output): ... this. Reimplement. Update all uses ...
6974 (decision_tree::gen): ... here and ...
6977 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6979 * genmatch.cc (showUsage): Reimplement as ...
6980 (usage): ...this. Adjust all uses.
6981 (main): Print usage when no arguments. Add missing 'return 1'.
6983 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
6985 * genmatch.cc (header_file): Make static.
6986 (emit_func): Rename to...
6987 (fp_decl): ... this. Adjust all uses.
6988 (fp_decl_done): New function. Use it...
6989 (decision_tree::gen): ... here and...
6990 (write_predicate): ... here.
6993 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
6995 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
6998 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
6999 Uros Bizjak <ubizjak@gmail.com>
7001 * config/i386/i386.md (any_or_plus): Move definition earlier.
7002 (*insvti_highpart_1): New define_insn_and_split to overwrite
7003 (insv) the highpart of a TImode register/memory.
7005 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
7007 * auto-profile.cc (auto_profile): Check todo from early_inline
7008 to see if cleanup_tree_vfg needs to be called.
7009 (early_inline): Return todo from early_inliner.
7011 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
7013 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
7015 (pass_vsetvl::get_block_info): New.
7016 (pass_vsetvl::update_vector_info): New.
7017 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
7018 (pass_vsetvl::compute_local_backward_infos): Ditto.
7019 (pass_vsetvl::transfer_before): Ditto.
7020 (pass_vsetvl::transfer_after): Ditto.
7021 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
7022 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
7023 (pass_vsetvl::cleanup_insns): Ditto.
7024 (pass_vsetvl::compute_local_backward_infos): Use
7027 2023-05-08 Jeff Law <jlaw@ventanamicro>
7029 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
7031 2023-05-08 Richard Biener <rguenther@suse.de>
7032 Michael Meissner <meissner@linux.ibm.com>
7034 PR middle-end/108623
7035 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
7036 Align bit fields > 1 bit to at least an 8-bit boundary.
7038 2023-05-08 Andrew Pinski <apinski@marvell.com>
7040 PR tree-optimization/109424
7041 PR tree-optimization/59424
7042 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
7043 (factor_out_conditional_operation): This and add support for all unary
7045 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
7046 to call factor_out_conditional_operation instead.
7048 2023-05-08 Andrew Pinski <apinski@marvell.com>
7050 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
7051 over factor_out_conditional_conversion.
7053 2023-05-08 Andrew Pinski <apinski@marvell.com>
7055 PR tree-optimization/49959
7056 PR tree-optimization/103771
7057 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
7058 Diamond shapped bb form for factor_out_conditional_conversion.
7060 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7062 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
7063 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
7064 (riscv_vector_get_mask_mode): Ditto.
7065 (get_mask_policy_no_pred): Ditto.
7066 (get_tail_policy_no_pred): Ditto.
7067 (get_mask_mode): New function.
7068 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
7069 (get_tail_policy_no_pred): Ditto.
7070 (riscv_vector_mask_mode_p): Ditto.
7071 (riscv_vector_get_mask_mode): Ditto.
7072 (get_mask_mode): New function.
7073 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
7075 (get_tail_policy_for_pred): Ditto.
7076 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
7077 (get_mask_policy_for_pred): Ditto
7078 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
7080 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
7082 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
7083 (riscv_select_multilib): New.
7084 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
7085 also handle select_by_abi.
7086 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
7087 to select_by_abi_arch_cmodel from 1.
7088 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
7089 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
7091 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
7093 * Makefile.in: (gimple-match-head.o-warn): Remove.
7094 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
7095 gimple-match-exports.cc.
7096 (gimple-match-auto.h): Only depend on s-gimple-match.
7097 (generic-match-auto.h): Likewise.
7099 2023-05-08 Andrew Pinski <apinski@marvell.com>
7101 PR tree-optimization/109691
7102 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
7104 If the removed statement can throw, have need_eh_cleanup
7105 include the bb of that statement.
7106 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
7107 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
7109 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
7110 Initialize dceworklist instead of stmts_to_remove.
7111 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
7112 Destore dceworklist instead of stmts_to_remove.
7113 (substitute_and_fold_dom_walker::before_dom_children):
7114 Set dceworklist instead of adding to stmts_to_remove.
7115 (substitute_and_fold_engine::substitute_and_fold):
7116 Call simple_dce_from_worklist instead of poping
7118 Don't update the stat on removal statements.
7120 2023-05-07 Andrew Pinski <apinski@marvell.com>
7123 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
7124 Change argument type to aarch64_feature_flags.
7125 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
7126 constructor argument type to aarch64_feature_flags.
7127 Change m_old_asm_isa_flags to be aarch64_feature_flags.
7129 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
7131 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
7132 more parallel code if can_create_pseudo_p.
7134 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
7137 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
7138 immediately before moving a multi-word register by parts.
7140 2023-05-06 Jeff Law <jlaw@ventanamicro>
7142 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
7144 2023-05-06 Michael Collison <collison@rivosinc.com>
7146 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
7147 Check that GET_MODE_NUNITS is a multiple of 2.
7149 2023-05-06 Michael Collison <collison@rivosinc.com>
7151 * config/riscv/riscv.cc
7152 (riscv_estimated_poly_value): Implement
7153 TARGET_ESTIMATED_POLY_VALUE.
7154 (riscv_preferred_simd_mode): Implement
7155 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
7156 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
7157 (riscv_empty_mask_is_expensive): Implement
7158 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
7159 (riscv_vectorize_create_costs): Implement
7160 TARGET_VECTORIZE_CREATE_COSTS.
7161 (riscv_support_vector_misalignment): Implement
7162 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
7163 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
7164 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
7165 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
7166 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
7168 2023-05-06 Jeff Law <jlaw@ventanamicro>
7170 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
7171 duplicate definition.
7173 2023-05-06 Michael Collison <collison@rivosinc.com>
7175 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
7176 (riscv_vector_preferred_simd_mode): Ditto.
7177 (get_mask_policy_no_pred): Ditto.
7178 (get_tail_policy_no_pred): Ditto.
7179 (riscv_vector_mask_mode_p): Ditto.
7180 (riscv_vector_get_mask_mode): Ditto.
7182 2023-05-06 Michael Collison <collison@rivosinc.com>
7184 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
7185 Remove static declaration to to make externally visible.
7186 (get_mask_policy_for_pred): Ditto.
7187 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
7188 New external declaration.
7189 (get_mask_policy_for_pred): Ditto.
7191 2023-05-06 Michael Collison <collison@rivosinc.com>
7193 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
7194 (riscv_vector_get_mask_mode): Ditto.
7195 (get_mask_policy_no_pred): Ditto.
7196 (get_tail_policy_no_pred): Ditto.
7198 2023-05-06 Xi Ruoyao <xry111@xry111.site>
7200 * config/loongarch/loongarch.h (struct machine_function): Add
7201 reg_is_wrapped_separately array for register wrapping
7203 * config/loongarch/loongarch.cc
7204 (loongarch_get_separate_components): New function.
7205 (loongarch_components_for_bb): Likewise.
7206 (loongarch_disqualify_components): Likewise.
7207 (loongarch_process_components): Likewise.
7208 (loongarch_emit_prologue_components): Likewise.
7209 (loongarch_emit_epilogue_components): Likewise.
7210 (loongarch_set_handled_components): Likewise.
7211 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
7212 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
7213 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
7214 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
7215 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
7216 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
7217 (loongarch_for_each_saved_reg): Skip registers that are wrapped
7220 2023-05-06 Xi Ruoyao <xry111@xry111.site>
7223 * Makefile.in (s-macro_list): Pass -nostdinc to
7226 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7228 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
7229 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
7230 (preferred_simd_mode): Ditto.
7231 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
7232 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
7233 (riscv_preferred_simd_mode): New function.
7234 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
7235 * config/riscv/vector.md: Add autovec.md.
7236 * config/riscv/autovec.md: New file.
7238 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7240 * real.h (dconst_pi): Define.
7241 (dconst_e_ptr): Formatting fix.
7242 (dconst_pi_ptr): Declare.
7243 * real.cc (dconst_pi_ptr): New function.
7244 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
7245 boundaries range with range computed from sin/cos of the particular
7246 bounds if the argument range is shorter than 2*pi.
7247 (cfn_sincos::op1_range): Take bulps into account when determining
7248 which result ranges are always invalid or behave like known NAN.
7250 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
7252 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
7253 pass type to vrange_storage::equal_p.
7254 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
7255 (irange_storage::equal_p): Same.
7256 (frange_storage::equal_p): Same.
7257 * value-range-storage.h (class frange_storage): Same.
7259 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7262 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
7263 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
7265 2023-05-06 liuhongt <hongtao.liu@intel.com>
7267 * combine.cc (maybe_swap_commutative_operands): Canonicalize
7268 vec_merge when mask is constant.
7269 * doc/md.texi: Document vec_merge canonicalization.
7271 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7273 * value-range.h (frange_arithmetic): Declare.
7274 * range-op-float.cc (frange_arithmetic): No longer static.
7275 * gimple-range-op.cc (frange_mpfr_arg1): New function.
7276 (cfn_sqrt::fold_range): Intersect the generic boundaries range
7277 with range computed from sqrt of the particular bounds.
7278 (cfn_sqrt::op1_range): Intersect the generic boundaries range
7279 with range computed from squared particular bounds.
7281 2023-05-06 Jakub Jelinek <jakub@redhat.com>
7283 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
7284 earlier with helper variables also renamed.
7285 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
7286 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
7287 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
7289 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
7291 * config/cris/cris.md (splitop): Add PLUS.
7292 * config/cris/cris.cc (cris_split_constant): Also handle
7293 PLUS when a split into two insns may be useful.
7295 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7297 * config/cris/cris.md (movandsplit1): New define_peephole2.
7299 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7301 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
7303 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
7305 * doc/md.texi (define_peephole2): Document order of scanning.
7307 2023-05-05 Pan Li <pan2.li@intel.com>
7308 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7310 * config/riscv/vector.md: Allow const as the operand of RVV
7313 2023-05-05 Pan Li <pan2.li@intel.com>
7315 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
7316 consumed by simplify_rtx.
7318 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7320 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
7321 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
7322 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
7323 * config/arm/arm_mve.h (vshrq): Remove.
7329 (vshrq_n_s8): Remove.
7330 (vshrq_n_s16): Remove.
7331 (vshrq_n_s32): Remove.
7332 (vshrq_n_u8): Remove.
7333 (vshrq_n_u16): Remove.
7334 (vshrq_n_u32): Remove.
7335 (vrshrq_n_u8): Remove.
7336 (vrshrq_n_s8): Remove.
7337 (vrshrq_n_u16): Remove.
7338 (vrshrq_n_s16): Remove.
7339 (vrshrq_n_u32): Remove.
7340 (vrshrq_n_s32): Remove.
7341 (vrshrq_m_n_s8): Remove.
7342 (vrshrq_m_n_s32): Remove.
7343 (vrshrq_m_n_s16): Remove.
7344 (vrshrq_m_n_u8): Remove.
7345 (vrshrq_m_n_u32): Remove.
7346 (vrshrq_m_n_u16): Remove.
7347 (vshrq_m_n_s8): Remove.
7348 (vshrq_m_n_s32): Remove.
7349 (vshrq_m_n_s16): Remove.
7350 (vshrq_m_n_u8): Remove.
7351 (vshrq_m_n_u32): Remove.
7352 (vshrq_m_n_u16): Remove.
7353 (vrshrq_x_n_s8): Remove.
7354 (vrshrq_x_n_s16): Remove.
7355 (vrshrq_x_n_s32): Remove.
7356 (vrshrq_x_n_u8): Remove.
7357 (vrshrq_x_n_u16): Remove.
7358 (vrshrq_x_n_u32): Remove.
7359 (vshrq_x_n_s8): Remove.
7360 (vshrq_x_n_s16): Remove.
7361 (vshrq_x_n_s32): Remove.
7362 (vshrq_x_n_u8): Remove.
7363 (vshrq_x_n_u16): Remove.
7364 (vshrq_x_n_u32): Remove.
7365 (__arm_vshrq_n_s8): Remove.
7366 (__arm_vshrq_n_s16): Remove.
7367 (__arm_vshrq_n_s32): Remove.
7368 (__arm_vshrq_n_u8): Remove.
7369 (__arm_vshrq_n_u16): Remove.
7370 (__arm_vshrq_n_u32): Remove.
7371 (__arm_vrshrq_n_u8): Remove.
7372 (__arm_vrshrq_n_s8): Remove.
7373 (__arm_vrshrq_n_u16): Remove.
7374 (__arm_vrshrq_n_s16): Remove.
7375 (__arm_vrshrq_n_u32): Remove.
7376 (__arm_vrshrq_n_s32): Remove.
7377 (__arm_vrshrq_m_n_s8): Remove.
7378 (__arm_vrshrq_m_n_s32): Remove.
7379 (__arm_vrshrq_m_n_s16): Remove.
7380 (__arm_vrshrq_m_n_u8): Remove.
7381 (__arm_vrshrq_m_n_u32): Remove.
7382 (__arm_vrshrq_m_n_u16): Remove.
7383 (__arm_vshrq_m_n_s8): Remove.
7384 (__arm_vshrq_m_n_s32): Remove.
7385 (__arm_vshrq_m_n_s16): Remove.
7386 (__arm_vshrq_m_n_u8): Remove.
7387 (__arm_vshrq_m_n_u32): Remove.
7388 (__arm_vshrq_m_n_u16): Remove.
7389 (__arm_vrshrq_x_n_s8): Remove.
7390 (__arm_vrshrq_x_n_s16): Remove.
7391 (__arm_vrshrq_x_n_s32): Remove.
7392 (__arm_vrshrq_x_n_u8): Remove.
7393 (__arm_vrshrq_x_n_u16): Remove.
7394 (__arm_vrshrq_x_n_u32): Remove.
7395 (__arm_vshrq_x_n_s8): Remove.
7396 (__arm_vshrq_x_n_s16): Remove.
7397 (__arm_vshrq_x_n_s32): Remove.
7398 (__arm_vshrq_x_n_u8): Remove.
7399 (__arm_vshrq_x_n_u16): Remove.
7400 (__arm_vshrq_x_n_u32): Remove.
7401 (__arm_vshrq): Remove.
7402 (__arm_vrshrq): Remove.
7403 (__arm_vrshrq_m): Remove.
7404 (__arm_vshrq_m): Remove.
7405 (__arm_vrshrq_x): Remove.
7406 (__arm_vshrq_x): Remove.
7408 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7410 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
7411 (mve_insn): Add vrshr, vshr.
7412 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
7413 (mve_vrshrq_n_<supf><mode>): Merge into ...
7414 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7415 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
7417 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7419 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7421 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
7422 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
7424 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7426 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
7427 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
7428 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
7429 (vqrshrunbq, vqrshruntq): New.
7430 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
7431 (vqrshrunbq, vqrshruntq): New.
7432 * config/arm/arm-mve-builtins.cc
7433 (function_instance::has_inactive_argument): Handle vqshrunbq,
7434 vqshruntq, vqrshrunbq, vqrshruntq.
7435 * config/arm/arm_mve.h (vqrshrunbq): Remove.
7436 (vqrshruntq): Remove.
7437 (vqrshrunbq_m): Remove.
7438 (vqrshruntq_m): Remove.
7439 (vqrshrunbq_n_s16): Remove.
7440 (vqrshrunbq_n_s32): Remove.
7441 (vqrshruntq_n_s16): Remove.
7442 (vqrshruntq_n_s32): Remove.
7443 (vqrshrunbq_m_n_s32): Remove.
7444 (vqrshrunbq_m_n_s16): Remove.
7445 (vqrshruntq_m_n_s32): Remove.
7446 (vqrshruntq_m_n_s16): Remove.
7447 (__arm_vqrshrunbq_n_s16): Remove.
7448 (__arm_vqrshrunbq_n_s32): Remove.
7449 (__arm_vqrshruntq_n_s16): Remove.
7450 (__arm_vqrshruntq_n_s32): Remove.
7451 (__arm_vqrshrunbq_m_n_s32): Remove.
7452 (__arm_vqrshrunbq_m_n_s16): Remove.
7453 (__arm_vqrshruntq_m_n_s32): Remove.
7454 (__arm_vqrshruntq_m_n_s16): Remove.
7455 (__arm_vqrshrunbq): Remove.
7456 (__arm_vqrshruntq): Remove.
7457 (__arm_vqrshrunbq_m): Remove.
7458 (__arm_vqrshruntq_m): Remove.
7459 (vqshrunbq): Remove.
7460 (vqshruntq): Remove.
7461 (vqshrunbq_m): Remove.
7462 (vqshruntq_m): Remove.
7463 (vqshrunbq_n_s16): Remove.
7464 (vqshruntq_n_s16): Remove.
7465 (vqshrunbq_n_s32): Remove.
7466 (vqshruntq_n_s32): Remove.
7467 (vqshrunbq_m_n_s32): Remove.
7468 (vqshrunbq_m_n_s16): Remove.
7469 (vqshruntq_m_n_s32): Remove.
7470 (vqshruntq_m_n_s16): Remove.
7471 (__arm_vqshrunbq_n_s16): Remove.
7472 (__arm_vqshruntq_n_s16): Remove.
7473 (__arm_vqshrunbq_n_s32): Remove.
7474 (__arm_vqshruntq_n_s32): Remove.
7475 (__arm_vqshrunbq_m_n_s32): Remove.
7476 (__arm_vqshrunbq_m_n_s16): Remove.
7477 (__arm_vqshruntq_m_n_s32): Remove.
7478 (__arm_vqshruntq_m_n_s16): Remove.
7479 (__arm_vqshrunbq): Remove.
7480 (__arm_vqshruntq): Remove.
7481 (__arm_vqshrunbq_m): Remove.
7482 (__arm_vqshruntq_m): Remove.
7484 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7486 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
7487 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
7488 (MVE_SHRN_M_N): Likewise.
7489 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
7490 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
7492 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
7493 (mve_vqrshruntq_n_s<mode>): Remove.
7494 (mve_vqshrunbq_n_s<mode>): Remove.
7495 (mve_vqshruntq_n_s<mode>): Remove.
7496 (mve_vqrshrunbq_m_n_s<mode>): Remove.
7497 (mve_vqrshruntq_m_n_s<mode>): Remove.
7498 (mve_vqshrunbq_m_n_s<mode>): Remove.
7499 (mve_vqshruntq_m_n_s<mode>): Remove.
7501 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7503 * config/arm/arm-mve-builtins-shapes.cc
7504 (binary_rshift_narrow_unsigned): New.
7505 * config/arm/arm-mve-builtins-shapes.h
7506 (binary_rshift_narrow_unsigned): New.
7508 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7510 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
7511 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
7512 (vqrshrnbq, vqrshrntq): New.
7513 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
7514 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
7516 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
7517 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
7518 * config/arm/arm-mve-builtins.cc
7519 (function_instance::has_inactive_argument): Handle vshrnbq,
7520 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
7522 * config/arm/arm_mve.h (vshrnbq): Remove.
7524 (vshrnbq_m): Remove.
7525 (vshrntq_m): Remove.
7526 (vshrnbq_n_s16): Remove.
7527 (vshrntq_n_s16): Remove.
7528 (vshrnbq_n_u16): Remove.
7529 (vshrntq_n_u16): Remove.
7530 (vshrnbq_n_s32): Remove.
7531 (vshrntq_n_s32): Remove.
7532 (vshrnbq_n_u32): Remove.
7533 (vshrntq_n_u32): Remove.
7534 (vshrnbq_m_n_s32): Remove.
7535 (vshrnbq_m_n_s16): Remove.
7536 (vshrnbq_m_n_u32): Remove.
7537 (vshrnbq_m_n_u16): Remove.
7538 (vshrntq_m_n_s32): Remove.
7539 (vshrntq_m_n_s16): Remove.
7540 (vshrntq_m_n_u32): Remove.
7541 (vshrntq_m_n_u16): Remove.
7542 (__arm_vshrnbq_n_s16): Remove.
7543 (__arm_vshrntq_n_s16): Remove.
7544 (__arm_vshrnbq_n_u16): Remove.
7545 (__arm_vshrntq_n_u16): Remove.
7546 (__arm_vshrnbq_n_s32): Remove.
7547 (__arm_vshrntq_n_s32): Remove.
7548 (__arm_vshrnbq_n_u32): Remove.
7549 (__arm_vshrntq_n_u32): Remove.
7550 (__arm_vshrnbq_m_n_s32): Remove.
7551 (__arm_vshrnbq_m_n_s16): Remove.
7552 (__arm_vshrnbq_m_n_u32): Remove.
7553 (__arm_vshrnbq_m_n_u16): Remove.
7554 (__arm_vshrntq_m_n_s32): Remove.
7555 (__arm_vshrntq_m_n_s16): Remove.
7556 (__arm_vshrntq_m_n_u32): Remove.
7557 (__arm_vshrntq_m_n_u16): Remove.
7558 (__arm_vshrnbq): Remove.
7559 (__arm_vshrntq): Remove.
7560 (__arm_vshrnbq_m): Remove.
7561 (__arm_vshrntq_m): Remove.
7564 (vrshrnbq_m): Remove.
7565 (vrshrntq_m): Remove.
7566 (vrshrnbq_n_s16): Remove.
7567 (vrshrntq_n_s16): Remove.
7568 (vrshrnbq_n_u16): Remove.
7569 (vrshrntq_n_u16): Remove.
7570 (vrshrnbq_n_s32): Remove.
7571 (vrshrntq_n_s32): Remove.
7572 (vrshrnbq_n_u32): Remove.
7573 (vrshrntq_n_u32): Remove.
7574 (vrshrnbq_m_n_s32): Remove.
7575 (vrshrnbq_m_n_s16): Remove.
7576 (vrshrnbq_m_n_u32): Remove.
7577 (vrshrnbq_m_n_u16): Remove.
7578 (vrshrntq_m_n_s32): Remove.
7579 (vrshrntq_m_n_s16): Remove.
7580 (vrshrntq_m_n_u32): Remove.
7581 (vrshrntq_m_n_u16): Remove.
7582 (__arm_vrshrnbq_n_s16): Remove.
7583 (__arm_vrshrntq_n_s16): Remove.
7584 (__arm_vrshrnbq_n_u16): Remove.
7585 (__arm_vrshrntq_n_u16): Remove.
7586 (__arm_vrshrnbq_n_s32): Remove.
7587 (__arm_vrshrntq_n_s32): Remove.
7588 (__arm_vrshrnbq_n_u32): Remove.
7589 (__arm_vrshrntq_n_u32): Remove.
7590 (__arm_vrshrnbq_m_n_s32): Remove.
7591 (__arm_vrshrnbq_m_n_s16): Remove.
7592 (__arm_vrshrnbq_m_n_u32): Remove.
7593 (__arm_vrshrnbq_m_n_u16): Remove.
7594 (__arm_vrshrntq_m_n_s32): Remove.
7595 (__arm_vrshrntq_m_n_s16): Remove.
7596 (__arm_vrshrntq_m_n_u32): Remove.
7597 (__arm_vrshrntq_m_n_u16): Remove.
7598 (__arm_vrshrnbq): Remove.
7599 (__arm_vrshrntq): Remove.
7600 (__arm_vrshrnbq_m): Remove.
7601 (__arm_vrshrntq_m): Remove.
7604 (vqshrnbq_m): Remove.
7605 (vqshrntq_m): Remove.
7606 (vqshrnbq_n_s16): Remove.
7607 (vqshrntq_n_s16): Remove.
7608 (vqshrnbq_n_u16): Remove.
7609 (vqshrntq_n_u16): Remove.
7610 (vqshrnbq_n_s32): Remove.
7611 (vqshrntq_n_s32): Remove.
7612 (vqshrnbq_n_u32): Remove.
7613 (vqshrntq_n_u32): Remove.
7614 (vqshrnbq_m_n_s32): Remove.
7615 (vqshrnbq_m_n_s16): Remove.
7616 (vqshrnbq_m_n_u32): Remove.
7617 (vqshrnbq_m_n_u16): Remove.
7618 (vqshrntq_m_n_s32): Remove.
7619 (vqshrntq_m_n_s16): Remove.
7620 (vqshrntq_m_n_u32): Remove.
7621 (vqshrntq_m_n_u16): Remove.
7622 (__arm_vqshrnbq_n_s16): Remove.
7623 (__arm_vqshrntq_n_s16): Remove.
7624 (__arm_vqshrnbq_n_u16): Remove.
7625 (__arm_vqshrntq_n_u16): Remove.
7626 (__arm_vqshrnbq_n_s32): Remove.
7627 (__arm_vqshrntq_n_s32): Remove.
7628 (__arm_vqshrnbq_n_u32): Remove.
7629 (__arm_vqshrntq_n_u32): Remove.
7630 (__arm_vqshrnbq_m_n_s32): Remove.
7631 (__arm_vqshrnbq_m_n_s16): Remove.
7632 (__arm_vqshrnbq_m_n_u32): Remove.
7633 (__arm_vqshrnbq_m_n_u16): Remove.
7634 (__arm_vqshrntq_m_n_s32): Remove.
7635 (__arm_vqshrntq_m_n_s16): Remove.
7636 (__arm_vqshrntq_m_n_u32): Remove.
7637 (__arm_vqshrntq_m_n_u16): Remove.
7638 (__arm_vqshrnbq): Remove.
7639 (__arm_vqshrntq): Remove.
7640 (__arm_vqshrnbq_m): Remove.
7641 (__arm_vqshrntq_m): Remove.
7642 (vqrshrnbq): Remove.
7643 (vqrshrntq): Remove.
7644 (vqrshrnbq_m): Remove.
7645 (vqrshrntq_m): Remove.
7646 (vqrshrnbq_n_s16): Remove.
7647 (vqrshrnbq_n_u16): Remove.
7648 (vqrshrnbq_n_s32): Remove.
7649 (vqrshrnbq_n_u32): Remove.
7650 (vqrshrntq_n_s16): Remove.
7651 (vqrshrntq_n_u16): Remove.
7652 (vqrshrntq_n_s32): Remove.
7653 (vqrshrntq_n_u32): Remove.
7654 (vqrshrnbq_m_n_s32): Remove.
7655 (vqrshrnbq_m_n_s16): Remove.
7656 (vqrshrnbq_m_n_u32): Remove.
7657 (vqrshrnbq_m_n_u16): Remove.
7658 (vqrshrntq_m_n_s32): Remove.
7659 (vqrshrntq_m_n_s16): Remove.
7660 (vqrshrntq_m_n_u32): Remove.
7661 (vqrshrntq_m_n_u16): Remove.
7662 (__arm_vqrshrnbq_n_s16): Remove.
7663 (__arm_vqrshrnbq_n_u16): Remove.
7664 (__arm_vqrshrnbq_n_s32): Remove.
7665 (__arm_vqrshrnbq_n_u32): Remove.
7666 (__arm_vqrshrntq_n_s16): Remove.
7667 (__arm_vqrshrntq_n_u16): Remove.
7668 (__arm_vqrshrntq_n_s32): Remove.
7669 (__arm_vqrshrntq_n_u32): Remove.
7670 (__arm_vqrshrnbq_m_n_s32): Remove.
7671 (__arm_vqrshrnbq_m_n_s16): Remove.
7672 (__arm_vqrshrnbq_m_n_u32): Remove.
7673 (__arm_vqrshrnbq_m_n_u16): Remove.
7674 (__arm_vqrshrntq_m_n_s32): Remove.
7675 (__arm_vqrshrntq_m_n_s16): Remove.
7676 (__arm_vqrshrntq_m_n_u32): Remove.
7677 (__arm_vqrshrntq_m_n_u16): Remove.
7678 (__arm_vqrshrnbq): Remove.
7679 (__arm_vqrshrntq): Remove.
7680 (__arm_vqrshrnbq_m): Remove.
7681 (__arm_vqrshrntq_m): Remove.
7683 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7685 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
7686 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
7687 vrshrnt, vshrnb, vshrnt.
7689 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
7690 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
7691 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
7692 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
7693 (mve_vshrntq_n_<supf><mode>): Merge into ...
7694 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
7695 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
7696 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
7697 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
7698 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
7700 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
7702 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7704 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
7706 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
7708 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7710 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
7711 (vmaxq, vminq): New.
7712 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
7713 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
7714 * config/arm/arm_mve.h (vminq): Remove.
7724 (vminq_u16): Remove.
7725 (vmaxq_u16): Remove.
7726 (vminq_s16): Remove.
7727 (vmaxq_s16): Remove.
7728 (vminq_u32): Remove.
7729 (vmaxq_u32): Remove.
7730 (vminq_s32): Remove.
7731 (vmaxq_s32): Remove.
7732 (vmaxq_m_s8): Remove.
7733 (vmaxq_m_s32): Remove.
7734 (vmaxq_m_s16): Remove.
7735 (vmaxq_m_u8): Remove.
7736 (vmaxq_m_u32): Remove.
7737 (vmaxq_m_u16): Remove.
7738 (vminq_m_s8): Remove.
7739 (vminq_m_s32): Remove.
7740 (vminq_m_s16): Remove.
7741 (vminq_m_u8): Remove.
7742 (vminq_m_u32): Remove.
7743 (vminq_m_u16): Remove.
7744 (vminq_x_s8): Remove.
7745 (vminq_x_s16): Remove.
7746 (vminq_x_s32): Remove.
7747 (vminq_x_u8): Remove.
7748 (vminq_x_u16): Remove.
7749 (vminq_x_u32): Remove.
7750 (vmaxq_x_s8): Remove.
7751 (vmaxq_x_s16): Remove.
7752 (vmaxq_x_s32): Remove.
7753 (vmaxq_x_u8): Remove.
7754 (vmaxq_x_u16): Remove.
7755 (vmaxq_x_u32): Remove.
7756 (__arm_vminq_u8): Remove.
7757 (__arm_vmaxq_u8): Remove.
7758 (__arm_vminq_s8): Remove.
7759 (__arm_vmaxq_s8): Remove.
7760 (__arm_vminq_u16): Remove.
7761 (__arm_vmaxq_u16): Remove.
7762 (__arm_vminq_s16): Remove.
7763 (__arm_vmaxq_s16): Remove.
7764 (__arm_vminq_u32): Remove.
7765 (__arm_vmaxq_u32): Remove.
7766 (__arm_vminq_s32): Remove.
7767 (__arm_vmaxq_s32): Remove.
7768 (__arm_vmaxq_m_s8): Remove.
7769 (__arm_vmaxq_m_s32): Remove.
7770 (__arm_vmaxq_m_s16): Remove.
7771 (__arm_vmaxq_m_u8): Remove.
7772 (__arm_vmaxq_m_u32): Remove.
7773 (__arm_vmaxq_m_u16): Remove.
7774 (__arm_vminq_m_s8): Remove.
7775 (__arm_vminq_m_s32): Remove.
7776 (__arm_vminq_m_s16): Remove.
7777 (__arm_vminq_m_u8): Remove.
7778 (__arm_vminq_m_u32): Remove.
7779 (__arm_vminq_m_u16): Remove.
7780 (__arm_vminq_x_s8): Remove.
7781 (__arm_vminq_x_s16): Remove.
7782 (__arm_vminq_x_s32): Remove.
7783 (__arm_vminq_x_u8): Remove.
7784 (__arm_vminq_x_u16): Remove.
7785 (__arm_vminq_x_u32): Remove.
7786 (__arm_vmaxq_x_s8): Remove.
7787 (__arm_vmaxq_x_s16): Remove.
7788 (__arm_vmaxq_x_s32): Remove.
7789 (__arm_vmaxq_x_u8): Remove.
7790 (__arm_vmaxq_x_u16): Remove.
7791 (__arm_vmaxq_x_u32): Remove.
7792 (__arm_vminq): Remove.
7793 (__arm_vmaxq): Remove.
7794 (__arm_vmaxq_m): Remove.
7795 (__arm_vminq_m): Remove.
7796 (__arm_vminq_x): Remove.
7797 (__arm_vmaxq_x): Remove.
7799 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7801 * config/arm/iterators.md (MAX_MIN_SU): New.
7802 (max_min_su_str): New.
7803 (max_min_supf): New.
7804 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
7805 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
7806 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
7808 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
7810 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
7811 (vqshlq, vshlq): New.
7812 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
7813 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
7814 * config/arm/arm_mve.h (vshlq): Remove.
7817 (vshlq_m_r): Remove.
7819 (vshlq_m_n): Remove.
7821 (vshlq_x_n): Remove.
7823 (vshlq_s16): Remove.
7824 (vshlq_s32): Remove.
7826 (vshlq_u16): Remove.
7827 (vshlq_u32): Remove.
7828 (vshlq_r_u8): Remove.
7829 (vshlq_n_u8): Remove.
7830 (vshlq_r_s8): Remove.
7831 (vshlq_n_s8): Remove.
7832 (vshlq_r_u16): Remove.
7833 (vshlq_n_u16): Remove.
7834 (vshlq_r_s16): Remove.
7835 (vshlq_n_s16): Remove.
7836 (vshlq_r_u32): Remove.
7837 (vshlq_n_u32): Remove.
7838 (vshlq_r_s32): Remove.
7839 (vshlq_n_s32): Remove.
7840 (vshlq_m_r_u8): Remove.
7841 (vshlq_m_r_s8): Remove.
7842 (vshlq_m_r_u16): Remove.
7843 (vshlq_m_r_s16): Remove.
7844 (vshlq_m_r_u32): Remove.
7845 (vshlq_m_r_s32): Remove.
7846 (vshlq_m_u8): Remove.
7847 (vshlq_m_s8): Remove.
7848 (vshlq_m_u16): Remove.
7849 (vshlq_m_s16): Remove.
7850 (vshlq_m_u32): Remove.
7851 (vshlq_m_s32): Remove.
7852 (vshlq_m_n_s8): Remove.
7853 (vshlq_m_n_s32): Remove.
7854 (vshlq_m_n_s16): Remove.
7855 (vshlq_m_n_u8): Remove.
7856 (vshlq_m_n_u32): Remove.
7857 (vshlq_m_n_u16): Remove.
7858 (vshlq_x_s8): Remove.
7859 (vshlq_x_s16): Remove.
7860 (vshlq_x_s32): Remove.
7861 (vshlq_x_u8): Remove.
7862 (vshlq_x_u16): Remove.
7863 (vshlq_x_u32): Remove.
7864 (vshlq_x_n_s8): Remove.
7865 (vshlq_x_n_s16): Remove.
7866 (vshlq_x_n_s32): Remove.
7867 (vshlq_x_n_u8): Remove.
7868 (vshlq_x_n_u16): Remove.
7869 (vshlq_x_n_u32): Remove.
7870 (__arm_vshlq_s8): Remove.
7871 (__arm_vshlq_s16): Remove.
7872 (__arm_vshlq_s32): Remove.
7873 (__arm_vshlq_u8): Remove.
7874 (__arm_vshlq_u16): Remove.
7875 (__arm_vshlq_u32): Remove.
7876 (__arm_vshlq_r_u8): Remove.
7877 (__arm_vshlq_n_u8): Remove.
7878 (__arm_vshlq_r_s8): Remove.
7879 (__arm_vshlq_n_s8): Remove.
7880 (__arm_vshlq_r_u16): Remove.
7881 (__arm_vshlq_n_u16): Remove.
7882 (__arm_vshlq_r_s16): Remove.
7883 (__arm_vshlq_n_s16): Remove.
7884 (__arm_vshlq_r_u32): Remove.
7885 (__arm_vshlq_n_u32): Remove.
7886 (__arm_vshlq_r_s32): Remove.
7887 (__arm_vshlq_n_s32): Remove.
7888 (__arm_vshlq_m_r_u8): Remove.
7889 (__arm_vshlq_m_r_s8): Remove.
7890 (__arm_vshlq_m_r_u16): Remove.
7891 (__arm_vshlq_m_r_s16): Remove.
7892 (__arm_vshlq_m_r_u32): Remove.
7893 (__arm_vshlq_m_r_s32): Remove.
7894 (__arm_vshlq_m_u8): Remove.
7895 (__arm_vshlq_m_s8): Remove.
7896 (__arm_vshlq_m_u16): Remove.
7897 (__arm_vshlq_m_s16): Remove.
7898 (__arm_vshlq_m_u32): Remove.
7899 (__arm_vshlq_m_s32): Remove.
7900 (__arm_vshlq_m_n_s8): Remove.
7901 (__arm_vshlq_m_n_s32): Remove.
7902 (__arm_vshlq_m_n_s16): Remove.
7903 (__arm_vshlq_m_n_u8): Remove.
7904 (__arm_vshlq_m_n_u32): Remove.
7905 (__arm_vshlq_m_n_u16): Remove.
7906 (__arm_vshlq_x_s8): Remove.
7907 (__arm_vshlq_x_s16): Remove.
7908 (__arm_vshlq_x_s32): Remove.
7909 (__arm_vshlq_x_u8): Remove.
7910 (__arm_vshlq_x_u16): Remove.
7911 (__arm_vshlq_x_u32): Remove.
7912 (__arm_vshlq_x_n_s8): Remove.
7913 (__arm_vshlq_x_n_s16): Remove.
7914 (__arm_vshlq_x_n_s32): Remove.
7915 (__arm_vshlq_x_n_u8): Remove.
7916 (__arm_vshlq_x_n_u16): Remove.
7917 (__arm_vshlq_x_n_u32): Remove.
7918 (__arm_vshlq): Remove.
7919 (__arm_vshlq_r): Remove.
7920 (__arm_vshlq_n): Remove.
7921 (__arm_vshlq_m_r): Remove.
7922 (__arm_vshlq_m): Remove.
7923 (__arm_vshlq_m_n): Remove.
7924 (__arm_vshlq_x): Remove.
7925 (__arm_vshlq_x_n): Remove.
7929 (vqshlq_m_r): Remove.
7930 (vqshlq_m_n): Remove.
7932 (vqshlq_u8): Remove.
7933 (vqshlq_r_u8): Remove.
7934 (vqshlq_n_u8): Remove.
7935 (vqshlq_s8): Remove.
7936 (vqshlq_r_s8): Remove.
7937 (vqshlq_n_s8): Remove.
7938 (vqshlq_u16): Remove.
7939 (vqshlq_r_u16): Remove.
7940 (vqshlq_n_u16): Remove.
7941 (vqshlq_s16): Remove.
7942 (vqshlq_r_s16): Remove.
7943 (vqshlq_n_s16): Remove.
7944 (vqshlq_u32): Remove.
7945 (vqshlq_r_u32): Remove.
7946 (vqshlq_n_u32): Remove.
7947 (vqshlq_s32): Remove.
7948 (vqshlq_r_s32): Remove.
7949 (vqshlq_n_s32): Remove.
7950 (vqshlq_m_r_u8): Remove.
7951 (vqshlq_m_r_s8): Remove.
7952 (vqshlq_m_r_u16): Remove.
7953 (vqshlq_m_r_s16): Remove.
7954 (vqshlq_m_r_u32): Remove.
7955 (vqshlq_m_r_s32): Remove.
7956 (vqshlq_m_n_s8): Remove.
7957 (vqshlq_m_n_s32): Remove.
7958 (vqshlq_m_n_s16): Remove.
7959 (vqshlq_m_n_u8): Remove.
7960 (vqshlq_m_n_u32): Remove.
7961 (vqshlq_m_n_u16): Remove.
7962 (vqshlq_m_s8): Remove.
7963 (vqshlq_m_s32): Remove.
7964 (vqshlq_m_s16): Remove.
7965 (vqshlq_m_u8): Remove.
7966 (vqshlq_m_u32): Remove.
7967 (vqshlq_m_u16): Remove.
7968 (__arm_vqshlq_u8): Remove.
7969 (__arm_vqshlq_r_u8): Remove.
7970 (__arm_vqshlq_n_u8): Remove.
7971 (__arm_vqshlq_s8): Remove.
7972 (__arm_vqshlq_r_s8): Remove.
7973 (__arm_vqshlq_n_s8): Remove.
7974 (__arm_vqshlq_u16): Remove.
7975 (__arm_vqshlq_r_u16): Remove.
7976 (__arm_vqshlq_n_u16): Remove.
7977 (__arm_vqshlq_s16): Remove.
7978 (__arm_vqshlq_r_s16): Remove.
7979 (__arm_vqshlq_n_s16): Remove.
7980 (__arm_vqshlq_u32): Remove.
7981 (__arm_vqshlq_r_u32): Remove.
7982 (__arm_vqshlq_n_u32): Remove.
7983 (__arm_vqshlq_s32): Remove.
7984 (__arm_vqshlq_r_s32): Remove.
7985 (__arm_vqshlq_n_s32): Remove.
7986 (__arm_vqshlq_m_r_u8): Remove.
7987 (__arm_vqshlq_m_r_s8): Remove.
7988 (__arm_vqshlq_m_r_u16): Remove.
7989 (__arm_vqshlq_m_r_s16): Remove.
7990 (__arm_vqshlq_m_r_u32): Remove.
7991 (__arm_vqshlq_m_r_s32): Remove.
7992 (__arm_vqshlq_m_n_s8): Remove.
7993 (__arm_vqshlq_m_n_s32): Remove.
7994 (__arm_vqshlq_m_n_s16): Remove.
7995 (__arm_vqshlq_m_n_u8): Remove.
7996 (__arm_vqshlq_m_n_u32): Remove.
7997 (__arm_vqshlq_m_n_u16): Remove.
7998 (__arm_vqshlq_m_s8): Remove.
7999 (__arm_vqshlq_m_s32): Remove.
8000 (__arm_vqshlq_m_s16): Remove.
8001 (__arm_vqshlq_m_u8): Remove.
8002 (__arm_vqshlq_m_u32): Remove.
8003 (__arm_vqshlq_m_u16): Remove.
8004 (__arm_vqshlq): Remove.
8005 (__arm_vqshlq_r): Remove.
8006 (__arm_vqshlq_n): Remove.
8007 (__arm_vqshlq_m_r): Remove.
8008 (__arm_vqshlq_m_n): Remove.
8009 (__arm_vqshlq_m): Remove.
8011 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8013 * config/arm/arm-mve-builtins-functions.h (class
8014 unspec_mve_function_exact_insn_vshl): New.
8016 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8018 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
8019 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
8021 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8023 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
8024 (finish_opt_n_resolution): Handle MODE_r.
8025 * config/arm/arm-mve-builtins.def (r): New mode.
8027 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8029 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
8030 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
8032 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8034 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
8036 * config/arm/arm-mve-builtins-base.def (vabdq): New.
8037 * config/arm/arm-mve-builtins-base.h (vabdq): New.
8038 * config/arm/arm_mve.h (vabdq): Remove.
8043 (vabdq_u16): Remove.
8044 (vabdq_s16): Remove.
8045 (vabdq_u32): Remove.
8046 (vabdq_s32): Remove.
8047 (vabdq_f16): Remove.
8048 (vabdq_f32): Remove.
8049 (vabdq_m_s8): Remove.
8050 (vabdq_m_s32): Remove.
8051 (vabdq_m_s16): Remove.
8052 (vabdq_m_u8): Remove.
8053 (vabdq_m_u32): Remove.
8054 (vabdq_m_u16): Remove.
8055 (vabdq_m_f32): Remove.
8056 (vabdq_m_f16): Remove.
8057 (vabdq_x_s8): Remove.
8058 (vabdq_x_s16): Remove.
8059 (vabdq_x_s32): Remove.
8060 (vabdq_x_u8): Remove.
8061 (vabdq_x_u16): Remove.
8062 (vabdq_x_u32): Remove.
8063 (vabdq_x_f16): Remove.
8064 (vabdq_x_f32): Remove.
8065 (__arm_vabdq_u8): Remove.
8066 (__arm_vabdq_s8): Remove.
8067 (__arm_vabdq_u16): Remove.
8068 (__arm_vabdq_s16): Remove.
8069 (__arm_vabdq_u32): Remove.
8070 (__arm_vabdq_s32): Remove.
8071 (__arm_vabdq_m_s8): Remove.
8072 (__arm_vabdq_m_s32): Remove.
8073 (__arm_vabdq_m_s16): Remove.
8074 (__arm_vabdq_m_u8): Remove.
8075 (__arm_vabdq_m_u32): Remove.
8076 (__arm_vabdq_m_u16): Remove.
8077 (__arm_vabdq_x_s8): Remove.
8078 (__arm_vabdq_x_s16): Remove.
8079 (__arm_vabdq_x_s32): Remove.
8080 (__arm_vabdq_x_u8): Remove.
8081 (__arm_vabdq_x_u16): Remove.
8082 (__arm_vabdq_x_u32): Remove.
8083 (__arm_vabdq_f16): Remove.
8084 (__arm_vabdq_f32): Remove.
8085 (__arm_vabdq_m_f32): Remove.
8086 (__arm_vabdq_m_f16): Remove.
8087 (__arm_vabdq_x_f16): Remove.
8088 (__arm_vabdq_x_f32): Remove.
8089 (__arm_vabdq): Remove.
8090 (__arm_vabdq_m): Remove.
8091 (__arm_vabdq_x): Remove.
8093 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8095 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
8096 (MVE_FP_VABDQ_ONLY): New.
8097 (mve_insn): Add vabd.
8098 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
8099 (@mve_<mve_insn>q_f<mode>): ... this.
8100 (mve_vabdq_m_f<mode>): Remove.
8102 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8104 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
8105 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
8106 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
8107 * config/arm/arm_mve.h (vqrdmulhq): Remove.
8108 (vqrdmulhq_m): Remove.
8109 (vqrdmulhq_s8): Remove.
8110 (vqrdmulhq_n_s8): Remove.
8111 (vqrdmulhq_s16): Remove.
8112 (vqrdmulhq_n_s16): Remove.
8113 (vqrdmulhq_s32): Remove.
8114 (vqrdmulhq_n_s32): Remove.
8115 (vqrdmulhq_m_n_s8): Remove.
8116 (vqrdmulhq_m_n_s32): Remove.
8117 (vqrdmulhq_m_n_s16): Remove.
8118 (vqrdmulhq_m_s8): Remove.
8119 (vqrdmulhq_m_s32): Remove.
8120 (vqrdmulhq_m_s16): Remove.
8121 (__arm_vqrdmulhq_s8): Remove.
8122 (__arm_vqrdmulhq_n_s8): Remove.
8123 (__arm_vqrdmulhq_s16): Remove.
8124 (__arm_vqrdmulhq_n_s16): Remove.
8125 (__arm_vqrdmulhq_s32): Remove.
8126 (__arm_vqrdmulhq_n_s32): Remove.
8127 (__arm_vqrdmulhq_m_n_s8): Remove.
8128 (__arm_vqrdmulhq_m_n_s32): Remove.
8129 (__arm_vqrdmulhq_m_n_s16): Remove.
8130 (__arm_vqrdmulhq_m_s8): Remove.
8131 (__arm_vqrdmulhq_m_s32): Remove.
8132 (__arm_vqrdmulhq_m_s16): Remove.
8133 (__arm_vqrdmulhq): Remove.
8134 (__arm_vqrdmulhq_m): Remove.
8136 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8138 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
8139 (MVE_SHIFT_N, MVE_SHIFT_R): New.
8140 (mve_insn): Add vqshl, vshl.
8141 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
8142 (mve_vshlq_n_<supf><mode>): Merge into ...
8143 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8144 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
8146 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
8147 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
8149 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
8150 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
8152 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8153 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
8155 (@mve_<mve_insn>q_<supf><mode>): ... this.
8157 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8159 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
8160 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
8161 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
8162 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
8164 * config/arm/arm_mve.h (vrshlq): Remove.
8165 (vrshlq_m_n): Remove.
8168 (vrshlq_u8): Remove.
8169 (vrshlq_n_u8): Remove.
8170 (vrshlq_s8): Remove.
8171 (vrshlq_n_s8): Remove.
8172 (vrshlq_u16): Remove.
8173 (vrshlq_n_u16): Remove.
8174 (vrshlq_s16): Remove.
8175 (vrshlq_n_s16): Remove.
8176 (vrshlq_u32): Remove.
8177 (vrshlq_n_u32): Remove.
8178 (vrshlq_s32): Remove.
8179 (vrshlq_n_s32): Remove.
8180 (vrshlq_m_n_u8): Remove.
8181 (vrshlq_m_n_s8): Remove.
8182 (vrshlq_m_n_u16): Remove.
8183 (vrshlq_m_n_s16): Remove.
8184 (vrshlq_m_n_u32): Remove.
8185 (vrshlq_m_n_s32): Remove.
8186 (vrshlq_m_s8): Remove.
8187 (vrshlq_m_s32): Remove.
8188 (vrshlq_m_s16): Remove.
8189 (vrshlq_m_u8): Remove.
8190 (vrshlq_m_u32): Remove.
8191 (vrshlq_m_u16): Remove.
8192 (vrshlq_x_s8): Remove.
8193 (vrshlq_x_s16): Remove.
8194 (vrshlq_x_s32): Remove.
8195 (vrshlq_x_u8): Remove.
8196 (vrshlq_x_u16): Remove.
8197 (vrshlq_x_u32): Remove.
8198 (__arm_vrshlq_u8): Remove.
8199 (__arm_vrshlq_n_u8): Remove.
8200 (__arm_vrshlq_s8): Remove.
8201 (__arm_vrshlq_n_s8): Remove.
8202 (__arm_vrshlq_u16): Remove.
8203 (__arm_vrshlq_n_u16): Remove.
8204 (__arm_vrshlq_s16): Remove.
8205 (__arm_vrshlq_n_s16): Remove.
8206 (__arm_vrshlq_u32): Remove.
8207 (__arm_vrshlq_n_u32): Remove.
8208 (__arm_vrshlq_s32): Remove.
8209 (__arm_vrshlq_n_s32): Remove.
8210 (__arm_vrshlq_m_n_u8): Remove.
8211 (__arm_vrshlq_m_n_s8): Remove.
8212 (__arm_vrshlq_m_n_u16): Remove.
8213 (__arm_vrshlq_m_n_s16): Remove.
8214 (__arm_vrshlq_m_n_u32): Remove.
8215 (__arm_vrshlq_m_n_s32): Remove.
8216 (__arm_vrshlq_m_s8): Remove.
8217 (__arm_vrshlq_m_s32): Remove.
8218 (__arm_vrshlq_m_s16): Remove.
8219 (__arm_vrshlq_m_u8): Remove.
8220 (__arm_vrshlq_m_u32): Remove.
8221 (__arm_vrshlq_m_u16): Remove.
8222 (__arm_vrshlq_x_s8): Remove.
8223 (__arm_vrshlq_x_s16): Remove.
8224 (__arm_vrshlq_x_s32): Remove.
8225 (__arm_vrshlq_x_u8): Remove.
8226 (__arm_vrshlq_x_u16): Remove.
8227 (__arm_vrshlq_x_u32): Remove.
8228 (__arm_vrshlq): Remove.
8229 (__arm_vrshlq_m_n): Remove.
8230 (__arm_vrshlq_m): Remove.
8231 (__arm_vrshlq_x): Remove.
8233 (vqrshlq_m_n): Remove.
8234 (vqrshlq_m): Remove.
8235 (vqrshlq_u8): Remove.
8236 (vqrshlq_n_u8): Remove.
8237 (vqrshlq_s8): Remove.
8238 (vqrshlq_n_s8): Remove.
8239 (vqrshlq_u16): Remove.
8240 (vqrshlq_n_u16): Remove.
8241 (vqrshlq_s16): Remove.
8242 (vqrshlq_n_s16): Remove.
8243 (vqrshlq_u32): Remove.
8244 (vqrshlq_n_u32): Remove.
8245 (vqrshlq_s32): Remove.
8246 (vqrshlq_n_s32): Remove.
8247 (vqrshlq_m_n_u8): Remove.
8248 (vqrshlq_m_n_s8): Remove.
8249 (vqrshlq_m_n_u16): Remove.
8250 (vqrshlq_m_n_s16): Remove.
8251 (vqrshlq_m_n_u32): Remove.
8252 (vqrshlq_m_n_s32): Remove.
8253 (vqrshlq_m_s8): Remove.
8254 (vqrshlq_m_s32): Remove.
8255 (vqrshlq_m_s16): Remove.
8256 (vqrshlq_m_u8): Remove.
8257 (vqrshlq_m_u32): Remove.
8258 (vqrshlq_m_u16): Remove.
8259 (__arm_vqrshlq_u8): Remove.
8260 (__arm_vqrshlq_n_u8): Remove.
8261 (__arm_vqrshlq_s8): Remove.
8262 (__arm_vqrshlq_n_s8): Remove.
8263 (__arm_vqrshlq_u16): Remove.
8264 (__arm_vqrshlq_n_u16): Remove.
8265 (__arm_vqrshlq_s16): Remove.
8266 (__arm_vqrshlq_n_s16): Remove.
8267 (__arm_vqrshlq_u32): Remove.
8268 (__arm_vqrshlq_n_u32): Remove.
8269 (__arm_vqrshlq_s32): Remove.
8270 (__arm_vqrshlq_n_s32): Remove.
8271 (__arm_vqrshlq_m_n_u8): Remove.
8272 (__arm_vqrshlq_m_n_s8): Remove.
8273 (__arm_vqrshlq_m_n_u16): Remove.
8274 (__arm_vqrshlq_m_n_s16): Remove.
8275 (__arm_vqrshlq_m_n_u32): Remove.
8276 (__arm_vqrshlq_m_n_s32): Remove.
8277 (__arm_vqrshlq_m_s8): Remove.
8278 (__arm_vqrshlq_m_s32): Remove.
8279 (__arm_vqrshlq_m_s16): Remove.
8280 (__arm_vqrshlq_m_u8): Remove.
8281 (__arm_vqrshlq_m_u32): Remove.
8282 (__arm_vqrshlq_m_u16): Remove.
8283 (__arm_vqrshlq): Remove.
8284 (__arm_vqrshlq_m_n): Remove.
8285 (__arm_vqrshlq_m): Remove.
8287 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8289 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
8290 (mve_insn): Add vqrshl, vrshl.
8291 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
8292 (mve_vrshlq_n_<supf><mode>): Merge into ...
8293 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8294 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
8296 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8298 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
8300 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
8301 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
8303 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8306 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
8307 denegrate PHI optmization.
8309 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
8311 * config/i386/predicates.md (register_no_SP_operand):
8312 Rename from index_register_operand.
8313 (call_register_operand): Update for rename.
8314 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
8316 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8319 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
8320 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
8321 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
8322 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
8323 (s-match): Split into s-generic-match and s-gimple-match.
8324 * configure.ac (with-matchpd-partitions,
8325 DEFAULT_MATCHPD_PARTITIONS): New.
8326 * configure: Regenerate.
8328 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8331 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
8332 (decision_tree::gen): Accept list of files instead of single and update
8333 to write function definition to header and main file.
8334 (write_predicate): Likewise.
8335 (write_header): Emit pragmas and new includes.
8336 (main): Create file buffers and cleanup.
8337 (showUsage, write_header_includes): New.
8339 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8342 * Makefile.in (OBJS): Add gimple-match-exports.o.
8343 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
8344 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
8345 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
8346 gimple_resimplify5, constant_for_folding, convert_conditional_op,
8347 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
8348 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
8349 do_valueize, try_conditional_simplification, gimple_extract,
8350 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
8351 commutative_ternary_op_p, first_commutative_argument,
8352 associative_binary_op_p, directly_supported_p,
8353 get_conditional_internal_fn): Moved to gimple-match-exports.cc
8354 * gimple-match-exports.cc: New file.
8356 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8359 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
8361 (dt_simplify::gen_1): Use it.
8363 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8366 * genmatch.cc (output_line_directive): Only emit commented directive
8369 2023-05-05 Tamar Christina <tamar.christina@arm.com>
8372 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
8374 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
8376 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
8377 unused in_mode/in_n variables.
8379 2023-05-05 Richard Biener <rguenther@suse.de>
8381 PR tree-optimization/109735
8382 * tree-vect-stmts.cc (vectorizable_operation): Perform
8383 conversion for POINTER_DIFF_EXPR unconditionally.
8385 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
8387 * config/i386/mmx.md (mulv2si3): New expander.
8388 (*mulv2si3): New insn pattern.
8390 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
8391 Thomas Schwinge <thomas@codesourcery.com>
8394 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
8395 alongside reverse-offload function table to prevent NULL values
8396 of the function addresses.
8398 2023-05-05 Jakub Jelinek <jakub@redhat.com>
8400 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
8402 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
8404 2023-05-05 Andrew Pinski <apinski@marvell.com>
8406 PR tree-optimization/109732
8407 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
8408 of the argtrue/argfalse.
8410 2023-05-05 Andrew Pinski <apinski@marvell.com>
8412 PR tree-optimization/109722
8413 * match.pd: Extend the `ABS<a> == 0` pattern
8414 to cover `ABSU<a> == 0` too.
8416 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
8419 * config/i386/predicates.md (index_reg_operand): New predicate.
8420 * config/i386/i386.md (ashift to lea spliter): Use
8421 general_reg_operand and index_reg_operand predicates.
8423 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8425 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
8426 Rename and reimplement with RTL codes to...
8427 (aarch64_<optab>hn2<mode>_insn_le): .. This.
8428 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
8429 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
8431 (aarch64_<optab>hn2<mode>_insn_be): ... This.
8432 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
8433 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
8434 (aarch64_<optab>hn2<mode>): ... This.
8435 (aarch64_r<optab>hn2<mode>): New expander.
8436 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
8437 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
8439 (sur): Remove handling of the above.
8442 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8444 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
8446 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
8447 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
8448 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
8449 (aarch64_<sur><addsub>hn<mode>): Delete.
8450 (aarch64_<optab>hn<mode>): New define_expand.
8451 (aarch64_r<optab>hn<mode>): Likewise.
8452 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
8455 2023-05-04 Andrew Pinski <apinski@marvell.com>
8457 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
8458 diamond form bb with forwarder only empty blocks better.
8460 2023-05-04 Andrew Pinski <apinski@marvell.com>
8462 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
8463 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
8464 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
8465 of an inline version of it.
8466 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
8467 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
8469 2023-05-04 Andrew Pinski <apinski@marvell.com>
8471 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
8472 the default argument value for dce_ssa_names to nullptr.
8473 Check to make sure dce_ssa_names is a non-nullptr before
8474 calling simple_dce_from_worklist.
8476 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
8478 * config/i386/predicates.md (index_register_operand): Reject
8479 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
8480 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
8481 (call_register_no_elim_operand): Rewrite as ...
8482 (call_register_operand): ... this.
8483 (call_insn_operand): Use call_register_operand predicate.
8485 2023-05-04 Richard Biener <rguenther@suse.de>
8487 PR tree-optimization/109721
8488 * tree-vect-stmts.cc (vectorizable_operation): Make sure
8489 to test word_mode for all !target_support_p operations.
8491 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8494 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
8495 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
8496 (aarch64_mla<mode>): Rename to...
8497 (aarch64_mla<mode><vczle><vczbe>): ... This.
8498 (*aarch64_mla_elt<mode>): Rename to...
8499 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
8500 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
8501 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8502 (aarch64_mla_n<mode>): Rename to...
8503 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
8504 (aarch64_mls<mode>): Rename to...
8505 (aarch64_mls<mode><vczle><vczbe>): ... This.
8506 (*aarch64_mls_elt<mode>): Rename to...
8507 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
8508 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
8509 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8510 (aarch64_mls_n<mode>): Rename to...
8511 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
8512 (fma<mode>4): Rename to...
8513 (fma<mode>4<vczle><vczbe>): ... This.
8514 (*aarch64_fma4_elt<mode>): Rename to...
8515 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
8516 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
8517 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8518 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
8519 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
8520 (fnma<mode>4): Rename to...
8521 (fnma<mode>4<vczle><vczbe>): ... This.
8522 (*aarch64_fnma4_elt<mode>): Rename to...
8523 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
8524 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
8525 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
8526 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
8527 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
8528 (aarch64_simd_bsl<mode>_internal): Rename to...
8529 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
8530 (*aarch64_simd_bsl<mode>_alt): Rename to...
8531 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
8533 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8536 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
8537 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
8538 (fabd<mode>3): Rename to...
8539 (fabd<mode>3<vczle><vczbe>): ... This.
8540 (aarch64_<optab>p<mode>): Rename to...
8541 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
8542 (aarch64_faddp<mode>): Rename to...
8543 (aarch64_faddp<mode><vczle><vczbe>): ... This.
8545 2023-05-04 Martin Liska <mliska@suse.cz>
8547 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
8548 (print_version): Use it.
8549 (generate_results): Likewise.
8551 2023-05-04 Richard Biener <rguenther@suse.de>
8553 * tree-cfg.h (last_stmt): Rename to ...
8554 (last_nondebug_stmt): ... this.
8555 * tree-cfg.cc (last_stmt): Rename to ...
8556 (last_nondebug_stmt): ... this.
8557 (assign_discriminators): Adjust.
8558 (group_case_labels_stmt): Likewise.
8559 (gimple_can_duplicate_bb_p): Likewise.
8560 (execute_fixup_cfg): Likewise.
8561 * auto-profile.cc (afdo_propagate_circuit): Likewise.
8562 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
8563 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
8564 (determine_parallel_type): Likewise.
8565 (adjust_context_and_scope): Likewise.
8566 (expand_task_call): Likewise.
8567 (remove_exit_barrier): Likewise.
8568 (expand_omp_taskreg): Likewise.
8569 (expand_omp_for_init_counts): Likewise.
8570 (expand_omp_for_init_vars): Likewise.
8571 (expand_omp_for_static_chunk): Likewise.
8572 (expand_omp_simd): Likewise.
8573 (expand_oacc_for): Likewise.
8574 (expand_omp_for): Likewise.
8575 (expand_omp_sections): Likewise.
8576 (expand_omp_atomic_fetch_op): Likewise.
8577 (expand_omp_atomic_cas): Likewise.
8578 (expand_omp_atomic): Likewise.
8579 (expand_omp_target): Likewise.
8580 (expand_omp): Likewise.
8581 (omp_make_gimple_edges): Likewise.
8582 * trans-mem.cc (tm_region_init): Likewise.
8583 * tree-inline.cc (redirect_all_calls): Likewise.
8584 * tree-parloops.cc (gen_parallel_loop): Likewise.
8585 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
8586 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
8588 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
8589 (may_eliminate_iv): Likewise.
8590 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
8591 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
8593 (estimate_numbers_of_iterations): Likewise.
8594 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
8595 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
8596 (set_predicates_for_bb): Likewise.
8597 (init_loop_unswitch_info): Likewise.
8598 (hoist_guard): Likewise.
8599 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
8600 (minmax_replacement): Likewise.
8601 * tree-ssa-reassoc.cc (update_range_test): Likewise.
8602 (optimize_range_tests_to_bit_test): Likewise.
8603 (optimize_range_tests_var_bound): Likewise.
8604 (optimize_range_tests): Likewise.
8605 (no_side_effect_bb): Likewise.
8606 (suitable_cond_bb): Likewise.
8607 (maybe_optimize_range_tests): Likewise.
8608 (reassociate_bb): Likewise.
8609 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
8611 2023-05-04 Jakub Jelinek <jakub@redhat.com>
8614 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
8615 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
8616 for it only if it still has TImode. Don't decide whether to call
8617 fix_debug_reg_uses based on whether SRC is ever set or not.
8619 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8621 * config/cris/cris.cc (cris_split_constant): New function.
8622 * config/cris/cris.md (splitop): New iterator.
8623 (opsplit1): New define_peephole2.
8624 * config/cris/cris-protos.h (cris_split_constant): Declare.
8625 (cris_splittable_constant_p): New macro.
8627 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8629 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
8632 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
8634 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
8635 lra_in_progress, not reload_in_progress.
8636 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
8637 * config/cris/constraints.md ("Q"): Ditto.
8639 2023-05-03 Andrew Pinski <apinski@marvell.com>
8641 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
8642 stats on removed number of statements and phis.
8644 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
8646 PR tree-optimization/109711
8647 * value-range.cc (irange::verify_range): Allow types of
8650 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
8653 * calls.cc (can_implement_as_sibling_call_p): Reject calls
8654 to __sanitizer_cov_trace_pc.
8656 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
8659 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
8660 a new ABI break parameter for GCC 14. Set it to the alignment
8661 of enums that have an underlying type. Take the true alignment
8662 of such enums from the TYPE_ALIGN of the underlying type's
8664 (aarch64_function_arg_boundary): Update accordingly.
8665 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
8666 Warn about ABI differences.
8668 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
8671 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
8672 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
8673 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
8674 (aarch64_gimplify_va_arg_expr): Likewise.
8676 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
8678 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
8679 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
8680 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
8682 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
8683 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
8684 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
8685 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
8686 * config/arm/arm_mve.h (vhsubq): Remove.
8692 (vhsubq_u8): Remove.
8693 (vhsubq_n_u8): Remove.
8694 (vhaddq_u8): Remove.
8695 (vhaddq_n_u8): Remove.
8696 (vhsubq_s8): Remove.
8697 (vhsubq_n_s8): Remove.
8698 (vhaddq_s8): Remove.
8699 (vhaddq_n_s8): Remove.
8700 (vhsubq_u16): Remove.
8701 (vhsubq_n_u16): Remove.
8702 (vhaddq_u16): Remove.
8703 (vhaddq_n_u16): Remove.
8704 (vhsubq_s16): Remove.
8705 (vhsubq_n_s16): Remove.
8706 (vhaddq_s16): Remove.
8707 (vhaddq_n_s16): Remove.
8708 (vhsubq_u32): Remove.
8709 (vhsubq_n_u32): Remove.
8710 (vhaddq_u32): Remove.
8711 (vhaddq_n_u32): Remove.
8712 (vhsubq_s32): Remove.
8713 (vhsubq_n_s32): Remove.
8714 (vhaddq_s32): Remove.
8715 (vhaddq_n_s32): Remove.
8716 (vhaddq_m_n_s8): Remove.
8717 (vhaddq_m_n_s32): Remove.
8718 (vhaddq_m_n_s16): Remove.
8719 (vhaddq_m_n_u8): Remove.
8720 (vhaddq_m_n_u32): Remove.
8721 (vhaddq_m_n_u16): Remove.
8722 (vhaddq_m_s8): Remove.
8723 (vhaddq_m_s32): Remove.
8724 (vhaddq_m_s16): Remove.
8725 (vhaddq_m_u8): Remove.
8726 (vhaddq_m_u32): Remove.
8727 (vhaddq_m_u16): Remove.
8728 (vhsubq_m_n_s8): Remove.
8729 (vhsubq_m_n_s32): Remove.
8730 (vhsubq_m_n_s16): Remove.
8731 (vhsubq_m_n_u8): Remove.
8732 (vhsubq_m_n_u32): Remove.
8733 (vhsubq_m_n_u16): Remove.
8734 (vhsubq_m_s8): Remove.
8735 (vhsubq_m_s32): Remove.
8736 (vhsubq_m_s16): Remove.
8737 (vhsubq_m_u8): Remove.
8738 (vhsubq_m_u32): Remove.
8739 (vhsubq_m_u16): Remove.
8740 (vhaddq_x_n_s8): Remove.
8741 (vhaddq_x_n_s16): Remove.
8742 (vhaddq_x_n_s32): Remove.
8743 (vhaddq_x_n_u8): Remove.
8744 (vhaddq_x_n_u16): Remove.
8745 (vhaddq_x_n_u32): Remove.
8746 (vhaddq_x_s8): Remove.
8747 (vhaddq_x_s16): Remove.
8748 (vhaddq_x_s32): Remove.
8749 (vhaddq_x_u8): Remove.
8750 (vhaddq_x_u16): Remove.
8751 (vhaddq_x_u32): Remove.
8752 (vhsubq_x_n_s8): Remove.
8753 (vhsubq_x_n_s16): Remove.
8754 (vhsubq_x_n_s32): Remove.
8755 (vhsubq_x_n_u8): Remove.
8756 (vhsubq_x_n_u16): Remove.
8757 (vhsubq_x_n_u32): Remove.
8758 (vhsubq_x_s8): Remove.
8759 (vhsubq_x_s16): Remove.
8760 (vhsubq_x_s32): Remove.
8761 (vhsubq_x_u8): Remove.
8762 (vhsubq_x_u16): Remove.
8763 (vhsubq_x_u32): Remove.
8764 (__arm_vhsubq_u8): Remove.
8765 (__arm_vhsubq_n_u8): Remove.
8766 (__arm_vhaddq_u8): Remove.
8767 (__arm_vhaddq_n_u8): Remove.
8768 (__arm_vhsubq_s8): Remove.
8769 (__arm_vhsubq_n_s8): Remove.
8770 (__arm_vhaddq_s8): Remove.
8771 (__arm_vhaddq_n_s8): Remove.
8772 (__arm_vhsubq_u16): Remove.
8773 (__arm_vhsubq_n_u16): Remove.
8774 (__arm_vhaddq_u16): Remove.
8775 (__arm_vhaddq_n_u16): Remove.
8776 (__arm_vhsubq_s16): Remove.
8777 (__arm_vhsubq_n_s16): Remove.
8778 (__arm_vhaddq_s16): Remove.
8779 (__arm_vhaddq_n_s16): Remove.
8780 (__arm_vhsubq_u32): Remove.
8781 (__arm_vhsubq_n_u32): Remove.
8782 (__arm_vhaddq_u32): Remove.
8783 (__arm_vhaddq_n_u32): Remove.
8784 (__arm_vhsubq_s32): Remove.
8785 (__arm_vhsubq_n_s32): Remove.
8786 (__arm_vhaddq_s32): Remove.
8787 (__arm_vhaddq_n_s32): Remove.
8788 (__arm_vhaddq_m_n_s8): Remove.
8789 (__arm_vhaddq_m_n_s32): Remove.
8790 (__arm_vhaddq_m_n_s16): Remove.
8791 (__arm_vhaddq_m_n_u8): Remove.
8792 (__arm_vhaddq_m_n_u32): Remove.
8793 (__arm_vhaddq_m_n_u16): Remove.
8794 (__arm_vhaddq_m_s8): Remove.
8795 (__arm_vhaddq_m_s32): Remove.
8796 (__arm_vhaddq_m_s16): Remove.
8797 (__arm_vhaddq_m_u8): Remove.
8798 (__arm_vhaddq_m_u32): Remove.
8799 (__arm_vhaddq_m_u16): Remove.
8800 (__arm_vhsubq_m_n_s8): Remove.
8801 (__arm_vhsubq_m_n_s32): Remove.
8802 (__arm_vhsubq_m_n_s16): Remove.
8803 (__arm_vhsubq_m_n_u8): Remove.
8804 (__arm_vhsubq_m_n_u32): Remove.
8805 (__arm_vhsubq_m_n_u16): Remove.
8806 (__arm_vhsubq_m_s8): Remove.
8807 (__arm_vhsubq_m_s32): Remove.
8808 (__arm_vhsubq_m_s16): Remove.
8809 (__arm_vhsubq_m_u8): Remove.
8810 (__arm_vhsubq_m_u32): Remove.
8811 (__arm_vhsubq_m_u16): Remove.
8812 (__arm_vhaddq_x_n_s8): Remove.
8813 (__arm_vhaddq_x_n_s16): Remove.
8814 (__arm_vhaddq_x_n_s32): Remove.
8815 (__arm_vhaddq_x_n_u8): Remove.
8816 (__arm_vhaddq_x_n_u16): Remove.
8817 (__arm_vhaddq_x_n_u32): Remove.
8818 (__arm_vhaddq_x_s8): Remove.
8819 (__arm_vhaddq_x_s16): Remove.
8820 (__arm_vhaddq_x_s32): Remove.
8821 (__arm_vhaddq_x_u8): Remove.
8822 (__arm_vhaddq_x_u16): Remove.
8823 (__arm_vhaddq_x_u32): Remove.
8824 (__arm_vhsubq_x_n_s8): Remove.
8825 (__arm_vhsubq_x_n_s16): Remove.
8826 (__arm_vhsubq_x_n_s32): Remove.
8827 (__arm_vhsubq_x_n_u8): Remove.
8828 (__arm_vhsubq_x_n_u16): Remove.
8829 (__arm_vhsubq_x_n_u32): Remove.
8830 (__arm_vhsubq_x_s8): Remove.
8831 (__arm_vhsubq_x_s16): Remove.
8832 (__arm_vhsubq_x_s32): Remove.
8833 (__arm_vhsubq_x_u8): Remove.
8834 (__arm_vhsubq_x_u16): Remove.
8835 (__arm_vhsubq_x_u32): Remove.
8836 (__arm_vhsubq): Remove.
8837 (__arm_vhaddq): Remove.
8838 (__arm_vhaddq_m): Remove.
8839 (__arm_vhsubq_m): Remove.
8840 (__arm_vhaddq_x): Remove.
8841 (__arm_vhsubq_x): Remove.
8845 (vmulhq_u8): Remove.
8846 (vmulhq_s8): Remove.
8847 (vmulhq_u16): Remove.
8848 (vmulhq_s16): Remove.
8849 (vmulhq_u32): Remove.
8850 (vmulhq_s32): Remove.
8851 (vmulhq_m_s8): Remove.
8852 (vmulhq_m_s32): Remove.
8853 (vmulhq_m_s16): Remove.
8854 (vmulhq_m_u8): Remove.
8855 (vmulhq_m_u32): Remove.
8856 (vmulhq_m_u16): Remove.
8857 (vmulhq_x_s8): Remove.
8858 (vmulhq_x_s16): Remove.
8859 (vmulhq_x_s32): Remove.
8860 (vmulhq_x_u8): Remove.
8861 (vmulhq_x_u16): Remove.
8862 (vmulhq_x_u32): Remove.
8863 (__arm_vmulhq_u8): Remove.
8864 (__arm_vmulhq_s8): Remove.
8865 (__arm_vmulhq_u16): Remove.
8866 (__arm_vmulhq_s16): Remove.
8867 (__arm_vmulhq_u32): Remove.
8868 (__arm_vmulhq_s32): Remove.
8869 (__arm_vmulhq_m_s8): Remove.
8870 (__arm_vmulhq_m_s32): Remove.
8871 (__arm_vmulhq_m_s16): Remove.
8872 (__arm_vmulhq_m_u8): Remove.
8873 (__arm_vmulhq_m_u32): Remove.
8874 (__arm_vmulhq_m_u16): Remove.
8875 (__arm_vmulhq_x_s8): Remove.
8876 (__arm_vmulhq_x_s16): Remove.
8877 (__arm_vmulhq_x_s32): Remove.
8878 (__arm_vmulhq_x_u8): Remove.
8879 (__arm_vmulhq_x_u16): Remove.
8880 (__arm_vmulhq_x_u32): Remove.
8881 (__arm_vmulhq): Remove.
8882 (__arm_vmulhq_m): Remove.
8883 (__arm_vmulhq_x): Remove.
8888 (vqsubq_u8): Remove.
8889 (vqsubq_n_u8): Remove.
8890 (vqaddq_u8): Remove.
8891 (vqaddq_n_u8): Remove.
8892 (vqsubq_s8): Remove.
8893 (vqsubq_n_s8): Remove.
8894 (vqaddq_s8): Remove.
8895 (vqaddq_n_s8): Remove.
8896 (vqsubq_u16): Remove.
8897 (vqsubq_n_u16): Remove.
8898 (vqaddq_u16): Remove.
8899 (vqaddq_n_u16): Remove.
8900 (vqsubq_s16): Remove.
8901 (vqsubq_n_s16): Remove.
8902 (vqaddq_s16): Remove.
8903 (vqaddq_n_s16): Remove.
8904 (vqsubq_u32): Remove.
8905 (vqsubq_n_u32): Remove.
8906 (vqaddq_u32): Remove.
8907 (vqaddq_n_u32): Remove.
8908 (vqsubq_s32): Remove.
8909 (vqsubq_n_s32): Remove.
8910 (vqaddq_s32): Remove.
8911 (vqaddq_n_s32): Remove.
8912 (vqaddq_m_n_s8): Remove.
8913 (vqaddq_m_n_s32): Remove.
8914 (vqaddq_m_n_s16): Remove.
8915 (vqaddq_m_n_u8): Remove.
8916 (vqaddq_m_n_u32): Remove.
8917 (vqaddq_m_n_u16): Remove.
8918 (vqaddq_m_s8): Remove.
8919 (vqaddq_m_s32): Remove.
8920 (vqaddq_m_s16): Remove.
8921 (vqaddq_m_u8): Remove.
8922 (vqaddq_m_u32): Remove.
8923 (vqaddq_m_u16): Remove.
8924 (vqsubq_m_n_s8): Remove.
8925 (vqsubq_m_n_s32): Remove.
8926 (vqsubq_m_n_s16): Remove.
8927 (vqsubq_m_n_u8): Remove.
8928 (vqsubq_m_n_u32): Remove.
8929 (vqsubq_m_n_u16): Remove.
8930 (vqsubq_m_s8): Remove.
8931 (vqsubq_m_s32): Remove.
8932 (vqsubq_m_s16): Remove.
8933 (vqsubq_m_u8): Remove.
8934 (vqsubq_m_u32): Remove.
8935 (vqsubq_m_u16): Remove.
8936 (__arm_vqsubq_u8): Remove.
8937 (__arm_vqsubq_n_u8): Remove.
8938 (__arm_vqaddq_u8): Remove.
8939 (__arm_vqaddq_n_u8): Remove.
8940 (__arm_vqsubq_s8): Remove.
8941 (__arm_vqsubq_n_s8): Remove.
8942 (__arm_vqaddq_s8): Remove.
8943 (__arm_vqaddq_n_s8): Remove.
8944 (__arm_vqsubq_u16): Remove.
8945 (__arm_vqsubq_n_u16): Remove.
8946 (__arm_vqaddq_u16): Remove.
8947 (__arm_vqaddq_n_u16): Remove.
8948 (__arm_vqsubq_s16): Remove.
8949 (__arm_vqsubq_n_s16): Remove.
8950 (__arm_vqaddq_s16): Remove.
8951 (__arm_vqaddq_n_s16): Remove.
8952 (__arm_vqsubq_u32): Remove.
8953 (__arm_vqsubq_n_u32): Remove.
8954 (__arm_vqaddq_u32): Remove.
8955 (__arm_vqaddq_n_u32): Remove.
8956 (__arm_vqsubq_s32): Remove.
8957 (__arm_vqsubq_n_s32): Remove.
8958 (__arm_vqaddq_s32): Remove.
8959 (__arm_vqaddq_n_s32): Remove.
8960 (__arm_vqaddq_m_n_s8): Remove.
8961 (__arm_vqaddq_m_n_s32): Remove.
8962 (__arm_vqaddq_m_n_s16): Remove.
8963 (__arm_vqaddq_m_n_u8): Remove.
8964 (__arm_vqaddq_m_n_u32): Remove.
8965 (__arm_vqaddq_m_n_u16): Remove.
8966 (__arm_vqaddq_m_s8): Remove.
8967 (__arm_vqaddq_m_s32): Remove.
8968 (__arm_vqaddq_m_s16): Remove.
8969 (__arm_vqaddq_m_u8): Remove.
8970 (__arm_vqaddq_m_u32): Remove.
8971 (__arm_vqaddq_m_u16): Remove.
8972 (__arm_vqsubq_m_n_s8): Remove.
8973 (__arm_vqsubq_m_n_s32): Remove.
8974 (__arm_vqsubq_m_n_s16): Remove.
8975 (__arm_vqsubq_m_n_u8): Remove.
8976 (__arm_vqsubq_m_n_u32): Remove.
8977 (__arm_vqsubq_m_n_u16): Remove.
8978 (__arm_vqsubq_m_s8): Remove.
8979 (__arm_vqsubq_m_s32): Remove.
8980 (__arm_vqsubq_m_s16): Remove.
8981 (__arm_vqsubq_m_u8): Remove.
8982 (__arm_vqsubq_m_u32): Remove.
8983 (__arm_vqsubq_m_u16): Remove.
8984 (__arm_vqsubq): Remove.
8985 (__arm_vqaddq): Remove.
8986 (__arm_vqaddq_m): Remove.
8987 (__arm_vqsubq_m): Remove.
8989 (vqdmulhq_m): Remove.
8990 (vqdmulhq_s8): Remove.
8991 (vqdmulhq_n_s8): Remove.
8992 (vqdmulhq_s16): Remove.
8993 (vqdmulhq_n_s16): Remove.
8994 (vqdmulhq_s32): Remove.
8995 (vqdmulhq_n_s32): Remove.
8996 (vqdmulhq_m_n_s8): Remove.
8997 (vqdmulhq_m_n_s32): Remove.
8998 (vqdmulhq_m_n_s16): Remove.
8999 (vqdmulhq_m_s8): Remove.
9000 (vqdmulhq_m_s32): Remove.
9001 (vqdmulhq_m_s16): Remove.
9002 (__arm_vqdmulhq_s8): Remove.
9003 (__arm_vqdmulhq_n_s8): Remove.
9004 (__arm_vqdmulhq_s16): Remove.
9005 (__arm_vqdmulhq_n_s16): Remove.
9006 (__arm_vqdmulhq_s32): Remove.
9007 (__arm_vqdmulhq_n_s32): Remove.
9008 (__arm_vqdmulhq_m_n_s8): Remove.
9009 (__arm_vqdmulhq_m_n_s32): Remove.
9010 (__arm_vqdmulhq_m_n_s16): Remove.
9011 (__arm_vqdmulhq_m_s8): Remove.
9012 (__arm_vqdmulhq_m_s32): Remove.
9013 (__arm_vqdmulhq_m_s16): Remove.
9014 (__arm_vqdmulhq): Remove.
9015 (__arm_vqdmulhq_m): Remove.
9017 (vrhaddq_m): Remove.
9018 (vrhaddq_x): Remove.
9019 (vrhaddq_u8): Remove.
9020 (vrhaddq_s8): Remove.
9021 (vrhaddq_u16): Remove.
9022 (vrhaddq_s16): Remove.
9023 (vrhaddq_u32): Remove.
9024 (vrhaddq_s32): Remove.
9025 (vrhaddq_m_s8): Remove.
9026 (vrhaddq_m_s32): Remove.
9027 (vrhaddq_m_s16): Remove.
9028 (vrhaddq_m_u8): Remove.
9029 (vrhaddq_m_u32): Remove.
9030 (vrhaddq_m_u16): Remove.
9031 (vrhaddq_x_s8): Remove.
9032 (vrhaddq_x_s16): Remove.
9033 (vrhaddq_x_s32): Remove.
9034 (vrhaddq_x_u8): Remove.
9035 (vrhaddq_x_u16): Remove.
9036 (vrhaddq_x_u32): Remove.
9037 (__arm_vrhaddq_u8): Remove.
9038 (__arm_vrhaddq_s8): Remove.
9039 (__arm_vrhaddq_u16): Remove.
9040 (__arm_vrhaddq_s16): Remove.
9041 (__arm_vrhaddq_u32): Remove.
9042 (__arm_vrhaddq_s32): Remove.
9043 (__arm_vrhaddq_m_s8): Remove.
9044 (__arm_vrhaddq_m_s32): Remove.
9045 (__arm_vrhaddq_m_s16): Remove.
9046 (__arm_vrhaddq_m_u8): Remove.
9047 (__arm_vrhaddq_m_u32): Remove.
9048 (__arm_vrhaddq_m_u16): Remove.
9049 (__arm_vrhaddq_x_s8): Remove.
9050 (__arm_vrhaddq_x_s16): Remove.
9051 (__arm_vrhaddq_x_s32): Remove.
9052 (__arm_vrhaddq_x_u8): Remove.
9053 (__arm_vrhaddq_x_u16): Remove.
9054 (__arm_vrhaddq_x_u32): Remove.
9055 (__arm_vrhaddq): Remove.
9056 (__arm_vrhaddq_m): Remove.
9057 (__arm_vrhaddq_x): Remove.
9059 (vrmulhq_m): Remove.
9060 (vrmulhq_x): Remove.
9061 (vrmulhq_u8): Remove.
9062 (vrmulhq_s8): Remove.
9063 (vrmulhq_u16): Remove.
9064 (vrmulhq_s16): Remove.
9065 (vrmulhq_u32): Remove.
9066 (vrmulhq_s32): Remove.
9067 (vrmulhq_m_s8): Remove.
9068 (vrmulhq_m_s32): Remove.
9069 (vrmulhq_m_s16): Remove.
9070 (vrmulhq_m_u8): Remove.
9071 (vrmulhq_m_u32): Remove.
9072 (vrmulhq_m_u16): Remove.
9073 (vrmulhq_x_s8): Remove.
9074 (vrmulhq_x_s16): Remove.
9075 (vrmulhq_x_s32): Remove.
9076 (vrmulhq_x_u8): Remove.
9077 (vrmulhq_x_u16): Remove.
9078 (vrmulhq_x_u32): Remove.
9079 (__arm_vrmulhq_u8): Remove.
9080 (__arm_vrmulhq_s8): Remove.
9081 (__arm_vrmulhq_u16): Remove.
9082 (__arm_vrmulhq_s16): Remove.
9083 (__arm_vrmulhq_u32): Remove.
9084 (__arm_vrmulhq_s32): Remove.
9085 (__arm_vrmulhq_m_s8): Remove.
9086 (__arm_vrmulhq_m_s32): Remove.
9087 (__arm_vrmulhq_m_s16): Remove.
9088 (__arm_vrmulhq_m_u8): Remove.
9089 (__arm_vrmulhq_m_u32): Remove.
9090 (__arm_vrmulhq_m_u16): Remove.
9091 (__arm_vrmulhq_x_s8): Remove.
9092 (__arm_vrmulhq_x_s16): Remove.
9093 (__arm_vrmulhq_x_s32): Remove.
9094 (__arm_vrmulhq_x_u8): Remove.
9095 (__arm_vrmulhq_x_u16): Remove.
9096 (__arm_vrmulhq_x_u32): Remove.
9097 (__arm_vrmulhq): Remove.
9098 (__arm_vrmulhq_m): Remove.
9099 (__arm_vrmulhq_x): Remove.
9101 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9103 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
9104 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
9105 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
9106 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
9107 * config/arm/mve.md (mve_vabdq_<supf><mode>)
9108 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
9109 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
9110 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
9111 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
9112 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
9113 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
9115 (@mve_<mve_insn>q_<supf><mode>): ... this.
9116 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
9117 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
9118 gen_mve_vhaddq / gen_mve_vrhaddq.
9120 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9122 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
9123 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
9124 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
9125 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
9126 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
9127 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
9128 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
9129 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
9130 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
9131 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
9132 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
9133 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
9134 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9136 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9138 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
9139 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
9141 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
9142 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
9143 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
9144 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
9145 (mve_vqsubq_n_<supf><mode>): Merge into ...
9146 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9148 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9150 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
9151 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
9152 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
9153 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
9154 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
9155 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
9156 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
9157 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
9158 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
9159 (mve_vshlq_m_<supf><mode>): Merged into
9160 @mve_<mve_insn>q_m_<supf><mode>.
9161 (mve_vabdq_m_<supf><mode>): Likewise.
9162 (mve_vhaddq_m_<supf><mode>): Likewise.
9163 (mve_vhsubq_m_<supf><mode>): Likewise.
9164 (mve_vmaxq_m_<supf><mode>): Likewise.
9165 (mve_vminq_m_<supf><mode>): Likewise.
9166 (mve_vmulhq_m_<supf><mode>): Likewise.
9167 (mve_vqaddq_m_<supf><mode>): Likewise.
9168 (mve_vqrshlq_m_<supf><mode>): Likewise.
9169 (mve_vqshlq_m_<supf><mode>): Likewise.
9170 (mve_vqsubq_m_<supf><mode>): Likewise.
9171 (mve_vrhaddq_m_<supf><mode>): Likewise.
9172 (mve_vrmulhq_m_<supf><mode>): Likewise.
9173 (mve_vrshlq_m_<supf><mode>): Likewise.
9174 (mve_vqdmladhq_m_s<mode>): Likewise.
9175 (mve_vqdmladhxq_m_s<mode>): Likewise.
9176 (mve_vqdmlsdhq_m_s<mode>): Likewise.
9177 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
9178 (mve_vqdmulhq_m_s<mode>): Likewise.
9179 (mve_vqrdmladhq_m_s<mode>): Likewise.
9180 (mve_vqrdmladhxq_m_s<mode>): Likewise.
9181 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
9182 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
9183 (mve_vqrdmulhq_m_s<mode>): Likewise.
9185 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9187 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
9188 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
9189 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
9190 * config/arm/arm_mve.h (vcreateq_f16): Remove.
9191 (vcreateq_f32): Remove.
9192 (vcreateq_u8): Remove.
9193 (vcreateq_u16): Remove.
9194 (vcreateq_u32): Remove.
9195 (vcreateq_u64): Remove.
9196 (vcreateq_s8): Remove.
9197 (vcreateq_s16): Remove.
9198 (vcreateq_s32): Remove.
9199 (vcreateq_s64): Remove.
9200 (__arm_vcreateq_u8): Remove.
9201 (__arm_vcreateq_u16): Remove.
9202 (__arm_vcreateq_u32): Remove.
9203 (__arm_vcreateq_u64): Remove.
9204 (__arm_vcreateq_s8): Remove.
9205 (__arm_vcreateq_s16): Remove.
9206 (__arm_vcreateq_s32): Remove.
9207 (__arm_vcreateq_s64): Remove.
9208 (__arm_vcreateq_f16): Remove.
9209 (__arm_vcreateq_f32): Remove.
9211 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9213 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
9214 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
9215 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
9216 (@mve_<mve_insn>q_f<mode>): ... this.
9217 (mve_vcreateq_<supf><mode>): Rename into ...
9218 (@mve_<mve_insn>q_<supf><mode>): ... this.
9220 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9222 * config/arm/arm-mve-builtins-shapes.cc (create): New.
9223 * config/arm/arm-mve-builtins-shapes.h: (create): New.
9225 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9227 * config/arm/arm-mve-builtins-functions.h (class
9228 unspec_mve_function_exact_insn): New.
9230 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9232 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
9234 * config/arm/arm-mve-builtins-base.def (vorrq): New.
9235 * config/arm/arm-mve-builtins-base.h (vorrq): New.
9236 * config/arm/arm-mve-builtins.cc
9237 (function_instance::has_inactive_argument): Handle vorrq.
9238 * config/arm/arm_mve.h (vorrq): Remove.
9239 (vorrq_m_n): Remove.
9244 (vorrq_u16): Remove.
9245 (vorrq_s16): Remove.
9246 (vorrq_u32): Remove.
9247 (vorrq_s32): Remove.
9248 (vorrq_n_u16): Remove.
9249 (vorrq_f16): Remove.
9250 (vorrq_n_s16): Remove.
9251 (vorrq_n_u32): Remove.
9252 (vorrq_f32): Remove.
9253 (vorrq_n_s32): Remove.
9254 (vorrq_m_n_s16): Remove.
9255 (vorrq_m_n_u16): Remove.
9256 (vorrq_m_n_s32): Remove.
9257 (vorrq_m_n_u32): Remove.
9258 (vorrq_m_s8): Remove.
9259 (vorrq_m_s32): Remove.
9260 (vorrq_m_s16): Remove.
9261 (vorrq_m_u8): Remove.
9262 (vorrq_m_u32): Remove.
9263 (vorrq_m_u16): Remove.
9264 (vorrq_m_f32): Remove.
9265 (vorrq_m_f16): Remove.
9266 (vorrq_x_s8): Remove.
9267 (vorrq_x_s16): Remove.
9268 (vorrq_x_s32): Remove.
9269 (vorrq_x_u8): Remove.
9270 (vorrq_x_u16): Remove.
9271 (vorrq_x_u32): Remove.
9272 (vorrq_x_f16): Remove.
9273 (vorrq_x_f32): Remove.
9274 (__arm_vorrq_u8): Remove.
9275 (__arm_vorrq_s8): Remove.
9276 (__arm_vorrq_u16): Remove.
9277 (__arm_vorrq_s16): Remove.
9278 (__arm_vorrq_u32): Remove.
9279 (__arm_vorrq_s32): Remove.
9280 (__arm_vorrq_n_u16): Remove.
9281 (__arm_vorrq_n_s16): Remove.
9282 (__arm_vorrq_n_u32): Remove.
9283 (__arm_vorrq_n_s32): Remove.
9284 (__arm_vorrq_m_n_s16): Remove.
9285 (__arm_vorrq_m_n_u16): Remove.
9286 (__arm_vorrq_m_n_s32): Remove.
9287 (__arm_vorrq_m_n_u32): Remove.
9288 (__arm_vorrq_m_s8): Remove.
9289 (__arm_vorrq_m_s32): Remove.
9290 (__arm_vorrq_m_s16): Remove.
9291 (__arm_vorrq_m_u8): Remove.
9292 (__arm_vorrq_m_u32): Remove.
9293 (__arm_vorrq_m_u16): Remove.
9294 (__arm_vorrq_x_s8): Remove.
9295 (__arm_vorrq_x_s16): Remove.
9296 (__arm_vorrq_x_s32): Remove.
9297 (__arm_vorrq_x_u8): Remove.
9298 (__arm_vorrq_x_u16): Remove.
9299 (__arm_vorrq_x_u32): Remove.
9300 (__arm_vorrq_f16): Remove.
9301 (__arm_vorrq_f32): Remove.
9302 (__arm_vorrq_m_f32): Remove.
9303 (__arm_vorrq_m_f16): Remove.
9304 (__arm_vorrq_x_f16): Remove.
9305 (__arm_vorrq_x_f32): Remove.
9306 (__arm_vorrq): Remove.
9307 (__arm_vorrq_m_n): Remove.
9308 (__arm_vorrq_m): Remove.
9309 (__arm_vorrq_x): Remove.
9311 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9313 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
9314 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
9315 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
9316 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
9318 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9320 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
9322 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
9323 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
9324 * config/arm/arm_mve.h (vandq): Remove.
9329 (vandq_u16): Remove.
9330 (vandq_s16): Remove.
9331 (vandq_u32): Remove.
9332 (vandq_s32): Remove.
9333 (vandq_f16): Remove.
9334 (vandq_f32): Remove.
9335 (vandq_m_s8): Remove.
9336 (vandq_m_s32): Remove.
9337 (vandq_m_s16): Remove.
9338 (vandq_m_u8): Remove.
9339 (vandq_m_u32): Remove.
9340 (vandq_m_u16): Remove.
9341 (vandq_m_f32): Remove.
9342 (vandq_m_f16): Remove.
9343 (vandq_x_s8): Remove.
9344 (vandq_x_s16): Remove.
9345 (vandq_x_s32): Remove.
9346 (vandq_x_u8): Remove.
9347 (vandq_x_u16): Remove.
9348 (vandq_x_u32): Remove.
9349 (vandq_x_f16): Remove.
9350 (vandq_x_f32): Remove.
9351 (__arm_vandq_u8): Remove.
9352 (__arm_vandq_s8): Remove.
9353 (__arm_vandq_u16): Remove.
9354 (__arm_vandq_s16): Remove.
9355 (__arm_vandq_u32): Remove.
9356 (__arm_vandq_s32): Remove.
9357 (__arm_vandq_m_s8): Remove.
9358 (__arm_vandq_m_s32): Remove.
9359 (__arm_vandq_m_s16): Remove.
9360 (__arm_vandq_m_u8): Remove.
9361 (__arm_vandq_m_u32): Remove.
9362 (__arm_vandq_m_u16): Remove.
9363 (__arm_vandq_x_s8): Remove.
9364 (__arm_vandq_x_s16): Remove.
9365 (__arm_vandq_x_s32): Remove.
9366 (__arm_vandq_x_u8): Remove.
9367 (__arm_vandq_x_u16): Remove.
9368 (__arm_vandq_x_u32): Remove.
9369 (__arm_vandq_f16): Remove.
9370 (__arm_vandq_f32): Remove.
9371 (__arm_vandq_m_f32): Remove.
9372 (__arm_vandq_m_f16): Remove.
9373 (__arm_vandq_x_f16): Remove.
9374 (__arm_vandq_x_f32): Remove.
9375 (__arm_vandq): Remove.
9376 (__arm_vandq_m): Remove.
9377 (__arm_vandq_x): Remove.
9382 (veorq_u16): Remove.
9383 (veorq_s16): Remove.
9384 (veorq_u32): Remove.
9385 (veorq_s32): Remove.
9386 (veorq_f16): Remove.
9387 (veorq_f32): Remove.
9388 (veorq_m_s8): Remove.
9389 (veorq_m_s32): Remove.
9390 (veorq_m_s16): Remove.
9391 (veorq_m_u8): Remove.
9392 (veorq_m_u32): Remove.
9393 (veorq_m_u16): Remove.
9394 (veorq_m_f32): Remove.
9395 (veorq_m_f16): Remove.
9396 (veorq_x_s8): Remove.
9397 (veorq_x_s16): Remove.
9398 (veorq_x_s32): Remove.
9399 (veorq_x_u8): Remove.
9400 (veorq_x_u16): Remove.
9401 (veorq_x_u32): Remove.
9402 (veorq_x_f16): Remove.
9403 (veorq_x_f32): Remove.
9404 (__arm_veorq_u8): Remove.
9405 (__arm_veorq_s8): Remove.
9406 (__arm_veorq_u16): Remove.
9407 (__arm_veorq_s16): Remove.
9408 (__arm_veorq_u32): Remove.
9409 (__arm_veorq_s32): Remove.
9410 (__arm_veorq_m_s8): Remove.
9411 (__arm_veorq_m_s32): Remove.
9412 (__arm_veorq_m_s16): Remove.
9413 (__arm_veorq_m_u8): Remove.
9414 (__arm_veorq_m_u32): Remove.
9415 (__arm_veorq_m_u16): Remove.
9416 (__arm_veorq_x_s8): Remove.
9417 (__arm_veorq_x_s16): Remove.
9418 (__arm_veorq_x_s32): Remove.
9419 (__arm_veorq_x_u8): Remove.
9420 (__arm_veorq_x_u16): Remove.
9421 (__arm_veorq_x_u32): Remove.
9422 (__arm_veorq_f16): Remove.
9423 (__arm_veorq_f32): Remove.
9424 (__arm_veorq_m_f32): Remove.
9425 (__arm_veorq_m_f16): Remove.
9426 (__arm_veorq_x_f16): Remove.
9427 (__arm_veorq_x_f32): Remove.
9428 (__arm_veorq): Remove.
9429 (__arm_veorq_m): Remove.
9430 (__arm_veorq_x): Remove.
9432 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9434 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
9435 (MVE_FP_M_BINARY_LOGIC): New.
9436 (MVE_INT_M_N_BINARY_LOGIC): New.
9437 (MVE_INT_N_BINARY_LOGIC): New.
9438 (mve_insn): Add vand, veor, vorr, vbic.
9439 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
9440 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
9441 (mve_vbicq_m_<supf><mode>): Merge into ...
9442 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
9443 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
9444 (mve_vbicq_m_f<mode>): Merge into ...
9445 (@mve_<mve_insn>q_m_f<mode>): ... this.
9446 (mve_vorrq_n_<supf><mode>)
9447 (mve_vbicq_n_<supf><mode>): Merge into ...
9448 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9449 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
9451 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9453 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9455 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
9456 * config/arm/arm-mve-builtins-shapes.h (binary): New.
9458 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9460 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
9462 (vaddq, vmulq, vsubq): New.
9463 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
9464 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
9465 * config/arm/arm_mve.h (vaddq): Remove.
9468 (vaddq_n_u8): Remove.
9469 (vaddq_n_s8): Remove.
9470 (vaddq_n_u16): Remove.
9471 (vaddq_n_s16): Remove.
9472 (vaddq_n_u32): Remove.
9473 (vaddq_n_s32): Remove.
9474 (vaddq_n_f16): Remove.
9475 (vaddq_n_f32): Remove.
9476 (vaddq_m_n_s8): Remove.
9477 (vaddq_m_n_s32): Remove.
9478 (vaddq_m_n_s16): Remove.
9479 (vaddq_m_n_u8): Remove.
9480 (vaddq_m_n_u32): Remove.
9481 (vaddq_m_n_u16): Remove.
9482 (vaddq_m_s8): Remove.
9483 (vaddq_m_s32): Remove.
9484 (vaddq_m_s16): Remove.
9485 (vaddq_m_u8): Remove.
9486 (vaddq_m_u32): Remove.
9487 (vaddq_m_u16): Remove.
9488 (vaddq_m_f32): Remove.
9489 (vaddq_m_f16): Remove.
9490 (vaddq_m_n_f32): Remove.
9491 (vaddq_m_n_f16): Remove.
9493 (vaddq_s16): Remove.
9494 (vaddq_s32): Remove.
9496 (vaddq_u16): Remove.
9497 (vaddq_u32): Remove.
9498 (vaddq_f16): Remove.
9499 (vaddq_f32): Remove.
9500 (vaddq_x_s8): Remove.
9501 (vaddq_x_s16): Remove.
9502 (vaddq_x_s32): Remove.
9503 (vaddq_x_n_s8): Remove.
9504 (vaddq_x_n_s16): Remove.
9505 (vaddq_x_n_s32): Remove.
9506 (vaddq_x_u8): Remove.
9507 (vaddq_x_u16): Remove.
9508 (vaddq_x_u32): Remove.
9509 (vaddq_x_n_u8): Remove.
9510 (vaddq_x_n_u16): Remove.
9511 (vaddq_x_n_u32): Remove.
9512 (vaddq_x_f16): Remove.
9513 (vaddq_x_f32): Remove.
9514 (vaddq_x_n_f16): Remove.
9515 (vaddq_x_n_f32): Remove.
9516 (__arm_vaddq_n_u8): Remove.
9517 (__arm_vaddq_n_s8): Remove.
9518 (__arm_vaddq_n_u16): Remove.
9519 (__arm_vaddq_n_s16): Remove.
9520 (__arm_vaddq_n_u32): Remove.
9521 (__arm_vaddq_n_s32): Remove.
9522 (__arm_vaddq_m_n_s8): Remove.
9523 (__arm_vaddq_m_n_s32): Remove.
9524 (__arm_vaddq_m_n_s16): Remove.
9525 (__arm_vaddq_m_n_u8): Remove.
9526 (__arm_vaddq_m_n_u32): Remove.
9527 (__arm_vaddq_m_n_u16): Remove.
9528 (__arm_vaddq_m_s8): Remove.
9529 (__arm_vaddq_m_s32): Remove.
9530 (__arm_vaddq_m_s16): Remove.
9531 (__arm_vaddq_m_u8): Remove.
9532 (__arm_vaddq_m_u32): Remove.
9533 (__arm_vaddq_m_u16): Remove.
9534 (__arm_vaddq_s8): Remove.
9535 (__arm_vaddq_s16): Remove.
9536 (__arm_vaddq_s32): Remove.
9537 (__arm_vaddq_u8): Remove.
9538 (__arm_vaddq_u16): Remove.
9539 (__arm_vaddq_u32): Remove.
9540 (__arm_vaddq_x_s8): Remove.
9541 (__arm_vaddq_x_s16): Remove.
9542 (__arm_vaddq_x_s32): Remove.
9543 (__arm_vaddq_x_n_s8): Remove.
9544 (__arm_vaddq_x_n_s16): Remove.
9545 (__arm_vaddq_x_n_s32): Remove.
9546 (__arm_vaddq_x_u8): Remove.
9547 (__arm_vaddq_x_u16): Remove.
9548 (__arm_vaddq_x_u32): Remove.
9549 (__arm_vaddq_x_n_u8): Remove.
9550 (__arm_vaddq_x_n_u16): Remove.
9551 (__arm_vaddq_x_n_u32): Remove.
9552 (__arm_vaddq_n_f16): Remove.
9553 (__arm_vaddq_n_f32): Remove.
9554 (__arm_vaddq_m_f32): Remove.
9555 (__arm_vaddq_m_f16): Remove.
9556 (__arm_vaddq_m_n_f32): Remove.
9557 (__arm_vaddq_m_n_f16): Remove.
9558 (__arm_vaddq_f16): Remove.
9559 (__arm_vaddq_f32): Remove.
9560 (__arm_vaddq_x_f16): Remove.
9561 (__arm_vaddq_x_f32): Remove.
9562 (__arm_vaddq_x_n_f16): Remove.
9563 (__arm_vaddq_x_n_f32): Remove.
9564 (__arm_vaddq): Remove.
9565 (__arm_vaddq_m): Remove.
9566 (__arm_vaddq_x): Remove.
9571 (vmulq_n_u8): Remove.
9573 (vmulq_n_s8): Remove.
9574 (vmulq_u16): Remove.
9575 (vmulq_n_u16): Remove.
9576 (vmulq_s16): Remove.
9577 (vmulq_n_s16): Remove.
9578 (vmulq_u32): Remove.
9579 (vmulq_n_u32): Remove.
9580 (vmulq_s32): Remove.
9581 (vmulq_n_s32): Remove.
9582 (vmulq_n_f16): Remove.
9583 (vmulq_f16): Remove.
9584 (vmulq_n_f32): Remove.
9585 (vmulq_f32): Remove.
9586 (vmulq_m_n_s8): Remove.
9587 (vmulq_m_n_s32): Remove.
9588 (vmulq_m_n_s16): Remove.
9589 (vmulq_m_n_u8): Remove.
9590 (vmulq_m_n_u32): Remove.
9591 (vmulq_m_n_u16): Remove.
9592 (vmulq_m_s8): Remove.
9593 (vmulq_m_s32): Remove.
9594 (vmulq_m_s16): Remove.
9595 (vmulq_m_u8): Remove.
9596 (vmulq_m_u32): Remove.
9597 (vmulq_m_u16): Remove.
9598 (vmulq_m_f32): Remove.
9599 (vmulq_m_f16): Remove.
9600 (vmulq_m_n_f32): Remove.
9601 (vmulq_m_n_f16): Remove.
9602 (vmulq_x_s8): Remove.
9603 (vmulq_x_s16): Remove.
9604 (vmulq_x_s32): Remove.
9605 (vmulq_x_n_s8): Remove.
9606 (vmulq_x_n_s16): Remove.
9607 (vmulq_x_n_s32): Remove.
9608 (vmulq_x_u8): Remove.
9609 (vmulq_x_u16): Remove.
9610 (vmulq_x_u32): Remove.
9611 (vmulq_x_n_u8): Remove.
9612 (vmulq_x_n_u16): Remove.
9613 (vmulq_x_n_u32): Remove.
9614 (vmulq_x_f16): Remove.
9615 (vmulq_x_f32): Remove.
9616 (vmulq_x_n_f16): Remove.
9617 (vmulq_x_n_f32): Remove.
9618 (__arm_vmulq_u8): Remove.
9619 (__arm_vmulq_n_u8): Remove.
9620 (__arm_vmulq_s8): Remove.
9621 (__arm_vmulq_n_s8): Remove.
9622 (__arm_vmulq_u16): Remove.
9623 (__arm_vmulq_n_u16): Remove.
9624 (__arm_vmulq_s16): Remove.
9625 (__arm_vmulq_n_s16): Remove.
9626 (__arm_vmulq_u32): Remove.
9627 (__arm_vmulq_n_u32): Remove.
9628 (__arm_vmulq_s32): Remove.
9629 (__arm_vmulq_n_s32): Remove.
9630 (__arm_vmulq_m_n_s8): Remove.
9631 (__arm_vmulq_m_n_s32): Remove.
9632 (__arm_vmulq_m_n_s16): Remove.
9633 (__arm_vmulq_m_n_u8): Remove.
9634 (__arm_vmulq_m_n_u32): Remove.
9635 (__arm_vmulq_m_n_u16): Remove.
9636 (__arm_vmulq_m_s8): Remove.
9637 (__arm_vmulq_m_s32): Remove.
9638 (__arm_vmulq_m_s16): Remove.
9639 (__arm_vmulq_m_u8): Remove.
9640 (__arm_vmulq_m_u32): Remove.
9641 (__arm_vmulq_m_u16): Remove.
9642 (__arm_vmulq_x_s8): Remove.
9643 (__arm_vmulq_x_s16): Remove.
9644 (__arm_vmulq_x_s32): Remove.
9645 (__arm_vmulq_x_n_s8): Remove.
9646 (__arm_vmulq_x_n_s16): Remove.
9647 (__arm_vmulq_x_n_s32): Remove.
9648 (__arm_vmulq_x_u8): Remove.
9649 (__arm_vmulq_x_u16): Remove.
9650 (__arm_vmulq_x_u32): Remove.
9651 (__arm_vmulq_x_n_u8): Remove.
9652 (__arm_vmulq_x_n_u16): Remove.
9653 (__arm_vmulq_x_n_u32): Remove.
9654 (__arm_vmulq_n_f16): Remove.
9655 (__arm_vmulq_f16): Remove.
9656 (__arm_vmulq_n_f32): Remove.
9657 (__arm_vmulq_f32): Remove.
9658 (__arm_vmulq_m_f32): Remove.
9659 (__arm_vmulq_m_f16): Remove.
9660 (__arm_vmulq_m_n_f32): Remove.
9661 (__arm_vmulq_m_n_f16): Remove.
9662 (__arm_vmulq_x_f16): Remove.
9663 (__arm_vmulq_x_f32): Remove.
9664 (__arm_vmulq_x_n_f16): Remove.
9665 (__arm_vmulq_x_n_f32): Remove.
9666 (__arm_vmulq): Remove.
9667 (__arm_vmulq_m): Remove.
9668 (__arm_vmulq_x): Remove.
9672 (vsubq_n_f16): Remove.
9673 (vsubq_n_f32): Remove.
9675 (vsubq_n_u8): Remove.
9677 (vsubq_n_s8): Remove.
9678 (vsubq_u16): Remove.
9679 (vsubq_n_u16): Remove.
9680 (vsubq_s16): Remove.
9681 (vsubq_n_s16): Remove.
9682 (vsubq_u32): Remove.
9683 (vsubq_n_u32): Remove.
9684 (vsubq_s32): Remove.
9685 (vsubq_n_s32): Remove.
9686 (vsubq_f16): Remove.
9687 (vsubq_f32): Remove.
9688 (vsubq_m_s8): Remove.
9689 (vsubq_m_u8): Remove.
9690 (vsubq_m_s16): Remove.
9691 (vsubq_m_u16): Remove.
9692 (vsubq_m_s32): Remove.
9693 (vsubq_m_u32): Remove.
9694 (vsubq_m_n_s8): Remove.
9695 (vsubq_m_n_s32): Remove.
9696 (vsubq_m_n_s16): Remove.
9697 (vsubq_m_n_u8): Remove.
9698 (vsubq_m_n_u32): Remove.
9699 (vsubq_m_n_u16): Remove.
9700 (vsubq_m_f32): Remove.
9701 (vsubq_m_f16): Remove.
9702 (vsubq_m_n_f32): Remove.
9703 (vsubq_m_n_f16): Remove.
9704 (vsubq_x_s8): Remove.
9705 (vsubq_x_s16): Remove.
9706 (vsubq_x_s32): Remove.
9707 (vsubq_x_n_s8): Remove.
9708 (vsubq_x_n_s16): Remove.
9709 (vsubq_x_n_s32): Remove.
9710 (vsubq_x_u8): Remove.
9711 (vsubq_x_u16): Remove.
9712 (vsubq_x_u32): Remove.
9713 (vsubq_x_n_u8): Remove.
9714 (vsubq_x_n_u16): Remove.
9715 (vsubq_x_n_u32): Remove.
9716 (vsubq_x_f16): Remove.
9717 (vsubq_x_f32): Remove.
9718 (vsubq_x_n_f16): Remove.
9719 (vsubq_x_n_f32): Remove.
9720 (__arm_vsubq_u8): Remove.
9721 (__arm_vsubq_n_u8): Remove.
9722 (__arm_vsubq_s8): Remove.
9723 (__arm_vsubq_n_s8): Remove.
9724 (__arm_vsubq_u16): Remove.
9725 (__arm_vsubq_n_u16): Remove.
9726 (__arm_vsubq_s16): Remove.
9727 (__arm_vsubq_n_s16): Remove.
9728 (__arm_vsubq_u32): Remove.
9729 (__arm_vsubq_n_u32): Remove.
9730 (__arm_vsubq_s32): Remove.
9731 (__arm_vsubq_n_s32): Remove.
9732 (__arm_vsubq_m_s8): Remove.
9733 (__arm_vsubq_m_u8): Remove.
9734 (__arm_vsubq_m_s16): Remove.
9735 (__arm_vsubq_m_u16): Remove.
9736 (__arm_vsubq_m_s32): Remove.
9737 (__arm_vsubq_m_u32): Remove.
9738 (__arm_vsubq_m_n_s8): Remove.
9739 (__arm_vsubq_m_n_s32): Remove.
9740 (__arm_vsubq_m_n_s16): Remove.
9741 (__arm_vsubq_m_n_u8): Remove.
9742 (__arm_vsubq_m_n_u32): Remove.
9743 (__arm_vsubq_m_n_u16): Remove.
9744 (__arm_vsubq_x_s8): Remove.
9745 (__arm_vsubq_x_s16): Remove.
9746 (__arm_vsubq_x_s32): Remove.
9747 (__arm_vsubq_x_n_s8): Remove.
9748 (__arm_vsubq_x_n_s16): Remove.
9749 (__arm_vsubq_x_n_s32): Remove.
9750 (__arm_vsubq_x_u8): Remove.
9751 (__arm_vsubq_x_u16): Remove.
9752 (__arm_vsubq_x_u32): Remove.
9753 (__arm_vsubq_x_n_u8): Remove.
9754 (__arm_vsubq_x_n_u16): Remove.
9755 (__arm_vsubq_x_n_u32): Remove.
9756 (__arm_vsubq_n_f16): Remove.
9757 (__arm_vsubq_n_f32): Remove.
9758 (__arm_vsubq_f16): Remove.
9759 (__arm_vsubq_f32): Remove.
9760 (__arm_vsubq_m_f32): Remove.
9761 (__arm_vsubq_m_f16): Remove.
9762 (__arm_vsubq_m_n_f32): Remove.
9763 (__arm_vsubq_m_n_f16): Remove.
9764 (__arm_vsubq_x_f16): Remove.
9765 (__arm_vsubq_x_f32): Remove.
9766 (__arm_vsubq_x_n_f16): Remove.
9767 (__arm_vsubq_x_n_f32): Remove.
9768 (__arm_vsubq): Remove.
9769 (__arm_vsubq_m): Remove.
9770 (__arm_vsubq_x): Remove.
9771 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
9773 (vmulq_u, vmulq_s, vmulq_f): Remove.
9774 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
9775 (mve_vmulq_<supf><mode>): Remove.
9777 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9779 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
9780 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
9781 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
9784 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
9786 (@mve_<mve_insn>q_n_f<mode>): ... this.
9787 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
9788 (mve_vsubq_n_<supf><mode>): Factorize into ...
9789 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9790 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
9792 (mve_<mve_addsubmul>q<mode>): ... this.
9793 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
9795 (mve_<mve_addsubmul>q_f<mode>): ... this.
9796 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
9797 (mve_vsubq_m_<supf><mode>): Factorize into ...
9798 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
9799 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
9800 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
9801 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9802 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
9804 (@mve_<mve_insn>q_m_f<mode>): ... this.
9805 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
9806 (mve_vsubq_m_n_f<mode>): Factorize into ...
9807 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
9809 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9811 * config/arm/arm-mve-builtins-functions.h (class
9812 unspec_based_mve_function_base): New.
9813 (class unspec_based_mve_function_exact_insn): New.
9815 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
9817 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
9818 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
9820 2023-05-03 Murray Steele <murray.steele@arm.com>
9821 Christophe Lyon <christophe.lyon@arm.com>
9823 * config/arm/arm-mve-builtins-base.cc (class
9824 vuninitializedq_impl): New.
9825 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
9826 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
9828 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
9829 * config/arm/arm-mve-builtins-shapes.h (inherent): New
9831 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
9832 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
9833 (__arm_vuninitializedq_u8): Remove.
9834 (__arm_vuninitializedq_u16): Remove.
9835 (__arm_vuninitializedq_u32): Remove.
9836 (__arm_vuninitializedq_u64): Remove.
9837 (__arm_vuninitializedq_s8): Remove.
9838 (__arm_vuninitializedq_s16): Remove.
9839 (__arm_vuninitializedq_s32): Remove.
9840 (__arm_vuninitializedq_s64): Remove.
9841 (__arm_vuninitializedq_f16): Remove.
9842 (__arm_vuninitializedq_f32): Remove.
9844 2023-05-03 Murray Steele <murray.steele@arm.com>
9845 Christophe Lyon <christophe.lyon@arm.com>
9847 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
9848 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
9849 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
9850 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
9851 (parse_type): Likewise.
9852 (parse_signature): Likewise.
9853 (build_one): Likewise.
9854 (build_all): Likewise.
9855 (overloaded_base): New struct.
9856 (unary_convert_def): Likewise.
9857 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
9858 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
9860 (TYPES_reinterpret_unsigned1): Likewise.
9861 (TYPES_reinterpret_integer): Likewise.
9862 (TYPES_reinterpret_integer1): Likewise.
9863 (TYPES_reinterpret_float1): Likewise.
9864 (TYPES_reinterpret_float): Likewise.
9865 (reinterpret_integer): New.
9866 (reinterpret_float): New.
9867 (handle_arm_mve_h): Register builtins.
9868 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
9869 (vreinterpretq_s32): Likewise.
9870 (vreinterpretq_s64): Likewise.
9871 (vreinterpretq_s8): Likewise.
9872 (vreinterpretq_u16): Likewise.
9873 (vreinterpretq_u32): Likewise.
9874 (vreinterpretq_u64): Likewise.
9875 (vreinterpretq_u8): Likewise.
9876 (vreinterpretq_f16): Likewise.
9877 (vreinterpretq_f32): Likewise.
9878 (vreinterpretq_s16_s32): Likewise.
9879 (vreinterpretq_s16_s64): Likewise.
9880 (vreinterpretq_s16_s8): Likewise.
9881 (vreinterpretq_s16_u16): Likewise.
9882 (vreinterpretq_s16_u32): Likewise.
9883 (vreinterpretq_s16_u64): Likewise.
9884 (vreinterpretq_s16_u8): Likewise.
9885 (vreinterpretq_s32_s16): Likewise.
9886 (vreinterpretq_s32_s64): Likewise.
9887 (vreinterpretq_s32_s8): Likewise.
9888 (vreinterpretq_s32_u16): Likewise.
9889 (vreinterpretq_s32_u32): Likewise.
9890 (vreinterpretq_s32_u64): Likewise.
9891 (vreinterpretq_s32_u8): Likewise.
9892 (vreinterpretq_s64_s16): Likewise.
9893 (vreinterpretq_s64_s32): Likewise.
9894 (vreinterpretq_s64_s8): Likewise.
9895 (vreinterpretq_s64_u16): Likewise.
9896 (vreinterpretq_s64_u32): Likewise.
9897 (vreinterpretq_s64_u64): Likewise.
9898 (vreinterpretq_s64_u8): Likewise.
9899 (vreinterpretq_s8_s16): Likewise.
9900 (vreinterpretq_s8_s32): Likewise.
9901 (vreinterpretq_s8_s64): Likewise.
9902 (vreinterpretq_s8_u16): Likewise.
9903 (vreinterpretq_s8_u32): Likewise.
9904 (vreinterpretq_s8_u64): Likewise.
9905 (vreinterpretq_s8_u8): Likewise.
9906 (vreinterpretq_u16_s16): Likewise.
9907 (vreinterpretq_u16_s32): Likewise.
9908 (vreinterpretq_u16_s64): Likewise.
9909 (vreinterpretq_u16_s8): Likewise.
9910 (vreinterpretq_u16_u32): Likewise.
9911 (vreinterpretq_u16_u64): Likewise.
9912 (vreinterpretq_u16_u8): Likewise.
9913 (vreinterpretq_u32_s16): Likewise.
9914 (vreinterpretq_u32_s32): Likewise.
9915 (vreinterpretq_u32_s64): Likewise.
9916 (vreinterpretq_u32_s8): Likewise.
9917 (vreinterpretq_u32_u16): Likewise.
9918 (vreinterpretq_u32_u64): Likewise.
9919 (vreinterpretq_u32_u8): Likewise.
9920 (vreinterpretq_u64_s16): Likewise.
9921 (vreinterpretq_u64_s32): Likewise.
9922 (vreinterpretq_u64_s64): Likewise.
9923 (vreinterpretq_u64_s8): Likewise.
9924 (vreinterpretq_u64_u16): Likewise.
9925 (vreinterpretq_u64_u32): Likewise.
9926 (vreinterpretq_u64_u8): Likewise.
9927 (vreinterpretq_u8_s16): Likewise.
9928 (vreinterpretq_u8_s32): Likewise.
9929 (vreinterpretq_u8_s64): Likewise.
9930 (vreinterpretq_u8_s8): Likewise.
9931 (vreinterpretq_u8_u16): Likewise.
9932 (vreinterpretq_u8_u32): Likewise.
9933 (vreinterpretq_u8_u64): Likewise.
9934 (vreinterpretq_s32_f16): Likewise.
9935 (vreinterpretq_s32_f32): Likewise.
9936 (vreinterpretq_u16_f16): Likewise.
9937 (vreinterpretq_u16_f32): Likewise.
9938 (vreinterpretq_u32_f16): Likewise.
9939 (vreinterpretq_u32_f32): Likewise.
9940 (vreinterpretq_u64_f16): Likewise.
9941 (vreinterpretq_u64_f32): Likewise.
9942 (vreinterpretq_u8_f16): Likewise.
9943 (vreinterpretq_u8_f32): Likewise.
9944 (vreinterpretq_f16_f32): Likewise.
9945 (vreinterpretq_f16_s16): Likewise.
9946 (vreinterpretq_f16_s32): Likewise.
9947 (vreinterpretq_f16_s64): Likewise.
9948 (vreinterpretq_f16_s8): Likewise.
9949 (vreinterpretq_f16_u16): Likewise.
9950 (vreinterpretq_f16_u32): Likewise.
9951 (vreinterpretq_f16_u64): Likewise.
9952 (vreinterpretq_f16_u8): Likewise.
9953 (vreinterpretq_f32_f16): Likewise.
9954 (vreinterpretq_f32_s16): Likewise.
9955 (vreinterpretq_f32_s32): Likewise.
9956 (vreinterpretq_f32_s64): Likewise.
9957 (vreinterpretq_f32_s8): Likewise.
9958 (vreinterpretq_f32_u16): Likewise.
9959 (vreinterpretq_f32_u32): Likewise.
9960 (vreinterpretq_f32_u64): Likewise.
9961 (vreinterpretq_f32_u8): Likewise.
9962 (vreinterpretq_s16_f16): Likewise.
9963 (vreinterpretq_s16_f32): Likewise.
9964 (vreinterpretq_s64_f16): Likewise.
9965 (vreinterpretq_s64_f32): Likewise.
9966 (vreinterpretq_s8_f16): Likewise.
9967 (vreinterpretq_s8_f32): Likewise.
9968 (__arm_vreinterpretq_f16): Likewise.
9969 (__arm_vreinterpretq_f32): Likewise.
9970 (__arm_vreinterpretq_s16): Likewise.
9971 (__arm_vreinterpretq_s32): Likewise.
9972 (__arm_vreinterpretq_s64): Likewise.
9973 (__arm_vreinterpretq_s8): Likewise.
9974 (__arm_vreinterpretq_u16): Likewise.
9975 (__arm_vreinterpretq_u32): Likewise.
9976 (__arm_vreinterpretq_u64): Likewise.
9977 (__arm_vreinterpretq_u8): Likewise.
9978 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
9979 (__arm_vreinterpretq_s16_s64): Likewise.
9980 (__arm_vreinterpretq_s16_s8): Likewise.
9981 (__arm_vreinterpretq_s16_u16): Likewise.
9982 (__arm_vreinterpretq_s16_u32): Likewise.
9983 (__arm_vreinterpretq_s16_u64): Likewise.
9984 (__arm_vreinterpretq_s16_u8): Likewise.
9985 (__arm_vreinterpretq_s32_s16): Likewise.
9986 (__arm_vreinterpretq_s32_s64): Likewise.
9987 (__arm_vreinterpretq_s32_s8): Likewise.
9988 (__arm_vreinterpretq_s32_u16): Likewise.
9989 (__arm_vreinterpretq_s32_u32): Likewise.
9990 (__arm_vreinterpretq_s32_u64): Likewise.
9991 (__arm_vreinterpretq_s32_u8): Likewise.
9992 (__arm_vreinterpretq_s64_s16): Likewise.
9993 (__arm_vreinterpretq_s64_s32): Likewise.
9994 (__arm_vreinterpretq_s64_s8): Likewise.
9995 (__arm_vreinterpretq_s64_u16): Likewise.
9996 (__arm_vreinterpretq_s64_u32): Likewise.
9997 (__arm_vreinterpretq_s64_u64): Likewise.
9998 (__arm_vreinterpretq_s64_u8): Likewise.
9999 (__arm_vreinterpretq_s8_s16): Likewise.
10000 (__arm_vreinterpretq_s8_s32): Likewise.
10001 (__arm_vreinterpretq_s8_s64): Likewise.
10002 (__arm_vreinterpretq_s8_u16): Likewise.
10003 (__arm_vreinterpretq_s8_u32): Likewise.
10004 (__arm_vreinterpretq_s8_u64): Likewise.
10005 (__arm_vreinterpretq_s8_u8): Likewise.
10006 (__arm_vreinterpretq_u16_s16): Likewise.
10007 (__arm_vreinterpretq_u16_s32): Likewise.
10008 (__arm_vreinterpretq_u16_s64): Likewise.
10009 (__arm_vreinterpretq_u16_s8): Likewise.
10010 (__arm_vreinterpretq_u16_u32): Likewise.
10011 (__arm_vreinterpretq_u16_u64): Likewise.
10012 (__arm_vreinterpretq_u16_u8): Likewise.
10013 (__arm_vreinterpretq_u32_s16): Likewise.
10014 (__arm_vreinterpretq_u32_s32): Likewise.
10015 (__arm_vreinterpretq_u32_s64): Likewise.
10016 (__arm_vreinterpretq_u32_s8): Likewise.
10017 (__arm_vreinterpretq_u32_u16): Likewise.
10018 (__arm_vreinterpretq_u32_u64): Likewise.
10019 (__arm_vreinterpretq_u32_u8): Likewise.
10020 (__arm_vreinterpretq_u64_s16): Likewise.
10021 (__arm_vreinterpretq_u64_s32): Likewise.
10022 (__arm_vreinterpretq_u64_s64): Likewise.
10023 (__arm_vreinterpretq_u64_s8): Likewise.
10024 (__arm_vreinterpretq_u64_u16): Likewise.
10025 (__arm_vreinterpretq_u64_u32): Likewise.
10026 (__arm_vreinterpretq_u64_u8): Likewise.
10027 (__arm_vreinterpretq_u8_s16): Likewise.
10028 (__arm_vreinterpretq_u8_s32): Likewise.
10029 (__arm_vreinterpretq_u8_s64): Likewise.
10030 (__arm_vreinterpretq_u8_s8): Likewise.
10031 (__arm_vreinterpretq_u8_u16): Likewise.
10032 (__arm_vreinterpretq_u8_u32): Likewise.
10033 (__arm_vreinterpretq_u8_u64): Likewise.
10034 (__arm_vreinterpretq_s32_f16): Likewise.
10035 (__arm_vreinterpretq_s32_f32): Likewise.
10036 (__arm_vreinterpretq_s16_f16): Likewise.
10037 (__arm_vreinterpretq_s16_f32): Likewise.
10038 (__arm_vreinterpretq_s64_f16): Likewise.
10039 (__arm_vreinterpretq_s64_f32): Likewise.
10040 (__arm_vreinterpretq_s8_f16): Likewise.
10041 (__arm_vreinterpretq_s8_f32): Likewise.
10042 (__arm_vreinterpretq_u16_f16): Likewise.
10043 (__arm_vreinterpretq_u16_f32): Likewise.
10044 (__arm_vreinterpretq_u32_f16): Likewise.
10045 (__arm_vreinterpretq_u32_f32): Likewise.
10046 (__arm_vreinterpretq_u64_f16): Likewise.
10047 (__arm_vreinterpretq_u64_f32): Likewise.
10048 (__arm_vreinterpretq_u8_f16): Likewise.
10049 (__arm_vreinterpretq_u8_f32): Likewise.
10050 (__arm_vreinterpretq_f16_f32): Likewise.
10051 (__arm_vreinterpretq_f16_s16): Likewise.
10052 (__arm_vreinterpretq_f16_s32): Likewise.
10053 (__arm_vreinterpretq_f16_s64): Likewise.
10054 (__arm_vreinterpretq_f16_s8): Likewise.
10055 (__arm_vreinterpretq_f16_u16): Likewise.
10056 (__arm_vreinterpretq_f16_u32): Likewise.
10057 (__arm_vreinterpretq_f16_u64): Likewise.
10058 (__arm_vreinterpretq_f16_u8): Likewise.
10059 (__arm_vreinterpretq_f32_f16): Likewise.
10060 (__arm_vreinterpretq_f32_s16): Likewise.
10061 (__arm_vreinterpretq_f32_s32): Likewise.
10062 (__arm_vreinterpretq_f32_s64): Likewise.
10063 (__arm_vreinterpretq_f32_s8): Likewise.
10064 (__arm_vreinterpretq_f32_u16): Likewise.
10065 (__arm_vreinterpretq_f32_u32): Likewise.
10066 (__arm_vreinterpretq_f32_u64): Likewise.
10067 (__arm_vreinterpretq_f32_u8): Likewise.
10068 (__arm_vreinterpretq_s16): Likewise.
10069 (__arm_vreinterpretq_s32): Likewise.
10070 (__arm_vreinterpretq_s64): Likewise.
10071 (__arm_vreinterpretq_s8): Likewise.
10072 (__arm_vreinterpretq_u16): Likewise.
10073 (__arm_vreinterpretq_u32): Likewise.
10074 (__arm_vreinterpretq_u64): Likewise.
10075 (__arm_vreinterpretq_u8): Likewise.
10076 (__arm_vreinterpretq_f16): Likewise.
10077 (__arm_vreinterpretq_f32): Likewise.
10078 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
10079 * config/arm/unspecs.md: (REINTERPRET): New unspec.
10081 2023-05-03 Murray Steele <murray.steele@arm.com>
10082 Christophe Lyon <christophe.lyon@arm.com>
10083 Christophe Lyon <christophe.lyon@arm.com
10085 * config.gcc: Add arm-mve-builtins-base.o and
10086 arm-mve-builtins-shapes.o to extra_objs.
10087 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
10089 (arm_expand_builtin): Likewise
10090 (arm_check_builtin_call): Likewise
10091 (arm_describe_resolver): Likewise.
10092 * config/arm/arm-builtins.h (enum resolver_ident): Add
10094 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
10095 (arm_resolve_overloaded_builtin): Handle MVE builtins.
10096 (arm_register_target_pragmas): Register arm_check_builtin_call.
10097 * config/arm/arm-mve-builtins.cc (class registered_function): New
10099 (struct registered_function_hasher): New struct.
10100 (pred_suffixes): New table.
10101 (mode_suffixes): New table.
10102 (type_suffix_info): New table.
10103 (TYPES_float16): New.
10104 (TYPES_all_float): New.
10105 (TYPES_integer_8): New.
10106 (TYPES_integer_8_16): New.
10107 (TYPES_integer_16_32): New.
10108 (TYPES_integer_32): New.
10109 (TYPES_signed_16_32): New.
10110 (TYPES_signed_32): New.
10111 (TYPES_all_signed): New.
10112 (TYPES_all_unsigned): New.
10113 (TYPES_all_integer): New.
10114 (TYPES_all_integer_with_64): New.
10115 (DEF_VECTOR_TYPE): New.
10116 (DEF_DOUBLE_TYPE): New.
10117 (DEF_MVE_TYPES_ARRAY): New.
10118 (all_integer): New.
10119 (all_integer_with_64): New.
10123 (all_unsigned): New.
10125 (integer_8_16): New.
10126 (integer_16_32): New.
10128 (signed_16_32): New.
10130 (register_vector_type): Use void_type_node for mve.fp-only types when
10131 mve.fp is not enabled.
10132 (register_builtin_tuple_types): Likewise.
10133 (handle_arm_mve_h): New function..
10134 (matches_type_p): Likewise..
10135 (report_out_of_range): Likewise.
10136 (report_not_enum): Likewise.
10137 (report_missing_float): Likewise.
10138 (report_non_ice): Likewise.
10139 (check_requires_float): Likewise.
10140 (function_instance::hash): Likewise
10141 (function_instance::call_properties): Likewise.
10142 (function_instance::reads_global_state_p): Likewise.
10143 (function_instance::modifies_global_state_p): Likewise.
10144 (function_instance::could_trap_p): Likewise.
10145 (function_instance::has_inactive_argument): Likewise.
10146 (registered_function_hasher::hash): Likewise.
10147 (registered_function_hasher::equal): Likewise.
10148 (function_builder::function_builder): Likewise.
10149 (function_builder::~function_builder): Likewise.
10150 (function_builder::append_name): Likewise.
10151 (function_builder::finish_name): Likewise.
10152 (function_builder::get_name): Likewise.
10153 (add_attribute): Likewise.
10154 (function_builder::get_attributes): Likewise.
10155 (function_builder::add_function): Likewise.
10156 (function_builder::add_unique_function): Likewise.
10157 (function_builder::add_overloaded_function): Likewise.
10158 (function_builder::add_overloaded_functions): Likewise.
10159 (function_builder::register_function_group): Likewise.
10160 (function_call_info::function_call_info): Likewise.
10161 (function_resolver::function_resolver): Likewise.
10162 (function_resolver::get_vector_type): Likewise.
10163 (function_resolver::get_scalar_type_name): Likewise.
10164 (function_resolver::get_argument_type): Likewise.
10165 (function_resolver::scalar_argument_p): Likewise.
10166 (function_resolver::report_no_such_form): Likewise.
10167 (function_resolver::lookup_form): Likewise.
10168 (function_resolver::resolve_to): Likewise.
10169 (function_resolver::infer_vector_or_tuple_type): Likewise.
10170 (function_resolver::infer_vector_type): Likewise.
10171 (function_resolver::require_vector_or_scalar_type): Likewise.
10172 (function_resolver::require_vector_type): Likewise.
10173 (function_resolver::require_matching_vector_type): Likewise.
10174 (function_resolver::require_derived_vector_type): Likewise.
10175 (function_resolver::require_derived_scalar_type): Likewise.
10176 (function_resolver::require_integer_immediate): Likewise.
10177 (function_resolver::require_scalar_type): Likewise.
10178 (function_resolver::check_num_arguments): Likewise.
10179 (function_resolver::check_gp_argument): Likewise.
10180 (function_resolver::finish_opt_n_resolution): Likewise.
10181 (function_resolver::resolve_unary): Likewise.
10182 (function_resolver::resolve_unary_n): Likewise.
10183 (function_resolver::resolve_uniform): Likewise.
10184 (function_resolver::resolve_uniform_opt_n): Likewise.
10185 (function_resolver::resolve): Likewise.
10186 (function_checker::function_checker): Likewise.
10187 (function_checker::argument_exists_p): Likewise.
10188 (function_checker::require_immediate): Likewise.
10189 (function_checker::require_immediate_enum): Likewise.
10190 (function_checker::require_immediate_range): Likewise.
10191 (function_checker::check): Likewise.
10192 (gimple_folder::gimple_folder): Likewise.
10193 (gimple_folder::fold): Likewise.
10194 (function_expander::function_expander): Likewise.
10195 (function_expander::direct_optab_handler): Likewise.
10196 (function_expander::get_fallback_value): Likewise.
10197 (function_expander::get_reg_target): Likewise.
10198 (function_expander::add_output_operand): Likewise.
10199 (function_expander::add_input_operand): Likewise.
10200 (function_expander::add_integer_operand): Likewise.
10201 (function_expander::generate_insn): Likewise.
10202 (function_expander::use_exact_insn): Likewise.
10203 (function_expander::use_unpred_insn): Likewise.
10204 (function_expander::use_pred_x_insn): Likewise.
10205 (function_expander::use_cond_insn): Likewise.
10206 (function_expander::map_to_rtx_codes): Likewise.
10207 (function_expander::expand): Likewise.
10208 (resolve_overloaded_builtin): Likewise.
10209 (check_builtin_call): Likewise.
10210 (gimple_fold_builtin): Likewise.
10211 (expand_builtin): Likewise.
10212 (gt_ggc_mx): Likewise.
10213 (gt_pch_nx): Likewise.
10214 (gt_pch_nx): Likewise.
10215 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
10226 (offset): New mode.
10227 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
10228 (CP_READ_FPCR): Likewise.
10229 (CP_RAISE_FP_EXCEPTIONS): Likewise.
10230 (CP_READ_MEMORY): Likewise.
10231 (CP_WRITE_MEMORY): Likewise.
10232 (enum units_index): New enum.
10233 (enum predication_index): New.
10234 (enum type_class_index): New.
10235 (enum mode_suffix_index): New enum.
10236 (enum type_suffix_index): New.
10237 (struct mode_suffix_info): New struct.
10238 (struct type_suffix_info): New.
10239 (struct function_group_info): Likewise.
10240 (class function_instance): Likewise.
10241 (class registered_function): Likewise.
10242 (class function_builder): Likewise.
10243 (class function_call_info): Likewise.
10244 (class function_resolver): Likewise.
10245 (class function_checker): Likewise.
10246 (class gimple_folder): Likewise.
10247 (class function_expander): Likewise.
10248 (get_mve_pred16_t): Likewise.
10249 (find_mode_suffix): New function.
10250 (class function_base): Likewise.
10251 (class function_shape): Likewise.
10252 (function_instance::operator==): New function.
10253 (function_instance::operator!=): Likewise.
10254 (function_instance::vectors_per_tuple): Likewise.
10255 (function_instance::mode_suffix): Likewise.
10256 (function_instance::type_suffix): Likewise.
10257 (function_instance::scalar_type): Likewise.
10258 (function_instance::vector_type): Likewise.
10259 (function_instance::tuple_type): Likewise.
10260 (function_instance::vector_mode): Likewise.
10261 (function_call_info::function_returns_void_p): Likewise.
10262 (function_base::call_properties): Likewise.
10263 * config/arm/arm-protos.h (enum arm_builtin_class): Add
10265 (handle_arm_mve_h): New.
10266 (resolve_overloaded_builtin): New.
10267 (check_builtin_call): New.
10268 (gimple_fold_builtin): New.
10269 (expand_builtin): New.
10270 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
10271 arm_gimple_fold_builtin.
10272 (arm_gimple_fold_builtin): New function.
10273 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
10274 * config/arm/predicates.md (arm_any_register_operand): New predicate.
10275 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
10276 (arm-mve-builtins-shapes.o): New target.
10277 (arm-mve-builtins-base.o): New target.
10278 * config/arm/arm-mve-builtins-base.cc: New file.
10279 * config/arm/arm-mve-builtins-base.def: New file.
10280 * config/arm/arm-mve-builtins-base.h: New file.
10281 * config/arm/arm-mve-builtins-functions.h: New file.
10282 * config/arm/arm-mve-builtins-shapes.cc: New file.
10283 * config/arm/arm-mve-builtins-shapes.h: New file.
10285 2023-05-03 Murray Steele <murray.steele@arm.com>
10286 Christophe Lyon <christophe.lyon@arm.com>
10287 Christophe Lyon <christophe.lyon@arm.com>
10289 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
10291 (arm_init_builtin): Use arm_general_add_builtin_function instead
10292 of arm_add_builtin_function.
10293 (arm_init_acle_builtins): Likewise.
10294 (arm_init_mve_builtins): Likewise.
10295 (arm_init_crypto_builtins): Likewise.
10296 (arm_init_builtins): Likewise.
10297 (arm_general_builtin_decl): New function.
10298 (arm_builtin_decl): Defer to numberspace-specialized functions.
10299 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
10300 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
10301 (arm_general_expand_builtin_1): ... specialize for general builtins.
10302 (arm_expand_acle_builtin): Use arm_general_expand_builtin
10303 instead of arm_expand_builtin.
10304 (arm_expand_mve_builtin): Likewise.
10305 (arm_expand_neon_builtin): Likewise.
10306 (arm_expand_vfp_builtin): Likewise.
10307 (arm_general_expand_builtin): New function.
10308 (arm_expand_builtin): Specialize for general builtins.
10309 (arm_general_check_builtin_call): New function.
10310 (arm_check_builtin_call): Specialize for general builtins.
10311 (arm_describe_resolver): Validate numberspace.
10312 (arm_cde_end_args): Likewise.
10313 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
10314 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
10316 2023-05-03 Martin Liska <mliska@suse.cz>
10319 * config/riscv/sync.md: Add gcc_unreachable to a switch.
10321 2023-05-03 Richard Biener <rguenther@suse.de>
10323 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
10324 (patch_loop_exit): Likewise.
10325 (connect_loops): Likewise.
10326 (split_loop): Likewise.
10327 (control_dep_semi_invariant_p): Likewise.
10328 (do_split_loop_on_cond): Likewise.
10329 (split_loop_on_cond): Likewise.
10330 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
10332 (simplify_loop_version): Likewise.
10333 (evaluate_bbs): Likewise.
10334 (find_loop_guard): Likewise.
10335 (clean_up_after_unswitching): Likewise.
10336 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
10338 (optimize_spaceship): Take a gcond * argument, avoid
10340 (math_opts_dom_walker::after_dom_children): Adjust call to
10341 optimize_spaceship.
10342 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
10343 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
10346 2023-05-03 Andreas Schwab <schwab@suse.de>
10348 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
10350 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10352 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
10354 (class vlseg): New class.
10355 (class vsseg): Ditto.
10356 (class vlsseg): Ditto.
10357 (class vssseg): Ditto.
10358 (class seg_indexed_load): Ditto.
10359 (class seg_indexed_store): Ditto.
10360 (class vlsegff): Ditto.
10362 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10363 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
10373 * config/riscv/riscv-vector-builtins-shapes.cc (struct
10374 seg_loadstore_def): Ditto.
10375 (struct seg_indexed_loadstore_def): Ditto.
10376 (struct seg_fault_load_def): Ditto.
10378 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
10379 * config/riscv/riscv-vector-builtins.cc
10380 (function_builder::append_nf): New function.
10381 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
10382 Change ptr from double into float.
10383 (vfloat32m1x3_t): Ditto.
10384 (vfloat32m1x4_t): Ditto.
10385 (vfloat32m1x5_t): Ditto.
10386 (vfloat32m1x6_t): Ditto.
10387 (vfloat32m1x7_t): Ditto.
10388 (vfloat32m1x8_t): Ditto.
10389 (vfloat32m2x2_t): Ditto.
10390 (vfloat32m2x3_t): Ditto.
10391 (vfloat32m2x4_t): Ditto.
10392 (vfloat32m4x2_t): Ditto.
10393 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
10394 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
10396 * config/riscv/riscv.md: Add segment instructions.
10397 * config/riscv/vector-iterators.md: Support segment intrinsics.
10398 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
10400 (@pred_unit_strided_store<mode>): Ditto.
10401 (@pred_strided_load<mode>): Ditto.
10402 (@pred_strided_store<mode>): Ditto.
10403 (@pred_fault_load<mode>): Ditto.
10404 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
10405 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
10406 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
10407 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
10408 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
10409 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
10410 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
10411 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
10412 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
10413 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
10414 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
10415 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
10416 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
10417 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
10419 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10421 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
10422 tuple type support.
10424 (floattype): Ditto.
10426 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
10427 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
10429 (vget): Add tuple type vget.
10430 * config/riscv/riscv-vector-builtins-types.def
10431 (DEF_RVV_TUPLE_OPS): New macro.
10432 (vint8mf8x2_t): Ditto.
10433 (vuint8mf8x2_t): Ditto.
10434 (vint8mf8x3_t): Ditto.
10435 (vuint8mf8x3_t): Ditto.
10436 (vint8mf8x4_t): Ditto.
10437 (vuint8mf8x4_t): Ditto.
10438 (vint8mf8x5_t): Ditto.
10439 (vuint8mf8x5_t): Ditto.
10440 (vint8mf8x6_t): Ditto.
10441 (vuint8mf8x6_t): Ditto.
10442 (vint8mf8x7_t): Ditto.
10443 (vuint8mf8x7_t): Ditto.
10444 (vint8mf8x8_t): Ditto.
10445 (vuint8mf8x8_t): Ditto.
10446 (vint8mf4x2_t): Ditto.
10447 (vuint8mf4x2_t): Ditto.
10448 (vint8mf4x3_t): Ditto.
10449 (vuint8mf4x3_t): Ditto.
10450 (vint8mf4x4_t): Ditto.
10451 (vuint8mf4x4_t): Ditto.
10452 (vint8mf4x5_t): Ditto.
10453 (vuint8mf4x5_t): Ditto.
10454 (vint8mf4x6_t): Ditto.
10455 (vuint8mf4x6_t): Ditto.
10456 (vint8mf4x7_t): Ditto.
10457 (vuint8mf4x7_t): Ditto.
10458 (vint8mf4x8_t): Ditto.
10459 (vuint8mf4x8_t): Ditto.
10460 (vint8mf2x2_t): Ditto.
10461 (vuint8mf2x2_t): Ditto.
10462 (vint8mf2x3_t): Ditto.
10463 (vuint8mf2x3_t): Ditto.
10464 (vint8mf2x4_t): Ditto.
10465 (vuint8mf2x4_t): Ditto.
10466 (vint8mf2x5_t): Ditto.
10467 (vuint8mf2x5_t): Ditto.
10468 (vint8mf2x6_t): Ditto.
10469 (vuint8mf2x6_t): Ditto.
10470 (vint8mf2x7_t): Ditto.
10471 (vuint8mf2x7_t): Ditto.
10472 (vint8mf2x8_t): Ditto.
10473 (vuint8mf2x8_t): Ditto.
10474 (vint8m1x2_t): Ditto.
10475 (vuint8m1x2_t): Ditto.
10476 (vint8m1x3_t): Ditto.
10477 (vuint8m1x3_t): Ditto.
10478 (vint8m1x4_t): Ditto.
10479 (vuint8m1x4_t): Ditto.
10480 (vint8m1x5_t): Ditto.
10481 (vuint8m1x5_t): Ditto.
10482 (vint8m1x6_t): Ditto.
10483 (vuint8m1x6_t): Ditto.
10484 (vint8m1x7_t): Ditto.
10485 (vuint8m1x7_t): Ditto.
10486 (vint8m1x8_t): Ditto.
10487 (vuint8m1x8_t): Ditto.
10488 (vint8m2x2_t): Ditto.
10489 (vuint8m2x2_t): Ditto.
10490 (vint8m2x3_t): Ditto.
10491 (vuint8m2x3_t): Ditto.
10492 (vint8m2x4_t): Ditto.
10493 (vuint8m2x4_t): Ditto.
10494 (vint8m4x2_t): Ditto.
10495 (vuint8m4x2_t): Ditto.
10496 (vint16mf4x2_t): Ditto.
10497 (vuint16mf4x2_t): Ditto.
10498 (vint16mf4x3_t): Ditto.
10499 (vuint16mf4x3_t): Ditto.
10500 (vint16mf4x4_t): Ditto.
10501 (vuint16mf4x4_t): Ditto.
10502 (vint16mf4x5_t): Ditto.
10503 (vuint16mf4x5_t): Ditto.
10504 (vint16mf4x6_t): Ditto.
10505 (vuint16mf4x6_t): Ditto.
10506 (vint16mf4x7_t): Ditto.
10507 (vuint16mf4x7_t): Ditto.
10508 (vint16mf4x8_t): Ditto.
10509 (vuint16mf4x8_t): Ditto.
10510 (vint16mf2x2_t): Ditto.
10511 (vuint16mf2x2_t): Ditto.
10512 (vint16mf2x3_t): Ditto.
10513 (vuint16mf2x3_t): Ditto.
10514 (vint16mf2x4_t): Ditto.
10515 (vuint16mf2x4_t): Ditto.
10516 (vint16mf2x5_t): Ditto.
10517 (vuint16mf2x5_t): Ditto.
10518 (vint16mf2x6_t): Ditto.
10519 (vuint16mf2x6_t): Ditto.
10520 (vint16mf2x7_t): Ditto.
10521 (vuint16mf2x7_t): Ditto.
10522 (vint16mf2x8_t): Ditto.
10523 (vuint16mf2x8_t): Ditto.
10524 (vint16m1x2_t): Ditto.
10525 (vuint16m1x2_t): Ditto.
10526 (vint16m1x3_t): Ditto.
10527 (vuint16m1x3_t): Ditto.
10528 (vint16m1x4_t): Ditto.
10529 (vuint16m1x4_t): Ditto.
10530 (vint16m1x5_t): Ditto.
10531 (vuint16m1x5_t): Ditto.
10532 (vint16m1x6_t): Ditto.
10533 (vuint16m1x6_t): Ditto.
10534 (vint16m1x7_t): Ditto.
10535 (vuint16m1x7_t): Ditto.
10536 (vint16m1x8_t): Ditto.
10537 (vuint16m1x8_t): Ditto.
10538 (vint16m2x2_t): Ditto.
10539 (vuint16m2x2_t): Ditto.
10540 (vint16m2x3_t): Ditto.
10541 (vuint16m2x3_t): Ditto.
10542 (vint16m2x4_t): Ditto.
10543 (vuint16m2x4_t): Ditto.
10544 (vint16m4x2_t): Ditto.
10545 (vuint16m4x2_t): Ditto.
10546 (vint32mf2x2_t): Ditto.
10547 (vuint32mf2x2_t): Ditto.
10548 (vint32mf2x3_t): Ditto.
10549 (vuint32mf2x3_t): Ditto.
10550 (vint32mf2x4_t): Ditto.
10551 (vuint32mf2x4_t): Ditto.
10552 (vint32mf2x5_t): Ditto.
10553 (vuint32mf2x5_t): Ditto.
10554 (vint32mf2x6_t): Ditto.
10555 (vuint32mf2x6_t): Ditto.
10556 (vint32mf2x7_t): Ditto.
10557 (vuint32mf2x7_t): Ditto.
10558 (vint32mf2x8_t): Ditto.
10559 (vuint32mf2x8_t): Ditto.
10560 (vint32m1x2_t): Ditto.
10561 (vuint32m1x2_t): Ditto.
10562 (vint32m1x3_t): Ditto.
10563 (vuint32m1x3_t): Ditto.
10564 (vint32m1x4_t): Ditto.
10565 (vuint32m1x4_t): Ditto.
10566 (vint32m1x5_t): Ditto.
10567 (vuint32m1x5_t): Ditto.
10568 (vint32m1x6_t): Ditto.
10569 (vuint32m1x6_t): Ditto.
10570 (vint32m1x7_t): Ditto.
10571 (vuint32m1x7_t): Ditto.
10572 (vint32m1x8_t): Ditto.
10573 (vuint32m1x8_t): Ditto.
10574 (vint32m2x2_t): Ditto.
10575 (vuint32m2x2_t): Ditto.
10576 (vint32m2x3_t): Ditto.
10577 (vuint32m2x3_t): Ditto.
10578 (vint32m2x4_t): Ditto.
10579 (vuint32m2x4_t): Ditto.
10580 (vint32m4x2_t): Ditto.
10581 (vuint32m4x2_t): Ditto.
10582 (vint64m1x2_t): Ditto.
10583 (vuint64m1x2_t): Ditto.
10584 (vint64m1x3_t): Ditto.
10585 (vuint64m1x3_t): Ditto.
10586 (vint64m1x4_t): Ditto.
10587 (vuint64m1x4_t): Ditto.
10588 (vint64m1x5_t): Ditto.
10589 (vuint64m1x5_t): Ditto.
10590 (vint64m1x6_t): Ditto.
10591 (vuint64m1x6_t): Ditto.
10592 (vint64m1x7_t): Ditto.
10593 (vuint64m1x7_t): Ditto.
10594 (vint64m1x8_t): Ditto.
10595 (vuint64m1x8_t): Ditto.
10596 (vint64m2x2_t): Ditto.
10597 (vuint64m2x2_t): Ditto.
10598 (vint64m2x3_t): Ditto.
10599 (vuint64m2x3_t): Ditto.
10600 (vint64m2x4_t): Ditto.
10601 (vuint64m2x4_t): Ditto.
10602 (vint64m4x2_t): Ditto.
10603 (vuint64m4x2_t): Ditto.
10604 (vfloat32mf2x2_t): Ditto.
10605 (vfloat32mf2x3_t): Ditto.
10606 (vfloat32mf2x4_t): Ditto.
10607 (vfloat32mf2x5_t): Ditto.
10608 (vfloat32mf2x6_t): Ditto.
10609 (vfloat32mf2x7_t): Ditto.
10610 (vfloat32mf2x8_t): Ditto.
10611 (vfloat32m1x2_t): Ditto.
10612 (vfloat32m1x3_t): Ditto.
10613 (vfloat32m1x4_t): Ditto.
10614 (vfloat32m1x5_t): Ditto.
10615 (vfloat32m1x6_t): Ditto.
10616 (vfloat32m1x7_t): Ditto.
10617 (vfloat32m1x8_t): Ditto.
10618 (vfloat32m2x2_t): Ditto.
10619 (vfloat32m2x3_t): Ditto.
10620 (vfloat32m2x4_t): Ditto.
10621 (vfloat32m4x2_t): Ditto.
10622 (vfloat64m1x2_t): Ditto.
10623 (vfloat64m1x3_t): Ditto.
10624 (vfloat64m1x4_t): Ditto.
10625 (vfloat64m1x5_t): Ditto.
10626 (vfloat64m1x6_t): Ditto.
10627 (vfloat64m1x7_t): Ditto.
10628 (vfloat64m1x8_t): Ditto.
10629 (vfloat64m2x2_t): Ditto.
10630 (vfloat64m2x3_t): Ditto.
10631 (vfloat64m2x4_t): Ditto.
10632 (vfloat64m4x2_t): Ditto.
10633 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
10635 (DEF_RVV_TYPE_INDEX): Ditto.
10636 (rvv_arg_type_info::get_tuple_subpart_type): New function.
10637 (DEF_RVV_TUPLE_TYPE): New macro.
10638 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
10639 Adapt for tuple vget/vset support.
10640 (vint8mf4_t): Ditto.
10641 (vuint8mf4_t): Ditto.
10642 (vint8mf2_t): Ditto.
10643 (vuint8mf2_t): Ditto.
10644 (vint8m1_t): Ditto.
10645 (vuint8m1_t): Ditto.
10646 (vint8m2_t): Ditto.
10647 (vuint8m2_t): Ditto.
10648 (vint8m4_t): Ditto.
10649 (vuint8m4_t): Ditto.
10650 (vint8m8_t): Ditto.
10651 (vuint8m8_t): Ditto.
10652 (vint16mf4_t): Ditto.
10653 (vuint16mf4_t): Ditto.
10654 (vint16mf2_t): Ditto.
10655 (vuint16mf2_t): Ditto.
10656 (vint16m1_t): Ditto.
10657 (vuint16m1_t): Ditto.
10658 (vint16m2_t): Ditto.
10659 (vuint16m2_t): Ditto.
10660 (vint16m4_t): Ditto.
10661 (vuint16m4_t): Ditto.
10662 (vint16m8_t): Ditto.
10663 (vuint16m8_t): Ditto.
10664 (vint32mf2_t): Ditto.
10665 (vuint32mf2_t): Ditto.
10666 (vint32m1_t): Ditto.
10667 (vuint32m1_t): Ditto.
10668 (vint32m2_t): Ditto.
10669 (vuint32m2_t): Ditto.
10670 (vint32m4_t): Ditto.
10671 (vuint32m4_t): Ditto.
10672 (vint32m8_t): Ditto.
10673 (vuint32m8_t): Ditto.
10674 (vint64m1_t): Ditto.
10675 (vuint64m1_t): Ditto.
10676 (vint64m2_t): Ditto.
10677 (vuint64m2_t): Ditto.
10678 (vint64m4_t): Ditto.
10679 (vuint64m4_t): Ditto.
10680 (vint64m8_t): Ditto.
10681 (vuint64m8_t): Ditto.
10682 (vfloat32mf2_t): Ditto.
10683 (vfloat32m1_t): Ditto.
10684 (vfloat32m2_t): Ditto.
10685 (vfloat32m4_t): Ditto.
10686 (vfloat32m8_t): Ditto.
10687 (vfloat64m1_t): Ditto.
10688 (vfloat64m2_t): Ditto.
10689 (vfloat64m4_t): Ditto.
10690 (vfloat64m8_t): Ditto.
10691 (tuple_subpart): Add tuple subpart base type.
10692 * config/riscv/riscv-vector-builtins.h (struct
10693 rvv_arg_type_info): Ditto.
10694 (tuple_type_field): New function.
10696 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
10698 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
10699 (RVV_TUPLE_PARTIAL_MODES): Ditto.
10700 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
10703 (get_subpart_mode): Ditto.
10704 (get_tuple_mode): Ditto.
10705 (expand_tuple_move): Ditto.
10706 * config/riscv/riscv-v.cc (ENTRY): New macro.
10707 (TUPLE_ENTRY): Ditto.
10708 (get_nf): New function.
10709 (get_subpart_mode): Ditto.
10710 (get_tuple_mode): Ditto.
10711 (expand_tuple_move): Ditto.
10712 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
10714 (register_tuple_type): New function
10715 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
10717 (vint8mf8x2_t): New macro.
10718 (vuint8mf8x2_t): Ditto.
10719 (vint8mf8x3_t): Ditto.
10720 (vuint8mf8x3_t): Ditto.
10721 (vint8mf8x4_t): Ditto.
10722 (vuint8mf8x4_t): Ditto.
10723 (vint8mf8x5_t): Ditto.
10724 (vuint8mf8x5_t): Ditto.
10725 (vint8mf8x6_t): Ditto.
10726 (vuint8mf8x6_t): Ditto.
10727 (vint8mf8x7_t): Ditto.
10728 (vuint8mf8x7_t): Ditto.
10729 (vint8mf8x8_t): Ditto.
10730 (vuint8mf8x8_t): Ditto.
10731 (vint8mf4x2_t): Ditto.
10732 (vuint8mf4x2_t): Ditto.
10733 (vint8mf4x3_t): Ditto.
10734 (vuint8mf4x3_t): Ditto.
10735 (vint8mf4x4_t): Ditto.
10736 (vuint8mf4x4_t): Ditto.
10737 (vint8mf4x5_t): Ditto.
10738 (vuint8mf4x5_t): Ditto.
10739 (vint8mf4x6_t): Ditto.
10740 (vuint8mf4x6_t): Ditto.
10741 (vint8mf4x7_t): Ditto.
10742 (vuint8mf4x7_t): Ditto.
10743 (vint8mf4x8_t): Ditto.
10744 (vuint8mf4x8_t): Ditto.
10745 (vint8mf2x2_t): Ditto.
10746 (vuint8mf2x2_t): Ditto.
10747 (vint8mf2x3_t): Ditto.
10748 (vuint8mf2x3_t): Ditto.
10749 (vint8mf2x4_t): Ditto.
10750 (vuint8mf2x4_t): Ditto.
10751 (vint8mf2x5_t): Ditto.
10752 (vuint8mf2x5_t): Ditto.
10753 (vint8mf2x6_t): Ditto.
10754 (vuint8mf2x6_t): Ditto.
10755 (vint8mf2x7_t): Ditto.
10756 (vuint8mf2x7_t): Ditto.
10757 (vint8mf2x8_t): Ditto.
10758 (vuint8mf2x8_t): Ditto.
10759 (vint8m1x2_t): Ditto.
10760 (vuint8m1x2_t): Ditto.
10761 (vint8m1x3_t): Ditto.
10762 (vuint8m1x3_t): Ditto.
10763 (vint8m1x4_t): Ditto.
10764 (vuint8m1x4_t): Ditto.
10765 (vint8m1x5_t): Ditto.
10766 (vuint8m1x5_t): Ditto.
10767 (vint8m1x6_t): Ditto.
10768 (vuint8m1x6_t): Ditto.
10769 (vint8m1x7_t): Ditto.
10770 (vuint8m1x7_t): Ditto.
10771 (vint8m1x8_t): Ditto.
10772 (vuint8m1x8_t): Ditto.
10773 (vint8m2x2_t): Ditto.
10774 (vuint8m2x2_t): Ditto.
10775 (vint8m2x3_t): Ditto.
10776 (vuint8m2x3_t): Ditto.
10777 (vint8m2x4_t): Ditto.
10778 (vuint8m2x4_t): Ditto.
10779 (vint8m4x2_t): Ditto.
10780 (vuint8m4x2_t): Ditto.
10781 (vint16mf4x2_t): Ditto.
10782 (vuint16mf4x2_t): Ditto.
10783 (vint16mf4x3_t): Ditto.
10784 (vuint16mf4x3_t): Ditto.
10785 (vint16mf4x4_t): Ditto.
10786 (vuint16mf4x4_t): Ditto.
10787 (vint16mf4x5_t): Ditto.
10788 (vuint16mf4x5_t): Ditto.
10789 (vint16mf4x6_t): Ditto.
10790 (vuint16mf4x6_t): Ditto.
10791 (vint16mf4x7_t): Ditto.
10792 (vuint16mf4x7_t): Ditto.
10793 (vint16mf4x8_t): Ditto.
10794 (vuint16mf4x8_t): Ditto.
10795 (vint16mf2x2_t): Ditto.
10796 (vuint16mf2x2_t): Ditto.
10797 (vint16mf2x3_t): Ditto.
10798 (vuint16mf2x3_t): Ditto.
10799 (vint16mf2x4_t): Ditto.
10800 (vuint16mf2x4_t): Ditto.
10801 (vint16mf2x5_t): Ditto.
10802 (vuint16mf2x5_t): Ditto.
10803 (vint16mf2x6_t): Ditto.
10804 (vuint16mf2x6_t): Ditto.
10805 (vint16mf2x7_t): Ditto.
10806 (vuint16mf2x7_t): Ditto.
10807 (vint16mf2x8_t): Ditto.
10808 (vuint16mf2x8_t): Ditto.
10809 (vint16m1x2_t): Ditto.
10810 (vuint16m1x2_t): Ditto.
10811 (vint16m1x3_t): Ditto.
10812 (vuint16m1x3_t): Ditto.
10813 (vint16m1x4_t): Ditto.
10814 (vuint16m1x4_t): Ditto.
10815 (vint16m1x5_t): Ditto.
10816 (vuint16m1x5_t): Ditto.
10817 (vint16m1x6_t): Ditto.
10818 (vuint16m1x6_t): Ditto.
10819 (vint16m1x7_t): Ditto.
10820 (vuint16m1x7_t): Ditto.
10821 (vint16m1x8_t): Ditto.
10822 (vuint16m1x8_t): Ditto.
10823 (vint16m2x2_t): Ditto.
10824 (vuint16m2x2_t): Ditto.
10825 (vint16m2x3_t): Ditto.
10826 (vuint16m2x3_t): Ditto.
10827 (vint16m2x4_t): Ditto.
10828 (vuint16m2x4_t): Ditto.
10829 (vint16m4x2_t): Ditto.
10830 (vuint16m4x2_t): Ditto.
10831 (vint32mf2x2_t): Ditto.
10832 (vuint32mf2x2_t): Ditto.
10833 (vint32mf2x3_t): Ditto.
10834 (vuint32mf2x3_t): Ditto.
10835 (vint32mf2x4_t): Ditto.
10836 (vuint32mf2x4_t): Ditto.
10837 (vint32mf2x5_t): Ditto.
10838 (vuint32mf2x5_t): Ditto.
10839 (vint32mf2x6_t): Ditto.
10840 (vuint32mf2x6_t): Ditto.
10841 (vint32mf2x7_t): Ditto.
10842 (vuint32mf2x7_t): Ditto.
10843 (vint32mf2x8_t): Ditto.
10844 (vuint32mf2x8_t): Ditto.
10845 (vint32m1x2_t): Ditto.
10846 (vuint32m1x2_t): Ditto.
10847 (vint32m1x3_t): Ditto.
10848 (vuint32m1x3_t): Ditto.
10849 (vint32m1x4_t): Ditto.
10850 (vuint32m1x4_t): Ditto.
10851 (vint32m1x5_t): Ditto.
10852 (vuint32m1x5_t): Ditto.
10853 (vint32m1x6_t): Ditto.
10854 (vuint32m1x6_t): Ditto.
10855 (vint32m1x7_t): Ditto.
10856 (vuint32m1x7_t): Ditto.
10857 (vint32m1x8_t): Ditto.
10858 (vuint32m1x8_t): Ditto.
10859 (vint32m2x2_t): Ditto.
10860 (vuint32m2x2_t): Ditto.
10861 (vint32m2x3_t): Ditto.
10862 (vuint32m2x3_t): Ditto.
10863 (vint32m2x4_t): Ditto.
10864 (vuint32m2x4_t): Ditto.
10865 (vint32m4x2_t): Ditto.
10866 (vuint32m4x2_t): Ditto.
10867 (vint64m1x2_t): Ditto.
10868 (vuint64m1x2_t): Ditto.
10869 (vint64m1x3_t): Ditto.
10870 (vuint64m1x3_t): Ditto.
10871 (vint64m1x4_t): Ditto.
10872 (vuint64m1x4_t): Ditto.
10873 (vint64m1x5_t): Ditto.
10874 (vuint64m1x5_t): Ditto.
10875 (vint64m1x6_t): Ditto.
10876 (vuint64m1x6_t): Ditto.
10877 (vint64m1x7_t): Ditto.
10878 (vuint64m1x7_t): Ditto.
10879 (vint64m1x8_t): Ditto.
10880 (vuint64m1x8_t): Ditto.
10881 (vint64m2x2_t): Ditto.
10882 (vuint64m2x2_t): Ditto.
10883 (vint64m2x3_t): Ditto.
10884 (vuint64m2x3_t): Ditto.
10885 (vint64m2x4_t): Ditto.
10886 (vuint64m2x4_t): Ditto.
10887 (vint64m4x2_t): Ditto.
10888 (vuint64m4x2_t): Ditto.
10889 (vfloat32mf2x2_t): Ditto.
10890 (vfloat32mf2x3_t): Ditto.
10891 (vfloat32mf2x4_t): Ditto.
10892 (vfloat32mf2x5_t): Ditto.
10893 (vfloat32mf2x6_t): Ditto.
10894 (vfloat32mf2x7_t): Ditto.
10895 (vfloat32mf2x8_t): Ditto.
10896 (vfloat32m1x2_t): Ditto.
10897 (vfloat32m1x3_t): Ditto.
10898 (vfloat32m1x4_t): Ditto.
10899 (vfloat32m1x5_t): Ditto.
10900 (vfloat32m1x6_t): Ditto.
10901 (vfloat32m1x7_t): Ditto.
10902 (vfloat32m1x8_t): Ditto.
10903 (vfloat32m2x2_t): Ditto.
10904 (vfloat32m2x3_t): Ditto.
10905 (vfloat32m2x4_t): Ditto.
10906 (vfloat32m4x2_t): Ditto.
10907 (vfloat64m1x2_t): Ditto.
10908 (vfloat64m1x3_t): Ditto.
10909 (vfloat64m1x4_t): Ditto.
10910 (vfloat64m1x5_t): Ditto.
10911 (vfloat64m1x6_t): Ditto.
10912 (vfloat64m1x7_t): Ditto.
10913 (vfloat64m1x8_t): Ditto.
10914 (vfloat64m2x2_t): Ditto.
10915 (vfloat64m2x3_t): Ditto.
10916 (vfloat64m2x4_t): Ditto.
10917 (vfloat64m4x2_t): Ditto.
10918 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
10920 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
10921 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
10923 (TUPLE_ENTRY): Ditto.
10924 (riscv_v_ext_mode_p): New function.
10925 (riscv_v_adjust_nunits): Add tuple mode adjustment.
10926 (riscv_classify_address): Ditto.
10927 (riscv_binary_cost): Ditto.
10928 (riscv_rtx_costs): Ditto.
10929 (riscv_secondary_memory_needed): Ditto.
10930 (riscv_hard_regno_nregs): Ditto.
10931 (riscv_hard_regno_mode_ok): Ditto.
10932 (riscv_vector_mode_supported_p): Ditto.
10933 (riscv_regmode_natural_size): Ditto.
10934 (riscv_array_mode): New function.
10935 (TARGET_ARRAY_MODE): New target hook.
10936 * config/riscv/riscv.md: Add tuple modes.
10937 * config/riscv/vector-iterators.md: Ditto.
10938 * config/riscv/vector.md (mov<mode>): Add tuple modes data
10940 (*mov<VT:mode>_<P:mode>): Ditto.
10942 2023-05-03 Richard Biener <rguenther@suse.de>
10944 * cse.cc (cse_insn): Track an equivalence to the destination
10945 separately and delay using src_related for it.
10947 2023-05-03 Richard Biener <rguenther@suse.de>
10949 * cse.cc (HASH): Turn into inline function and mix
10950 in another HASH_SHIFT bits.
10951 (SAFE_HASH): Likewise.
10953 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10956 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
10957 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
10959 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10962 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
10963 (add<mode>3<vczle><vczbe>): ... This.
10964 (sub<mode>3): Rename to...
10965 (sub<mode>3<vczle><vczbe>): ... This.
10966 (mul<mode>3): Rename to...
10967 (mul<mode>3<vczle><vczbe>): ... This.
10968 (*div<mode>3): Rename to...
10969 (*div<mode>3<vczle><vczbe>): ... This.
10970 (neg<mode>2): Rename to...
10971 (neg<mode>2<vczle><vczbe>): ... This.
10972 (abs<mode>2): Rename to...
10973 (abs<mode>2<vczle><vczbe>): ... This.
10974 (<frint_pattern><mode>2): Rename to...
10975 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
10976 (<fmaxmin><mode>3): Rename to...
10977 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
10978 (*sqrt<mode>2): Rename to...
10979 (*sqrt<mode>2<vczle><vczbe>): ... This.
10981 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
10983 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
10985 2023-05-03 Martin Liska <mliska@suse.cz>
10987 PR tree-optimization/109693
10988 * value-range-storage.cc (vrange_allocator::vrange_allocator):
10989 Remove unused field.
10990 * value-range-storage.h: Likewise.
10992 2023-05-02 Andrew Pinski <apinski@marvell.com>
10994 * tree-ssa-phiopt.cc (move_stmt): New function.
10995 (match_simplify_replacement): Use move_stmt instead
10996 of the inlined version.
10998 2023-05-02 Andrew Pinski <apinski@marvell.com>
11000 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
11003 2023-05-02 Andrew Pinski <apinski@marvell.com>
11005 PR tree-optimization/109702
11006 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
11007 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
11009 2023-05-02 Andrew Pinski <apinski@marvell.com>
11012 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
11013 insn_and_split pattern.
11015 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11017 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
11020 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11022 * config/riscv/sync.md (mem_thread_fence_1): Change fence
11023 depending on the given memory model.
11025 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11027 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
11028 riscv_union_memmodels function to sync.md.
11029 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
11030 get the union of two memmodels in sync.md.
11031 (riscv_print_operand): Add %I and %J flags that output the
11032 optimal LR/SC flag bits for a given memory model.
11033 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
11034 bits on SC op and replace with optimized %I, %J flags.
11036 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11038 * config/riscv/riscv.cc
11039 (riscv_memmodel_needs_amo_release): Change function name.
11040 (riscv_print_operand): Remove unneeded %F case.
11041 * config/riscv/sync.md: Remove unneeded fences.
11043 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11046 * config/riscv/sync.md (atomic_store<mode>): Use simple store
11047 instruction in combination with fence(s).
11049 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11051 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
11052 of %A to include release bits.
11054 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11056 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
11057 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
11060 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11062 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
11063 sequentially consistent LR.aqrl/SC.rl pairs.
11065 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
11067 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
11068 sanitize memmodel input with memmodel_base.
11070 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
11071 Pan Li <pan2.li@intel.com>
11074 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
11076 2023-05-02 Romain Naour <romain.naour@gmail.com>
11078 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
11081 2023-05-02 Martin Liska <mliska@suse.cz>
11083 * doc/invoke.texi: Update documentation based on param.opt file.
11085 2023-05-02 Richard Biener <rguenther@suse.de>
11087 PR tree-optimization/109672
11088 * tree-vect-stmts.cc (vectorizable_operation): For plus,
11089 minus and negate always check the vector mode is word mode.
11091 2023-05-01 Andrew Pinski <apinski@marvell.com>
11093 * tree-ssa-phiopt.cc: Update comment about
11094 how the transformation are implemented.
11096 2023-05-01 Jeff Law <jlaw@ventanamicro>
11098 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
11100 2023-05-01 Jeff Law <jlaw@ventanamicro>
11102 * config/cris/cris.cc (TARGET_LRA_P): Remove.
11103 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
11104 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
11105 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
11106 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
11107 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
11109 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
11111 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
11112 * print-tree.cc (print_decl_identifier): Implement it.
11113 * toplev.cc (output_stack_usage_1): Use it.
11115 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11117 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
11120 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11122 * value-range.h (irange::set_nonzero): Inline.
11124 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11126 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
11128 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
11129 invalid_range, as it is an inverse range.
11130 * tree-vrp.cc (find_case_label_range): Avoid trees.
11131 * value-range.cc (irange::irange_set): Delete.
11132 (irange::irange_set_1bit_anti_range): Delete.
11133 (irange::irange_set_anti_range): Delete.
11134 (irange::set): Cleanup.
11135 * value-range.h (class irange): Remove irange_set,
11136 irange_set_anti_range, irange_set_1bit_anti_range.
11137 (irange::set_undefined): Remove set to m_type.
11139 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11141 * range-op.cc (update_known_bitmask): Adjust for irange containing
11142 wide_ints internally.
11143 * tree-ssanames.cc (set_nonzero_bits): Same.
11144 * tree-ssanames.h (set_nonzero_bits): Same.
11145 * value-range-storage.cc (irange_storage::set_irange): Same.
11146 (irange_storage::get_irange): Same.
11147 * value-range.cc (irange::operator=): Same.
11148 (irange::irange_set): Same.
11149 (irange::irange_set_1bit_anti_range): Same.
11150 (irange::irange_set_anti_range): Same.
11151 (irange::set): Same.
11152 (irange::verify_range): Same.
11153 (irange::contains_p): Same.
11154 (irange::irange_single_pair_union): Same.
11155 (irange::union_): Same.
11156 (irange::irange_contains_p): Same.
11157 (irange::intersect): Same.
11158 (irange::invert): Same.
11159 (irange::set_range_from_nonzero_bits): Same.
11160 (irange::set_nonzero_bits): Same.
11161 (mask_to_wi): Same.
11162 (irange::intersect_nonzero_bits): Same.
11163 (irange::union_nonzero_bits): Same.
11166 (tree_range): Same.
11167 (range_tests_strict_enum): Same.
11168 (range_tests_misc): Same.
11169 (range_tests_nonzero_bits): Same.
11170 * value-range.h (irange::type): Same.
11171 (irange::varying_compatible_p): Same.
11172 (irange::irange): Same.
11173 (int_range::int_range): Same.
11174 (irange::set_undefined): Same.
11175 (irange::set_varying): Same.
11176 (irange::lower_bound): Same.
11177 (irange::upper_bound): Same.
11179 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11181 * gimple-range-fold.cc (tree_lower_bound): Delete.
11182 (tree_upper_bound): Delete.
11183 (vrp_val_max): Delete.
11184 (vrp_val_min): Delete.
11185 (fold_using_range::range_of_ssa_name_with_loop_info): Call
11186 range_of_var_in_loop.
11187 * vr-values.cc (valid_value_p): Delete.
11188 (fix_overflow): Delete.
11189 (get_scev_info): New.
11190 (bounds_of_var_in_loop): Refactor into...
11191 (induction_variable_may_overflow_p): ...this,
11192 (range_from_loop_direction): ...and this,
11193 (range_of_var_in_loop): ...and this.
11194 * vr-values.h (bounds_of_var_in_loop): Delete.
11195 (range_of_var_in_loop): New.
11197 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11199 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
11201 (vrp_val_max): New.
11202 (vrp_val_min): New.
11203 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
11204 * range-op.cc (max_limit): Same.
11206 (plus_minus_ranges): Same.
11207 (operator_rshift::op1_range): Same.
11208 (operator_cast::inside_domain_p): Same.
11209 * value-range.cc (vrp_val_is_max): Delete.
11210 (vrp_val_is_min): Delete.
11211 (range_tests_misc): Use irange_val_*.
11212 * value-range.h (vrp_val_is_min): Delete.
11213 (vrp_val_is_max): Delete.
11214 (vrp_val_max): Delete.
11215 (irange_val_min): New.
11216 (vrp_val_min): Delete.
11217 (irange_val_max): New.
11218 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
11220 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11222 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
11223 * gimple-fold.cc (size_must_be_zero_p): Same.
11224 * gimple-loop-versioning.cc
11225 (loop_versioning::prune_loop_conditions): Same.
11226 * gimple-range-edge.cc (gcond_edge_range): Same.
11227 (gimple_outgoing_range::calc_switch_ranges): Same.
11228 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
11229 (adjust_realpart_expr): Same.
11230 (fold_using_range::range_of_address): Same.
11231 (fold_using_range::relation_fold_and_or): Same.
11232 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
11233 (range_is_either_true_or_false): Same.
11234 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
11235 (cfn_clz::fold_range): Same.
11236 (cfn_ctz::fold_range): Same.
11237 * gimple-range-tests.cc (class test_expr_eval): Same.
11238 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
11239 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
11240 (propagate_vr_across_jump_function): Same.
11241 (decide_whether_version_node): Same.
11242 * ipa-prop.cc (ipa_get_value_range): Same.
11243 * ipa-prop.h (ipa_range_set_and_normalize): Same.
11244 * range-op.cc (get_shift_range): Same.
11245 (value_range_from_overflowed_bounds): Same.
11246 (value_range_with_overflow): Same.
11247 (create_possibly_reversed_range): Same.
11248 (equal_op1_op2_relation): Same.
11249 (not_equal_op1_op2_relation): Same.
11250 (lt_op1_op2_relation): Same.
11251 (le_op1_op2_relation): Same.
11252 (gt_op1_op2_relation): Same.
11253 (ge_op1_op2_relation): Same.
11254 (operator_mult::op1_range): Same.
11255 (operator_exact_divide::op1_range): Same.
11256 (operator_lshift::op1_range): Same.
11257 (operator_rshift::op1_range): Same.
11258 (operator_cast::op1_range): Same.
11259 (operator_logical_and::fold_range): Same.
11260 (set_nonzero_range_from_mask): Same.
11261 (operator_bitwise_or::op1_range): Same.
11262 (operator_bitwise_xor::op1_range): Same.
11263 (operator_addr_expr::fold_range): Same.
11264 (pointer_plus_operator::wi_fold): Same.
11265 (pointer_or_operator::op1_range): Same.
11272 (range_op_cast_tests): Same.
11273 (range_op_lshift_tests): Same.
11274 (range_op_rshift_tests): Same.
11275 (range_op_bitwise_and_tests): Same.
11276 (range_relational_tests): Same.
11277 * range.cc (range_zero): Same.
11278 (range_nonzero): Same.
11279 * range.h (range_true): Same.
11280 (range_false): Same.
11281 (range_true_and_false): Same.
11282 * tree-data-ref.cc (split_constant_offset_1): Same.
11283 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
11284 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
11285 (find_unswitching_predicates_for_bb): Same.
11286 * tree-ssa-phiopt.cc (value_replacement): Same.
11287 * tree-ssa-threadbackward.cc
11288 (back_threader::find_taken_edge_cond): Same.
11289 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
11290 * tree-vrp.cc (find_case_label_range): Same.
11291 * value-query.cc (range_query::get_tree_range): Same.
11292 * value-range.cc (irange::set_nonnegative): Same.
11293 (frange::contains_p): Same.
11294 (frange::singleton_p): Same.
11295 (frange::internal_singleton_p): Same.
11296 (irange::irange_set): Same.
11297 (irange::irange_set_1bit_anti_range): Same.
11298 (irange::irange_set_anti_range): Same.
11299 (irange::set): Same.
11300 (irange::operator==): Same.
11301 (irange::singleton_p): Same.
11302 (irange::contains_p): Same.
11303 (irange::set_range_from_nonzero_bits): Same.
11304 (DEFINE_INT_RANGE_INSTANCE): Same.
11314 (range_uint128): New.
11315 (range_uchar): New.
11317 (build_range3): Convert to irange wide_int API.
11318 (range_tests_irange3): Same.
11319 (range_tests_int_range_max): Same.
11320 (range_tests_strict_enum): Same.
11321 (range_tests_misc): Same.
11322 (range_tests_nonzero_bits): Same.
11323 (range_tests_nan): Same.
11324 (range_tests_signed_zeros): Same.
11325 * value-range.h (Value_Range::Value_Range): Same.
11326 (irange::set): Same.
11327 (irange::nonzero_p): Same.
11328 (irange::contains_p): Same.
11329 (range_includes_zero_p): Same.
11330 (irange::set_nonzero): Same.
11331 (irange::set_zero): Same.
11332 (contains_zero_p): Same.
11333 (frange::contains_p): Same.
11335 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
11336 (bounds_of_var_in_loop): Same.
11337 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
11339 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11341 * value-range.cc (irange::irange_union): Rename to...
11342 (irange::union_): ...this.
11343 (irange::irange_intersect): Rename to...
11344 (irange::intersect): ...this.
11345 * value-range.h (irange::union_): Delete.
11346 (irange::intersect): Delete.
11348 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11350 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
11352 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11354 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
11356 (compare_ranges): Delete.
11357 (compare_range_with_value): Delete.
11358 (bounds_of_var_in_loop): Tidy up by using ranger API.
11359 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
11360 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
11361 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
11362 strict_overflow_p and only_ranges.
11363 (simplify_using_ranges::legacy_fold_cond): Adjust call to
11364 legacy_fold_cond_overflow.
11365 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
11367 (range_fits_type_p): Rename value_range to irange.
11368 * vr-values.h (range_fits_type_p): Adjust prototype.
11370 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11372 * value-range.cc (irange::irange_set_anti_range): Remove uses of
11373 tree_lower_bound and tree_upper_bound.
11374 (irange::verify_range): Same.
11375 (irange::operator==): Same.
11376 (irange::singleton_p): Same.
11377 * value-range.h (irange::tree_lower_bound): Delete.
11378 (irange::tree_upper_bound): Delete.
11379 (irange::lower_bound): Delete.
11380 (irange::upper_bound): Delete.
11381 (irange::zero_p): Remove uses of tree_lower_bound and
11384 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11386 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
11388 (determine_value_range): Same.
11389 (record_nonwrapping_iv): Same.
11390 (infer_loop_bounds_from_signedness): Same.
11391 (scev_var_range_cant_overflow): Same.
11392 * tree-vrp.cc (operand_less_p): Delete.
11393 * tree-vrp.h (operand_less_p): Delete.
11394 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
11395 (irange::value_inside_range): Delete.
11396 * value-range.h (vrange::kind): Delete.
11397 (irange::num_pairs): Remove check of m_kind.
11398 (irange::min): Delete.
11399 (irange::max): Delete.
11401 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
11403 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
11404 for vrange_storage.
11405 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
11406 (sbr_vector::grow): Same.
11407 (sbr_vector::set_bb_range): Same.
11408 (sbr_vector::get_bb_range): Same.
11409 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
11410 (sbr_sparse_bitmap::set_bb_range): Same.
11411 (sbr_sparse_bitmap::get_bb_range): Same.
11412 (block_range_cache::block_range_cache): Same.
11413 (ssa_global_cache::ssa_global_cache): Same.
11414 (ssa_global_cache::get_global_range): Same.
11415 (ssa_global_cache::set_global_range): Same.
11416 * gimple-range-cache.h: Same.
11417 * gimple-range-edge.cc
11418 (gimple_outgoing_range::gimple_outgoing_range): Same.
11419 (gimple_outgoing_range::switch_edge_range): Same.
11420 (gimple_outgoing_range::calc_switch_ranges): Same.
11421 * gimple-range-edge.h: Same.
11422 * gimple-range-infer.cc
11423 (infer_range_manager::infer_range_manager): Same.
11424 (infer_range_manager::get_nonzero): Same.
11425 (infer_range_manager::maybe_adjust_range): Same.
11426 (infer_range_manager::add_range): Same.
11427 * gimple-range-infer.h: Rename obstack_vrange_allocator to
11429 * tree-core.h (struct irange_storage_slot): Remove.
11430 (struct tree_ssa_name): Remove irange_info and frange_info. Make
11431 range_info a pointer to vrange_storage.
11432 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
11433 (range_info_alloc): Same.
11434 (range_info_free): Same.
11435 (range_info_get_range): Same.
11436 (range_info_set_range): Same.
11437 (get_nonzero_bits): Same.
11438 * value-query.cc (get_ssa_name_range_info): Same.
11439 * value-range-storage.cc (class vrange_internal_alloc): New.
11440 (class vrange_obstack_alloc): New.
11441 (class vrange_ggc_alloc): New.
11442 (vrange_allocator::vrange_allocator): New.
11443 (vrange_allocator::~vrange_allocator): New.
11444 (vrange_storage::alloc_slot): New.
11445 (vrange_allocator::alloc): New.
11446 (vrange_allocator::free): New.
11447 (vrange_allocator::clone): New.
11448 (vrange_allocator::clone_varying): New.
11449 (vrange_allocator::clone_undefined): New.
11450 (vrange_storage::alloc): New.
11451 (vrange_storage::set_vrange): Remove slot argument.
11452 (vrange_storage::get_vrange): Same.
11453 (vrange_storage::fits_p): Same.
11454 (vrange_storage::equal_p): New.
11455 (irange_storage::write_lengths_address): New.
11456 (irange_storage::lengths_address): New.
11457 (irange_storage_slot::alloc_slot): Remove.
11458 (irange_storage::alloc): New.
11459 (irange_storage_slot::irange_storage_slot): Remove.
11460 (irange_storage::irange_storage): New.
11461 (write_wide_int): New.
11462 (irange_storage_slot::set_irange): Remove.
11463 (irange_storage::set_irange): New.
11464 (read_wide_int): New.
11465 (irange_storage_slot::get_irange): Remove.
11466 (irange_storage::get_irange): New.
11467 (irange_storage_slot::size): Remove.
11468 (irange_storage::equal_p): New.
11469 (irange_storage_slot::num_wide_ints_needed): Remove.
11470 (irange_storage::size): New.
11471 (irange_storage_slot::fits_p): Remove.
11472 (irange_storage::fits_p): New.
11473 (irange_storage_slot::dump): Remove.
11474 (irange_storage::dump): New.
11475 (frange_storage_slot::alloc_slot): Remove.
11476 (frange_storage::alloc): New.
11477 (frange_storage_slot::set_frange): Remove.
11478 (frange_storage::set_frange): New.
11479 (frange_storage_slot::get_frange): Remove.
11480 (frange_storage::get_frange): New.
11481 (frange_storage_slot::fits_p): Remove.
11482 (frange_storage::equal_p): New.
11483 (frange_storage::fits_p): New.
11484 (ggc_vrange_allocator): New.
11485 (ggc_alloc_vrange_storage): New.
11486 * value-range-storage.h (class vrange_storage): Rewrite.
11487 (class irange_storage): Rewrite.
11488 (class frange_storage): Rewrite.
11489 (class obstack_vrange_allocator): Remove.
11490 (class ggc_vrange_allocator): Remove.
11491 (vrange_allocator::alloc_vrange): Remove.
11492 (vrange_allocator::alloc_irange): Remove.
11493 (vrange_allocator::alloc_frange): Remove.
11494 (ggc_alloc_vrange_storage): New.
11495 * value-range.h (class irange): Rename vrange_allocator to
11497 (class frange): Same.
11499 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
11501 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
11502 inc to avoid clobbering the carry flag.
11504 2023-04-30 Andrew Pinski <apinski@marvell.com>
11506 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
11507 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
11509 2023-04-30 Andrew Pinski <apinski@marvell.com>
11511 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
11512 Allow some builtin/internal function calls which
11513 are known not to trap/throw.
11514 (phiopt_worker::match_simplify_replacement):
11515 Use name instead of getting the lhs again.
11517 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
11519 * configure: Regenerate.
11520 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
11522 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
11524 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
11525 emit_insn_if_valid_for_reload.
11526 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
11527 to be recognized, also try emitting a parallel that clobbers
11528 TARGET_FLAGS_REGNUM, as applicable.
11530 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
11532 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
11534 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
11535 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
11537 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
11539 * config/stormy16/stormy16.md (any_lshift): New code iterator.
11540 (any_or_plus): Likewise.
11541 (any_rotate): Likewise.
11542 (*<any_lshift>_and_internal): New define_insn_and_split to
11543 recognize a logical shift followed by an AND, and split it
11544 again after reload.
11545 (*swpn): New define_insn matching xstormy16's swpn.
11546 (*swpn_zext): New define_insn recognizing swpn followed by
11547 zero_extendqihi2, i.e. with the high byte set to zero.
11548 (*swpn_sext): Likewise, for swpn followed by cbw.
11549 (*swpn_sext_2): Likewise, for an alternate RTL form.
11550 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
11551 sequence is split in the correct place to recognize the *swpn_zext
11552 followed by any_or_plus (ior, xor or plus) instruction.
11554 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
11557 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
11558 (lm32-*-uclinux*): Likewise.
11560 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
11562 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
11563 for riscv_use_save_libcall.
11564 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
11565 (riscv_compute_frame_info): restructure to decouple stack allocation
11566 for rv32e w/o save-restore.
11568 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
11570 * doc/install.texi: Fix documentation typo
11572 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
11574 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
11575 (u): Add div/udiv cases.
11576 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
11577 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
11579 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
11580 (thead_c906_tune_info): Likewise.
11581 (optimize_size_tune_info): Likewise.
11582 (riscv_use_divmod_expander): New function.
11583 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
11585 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
11587 * config/riscv/bitmanip.md: Added clmulr instruction.
11588 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
11589 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
11591 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
11592 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
11593 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
11594 functions to riscv-cmo.def.
11595 * config/riscv/generic.md: Add clmul to list of instructions
11596 using the generic_imul reservation.
11598 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
11600 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
11602 2023-04-28 Andrew Pinski <apinski@marvell.com>
11604 PR tree-optimization/100958
11605 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
11606 (pass_phiopt::execute): Don't call two_value_replacement.
11607 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
11608 handle what two_value_replacement did.
11610 2023-04-28 Andrew Pinski <apinski@marvell.com>
11612 * match.pd: Add patterns for
11613 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
11615 2023-04-28 Andrew Pinski <apinski@marvell.com>
11617 * match.pd: Factor out the deciding the min/max from
11618 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
11620 * fold-const.cc (minmax_from_comparison): this new function.
11621 * fold-const.h (minmax_from_comparison): New prototype.
11623 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
11625 PR rtl-optimization/109476
11626 * lower-subreg.cc: Include explow.h for force_reg.
11627 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
11628 If decomposing a suitable LSHIFTRT and we're not splitting
11629 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
11630 instead of setting a high part SUBREG to zero, which helps combine.
11631 (decompose_multiword_subregs): Update call to resolve_shift_zext.
11633 2023-04-28 Richard Biener <rguenther@suse.de>
11635 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
11637 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
11638 gather-scatter info and cost emulated scatters accordingly.
11639 (get_load_store_type): Support emulated scatters.
11640 (vectorizable_store): Likewise. Emulate them by extracting
11641 scalar offsets and data, doing scalar stores.
11643 2023-04-28 Richard Biener <rguenther@suse.de>
11645 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
11646 Tame down element extracts and scalar loads for gather/scatter
11647 similar to elementwise strided accesses.
11649 2023-04-28 Pan Li <pan2.li@intel.com>
11650 kito-cheng <kito.cheng@sifive.com>
11652 * config/riscv/vector.md: Add new define split to perform
11653 the simplification.
11655 2023-04-28 Richard Biener <rguenther@suse.de>
11658 * ipa-param-manipulation.cc
11659 (ipa_param_body_adjustments::modify_expression): Allow
11660 conversion of a register to a non-register type. Elide
11661 conversions inside BIT_FIELD_REFs.
11663 2023-04-28 Richard Biener <rguenther@suse.de>
11665 PR tree-optimization/109644
11666 * tree-cfg.cc (verify_types_in_gimple_reference): Check
11667 register constraints on the outermost VIEW_CONVERT_EXPR
11668 only. Do not allow register or invariant bases on
11669 multi-level or possibly variable index handled components.
11671 2023-04-28 Richard Biener <rguenther@suse.de>
11673 * gimplify.cc (gimplify_compound_lval): When there's a
11674 non-register type produced by one of the handled component
11675 operations make sure we get a non-register base.
11677 2023-04-28 Richard Biener <rguenther@suse.de>
11679 PR tree-optimization/108752
11680 * tree-vect-generic.cc (build_replicated_const): Rename
11681 to build_replicated_int_cst and move to tree.{h,cc}.
11682 (do_plus_minus): Adjust.
11683 (do_negate): Likewise.
11684 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
11685 arithmetic vector operations in lowered form.
11686 * tree.h (build_replicated_int_cst): Declare.
11687 * tree.cc (build_replicated_int_cst): Moved from
11688 tree-vect-generic.cc build_replicated_const.
11690 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11693 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
11694 (aarch64_rbit<mode><vczle><vczbe>): ... This.
11695 (neg<mode>2): Rename to...
11696 (neg<mode>2<vczle><vczbe>): ... This.
11697 (abs<mode>2): Rename to...
11698 (abs<mode>2<vczle><vczbe>): ... This.
11699 (aarch64_abs<mode>): Rename to...
11700 (aarch64_abs<mode><vczle><vczbe>): ... This.
11701 (one_cmpl<mode>2): Rename to...
11702 (one_cmpl<mode>2<vczle><vczbe>): ... This.
11703 (clrsb<mode>2): Rename to...
11704 (clrsb<mode>2<vczle><vczbe>): ... This.
11705 (clz<mode>2): Rename to...
11706 (clz<mode>2<vczle><vczbe>): ... This.
11707 (popcount<mode>2): Rename to...
11708 (popcount<mode>2<vczle><vczbe>): ... This.
11710 2023-04-28 Jakub Jelinek <jakub@redhat.com>
11712 * gimple-range-op.cc (class cfn_sqrt): New type.
11713 (op_cfn_sqrt): New variable.
11714 (gimple_range_op_handler::maybe_builtin_call): Handle
11715 CASE_CFN_SQRT{,_FN}.
11717 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
11718 Jakub Jelinek <jakub@redhat.com>
11720 * value-range.h (frange_nextafter): Declare.
11721 * gimple-range-op.cc (class cfn_sincos): New.
11722 (op_cfn_sin, op_cfn_cos): New variables.
11723 (gimple_range_op_handler::maybe_builtin_call): Handle
11724 CASE_CFN_{SIN,COS}{,_FN}.
11726 2023-04-28 Jakub Jelinek <jakub@redhat.com>
11728 * target.def (libm_function_max_error): New target hook.
11729 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
11730 * doc/tm.texi: Regenerated.
11731 * targhooks.h (default_libm_function_max_error,
11732 glibc_linux_libm_function_max_error): Declare.
11733 * targhooks.cc: Include case-cfn-macros.h.
11734 (default_libm_function_max_error,
11735 glibc_linux_libm_function_max_error): New functions.
11736 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11737 * config/linux-protos.h (linux_libm_function_max_error): Declare.
11738 * config/linux.cc: Include target.h and targhooks.h.
11739 (linux_libm_function_max_error): New function.
11740 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
11741 (arc_libm_function_max_error): New function.
11742 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11743 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
11744 (ix86_libm_function_max_error): New function.
11745 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11746 * config/rs6000/rs6000-protos.h
11747 (rs6000_linux_libm_function_max_error): Declare.
11748 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
11749 and case-cfn-macros.h.
11750 (rs6000_linux_libm_function_max_error): New function.
11751 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11752 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11753 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
11754 (or1k_libm_function_max_error): New function.
11755 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
11757 2023-04-28 Alexandre Oliva <oliva@adacore.com>
11759 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
11760 Move detach value calls...
11761 (pass_harden_conditional_branches::execute): ... here.
11762 (pass_harden_compares::execute): Detach values before
11765 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
11767 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
11768 (cml<addsub_as><mode>4): Likewise.
11769 (vec_addsub<mode>3): Likewise.
11770 (cadd<rot><mode>3): Likewise.
11771 (vec_fmaddsub<mode>4): Likewise.
11772 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
11774 2023-04-27 Andrew Pinski <apinski@marvell.com>
11776 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
11777 up to 2 min/max expressions in the sequence/match code.
11779 2023-04-27 Andrew Pinski <apinski@marvell.com>
11781 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
11783 * tree-eh.cc (operation_could_trap_helper_p): Treate
11784 MIN_EXPR/MAX_EXPR similar as other comparisons.
11786 2023-04-27 Andrew Pinski <apinski@marvell.com>
11788 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
11790 (cond_if_else_store_replacement): Likewise.
11791 (get_non_trapping): Likewise.
11792 (store_elim_worker): Move into ...
11793 (pass_cselim::execute): This.
11795 2023-04-27 Andrew Pinski <apinski@marvell.com>
11797 * tree-ssa-phiopt.cc (two_value_replacement): Remove
11799 (match_simplify_replacement): Likewise.
11800 (factor_out_conditional_conversion): Likewise.
11801 (value_replacement): Likewise.
11802 (minmax_replacement): Likewise.
11803 (spaceship_replacement): Likewise.
11804 (cond_removal_in_builtin_zero_pattern): Likewise.
11805 (hoist_adjacent_loads): Likewise.
11806 (tree_ssa_phiopt_worker): Move into ...
11807 (pass_phiopt::execute): this.
11809 2023-04-27 Andrew Pinski <apinski@marvell.com>
11811 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
11812 do_store_elim argument and split that part out to ...
11813 (store_elim_worker): This new function.
11814 (pass_cselim::execute): Call store_elim_worker.
11815 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
11817 2023-04-27 Jan Hubicka <jh@suse.cz>
11819 * cfgloopmanip.h (unloop_loops): Export.
11820 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
11821 that no longer loop.
11822 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
11823 vectors of loops to unloop.
11824 (canonicalize_induction_variables): Free vectors here.
11825 (tree_unroll_loops_completely): Free vectors here.
11827 2023-04-27 Richard Biener <rguenther@suse.de>
11829 PR tree-optimization/109170
11830 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
11831 Handle __builtin_expect and similar via cfn_pass_through_arg1
11832 and inspecting the calls fnspec.
11833 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
11834 and BUILT_IN_EXPECT_WITH_PROBABILITY.
11836 2023-04-27 Alexandre Oliva <oliva@adacore.com>
11838 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
11840 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
11842 PR tree-optimization/109639
11843 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
11844 (propagate_vr_across_jump_function): Same.
11845 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
11846 * ipa-prop.h (ipa_range_set_and_normalize): New.
11847 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
11849 2023-04-27 Richard Biener <rguenther@suse.de>
11851 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
11852 create a CTOR operand in the result when simplifying GIMPLE.
11854 2023-04-27 Richard Biener <rguenther@suse.de>
11856 * gimplify.cc (gimplify_compound_lval): When the base
11857 gimplified to a register make sure to split up chains
11860 2023-04-27 Richard Biener <rguenther@suse.de>
11863 * ipa-param-manipulation.h
11864 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
11866 * ipa-param-manipulation.cc
11867 (ipa_param_body_adjustments::modify_expression): Likewise.
11868 When we need a conversion and the replacement is a register
11869 split the conversion out.
11870 (ipa_param_body_adjustments::modify_assignment): Pass
11871 extra_stmts to RHS modify_expression.
11873 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
11875 * doc/extend.texi (Zero Length): Describe example.
11877 2023-04-27 Richard Biener <rguenther@suse.de>
11879 PR tree-optimization/109594
11880 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
11881 what we rewrite to a register based on the above.
11883 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
11885 * config/riscv/riscv.cc: Fix whitespace.
11886 * config/riscv/sync.md: Fix whitespace.
11888 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11890 PR tree-optimization/108697
11891 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
11892 not clear the vector on an out of range query.
11893 (ssa_cache::dump): Use dump_range_query instead of get_range.
11894 (ssa_cache::dump_range_query): New.
11895 (ssa_lazy_cache::dump_range_query): New.
11896 (ssa_lazy_cache::set_range): New.
11897 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
11898 (class ssa_lazy_cache): New.
11899 (ssa_lazy_cache::ssa_lazy_cache): New.
11900 (ssa_lazy_cache::~ssa_lazy_cache): New.
11901 (ssa_lazy_cache::get_range): New.
11902 (ssa_lazy_cache::clear_range): New.
11903 (ssa_lazy_cache::clear): New.
11904 (ssa_lazy_cache::dump): New.
11905 * gimple-range-path.cc (path_range_query::path_range_query): Do
11906 not allocate a ssa_cache object nor has_cache bitmap.
11907 (path_range_query::~path_range_query): Do not free objects.
11908 (path_range_query::clear_cache): Remove.
11909 (path_range_query::get_cache): Adjust.
11910 (path_range_query::set_cache): Remove.
11911 (path_range_query::dump): Don't call through a pointer.
11912 (path_range_query::internal_range_of_expr): Set cache directly.
11913 (path_range_query::reset_path): Clear cache directly.
11914 (path_range_query::ssa_range_in_phi): Fold with globals only.
11915 (path_range_query::compute_ranges_in_phis): Simply set range.
11916 (path_range_query::compute_ranges_in_block): Call cache directly.
11917 * gimple-range-path.h (class path_range_query): Replace bitmap
11918 and cache pointer with lazy cache object.
11919 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
11921 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11923 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
11924 (ssa_cache::~ssa_cache): Rename.
11925 (ssa_cache::has_range): New.
11926 (ssa_cache::get_range): Rename.
11927 (ssa_cache::set_range): Rename.
11928 (ssa_cache::clear_range): Rename.
11929 (ssa_cache::clear): Rename.
11930 (ssa_cache::dump): Rename and use get_range.
11931 (ranger_cache::get_global_range): Use get_range and set_range.
11932 (ranger_cache::range_of_def): Use get_range.
11933 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
11934 (class ranger_cache): Use ssa_cache.
11935 * gimple-range-path.cc (path_range_query::path_range_query): Use
11937 (path_range_query::get_cache): Use get_range.
11938 (path_range_query::set_cache): Use set_range.
11939 * gimple-range-path.h (class path_range_query): Use ssa_cache.
11940 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
11941 (assume_query::range_of_expr): Use get_range.
11942 (assume_query::assume_query): Use set_range.
11943 (assume_query::calculate_op): Use get_range and set_range.
11944 * gimple-range.h (class assume_query): Use ssa_cache.
11946 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11948 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
11949 and local to optionally zero memory.
11950 (br_vector::grow): Only zero memory if flag is set.
11951 (class sbr_lazy_vector): New.
11952 (sbr_lazy_vector::sbr_lazy_vector): New.
11953 (sbr_lazy_vector::set_bb_range): New.
11954 (sbr_lazy_vector::get_bb_range): New.
11955 (sbr_lazy_vector::bb_range_p): New.
11956 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
11957 * gimple-range-gori.cc (gori_map::calculate_gori): Use
11958 param_vrp_switch_limit.
11959 (gori_compute::gori_compute): Use param_vrp_switch_limit.
11960 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
11961 (vrp_switch_limit): Rename from evrp_switch_limit.
11962 (vrp_vector_threshold): New.
11964 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11966 * value-relation.cc (dom_oracle::query_relation): Check early for lack
11968 * value-relation.h (equiv_oracle::has_equiv_p): New.
11970 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
11972 PR tree-optimization/109417
11973 * gimple-range-gori.cc (range_def_chain::register_dependency):
11974 Save the ssa version number, not the pointer.
11975 (gori_compute::may_recompute_p): No need to check if a dependency
11976 is in the free list.
11977 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
11978 fields to be unsigned int instead of trees.
11979 (ange_def_chain::depend1): Adjust.
11980 (ange_def_chain::depend2): Adjust.
11981 * gimple-range.h: Include "ssa.h" to inline ssa_name().
11983 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
11985 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
11986 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
11987 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
11989 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
11992 * config/riscv/riscv-protos.h: Add helper function stubs.
11993 * config/riscv/riscv.cc: Add helper functions for subword masking.
11994 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
11995 -mno-inline-atomics.
11996 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
11997 fetch_and_nand, CAS, and exchange ops.
11998 * doc/invoke.texi: Add blurb regarding new command-line flags
11999 -minline-atomics and -mno-inline-atomics.
12001 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12003 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
12004 Reimplement using standard RTL codes instead of unspec.
12005 (aarch64_rshrn2<mode>_insn_be): Likewise.
12006 (aarch64_rshrn2<mode>): Adjust for the above.
12007 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
12009 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12011 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
12012 with standard RTL codes instead of an UNSPEC.
12013 (aarch64_rshrn<mode>_insn_be): Likewise.
12014 (aarch64_rshrn<mode>): Adjust for the above.
12015 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
12017 2023-04-26 Pan Li <pan2.li@intel.com>
12018 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12020 * config/riscv/riscv.cc (riscv_classify_address): Allow
12021 const0_rtx for the RVV load/store.
12023 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12025 * range-op.cc (range_op_cast_tests): Remove legacy support.
12026 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
12027 * value-range.cc (irange::operator=): Same.
12028 (get_legacy_range): Same.
12029 (irange::copy_legacy_to_multi_range): Delete.
12030 (irange::copy_to_legacy): Delete.
12031 (irange::irange_set_anti_range): Delete.
12032 (irange::set): Remove legacy support.
12033 (irange::verify_range): Same.
12034 (irange::legacy_lower_bound): Delete.
12035 (irange::legacy_upper_bound): Delete.
12036 (irange::legacy_equal_p): Delete.
12037 (irange::operator==): Remove legacy support.
12038 (irange::singleton_p): Same.
12039 (irange::value_inside_range): Same.
12040 (irange::contains_p): Same.
12041 (intersect_ranges): Delete.
12042 (irange::legacy_intersect): Delete.
12043 (union_ranges): Delete.
12044 (irange::legacy_union): Delete.
12045 (irange::legacy_verbose_union_): Delete.
12046 (irange::legacy_verbose_intersect): Delete.
12047 (irange::irange_union): Remove legacy support.
12048 (irange::irange_intersect): Same.
12049 (irange::intersect): Same.
12050 (irange::invert): Same.
12051 (ranges_from_anti_range): Delete.
12052 (gt_pch_nx): Adjust for legacy removal.
12054 (range_tests_legacy): Delete.
12055 (range_tests_misc): Adjust for legacy removal.
12056 (range_tests): Same.
12057 * value-range.h (class irange): Same.
12058 (irange::legacy_mode_p): Delete.
12059 (ranges_from_anti_range): Delete.
12060 (irange::nonzero_p): Adjust for legacy removal.
12061 (irange::lower_bound): Same.
12062 (irange::upper_bound): Same.
12063 (irange::union_): Same.
12064 (irange::intersect): Same.
12065 (irange::set_nonzero): Same.
12066 (irange::set_zero): Same.
12067 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
12069 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12071 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
12072 of range_has_numeric_bounds_p with irange API.
12073 (range_has_numeric_bounds_p): Delete.
12074 * value-range.h (range_has_numeric_bounds_p): Delete.
12076 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12078 * tree-data-ref.cc (compute_distributive_range): Replace uses of
12079 range_int_cst_p with irange API.
12080 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
12081 * tree-vrp.h (range_int_cst_p): Delete.
12082 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
12083 range_int_cst_p with irange API.
12084 (vr_set_zero_nonzero_bits): Same.
12085 (range_fits_type_p): Same.
12086 (simplify_using_ranges::simplify_casted_cond): Same.
12087 * tree-vrp.cc (range_int_cst_p): Remove.
12089 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12091 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
12093 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12095 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
12096 API uses to new API.
12097 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
12098 * internal-fn.cc (get_min_precision): Same.
12100 * tree-affine.cc (expr_to_aff_combination): Same.
12101 * tree-data-ref.cc (dr_step_indicator): Same.
12102 * tree-dfa.cc (get_ref_base_and_extent): Same.
12103 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
12104 * tree-ssa-phiopt.cc (two_value_replacement): Same.
12105 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
12106 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
12107 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
12108 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
12109 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
12110 * tree.cc (get_range_pos_neg): Same.
12112 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12114 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
12115 vrange::dump instead of ad-hoc dumper.
12116 * tree-ssa-strlen.cc (dump_strlen_info): Same.
12117 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
12120 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12122 * range-op.cc (operator_cast::op1_range): Use
12123 create_possibly_reversed_range.
12124 (operator_bitwise_and::simple_op1_range_solver): Same.
12125 * value-range.cc (swap_out_of_order_endpoints): Delete.
12126 (irange::set): Remove call to swap_out_of_order_endpoints.
12128 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12130 * builtins.cc (determine_block_size): Convert use of legacy API to
12132 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
12133 (array_bounds_checker::check_array_ref): Same.
12134 * gimple-ssa-warn-restrict.cc
12135 (builtin_memref::extend_offset_range): Same.
12136 * ipa-cp.cc (ipcp_store_vr_results): Same.
12137 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
12138 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
12139 (ipa_write_jump_function): Same.
12140 * pointer-query.cc (get_size_range): Same.
12141 * tree-data-ref.cc (split_constant_offset): Same.
12142 * tree-ssa-strlen.cc (get_range): Same.
12143 (maybe_diag_stxncpy_trunc): Same.
12144 (strlen_pass::get_len_or_size): Same.
12145 (strlen_pass::count_nonzero_bytes_addr): Same.
12146 * tree-vect-patterns.cc (vect_get_range_info): Same.
12147 * value-range.cc (irange::maybe_anti_range): Remove.
12148 (get_legacy_range): New.
12149 (irange::copy_to_legacy): Use get_legacy_range.
12150 (ranges_from_anti_range): Same.
12151 * value-range.h (class irange): Remove maybe_anti_range.
12152 (get_legacy_range): New.
12153 * vr-values.cc (check_for_binary_op_overflow): Convert use of
12154 legacy API to get_legacy_range.
12155 (compare_ranges): Same.
12156 (compare_range_with_value): Same.
12157 (bounds_of_var_in_loop): Same.
12158 (find_case_label_ranges): Same.
12159 (simplify_using_ranges::simplify_switch_using_ranges): Same.
12161 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12163 * value-range-pretty-print.cc (vrange_printer::visit): Remove
12165 * value-range.cc (irange::constant_p): Remove.
12166 (irange::get_nonzero_bits_from_range): Remove constant_p use.
12167 * value-range.h (class irange): Remove constant_p.
12168 (irange::num_pairs): Remove constant_p use.
12170 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12172 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
12174 (irange::set): Same.
12175 (irange::legacy_lower_bound): Same.
12176 (irange::legacy_upper_bound): Same.
12177 (irange::contains_p): Same.
12178 (range_tests_legacy): Same.
12179 (irange::normalize_addresses): Remove.
12180 (irange::normalize_symbolics): Remove.
12181 (irange::symbolic_p): Remove.
12182 * value-range.h (class irange): Remove symbolic_p,
12183 normalize_symbolics, and normalize_addresses.
12184 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
12185 Remove symbolics support.
12187 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12189 * value-range.cc (irange::may_contain_p): Remove.
12190 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
12191 usage with contains_p.
12192 * vr-values.cc (compare_range_with_value): Same.
12194 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12196 * tree-vrp.cc (supported_types_p): Remove.
12197 (defined_ranges_p): Remove.
12198 (range_fold_binary_expr): Remove.
12199 (range_fold_unary_expr): Remove.
12200 * tree-vrp.h (range_fold_unary_expr): Remove.
12201 (range_fold_binary_expr): Remove.
12203 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12205 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
12206 (ipa_value_range_from_jfunc): Same.
12207 (propagate_vr_across_jump_function): Same.
12208 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
12209 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
12210 * vr-values.cc (bounds_of_var_in_loop): Same.
12212 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12214 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
12215 Add irange argument.
12216 (check_out_of_bounds_and_warn): Remove check for vr.
12217 (array_bounds_checker::check_array_ref): Remove pointer qualifier
12218 for vr and adjust accordingly.
12219 * gimple-array-bounds.h (get_value_range): Add irange argument.
12220 * value-query.cc (class equiv_allocator): Delete.
12221 (range_query::get_value_range): Delete.
12222 (range_query::range_query): Remove allocator access.
12223 (range_query::~range_query): Same.
12224 * value-query.h (get_value_range): Delete.
12226 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
12227 call to get_value_range.
12228 (check_for_binary_op_overflow): Same.
12229 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
12230 (simplify_using_ranges::simplify_abs_using_ranges): Same.
12231 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
12232 (simplify_using_ranges::simplify_casted_cond): Same.
12233 (simplify_using_ranges::simplify_switch_using_ranges): Same.
12234 (simplify_using_ranges::two_valued_val_range_p): Same.
12236 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12239 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
12241 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
12242 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
12243 (simplify_using_ranges::legacy_fold_cond): ...this.
12244 (simplify_using_ranges::fold_cond): Rename
12245 vrp_evaluate_conditional_warnv_with_ops to
12246 legacy_fold_cond_overflow.
12247 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
12248 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
12249 legacy_fold_cond_overflow respectively.
12251 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
12253 * vr-values.cc (get_vr_for_comparison): Remove.
12254 (compare_name_with_value): Same.
12255 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
12256 compare_name_with_value.
12257 * vr-values.h: Remove compare_name_with_value.
12258 Remove get_vr_for_comparison.
12260 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
12262 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
12263 (bswapsi2): New define_insn.
12264 (swaphi): New define_insn to exchange two registers (swpw).
12265 (define_peephole2): Recognize exchange of registers as swaphi.
12267 2023-04-26 Richard Biener <rguenther@suse.de>
12269 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
12271 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
12272 * predict.cc (apply_return_prediction): Likewise.
12273 * sese.cc (set_ifsese_condition): Likewise. Simplify.
12274 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
12275 (make_edges_bb): Likewise.
12276 (make_cond_expr_edges): Likewise.
12277 (end_recording_case_labels): Likewise.
12278 (make_gimple_asm_edges): Likewise.
12279 (cleanup_dead_labels): Likewise.
12280 (group_case_labels): Likewise.
12281 (gimple_can_merge_blocks_p): Likewise.
12282 (gimple_merge_blocks): Likewise.
12283 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
12284 (gimple_duplicate_sese_tail): Avoid last_stmt.
12285 (find_loop_dist_alias): Likewise.
12286 (gimple_block_ends_with_condjump_p): Likewise.
12287 (gimple_purge_dead_eh_edges): Likewise.
12288 (gimple_purge_dead_abnormal_call_edges): Likewise.
12289 (pass_warn_function_return::execute): Likewise.
12290 (execute_fixup_cfg): Likewise.
12291 * tree-eh.cc (redirect_eh_edge_1): Likewise.
12292 (pass_lower_resx::execute): Likewise.
12293 (pass_lower_eh_dispatch::execute): Likewise.
12294 (cleanup_empty_eh): Likewise.
12295 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
12296 (predicate_bbs): Likewise.
12297 (ifcvt_split_critical_edges): Likewise.
12298 * tree-loop-distribution.cc (create_edge_for_control_dependence):
12300 (loop_distribution::transform_reduction_loop): Likewise.
12301 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
12302 (try_transform_to_exit_first_loop_alt): Likewise.
12303 (transform_to_exit_first_loop): Likewise.
12304 (create_parallel_loop): Likewise.
12305 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
12306 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
12307 (eliminate_unnecessary_stmts): Likewise.
12309 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
12311 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
12312 (pass_tree_ifcombine::execute): Likewise.
12313 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
12314 (should_duplicate_loop_header_p): Likewise.
12315 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
12316 (tree_estimate_loop_size): Likewise.
12317 (try_unroll_loop_completely): Likewise.
12318 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
12319 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
12320 (canonicalize_loop_ivs): Likewise.
12321 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
12322 (bound_difference): Likewise.
12323 (number_of_iterations_popcount): Likewise.
12324 (number_of_iterations_cltz): Likewise.
12325 (number_of_iterations_cltz_complement): Likewise.
12326 (simplify_using_initial_conditions): Likewise.
12327 (number_of_iterations_exit_assumptions): Likewise.
12328 (loop_niter_by_eval): Likewise.
12329 (estimate_numbers_of_iterations): Likewise.
12331 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12333 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
12335 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
12338 * config/rs6000/rs6000-builtins.def
12339 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
12340 __builtin_vsx_scalar_cmp_exp_qp_lt,
12341 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
12344 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
12347 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
12348 easy_vector_constant with const_vector_each_byte_same, add
12349 handlings in preparation for !easy_vector_constant, and update
12350 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
12351 * config/rs6000/predicates.md (const_vector_each_byte_same): New
12354 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12356 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
12357 (*pred_ltge<mode>_merge_tie_mask): Ditto.
12358 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
12359 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
12360 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
12361 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
12362 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
12364 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12366 * config/riscv/vector.md: Fix redundant vmv1r.v.
12368 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12370 * config/riscv/vector.md: Fix RA constraint.
12372 2023-04-26 Pan Li <pan2.li@intel.com>
12375 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
12376 check for vn_reference equal.
12378 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12380 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
12381 auto-vectorization preference.
12382 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
12383 auto-vectorization.
12384 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
12386 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
12388 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
12389 and bclridisi_nottwobits patterns.
12390 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
12391 predicate to avoid splitting arith constants.
12392 (const_nottwobits_not_arith_operand): New predicate.
12394 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
12396 * recog.cc (peep2_attempt, peep2_update_life): Correct
12397 head-comment description of parameter match_len.
12399 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
12401 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
12402 riscv_split_symbol() drop in_splitter arg.
12403 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
12404 riscv_split_symbol() drop in_splitter arg.
12405 riscv_force_temporary() drop in_splitter arg.
12406 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
12407 riscv_split_symbol() drop in_splitter arg.
12409 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
12411 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
12412 superfluous debug temporaries for single GIMPLE assignments.
12414 2023-04-25 Richard Biener <rguenther@suse.de>
12416 PR tree-optimization/109609
12417 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
12419 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
12420 the size given by arg_max_access_size_given_by_arg_p as
12421 maximum, not exact, size.
12423 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12426 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
12427 (orn<mode>3<vczle><vczbe>): ... This.
12428 (bic<mode>3): Rename to...
12429 (bic<mode>3<vczle><vczbe>): ... This.
12430 (<su><maxmin><mode>3): Rename to...
12431 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
12433 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12435 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
12436 * config/aarch64/iterators.md (VQDIV): New mode iterator.
12437 (vnx2di): New mode attribute.
12439 2023-04-25 Richard Biener <rguenther@suse.de>
12441 PR rtl-optimization/109585
12442 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
12444 2023-04-25 Jakub Jelinek <jakub@redhat.com>
12447 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
12448 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
12449 is larger than signed int maximum.
12451 2023-04-25 Martin Liska <mliska@suse.cz>
12453 * doc/gcov.texi: Document the new "calls" field and document
12454 the API bump. Mention also "block_ids" for lines.
12455 * gcov.cc (output_intermediate_json_line): Output info about
12456 calls and extend branches as well.
12457 (generate_results): Bump version to 2.
12458 (output_line_details): Use block ID instead of a non-sensual
12461 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
12463 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
12464 length attribute for the first (memory operand) alternative.
12466 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
12468 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
12469 * config/aarch64/constraints.md: Make "Umn" relaxed memory
12471 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
12473 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
12475 * value-range.cc (frange::set): Adjust constructor.
12476 * value-range.h (nan_state::nan_state): Replace default
12477 constructor with one taking an argument.
12479 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
12481 * ipa-cp.cc (ipa_range_contains_p): New.
12482 (decide_whether_version_node): Use it.
12484 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12486 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
12487 simplify two successive VEC_PERM_EXPRs with same VLA mask,
12488 where mask chooses elements in reverse order.
12490 2023-04-24 Andrew Pinski <apinski@marvell.com>
12492 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
12493 and support diamond shaped basic block form.
12494 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
12496 2023-04-24 Andrew Pinski <apinski@marvell.com>
12498 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
12499 Instead of calling last_and_only_stmt, look for the last statement
12502 2023-04-24 Andrew Pinski <apinski@marvell.com>
12504 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
12506 (match_simplify_replacement): Call
12507 empty_bb_or_one_feeding_into_p instead of doing it inline.
12509 2023-04-24 Andrew Pinski <apinski@marvell.com>
12511 PR tree-optimization/68894
12512 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
12513 continue for the do_hoist_loads diamond case.
12515 2023-04-24 Andrew Pinski <apinski@marvell.com>
12517 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
12518 code for better code readability.
12520 2023-04-24 Andrew Pinski <apinski@marvell.com>
12522 PR tree-optimization/109604
12523 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
12524 diamond form check from ...
12525 (minmax_replacement): Here.
12527 2023-04-24 Patrick Palka <ppalka@redhat.com>
12529 * tree.cc (strip_array_types): Don't define here.
12530 (is_typedef_decl): Don't define here.
12531 (typedef_variant_p): Don't define here.
12532 * tree.h (strip_array_types): Define here.
12533 (is_typedef_decl): Define here.
12534 (typedef_variant_p): Define here.
12536 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
12538 * doc/generic.texi (OpenMP): Add != to allowed
12539 conditions and state that vars can be unsigned.
12540 * tree.def (OMP_FOR): Likewise.
12542 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12544 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
12546 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12548 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
12549 Remove explicit Solaris 11 references.
12551 (Options specification, --with-gnu-as): as and gas always differ
12553 Remove /usr/ccs/bin reference.
12554 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
12555 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
12556 (*-*-solaris2*): ... here.
12557 Update bundled GCC versions.
12558 Don't refer to pre-built binaries.
12559 Remove /bin/sh warning.
12560 Update assembler, linker recommendations.
12561 Document GNAT bootstrap compiler.
12562 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
12563 (sparc64-*-solaris2*): Move content...
12564 (sparcv9-*-solaris2*): ...here.
12565 Add GDC for 64-bit bootstrap compilers.
12567 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12570 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
12572 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
12575 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12577 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
12578 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
12579 (aarch64_<su>abal2<mode>): New define_expand.
12580 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
12581 (aarch64_rtx_costs): Handle ABD rtxes.
12582 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
12583 * config/aarch64/iterators.md (ABAL2): Delete.
12584 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
12586 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12588 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
12589 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
12590 (<sur>sadv16qi): Rename to...
12591 (<su>sadv16qi): ... This. Adjust for the above.
12592 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
12593 (<su>sad<vsi2qi>): ... This. Adjust for the above.
12594 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
12595 * config/aarch64/iterators.md (ABAL): Delete.
12596 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
12598 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12600 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
12601 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
12602 (aarch64_<su>abdl2<mode>): New define_expand.
12603 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
12604 * config/aarch64/iterators.md (ABDL2): Delete.
12605 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
12607 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12609 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
12610 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
12612 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
12613 * config/aarch64/iterators.md (ABDL): Delete.
12614 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
12616 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12618 * config/aarch64/aarch64-simd.md
12619 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
12621 2023-04-24 Richard Biener <rguenther@suse.de>
12623 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
12625 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
12627 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
12628 (set_switch_stmt_execution_predicate): Likewise.
12629 (phi_result_unknown_predicate): Likewise.
12630 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
12631 (ipa_analyze_indirect_call_uses): Likewise.
12632 * predict.cc (predict_iv_comparison): Likewise.
12633 (predict_extra_loop_exits): Likewise.
12634 (predict_loops): Likewise.
12635 (tree_predict_by_opcode): Likewise.
12636 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
12638 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
12639 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
12640 (replace_phi_edge_with_variable): Likewise.
12641 (two_value_replacement): Likewise.
12642 (value_replacement): Likewise.
12643 (minmax_replacement): Likewise.
12644 (spaceship_replacement): Likewise.
12645 (cond_removal_in_builtin_zero_pattern): Likewise.
12646 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
12647 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
12648 (vn_phi_lookup): Likewise.
12649 (vn_phi_insert): Likewise.
12650 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
12651 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
12653 (back_threader_profitability::possibly_profitable_path_p):
12655 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
12657 * tree-switch-conversion.cc (pass_convert_switch::execute):
12659 (pass_lower_switch<O0>::execute): Likewise.
12660 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
12661 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
12662 * tree-vect-slp.cc (vect_slp_function): Likewise.
12663 * tree-vect-stmts.cc (cfun_returns): Likewise.
12664 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
12665 (vect_loop_dist_alias_call): Likewise.
12667 2023-04-24 Richard Biener <rguenther@suse.de>
12669 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
12671 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12673 * config/riscv/riscv-vsetvl.cc
12674 (vector_infos_manager::all_avail_in_compatible_p): New function.
12675 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
12676 * config/riscv/riscv-vsetvl.h: New function.
12678 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12680 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
12681 comment for cleanup_insns.
12683 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12685 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
12686 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
12687 with the fault first load property.
12689 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12691 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
12692 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
12694 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12697 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
12698 (aarch64_addp<mode><vczle><vczbe>): ... This.
12700 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12702 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
12703 provide reasonable values for common arithmetic operations and
12704 immediate operands (in several machine modes).
12706 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12708 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
12709 format specifier to output high_part register name of SImode reg.
12710 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
12711 (zero_extendqihi2): Fix lengths, consistent formatting and add
12712 "and Rx,#255" alternative, for documentation purposes.
12713 (zero_extendhisi2): New define_insn.
12715 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
12717 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
12718 SImode shifts by two by performing a single bit SImode shift twice.
12720 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
12722 PR tree-optimization/109593
12723 * value-range.cc (frange::operator==): Handle NANs.
12725 2023-04-23 liuhongt <hongtao.liu@intel.com>
12727 PR rtl-optimization/108707
12728 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
12729 GENERAL_REGS when preferred reg_class is not known.
12731 2023-04-22 Andrew Pinski <apinski@marvell.com>
12733 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
12734 Change the code around slightly to move diamond
12735 handling for do_store_elim/do_hoist_loads out of
12738 2023-04-22 Andrew Pinski <apinski@marvell.com>
12740 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
12741 Remove check on empty_block_p.
12743 2023-04-22 Jakub Jelinek <jakub@redhat.com>
12745 PR bootstrap/109589
12746 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
12747 * realmpfr.h (class auto_mpfr): Likewise.
12749 2023-04-22 Jakub Jelinek <jakub@redhat.com>
12751 PR tree-optimization/109583
12752 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
12753 if vec_mode is not VECTOR_MODE_P.
12755 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
12756 Ondrej Kubanek <kubanek0ondrej@gmail.com>
12758 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
12759 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
12760 loop profile and bounds after header duplication.
12761 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
12762 Break out from try_peel_loop; fix handling of 0 iterations.
12763 (try_peel_loop): Use adjust_loop_info_after_peeling.
12765 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
12767 PR tree-optimization/109546
12768 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
12769 not fold conditions with ADDR_EXPR early.
12771 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12773 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
12774 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
12776 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
12777 (*aarch64_<optab><mode>3_zero): Define.
12778 (*aarch64_<optab><mode>3_cssc): Likewise.
12779 * config/aarch64/iterators.md (maxminand): New code attribute.
12781 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12784 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
12785 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
12787 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
12788 (aarch64_override_options_internal): Handle the above.
12789 (aarch64_output_load_tp): New function.
12790 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
12791 aarch64_output_load_tp.
12792 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
12793 (mtp=): New option.
12794 * doc/invoke.texi (AArch64 Options): Document -mtp=.
12796 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12799 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
12800 (add_vec_concat_subst_be): Likewise.
12803 (add<mode>3): Rename to...
12804 (add<mode>3<vczle><vczbe>): ... This.
12805 (sub<mode>3): Rename to...
12806 (sub<mode>3<vczle><vczbe>): ... This.
12807 (mul<mode>3): Rename to...
12808 (mul<mode>3<vczle><vczbe>): ... This.
12809 (and<mode>3): Rename to...
12810 (and<mode>3<vczle><vczbe>): ... This.
12811 (ior<mode>3): Rename to...
12812 (ior<mode>3<vczle><vczbe>): ... This.
12813 (xor<mode>3): Rename to...
12814 (xor<mode>3<vczle><vczbe>): ... This.
12815 * config/aarch64/iterators.md (VDZ): Define.
12817 2023-04-21 Patrick Palka <ppalka@redhat.com>
12819 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
12822 2023-04-21 Jan Hubicka <jh@suse.cz>
12824 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
12827 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
12829 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
12830 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
12832 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12834 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
12835 force_reg instead of copy_to_mode_reg.
12836 (aarch64_expand_vector_init): Likewise.
12838 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
12840 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
12841 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
12842 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
12843 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
12844 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
12845 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
12846 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
12847 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
12848 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
12849 * config/i386/predicates.md (index_register_operand):
12850 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
12851 * config/i386/i386.cc (ix86_legitimate_address_p): Use
12852 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
12853 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
12855 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12856 Ondrej Kubanek <kubanek0ondrej@gmail.com>
12858 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
12861 2023-04-21 Richard Biener <rguenther@suse.de>
12863 * is-a.h (safe_is_a): New.
12865 2023-04-21 Richard Biener <rguenther@suse.de>
12867 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
12868 (gphi_iterator::operator*): Likewise.
12870 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12871 Michal Jires <michal@jires.eu>
12873 * ipa-inline.cc (class inline_badness): New class.
12874 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
12876 (update_edge_key): Update.
12877 (lookup_recursive_calls): Likewise.
12878 (recursive_inlining): Likewise.
12879 (add_new_edges_to_heap): Likewise.
12880 (inline_small_functions): Likewise.
12882 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
12884 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
12886 2023-04-21 Richard Biener <rguenther@suse.de>
12888 PR tree-optimization/109573
12889 * tree-vect-loop.cc (vectorizable_live_operation): Allow
12890 unhandled SSA copy as well. Demote assert to checking only.
12892 2023-04-21 Richard Biener <rguenther@suse.de>
12894 * df-core.cc (df_analyze): Compute RPO on the reverse graph
12895 for DF_BACKWARD problems.
12896 (loop_post_order_compute): Rename to ...
12897 (loop_rev_post_order_compute): ... this, compute a RPO.
12898 (loop_inverted_post_order_compute): Rename to ...
12899 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
12900 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
12901 problems, RPO on the inverted graph for DF_BACKWARD.
12903 2023-04-21 Richard Biener <rguenther@suse.de>
12905 * cfganal.h (inverted_rev_post_order_compute): Rename
12907 (inverted_post_order_compute): ... this. Add struct function
12908 argument, change allocation to a C array.
12909 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
12910 * lcm.cc (compute_antinout_edge): Adjust.
12911 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
12912 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
12913 * tree-ssa-pre.cc (compute_antic): Likewise.
12915 2023-04-21 Richard Biener <rguenther@suse.de>
12917 * df.h (df_d::postorder_inverted): Change back to int *,
12919 * df-core.cc (rest_of_handle_df_finish): Adjust.
12920 (df_analyze_1): Likewise.
12921 (df_analyze): For DF_FORWARD problems use RPO on the forward
12923 (loop_inverted_post_order_compute): Adjust API.
12924 (df_analyze_loop): Adjust.
12925 (df_get_n_blocks): Likewise.
12926 (df_get_postorder): Likewise.
12928 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12931 * config/riscv/riscv-vsetvl.cc
12932 (vector_infos_manager::all_empty_predecessor_p): New function.
12933 (pass_vsetvl::backward_demand_fusion): Ditto.
12934 * config/riscv/riscv-vsetvl.h: Ditto.
12936 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
12939 * config/riscv/generic.md: Change standard names to insn names.
12941 2023-04-21 Richard Biener <rguenther@suse.de>
12943 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
12944 (compute_laterin): Use RPO.
12945 (compute_available): Likewise.
12947 2023-04-21 Peng Fan <fanpeng@loongson.cn>
12949 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
12951 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12954 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
12955 (vector_insn_info::skip_avl_compatible_p): Ditto.
12956 (vector_insn_info::merge): Remove default value.
12957 (pass_vsetvl::compute_local_backward_infos): Ditto.
12958 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
12959 * config/riscv/riscv-vsetvl.h: Ditto.
12961 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
12963 * doc/extend.texi (Common Function Attributes): Remove duplicate
12966 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
12968 PR tree-optimization/109564
12969 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
12970 UNDEFINED range names when deciding if all PHI arguments are the same,
12972 2023-04-20 Jakub Jelinek <jakub@redhat.com>
12974 PR tree-optimization/109011
12975 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
12976 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
12977 .CTZ (X) = PREC - .POPCOUNT (X | -X).
12979 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
12981 * lra-constraints.cc (match_reload): Exclude some hard regs for
12982 multi-reg inout reload pseudos used in asm in different mode.
12984 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
12986 * config/arm/arm.cc (thumb1_legitimate_address_p):
12987 Use VIRTUAL_REGISTER_P predicate.
12988 (arm_eliminable_register): Ditto.
12989 * config/avr/avr.md (push<mode>_1): Ditto.
12990 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
12991 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
12992 * config/i386/predicates.md (register_no_elim_operand): Ditto.
12993 * config/iq2000/predicates.md (call_insn_operand): Ditto.
12994 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
12996 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
12999 * config/i386/predicates.md (extract_operator): New predicate.
13000 * config/i386/i386.md (any_extract): Remove code iterator.
13001 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
13002 (*cmpqi_ext<mode>_1): Ditto.
13003 (*cmpqi_ext<mode>_2): Ditto.
13004 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
13005 (*cmpqi_ext<mode>_3): Ditto.
13006 (*cmpqi_ext<mode>_4): Ditto.
13007 (*extzvqi_mem_rex64): Ditto.
13009 (*insvqi_2): Ditto.
13010 (*extendqi<SWI24:mode>_ext_1): Ditto.
13011 (*addqi_ext<mode>_0): Ditto.
13012 (*addqi_ext<mode>_1): Ditto.
13013 (*addqi_ext<mode>_2): Ditto.
13014 (*subqi_ext<mode>_0): Ditto.
13015 (*subqi_ext<mode>_2): Ditto.
13016 (*testqi_ext<mode>_1): Ditto.
13017 (*testqi_ext<mode>_2): Ditto.
13018 (*andqi_ext<mode>_0): Ditto.
13019 (*andqi_ext<mode>_1): Ditto.
13020 (*andqi_ext<mode>_1_cc): Ditto.
13021 (*andqi_ext<mode>_2): Ditto.
13022 (*<any_or:code>qi_ext<mode>_0): Ditto.
13023 (*<any_or:code>qi_ext<mode>_1): Ditto.
13024 (*<any_or:code>qi_ext<mode>_2): Ditto.
13025 (*xorqi_ext<mode>_1_cc): Ditto.
13026 (*negqi_ext<mode>_2): Ditto.
13027 (*ashlqi_ext<mode>_2): Ditto.
13028 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
13030 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
13033 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
13034 <bitmanip_insn> as the type to allow for fine grained control of
13035 scheduling these insns.
13036 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
13038 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
13039 pcnt, signed and unsigned min/max.
13041 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13042 kito-cheng <kito.cheng@sifive.com>
13044 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
13046 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13047 kito-cheng <kito.cheng@sifive.com>
13050 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
13051 (pass_vsetvl::cleanup_insns): Fix bug.
13053 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
13055 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
13056 (ldexp<mode>3): Delete.
13057 (ldexp<mode>3<exec>): Change "B" to "A".
13059 2023-04-20 Jakub Jelinek <jakub@redhat.com>
13060 Jonathan Wakely <jwakely@redhat.com>
13062 * tree.h (built_in_function_equal_p): New helper function.
13063 (fndecl_built_in_p): Turn into variadic template to support
13064 1 or more built_in_function arguments.
13065 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
13066 * gimplify.cc (goa_stabilize_expr): Likewise.
13067 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
13068 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
13069 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
13070 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
13071 cgraph_update_edges_for_call_stmt_node,
13072 cgraph_edge::verify_corresponds_to_fndecl,
13073 cgraph_node::verify_node): Likewise.
13074 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
13075 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
13076 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
13078 2023-04-20 Jakub Jelinek <jakub@redhat.com>
13080 PR tree-optimization/109011
13081 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
13082 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
13083 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
13084 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
13085 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
13087 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
13089 2023-04-20 Richard Biener <rguenther@suse.de>
13091 * df-core.cc (rest_of_handle_df_initialize): Remove
13092 computation of df->postorder, df->postorder_inverted and
13095 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13097 * common/config/i386/i386-common.cc
13098 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
13099 (ix86_handle_option): Set AVX flag for VAES.
13100 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
13101 Add OPTION_MASK_ISA2_VAES_UNSET.
13102 (def_builtin): Share builtin between AES and VAES.
13103 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
13105 * config/i386/i386.md (aes): New isa attribute.
13106 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
13107 (aesenclast): Ditto.
13109 (aesdeclast): Ditto.
13110 * config/i386/vaesintrin.h: Remove redundant avx target push.
13111 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
13112 (_mm_aesdeclast_si128): Ditto.
13113 (_mm_aesenc_si128): Ditto.
13114 (_mm_aesenclast_si128): Ditto.
13116 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
13118 * config/i386/avx2intrin.h
13119 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
13120 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
13121 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
13122 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
13123 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
13124 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
13125 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
13126 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
13127 (_mm_reduce_add_epi16): New instrinsics.
13128 (_mm_reduce_mul_epi16): Ditto.
13129 (_mm_reduce_and_epi16): Ditto.
13130 (_mm_reduce_or_epi16): Ditto.
13131 (_mm_reduce_max_epi16): Ditto.
13132 (_mm_reduce_max_epu16): Ditto.
13133 (_mm_reduce_min_epi16): Ditto.
13134 (_mm_reduce_min_epu16): Ditto.
13135 (_mm256_reduce_add_epi16): Ditto.
13136 (_mm256_reduce_mul_epi16): Ditto.
13137 (_mm256_reduce_and_epi16): Ditto.
13138 (_mm256_reduce_or_epi16): Ditto.
13139 (_mm256_reduce_max_epi16): Ditto.
13140 (_mm256_reduce_max_epu16): Ditto.
13141 (_mm256_reduce_min_epi16): Ditto.
13142 (_mm256_reduce_min_epu16): Ditto.
13143 (_mm_reduce_add_epi8): Ditto.
13144 (_mm_reduce_mul_epi8): Ditto.
13145 (_mm_reduce_and_epi8): Ditto.
13146 (_mm_reduce_or_epi8): Ditto.
13147 (_mm_reduce_max_epi8): Ditto.
13148 (_mm_reduce_max_epu8): Ditto.
13149 (_mm_reduce_min_epi8): Ditto.
13150 (_mm_reduce_min_epu8): Ditto.
13151 (_mm256_reduce_add_epi8): Ditto.
13152 (_mm256_reduce_mul_epi8): Ditto.
13153 (_mm256_reduce_and_epi8): Ditto.
13154 (_mm256_reduce_or_epi8): Ditto.
13155 (_mm256_reduce_max_epi8): Ditto.
13156 (_mm256_reduce_max_epu8): Ditto.
13157 (_mm256_reduce_min_epi8): Ditto.
13158 (_mm256_reduce_min_epu8): Ditto.
13159 * config/i386/avx512vlbwintrin.h:
13160 (_mm_mask_reduce_add_epi16): Ditto.
13161 (_mm_mask_reduce_mul_epi16): Ditto.
13162 (_mm_mask_reduce_and_epi16): Ditto.
13163 (_mm_mask_reduce_or_epi16): Ditto.
13164 (_mm_mask_reduce_max_epi16): Ditto.
13165 (_mm_mask_reduce_max_epu16): Ditto.
13166 (_mm_mask_reduce_min_epi16): Ditto.
13167 (_mm_mask_reduce_min_epu16): Ditto.
13168 (_mm256_mask_reduce_add_epi16): Ditto.
13169 (_mm256_mask_reduce_mul_epi16): Ditto.
13170 (_mm256_mask_reduce_and_epi16): Ditto.
13171 (_mm256_mask_reduce_or_epi16): Ditto.
13172 (_mm256_mask_reduce_max_epi16): Ditto.
13173 (_mm256_mask_reduce_max_epu16): Ditto.
13174 (_mm256_mask_reduce_min_epi16): Ditto.
13175 (_mm256_mask_reduce_min_epu16): Ditto.
13176 (_mm_mask_reduce_add_epi8): Ditto.
13177 (_mm_mask_reduce_mul_epi8): Ditto.
13178 (_mm_mask_reduce_and_epi8): Ditto.
13179 (_mm_mask_reduce_or_epi8): Ditto.
13180 (_mm_mask_reduce_max_epi8): Ditto.
13181 (_mm_mask_reduce_max_epu8): Ditto.
13182 (_mm_mask_reduce_min_epi8): Ditto.
13183 (_mm_mask_reduce_min_epu8): Ditto.
13184 (_mm256_mask_reduce_add_epi8): Ditto.
13185 (_mm256_mask_reduce_mul_epi8): Ditto.
13186 (_mm256_mask_reduce_and_epi8): Ditto.
13187 (_mm256_mask_reduce_or_epi8): Ditto.
13188 (_mm256_mask_reduce_max_epi8): Ditto.
13189 (_mm256_mask_reduce_max_epu8): Ditto.
13190 (_mm256_mask_reduce_min_epi8): Ditto.
13191 (_mm256_mask_reduce_min_epu8): Ditto.
13193 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13195 * common/config/i386/i386-common.cc
13196 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
13197 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
13198 (OPTION_MASK_ISA_AVX_UNSET):
13199 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
13200 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
13201 * config/i386/i386.md (vpclmulqdqvl): New.
13202 * config/i386/sse.md (pclmulqdq): Add evex encoding.
13203 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
13206 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13208 * config/i386/avx512vlbwintrin.h
13209 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
13210 (_mm_mask_blend_epi8): Ditto.
13211 (_mm256_mask_blend_epi16): Ditto.
13212 (_mm256_mask_blend_epi8): Ditto.
13213 * config/i386/avx512vlintrin.h
13214 (_mm256_mask_blend_pd): Ditto.
13215 (_mm256_mask_blend_ps): Ditto.
13216 (_mm256_mask_blend_epi64): Ditto.
13217 (_mm256_mask_blend_epi32): Ditto.
13218 (_mm_mask_blend_pd): Ditto.
13219 (_mm_mask_blend_ps): Ditto.
13220 (_mm_mask_blend_epi64): Ditto.
13221 (_mm_mask_blend_epi32): Ditto.
13222 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
13223 (VF_AVX512HFBFVL): Move it before the first usage.
13224 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
13225 to VF_AVX512HFBFVL.
13227 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13229 * common/config/i386/i386-common.cc
13230 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
13231 to OPTION_MASK_ISA_AVX512BW_SET.
13232 (OPTION_MASK_ISA_AVX512F_UNSET):
13233 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
13234 (OPTION_MASK_ISA_AVX512BW_UNSET):
13235 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
13236 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
13237 * config/i386/avx512vbmi2vlintrin.h: Ditto.
13238 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
13239 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
13240 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
13241 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
13243 (compressstore<mode>_mask): Ditto.
13244 (expand<mode>_mask): Ditto.
13245 (expand<mode>_maskz): Ditto.
13246 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
13247 VI12_VI48F_AVX512VL.
13249 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13251 * common/config/i386/i386-common.cc
13252 (OPTION_MASK_ISA_AVX512BITALG_SET):
13253 Change OPTION_MASK_ISA_AVX512F_SET
13254 to OPTION_MASK_ISA_AVX512BW_SET.
13255 (OPTION_MASK_ISA_AVX512F_UNSET):
13256 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
13257 (OPTION_MASK_ISA_AVX512BW_UNSET):
13258 Add OPTION_MASK_ISA_AVX512BITALG_SET.
13259 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
13260 * config/i386/i386-builtin.def:
13261 Remove redundant OPTION_MASK_ISA_AVX512BW.
13262 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
13263 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
13264 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
13266 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
13268 * config/i386/i386-expand.cc
13269 (ix86_check_builtin_isa_match): Correct wrong comments.
13270 Add a new macro SHARE_BUILTIN and refactor the current if
13273 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
13275 * config/i386/cpuid.h: Open a new section for Extended Features
13276 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
13279 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
13281 * config/i386/sse.md: Modify insn vperm{i,f}
13284 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
13286 * config/xtensa/xtensa-opts.h: New header.
13287 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
13288 xtensa_strict_align.
13289 * config/xtensa/xtensa.cc (xtensa_option_override): When
13290 -m[no-]strict-align is not specified in the command line set
13291 xtensa_strict_align to 0 if the hardware supports both unaligned
13292 loads and stores or to 1 otherwise.
13293 * config/xtensa/xtensa.opt (mstrict-align): New option.
13294 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
13296 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
13298 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
13301 2023-04-19 Andrew Pinski <apinski@marvell.com>
13303 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
13305 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13307 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
13308 (VECTOR_BOOL_MODE): Ditto.
13309 (ADJUST_NUNITS): Ditto.
13310 (ADJUST_ALIGNMENT): Ditto.
13311 (ADJUST_BYTESIZE): Ditto.
13312 (ADJUST_PRECISION): Ditto.
13313 (RVV_MODES): Ditto.
13314 (VECTOR_MODE_WITH_PREFIX): Ditto.
13315 * config/riscv/riscv-v.cc (ENTRY): Ditto.
13316 (get_vlmul): Ditto.
13317 (get_ratio): Ditto.
13318 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
13319 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
13320 (vbool64_t): Ditto.
13321 (vbool32_t): Ditto.
13322 (vbool16_t): Ditto.
13327 (vint8mf8_t): Ditto.
13328 (vuint8mf8_t): Ditto.
13329 (vint8mf4_t): Ditto.
13330 (vuint8mf4_t): Ditto.
13331 (vint8mf2_t): Ditto.
13332 (vuint8mf2_t): Ditto.
13333 (vint8m1_t): Ditto.
13334 (vuint8m1_t): Ditto.
13335 (vint8m2_t): Ditto.
13336 (vuint8m2_t): Ditto.
13337 (vint8m4_t): Ditto.
13338 (vuint8m4_t): Ditto.
13339 (vint8m8_t): Ditto.
13340 (vuint8m8_t): Ditto.
13341 (vint16mf4_t): Ditto.
13342 (vuint16mf4_t): Ditto.
13343 (vint16mf2_t): Ditto.
13344 (vuint16mf2_t): Ditto.
13345 (vint16m1_t): Ditto.
13346 (vuint16m1_t): Ditto.
13347 (vint16m2_t): Ditto.
13348 (vuint16m2_t): Ditto.
13349 (vint16m4_t): Ditto.
13350 (vuint16m4_t): Ditto.
13351 (vint16m8_t): Ditto.
13352 (vuint16m8_t): Ditto.
13353 (vint32mf2_t): Ditto.
13354 (vuint32mf2_t): Ditto.
13355 (vint32m1_t): Ditto.
13356 (vuint32m1_t): Ditto.
13357 (vint32m2_t): Ditto.
13358 (vuint32m2_t): Ditto.
13359 (vint32m4_t): Ditto.
13360 (vuint32m4_t): Ditto.
13361 (vint32m8_t): Ditto.
13362 (vuint32m8_t): Ditto.
13363 (vint64m1_t): Ditto.
13364 (vuint64m1_t): Ditto.
13365 (vint64m2_t): Ditto.
13366 (vuint64m2_t): Ditto.
13367 (vint64m4_t): Ditto.
13368 (vuint64m4_t): Ditto.
13369 (vint64m8_t): Ditto.
13370 (vuint64m8_t): Ditto.
13371 (vfloat32mf2_t): Ditto.
13372 (vfloat32m1_t): Ditto.
13373 (vfloat32m2_t): Ditto.
13374 (vfloat32m4_t): Ditto.
13375 (vfloat32m8_t): Ditto.
13376 (vfloat64m1_t): Ditto.
13377 (vfloat64m2_t): Ditto.
13378 (vfloat64m4_t): Ditto.
13379 (vfloat64m8_t): Ditto.
13380 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
13381 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
13382 (riscv_convert_vector_bits): Ditto.
13383 * config/riscv/riscv.md:
13384 * config/riscv/vector-iterators.md:
13385 * config/riscv/vector.md
13386 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
13387 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
13388 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
13389 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
13390 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
13391 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
13392 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
13393 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
13394 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
13396 2023-04-19 Pan Li <pan2.li@intel.com>
13398 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
13399 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
13401 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
13405 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
13406 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
13407 for operand 0. Use any_extract code iterator.
13408 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
13409 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
13410 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
13411 (*cmpqi_ext<mode>_1): Use general_operand predicate
13412 for operand 1. Use any_extract code iterator.
13413 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
13414 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
13416 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13418 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
13419 (aarch64_uaddw2<mode>): Delete.
13420 (aarch64_ssubw2<mode>): Delete.
13421 (aarch64_usubw2<mode>): Delete.
13422 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
13424 2023-04-19 Richard Biener <rguenther@suse.de>
13426 * tree-ssa-structalias.cc (do_ds_constraint): Use
13427 solve_add_graph_edge.
13429 2023-04-19 Richard Biener <rguenther@suse.de>
13431 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
13433 (do_sd_constraint): ... here.
13435 2023-04-19 Richard Biener <rguenther@suse.de>
13437 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
13438 rejecting the merge when A contains only a non-local label.
13440 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
13442 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
13443 (VIRTUAL_REGISTER_NUM_P): Ditto.
13444 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
13445 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
13446 * function.cc (instantiate_decl_rtl): Ditto.
13447 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
13448 (nonzero_address_p): Ditto.
13449 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
13451 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
13453 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
13455 2023-04-19 Richard Biener <rguenther@suse.de>
13457 * system.h (auto_mpz::operator->()): New.
13458 * realmpfr.h (auto_mpfr::operator->()): New.
13459 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
13460 * real.cc (real_from_string): Likewise.
13461 (dconst_e_ptr): Likewise.
13462 (dconst_sqrt2_ptr): Likewise.
13463 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
13465 (bound_difference_of_offsetted_base): Likewise.
13466 (number_of_iterations_ne): Likewise.
13467 (number_of_iterations_lt_to_ne): Likewise.
13468 * ubsan.cc: Include realmpfr.h.
13469 (ubsan_instrument_float_cast): Use auto_mpfr.
13471 2023-04-19 Richard Biener <rguenther@suse.de>
13473 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
13474 edges, remove edges from escaped after special-casing them.
13476 2023-04-19 Richard Biener <rguenther@suse.de>
13478 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
13481 2023-04-19 Richard Biener <rguenther@suse.de>
13483 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
13484 to the LHS varinfo solution member.
13486 2023-04-19 Richard Biener <rguenther@suse.de>
13488 * tree-ssa-structalias.cc (topo_visit): Look at the real
13489 destination of edges.
13491 2023-04-19 Richard Biener <rguenther@suse.de>
13493 PR tree-optimization/44794
13494 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
13495 If an epilogue loop is required set its iteration upper bound.
13497 2023-04-19 Xi Ruoyao <xry111@xry111.site>
13500 * config/loongarch/loongarch-protos.h
13501 (loongarch_expand_block_move): Add a parameter as alignment RTX.
13502 * config/loongarch/loongarch.h:
13503 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
13504 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
13505 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
13506 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
13507 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
13508 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
13509 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
13510 Take the alignment from the parameter, but set it to
13511 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
13512 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
13513 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
13514 (loongarch_block_move_straight): When there are left-over bytes,
13515 half the mode size instead of falling back to byte mode at once.
13516 (loongarch_block_move_loop): Limit the length of loop body with
13517 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
13518 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
13519 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
13520 to loongarch_expand_block_move.
13522 2023-04-19 Xi Ruoyao <xry111@xry111.site>
13524 * config/loongarch/loongarch.cc
13525 (loongarch_setup_incoming_varargs): Don't save more GARs than
13526 cfun->va_list_gpr_size / UNITS_PER_WORD.
13528 2023-04-19 Richard Biener <rguenther@suse.de>
13530 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
13531 no epilogue condition.
13533 2023-04-19 Richard Biener <rguenther@suse.de>
13535 * gimple.h (gimple_assign_load): Outline...
13536 * gimple.cc (gimple_assign_load): ... here. Avoid
13537 get_base_address and instead just strip the outermost
13538 handled component, treating a remaining handled component
13541 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13543 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
13545 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
13547 2023-04-19 Jakub Jelinek <jakub@redhat.com>
13549 PR tree-optimization/109011
13550 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
13551 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
13552 CLZ, CTZ and FFS. Remove vargs variable, use
13553 gimple_build_call_internal rather than gimple_build_call_internal_vec.
13554 (vect_vect_recog_func_ptrs): Adjust popcount entry.
13556 2023-04-19 Jakub Jelinek <jakub@redhat.com>
13559 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
13560 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
13561 a new REG rather than the SUBREG.
13563 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13565 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
13568 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13571 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
13572 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
13574 2023-04-19 Richard Biener <rguenther@suse.de>
13576 PR rtl-optimization/109237
13577 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
13578 TREE_VISITED on INSN_VAR_LOCATION_DECL.
13579 (delete_trivially_dead_insns): Maintain TREE_VISITED on
13580 active debug bind INSN_VAR_LOCATION_DECL.
13582 2023-04-19 Richard Biener <rguenther@suse.de>
13584 PR rtl-optimization/109237
13585 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
13587 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
13589 * doc/install.texi (enable-decimal-float): Add AArch64.
13591 2023-04-19 liuhongt <hongtao.liu@intel.com>
13593 PR rtl-optimization/109351
13594 * ira.cc (setup_class_subset_and_memory_move_costs): Check
13595 hard_regno_mode_ok before setting lowest memory move cost for
13596 the mode with different reg classes.
13598 2023-04-18 Jason Merrill <jason@redhat.com>
13600 * doc/invoke.texi: Remove stray @gol.
13602 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
13604 * ifcvt.cc (cond_move_process_if_block): Consider the result of
13605 targetm.noce_conversion_profitable_p() when replacing the original
13606 sequence with the converted one.
13608 2023-04-18 Mark Harmstone <mark@harmstone.com>
13610 * common.opt (gcodeview): Add new option.
13611 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
13612 * opts.cc (command_handle_option): Similarly.
13613 * doc/invoke.texi: Add documentation for -gcodeview.
13615 2023-04-18 Andrew Pinski <apinski@marvell.com>
13617 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
13618 (make_pass_phiopt): Make execute out of line.
13619 (tree_ssa_cs_elim): Move code into ...
13620 (pass_cselim::execute): here.
13622 2023-04-18 Sam James <sam@gentoo.org>
13624 * system.h: Drop unused INCLUDE_PTHREAD_H.
13626 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
13628 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
13631 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
13633 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
13634 (bswapdi2, bswapsi2): Similarly.
13636 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
13639 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
13640 Use CODE_FOR_sse4_1_insertps_v4sf.
13641 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
13642 (expand_vec_perm_1): Call expand_vec_per_insertps.
13643 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
13644 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
13645 (@sse4_1_insertps_<mode>): New insn pattern.
13646 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
13647 pattern from sse4_1_insertps using VI4F_128 mode iterator.
13649 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13651 * value-range.cc (gt_ggc_mx): New.
13653 * value-range.h (class vrange): Add GTY marker.
13654 (class frange): Same.
13655 (gt_ggc_mx): Remove.
13656 (gt_pch_nx): Remove.
13658 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
13660 * lra-constraints.cc (constraint_unique): New.
13661 (process_address_1): Apply constraint_unique test.
13662 * recog.cc (constrain_operands): Allow relaxed memory
13665 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
13667 * doc/extend.texi (Target Builtins): Add RISC-V Vector
13669 (RISC-V Vector Intrinsics): Document GCC implemented which
13670 version of RISC-V vector intrinsics and its reference.
13672 2023-04-18 Richard Biener <rguenther@suse.de>
13674 PR middle-end/108786
13675 * bitmap.h (bitmap_clear_first_set_bit): New.
13676 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
13677 bitmap_first_set_bit and add optional clearing of the bit.
13678 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
13679 (bitmap_clear_first_set_bit): Likewise.
13680 * df-core.cc (df_worklist_dataflow_doublequeue): Use
13681 bitmap_clear_first_set_bit.
13682 * graphite-scop-detection.cc (scop_detection::merge_sese):
13684 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
13685 (sanitize_asan_mark_poison): Likewise.
13686 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
13687 * tree-into-ssa.cc (rewrite_blocks): Likewise.
13688 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
13689 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
13691 2023-04-18 Richard Biener <rguenther@suse.de>
13693 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
13694 (dump_sa_points_to_info): ... this function.
13695 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
13696 and call dump_sa_stats guarded with TDF_STATS.
13697 (ipa_pta_execute): Likewise.
13698 (compute_may_aliases): Guard dump_alias_info with
13699 TDF_DETAILS|TDF_ALIAS.
13701 2023-04-18 Andrew Pinski <apinski@marvell.com>
13703 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
13704 the expression that is being tried when TDF_FOLDING
13706 (phiopt_worker::match_simplify_replacement): Dump
13707 the sequence which was created by gimple_simplify_phiopt
13708 when TDF_FOLDING is true.
13710 2023-04-18 Andrew Pinski <apinski@marvell.com>
13712 * tree-ssa-phiopt.cc (match_simplify_replacement):
13713 Simplify code that does the movement slightly.
13715 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13717 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
13719 (rev16<mode>2): Rename to...
13720 (aarch64_rev16<mode>2_alt1): ... This.
13721 (rev16<mode>2_alt): Rename to...
13722 (*aarch64_rev16<mode>2_alt2): ... This.
13724 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13726 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
13727 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
13729 * range-op-float.cc (zero_range): Use dconstm0.
13730 (zero_to_inf_range): Same.
13731 * real.h (dconstm0): New.
13732 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
13733 (frange::set_zero): Do not declare dconstm0.
13735 2023-04-18 Richard Biener <rguenther@suse.de>
13737 * system.h (class auto_mpz): New,
13738 * realmpfr.h (class auto_mpfr): Likewise.
13739 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
13740 (do_mpfr_arg2): Likewise.
13741 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
13743 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13745 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
13746 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
13748 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13750 * value-range.cc (frange::operator==): Adjust for NAN.
13751 (range_tests_nan): Remove some NAN tests.
13753 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13755 * inchash.cc (hash::add_real_value): New.
13756 * inchash.h (class hash): Add add_real_value.
13757 * value-range.cc (add_vrange): New.
13758 * value-range.h (inchash::add_vrange): New.
13760 2023-04-18 Richard Biener <rguenther@suse.de>
13762 PR tree-optimization/109539
13763 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
13764 Re-implement pointer relatedness for PHIs.
13766 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
13768 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
13769 (SV_FP): New iterator.
13770 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
13771 (recip<mode>2): Unify the two patterns using SV_FP.
13772 (div_scale<mode><exec_vcc>): New insn.
13773 (div_fmas<mode><exec>): New insn.
13774 (div_fixup<mode><exec>): New insn.
13775 (div<mode>3): Unify the two expanders and rewrite using hardfp.
13776 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
13777 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
13778 and UNSPEC_DIV_FIXUP.
13779 (vccwait): New attribute.
13781 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13783 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
13784 if the argument matches that.
13786 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13788 * config/aarch64/atomics.md
13789 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
13790 Use SD_HSDI for destination mode iterator.
13792 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
13794 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
13795 of z-extensions and s-extensions.
13796 (riscv_subset_list::parse): Likewise.
13798 2023-04-18 Jakub Jelinek <jakub@redhat.com>
13800 PR tree-optimization/109240
13801 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
13802 first vec_perm operand and minus as second using fneg/fadd and
13803 minus as first vec_perm operand and plus as second using fneg/fsub.
13805 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13807 * data-streamer.cc (bp_pack_real_value): New.
13808 (bp_unpack_real_value): New.
13809 * data-streamer.h (bp_pack_real_value): New.
13810 (bp_unpack_real_value): New.
13811 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
13812 bp_unpack_real_value.
13813 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
13814 bp_pack_real_value.
13816 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13818 * wide-int.h (WIDE_INT_MAX_HWIS): New.
13819 (class fixed_wide_int_storage): Use it.
13820 (trailing_wide_ints <N>::set_precision): Use it.
13821 (trailing_wide_ints <N>::extra_size): Use it.
13823 2023-04-18 Xi Ruoyao <xry111@xry111.site>
13825 * config/loongarch/loongarch-protos.h
13826 (loongarch_addu16i_imm12_operand_p): New function prototype.
13827 (loongarch_split_plus_constant): Likewise.
13828 * config/loongarch/loongarch.cc
13829 (loongarch_addu16i_imm12_operand_p): New function.
13830 (loongarch_split_plus_constant): Likewise.
13831 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
13832 (DUAL_IMM12_OPERAND): Likewise.
13833 (DUAL_ADDU16I_OPERAND): Likewise.
13834 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
13836 * config/loongarch/predicates.md (const_dual_imm12_operand): New
13838 (const_addu16i_operand): Likewise.
13839 (const_addu16i_imm12_di_operand): Likewise.
13840 (const_addu16i_imm12_si_operand): Likewise.
13841 (plus_di_operand): Likewise.
13842 (plus_si_operand): Likewise.
13843 (plus_si_extend_operand): Likewise.
13844 * config/loongarch/loongarch.md (add<mode>3): Convert to
13845 define_insn_and_split. Use plus_<mode>_operand predicate
13846 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
13847 and Le constraints.
13848 (*addsi3_extended): Convert to define_insn_and_split. Use
13849 plus_si_extend_operand instead of arith_operand. Add
13850 alternatives for La and Le alternatives.
13852 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13854 * value-range.h (Value_Range::Value_Range): New.
13855 (Value_Range::contains_p): New.
13857 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
13859 * value-range.h (class vrange): Make m_discriminator const.
13860 (class irange): Make m_max_ranges const. Adjust constructors
13862 (class unsupported_range): Construct vrange appropriately.
13863 (class frange): Same.
13865 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
13867 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
13870 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
13872 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
13874 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
13876 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
13878 (riscv_expand_epilogue): Likewise.
13880 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
13882 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
13884 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
13886 2023-04-17 Andrew Pinski <apinski@marvell.com>
13888 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
13891 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
13893 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
13896 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
13898 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
13899 parameter remaining_size.
13900 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
13901 (riscv_expand_prologue): Likewise.
13902 (riscv_expand_epilogue): Likewise.
13904 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
13906 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
13907 roriw for constant counts.
13908 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
13909 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
13910 (simplify_context::simplify_binary_operation_1): Use it.
13911 * expmed.cc (expand_shift_1): Likewise.
13913 2023-04-17 Martin Jambor <mjambor@suse.cz>
13917 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
13918 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
13919 (ipa_zap_jf_refdesc): New function.
13920 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
13921 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
13922 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
13923 the new parameter of find_reference.
13924 (adjust_references_in_caller): Likewise. Make sure the constant jump
13925 function is not used to decrement a refdec counter again. Only
13926 decrement refdesc counters when the pass_through jump function allows
13927 it. Added a detailed dump when decrementing refdesc counters.
13928 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
13929 (ipa_set_jf_simple_pass_through): Initialize the new flag.
13930 (ipa_set_jf_unary_pass_through): Likewise.
13931 (ipa_set_jf_arith_pass_through): Likewise.
13932 (remove_described_reference): Provide a value for the new parameter of
13934 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
13935 the previous pass_through had a flag mandating that we do so.
13936 (propagate_controlled_uses): Likewise. Only decrement refdesc
13937 counters when the pass_through jump function allows it.
13938 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
13939 parameter of find_reference.
13940 (ipa_write_jump_function): Assert the new flag does not have to be
13942 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
13945 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
13946 Di Zhao <di.zhao@amperecomputing.com>
13948 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
13949 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
13950 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
13951 Check for the above tuning option when processing loads.
13953 2023-04-17 Richard Biener <rguenther@suse.de>
13955 PR tree-optimization/109524
13956 * tree-vrp.cc (remove_unreachable::m_list): Change to a
13957 vector of pairs of block indices.
13958 (remove_unreachable::maybe_register_block): Adjust.
13959 (remove_unreachable::remove_and_update_globals): Likewise.
13960 Deal with removed blocks.
13962 2023-04-16 Jeff Law <jlaw@ventanamicro>
13965 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
13966 TARGET_SFB_ALU, force the true arm into a register.
13968 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
13971 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
13972 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
13974 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
13975 (pa_function_arg_size): Change return type to int. Return zero
13976 for arguments larger than 1 GB. Update comments.
13978 2023-04-15 Jakub Jelinek <jakub@redhat.com>
13980 PR tree-optimization/109154
13981 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
13982 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
13984 2023-04-15 Jason Merrill <jason@redhat.com>
13987 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
13988 Overhaul lhs_ref.ref analysis.
13990 2023-04-14 Richard Biener <rguenther@suse.de>
13992 PR tree-optimization/109502
13993 * tree-vect-stmts.cc (vectorizable_assignment): Fix
13994 check for conversion between mask and non-mask types.
13996 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
13997 Jakub Jelinek <jakub@redhat.com>
14001 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
14002 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
14003 smaller than word_mode.
14004 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
14005 <case AND>: Likewise.
14007 2023-04-14 Jakub Jelinek <jakub@redhat.com>
14009 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
14012 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
14014 PR tree-optimization/108139
14015 PR tree-optimization/109462
14016 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
14017 equivalency check for PHI nodes.
14018 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
14019 does not dominate single-arg equivalency edges.
14021 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
14024 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
14025 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
14027 2023-04-13 Richard Biener <rguenther@suse.de>
14029 PR tree-optimization/109491
14030 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
14031 NULL operands test.
14033 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14036 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
14037 (vint16mf4_t): Ditto.
14038 (vint32mf2_t): Ditto.
14039 (vint64m1_t): Ditto.
14040 (vint64m2_t): Ditto.
14041 (vint64m4_t): Ditto.
14042 (vint64m8_t): Ditto.
14043 (vuint8mf8_t): Ditto.
14044 (vuint16mf4_t): Ditto.
14045 (vuint32mf2_t): Ditto.
14046 (vuint64m1_t): Ditto.
14047 (vuint64m2_t): Ditto.
14048 (vuint64m4_t): Ditto.
14049 (vuint64m8_t): Ditto.
14050 (vfloat32mf2_t): Ditto.
14051 (vbool64_t): Ditto.
14052 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
14053 (register_vector_type): Ditto.
14054 (check_required_extensions): Fix condition.
14055 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
14056 (RVV_REQUIRE_ELEN_64): New define.
14057 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
14058 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
14059 (TARGET_VECTOR_FP64): Ditto.
14060 (ENTRY): Fix predicate.
14061 * config/riscv/vector-iterators.md: Fix predicate.
14063 2023-04-12 Jakub Jelinek <jakub@redhat.com>
14065 PR tree-optimization/109410
14066 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
14067 block if first statement of the function is a call to returns_twice
14070 2023-04-12 Jakub Jelinek <jakub@redhat.com>
14073 * config/i386/i386.cc: Include rtl-error.h.
14074 (ix86_print_operand): For z modifier warning, use warning_for_asm
14075 if this_is_asm_operands. For Z modifier errors, use %c and code
14076 instead of hardcoded Z.
14078 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
14080 * config/i386/x-mingw32-utf8: Remove extrataneous $@
14082 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
14084 PR tree-optimization/109462
14085 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
14086 check for equivalences if NAME is a phi node.
14088 2023-04-12 Richard Biener <rguenther@suse.de>
14090 PR tree-optimization/109473
14091 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
14092 Convert scalar result to the computation type before performing
14093 the reduction adjustment.
14095 2023-04-12 Richard Biener <rguenther@suse.de>
14097 PR tree-optimization/109469
14098 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
14099 a returns-twice call.
14101 2023-04-12 Richard Biener <rguenther@suse.de>
14103 PR tree-optimization/109434
14104 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
14105 handle possibly throwing calls when processing the LHS
14106 and may-defs are not OK.
14108 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
14110 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
14111 predicate to avoid splitting arith constants.
14113 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
14114 Pan Li <pan2.li@intel.com>
14115 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14116 Kito Cheng <kito.cheng@sifive.com>
14119 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
14120 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
14121 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
14122 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
14123 (riscv_zero_call_used_regs): New.
14124 (TARGET_ZERO_CALL_USED_REGS): New.
14126 2023-04-11 Martin Liska <mliska@suse.cz>
14129 * opts.cc (finish_options): Drop also
14130 x_flag_var_tracking_assignments.
14132 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
14134 PR tree-optimization/108888
14135 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
14137 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
14140 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
14141 (vsx_sign_extend_v16qi_<mode>): ... this.
14142 (vsx_sign_extend_hi_<mode>): Rename to...
14143 (vsx_sign_extend_v8hi_<mode>): ... this.
14144 (vsx_sign_extend_si_v2di): Rename to...
14145 (vsx_sign_extend_v4si_v2di): ... this.
14146 (vsignextend_qi_<mode>): Remove.
14147 (vsignextend_hi_<mode>): Remove.
14148 (vsignextend_si_v2di): Remove.
14149 (vsignextend_v2di_v1ti): Remove.
14150 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
14151 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
14152 with gen_vsx_sign_extend_v16qi_v4si.
14153 * config/rs6000/rs6000.md (split for DI constant generation):
14154 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
14155 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
14156 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
14157 with gen_vsx_sign_extend_v16qi_si.
14158 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
14159 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
14160 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
14161 vsx_sign_extend_v16qi_v4si.
14162 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
14163 vsx_sign_extend_v8hi_v2di.
14164 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
14165 vsx_sign_extend_v8hi_v4si.
14166 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
14167 vsx_sign_extend_si_v2di.
14168 (__builtin_altivec_vsignext): Set bif-pattern to
14169 vsx_sign_extend_v2di_v1ti.
14170 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
14171 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
14172 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
14173 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
14175 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
14178 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
14179 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
14181 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
14183 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
14185 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
14187 * common/config/i386/cpuinfo.h (get_available_features):
14188 Detect AMX-COMPLEX.
14189 * common/config/i386/i386-common.cc
14190 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
14191 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
14192 (ix86_handle_option): Handle -mamx-complex.
14193 * common/config/i386/i386-cpuinfo.h (enum processor_features):
14194 Add FEATURE_AMX_COMPLEX.
14195 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
14197 * config.gcc: Add amxcomplexintrin.h.
14198 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
14199 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
14201 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
14202 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
14203 Handle amx-complex.
14204 * config/i386/i386.opt: Add option -mamx-complex.
14205 * config/i386/immintrin.h: Include amxcomplexintrin.h.
14206 * doc/extend.texi: Document amx-complex.
14207 * doc/invoke.texi: Document -mamx-complex.
14208 * doc/sourcebuild.texi: Document target amx-complex.
14209 * config/i386/amxcomplexintrin.h: New file.
14211 2023-04-08 Jakub Jelinek <jakub@redhat.com>
14213 PR tree-optimization/109392
14214 * tree-vect-generic.cc (tree_vec_extract): Handle failure
14215 of maybe_push_res_to_seq better.
14217 2023-04-08 Jakub Jelinek <jakub@redhat.com>
14219 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
14221 (SYSTEM_H): Depend on $(HASHTAB_H).
14222 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
14223 dependency on $(RTL_BASE_H), remove redundant dependency on
14226 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
14229 * config/arm/arm.cc (arm_effective_regno): New function.
14230 (mve_vector_mem_operand): Use it.
14232 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
14234 PR tree-optimization/109417
14235 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
14236 dependency is in SSA_NAME_FREE_LIST.
14238 2023-04-06 Andrew Pinski <apinski@marvell.com>
14240 PR tree-optimization/109427
14241 * params.opt (-param=vect-induction-float=):
14242 Fix option attribute typo for IntegerRange.
14244 2023-04-05 Jeff Law <jlaw@ventanamicro>
14247 * combine.cc (combine_instructions): Force re-recognition when
14248 after restoring the body of an insn to its original form.
14250 2023-04-05 Martin Jambor <mjambor@suse.cz>
14253 * ipa-sra.cc (zap_useless_ipcp_results): New function.
14254 (process_isra_node_results): Call it.
14256 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
14258 * config/riscv/vector.md: Fix incorrect operand order.
14260 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14262 * config/riscv/riscv-vsetvl.cc
14263 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
14266 2023-04-05 Li Xu <xuli1@eswincomputing.com>
14268 * config/riscv/riscv-vector-builtins.def: Fix typo.
14269 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
14270 * config/riscv/vector-iterators.md: Ditto.
14272 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
14274 * doc/md.texi (Including Patterns): Fix page break.
14276 2023-04-04 Jakub Jelinek <jakub@redhat.com>
14278 PR tree-optimization/109386
14279 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
14280 foperator_le::op1_range, foperator_le::op2_range,
14281 foperator_gt::op1_range, foperator_gt::op2_range,
14282 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
14283 BRS_FALSE case even if the other op is maybe_isnan, not just
14285 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
14286 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
14287 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
14288 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
14289 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
14290 not just known_isnan.
14292 2023-04-04 Marek Polacek <polacek@redhat.com>
14294 PR sanitizer/109107
14295 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
14297 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
14299 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
14301 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
14302 (mve_vcreateq_f<mode>): Swap operands.
14304 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
14306 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
14308 2023-04-04 Jakub Jelinek <jakub@redhat.com>
14311 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
14312 Reword diagnostics about zfinx conflict with f, formatting fixes.
14314 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14316 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
14318 2023-04-04 Richard Biener <rguenther@suse.de>
14320 PR tree-optimization/109304
14321 * tree-profile.cc (tree_profiling): Use symtab node
14322 availability to decide whether to skip adjusting calls.
14323 Do not adjust calls to internal functions.
14325 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
14328 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
14329 function for permutation control vector by considering big endianness.
14331 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
14334 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
14335 (rs6000_vprtyb<mode>2): ... this.
14336 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
14337 rs6000_vprtybv2di2.
14338 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
14339 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
14340 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
14341 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
14343 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
14344 Sandra Loosemore <sandra@codesourcery.com>
14346 * doc/md.texi (Insn Splitting): Tweak wording for readability.
14348 2023-04-03 Martin Jambor <mjambor@suse.cz>
14351 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
14352 offset + size will be representable in unsigned int.
14354 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
14356 * configure.ac (ZSTD_LIB): Move before zstd.h check.
14357 Unset gcc_cv_header_zstd_h without libzstd.
14358 * configure: Regenerate.
14360 2023-04-03 Martin Liska <mliska@suse.cz>
14362 * doc/invoke.texi: Document new param.
14364 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
14366 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
14367 new check_effective_target function.
14369 2023-04-03 Li Xu <xuli1@eswincomputing.com>
14371 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
14372 (vfloat32m8_t): Likewise
14374 2023-04-03 liuhongt <hongtao.liu@intel.com>
14376 * doc/md.texi: Document signbitm2.
14378 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14379 kito-cheng <kito.cheng@sifive.com>
14381 * config/riscv/vector.md: Fix RA constraint.
14383 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14385 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
14386 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
14387 * config/riscv/vector.md: Fix scalar move bug.
14389 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14391 * range-op-float.cc (foperator_equal::fold_range): If at least
14392 one of the op ranges is not singleton and neither is NaN and all
14393 4 bounds are zero, return [1, 1].
14394 (foperator_not_equal::fold_range): In the same case return [0, 0].
14396 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14398 * range-op-float.cc (foperator_equal::fold_range): Perform the
14399 non-singleton handling regardless of maybe_isnan (op1, op2).
14400 (foperator_not_equal::fold_range): Likewise.
14401 (foperator_lt::fold_range, foperator_le::fold_range,
14402 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
14403 real_* comparison check which results in range_false (type)
14404 even if maybe_isnan (op1, op2). Simplify.
14405 (foperator_ltgt): New class.
14406 (fop_ltgt): New variable.
14407 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
14410 2023-04-01 Jakub Jelinek <jakub@redhat.com>
14413 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
14414 returns VOIDmode, handle it like if the register isn't used for
14415 passing arguments at all.
14416 (apply_result_size): If targetm.calls.get_raw_result_mode returns
14417 VOIDmode, handle it like if the register isn't used for returning
14419 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
14420 means to return VOIDmode.
14421 * doc/tm.texi: Regenerated.
14422 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
14423 TARGET_SVE for P0_REGNUM.
14424 (aarch64_function_arg_regno_p): Also return true for p0-p3.
14425 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
14427 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
14429 * lra-constraints.cc: (combine_reload_insn): New function.
14431 2023-03-31 Jakub Jelinek <jakub@redhat.com>
14433 PR tree-optimization/91645
14434 * range-op-float.cc (foperator_unordered_lt::fold_range,
14435 foperator_unordered_le::fold_range,
14436 foperator_unordered_gt::fold_range,
14437 foperator_unordered_ge::fold_range,
14438 foperator_unordered_equal::fold_range): Call the ordered
14439 fold_range on ranges with cleared NaNs.
14440 * value-query.cc (range_query::get_tree_range): Handle also
14441 COMPARISON_CLASS_P trees.
14443 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
14444 Andrew Pinski <pinskia@gmail.com>
14447 * config/riscv/t-riscv: Add missing dependencies.
14449 2023-03-31 liuhongt <hongtao.liu@intel.com>
14451 * config/i386/i386.cc (inline_memory_move_cost): Return 100
14452 for MASK_REGS when MODE_SIZE > 8.
14454 2023-03-31 liuhongt <hongtao.liu@intel.com>
14457 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
14458 ufloat/ufix to floatuns/fixuns.
14459 * config/i386/i386-expand.cc
14460 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
14461 * config/i386/sse.md
14462 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
14464 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
14465 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
14467 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
14469 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
14471 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
14472 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
14473 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
14474 (ufloatv2siv2df2<mask_name>): Renamed to ..
14475 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
14476 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
14478 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
14480 (ufix_notruncv2dfv2si2): Renamed to ..
14481 (fixuns_notruncv2dfv2si2):.. this.
14482 (ufix_notruncv2dfv2si2_mask): Renamed to ..
14483 (fixuns_notruncv2dfv2si2_mask): .. this.
14484 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
14485 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
14486 (ufix_truncv2dfv2si2): Renamed to ..
14487 (*fixuns_truncv2dfv2si2): .. this.
14488 (ufix_truncv2dfv2si2_mask): Renamed to ..
14489 (fixuns_truncv2dfv2si2_mask): .. this.
14490 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
14491 (*fixuns_truncv2dfv2si2_mask_1): .. this.
14492 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
14493 (fixuns_truncv4dfv4si2<mask_name>): .. this.
14494 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
14496 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
14498 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
14499 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
14502 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
14504 PR tree-optimization/109154
14505 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
14506 * gimple-range-gori.h (may_recompute_p): Add depth param.
14507 * params.opt (ranger-recompute-depth): New param.
14509 2023-03-30 Jason Merrill <jason@redhat.com>
14513 * cgraph.h: Move reset() from cgraph_node to symtab_node.
14514 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
14515 remove_from_same_comdat_group.
14517 2023-03-30 Richard Biener <rguenther@suse.de>
14519 PR tree-optimization/107561
14520 * gimple-ssa-warn-access.cc (get_size_range): Add flags
14521 argument and pass it on.
14522 (check_access): When querying for the size range pass
14523 SR_ALLOW_ZERO when the known destination size is zero.
14525 2023-03-30 Richard Biener <rguenther@suse.de>
14527 PR tree-optimization/109342
14528 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
14529 overload for edge. When that edge is a backedge use
14530 dominated_by_p directly.
14532 2023-03-30 liuhongt <hongtao.liu@intel.com>
14534 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
14535 vpblendd instead of vpblendw for V4SI under avx2.
14537 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
14539 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
14540 for many quick operands, for register-sized modes.
14542 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
14544 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
14547 2023-03-29 Martin Liska <mliska@suse.cz>
14549 PR bootstrap/109310
14550 * configure.ac: Emit a warning for deprecated option
14551 --enable-link-mutex.
14552 * configure: Regenerate.
14554 2023-03-29 Richard Biener <rguenther@suse.de>
14556 PR tree-optimization/109331
14557 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
14558 discover a taken edge make sure to cleanup the CFG.
14560 2023-03-29 Richard Biener <rguenther@suse.de>
14562 PR tree-optimization/109327
14563 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
14564 already removed stmts when draining to_remove.
14566 2023-03-29 Richard Biener <rguenther@suse.de>
14569 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
14570 so we can re-create the DIE for the type if required.
14572 2023-03-29 Jakub Jelinek <jakub@redhat.com>
14573 Richard Biener <rguenther@suse.de>
14575 PR tree-optimization/109301
14576 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
14577 properties_provided from PROP_gimple_opt_math to 0.
14578 (pass_data_expand_powcabs): Change properties_provided from 0 to
14579 PROP_gimple_opt_math.
14581 2023-03-29 Richard Biener <rguenther@suse.de>
14583 PR tree-optimization/109154
14584 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
14585 inverted condition specially by inverting at the caller.
14586 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
14588 2023-03-28 David Malcolm <dmalcolm@redhat.com>
14591 * diagnostic-show-locus.cc (column_range::column_range): Factor
14592 out assertion conditional into...
14593 (column_range::valid_p): ...this new function.
14594 (line_corrections::add_hint): Don't attempt to consolidate hints
14595 if it would lead to invalid column_range instances.
14597 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
14600 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
14601 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
14604 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
14606 PR rtl-optimization/109187
14607 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
14608 subtraction in three-way comparison.
14610 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
14612 PR tree-optimization/109265
14613 PR tree-optimization/109274
14614 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
14615 not create a relation record is op1 and op2 are the same symbol.
14616 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
14617 handler for this stmt, but create a new record only if this statement
14618 generates a relation based on the ranges.
14619 (gori_compute::compute_operand2_range): Ditto.
14620 * value-relation.h (value_relation::set_relation): Always create the
14621 record that is requested.
14623 2023-03-28 Richard Biener <rguenther@suse.de>
14625 PR tree-optimization/107087
14626 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
14627 executable regions to avoid useless work and to better
14628 propagate degenerate PHIs.
14630 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
14632 * config/i386/x-mingw32-utf8: update comments.
14634 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
14637 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
14638 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
14640 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
14642 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
14643 after inlining. Record which decls are loaded from. Fix handling
14644 of vops for loads and stores.
14645 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
14646 (aarch64_accesses_vector_load_decl_p): Likewise.
14647 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
14649 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
14650 that loads from a decl, treat vector stores to those decls as
14652 (aarch64_vector_costs::finish_cost): ...and in that case,
14653 if the vector code does nothing more than a store, give the
14654 prologue a zero cost as well.
14656 2023-03-28 Richard Biener <rguenther@suse.de>
14659 PR tree-optimization/108129
14660 * genmatch.cc (lower_for): For (match ...) delay
14661 substituting into the match operator if possible.
14662 (dt_operand::gen_gimple_expr): For user_id look at the
14663 first substitute for determining how to access operands.
14664 (dt_operand::gen_generic_expr): Likewise.
14665 (dt_node::gen_kids): Properly sort user_ids according
14666 to their substitutes.
14667 (dt_node::gen_kids_1): Code-generate user_id matching.
14669 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14670 Jonathan Wakely <jwakely@redhat.com>
14672 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
14673 Use subcommand rather than sub-command in function comments.
14675 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14677 PR tree-optimization/109154
14678 * value-range.h (frange::flush_denormals_to_zero): Make it public
14679 rather than private.
14680 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
14682 * range-op-float.cc (range_operator_float::fold_range): Call
14683 flush_denormals_to_zero.
14685 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14687 PR middle-end/106190
14688 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
14689 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
14691 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14693 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
14694 as 4th argument to set to avoid clear_nan and union_ calls.
14696 2023-03-28 Jakub Jelinek <jakub@redhat.com>
14699 * config/i386/i386.cc (assign_386_stack_local): For DImode
14700 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
14701 align 32 rather than 0 to assign_stack_local.
14703 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
14706 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
14707 on operand #3 to get the final condition code. Use std::swap.
14708 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
14709 (fucmp<gcond:code>8<P:mode>_vis): Move around.
14710 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
14711 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
14713 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
14715 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
14716 top-level sections.
14718 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
14720 * config.host: Pull in i386/x-mingw32-utf8 Makefile
14721 fragment and reference utf8rc-mingw32.o explicitly
14723 * config/i386/sym-mingw32.cc: prevent name mangling of
14725 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
14726 depend on manifest file explicitly.
14728 2023-03-28 Richard Biener <rguenther@suse.de>
14731 2023-03-27 Richard Biener <rguenther@suse.de>
14733 PR rtl-optimization/109237
14734 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
14736 2023-03-28 Richard Biener <rguenther@suse.de>
14738 * common.opt (gdwarf): Remove Negative(gdwarf-).
14740 2023-03-28 Richard Biener <rguenther@suse.de>
14742 * common.opt (gdwarf): Add RejectNegative.
14743 (gdwarf-): Likewise.
14747 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14749 * config/cris/constraints.md ("T"): Correct to
14750 define_memory_constraint.
14752 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14754 * config/cris/cris.md (BW2): New mode-iterator.
14755 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
14758 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14760 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
14761 for possible eliminable compares.
14763 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
14765 * config/cris/constraints.md ("R"): Remove unused constraint.
14767 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
14769 PR gcov-profile/109297
14770 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
14771 (merge_stream_usage): Likewise.
14772 (overlap_usage): Likewise.
14774 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
14777 * config/riscv/thead.md: Add missing mode specifiers.
14779 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
14780 Jiangning Liu <jiangning.liu@amperecomputing.com>
14781 Manolis Tsamis <manolis.tsamis@vrull.eu>
14783 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
14785 2023-03-27 Richard Biener <rguenther@suse.de>
14787 PR rtl-optimization/109237
14788 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
14790 2023-03-27 Richard Biener <rguenther@suse.de>
14793 * lto-wrapper.cc (run_gcc): Parse alternate debug options
14794 as well, they always enable debug.
14796 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
14799 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
14801 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
14803 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
14806 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
14807 than zero when calling vec_sld.
14808 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
14809 zero when calling vec_sld.
14810 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
14811 than zero when calling vec_sld.
14813 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
14815 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
14816 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
14817 loops are represented and which fields are vectors. Add
14818 documentation for OMP_FOR_PRE_BODY field. Document internal
14819 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
14820 * tree.def (OMP_FOR): Make documentation consistent with the
14821 Texinfo manual, to fill some gaps and correct errors.
14823 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
14826 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
14827 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
14828 (handle_move_double): Call it before handle_movsi.
14829 * config/m68k/m68k-protos.h: Declare it.
14831 2023-03-26 Jakub Jelinek <jakub@redhat.com>
14833 PR tree-optimization/109230
14834 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
14836 2023-03-26 Jakub Jelinek <jakub@redhat.com>
14839 * predict.cc (compute_function_frequency): Don't call
14840 warn_function_cold if function already has cold attribute.
14842 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
14844 * doc/install.texi: Remove anachronistic note
14845 related to languages built and separate source tarballs.
14847 2023-03-25 David Malcolm <dmalcolm@redhat.com>
14850 * diagnostic-format-sarif.cc (read_until_eof): Delete.
14851 (maybe_read_file): Delete.
14852 (sarif_builder::maybe_make_artifact_content_object): Use
14853 get_source_file_content rather than maybe_read_file.
14854 Reject it if it's not valid UTF-8.
14855 * input.cc (file_cache_slot::get_full_file_content): New.
14856 (get_source_file_content): New.
14857 (selftest::check_cpp_valid_utf8_p): New.
14858 (selftest::test_cpp_valid_utf8_p): New.
14859 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
14860 * input.h (get_source_file_content): New prototype.
14862 2023-03-24 David Malcolm <dmalcolm@redhat.com>
14864 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
14866 (Special Functions for Debugging the Analyzer): Convert to a
14867 table, and rewrite in places.
14868 (Other Debugging Techniques): Add notes on how to compare two
14869 different exploded graphs.
14871 2023-03-24 David Malcolm <dmalcolm@redhat.com>
14874 * json.cc: Update comments to indicate that we now preserve
14875 insertion order of keys within objects.
14876 (object::print): Traverse keys in insertion order.
14877 (object::set): Preserve insertion order of keys.
14878 (selftest::test_writing_objects): Add an additional key to verify
14879 that we preserve insertion order.
14880 * json.h (object::m_keys): New field.
14882 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
14884 PR tree-optimization/109238
14885 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
14886 predecessors which this block dominates.
14888 2023-03-24 Richard Biener <rguenther@suse.de>
14890 PR tree-optimization/106912
14891 * tree-profile.cc (tree_profiling): Update stmts only when
14892 profiling or testing coverage. Make sure to update calls
14893 fntype, stripping 'const' there.
14895 2023-03-24 Jakub Jelinek <jakub@redhat.com>
14897 PR middle-end/109258
14898 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
14899 if target == const0_rtx.
14901 2023-03-24 Alexandre Oliva <oliva@adacore.com>
14903 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
14904 Document options and effective targets.
14906 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
14908 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
14911 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
14913 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
14914 non-earlyclobber alternative.
14916 2023-03-23 Andrew Pinski <apinski@marvell.com>
14919 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
14922 2023-03-23 Richard Biener <rguenther@suse.de>
14924 PR tree-optimization/107569
14925 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
14926 Do not push SSA names with zero uses as available leader.
14927 (process_bb): Likewise.
14929 2023-03-23 Richard Biener <rguenther@suse.de>
14931 PR tree-optimization/109262
14932 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
14933 combining a piecewise complex load avoid touching loads
14934 that throw internally. Use fun, not cfun throughout.
14936 2023-03-23 Jakub Jelinek <jakub@redhat.com>
14938 * value-range.cc (irange::irange_union, irange::intersect): Fix
14939 comment spelling bugs.
14940 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
14941 * gimple-range-trace.h: Likewise.
14942 * gimple-range-edge.cc: Likewise.
14943 (gimple_outgoing_range_stmt_p,
14944 gimple_outgoing_range::switch_edge_range,
14945 gimple_outgoing_range::edge_range_p): Likewise.
14946 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
14947 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
14948 assume_query::assume_query, assume_query::calculate_phi): Likewise.
14949 * gimple-range-edge.h: Likewise.
14950 * value-range.h (Value_Range::set, Value_Range::lower_bound,
14951 Value_Range::upper_bound, frange::set_undefined): Likewise.
14952 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
14953 gori_compute): Likewise.
14954 * gimple-range-fold.h (fold_using_range): Likewise.
14955 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
14957 * gimple-range-gori.cc (range_def_chain::in_chain_p,
14958 range_def_chain::dump, gori_map::calculate_gori,
14959 gori_compute::compute_operand_range_switch,
14960 gori_compute::logical_combine, gori_compute::refine_using_relation,
14961 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
14963 * gimple-range.h: Likewise.
14964 (enable_ranger): Likewise.
14965 * range-op.h (empty_range_varying): Likewise.
14966 * value-query.h (value_query): Likewise.
14967 * gimple-range-cache.cc (block_range_cache::set_bb_range,
14968 block_range_cache::dump, ssa_global_cache::clear_global_range,
14969 temporal_cache::temporal_value, temporal_cache::current_p,
14970 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
14971 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
14973 * gimple-range-fold.cc (fur_edge::get_phi_operand,
14974 fur_stmt::get_operand, gimple_range_adjustment,
14975 fold_using_range::range_of_phi,
14976 fold_using_range::relation_fold_and_or): Likewise.
14977 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
14978 * value-query.cc (range_query::value_of_expr,
14979 range_query::value_on_edge, range_query::query_relation): Likewise.
14980 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
14981 intersect_range_with_nonzero_bits): Likewise.
14982 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
14983 exit_range): Likewise.
14984 * value-relation.h: Likewise.
14985 (equiv_oracle, relation_trio::relation_trio, value_relation,
14986 value_relation::value_relation, pe_min): Likewise.
14987 * range-op-float.cc (range_operator_float::rv_fold,
14988 frange_arithmetic, foperator_unordered_equal::op1_range,
14989 foperator_div::rv_fold): Likewise.
14990 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
14991 * value-relation.cc (equiv_oracle::query_relation,
14992 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
14993 value_relation::apply_transitive, relation_chain_head::find_relation,
14994 dom_oracle::query_relation, dom_oracle::find_relation_block,
14995 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
14996 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
14997 create_possibly_reversed_range, adjust_op1_for_overflow,
14998 operator_mult::wi_fold, operator_exact_divide::op1_range,
14999 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
15000 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
15001 range_op_lshift_tests): Likewise.
15003 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
15005 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
15006 (move_callee_saved_registers): Detect the bug condition early.
15008 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
15010 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
15011 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
15013 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
15014 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
15015 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
15016 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
15017 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
15019 2023-03-23 Jakub Jelinek <jakub@redhat.com>
15021 PR tree-optimization/109176
15022 * tree-vect-generic.cc (expand_vector_condition): If a has
15023 vector boolean type and is a comparison, also check if both
15024 the comparison and VEC_COND_EXPR could be successfully expanded
15027 2023-03-23 Pan Li <pan2.li@intel.com>
15028 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15032 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
15033 for vector mask modes.
15034 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
15035 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
15037 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
15039 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
15041 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15044 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
15045 (emit_vlmax_op): Ditto.
15046 * config/riscv/riscv-v.cc (get_sew): New function.
15047 (emit_vlmax_vsetvl): Adapt function.
15048 (emit_pred_op): Ditto.
15049 (emit_vlmax_op): Ditto.
15050 (emit_nonvlmax_op): Ditto.
15051 (legitimize_move): Fix LRA ICE.
15052 (gen_no_side_effects_vsetvl_rtx): Adapt function.
15053 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
15054 (@mov<VB:mode><P:mode>_lra): Ditto.
15055 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
15056 (*mov<VB:mode><P:mode>_lra): Ditto.
15058 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15061 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
15062 __riscv_vlenb support.
15064 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15065 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
15066 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
15068 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15069 * config/riscv/riscv-vector-builtins.cc: Ditto.
15071 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15072 kito-cheng <kito.cheng@sifive.com>
15074 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
15075 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
15076 (pass_vsetvl::need_vsetvl): Fix bugs.
15077 (pass_vsetvl::backward_demand_fusion): Fix bugs.
15078 (pass_vsetvl::demand_fusion): Fix bugs.
15079 (eliminate_insn): Fix bugs.
15080 (insert_vsetvl): Ditto.
15081 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
15082 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
15083 * config/riscv/vector.md: Ditto.
15085 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15086 kito-cheng <kito.cheng@sifive.com>
15088 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
15089 * config/riscv/vector-iterators.md (nmsac): Ditto.
15095 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
15096 (@pred_mul_plus<mode>): Ditto.
15097 (*pred_madd<mode>): Ditto.
15098 (*pred_macc<mode>): Ditto.
15099 (*pred_mul_plus<mode>): Ditto.
15100 (@pred_mul_plus<mode>_scalar): Ditto.
15101 (*pred_madd<mode>_scalar): Ditto.
15102 (*pred_macc<mode>_scalar): Ditto.
15103 (*pred_mul_plus<mode>_scalar): Ditto.
15104 (*pred_madd<mode>_extended_scalar): Ditto.
15105 (*pred_macc<mode>_extended_scalar): Ditto.
15106 (*pred_mul_plus<mode>_extended_scalar): Ditto.
15107 (@pred_minus_mul<mode>): Ditto.
15108 (*pred_<madd_nmsub><mode>): Ditto.
15109 (*pred_nmsub<mode>): Ditto.
15110 (*pred_<macc_nmsac><mode>): Ditto.
15111 (*pred_nmsac<mode>): Ditto.
15112 (*pred_mul_<optab><mode>): Ditto.
15113 (*pred_minus_mul<mode>): Ditto.
15114 (@pred_mul_<optab><mode>_scalar): Ditto.
15115 (@pred_minus_mul<mode>_scalar): Ditto.
15116 (*pred_<madd_nmsub><mode>_scalar): Ditto.
15117 (*pred_nmsub<mode>_scalar): Ditto.
15118 (*pred_<macc_nmsac><mode>_scalar): Ditto.
15119 (*pred_nmsac<mode>_scalar): Ditto.
15120 (*pred_mul_<optab><mode>_scalar): Ditto.
15121 (*pred_minus_mul<mode>_scalar): Ditto.
15122 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
15123 (*pred_nmsub<mode>_extended_scalar): Ditto.
15124 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
15125 (*pred_nmsac<mode>_extended_scalar): Ditto.
15126 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
15127 (*pred_minus_mul<mode>_extended_scalar): Ditto.
15128 (*pred_<madd_msub><mode>): Ditto.
15129 (*pred_<macc_msac><mode>): Ditto.
15130 (*pred_<madd_msub><mode>_scalar): Ditto.
15131 (*pred_<macc_msac><mode>_scalar): Ditto.
15132 (@pred_neg_mul_<optab><mode>): Ditto.
15133 (@pred_mul_neg_<optab><mode>): Ditto.
15134 (*pred_<nmadd_msub><mode>): Ditto.
15135 (*pred_<nmsub_nmadd><mode>): Ditto.
15136 (*pred_<nmacc_msac><mode>): Ditto.
15137 (*pred_<nmsac_nmacc><mode>): Ditto.
15138 (*pred_neg_mul_<optab><mode>): Ditto.
15139 (*pred_mul_neg_<optab><mode>): Ditto.
15140 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
15141 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
15142 (*pred_<nmadd_msub><mode>_scalar): Ditto.
15143 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
15144 (*pred_<nmacc_msac><mode>_scalar): Ditto.
15145 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
15146 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
15147 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
15148 (@pred_widen_neg_mul_<optab><mode>): Ditto.
15149 (@pred_widen_mul_neg_<optab><mode>): Ditto.
15150 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
15151 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
15153 2023-03-23 liuhongt <hongtao.liu@intel.com>
15155 * builtins.cc (builtin_memset_read_str): Replace
15156 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
15157 (builtin_memset_gen_str): Ditto.
15158 * config/i386/i386-expand.cc
15159 (ix86_convert_const_wide_int_to_broadcast): Replace
15160 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
15161 (ix86_expand_vector_move): Ditto.
15162 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
15164 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
15165 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
15166 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
15167 * doc/tm.texi.in: Ditto.
15168 * target.def: Ditto.
15170 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
15172 * lra.cc (lra): Do not repeat inheritance and live range splitting
15173 when asm error is found.
15175 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
15177 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
15178 (gcn_expand_dpp_distribute_even_insn)
15179 (gcn_expand_dpp_distribute_odd_insn): Declare.
15180 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
15181 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
15182 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
15183 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
15184 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
15185 (fms<mode>4_negop2): New patterns.
15186 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
15187 (gcn_expand_dpp_distribute_even_insn)
15188 (gcn_expand_dpp_distribute_odd_insn): New functions.
15189 * config/gcn/gcn.md: Add entries to unspec enum.
15191 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
15193 PR tree-optimization/109008
15194 * value-range.cc (frange::set): Add nan_state argument.
15195 * value-range.h (class nan_state): New.
15196 (frange::get_nan_state): New.
15198 2023-03-22 Martin Liska <mliska@suse.cz>
15200 * configure: Regenerate.
15202 2023-03-21 Joseph Myers <joseph@codesourcery.com>
15204 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
15207 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
15209 PR tree-optimization/109192
15210 * gimple-range-gori.cc (gori_compute::compute_operand_range):
15211 Terminate gori calculations if a relation is not relevant.
15212 * value-relation.h (value_relation::set_relation): Allow
15213 equality between op1 and op2 if they are the same.
15215 2023-03-21 Richard Biener <rguenther@suse.de>
15217 PR tree-optimization/109219
15218 * tree-vect-loop.cc (vectorizable_reduction): Check
15219 slp_node, not STMT_SLP_TYPE.
15220 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
15221 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
15222 Remove assertion on STMT_SLP_TYPE.
15224 2023-03-21 Jakub Jelinek <jakub@redhat.com>
15226 PR tree-optimization/109215
15227 * tree.h (enum special_array_member): Adjust comments for int_0
15229 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
15230 has zero sized element type and the array has variable number of
15231 elements or constant one or more elements.
15232 (component_ref_size): Adjust comments, formatting fix.
15234 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15236 * configure.ac: Add check for the Texinfo 6.8
15237 CONTENTS_OUTPUT_LOCATION customization variable and set it if
15239 * configure: Regenerate.
15240 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
15241 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
15242 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
15243 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
15245 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15247 * doc/extend.texi: Associate use_hazard_barrier_return index
15248 entry with its attribute.
15249 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
15252 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15254 * doc/implement-c.texi: Remove usage of @gol.
15255 * doc/invoke.texi: Ditto.
15256 * doc/sourcebuild.texi: Ditto.
15257 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
15258 texinfo.tex versions, the bug it was working around appears to
15261 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15263 * doc/include/texinfo.tex: Update to 2023-01-17.19.
15265 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15267 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
15268 @enddefbuiltin for defining built-in functions.
15269 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
15270 places where it should be used.
15272 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15274 * doc/extend.texi (Formatted Output Function Checking): New
15275 subsection for grouping together printf et al.
15276 (Exception handling) Fix missing @ sign before copyright
15277 header, which lead to the copyright line leaking into
15278 '(gcc)Exception handling'.
15279 * doc/gcc.texi: Set document language to en_US.
15280 (@copying): Wrap front cover texts in quotations, move in manual
15283 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
15285 * doc/gcc.texi: Add the Indices appendix, to make texinfo
15286 generate nice indices overview page.
15288 2023-03-21 Richard Biener <rguenther@suse.de>
15290 PR tree-optimization/109170
15291 * gimple-range-op.cc (cfn_pass_through_arg1): New.
15292 (gimple_range_op_handler::maybe_builtin_call): Handle
15293 __builtin_expect via cfn_pass_through_arg1.
15295 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
15298 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
15299 (init_float128_ieee): Delete code to switch complex multiply and divide
15301 (complex_multiply_builtin_code): New helper function.
15302 (complex_divide_builtin_code): Likewise.
15303 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
15304 of complex 128-bit multiply and divide built-in functions.
15306 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
15309 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
15311 2023-03-19 Jonny Grant <jg@jguk.org>
15313 * doc/extend.texi (Common Function Attributes) <nonnull>:
15316 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
15318 PR rtl-optimization/109179
15319 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
15320 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
15322 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15325 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
15327 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
15328 to allocate_struct_function instead of false.
15329 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
15330 nor DECL_RESULT here. Pass true as ABSTRACT_P to
15331 push_struct_function. Call targetm.target_option.relayout_function
15333 (tree_function_versioning): Formatting fix.
15335 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
15337 * lra-constraints.cc: Include hooks.h.
15338 (combine_reload_insn): New function.
15339 (lra_constraints): Call it.
15341 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15342 kito-cheng <kito.cheng@sifive.com>
15344 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
15345 as legitimate value.
15346 * config/riscv/riscv-vector-builtins.cc
15347 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
15348 (function_expander::use_widen_ternop_insn): Ditto.
15349 * config/riscv/vector.md (@vundefined<mode>): New pattern.
15350 (pred_mul_<optab><mode>_undef_merge): Remove.
15351 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
15352 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
15353 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
15354 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
15356 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15359 * config/riscv/riscv.md: Fix subreg bug.
15361 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15363 PR middle-end/108685
15364 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
15365 use its loop_father rather than BODY_BB's loop_father.
15366 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
15367 If broken_loop with ordered > collapse and at least one of those
15368 extra loops aren't guaranteed to have at least one iteration, change
15369 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
15370 loop_father to l0_bb's loop_father rather than l1_bb's.
15372 2023-03-17 Jakub Jelinek <jakub@redhat.com>
15375 * gdbhooks.py (TreePrinter.to_string): Wrap
15376 gdb.parse_and_eval('tree_code_type') in a try block, parse
15377 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
15378 raises exception. Update comments for the recent tree_code_type
15381 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
15383 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
15384 issues. Add more line breaks to example so it doesn't overflow
15387 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
15389 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
15390 line breaks in examples.
15391 <malloc>: Fix bad line breaks in running text, also copy-edit
15393 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
15394 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
15396 (C++ Dialect Options) <-fcontracts>: Add line break in example.
15397 <-Wctad-maybe-unsupported>: Likewise.
15398 <-Winvalid-constexpr>: Likewise.
15399 (Warning Options) <-Wdangling-pointer>: Likewise.
15400 <-Winterference-size>: Likewise.
15401 <-Wvla-parameter>: Likewise.
15402 (Static Analyzer Options): Fix bad line breaks in running text,
15403 plus add some missing markup.
15404 (Optimize Options) <openacc-privatization>: Fix more bad line
15405 breaks in running text.
15407 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
15409 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
15410 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
15411 (expand_vec_perm_2perm_pblendv): Ditto.
15413 2023-03-16 Martin Liska <mliska@suse.cz>
15415 PR middle-end/106133
15416 * gcc.cc (driver_handle_option): Use x_main_input_basename
15417 if x_dump_base_name is null.
15418 * opts.cc (common_handle_option): Likewise.
15420 2023-03-16 Richard Biener <rguenther@suse.de>
15422 PR tree-optimization/109123
15423 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
15424 Do not emit -Wuse-after-free late.
15425 (pass_waccess::check_call): Always check call pointer uses.
15427 2023-03-16 Richard Biener <rguenther@suse.de>
15429 PR tree-optimization/109141
15430 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
15431 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
15433 (renumber_gimple_stmt_uids): ... here and
15434 (renumber_gimple_stmt_uids_in_blocks): ... here.
15435 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
15436 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
15438 (pass_waccess::check_pointer_uses): Process all PHIs.
15440 2023-03-15 David Malcolm <dmalcolm@redhat.com>
15443 * diagnostic-format-sarif.cc (class sarif_invocation): New.
15444 (class sarif_ice_notification): New.
15445 (sarif_builder::m_invocation_obj): New field.
15446 (sarif_invocation::add_notification_for_ice): New.
15447 (sarif_invocation::prepare_to_flush): New.
15448 (sarif_ice_notification::sarif_ice_notification): New.
15449 (sarif_builder::sarif_builder): Add m_invocation_obj.
15450 (sarif_builder::end_diagnostic): Special-case DK_ICE and
15452 (sarif_builder::flush_to_file): Call prepare_to_flush on
15453 m_invocation_obj. Pass the latter to make_top_level_object.
15454 (sarif_builder::make_result_object): Move creation of "locations"
15456 (sarif_builder::make_locations_arr): ...this new function.
15457 (sarif_builder::make_top_level_object): Add "invocation_obj" param
15458 and pass it to make_run_object.
15459 (sarif_builder::make_run_object): Add "invocation_obj" param and
15461 (sarif_ice_handler): New callback.
15462 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
15463 * diagnostic.cc (diagnostic_initialize): Initialize new field
15465 (diagnostic_action_after_output): If it is set, make one attempt
15466 to call ice_handler_cb.
15467 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
15469 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
15471 * config/i386/i386-expand.cc (expand_vec_perm_blend):
15472 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
15473 and fix V2HImode handling.
15474 (expand_vec_perm_1): Try to emit BLEND instruction
15475 before MOVSS/MOVSD.
15476 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
15478 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
15480 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
15482 2023-03-15 Richard Biener <rguenther@suse.de>
15484 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
15485 Do not diagnose clobbers.
15487 2023-03-15 Richard Biener <rguenther@suse.de>
15489 PR tree-optimization/109139
15490 * tree-ssa-live.cc (remove_unused_locals): Look at the
15491 base address for unused decls on the LHS of .DEFERRED_INIT.
15493 2023-03-15 Xi Ruoyao <xry111@xry111.site>
15496 * builtins.cc (inline_string_cmp): Force the character
15497 difference into "result" pseudo-register, instead of reassign
15498 the pseudo-register.
15500 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15502 * config.gcc: Add thead.o to RISC-V extra_objs.
15503 * config/riscv/peephole.md: Add mempair peephole passes.
15504 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
15506 (th_mempair_operands_p): Likewise.
15507 (th_mempair_order_operands): Likewise.
15508 (th_mempair_prepare_save_restore_operands): Likewise.
15509 (th_mempair_save_restore_regs): Likewise.
15510 (th_mempair_output_move): Likewise.
15511 * config/riscv/riscv.cc (riscv_save_reg): Move code.
15512 (riscv_restore_reg): Move code.
15513 (riscv_for_each_saved_reg): Add code to emit mempair insns.
15514 * config/riscv/t-riscv: Add thead.cc.
15515 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
15517 (*th_mempair_store_<GPR:mode>2): Likewise.
15518 (*th_mempair_load_extendsidi2): Likewise.
15519 (*th_mempair_load_zero_extendsidi2): Likewise.
15520 * config/riscv/thead.cc: New file.
15522 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15524 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
15525 New constraint "th_f_fmv".
15526 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
15528 * config/riscv/riscv.cc (riscv_split_doubleword_move):
15529 Add split code for XTheadFmv.
15530 (riscv_secondary_memory_needed): XTheadFmv does not need
15532 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
15533 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
15534 movdf_hardfloat_rv32.
15535 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
15536 (th_fmv_x_w): New INSN.
15537 (th_fmv_x_hw): New INSN.
15539 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15541 * config/riscv/riscv.md (maddhisi4): New expand.
15542 (msubhisi4): New expand.
15543 * config/riscv/thead.md (*th_mula<mode>): New pattern.
15544 (*th_mulawsi): New pattern.
15545 (*th_mulawsi2): New pattern.
15546 (*th_maddhisi4): New pattern.
15547 (*th_sextw_maddhisi4): New pattern.
15548 (*th_muls<mode>): New pattern.
15549 (*th_mulswsi): New pattern.
15550 (*th_mulswsi2): New pattern.
15551 (*th_msubhisi4): New pattern.
15552 (*th_sextw_msubhisi4): New pattern.
15554 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15556 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
15557 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
15559 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
15561 (riscv_expand_conditional_move): New function.
15562 (riscv_expand_conditional_move_onesided): New function.
15563 * config/riscv/riscv.md: Add support for XTheadCondMov.
15564 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
15565 support for XTheadCondMov.
15566 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
15568 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15570 * config/riscv/bitmanip.md (clzdi2): New expand.
15571 (clzsi2): New expand.
15572 (ctz<mode>2): New expand.
15573 (popcount<mode>2): New expand.
15574 (<bitmanip_optab>si2): Rename INSN.
15575 (*<bitmanip_optab>si2): Hide INSN name.
15576 (<bitmanip_optab>di2): Rename INSN.
15577 (*<bitmanip_optab>di2): Hide INSN name.
15578 (rotrsi3): Remove INSN.
15579 (rotr<mode>3): Add expand.
15580 (*rotrsi3): New INSN.
15581 (rotrdi3): Rename INSN.
15582 (*rotrdi3): Hide INSN name.
15583 (rotrsi3_sext): Rename INSN.
15584 (*rotrsi3_sext): Hide INSN name.
15585 (bswap<mode>2): Remove INSN.
15586 (bswapdi2): Add expand.
15587 (bswapsi2): Add expand.
15588 (*bswap<mode>2): Hide INSN name.
15589 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
15591 * config/riscv/riscv.md (extv<mode>): New expand.
15592 (extzv<mode>): New expand.
15593 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
15594 (*th_ext<mode>): New INSN.
15595 (*th_extu<mode>): New INSN.
15596 (*th_clz<mode>2): New INSN.
15597 (*th_rev<mode>2): New INSN.
15599 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15601 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
15602 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
15604 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15606 * config/riscv/riscv.md: Include thead.md
15607 * config/riscv/thead.md: New file.
15609 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15611 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
15613 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
15615 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
15616 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
15617 (MASK_XTHEADBB): New.
15618 (MASK_XTHEADBS): New.
15619 (MASK_XTHEADCMO): New.
15620 (MASK_XTHEADCONDMOV): New.
15621 (MASK_XTHEADFMEMIDX): New.
15622 (MASK_XTHEADFMV): New.
15623 (MASK_XTHEADINT): New.
15624 (MASK_XTHEADMAC): New.
15625 (MASK_XTHEADMEMIDX): New.
15626 (MASK_XTHEADMEMPAIR): New.
15627 (MASK_XTHEADSYNC): New.
15628 (TARGET_XTHEADBA): New.
15629 (TARGET_XTHEADBB): New.
15630 (TARGET_XTHEADBS): New.
15631 (TARGET_XTHEADCMO): New.
15632 (TARGET_XTHEADCONDMOV): New.
15633 (TARGET_XTHEADFMEMIDX): New.
15634 (TARGET_XTHEADFMV): New.
15635 (TARGET_XTHEADINT): New.
15636 (TARGET_XTHEADMAC): New.
15637 (TARGET_XTHEADMEMIDX): New.
15638 (TARGET_XTHEADMEMPAIR): new.
15639 (TARGET_XTHEADSYNC): New.
15640 * config/riscv/riscv.opt: Add riscv_xthead_subext.
15642 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
15645 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
15646 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
15647 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
15649 2023-03-14 Jakub Jelinek <jakub@redhat.com>
15652 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
15653 when lo is equal to dhi and hi is a MEM which uses dlo register.
15655 2023-03-14 Martin Jambor <mjambor@suse.cz>
15658 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
15659 global0 instead of zeroing when it does not have as many counts as
15662 2023-03-14 Martin Jambor <mjambor@suse.cz>
15665 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
15666 ipa count, remove assert, lenient_count_portion_handling, dump
15667 also orig_node_count.
15669 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
15671 * config/i386/i386-expand.cc (expand_vec_perm_movs):
15672 Handle V2SImode for TARGET_MMX_WITH_SSE.
15673 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
15674 using V2FI mode iterator to handle both V2SI and V2SF modes.
15676 2023-03-14 Sam James <sam@gentoo.org>
15678 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
15679 including <sstream> earlier.
15680 * system.h: Add INCLUDE_SSTREAM.
15682 2023-03-14 Richard Biener <rguenther@suse.de>
15684 * tree-ssa-live.cc (remove_unused_locals): Do not treat
15685 the .DEFERRED_INIT of a variable as use, instead remove
15686 that if it is the only use.
15688 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
15690 PR rtl-optimization/107762
15691 * expr.cc (emit_group_store): Revert latest change.
15693 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
15695 PR tree-optimization/109005
15696 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
15697 aggregate type check.
15699 2023-03-14 Jakub Jelinek <jakub@redhat.com>
15701 PR tree-optimization/109115
15702 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
15703 r.upper_bound () on r.undefined_p () range.
15705 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
15707 PR tree-optimization/106896
15708 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
15709 implementatoin with probability_in; avoid some asserts.
15711 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
15713 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
15715 2023-03-13 Sean Bright <sean@seanbright.com>
15717 * doc/invoke.texi (Warning Options): Remove errant 'See'
15720 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
15722 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
15723 REG_OK_FOR_BASE_P): Remove.
15725 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15727 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
15728 (=vd,vd,vr,vr): Ditto.
15729 * config/riscv/vector.md: Ditto.
15731 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15733 * config/riscv/riscv-vector-builtins.cc
15734 (function_expander::use_compare_insn): Add operand predicate check.
15736 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15738 * config/riscv/vector.md: Fine tune RA constraints.
15740 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
15742 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
15743 hsaco assemble/link.
15745 2023-03-13 Richard Biener <rguenther@suse.de>
15747 PR tree-optimization/109046
15748 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
15749 piecewise complex loads.
15751 2023-03-12 Jakub Jelinek <jakub@redhat.com>
15753 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
15754 (aarch64_bf16_ptr_type_node): Adjust comment.
15755 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
15756 bfloat16_type_node rather than aarch64_bf16_type_node.
15757 (aarch64_libgcc_floating_mode_supported_p,
15758 aarch64_scalar_mode_supported_p): Also support BFmode.
15759 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
15760 (aarch64_invalid_binary_op): Remove BFmode related rejections.
15761 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
15762 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
15763 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
15764 aarch64_bf16_type_node.
15765 (aarch64_init_simd_builtin_types): Likewise.
15766 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
15767 which is created in tree.cc already.
15768 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
15770 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
15772 PR middle-end/109031
15773 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
15774 ensure that the type of x is as wide or wider than the type of a.
15776 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15779 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
15780 (*bitmask_shift_plus<mode>): New.
15781 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
15782 (@aarch64_bitmask_udiv<mode>3): Remove.
15783 * config/aarch64/aarch64.cc
15784 (aarch64_vectorize_can_special_div_by_constant,
15785 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
15786 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
15787 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
15789 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15792 * target.def (preferred_div_as_shifts_over_mult): New.
15793 * doc/tm.texi.in: Document it.
15794 * doc/tm.texi: Regenerate.
15795 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
15796 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
15797 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
15799 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15800 Richard Sandiford <richard.sandiford@arm.com>
15803 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
15806 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15807 Andrew MacLeod <amacleod@redhat.com>
15810 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
15811 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
15813 (gimple_range_op_handler::maybe_non_standard): New.
15814 * range-op.cc (class operator_widen_plus_signed,
15815 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
15816 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
15817 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
15818 operator_widen_mult_unsigned::wi_fold,
15819 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
15820 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
15821 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
15822 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
15824 2023-03-12 Tamar Christina <tamar.christina@arm.com>
15827 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
15828 * doc/tm.texi.in: Likewise.
15829 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
15830 * expmed.cc (expand_divmod): Likewise.
15831 * expmed.h (expand_divmod): Likewise.
15832 * expr.cc (force_operand, expand_expr_divmod): Likewise.
15833 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
15834 * target.def (can_special_div_by_const): Remove.
15835 * target.h: Remove tree-core.h include
15836 * targhooks.cc (default_can_special_div_by_const): Remove.
15837 * targhooks.h (default_can_special_div_by_const): Remove.
15838 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
15839 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
15840 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
15842 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
15844 * doc/install.texi2html: Fix issue number typo in comment.
15846 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
15848 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
15851 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
15853 * doc/invoke.texi (Optimize Options): Add markup to
15854 description of asan-kernel-mem-intrinsic-prefix, and clarify
15857 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
15859 * doc/extend.texi (Named Address Spaces): Drop a redundant link
15862 2023-03-11 Jeff Law <jlaw@ventanamicro>
15865 * doc/extend.texi: Clarify Attribute Syntax a bit.
15867 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
15869 * doc/install.texi (Prerequisites): Suggest using newer versions
15871 (Final install): Clean up and modernize discussion of how to
15872 build or obtain the GCC manuals.
15873 * doc/install.texi2html: Update comment to point to the PR instead
15874 of "makeinfo 4.7 brokenness" (it's not specific to that version).
15876 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15879 * optabs.cc (expand_fix): For conversions from BFmode to integral,
15880 use shifts to convert it to SFmode first and then convert SFmode
15883 2023-03-10 Andrew Pinski <apinski@marvell.com>
15885 * config/aarch64/aarch64.md: Add a new define_split
15888 2023-03-10 Richard Biener <rguenther@suse.de>
15890 * tree-ssa-structalias.cc (solve_graph): Immediately
15891 iterate self-cycles.
15893 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15895 PR tree-optimization/109008
15896 * range-op-float.cc (float_widen_lhs_range): If not
15897 -frounding-math and not IBM double double format, extend lhs
15898 range just by 0.5ulp rather than 1ulp in each direction.
15900 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15903 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
15905 * config/i386/t-cygwin-w64: Remove.
15907 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15910 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
15911 C++14, don't declare as extern const arrays.
15912 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
15913 static constexpr member arrays for C++11 or C++14.
15914 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
15915 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
15916 (TREE_CODE_LENGTH): For C++11 or C++14 use
15917 tree_code_length_tmpl <0>::tree_code_length instead of
15919 * tree.cc (tree_code_type, tree_code_length): Remove.
15921 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15924 * common.opt (fcanon-prefix-map): New option.
15925 * opts.cc: Include file-prefix-map.h.
15926 (flag_canon_prefix_map): New variable.
15927 (common_handle_option): Handle OPT_fcanon_prefix_map.
15928 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
15929 * file-prefix-map.h (flag_canon_prefix_map): Declare.
15930 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
15932 (add_prefix_map): Initialize canonicalize member from
15933 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
15934 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
15935 use lrealpath result only for map->canonicalize map entries.
15936 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
15937 * opts-global.cc (handle_common_deferred_options): Clear
15938 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
15939 * doc/invoke.texi (-fcanon-prefix-map): Document.
15940 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
15941 see also for -fcanon-prefix-map.
15942 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
15944 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15947 * cgraphunit.cc (check_global_declaration): Don't warn for unused
15948 variables which have OPT_Wunused_variable warning suppressed.
15950 2023-03-10 Jakub Jelinek <jakub@redhat.com>
15952 PR tree-optimization/109008
15953 * range-op-float.cc (float_widen_lhs_range): If lb is
15954 minimum representable finite number or ub is maximum
15955 representable finite number, instead of widening it to
15956 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
15957 Temporarily clear flag_finite_math_only when canonicalizing
15960 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15962 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
15963 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
15964 (gimple_fold_builtin): Ditto.
15965 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
15966 (class vleff): Ditto.
15968 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15969 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
15971 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
15972 (struct fault_load_def): Ditto.
15974 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15975 * config/riscv/riscv-vector-builtins.cc
15976 (rvv_arg_type_info::get_tree_type): Add size_ptr.
15977 (gimple_folder::gimple_folder): New class.
15978 (gimple_folder::fold): Ditto.
15979 (gimple_fold_builtin): New function.
15980 (get_read_vl_instance): Ditto.
15981 (get_read_vl_decl): Ditto.
15982 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
15983 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
15984 (get_read_vl_instance): New function.
15985 (get_read_vl_decl): Ditto.
15986 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
15987 (read_vl_insn_p): Ditto.
15988 (available_occurrence_p): Ditto.
15989 (backward_propagate_worthwhile_p): Ditto.
15990 (gen_vsetvl_pat): Adapt for vleff support.
15991 (get_forward_read_vl_insn): New function.
15992 (get_backward_fault_first_load_insn): Ditto.
15993 (source_equal_p): Adapt for vleff support.
15994 (first_ratio_invalid_for_second_sew_p): Remove.
15995 (first_ratio_invalid_for_second_lmul_p): Ditto.
15996 (first_lmul_less_than_second_lmul_p): Ditto.
15997 (first_ratio_less_than_second_ratio_p): Ditto.
15998 (support_relaxed_compatible_p): New function.
15999 (vector_insn_info::operator>): Remove.
16000 (vector_insn_info::operator>=): Refine.
16001 (vector_insn_info::parse_insn): Adapt for vleff support.
16002 (vector_insn_info::compatible_p): Ditto.
16003 (vector_insn_info::update_fault_first_load_avl): New function.
16004 (pass_vsetvl::transfer_after): Adapt for vleff support.
16005 (pass_vsetvl::demand_fusion): Ditto.
16006 (pass_vsetvl::cleanup_insns): Ditto.
16007 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
16008 redundant condtions.
16009 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
16010 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
16011 * config/riscv/riscv.md: Adapt for vleff support.
16012 * config/riscv/t-riscv: Ditto.
16013 * config/riscv/vector-iterators.md: New iterator.
16014 * config/riscv/vector.md (read_vlsi): New pattern.
16015 (read_vldi_zero_extend): Ditto.
16016 (@pred_fault_load<mode>): Ditto.
16018 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16020 * config/riscv/riscv-vector-builtins.cc
16021 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
16022 (function_expander::use_widen_ternop_insn): Ditto.
16023 * optabs.cc (maybe_gen_insn): Extend nops handling.
16025 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16027 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
16028 patterns according to RVV ISA.
16029 * config/riscv/vector-iterators.md: New iterators.
16030 * config/riscv/vector.md
16031 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
16032 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
16033 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
16034 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
16035 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
16036 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
16037 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
16038 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
16039 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
16040 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
16041 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
16042 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
16043 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
16044 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
16046 2023-03-10 Michael Collison <collison@rivosinc.com>
16048 * tree-vect-loop-manip.cc (vect_do_peeling): Use
16049 result of constant_lower_bound instead of vf for the lower
16050 bound of the epilog loop trip count.
16052 2023-03-09 Tamar Christina <tamar.christina@arm.com>
16054 * passes.cc (emergency_dump_function): Finish graph generation.
16056 2023-03-09 Tamar Christina <tamar.christina@arm.com>
16058 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
16059 and bottom bit only.
16061 2023-03-09 Andrew Pinski <apinski@marvell.com>
16063 PR tree-optimization/108980
16064 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
16065 Reorgnize the call to warning for not strict flexible arrays
16066 to be before the check of warned.
16068 2023-03-09 Jason Merrill <jason@redhat.com>
16070 * doc/extend.texi: Comment out __is_deducible docs.
16072 2023-03-09 Jason Merrill <jason@redhat.com>
16075 * doc/extend.texi (Type Traits):: Document __is_deducible.
16077 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
16080 * config.host: add object for x86_64-*-mingw*.
16081 * config/i386/sym-mingw32.cc: dummy file to attach
16083 * config/i386/utf8-mingw32.rc: windres resource file.
16084 * config/i386/winnt-utf8.manifest: XML manifest to
16086 * config/i386/x-mingw32: reference to x-mingw32-utf8.
16087 * config/i386/x-mingw32-utf8: Makefile fragment to
16088 embed UTF-8 manifest.
16090 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
16092 * lra-constraints.cc (process_alt_operands): Use operand modes for
16093 clobbered regs instead of the biggest access mode.
16095 2023-03-09 Richard Biener <rguenther@suse.de>
16097 PR middle-end/108995
16098 * fold-const.cc (extract_muldiv_1): Avoid folding
16099 (CST * b) / CST2 when sanitizing overflow and we rely on
16100 overflow being undefined.
16102 2023-03-09 Jakub Jelinek <jakub@redhat.com>
16103 Richard Biener <rguenther@suse.de>
16105 PR tree-optimization/109008
16106 * range-op-float.cc (float_widen_lhs_range): New function.
16107 (foperator_plus::op1_range, foperator_minus::op1_range,
16108 foperator_minus::op2_range, foperator_mult::op1_range,
16109 foperator_div::op1_range, foperator_div::op2_range): Use it.
16111 2023-03-07 Jonathan Grant <jg@jguk.org>
16114 * doc/invoke.texi (Instrumentation Options): Clarify
16115 LeakSanitizer behavior.
16117 2023-03-07 Benson Muite <benson_muite@emailplus.org>
16119 * doc/install.texi (Prerequisites): Add link to gmplib.org.
16121 2023-03-07 Pan Li <pan2.li@intel.com>
16122 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16126 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
16128 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
16129 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
16130 * genmodes.cc (adj_precision): New.
16131 (ADJUST_PRECISION): New.
16132 (emit_mode_adjustments): Handle ADJUST_PRECISION.
16134 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
16136 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
16138 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
16140 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
16141 {s|u}{max|min} in QI, HI and DI modes.
16142 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
16143 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
16144 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
16145 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
16148 2023-03-06 Richard Biener <rguenther@suse.de>
16150 PR tree-optimization/109025
16151 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
16152 the inner LC PHI use is the inner loop PHI latch definition
16153 before classifying an outer PHI as double reduction.
16155 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
16158 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
16160 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
16161 (X86_TUNE_USE_SCATTER): Likewise.
16163 2023-03-06 Xi Ruoyao <xry111@xry111.site>
16166 * config/loongarch/loongarch.h (FP_RETURN): Use
16167 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
16168 (UNITS_PER_FP_ARG): Likewise.
16170 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16172 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
16173 (pass_vsetvl::backward_demand_fusion): Ditto.
16175 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16176 SiYu Wu <siyu@isrc.iscas.ac.cn>
16178 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
16180 (riscv_sm3p1_<mode>): New.
16181 (riscv_sm4ed_<mode>): New.
16182 (riscv_sm4ks_<mode>): New.
16183 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
16184 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
16185 ZKSH's built-in functions.
16187 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16188 SiYu Wu <siyu@isrc.iscas.ac.cn>
16190 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
16191 (riscv_sha256sig1_<mode>): New.
16192 (riscv_sha256sum0_<mode>): New.
16193 (riscv_sha256sum1_<mode>): New.
16194 (riscv_sha512sig0h): New.
16195 (riscv_sha512sig0l): New.
16196 (riscv_sha512sig1h): New.
16197 (riscv_sha512sig1l): New.
16198 (riscv_sha512sum0r): New.
16199 (riscv_sha512sum1r): New.
16200 (riscv_sha512sig0): New.
16201 (riscv_sha512sig1): New.
16202 (riscv_sha512sum0): New.
16203 (riscv_sha512sum1): New.
16204 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
16205 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
16206 built-in functions.
16207 (DIRECT_BUILTIN): Add new.
16209 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16210 SiYu Wu <siyu@isrc.iscas.ac.cn>
16212 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
16214 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
16215 (riscv_aes32dsmi): New.
16216 (riscv_aes64ds): New.
16217 (riscv_aes64dsm): New.
16218 (riscv_aes64im): New.
16219 (riscv_aes64ks1i): New.
16220 (riscv_aes64ks2): New.
16221 (riscv_aes32esi): New.
16222 (riscv_aes32esmi): New.
16223 (riscv_aes64es): New.
16224 (riscv_aes64esm): New.
16225 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
16226 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
16227 ZKNE's built-in functions.
16229 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16230 SiYu Wu <siyu@isrc.iscas.ac.cn>
16232 * config/riscv/bitmanip.md: Add ZBKB's instructions.
16233 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
16234 * config/riscv/riscv.md: Add new type for crypto instructions.
16235 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
16237 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
16238 extension's built-in function file.
16240 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
16241 SiYu Wu <siyu@isrc.iscas.ac.cn>
16243 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
16244 (RISCV_FTYPE_NAME3): New.
16245 (RISCV_ATYPE_QI): New.
16246 (RISCV_ATYPE_HI): New.
16247 (RISCV_FTYPE_ATYPES2): New.
16248 (RISCV_FTYPE_ATYPES3): New.
16249 * config/riscv/riscv-ftypes.def (2): New.
16252 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
16254 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
16257 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16258 kito-cheng <kito.cheng@sifive.com>
16260 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
16261 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
16262 (riscv_register_pragmas): Add builtin function check call.
16263 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
16264 (check_builtin_call): New function.
16265 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
16266 (class vreinterpret): Ditto.
16267 (class vlmul_ext): Ditto.
16268 (class vlmul_trunc): Ditto.
16269 (class vset): Ditto.
16270 (class vget): Ditto.
16272 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16273 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
16289 (vundefined): Add new intrinsic.
16290 (vreinterpret): Ditto.
16291 (vlmul_ext): Ditto.
16292 (vlmul_trunc): Ditto.
16295 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
16296 (struct narrow_alu_def): Ditto.
16297 (struct reduc_alu_def): Ditto.
16298 (struct vundefined_def): Ditto.
16299 (struct misc_def): Ditto.
16300 (struct vset_def): Ditto.
16301 (struct vget_def): Ditto.
16303 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16304 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
16305 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
16306 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
16307 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
16308 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
16309 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
16310 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
16311 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
16312 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
16313 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
16314 (DEF_RVV_LMUL1_OPS): Ditto.
16315 (DEF_RVV_LMUL2_OPS): Ditto.
16316 (DEF_RVV_LMUL4_OPS): Ditto.
16317 (vint16mf4_t): Ditto.
16318 (vint16mf2_t): Ditto.
16319 (vint16m1_t): Ditto.
16320 (vint16m2_t): Ditto.
16321 (vint16m4_t): Ditto.
16322 (vint16m8_t): Ditto.
16323 (vint32mf2_t): Ditto.
16324 (vint32m1_t): Ditto.
16325 (vint32m2_t): Ditto.
16326 (vint32m4_t): Ditto.
16327 (vint32m8_t): Ditto.
16328 (vint64m1_t): Ditto.
16329 (vint64m2_t): Ditto.
16330 (vint64m4_t): Ditto.
16331 (vint64m8_t): Ditto.
16332 (vuint16mf4_t): Ditto.
16333 (vuint16mf2_t): Ditto.
16334 (vuint16m1_t): Ditto.
16335 (vuint16m2_t): Ditto.
16336 (vuint16m4_t): Ditto.
16337 (vuint16m8_t): Ditto.
16338 (vuint32mf2_t): Ditto.
16339 (vuint32m1_t): Ditto.
16340 (vuint32m2_t): Ditto.
16341 (vuint32m4_t): Ditto.
16342 (vuint32m8_t): Ditto.
16343 (vuint64m1_t): Ditto.
16344 (vuint64m2_t): Ditto.
16345 (vuint64m4_t): Ditto.
16346 (vuint64m8_t): Ditto.
16347 (vint8mf4_t): Ditto.
16348 (vint8mf2_t): Ditto.
16349 (vint8m1_t): Ditto.
16350 (vint8m2_t): Ditto.
16351 (vint8m4_t): Ditto.
16352 (vint8m8_t): Ditto.
16353 (vuint8mf4_t): Ditto.
16354 (vuint8mf2_t): Ditto.
16355 (vuint8m1_t): Ditto.
16356 (vuint8m2_t): Ditto.
16357 (vuint8m4_t): Ditto.
16358 (vuint8m8_t): Ditto.
16359 (vint8mf8_t): Ditto.
16360 (vuint8mf8_t): Ditto.
16361 (vfloat32mf2_t): Ditto.
16362 (vfloat32m1_t): Ditto.
16363 (vfloat32m2_t): Ditto.
16364 (vfloat32m4_t): Ditto.
16365 (vfloat64m1_t): Ditto.
16366 (vfloat64m2_t): Ditto.
16367 (vfloat64m4_t): Ditto.
16368 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
16369 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
16370 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
16371 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
16372 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
16373 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
16374 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
16375 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
16376 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
16377 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
16378 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
16379 (DEF_RVV_LMUL1_OPS): Ditto.
16380 (DEF_RVV_LMUL2_OPS): Ditto.
16381 (DEF_RVV_LMUL4_OPS): Ditto.
16382 (DEF_RVV_TYPE_INDEX): Ditto.
16383 (required_extensions_p): Adapt for new intrinsic support/
16384 (get_required_extensions): New function.
16385 (check_required_extensions): Ditto.
16386 (unsigned_base_type_p): Remove.
16387 (rvv_arg_type_info::get_scalar_ptr_type): New function.
16388 (get_mode_for_bitsize): Remove.
16389 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
16390 (rvv_arg_type_info::get_base_vector_type): Ditto.
16391 (rvv_arg_type_info::get_function_type_index): Ditto.
16392 (DEF_RVV_BASE_TYPE): New def.
16393 (function_builder::apply_predication): New class.
16394 (function_expander::mask_mode): Ditto.
16395 (function_checker::function_checker): Ditto.
16396 (function_checker::report_non_ice): Ditto.
16397 (function_checker::report_out_of_range): Ditto.
16398 (function_checker::require_immediate): Ditto.
16399 (function_checker::require_immediate_range): Ditto.
16400 (function_checker::check): Ditto.
16401 (check_builtin_call): Ditto.
16402 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
16403 (DEF_RVV_BASE_TYPE): Ditto.
16404 (DEF_RVV_TYPE_INDEX): Ditto.
16405 (vbool64_t): Ditto.
16406 (vbool32_t): Ditto.
16407 (vbool16_t): Ditto.
16412 (vuint8mf8_t): Ditto.
16413 (vuint8mf4_t): Ditto.
16414 (vuint8mf2_t): Ditto.
16415 (vuint8m1_t): Ditto.
16416 (vuint8m2_t): Ditto.
16417 (vint8m4_t): Ditto.
16418 (vuint8m4_t): Ditto.
16419 (vint8m8_t): Ditto.
16420 (vuint8m8_t): Ditto.
16421 (vint16mf4_t): Ditto.
16422 (vuint16mf2_t): Ditto.
16423 (vuint16m1_t): Ditto.
16424 (vuint16m2_t): Ditto.
16425 (vuint16m4_t): Ditto.
16426 (vuint16m8_t): Ditto.
16427 (vint32mf2_t): Ditto.
16428 (vuint32m1_t): Ditto.
16429 (vuint32m2_t): Ditto.
16430 (vuint32m4_t): Ditto.
16431 (vuint32m8_t): Ditto.
16432 (vuint64m1_t): Ditto.
16433 (vuint64m2_t): Ditto.
16434 (vuint64m4_t): Ditto.
16435 (vuint64m8_t): Ditto.
16436 (vfloat32mf2_t): Ditto.
16437 (vfloat32m1_t): Ditto.
16438 (vfloat32m2_t): Ditto.
16439 (vfloat32m4_t): Ditto.
16440 (vfloat32m8_t): Ditto.
16441 (vfloat64m1_t): Ditto.
16442 (vfloat64m4_t): Ditto.
16443 (vector): Move it def.
16446 (signed_vector): Ditto.
16447 (unsigned_vector): Ditto.
16448 (unsigned_scalar): Ditto.
16449 (vector_ptr): Ditto.
16450 (scalar_ptr): Ditto.
16451 (scalar_const_ptr): Ditto.
16455 (unsigned_long): Ditto.
16457 (eew8_index): Ditto.
16458 (eew16_index): Ditto.
16459 (eew32_index): Ditto.
16460 (eew64_index): Ditto.
16461 (shift_vector): Ditto.
16462 (double_trunc_vector): Ditto.
16463 (quad_trunc_vector): Ditto.
16464 (oct_trunc_vector): Ditto.
16465 (double_trunc_scalar): Ditto.
16466 (double_trunc_signed_vector): Ditto.
16467 (double_trunc_unsigned_vector): Ditto.
16468 (double_trunc_unsigned_scalar): Ditto.
16469 (double_trunc_float_vector): Ditto.
16470 (float_vector): Ditto.
16471 (lmul1_vector): Ditto.
16472 (widen_lmul1_vector): Ditto.
16473 (eew8_interpret): Ditto.
16474 (eew16_interpret): Ditto.
16475 (eew32_interpret): Ditto.
16476 (eew64_interpret): Ditto.
16477 (vlmul_ext_x2): Ditto.
16478 (vlmul_ext_x4): Ditto.
16479 (vlmul_ext_x8): Ditto.
16480 (vlmul_ext_x16): Ditto.
16481 (vlmul_ext_x32): Ditto.
16482 (vlmul_ext_x64): Ditto.
16483 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
16484 (struct function_type_info): New function.
16485 (struct rvv_arg_type_info): Ditto.
16486 (class function_checker): New class.
16487 (rvv_arg_type_info::get_scalar_type): New function.
16488 (rvv_arg_type_info::get_vector_type): Ditto.
16489 (function_expander::ret_mode): New function.
16490 (function_checker::arg_mode): Ditto.
16491 (function_checker::ret_mode): Ditto.
16492 * config/riscv/t-riscv: Add generator.
16493 * config/riscv/vector-iterators.md: New iterators.
16494 * config/riscv/vector.md (vundefined<mode>): New pattern.
16495 (@vundefined<mode>): Ditto.
16496 (@vreinterpret<mode>): Ditto.
16497 (@vlmul_extx2<mode>): Ditto.
16498 (@vlmul_extx4<mode>): Ditto.
16499 (@vlmul_extx8<mode>): Ditto.
16500 (@vlmul_extx16<mode>): Ditto.
16501 (@vlmul_extx32<mode>): Ditto.
16502 (@vlmul_extx64<mode>): Ditto.
16503 (*vlmul_extx2<mode>): Ditto.
16504 (*vlmul_extx4<mode>): Ditto.
16505 (*vlmul_extx8<mode>): Ditto.
16506 (*vlmul_extx16<mode>): Ditto.
16507 (*vlmul_extx32<mode>): Ditto.
16508 (*vlmul_extx64<mode>): Ditto.
16509 * config/riscv/genrvv-type-indexer.cc: New file.
16511 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16513 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
16514 (slide1_sew64_helper): New function.
16515 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
16516 (get_unknown_min_value): Ditto.
16517 (force_vector_length_operand): Ditto.
16518 (gen_no_side_effects_vsetvl_rtx): Ditto.
16519 (get_vl_x2_rtx): Ditto.
16520 (slide1_sew64_helper): Ditto.
16521 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
16522 (class vrgather): Ditto.
16523 (class vrgatherei16): Ditto.
16524 (class vcompress): Ditto.
16526 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16527 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
16528 (vslidedown): Ditto.
16529 (vslide1up): Ditto.
16530 (vslide1down): Ditto.
16531 (vfslide1up): Ditto.
16532 (vfslide1down): Ditto.
16534 (vrgatherei16): Ditto.
16535 (vcompress): Ditto.
16536 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
16537 (vint8mf8_t): Ditto.
16538 (vint8mf4_t): Ditto.
16539 (vint8mf2_t): Ditto.
16540 (vint8m1_t): Ditto.
16541 (vint8m2_t): Ditto.
16542 (vint8m4_t): Ditto.
16543 (vint16mf4_t): Ditto.
16544 (vint16mf2_t): Ditto.
16545 (vint16m1_t): Ditto.
16546 (vint16m2_t): Ditto.
16547 (vint16m4_t): Ditto.
16548 (vint16m8_t): Ditto.
16549 (vint32mf2_t): Ditto.
16550 (vint32m1_t): Ditto.
16551 (vint32m2_t): Ditto.
16552 (vint32m4_t): Ditto.
16553 (vint32m8_t): Ditto.
16554 (vint64m1_t): Ditto.
16555 (vint64m2_t): Ditto.
16556 (vint64m4_t): Ditto.
16557 (vint64m8_t): Ditto.
16558 (vuint8mf8_t): Ditto.
16559 (vuint8mf4_t): Ditto.
16560 (vuint8mf2_t): Ditto.
16561 (vuint8m1_t): Ditto.
16562 (vuint8m2_t): Ditto.
16563 (vuint8m4_t): Ditto.
16564 (vuint16mf4_t): Ditto.
16565 (vuint16mf2_t): Ditto.
16566 (vuint16m1_t): Ditto.
16567 (vuint16m2_t): Ditto.
16568 (vuint16m4_t): Ditto.
16569 (vuint16m8_t): Ditto.
16570 (vuint32mf2_t): Ditto.
16571 (vuint32m1_t): Ditto.
16572 (vuint32m2_t): Ditto.
16573 (vuint32m4_t): Ditto.
16574 (vuint32m8_t): Ditto.
16575 (vuint64m1_t): Ditto.
16576 (vuint64m2_t): Ditto.
16577 (vuint64m4_t): Ditto.
16578 (vuint64m8_t): Ditto.
16579 (vfloat32mf2_t): Ditto.
16580 (vfloat32m1_t): Ditto.
16581 (vfloat32m2_t): Ditto.
16582 (vfloat32m4_t): Ditto.
16583 (vfloat32m8_t): Ditto.
16584 (vfloat64m1_t): Ditto.
16585 (vfloat64m2_t): Ditto.
16586 (vfloat64m4_t): Ditto.
16587 (vfloat64m8_t): Ditto.
16588 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
16589 * config/riscv/riscv.md: Adjust RVV instruction types.
16590 * config/riscv/vector-iterators.md (down): New iterator.
16591 (=vd,vr): New attribute.
16592 (UNSPEC_VSLIDE1UP): New unspec.
16593 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
16594 (*pred_slide<ud><mode>): Ditto.
16595 (*pred_slide<ud><mode>_extended): Ditto.
16596 (@pred_gather<mode>): Ditto.
16597 (@pred_gather<mode>_scalar): Ditto.
16598 (@pred_gatherei16<mode>): Ditto.
16599 (@pred_compress<mode>): Ditto.
16601 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16603 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
16605 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16607 * config/riscv/constraints.md (Wb1): New constraint.
16608 * config/riscv/predicates.md
16609 (vector_least_significant_set_mask_operand): New predicate.
16610 (vector_broadcast_mask_operand): Ditto.
16611 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
16612 (gen_scalar_move_mask): New function.
16613 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
16614 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
16615 (class vmv_s): Ditto.
16617 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16618 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
16622 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
16624 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16625 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
16626 (function_expander::use_exact_insn): New function.
16627 (function_expander::use_contiguous_load_insn): New function.
16628 (function_expander::use_contiguous_store_insn): New function.
16629 (function_expander::use_ternop_insn): New function.
16630 (function_expander::use_widen_ternop_insn): New function.
16631 (function_expander::use_scalar_move_insn): New function.
16632 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
16633 * config/riscv/riscv-vector-builtins.h
16634 (function_expander::add_scalar_move_mask_operand): New class.
16635 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
16636 (scalar_move_insn_p): Ditto.
16637 (has_vsetvl_killed_avl_p): Ditto.
16638 (anticipatable_occurrence_p): Ditto.
16639 (insert_vsetvl): Ditto.
16640 (get_vl_vtype_info): Ditto.
16641 (calculate_sew): Ditto.
16642 (calculate_vlmul): Ditto.
16643 (incompatible_avl_p): Ditto.
16644 (different_sew_p): Ditto.
16645 (different_lmul_p): Ditto.
16646 (different_ratio_p): Ditto.
16647 (different_tail_policy_p): Ditto.
16648 (different_mask_policy_p): Ditto.
16649 (possible_zero_avl_p): Ditto.
16650 (first_ratio_invalid_for_second_sew_p): Ditto.
16651 (first_ratio_invalid_for_second_lmul_p): Ditto.
16652 (second_ratio_invalid_for_first_sew_p): Ditto.
16653 (second_ratio_invalid_for_first_lmul_p): Ditto.
16654 (second_sew_less_than_first_sew_p): Ditto.
16655 (first_sew_less_than_second_sew_p): Ditto.
16656 (compare_lmul): Ditto.
16657 (second_lmul_less_than_first_lmul_p): Ditto.
16658 (first_lmul_less_than_second_lmul_p): Ditto.
16659 (first_ratio_less_than_second_ratio_p): Ditto.
16660 (second_ratio_less_than_first_ratio_p): Ditto.
16661 (DEF_INCOMPATIBLE_COND): Ditto.
16662 (greatest_sew): Ditto.
16663 (first_sew): Ditto.
16664 (second_sew): Ditto.
16665 (first_vlmul): Ditto.
16666 (second_vlmul): Ditto.
16667 (first_ratio): Ditto.
16668 (second_ratio): Ditto.
16669 (vlmul_for_first_sew_second_ratio): Ditto.
16670 (ratio_for_second_sew_first_vlmul): Ditto.
16671 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
16672 (always_unavailable): Ditto.
16673 (avl_unavailable_p): Ditto.
16674 (sew_unavailable_p): Ditto.
16675 (lmul_unavailable_p): Ditto.
16676 (ge_sew_unavailable_p): Ditto.
16677 (ge_sew_lmul_unavailable_p): Ditto.
16678 (ge_sew_ratio_unavailable_p): Ditto.
16679 (DEF_UNAVAILABLE_COND): Ditto.
16680 (same_sew_lmul_demand_p): Ditto.
16681 (propagate_avl_across_demands_p): Ditto.
16682 (reg_available_p): Ditto.
16683 (avl_info::has_non_zero_avl): Ditto.
16684 (vl_vtype_info::has_non_zero_avl): Ditto.
16685 (vector_insn_info::operator>=): Refactor.
16686 (vector_insn_info::parse_insn): Adjust for scalar move.
16687 (vector_insn_info::demand_vl_vtype): Remove.
16688 (vector_insn_info::compatible_p): New function.
16689 (vector_insn_info::compatible_avl_p): Ditto.
16690 (vector_insn_info::compatible_vtype_p): Ditto.
16691 (vector_insn_info::available_p): Ditto.
16692 (vector_insn_info::merge): Ditto.
16693 (vector_insn_info::fuse_avl): Ditto.
16694 (vector_insn_info::fuse_sew_lmul): Ditto.
16695 (vector_insn_info::fuse_tail_policy): Ditto.
16696 (vector_insn_info::fuse_mask_policy): Ditto.
16697 (vector_insn_info::dump): Ditto.
16698 (vector_infos_manager::release): Ditto.
16699 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
16700 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
16701 (pass_vsetvl::hard_empty_block_p): Ditto.
16702 (pass_vsetvl::backward_demand_fusion): Ditto.
16703 (pass_vsetvl::forward_demand_fusion): Ditto.
16704 (pass_vsetvl::refine_vsetvls): Ditto.
16705 (pass_vsetvl::cleanup_vsetvls): Ditto.
16706 (pass_vsetvl::commit_vsetvls): Ditto.
16707 (pass_vsetvl::propagate_avl): Ditto.
16708 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
16709 (struct demands_pair): Ditto.
16710 (struct demands_cond): Ditto.
16711 (struct demands_fuse_rule): Ditto.
16712 * config/riscv/vector-iterators.md: New iterator.
16713 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
16714 (*pred_broadcast<mode>): Ditto.
16715 (*pred_broadcast<mode>_extended_scalar): Ditto.
16716 (@pred_extract_first<mode>): Ditto.
16717 (*pred_extract_first<mode>): Ditto.
16718 (@pred_extract_first_trunc<mode>): Ditto.
16719 * config/riscv/riscv-vsetvl.def: New file.
16721 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
16723 * config/riscv/bitmanip.md: allow 0 constant in max/min
16726 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
16728 * config/riscv/bitmanip.md: Fix wrong index in the check.
16730 2023-03-04 Jakub Jelinek <jakub@redhat.com>
16732 PR middle-end/109006
16733 * vec.cc (test_auto_alias): Adjust comment for removal of
16735 * read-rtl-function.cc (function_reader::parse_block): Likewise.
16736 * gdbhooks.py: Likewise.
16738 2023-03-04 Jakub Jelinek <jakub@redhat.com>
16740 PR testsuite/108973
16741 * selftest-diagnostic.cc
16742 (test_diagnostic_context::test_diagnostic_context): Set
16743 caret_max_width to 80.
16745 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16747 * gimple-ssa-warn-access.cc
16748 (pass_waccess::check_dangling_stores): Skip non-stores.
16750 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16752 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
16753 after vmsr and vmrs, and lower the case of P0.
16755 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
16757 PR middle-end/109006
16758 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
16760 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
16762 PR middle-end/109006
16763 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
16765 2023-03-03 Jakub Jelinek <jakub@redhat.com>
16768 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
16769 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
16770 suppressed on stmt. For [static %E] warning, print access_nelts
16771 rather than access_size. Fix up comment wording.
16773 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
16775 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
16776 arch14 instead of z16.
16778 2023-03-03 Anthony Green <green@moxielogic.com>
16780 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
16782 2023-03-03 Anthony Green <green@moxielogic.com>
16784 * config/moxie/constraints.md (A, B, W): Change
16785 define_constraint to define_memory_constraint.
16787 2023-03-03 Xi Ruoyao <xry111@xry111.site>
16789 * toplev.cc (process_options): Fix the spelling of
16790 "-fstack-clash-protection".
16792 2023-03-03 Richard Biener <rguenther@suse.de>
16794 PR tree-optimization/109002
16795 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
16796 PHI-translate ANTIC_IN.
16798 2023-03-03 Jakub Jelinek <jakub@redhat.com>
16800 PR tree-optimization/108988
16801 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
16802 size_type_node before passing it as argument to fwrite. Formatting
16805 2023-03-03 Richard Biener <rguenther@suse.de>
16808 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
16809 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
16810 * config/i386/i386-features.h (scalar_chain::max_visits): New.
16811 (scalar_chain::build): Add bitmap parameter, return boolean.
16812 (scalar_chain::add_insn): Likewise.
16813 (scalar_chain::analyze_register_chain): Likewise.
16814 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
16815 Initialize max_visits.
16816 (scalar_chain::analyze_register_chain): When we exhaust
16817 max_visits, abort. Also abort when running into any
16819 (scalar_chain::add_insn): Propagate abort.
16820 (scalar_chain::build): Likewise. When aborting amend
16821 the set of disallowed insn with the insns set.
16822 (convert_scalars_to_vector): Adjust. Do not convert aborted
16825 2023-03-03 Richard Biener <rguenther@suse.de>
16828 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
16829 generate a DIE for a function scope static.
16831 2023-03-03 Alexandre Oliva <oliva@adacore.com>
16833 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
16835 2023-03-02 Jakub Jelinek <jakub@redhat.com>
16838 * target.h (emit_support_tinfos_callback): New typedef.
16839 * targhooks.h (default_emit_support_tinfos): Declare.
16840 * targhooks.cc (default_emit_support_tinfos): New function.
16841 * target.def (emit_support_tinfos): New target hook.
16842 * doc/tm.texi.in (emit_support_tinfos): Document it.
16843 * doc/tm.texi: Regenerated.
16844 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
16845 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
16847 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
16849 * ira-costs.cc: Include print-rtl.h.
16850 (record_reg_classes, scan_one_insn): Add code to print debug info.
16851 (record_operand_costs): Find and use smaller cost for hard reg
16854 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
16855 Paul-Antoine Arras <pa@codesourcery.com>
16857 * builtins.cc (mathfn_built_in_explicit): New.
16858 * config/gcn/gcn.cc: Include case-cfn-macros.h.
16859 (mathfn_built_in_explicit): Add prototype.
16860 (gcn_vectorize_builtin_vectorized_function): New.
16861 (gcn_libc_has_function): New.
16862 (TARGET_LIBC_HAS_FUNCTION): Define.
16863 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
16865 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16867 PR tree-optimization/108979
16868 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
16869 operations on invariants.
16871 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
16873 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
16874 * config/s390/s390.cc (s390_option_override_internal): Make
16875 partial vector usage the default from z13 on.
16876 * config/s390/vector.md (len_load_v16qi): Add.
16877 (len_store_v16qi): Add.
16879 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
16881 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
16882 of constant 0 offset.
16884 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
16886 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
16888 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
16890 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
16892 * config.gcc: add -with-{no-}msa build option.
16893 * config/mips/mips.h: Likewise.
16894 * doc/install.texi: Likewise.
16896 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16898 PR tree-optimization/108603
16899 * explow.cc (convert_memory_address_addr_space_1): Only wrap
16900 the result of a recursive call in a CONST if no instructions
16903 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
16905 PR tree-optimization/108430
16906 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
16907 of inverted condition.
16909 2023-03-02 Jakub Jelinek <jakub@redhat.com>
16912 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
16913 comparison copy the bytes from ptr to a temporary buffer and clearing
16914 padding bits in there.
16916 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
16918 PR middle-end/108545
16919 * gimplify.cc (struct tree_operand_hash_no_se): New.
16920 (omp_index_mapping_groups_1, omp_index_mapping_groups,
16921 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
16922 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
16923 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
16924 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
16925 of tree_operand_hash.
16927 2023-03-01 LIU Hao <lh_mouse@126.com>
16930 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
16931 Remove the size limit `pch_VA_max_size`
16933 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
16935 PR middle-end/108546
16936 * omp-low.cc (lower_omp_target): Remove optional handling
16937 on the receiver side, i.e. inside target (data), for
16940 2023-03-01 Jakub Jelinek <jakub@redhat.com>
16943 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
16944 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
16946 2023-03-01 Richard Biener <rguenther@suse.de>
16948 PR tree-optimization/108970
16949 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
16950 Check we can copy the BBs.
16951 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
16953 (vect_do_peeling): Streamline error handling.
16955 2023-03-01 Richard Biener <rguenther@suse.de>
16957 PR tree-optimization/108950
16958 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
16959 Check oprnd0 is defined in the loop.
16960 * tree-vect-loop.cc (vectorizable_reduction): Record all
16961 operands vector types, compute that of invariants and
16962 properly update their SLP nodes.
16964 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
16967 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
16968 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
16970 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
16972 PR middle-end/107411
16973 PR middle-end/107411
16974 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
16976 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
16977 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
16979 2023-02-28 Jakub Jelinek <jakub@redhat.com>
16981 PR sanitizer/108894
16982 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
16983 comparison rather than index > bound.
16984 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
16985 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
16986 * doc/invoke.texi (-fsanitize=bounds): Document that whether
16987 flexible array member-like arrays are instrumented or not depends
16988 on -fstrict-flex-arrays* options of strict_flex_array attributes.
16989 (-fsanitize=bounds-strict): Document that flexible array members
16990 are not instrumented.
16992 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
16996 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
16997 (fmod<mode>3): Ditto.
16998 (fpremxf4_i387): Ditto.
16999 (reminderxf3): Ditto.
17000 (reminder<mode>3): Ditto.
17001 (fprem1xf4_i387): Ditto.
17003 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
17005 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
17006 generating FFS with mismatched operand and result modes, by using
17007 an explicit SIGN_EXTEND/ZERO_EXTEND.
17008 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
17009 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
17011 2023-02-27 Patrick Palka <ppalka@redhat.com>
17013 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
17014 * lra-int.h (lra_change_class): Likewise.
17015 * recog.h (which_op_alt): Likewise.
17016 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
17019 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17021 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
17023 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
17025 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
17026 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
17028 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
17030 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
17031 (xtensa_get_config_v3): New functions.
17033 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17035 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
17037 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
17039 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
17040 the macro to 0x1000000000.
17042 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
17045 * doc/gm2.texi (-fm2-pathname): New option documented.
17046 (-fm2-pathnameI): New option documented.
17047 (-fm2-prefix=): New option documented.
17048 (-fruntime-modules=): Update default module list.
17050 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
17053 * config/xtensa/xtensa-protos.h
17054 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
17055 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
17056 to xtensa_expand_call.
17057 (xtensa_expand_call): Emit the call and add a clobber expression
17058 for the static chain to it in case of windowed ABI.
17059 * config/xtensa/xtensa.md (call, call_value, sibcall)
17060 (sibcall_value): Call xtensa_expand_call and complete expansion
17061 right after that call.
17063 2023-02-24 Richard Biener <rguenther@suse.de>
17065 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
17066 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
17067 changing alignment of vec<T, A, vl_embed> and simplifying
17069 (vec<T, A, vl_embed>::address): Compute as this + 1.
17070 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
17071 vector instead of the offset of the m_vecdata member.
17072 (auto_vec<T, N>::m_data): Turn storage into
17073 uninitialized unsigned char.
17074 (auto_vec<T, N>::auto_vec): Allow allocation of one
17075 stack member. Initialize m_vec in a special way to
17076 avoid later stringop overflow diagnostics.
17077 * vec.cc (test_auto_alias): New.
17078 (vec_cc_tests): Call it.
17080 2023-02-24 Richard Biener <rguenther@suse.de>
17082 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
17083 take a const reference to the object, use address to
17085 (vec<T, A, vl_embed>::contains): Use address to access data.
17086 (vec<T, A, vl_embed>::operator[]): Use address instead of
17087 m_vecdata to access data.
17088 (vec<T, A, vl_embed>::iterate): Likewise.
17089 (vec<T, A, vl_embed>::copy): Likewise.
17090 (vec<T, A, vl_embed>::quick_push): Likewise.
17091 (vec<T, A, vl_embed>::pop): Likewise.
17092 (vec<T, A, vl_embed>::quick_insert): Likewise.
17093 (vec<T, A, vl_embed>::ordered_remove): Likewise.
17094 (vec<T, A, vl_embed>::unordered_remove): Likewise.
17095 (vec<T, A, vl_embed>::block_remove): Likewise.
17096 (vec<T, A, vl_heap>::address): Likewise.
17098 2023-02-24 Martin Liska <mliska@suse.cz>
17100 PR sanitizer/108834
17101 * asan.cc (asan_add_global): Use proper TU name for normal
17102 global variables (and aux_base_name for the artificial one).
17104 2023-02-24 Jakub Jelinek <jakub@redhat.com>
17106 * config/i386/i386-builtin.def: Update description of BDESC
17107 and BDESC_FIRST in file comment to include mask2.
17109 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17111 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
17113 2023-02-24 Jakub Jelinek <jakub@redhat.com>
17115 PR middle-end/108854
17116 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
17117 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
17118 nodes and adjust their DECL_CONTEXT.
17120 2023-02-24 Jakub Jelinek <jakub@redhat.com>
17123 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
17124 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
17125 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
17126 __builtin_ia32_cvtne2ps2bf16_v8bf,
17127 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
17128 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
17129 __builtin_ia32_cvtneps2bf16_v8sf_mask,
17130 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
17131 __builtin_ia32_cvtneps2bf16_v4sf_mask,
17132 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
17133 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
17134 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
17135 __builtin_ia32_dpbf16ps_v4sf_mask,
17136 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
17137 OPTION_MASK_ISA_AVX512VL.
17139 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
17141 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
17142 Add non-compact 32-bit multilibs.
17144 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
17146 * config/mips/mips.md (*clo<mode>2): New pattern.
17148 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
17150 * config/mips/mips.h (machine_function): New variable
17151 use_hazard_barrier_return_p.
17152 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
17153 (mips_hb_return_internal): New insn pattern.
17154 * config/mips/mips.cc (mips_attribute_table): Add attribute
17155 use_hazard_barrier_return.
17156 (mips_use_hazard_barrier_return_p): New static function.
17157 (mips_function_attr_inlinable_p): Likewise.
17158 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
17159 Emit error for unsupported architecture choice.
17160 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
17161 Return false for use_hazard_barrier_return.
17162 (mips_expand_epilogue): Emit hazard barrier return.
17163 * doc/extend.texi: Document use_hazard_barrier_return.
17165 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
17167 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
17168 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
17169 for the gcc-internal headers.
17171 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
17173 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
17174 and $(POSTCOMPILE) instead of manual dependency listing.
17175 * config/xtensa/xtensa-dynconfig.c: Rename to ...
17176 * config/xtensa/xtensa-dynconfig.cc: ... this.
17178 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
17180 * doc/cfg.texi: Reorder index entries around @items.
17181 * doc/cpp.texi: Ditto.
17182 * doc/cppenv.texi: Ditto.
17183 * doc/cppopts.texi: Ditto.
17184 * doc/generic.texi: Ditto.
17185 * doc/install.texi: Ditto.
17186 * doc/extend.texi: Ditto.
17187 * doc/invoke.texi: Ditto.
17188 * doc/md.texi: Ditto.
17189 * doc/rtl.texi: Ditto.
17190 * doc/tm.texi.in: Ditto.
17191 * doc/trouble.texi: Ditto.
17192 * doc/tm.texi: Regenerate.
17194 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17196 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
17197 the occurrence of general-purpose register used only once and for
17198 transferring intermediate value.
17200 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17202 * config/xtensa/xtensa.cc (machine_function): Add new member
17203 'eliminated_callee_saved_bmp'.
17204 (xtensa_can_eliminate_callee_saved_reg_p): New function to
17205 determine whether the register can be eliminated or not.
17206 (xtensa_expand_prologue): Add invoking the above function and
17207 elimination the use of callee-saved register by using its stack
17208 slot through the stack pointer (or the frame pointer if needed)
17210 (xtensa_expand_prologue): Modify to not emit register restoration
17211 insn from its stack slot if the register is already eliminated.
17213 2023-02-23 Jakub Jelinek <jakub@redhat.com>
17215 PR translation/108890
17216 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
17217 around fatal_error format strings.
17219 2023-02-23 Richard Biener <rguenther@suse.de>
17221 * tree-ssa-structalias.cc (handle_lhs_call): Do not
17222 re-create rhsc, only truncate it.
17224 2023-02-23 Jakub Jelinek <jakub@redhat.com>
17226 PR middle-end/106258
17227 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
17228 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
17230 2023-02-23 Richard Biener <rguenther@suse.de>
17232 * tree-if-conv.cc (tree_if_conversion): Properly manage
17233 memory of refs and the contained data references.
17235 2023-02-23 Richard Biener <rguenther@suse.de>
17237 PR tree-optimization/108888
17238 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
17239 calls to predicate.
17240 (predicate_statements): Only predicate calls with PLF_2.
17242 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17244 * config/xtensa/xtensa.md
17245 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
17246 Add missing "SI:" to PLUS RTXes.
17248 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
17251 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
17252 Emit (use (reg:SI A0_REG)) at the end in the sibling call
17253 (i.e. the same place as (return) in the normal call).
17255 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
17258 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
17261 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
17263 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
17264 (sibcall_value, sibcall_value_internal): Add 'use' expression
17267 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
17269 * doc/cppdiropts.texi: Reorder @opindex commands to precede
17270 @items they relate to.
17271 * doc/cppopts.texi: Ditto.
17272 * doc/cppwarnopts.texi: Ditto.
17273 * doc/invoke.texi: Ditto.
17274 * doc/lto.texi: Ditto.
17276 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
17278 * internal-fn.cc (expand_MASK_CALL): New.
17279 * internal-fn.def (MASK_CALL): New.
17280 * internal-fn.h (expand_MASK_CALL): New prototype.
17281 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
17282 for mask arguments also.
17283 * tree-if-conv.cc: Include cgraph.h.
17284 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
17285 (predicate_statements): Convert functions to IFN_MASK_CALL.
17286 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
17287 IFN_MASK_CALL as a SIMD function call.
17288 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
17289 IFN_MASK_CALL as an inbranch SIMD function call.
17290 Generate the mask vector arguments.
17292 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17294 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
17295 (class widen_reducop): Ditto.
17296 (class freducop): Ditto.
17297 (class widen_freducop): Ditto.
17299 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17300 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
17309 (vwredsumu): Ditto.
17310 (vfredusum): Ditto.
17311 (vfredosum): Ditto.
17314 (vfwredosum): Ditto.
17315 (vfwredusum): Ditto.
17316 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
17318 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17319 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
17320 (DEF_RVV_WU_OPS): Ditto.
17321 (DEF_RVV_WF_OPS): Ditto.
17322 (vint8mf8_t): Ditto.
17323 (vint8mf4_t): Ditto.
17324 (vint8mf2_t): Ditto.
17325 (vint8m1_t): Ditto.
17326 (vint8m2_t): Ditto.
17327 (vint8m4_t): Ditto.
17328 (vint8m8_t): Ditto.
17329 (vint16mf4_t): Ditto.
17330 (vint16mf2_t): Ditto.
17331 (vint16m1_t): Ditto.
17332 (vint16m2_t): Ditto.
17333 (vint16m4_t): Ditto.
17334 (vint16m8_t): Ditto.
17335 (vint32mf2_t): Ditto.
17336 (vint32m1_t): Ditto.
17337 (vint32m2_t): Ditto.
17338 (vint32m4_t): Ditto.
17339 (vint32m8_t): Ditto.
17340 (vuint8mf8_t): Ditto.
17341 (vuint8mf4_t): Ditto.
17342 (vuint8mf2_t): Ditto.
17343 (vuint8m1_t): Ditto.
17344 (vuint8m2_t): Ditto.
17345 (vuint8m4_t): Ditto.
17346 (vuint8m8_t): Ditto.
17347 (vuint16mf4_t): Ditto.
17348 (vuint16mf2_t): Ditto.
17349 (vuint16m1_t): Ditto.
17350 (vuint16m2_t): Ditto.
17351 (vuint16m4_t): Ditto.
17352 (vuint16m8_t): Ditto.
17353 (vuint32mf2_t): Ditto.
17354 (vuint32m1_t): Ditto.
17355 (vuint32m2_t): Ditto.
17356 (vuint32m4_t): Ditto.
17357 (vuint32m8_t): Ditto.
17358 (vfloat32mf2_t): Ditto.
17359 (vfloat32m1_t): Ditto.
17360 (vfloat32m2_t): Ditto.
17361 (vfloat32m4_t): Ditto.
17362 (vfloat32m8_t): Ditto.
17363 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
17364 (DEF_RVV_WU_OPS): Ditto.
17365 (DEF_RVV_WF_OPS): Ditto.
17366 (required_extensions_p): Add reduction support.
17367 (rvv_arg_type_info::get_base_vector_type): Ditto.
17368 (rvv_arg_type_info::get_tree_type): Ditto.
17369 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
17370 * config/riscv/riscv.md: Ditto.
17371 * config/riscv/vector-iterators.md (minu): Ditto.
17372 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
17373 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
17374 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
17375 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
17376 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
17377 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
17378 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
17380 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17382 * config/riscv/iterators.md: New iterator.
17383 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
17384 (enum ternop_type): New enum.
17385 (class vmacc): New class.
17386 (class imac): Ditto.
17387 (class vnmsac): Ditto.
17388 (enum widen_ternop_type): New enum.
17389 (class vmadd): Ditto.
17390 (class vnmsub): Ditto.
17391 (class iwmac): Ditto.
17392 (class vwmacc): Ditto.
17393 (class vwmaccu): Ditto.
17394 (class vwmaccsu): Ditto.
17395 (class vwmaccus): Ditto.
17396 (class reverse_binop): Ditto.
17397 (class vfmacc): Ditto.
17398 (class vfnmsac): Ditto.
17399 (class vfmadd): Ditto.
17400 (class vfnmsub): Ditto.
17401 (class vfnmacc): Ditto.
17402 (class vfmsac): Ditto.
17403 (class vfnmadd): Ditto.
17404 (class vfmsub): Ditto.
17405 (class vfwmacc): Ditto.
17406 (class vfwnmacc): Ditto.
17407 (class vfwmsac): Ditto.
17408 (class vfwnmsac): Ditto.
17409 (class float_misc): Ditto.
17410 (class fcmp): Ditto.
17411 (class vfclass): Ditto.
17412 (class vfcvt_x): Ditto.
17413 (class vfcvt_rtz_x): Ditto.
17414 (class vfcvt_f): Ditto.
17415 (class vfwcvt_x): Ditto.
17416 (class vfwcvt_rtz_x): Ditto.
17417 (class vfwcvt_f): Ditto.
17418 (class vfncvt_x): Ditto.
17419 (class vfncvt_rtz_x): Ditto.
17420 (class vfncvt_f): Ditto.
17421 (class vfncvt_rod_f): Ditto.
17423 * config/riscv/riscv-vector-builtins-bases.h:
17424 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
17468 (vfcvt_rtz_x): Ditto.
17469 (vfcvt_rtz_xu): Ditto.
17472 (vfwcvt_xu): Ditto.
17473 (vfwcvt_rtz_x): Ditto.
17474 (vfwcvt_rtz_xu): Ditto.
17477 (vfncvt_xu): Ditto.
17478 (vfncvt_rtz_x): Ditto.
17479 (vfncvt_rtz_xu): Ditto.
17481 (vfncvt_rod_f): Ditto.
17482 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
17483 (struct move_def): Ditto.
17484 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
17485 (DEF_RVV_CONVERT_I_OPS): Ditto.
17486 (DEF_RVV_CONVERT_U_OPS): Ditto.
17487 (DEF_RVV_WCONVERT_I_OPS): Ditto.
17488 (DEF_RVV_WCONVERT_U_OPS): Ditto.
17489 (DEF_RVV_WCONVERT_F_OPS): Ditto.
17490 (vfloat64m1_t): Ditto.
17491 (vfloat64m2_t): Ditto.
17492 (vfloat64m4_t): Ditto.
17493 (vfloat64m8_t): Ditto.
17494 (vint32mf2_t): Ditto.
17495 (vint32m1_t): Ditto.
17496 (vint32m2_t): Ditto.
17497 (vint32m4_t): Ditto.
17498 (vint32m8_t): Ditto.
17499 (vint64m1_t): Ditto.
17500 (vint64m2_t): Ditto.
17501 (vint64m4_t): Ditto.
17502 (vint64m8_t): Ditto.
17503 (vuint32mf2_t): Ditto.
17504 (vuint32m1_t): Ditto.
17505 (vuint32m2_t): Ditto.
17506 (vuint32m4_t): Ditto.
17507 (vuint32m8_t): Ditto.
17508 (vuint64m1_t): Ditto.
17509 (vuint64m2_t): Ditto.
17510 (vuint64m4_t): Ditto.
17511 (vuint64m8_t): Ditto.
17512 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
17513 (DEF_RVV_CONVERT_U_OPS): Ditto.
17514 (DEF_RVV_WCONVERT_I_OPS): Ditto.
17515 (DEF_RVV_WCONVERT_U_OPS): Ditto.
17516 (DEF_RVV_WCONVERT_F_OPS): Ditto.
17517 (DEF_RVV_F_OPS): Ditto.
17518 (DEF_RVV_WEXTF_OPS): Ditto.
17519 (required_extensions_p): Adjust for floating-point support.
17520 (check_required_extensions): Ditto.
17521 (unsigned_base_type_p): Ditto.
17522 (get_mode_for_bitsize): Ditto.
17523 (rvv_arg_type_info::get_base_vector_type): Ditto.
17524 (rvv_arg_type_info::get_tree_type): Ditto.
17525 * config/riscv/riscv-vector-builtins.def (v_f): New define.
17528 (xu_v): New define.
17530 (xu_w): New define.
17531 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
17532 (function_expander::arg_mode): New function.
17533 * config/riscv/vector-iterators.md (sof): New iterator.
17539 (fixuns_trunc): Ditto.
17541 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
17542 (@pred_<optab><mode>): Ditto.
17543 (@pred_<optab><mode>_scalar): Ditto.
17544 (@pred_<optab><mode>_reverse_scalar): Ditto.
17545 (@pred_<copysign><mode>): Ditto.
17546 (@pred_<copysign><mode>_scalar): Ditto.
17547 (@pred_mul_<optab><mode>): Ditto.
17548 (pred_mul_<optab><mode>_undef_merge): Ditto.
17549 (*pred_<madd_nmsub><mode>): Ditto.
17550 (*pred_<macc_nmsac><mode>): Ditto.
17551 (*pred_mul_<optab><mode>): Ditto.
17552 (@pred_mul_<optab><mode>_scalar): Ditto.
17553 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
17554 (*pred_<madd_nmsub><mode>_scalar): Ditto.
17555 (*pred_<macc_nmsac><mode>_scalar): Ditto.
17556 (*pred_mul_<optab><mode>_scalar): Ditto.
17557 (@pred_neg_mul_<optab><mode>): Ditto.
17558 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
17559 (*pred_<nmadd_msub><mode>): Ditto.
17560 (*pred_<nmacc_msac><mode>): Ditto.
17561 (*pred_neg_mul_<optab><mode>): Ditto.
17562 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
17563 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
17564 (*pred_<nmadd_msub><mode>_scalar): Ditto.
17565 (*pred_<nmacc_msac><mode>_scalar): Ditto.
17566 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
17567 (@pred_<misc_op><mode>): Ditto.
17568 (@pred_class<mode>): Ditto.
17569 (@pred_dual_widen_<optab><mode>): Ditto.
17570 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
17571 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
17572 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
17573 (@pred_widen_mul_<optab><mode>): Ditto.
17574 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
17575 (@pred_widen_neg_mul_<optab><mode>): Ditto.
17576 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
17577 (@pred_cmp<mode>): Ditto.
17578 (*pred_cmp<mode>): Ditto.
17579 (*pred_cmp<mode>_narrow): Ditto.
17580 (@pred_cmp<mode>_scalar): Ditto.
17581 (*pred_cmp<mode>_scalar): Ditto.
17582 (*pred_cmp<mode>_scalar_narrow): Ditto.
17583 (@pred_eqne<mode>_scalar): Ditto.
17584 (*pred_eqne<mode>_scalar): Ditto.
17585 (*pred_eqne<mode>_scalar_narrow): Ditto.
17586 (@pred_merge<mode>_scalar): Ditto.
17587 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
17588 (@pred_<fix_cvt><mode>): Ditto.
17589 (@pred_<float_cvt><mode>): Ditto.
17590 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
17591 (@pred_widen_<fix_cvt><mode>): Ditto.
17592 (@pred_widen_<float_cvt><mode>): Ditto.
17593 (@pred_extend<mode>): Ditto.
17594 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
17595 (@pred_narrow_<fix_cvt><mode>): Ditto.
17596 (@pred_narrow_<float_cvt><mode>): Ditto.
17597 (@pred_trunc<mode>): Ditto.
17598 (@pred_rod_trunc<mode>): Ditto.
17600 2023-02-22 Jakub Jelinek <jakub@redhat.com>
17602 PR middle-end/106258
17603 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
17604 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
17605 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
17606 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
17608 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
17610 * common.opt (-Wcomplain-wrong-lang): New.
17611 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
17612 * opts-common.cc (prune_options): Handle it.
17613 * opts-global.cc (complain_wrong_lang): Use it.
17615 2023-02-21 David Malcolm <dmalcolm@redhat.com>
17618 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
17620 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
17623 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
17625 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
17626 (sibcall_value, sibcall_value_internal): Add 'use' expression
17629 2023-02-21 Richard Biener <rguenther@suse.de>
17631 PR tree-optimization/108691
17632 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
17633 assert about calls_setjmp not becoming true when it was false.
17635 2023-02-21 Richard Biener <rguenther@suse.de>
17637 PR tree-optimization/108793
17638 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
17639 Use convert operands to niter_type when computing num.
17641 2023-02-21 Richard Biener <rguenther@suse.de>
17644 2023-02-13 Richard Biener <rguenther@suse.de>
17646 PR tree-optimization/108691
17647 * tree-cfg.cc (notice_special_calls): When the CFG is built
17648 honor gimple_call_ctrl_altering_p.
17649 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
17650 temporarily if the call is not control-altering.
17651 * calls.cc (emit_call_1): Do not add REG_SETJMP if
17652 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
17654 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
17656 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
17657 true if register A0 (return address register) when -Og is specified.
17659 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
17661 * config/i386/predicates.md
17662 (general_x64constmem_operand): New predicate.
17663 * config/i386/i386.md (*cmpqi_ext<mode>_1):
17664 Use nonimm_x64constmem_operand.
17665 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
17666 (*addqi_ext<mode>_1): Ditto.
17667 (*testqi_ext<mode>_1): Ditto.
17668 (*andqi_ext<mode>_1): Ditto.
17669 (*andqi_ext<mode>_1_cc): Ditto.
17670 (*<any_or:code>qi_ext<mode>_1): Ditto.
17671 (*xorqi_ext<mode>_1_cc): Ditto.
17673 2023-02-20 Jakub Jelinek <jakub2redhat.com>
17676 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
17677 gen_umadddi4_highpart{,_le}.
17679 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
17681 * config/riscv/riscv.md (prefetch): Use r instead of p for the
17683 (riscv_prefetchi_<mode>): Ditto.
17685 2023-02-20 Richard Biener <rguenther@suse.de>
17687 PR tree-optimization/108816
17688 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
17689 versioning condition split prerequesite, assert required
17692 2023-02-20 Richard Biener <rguenther@suse.de>
17694 PR tree-optimization/108825
17695 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
17696 loop-local verfication only verify there's no pending SSA
17699 2023-02-20 Richard Biener <rguenther@suse.de>
17701 PR tree-optimization/108819
17702 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
17703 we have an SSA name as iv_2 as expected.
17705 2023-02-18 Jakub Jelinek <jakub@redhat.com>
17707 PR tree-optimization/108819
17708 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
17710 2023-02-18 Jakub Jelinek <jakub@redhat.com>
17713 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
17714 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
17716 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
17717 with ix86_replace_reg_with_reg.
17719 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
17721 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
17723 2023-02-18 Xi Ruoyao <xry111@xry111.site>
17725 * config.gcc (triplet_abi): Set its value based on $with_abi,
17726 instead of $target.
17727 (la_canonical_triplet): Set it after $triplet_abi is set
17729 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
17730 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
17733 2023-02-18 Andrew Pinski <apinski@marvell.com>
17735 * match.pd: Remove #if GIMPLE around the
17738 2023-02-18 Andrew Pinski <apinski@marvell.com>
17740 * value-query.h (get_range_query): Return the global ranges
17741 for a nullptr func.
17743 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
17745 * doc/invoke.texi (@item -Wall): Fix typo in
17748 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
17751 * config/i386/predicates.md
17752 (nonimm_x64constmem_operand): New predicate.
17753 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
17754 (*subqi_ext<mode>_0): Ditto.
17755 (*andqi_ext<mode>_0): Ditto.
17756 (*<any_or:code>qi_ext<mode>_0): Ditto.
17758 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
17761 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
17762 int_outermode instead of GET_MODE (tem) to prevent
17763 VOIDmode from entering simplify_gen_subreg.
17765 2023-02-17 Richard Biener <rguenther@suse.de>
17767 PR tree-optimization/108821
17768 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
17769 move volatile accesses.
17771 2023-02-17 Richard Biener <rguenther@suse.de>
17773 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
17774 called on virtual operands.
17775 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
17776 ssa_undefined_value_p calls.
17777 (vn_phi_insert): Likewise.
17778 (set_ssa_val_to): Likewise.
17779 (visit_phi): Avoid extra work with equivalences for
17780 virtual operand PHIs.
17782 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17784 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
17786 (class mask_nlogic): Ditto.
17787 (class mask_notlogic): Ditto.
17788 (class vmmv): Ditto.
17789 (class vmclr): Ditto.
17790 (class vmset): Ditto.
17791 (class vmnot): Ditto.
17792 (class vcpop): Ditto.
17793 (class vfirst): Ditto.
17794 (class mask_misc): Ditto.
17795 (class viota): Ditto.
17796 (class vid): Ditto.
17798 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
17799 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
17818 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
17819 (struct mask_alu_def): Ditto.
17821 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17822 * config/riscv/riscv-vector-builtins.cc: Ditto.
17823 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
17824 for dest it scalar RVV intrinsics.
17825 * config/riscv/vector-iterators.md (sof): New iterator.
17826 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
17827 (@pred_<optab>not<mode>): New pattern.
17828 (@pred_popcount<VB:mode><P:mode>): New pattern.
17829 (@pred_ffs<VB:mode><P:mode>): New pattern.
17830 (@pred_<misc_op><mode>): New pattern.
17831 (@pred_iota<mode>): New pattern.
17832 (@pred_series<mode>): New pattern.
17834 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17836 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
17840 * config/riscv/riscv-vector-builtins.cc: Ditto.
17842 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17843 kito-cheng <kito.cheng@sifive.com>
17845 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
17846 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
17847 (sew64_scalar_helper): New function.
17848 * config/riscv/vector.md: Normalization.
17850 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17852 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
17914 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17916 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
17917 (@pred_<optab><mode>_scalar): Ditto.
17918 (*pred_<optab><mode>_scalar): Ditto.
17919 (*pred_<optab><mode>_extended_scalar): Ditto.
17921 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17923 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
17924 (init_builtins): Ditto.
17925 (mangle_builtin_type): Ditto.
17926 (verify_type_context): Ditto.
17927 (handle_pragma_vector): Ditto.
17928 (builtin_decl): Ditto.
17929 (expand_builtin): Ditto.
17930 (const_vec_all_same_in_range_p): Ditto.
17931 (legitimize_move): Ditto.
17932 (emit_vlmax_op): Ditto.
17933 (emit_nonvlmax_op): Ditto.
17934 (get_vlmul): Ditto.
17935 (get_ratio): Ditto.
17938 (get_avl_type): Ditto.
17939 (calculate_ratio): Ditto.
17940 (enum vlmul_type): Ditto.
17942 (neg_simm5_p): Ditto.
17943 (has_vi_variant_p): Ditto.
17945 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17947 * config/riscv/riscv-protos.h (simm32_p): Remove.
17948 * config/riscv/riscv-v.cc (simm32_p): Ditto.
17949 * config/riscv/vector.md: Use immediate_operand
17950 instead of riscv_vector::simm32_p.
17952 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
17954 * doc/invoke.texi (Optimize Options): Reword the explanation
17955 getting minimal, maximal and default values of a parameter.
17957 2023-02-16 Patrick Palka <ppalka@redhat.com>
17959 * addresses.h: Mechanically drop 'static' from 'static inline'
17960 functions via s/^static inline/inline/g.
17961 * asan.h: Likewise.
17962 * attribs.h: Likewise.
17963 * basic-block.h: Likewise.
17964 * bitmap.h: Likewise.
17965 * cfghooks.h: Likewise.
17966 * cfgloop.h: Likewise.
17967 * cgraph.h: Likewise.
17968 * cselib.h: Likewise.
17969 * data-streamer.h: Likewise.
17970 * debug.h: Likewise.
17972 * diagnostic.h: Likewise.
17973 * dominance.h: Likewise.
17974 * dumpfile.h: Likewise.
17975 * emit-rtl.h: Likewise.
17976 * except.h: Likewise.
17977 * expmed.h: Likewise.
17978 * expr.h: Likewise.
17979 * fixed-value.h: Likewise.
17980 * gengtype.h: Likewise.
17981 * gimple-expr.h: Likewise.
17982 * gimple-iterator.h: Likewise.
17983 * gimple-predict.h: Likewise.
17984 * gimple-range-fold.h: Likewise.
17985 * gimple-ssa.h: Likewise.
17986 * gimple.h: Likewise.
17987 * graphite.h: Likewise.
17988 * hard-reg-set.h: Likewise.
17989 * hash-map.h: Likewise.
17990 * hash-set.h: Likewise.
17991 * hash-table.h: Likewise.
17992 * hwint.h: Likewise.
17993 * input.h: Likewise.
17994 * insn-addr.h: Likewise.
17995 * internal-fn.h: Likewise.
17996 * ipa-fnsummary.h: Likewise.
17997 * ipa-icf-gimple.h: Likewise.
17998 * ipa-inline.h: Likewise.
17999 * ipa-modref.h: Likewise.
18000 * ipa-prop.h: Likewise.
18001 * ira-int.h: Likewise.
18003 * lra-int.h: Likewise.
18005 * lto-streamer.h: Likewise.
18006 * memmodel.h: Likewise.
18007 * omp-general.h: Likewise.
18008 * optabs-query.h: Likewise.
18009 * optabs.h: Likewise.
18010 * plugin.h: Likewise.
18011 * pretty-print.h: Likewise.
18012 * range.h: Likewise.
18013 * read-md.h: Likewise.
18014 * recog.h: Likewise.
18015 * regs.h: Likewise.
18016 * rtl-iter.h: Likewise.
18018 * sbitmap.h: Likewise.
18019 * sched-int.h: Likewise.
18020 * sel-sched-ir.h: Likewise.
18021 * sese.h: Likewise.
18022 * sparseset.h: Likewise.
18023 * ssa-iterators.h: Likewise.
18024 * system.h: Likewise.
18025 * target-globals.h: Likewise.
18026 * target.h: Likewise.
18027 * timevar.h: Likewise.
18028 * tree-chrec.h: Likewise.
18029 * tree-data-ref.h: Likewise.
18030 * tree-iterator.h: Likewise.
18031 * tree-outof-ssa.h: Likewise.
18032 * tree-phinodes.h: Likewise.
18033 * tree-scalar-evolution.h: Likewise.
18034 * tree-sra.h: Likewise.
18035 * tree-ssa-alias.h: Likewise.
18036 * tree-ssa-live.h: Likewise.
18037 * tree-ssa-loop-manip.h: Likewise.
18038 * tree-ssa-loop.h: Likewise.
18039 * tree-ssa-operands.h: Likewise.
18040 * tree-ssa-propagate.h: Likewise.
18041 * tree-ssa-sccvn.h: Likewise.
18042 * tree-ssa.h: Likewise.
18043 * tree-ssanames.h: Likewise.
18044 * tree-streamer.h: Likewise.
18045 * tree-switch-conversion.h: Likewise.
18046 * tree-vectorizer.h: Likewise.
18047 * tree.h: Likewise.
18048 * wide-int.h: Likewise.
18050 2023-02-16 Jakub Jelinek <jakub@redhat.com>
18052 PR tree-optimization/108657
18053 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
18054 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
18055 is a call to internal or builtin function.
18057 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
18059 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
18060 using-declaration to unhide functions.
18062 2023-02-16 Jakub Jelinek <jakub@redhat.com>
18064 PR tree-optimization/108783
18065 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
18066 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
18067 t to curr->op. Otherwise, punt if either newop1 or newop2 are
18068 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
18070 2023-02-16 Richard Biener <rguenther@suse.de>
18072 PR tree-optimization/108791
18073 * tree-ssa-forwprop.cc (optimize_vector_load): Build
18074 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
18077 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
18080 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
18081 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
18082 (ix86_expand_prologue): Likewise.
18084 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
18086 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
18088 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
18090 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
18091 int248_register_operand predicate in zero_extract sub-RTX.
18092 (*cmpqi_ext<mode>_2): Ditto.
18093 (*cmpqi_ext<mode>_3): Ditto.
18094 (*cmpqi_ext<mode>_4): Ditto.
18095 (*extzvqi_mem_rex64): Ditto.
18097 (*insvqi_1_mem_rex64): Ditto.
18098 (@insv<mode>_1): Ditto.
18099 (*insvqi_1): Ditto.
18100 (*insvqi_2): Ditto.
18101 (*insvqi_3): Ditto.
18102 (*extendqi<SWI24:mode>_ext_1): Ditto.
18103 (*addqi_ext<mode>_1): Ditto.
18104 (*addqi_ext<mode>_2): Ditto.
18105 (*subqi_ext<mode>_2): Ditto.
18106 (*testqi_ext<mode>_1): Ditto.
18107 (*testqi_ext<mode>_2): Ditto.
18108 (*andqi_ext<mode>_1): Ditto.
18109 (*andqi_ext<mode>_1_cc): Ditto.
18110 (*andqi_ext<mode>_2): Ditto.
18111 (*<any_or:code>qi_ext<mode>_1): Ditto.
18112 (*<any_or:code>qi_ext<mode>_2): Ditto.
18113 (*xorqi_ext<mode>_1_cc): Ditto.
18114 (*negqi_ext<mode>_2): Ditto.
18115 (*ashlqi_ext<mode>_2): Ditto.
18116 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
18118 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
18120 * config/i386/predicates.md (int248_register_operand):
18121 Rename from extr_register_operand.
18122 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
18123 (*extzx<mode>): Ditto.
18124 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
18125 (*ashl<mode>3_mask): Ditto.
18126 (*<any_shiftrt:insn><mode>3_mask): Ditto.
18127 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
18128 (*<any_rotate:insn><mode>3_mask): Ditto.
18129 (*<btsc><mode>_mask): Ditto.
18130 (*btr<mode>_mask): Ditto.
18131 (*jcc_bt<mode>_mask_1): Ditto.
18133 2023-02-15 Richard Biener <rguenther@suse.de>
18135 PR middle-end/26854
18136 * df-core.cc (df_worklist_propagate_forward): Put later
18137 blocks on worklist and only earlier blocks on pending.
18138 (df_worklist_propagate_backward): Likewise.
18139 (df_worklist_dataflow_doublequeue): Change the iteration
18140 to process new blocks in the same iteration if that
18141 maintains the iteration order.
18143 2023-02-15 Marek Polacek <polacek@redhat.com>
18145 PR middle-end/106080
18146 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
18149 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18151 * config/riscv/predicates.md: Refine codes.
18152 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
18153 * config/riscv/riscv-v.cc: Refine codes.
18154 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
18156 (class imac): New class.
18157 (enum widen_ternop_type): New enum.
18158 (class iwmac): New class.
18160 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18161 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
18169 * config/riscv/riscv-vector-builtins.cc
18170 (function_builder::apply_predication): Adjust for multiply-add support.
18171 (function_expander::add_vundef_operand): Refine codes.
18172 (function_expander::use_ternop_insn): New function.
18173 (function_expander::use_widen_ternop_insn): Ditto.
18174 * config/riscv/riscv-vector-builtins.h: New function.
18175 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
18176 (pred_mul_<optab><mode>_undef_merge): Ditto.
18177 (*pred_<madd_nmsub><mode>): Ditto.
18178 (*pred_<macc_nmsac><mode>): Ditto.
18179 (*pred_mul_<optab><mode>): Ditto.
18180 (@pred_mul_<optab><mode>_scalar): Ditto.
18181 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
18182 (*pred_<madd_nmsub><mode>_scalar): Ditto.
18183 (*pred_<macc_nmsac><mode>_scalar): Ditto.
18184 (*pred_mul_<optab><mode>_scalar): Ditto.
18185 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
18186 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
18187 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
18188 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
18189 (@pred_widen_mul_plus<su><mode>): Ditto.
18190 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
18191 (@pred_widen_mul_plussu<mode>): Ditto.
18192 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
18193 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
18195 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18197 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
18198 (vector_all_trues_mask_operand): New predicate.
18199 (vector_undef_operand): New predicate.
18200 (ltge_operator): New predicate.
18201 (comparison_except_ltge_operator): New predicate.
18202 (comparison_except_eqge_operator): New predicate.
18203 (ge_operator): New predicate.
18204 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
18205 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
18207 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18208 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
18218 * config/riscv/riscv-vector-builtins-shapes.cc
18219 (struct return_mask_def): Adjust for compare support.
18220 * config/riscv/riscv-vector-builtins.cc
18221 (function_expander::use_compare_insn): New function.
18222 * config/riscv/riscv-vector-builtins.h
18223 (function_expander::add_integer_operand): Ditto.
18224 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
18225 * config/riscv/riscv.md: Add vector min/max attributes.
18226 * config/riscv/vector-iterators.md (xnor): New iterator.
18227 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
18228 (*pred_cmp<mode>): Ditto.
18229 (*pred_cmp<mode>_narrow): Ditto.
18230 (@pred_ltge<mode>): Ditto.
18231 (*pred_ltge<mode>): Ditto.
18232 (*pred_ltge<mode>_narrow): Ditto.
18233 (@pred_cmp<mode>_scalar): Ditto.
18234 (*pred_cmp<mode>_scalar): Ditto.
18235 (*pred_cmp<mode>_scalar_narrow): Ditto.
18236 (@pred_eqne<mode>_scalar): Ditto.
18237 (*pred_eqne<mode>_scalar): Ditto.
18238 (*pred_eqne<mode>_scalar_narrow): Ditto.
18239 (*pred_cmp<mode>_extended_scalar): Ditto.
18240 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
18241 (*pred_eqne<mode>_extended_scalar): Ditto.
18242 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
18243 (@pred_ge<mode>_scalar): Ditto.
18244 (@pred_<optab><mode>): Ditto.
18245 (@pred_n<optab><mode>): Ditto.
18246 (@pred_<optab>n<mode>): Ditto.
18247 (@pred_not<mode>): Ditto.
18249 2023-02-15 Martin Jambor <mjambor@suse.cz>
18252 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
18253 creation of non-scalar replacements even if IPA-CP knows their
18256 2023-02-15 Jakub Jelinek <jakub@redhat.com>
18260 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
18261 expander, change operand 3 to be TImode, emit maddlddi4 and
18262 umadddi4_highpart{,_le} with its low half and finally add the high
18263 half to the result.
18265 2023-02-15 Martin Liska <mliska@suse.cz>
18267 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
18269 2023-02-15 Richard Biener <rguenther@suse.de>
18271 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
18272 for with_poison and alias worklist to it.
18273 (sanitize_asan_mark_poison): Likewise.
18275 2023-02-15 Richard Biener <rguenther@suse.de>
18278 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
18279 Combine bitmap test and set.
18280 (scalar_chain::add_insn): Likewise.
18281 (scalar_chain::analyze_register_chain): Remove redundant
18282 attempt to add to queue and instead strengthen assert.
18283 Sink common attempts to mark the def dual-mode.
18284 (scalar_chain::add_to_queue): Remove redundant insn bitmap
18287 2023-02-15 Richard Biener <rguenther@suse.de>
18290 * config/i386/i386-features.cc (convert_scalars_to_vector):
18291 Switch candidates bitmaps to tree view before building the chains.
18293 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
18295 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
18296 "failure trying to reload" call.
18298 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
18300 * gdbinit.in (phrs): New command.
18301 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
18302 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
18304 2023-02-14 David Faust <david.faust@oracle.com>
18307 * config/bpf/constraints.md (q): New memory constraint.
18308 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
18309 (zero_extendqidi2): Likewise.
18310 (zero_extendsidi2): Likewise.
18311 (*mov<MM:mode>): Likewise.
18313 2023-02-14 Andrew Pinski <apinski@marvell.com>
18315 PR tree-optimization/108355
18316 PR tree-optimization/96921
18317 * match.pd: Add pattern for "1 - bool_val".
18319 2023-02-14 Richard Biener <rguenther@suse.de>
18321 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
18322 basic block index hashing on the availability of ->cclhs.
18323 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
18324 rely on ->cclhs availability.
18325 (vn_phi_lookup): Set ->cclhs only when we are eventually
18326 going to CSE the PHI.
18327 (vn_phi_insert): Likewise.
18329 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
18331 * gimplify.cc (gimplify_save_expr): Add missing guard.
18333 2023-02-14 Richard Biener <rguenther@suse.de>
18335 PR tree-optimization/108782
18336 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
18337 Make sure we're not vectorizing an inner loop.
18339 2023-02-14 Jakub Jelinek <jakub@redhat.com>
18341 PR sanitizer/108777
18342 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
18343 * asan.h (asan_memfn_rtl): Declare.
18344 * asan.cc (asan_memfn_rtls): New variable.
18345 (asan_memfn_rtl): New function.
18346 * builtins.cc (expand_builtin): If
18347 param_asan_kernel_mem_intrinsic_prefix and function is
18348 kernel-{,hw}address sanitized, emit calls to
18349 __{,hw}asan_{memcpy,memmove,memset} rather than
18350 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
18351 instead of flag_sanitize & SANITIZE_ADDRESS to check if
18352 asan_intercepted_p functions shouldn't be expanded inline.
18354 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
18356 PR tree-optimization/96373
18357 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
18358 operations on the loop mask. Reject partial vectors if this isn't
18361 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
18363 PR rtl-optimization/108681
18364 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
18365 code to handle bare uses and clobbers.
18367 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
18369 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
18370 caller_save_p flag when clearing defined_p flag.
18371 (setup_reg_equiv): Ditto.
18372 * lra-constraints.cc (lra_constraints): Ditto.
18374 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
18377 * config/i386/predicates.md (extr_register_operand):
18378 New special predicate.
18379 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
18380 as operand 1 predicate.
18381 (*exzv<mode>): Ditto.
18382 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
18384 2023-02-13 Richard Biener <rguenther@suse.de>
18386 PR tree-optimization/28614
18387 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
18388 walking all edges in most cases.
18389 (vn_nary_op_insert_pieces_predicated): Avoid repeated
18390 calls to can_track_predicate_on_edge unless checking is
18392 (process_bb): Instead call it once here for each edge
18393 we register possibly multiple predicates on.
18395 2023-02-13 Richard Biener <rguenther@suse.de>
18397 PR tree-optimization/108691
18398 * tree-cfg.cc (notice_special_calls): When the CFG is built
18399 honor gimple_call_ctrl_altering_p.
18400 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
18401 temporarily if the call is not control-altering.
18402 * calls.cc (emit_call_1): Do not add REG_SETJMP if
18403 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
18405 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
18408 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
18409 (struct s390_sched_state): Initialise to zero.
18410 (s390_sched_variable_issue): For better debuggability also emit
18412 (s390_sched_init): Unconditionally reset scheduler state.
18414 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
18416 * ifcvt.h (noce_if_info::cond_inverted): New field.
18417 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
18418 values when cond_inverted is true.
18419 (noce_find_if_block): Allow the condition to be inverted when
18420 handling conditional moves.
18422 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
18424 * config/s390/predicates.md (execute_operation): Use
18425 constrain_operands instead of extract_constrain_insn in order to
18426 determine wheter there exists a valid alternative.
18428 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
18430 * common/config/arc/arc-common.cc (arc_option_optimization_table):
18431 Remove millicode from list.
18433 2023-02-13 Martin Liska <mliska@suse.cz>
18435 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
18437 2023-02-13 Richard Biener <rguenther@suse.de>
18439 PR tree-optimization/106722
18440 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
18441 whether we marked a stmt.
18442 (mark_control_dependent_edges_necessary): When
18443 mark_last_stmt_necessary didn't mark any stmt make sure
18444 to mark its control dependent edges.
18445 (propagate_necessity): Likewise.
18447 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
18449 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
18450 (DWARF_FRAME_REGISTERS): New.
18451 (DWARF_REG_TO_UNWIND_COLUMN): New.
18453 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
18455 * doc/sourcebuild.texi: Remove (broken) direct reference to
18456 "The GNU configure and build system".
18458 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
18460 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
18461 gen_add3_insn to gen_rtx_SET.
18462 (riscv_adjust_libcall_cfi_epilogue): Likewise.
18464 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18466 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
18467 (class vnclip): Ditto.
18469 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18470 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
18479 * config/riscv/vector-iterators.md (su): Add instruction.
18482 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
18483 (@pred_<sat_op><mode>_scalar): Ditto.
18484 (*pred_<sat_op><mode>_scalar): Ditto.
18485 (*pred_<sat_op><mode>_extended_scalar): Ditto.
18486 (@pred_narrow_clip<v_su><mode>): Ditto.
18487 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
18489 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18491 * config/riscv/constraints.md (Wbr): Remove unused constraint.
18492 * config/riscv/predicates.md: Fix move operand predicate.
18493 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
18494 (class vncvt_x): Ditto.
18495 (class vmerge): Ditto.
18496 (class vmv_v): Ditto.
18498 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18499 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
18506 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
18507 (struct move_def): Ditto.
18509 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18510 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
18511 (DEF_RVV_WEXTU_OPS): Ditto
18512 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
18517 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
18518 * config/riscv/vector-iterators.md (nmsac):New iterator.
18519 (nmsub): New iterator.
18520 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
18521 (@pred_merge<mode>_scalar): New pattern.
18522 (*pred_merge<mode>_scalar): New pattern.
18523 (*pred_merge<mode>_extended_scalar): New pattern.
18524 (@pred_narrow_<optab><mode>): New pattern.
18525 (@pred_narrow_<optab><mode>_scalar): New pattern.
18526 (@pred_trunc<mode>): New pattern.
18528 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18530 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
18531 (class vmsbc): Ditto.
18532 (BASE): Define new class.
18533 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18534 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
18536 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
18539 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18540 * config/riscv/riscv-vector-builtins.cc
18541 (function_expander::use_exact_insn): Adjust for new support
18542 * config/riscv/riscv-vector-builtins.h
18543 (function_base::has_merge_operand_p): New function.
18544 * config/riscv/vector-iterators.md: New iterator.
18545 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
18546 (@pred_msbc<mode>): Ditto.
18547 (@pred_madc<mode>_scalar): Ditto.
18548 (@pred_msbc<mode>_scalar): Ditto.
18549 (*pred_madc<mode>_scalar): Ditto.
18550 (*pred_madc<mode>_extended_scalar): Ditto.
18551 (*pred_msbc<mode>_scalar): Ditto.
18552 (*pred_msbc<mode>_extended_scalar): Ditto.
18553 (@pred_madc<mode>_overflow): Ditto.
18554 (@pred_msbc<mode>_overflow): Ditto.
18555 (@pred_madc<mode>_overflow_scalar): Ditto.
18556 (@pred_msbc<mode>_overflow_scalar): Ditto.
18557 (*pred_madc<mode>_overflow_scalar): Ditto.
18558 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
18559 (*pred_msbc<mode>_overflow_scalar): Ditto.
18560 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
18562 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18564 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
18565 * config/riscv/riscv-v.cc (simm32_p): Ditto.
18566 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
18567 (class vsbc): Ditto.
18569 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18570 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
18572 * config/riscv/riscv-vector-builtins-shapes.cc
18573 (struct no_mask_policy_def): Ditto.
18575 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18576 * config/riscv/riscv-vector-builtins.cc
18577 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
18578 (rvv_arg_type_info::get_tree_type): Ditto.
18579 (function_expander::use_exact_insn): Ditto.
18580 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
18581 (function_base::use_mask_predication_p): New function.
18582 * config/riscv/vector-iterators.md: New iterator.
18583 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
18584 (@pred_sbc<mode>): Ditto.
18585 (@pred_adc<mode>_scalar): Ditto.
18586 (@pred_sbc<mode>_scalar): Ditto.
18587 (*pred_adc<mode>_scalar): Ditto.
18588 (*pred_adc<mode>_extended_scalar): Ditto.
18589 (*pred_sbc<mode>_scalar): Ditto.
18590 (*pred_sbc<mode>_extended_scalar): Ditto.
18592 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18594 * config/riscv/vector.md: use "zero" reg.
18596 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18598 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
18600 (class vwmulsu): Ditto.
18601 (class vwcvt): Ditto.
18602 (BASE): Add integer widening support.
18603 * config/riscv/riscv-vector-builtins-bases.h: Ditto
18604 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
18605 (vwsub): New class.
18606 (vwmul): New class.
18607 (vwmulu): New class.
18608 (vwmulsu): New class.
18609 (vwaddu): New class.
18610 (vwsubu): New class.
18611 (vwcvt_x): New class.
18612 (vwcvtu_x): New class.
18613 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
18615 (struct widen_alu_def): New class.
18616 (SHAPE): New class.
18617 * config/riscv/riscv-vector-builtins-shapes.h: New class.
18618 * config/riscv/riscv-vector-builtins.cc
18619 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
18620 (rvv_arg_type_info::get_tree_type): Ditto.
18621 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
18623 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
18625 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
18626 * config/riscv/riscv.h (X0_REGNUM): New constant.
18627 * config/riscv/vector-iterators.md: New iterators.
18628 * config/riscv/vector.md
18629 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
18631 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
18633 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
18634 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
18636 (@pred_widen_mulsu<mode>): Ditto.
18637 (@pred_widen_mulsu<mode>_scalar): Ditto.
18638 (@pred_<optab><mode>): Ditto.
18640 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18641 kito-cheng <kito.cheng@sifive.com>
18643 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
18644 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
18646 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18647 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
18651 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
18653 (DEF_RVV_FULL_V_U_OPS): Ditto.
18654 (vint8mf8_t): Ditto.
18655 (vint8mf4_t): Ditto.
18656 (vint8mf2_t): Ditto.
18657 (vint8m1_t): Ditto.
18658 (vint8m2_t): Ditto.
18659 (vint8m4_t): Ditto.
18660 (vint8m8_t): Ditto.
18661 (vint16mf4_t): Ditto.
18662 (vint16mf2_t): Ditto.
18663 (vint16m1_t): Ditto.
18664 (vint16m2_t): Ditto.
18665 (vint16m4_t): Ditto.
18666 (vint16m8_t): Ditto.
18667 (vint32mf2_t): Ditto.
18668 (vint32m1_t): Ditto.
18669 (vint32m2_t): Ditto.
18670 (vint32m4_t): Ditto.
18671 (vint32m8_t): Ditto.
18672 (vint64m1_t): Ditto.
18673 (vint64m2_t): Ditto.
18674 (vint64m4_t): Ditto.
18675 (vint64m8_t): Ditto.
18676 (vuint8mf8_t): Ditto.
18677 (vuint8mf4_t): Ditto.
18678 (vuint8mf2_t): Ditto.
18679 (vuint8m1_t): Ditto.
18680 (vuint8m2_t): Ditto.
18681 (vuint8m4_t): Ditto.
18682 (vuint8m8_t): Ditto.
18683 (vuint16mf4_t): Ditto.
18684 (vuint16mf2_t): Ditto.
18685 (vuint16m1_t): Ditto.
18686 (vuint16m2_t): Ditto.
18687 (vuint16m4_t): Ditto.
18688 (vuint16m8_t): Ditto.
18689 (vuint32mf2_t): Ditto.
18690 (vuint32m1_t): Ditto.
18691 (vuint32m2_t): Ditto.
18692 (vuint32m4_t): Ditto.
18693 (vuint32m8_t): Ditto.
18694 (vuint64m1_t): Ditto.
18695 (vuint64m2_t): Ditto.
18696 (vuint64m4_t): Ditto.
18697 (vuint64m8_t): Ditto.
18698 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
18699 (DEF_RVV_FULL_V_U_OPS): Ditto.
18700 (check_required_extensions): Add vmulh support.
18701 (rvv_arg_type_info::get_tree_type): Ditto.
18702 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
18703 (enum rvv_base_type): Ditto.
18704 * config/riscv/riscv.opt: Add 'V' extension flag.
18705 * config/riscv/vector-iterators.md (su): New iterator.
18706 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
18707 (@pred_mulh<v_su><mode>_scalar): Ditto.
18708 (*pred_mulh<v_su><mode>_scalar): Ditto.
18709 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
18711 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18713 * config/riscv/iterators.md: Add sign_extend/zero_extend.
18714 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
18716 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
18717 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
18720 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
18721 for vsext/vzext support.
18722 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
18724 (DEF_RVV_QEXTI_OPS): Ditto.
18725 (DEF_RVV_OEXTI_OPS): Ditto.
18726 (DEF_RVV_WEXTU_OPS): Ditto.
18727 (DEF_RVV_QEXTU_OPS): Ditto.
18728 (DEF_RVV_OEXTU_OPS): Ditto.
18729 (vint16mf4_t): Ditto.
18730 (vint16mf2_t): Ditto.
18731 (vint16m1_t): Ditto.
18732 (vint16m2_t): Ditto.
18733 (vint16m4_t): Ditto.
18734 (vint16m8_t): Ditto.
18735 (vint32mf2_t): Ditto.
18736 (vint32m1_t): Ditto.
18737 (vint32m2_t): Ditto.
18738 (vint32m4_t): Ditto.
18739 (vint32m8_t): Ditto.
18740 (vint64m1_t): Ditto.
18741 (vint64m2_t): Ditto.
18742 (vint64m4_t): Ditto.
18743 (vint64m8_t): Ditto.
18744 (vuint16mf4_t): Ditto.
18745 (vuint16mf2_t): Ditto.
18746 (vuint16m1_t): Ditto.
18747 (vuint16m2_t): Ditto.
18748 (vuint16m4_t): Ditto.
18749 (vuint16m8_t): Ditto.
18750 (vuint32mf2_t): Ditto.
18751 (vuint32m1_t): Ditto.
18752 (vuint32m2_t): Ditto.
18753 (vuint32m4_t): Ditto.
18754 (vuint32m8_t): Ditto.
18755 (vuint64m1_t): Ditto.
18756 (vuint64m2_t): Ditto.
18757 (vuint64m4_t): Ditto.
18758 (vuint64m8_t): Ditto.
18759 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
18760 (DEF_RVV_QEXTI_OPS): Ditto.
18761 (DEF_RVV_OEXTI_OPS): Ditto.
18762 (DEF_RVV_WEXTU_OPS): Ditto.
18763 (DEF_RVV_QEXTU_OPS): Ditto.
18764 (DEF_RVV_OEXTU_OPS): Ditto.
18765 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
18767 (rvv_arg_type_info::get_tree_type): Ditto.
18768 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
18769 * config/riscv/vector-iterators.md (z): New attribute.
18770 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
18771 (@pred_<optab><mode>_vf4): Ditto.
18772 (@pred_<optab><mode>_vf8): Ditto.
18774 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18776 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
18777 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
18778 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
18779 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18780 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
18784 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
18789 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
18790 (@pred_<optab><mode>_scalar): New pattern.
18791 (*pred_<optab><mode>_scalar): New pattern.
18792 (*pred_<optab><mode>_extended_scalar): New pattern.
18794 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18796 * config/riscv/iterators.md: Add neg and not.
18797 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
18799 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18800 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
18821 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
18822 (struct alu_def): Ditto.
18824 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18825 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
18826 * config/riscv/vector-iterators.md: New iterator.
18827 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
18829 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18831 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
18833 2023-02-11 Jakub Jelinek <jakub@redhat.com>
18836 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
18837 item->offset bit position is too large to be representable as
18838 unsigned int byte position.
18840 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
18842 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
18844 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
18846 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
18847 valid_combine only when ira_use_lra_p is true.
18849 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
18851 * params.opt (ira-simple-lra-insn-threshold): Add new param.
18852 * ira.cc (ira): Use the param to switch on simple LRA.
18854 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
18856 PR tree-optimization/108687
18857 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
18858 back to RFD_NONE mode for calculations.
18859 (ranger_cache::propagate_cache): Call the internal edge range API
18860 with RFD_READ_ONLY instead of changing the external routine.
18862 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
18864 PR tree-optimization/108520
18865 * gimple-range-infer.cc (check_assume_func): Invoke
18866 gimple_range_global directly instead using global_range_query.
18867 * value-query.cc (get_range_global): Add function context and
18868 avoid calling nonnull_arg_p if not cfun.
18869 (gimple_range_global): Add function context pointer.
18870 * value-query.h (imple_range_global): Add function context.
18872 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18874 * config/riscv/constraints.md (Wdm): Adjust constraint.
18875 (Wbr): New constraint.
18876 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
18877 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
18878 (emit_vlmax_op): New function.
18879 (emit_nonvlmax_op): Ditto.
18881 (neg_simm5_p): Ditto.
18882 (has_vi_variant_p): Ditto.
18883 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
18884 (emit_vlmax_op): New function.
18885 (emit_nonvlmax_op): Ditto.
18886 (expand_const_vector): Adjust function.
18887 (legitimize_move): Ditto.
18888 (simm32_p): New function.
18890 (neg_simm5_p): Ditto.
18891 (has_vi_variant_p): Ditto.
18892 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
18894 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18895 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
18898 (vminu): Remove signed cases.
18900 (vdiv): Remove unsigned cases.
18902 (vdivu): Remove signed cases.
18906 (vrsub): New class.
18911 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
18912 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
18913 * config/riscv/vector-iterators.md: New iterators.
18914 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
18916 (@pred_<optab><mode>_scalar): New pattern.
18917 (@pred_sub<mode>_reverse_scalar): Ditto.
18918 (*pred_<optab><mode>_scalar): Ditto.
18919 (*pred_<optab><mode>_extended_scalar): Ditto.
18920 (*pred_sub<mode>_reverse_scalar): Ditto.
18921 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
18923 2023-02-10 Richard Biener <rguenther@suse.de>
18925 PR tree-optimization/108724
18926 * tree-vect-stmts.cc (vectorizable_operation): Avoid
18927 using word_mode vectors when vector lowering will
18928 decompose them to elementwise operations.
18930 2023-02-10 Jakub Jelinek <jakub@redhat.com>
18933 2023-02-09 Martin Liska <mliska@suse.cz>
18936 * doc/extend.texi: Document that the function
18937 does not work correctly for old VIA processors.
18939 2023-02-10 Andrew Pinski <apinski@marvell.com>
18940 Andrew Macleod <amacleod@redhat.com>
18942 PR tree-optimization/108684
18943 * tree-ssa-dce.cc (simple_dce_from_worklist):
18944 Check all ssa names and not just non-vdef ones
18945 before accepting the inline-asm.
18946 Call unlink_stmt_vdef on the statement before
18949 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
18951 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
18952 * ira.cc (validate_equiv_mem): Check memref address variance.
18953 (no_equiv): Clear caller_save_p flag.
18954 (update_equiv_regs): Define caller save equivalence for
18956 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
18957 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
18958 call_save_p. Use caller save equivalence depending on the arg.
18959 (split_reg): Adjust the call.
18961 2023-02-09 Jakub Jelinek <jakub@redhat.com>
18964 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
18965 (cpu_indicator_init): Call get_available_features for all CPUs with
18966 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
18969 2023-02-09 Jakub Jelinek <jakub@redhat.com>
18971 PR tree-optimization/108688
18972 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
18973 of BIT_INSERT_EXPR extracting exactly all inserted bits even
18974 when without mode precision. Formatting fixes.
18976 2023-02-09 Andrew Pinski <apinski@marvell.com>
18978 PR tree-optimization/108688
18979 * match.pd (bit_field_ref [bit_insert]): Avoid generating
18980 BIT_FIELD_REFs of non-mode-precision integral operands.
18982 2023-02-09 Martin Liska <mliska@suse.cz>
18985 * doc/extend.texi: Document that the function
18986 does not work correctly for old VIA processors.
18988 2023-02-09 Andreas Schwab <schwab@suse.de>
18990 * lto-wrapper.cc (merge_and_complain): Handle
18991 -funwind-tables and -fasynchronous-unwind-tables.
18992 (append_compiler_options): Likewise.
18994 2023-02-09 Richard Biener <rguenther@suse.de>
18996 PR tree-optimization/26854
18997 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
18998 view around insert_updated_phi_nodes_for.
18999 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
19001 (walk_aliased_vdefs_1): Likewise.
19003 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
19005 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
19007 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
19010 * config.gcc (tm_mlib_file): Define new variable.
19012 2023-02-08 Jakub Jelinek <jakub@redhat.com>
19014 PR tree-optimization/108692
19015 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
19016 widened_code which is different from code, don't call
19017 vect_look_through_possible_promotion but instead just check op is
19018 SSA_NAME with integral type for which vect_is_simple_use is true
19019 and call set_op on this_unprom.
19021 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
19023 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
19025 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
19027 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
19028 to 'aarch_ra_sign_key'.
19029 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
19031 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
19032 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
19033 * config/arm/arm.opt: Define.
19035 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
19037 PR tree-optimization/108316
19038 * tree-vect-stmts.cc (get_load_store_type): When using
19039 internal functions for gather/scatter, make sure that the type
19040 of the offset argument is consistent with the offset vector type.
19042 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
19045 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
19047 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
19048 * ira.cc (validate_equiv_mem): Check memref address variance.
19049 (update_equiv_regs): Define caller save equivalence for
19051 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
19052 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
19053 call_save_p. Use caller save equivalence depending on the arg.
19054 (split_reg): Adjust the call.
19056 2023-02-08 Jakub Jelinek <jakub@redhat.com>
19058 * tree.def (SAD_EXPR): Remove outdated comment about missing
19061 2023-02-07 Marek Polacek <polacek@redhat.com>
19063 * doc/invoke.texi: Update -fchar8_t documentation.
19065 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
19067 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
19068 * ira.cc (validate_equiv_mem): Check memref address variance.
19069 (update_equiv_regs): Define caller save equivalence for
19071 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
19072 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
19073 call_save_p. Use caller save equivalence depending on the arg.
19074 (split_reg): Adjust the call.
19076 2023-02-07 Richard Biener <rguenther@suse.de>
19078 PR tree-optimization/26854
19079 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
19080 instead of immediate uses.
19082 2023-02-07 Jakub Jelinek <jakub@redhat.com>
19084 PR tree-optimization/106923
19085 * ipa-split.cc (execute_split_functions): Don't split returns_twice
19088 2023-02-07 Jakub Jelinek <jakub@redhat.com>
19090 PR tree-optimization/106433
19091 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
19092 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
19094 2023-02-07 Jan Hubicka <jh@suse.cz>
19096 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
19099 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
19101 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
19102 (process_asm): Create a constructor for GCN_STACK_SIZE.
19103 (main): Parse the -mstack-size option.
19105 2023-02-06 Alex Coplan <alex.coplan@arm.com>
19108 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
19109 Use correct constraint for operand 3.
19111 2023-02-06 Martin Jambor <mjambor@suse.cz>
19113 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
19115 2023-02-06 Xi Ruoyao <xry111@xry111.site>
19117 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
19118 New define_int_iterator.
19119 (bytepick_d_ashift_amount): Likewise.
19120 (bytepick_imm): New define_int_attr.
19121 (bytepick_w_lshiftrt_amount): Likewise.
19122 (bytepick_d_lshiftrt_amount): Likewise.
19123 (bytepick_w_<bytepick_imm>): New define_insn template.
19124 (bytepick_w_<bytepick_imm>_extend): Likewise.
19125 (bytepick_d_<bytepick_imm>): Likewise.
19126 (bytepick_w): Remove unused define_insn.
19127 (bytepick_d): Likewise.
19128 (UNSPEC_BYTEPICK_W): Remove unused unspec.
19129 (UNSPEC_BYTEPICK_D): Likewise.
19130 * config/loongarch/predicates.md (const_0_to_3_operand):
19131 Remove unused define_predicate.
19132 (const_0_to_7_operand): Likewise.
19134 2023-02-06 Jakub Jelinek <jakub@redhat.com>
19136 PR tree-optimization/108655
19137 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
19138 or -fsanitize=unreachable -fsanitize-trap=unreachable return
19139 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
19141 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
19143 * doc/install.texi (Specific): Remove PW32.
19145 2023-02-03 Jakub Jelinek <jakub@redhat.com>
19147 PR tree-optimization/108647
19148 * range-op.cc (operator_equal::op1_range,
19149 operator_not_equal::op1_range): Don't test op2 bound
19150 equality if op2.undefined_p (), instead set_varying.
19151 (operator_lt::op1_range, operator_le::op1_range,
19152 operator_gt::op1_range, operator_ge::op1_range): Return false if
19153 op2.undefined_p ().
19154 (operator_lt::op2_range, operator_le::op2_range,
19155 operator_gt::op2_range, operator_ge::op2_range): Return false if
19156 op1.undefined_p ().
19158 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
19160 PR tree-optimization/108639
19161 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
19163 (irange::operator==): Same.
19165 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
19167 PR tree-optimization/108647
19168 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
19169 (foperator_lt::op2_range): Same.
19170 (foperator_le::op1_range): Same.
19171 (foperator_le::op2_range): Same.
19172 (foperator_gt::op1_range): Same.
19173 (foperator_gt::op2_range): Same.
19174 (foperator_ge::op1_range): Same.
19175 (foperator_ge::op2_range): Same.
19176 (foperator_unordered_lt::op1_range): Same.
19177 (foperator_unordered_lt::op2_range): Same.
19178 (foperator_unordered_le::op1_range): Same.
19179 (foperator_unordered_le::op2_range): Same.
19180 (foperator_unordered_gt::op1_range): Same.
19181 (foperator_unordered_gt::op2_range): Same.
19182 (foperator_unordered_ge::op1_range): Same.
19183 (foperator_unordered_ge::op2_range): Same.
19185 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
19187 PR tree-optimization/107570
19188 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
19190 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
19192 * doc/gm2.texi (Internals): Remove from menu.
19193 (Using): Comment out ifnohtml conditional.
19194 (Documentation): Use gcc url.
19195 (License): Node simplified.
19196 (Copying): New node. Include gpl_v3_without_node.
19197 (Contributing): Node simplified.
19198 (Internals): Commented out.
19199 (Libraries): Node simplified.
19202 (Functions): Ditto.
19204 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
19206 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
19208 (mve_vqshluq_m_n_s<mode>): Likewise.
19209 (mve_vshlq_m_<supf><mode>): Likewise.
19210 (mve_vsriq_m_n_<supf><mode>): Likewise.
19211 (mve_vsubq_m_<supf><mode>): Likewise.
19213 2023-02-03 Martin Jambor <mjambor@suse.cz>
19216 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
19217 when comparing to an IPA-CP value.
19218 (dump_list_of_param_indices): New function.
19219 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
19220 Dump removed candidates using dump_list_of_param_indices.
19221 * ipa-param-manipulation.cc
19222 (ipa_param_body_adjustments::modify_expression): Add assert checking
19223 sizes of a VIEW_CONVERT_EXPR will match.
19224 (ipa_param_body_adjustments::modify_assignment): Likewise.
19226 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
19228 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
19229 * config/riscv/riscv.cc: Ditto.
19231 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19233 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
19237 * config/riscv/vector.md: Ditto.
19239 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19241 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
19242 * config/riscv/riscv-vector-builtins-bases.cc: New class.
19243 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
19246 * config/riscv/riscv-vector-builtins.cc: Ditto.
19247 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
19249 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
19251 * toplev.cc (toplev::main): Only print the version information header
19252 from toplevel main().
19254 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
19256 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
19257 cond_{ashl|ashr|lshr}
19259 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
19261 PR rtl-optimization/108086
19262 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
19263 Adjust size-related commentary accordingly.
19265 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
19267 PR rtl-optimization/108508
19268 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
19269 the splay tree search gives the first clobber in the second group,
19270 make sure that the root of the first clobber group is updated
19271 correctly. Enter the new clobber group into the definition splay
19274 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
19276 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
19277 Fix finding best match score.
19279 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19282 PR rtl-optimization/108463
19284 * cselib.cc (cselib_current_insn): Move declaration earlier.
19285 (cselib_hasher::equal): For debug only locs, temporarily override
19286 cselib_current_insn to their l->setting_insn for the
19287 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
19288 promote some debug locs.
19289 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
19290 when using cselib call cselib_lookup_from_insn on the address but
19291 don't substitute it.
19293 2023-02-02 Richard Biener <rguenther@suse.de>
19295 PR middle-end/108625
19296 * genmatch.cc (expr::gen_transform): Also disallow resimplification
19297 from pushing to lseq with force_leaf.
19298 (dt_simplify::gen_1): Likewise.
19300 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
19302 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
19303 (struct kernargs): Replace the common content with kernargs_abi.
19304 (struct heap): Delete.
19305 (main): Read GCN_STACK_SIZE envvar.
19306 Allocate space for the device stacks.
19307 Write the new kernargs fields.
19308 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
19309 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
19310 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
19311 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
19312 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
19313 Set up the stacks from the values in the kernargs, not private.
19314 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
19315 (gcn_hsa_declare_function_name): Turn off the private segment.
19316 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
19317 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
19318 * config/gcn/gcn.opt (mstack-size): Change the description.
19320 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19323 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
19324 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
19325 addressing MVE predicate modes.
19326 (mve_bool_vec_to_const): Change to represent correct MVE predicate
19328 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
19330 (arm_vector_mode_supported_p): Likewise.
19331 (arm_mode_to_pred_mode): Add V2QI.
19332 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
19334 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
19335 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
19336 (v2qi_UP): New macro.
19337 (v4bi_UP): New macro.
19338 (v8bi_UP): New macro.
19339 (v16bi_UP): New macro.
19340 (arm_expand_builtin_args): Make it able to expand the new predicate
19342 * config/arm/arm-modes.def (V2QI): New mode.
19343 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
19344 Pred4x4_t): Remove unused predicate builtin types.
19345 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
19346 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
19347 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
19348 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
19349 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
19350 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
19351 of MODE_VECTOR_BOOL.
19352 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
19353 (MVE_VPRED): Likewise.
19354 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
19355 (MVE_vctp): New mode attribute.
19359 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
19360 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
19362 (mve_vpnothi): Rename this...
19363 (mve_vpnotv16bi): ... to this.
19364 (mve_vctp<mode1>q_mhi): Rename this...
19365 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
19366 (mve_vldrdq_gather_base_z_<supf>v2di,
19367 mve_vldrdq_gather_offset_z_<supf>v2di,
19368 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
19369 mve_vstrdq_scatter_base_p_<supf>v2di,
19370 mve_vstrdq_scatter_offset_p_<supf>v2di,
19371 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
19372 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
19373 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
19374 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
19375 mve_vldrdq_gather_base_wb_z_<supf>v2di,
19376 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
19377 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
19379 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
19381 (VCTP): ... with this.
19382 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
19383 (VCTP_M): ... with this.
19384 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
19385 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
19387 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19390 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
19391 (arm_modes_tieable_p): Make MVE predicate modes tieable.
19392 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
19393 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
19394 simplify_subreg to simplify subregs where the outermode is not scalar.
19396 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
19399 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
19400 new qualifiers parameter and use unsigned short type for MVE predicate.
19401 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
19403 (arm_init_crypto_builtins): Likewise.
19405 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19408 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
19409 * internal-fn.def (TRAP): Remove.
19410 * internal-fn.cc (expand_TRAP): Remove.
19411 * tree.cc (build_common_builtin_nodes): Define
19412 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
19413 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
19414 instead of BUILT_IN_TRAP.
19415 * gimple.cc (gimple_build_builtin_unreachable): Remove
19416 emitting internal function for BUILT_IN_TRAP.
19417 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
19418 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
19419 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
19420 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
19421 BUILT_IN_UNREACHABLE_TRAP.
19422 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
19423 * tree-cfg.cc (verify_gimple_call,
19424 pass_warn_function_return::execute): Likewise.
19425 * attribs.cc (decl_attributes): Don't report exclusions on
19426 BUILT_IN_UNREACHABLE_TRAP either.
19428 2023-02-02 liuhongt <hongtao.liu@intel.com>
19430 PR tree-optimization/108601
19431 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
19432 * tree-vect-loop.cc
19433 (vectorizable_nonlinear_induction): Remove
19434 vect_can_peel_nonlinear_iv_p.
19435 (vect_can_peel_nonlinear_iv_p): Don't peel
19436 nonlinear iv(mult or shift) for epilog when vf is not
19437 constant and moved the defination to ..
19438 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
19441 2023-02-02 Jakub Jelinek <jakub@redhat.com>
19443 PR middle-end/108435
19444 * tree-nested.cc (convert_nonlocal_omp_clauses)
19445 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
19446 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
19447 before calling declare_vars.
19448 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
19449 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
19450 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
19451 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
19453 2023-02-01 Tamar Christina <tamar.christina@arm.com>
19455 * common/config/aarch64/aarch64-common.cc
19456 (struct aarch64_option_extension): Add native_detect and document struct
19458 (all_extensions): Set new field native_detect.
19459 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
19462 2023-02-01 Martin Liska <mliska@suse.cz>
19464 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
19467 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
19469 PR tree-optimization/108356
19470 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
19471 do a search of the DOM tree for a range.
19473 2023-02-01 Martin Liska <mliska@suse.cz>
19476 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
19477 ony non-null values.
19478 * ipa.cc (walk_polymorphic_call_targets): Likewise.
19480 2023-02-01 Martin Liska <mliska@suse.cz>
19483 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
19486 2023-02-01 Jakub Jelinek <jakub@redhat.com>
19489 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
19490 subregs in DEBUG_INSNs.
19492 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
19494 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
19496 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19498 * config/s390/s390.cc (s390_restore_gpr_p): New function.
19499 (s390_preserve_gpr_arg_in_range_p): New function.
19500 (s390_preserve_gpr_arg_p): New function.
19501 (s390_preserve_fpr_arg_p): New function.
19502 (s390_register_info_stdarg_fpr): Rename to ...
19503 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
19504 (s390_register_info_stdarg_gpr): Rename to ...
19505 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
19506 (s390_register_info): Use the renamed functions above.
19507 (s390_optimize_register_info): Likewise.
19508 (save_fpr): Generate CFI for -mpreserve-args.
19509 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
19510 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
19511 (s390_optimize_prologue): Likewise.
19512 * config/s390/s390.opt: New option -mpreserve-args
19514 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19516 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
19517 (restore_gprs): Likewise.
19518 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
19519 frame pointer if a frame-pointer is used.
19520 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
19521 * config/s390/s390.md (stack_tie): Add a register operand and
19523 (@stack_tie<mode>): ... this.
19525 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
19527 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
19528 EMIT_CFI parameter.
19529 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
19530 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
19532 2023-02-01 Richard Biener <rguenther@suse.de>
19534 PR middle-end/108500
19535 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
19536 with tree traversal algorithm.
19538 2023-02-01 Jason Merrill <jason@redhat.com>
19540 * doc/invoke.texi: Document -Wno-changes-meaning.
19542 2023-02-01 David Malcolm <dmalcolm@redhat.com>
19544 * doc/invoke.texi (Static Analyzer Options): Add notes about
19545 limitations of -fanalyzer.
19547 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19549 * config/riscv/constraints.md (vj): New.
19551 * config/riscv/iterators.md: Add more opcode.
19552 * config/riscv/predicates.md (vector_arith_operand): New.
19553 (vector_neg_arith_operand): New.
19554 (vector_shift_operand): New.
19555 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
19556 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
19573 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
19590 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
19591 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
19592 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
19593 (DEF_RVV_U_OPS): New.
19594 (rvv_arg_type_info::get_base_vector_type): Handle
19595 RVV_BASE_shift_vector.
19596 (rvv_arg_type_info::get_tree_type): Ditto.
19597 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
19598 RVV_BASE_shift_vector.
19599 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
19600 * config/riscv/vector-iterators.md: Handle more opcode.
19601 * config/riscv/vector.md (@pred_<optab><mode>): New.
19603 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
19606 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
19609 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
19611 PR tree-optimization/108608
19612 * tree-vect-loop.cc (vect_transform_reduction): Handle single
19613 def-use cycles that involve function calls rather than tree codes.
19615 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19617 PR tree-optimization/108385
19618 * gimple-range-gori.cc (gori_compute::compute_operand_range):
19619 Allow VARYING computations to continue if there is a relation.
19620 * range-op.cc (pointer_plus_operator::op2_range): New.
19622 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19624 PR tree-optimization/108359
19625 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
19626 (range_operator::fold_range): If op1 is equivalent to op2 then
19627 invoke new fold_in_parts_equiv to operate on sub-components.
19628 * range-op.h (wi_fold_in_parts_equiv): New prototype.
19630 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
19632 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
19633 not abort calculations if there is a valid relation available.
19634 (gori_compute::refine_using_relation): Pass correct relation trio.
19635 (gori_compute::compute_operand1_range): Create trio and use it.
19636 (gori_compute::compute_operand2_range): Ditto.
19637 * range-op.cc (operator_plus::op1_range): Use correct trio member.
19638 (operator_minus::op1_range): Use correct trio member.
19639 * value-relation.cc (value_relation::create_trio): New.
19640 * value-relation.h (value_relation::create_trio): New prototype.
19642 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19645 * config/i386/i386-expand.cc
19646 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
19647 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
19648 equal to bitsize of mode.
19650 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19652 PR rtl-optimization/108596
19653 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
19654 ends with asm goto and has a crossing fallthrough edge to the same bb
19655 that contains at least one of its labels by restoring EDGE_CROSSING
19656 flag even on possible edge from cur_bb to new_bb successor.
19658 2023-01-31 Jakub Jelinek <jakub@redhat.com>
19661 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
19662 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
19663 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
19664 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
19665 uninitialized automatic variable __W.
19667 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
19669 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
19671 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19673 * config/riscv/riscv-protos.h (get_vector_mode): New function.
19674 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
19675 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
19676 (class loadstore): Adjust for indexed loads/stores support.
19678 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
19679 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
19695 * config/riscv/riscv-vector-builtins-shapes.cc
19696 (struct indexed_loadstore_def): New class.
19698 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19699 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
19700 for indexed loads/stores support.
19701 (check_required_extensions): Ditto.
19702 (rvv_arg_type_info::get_base_vector_type): New function.
19703 (rvv_arg_type_info::get_tree_type): Ditto.
19704 (function_builder::add_unique_function): Adjust for indexed loads/stores
19706 (function_expander::use_exact_insn): New function.
19707 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
19708 indexed loads/stores support.
19709 (struct rvv_arg_type_info): Ditto.
19710 (function_expander::index_mode): New function.
19711 (function_base::apply_tail_policy_p): Ditto.
19712 (function_base::apply_mask_policy_p): Ditto.
19713 * config/riscv/vector-iterators.md (unspec): New unspec.
19714 * config/riscv/vector.md (unspec): Ditto.
19715 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
19717 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
19718 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
19719 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
19720 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
19721 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
19722 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
19723 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
19724 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
19725 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
19726 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19727 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19728 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19729 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19731 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
19733 * config.gcc: Recognize x86_64-*-gnu* targets and include
19735 * config/i386/gnu64.h: Define configuration for new target
19736 including ld.so location.
19738 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
19740 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
19741 ampere1a to include SM4.
19743 2023-01-30 Andrew Pinski <apinski@marvell.com>
19745 PR tree-optimization/108582
19746 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
19747 for middlebb to have no phi nodes.
19749 2023-01-30 Richard Biener <rguenther@suse.de>
19751 PR tree-optimization/108574
19752 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
19753 sameval and def, ignore the equivalence if there's the
19754 danger of oscillating between two values.
19756 2023-01-30 Andreas Schwab <schwab@suse.de>
19758 * common/config/riscv/riscv-common.cc
19759 (riscv_option_optimization_table)
19760 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
19761 -fasynchronous-unwind-tables and -funwind-tables.
19762 * config.gcc (riscv*-*-linux*): Define
19763 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
19765 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
19767 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
19768 value of includedir.
19770 2023-01-30 Richard Biener <rguenther@suse.de>
19773 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
19776 2023-01-30 liuhongt <hongtao.liu@intel.com>
19778 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
19779 * doc/invoke.texi: Ditto.
19781 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
19783 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
19784 (stmt_may_terminate_function_p): If assuming return or EH
19785 volatile asm is safe.
19786 (find_always_executed_bbs): Fix handling of terminating BBS and
19787 infinite loops; add debug output.
19788 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
19790 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
19792 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
19793 off-by-one in checking the permissible shift-amount.
19795 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19797 * doc/extend.texi (Named Address Spaces): Update link to the
19800 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19802 * doc/standards.texi (Standards): Fix markup.
19804 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19806 * doc/standards.texi (Standards): Update link to Objective-C book.
19808 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19810 * doc/invoke.texi (Instrumentation Options): Update reference to
19813 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
19815 * doc/standards.texi: Update Go1 link.
19817 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19819 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
19820 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
19823 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19824 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
19826 * config/riscv/riscv-vector-builtins.cc
19827 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
19828 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
19829 (@pred_strided_store<mode>): Ditto.
19831 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19833 * config/riscv/vector.md (tail_policy_op_idx): Remove.
19834 (mask_policy_op_idx): Remove.
19835 (avl_type_op_idx): Remove.
19837 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
19839 PR tree-optimization/96373
19840 * tree.h (sign_mask_for): Declare.
19841 * tree.cc (sign_mask_for): New function.
19842 (signed_or_unsigned_type_for): For vector types, try to use the
19843 related_int_vector_mode.
19844 * genmatch.cc (commutative_op): Handle conditional internal functions.
19845 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
19847 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
19849 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
19850 Use the likely minimum VF when bounding the denominators to
19851 the estimated number of iterations.
19853 2023-01-27 Richard Biener <rguenther@suse.de>
19856 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
19857 and -Ofast FP environment side-effects.
19859 2023-01-27 Richard Biener <rguenther@suse.de>
19862 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
19863 Don't add crtfastmath.o for -shared.
19865 2023-01-27 Richard Biener <rguenther@suse.de>
19868 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
19871 2023-01-27 Richard Biener <rguenther@suse.de>
19874 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
19875 crtfastmath.o for -shared.
19877 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
19879 PR tree-optimization/108306
19880 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
19881 varying for shifts that are always out of void range.
19882 (operator_rshift::fold_range): Return [0, 0] not
19883 varying for shifts that are always out of void range.
19885 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
19887 PR tree-optimization/108447
19888 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
19889 Do not attempt to fold HONOR_NAN types.
19891 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19893 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
19894 Remove _m suffix for "vop_m" C++ overloaded API name.
19896 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19898 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
19899 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19900 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
19902 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
19903 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
19904 (vbool64_t): Ditto.
19905 (vbool32_t): Ditto.
19906 (vbool16_t): Ditto.
19911 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
19912 (rvv_arg_type_info::get_tree_type): Ditto.
19913 (function_expander::use_contiguous_load_insn): Ditto.
19914 * config/riscv/vector.md (@pred_store<mode>): Ditto.
19916 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19918 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
19919 (vsetvl_discard_result_insn_p): New function.
19920 (reg_killed_by_bb_p): rename to find_reg_killed_by.
19921 (find_reg_killed_by): New name.
19922 (get_vl): allow it to be called by more functions.
19923 (has_vsetvl_killed_avl_p): Add condition.
19924 (get_avl): allow it to be called by more functions.
19925 (insn_should_be_added_p): New function.
19926 (get_all_nonphi_defs): Refine function.
19927 (get_all_sets): Ditto.
19928 (get_same_bb_set): New function.
19929 (any_insn_in_bb_p): Ditto.
19930 (any_set_in_bb_p): Ditto.
19931 (get_vl_vtype_info): Add VLMAX forward optimization.
19932 (source_equal_p): Fix issues.
19933 (extract_single_source): Refine.
19934 (avl_info::multiple_source_equal_p): New function.
19935 (avl_info::operator==): Adjust for final version.
19936 (vl_vtype_info::operator==): Ditto.
19937 (vl_vtype_info::same_avl_p): Ditto.
19938 (vector_insn_info::parse_insn): Ditto.
19939 (vector_insn_info::available_p): New function.
19940 (vector_insn_info::merge): Adjust for final version.
19941 (vector_insn_info::dump): Add hard_empty.
19942 (pass_vsetvl::hard_empty_block_p): New function.
19943 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
19944 (pass_vsetvl::forward_demand_fusion): Ditto.
19945 (pass_vsetvl::demand_fusion): Ditto.
19946 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
19947 (pass_vsetvl::compute_local_properties): Adjust for final version.
19948 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
19949 (pass_vsetvl::refine_vsetvls): Ditto.
19950 (pass_vsetvl::commit_vsetvls): Ditto.
19951 (pass_vsetvl::propagate_avl): New function.
19952 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
19953 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
19955 2023-01-27 Jakub Jelinek <jakub@redhat.com>
19958 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
19959 from size_t to int.
19961 2023-01-27 Jakub Jelinek <jakub@redhat.com>
19964 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
19965 redirection of calls to __builtin_trap in addition to redirection
19966 to __builtin_unreachable.
19968 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19970 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
19972 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19974 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
19975 (emit_vsetvl_insn): Ditto.
19977 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19979 * config/riscv/vector.md: Fix constraints.
19981 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19983 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
19985 2023-01-27 Patrick Palka <ppalka@redhat.com>
19986 Jakub Jelinek <jakub@redhat.com>
19988 * tree-core.h (tree_code_type, tree_code_length): For
19989 C++17 and later, add inline keyword, otherwise don't define
19990 the arrays, but declare extern arrays.
19991 * tree.cc (tree_code_type, tree_code_length): Define these
19992 arrays for C++14 and older.
19994 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19996 * config/riscv/riscv-vsetvl.h: Change it into public.
19998 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20000 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
20003 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20005 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
20007 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20009 * config/riscv/vector.md: Fix incorrect attributes.
20011 2023-01-27 Richard Biener <rguenther@suse.de>
20014 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
20015 Don't add crtfastmath.o for -shared.
20017 2023-01-27 Alexandre Oliva <oliva@gnu.org>
20019 * doc/options.texi (option, RejectNegative): Mention that
20020 -g-started options are also implicitly negatable.
20022 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
20024 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
20025 Use get_typenode_from_name to get fixed-width integer type
20027 * config/riscv/riscv-vector-builtins.def: Update define with
20028 fixed-width integer type nodes.
20030 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20032 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
20033 (real_insn_and_same_bb_p): New function.
20034 (same_bb_and_after_or_equal_p): Remove it.
20035 (before_p): New function.
20036 (reg_killed_by_bb_p): Ditto.
20037 (has_vsetvl_killed_avl_p): Ditto.
20038 (get_vl): Move location so that we can call it.
20039 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
20040 (available_occurrence_p): Ditto.
20041 (dominate_probability_p): Remove it.
20042 (can_backward_propagate_p): Remove it.
20043 (get_all_nonphi_defs): New function.
20044 (get_all_predecessors): Ditto.
20045 (any_insn_in_bb_p): Ditto.
20046 (insert_vsetvl): Adjust AVL REG.
20047 (source_equal_p): New function.
20048 (extract_single_source): Ditto.
20049 (avl_info::single_source_equal_p): Ditto.
20050 (avl_info::operator==): Adjust for AVL=REG.
20051 (vl_vtype_info::same_avl_p): Ditto.
20052 (vector_insn_info::set_demand_info): Remove it.
20053 (vector_insn_info::compatible_p): Adjust for AVL=REG.
20054 (vector_insn_info::compatible_avl_p): New function.
20055 (vector_insn_info::merge): Adjust AVL=REG.
20056 (vector_insn_info::dump): Ditto.
20057 (pass_vsetvl::merge_successors): Remove it.
20058 (enum fusion_type): New enum.
20059 (pass_vsetvl::get_backward_fusion_type): New function.
20060 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
20061 (pass_vsetvl::forward_demand_fusion): Ditto.
20062 (pass_vsetvl::demand_fusion): Ditto.
20063 (pass_vsetvl::prune_expressions): Ditto.
20064 (pass_vsetvl::compute_local_properties): Ditto.
20065 (pass_vsetvl::cleanup_vsetvls): Ditto.
20066 (pass_vsetvl::commit_vsetvls): Ditto.
20067 (pass_vsetvl::init): Ditto.
20068 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
20069 (enum merge_type): New enum.
20071 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20073 * config/riscv/riscv-vsetvl.cc
20074 (vector_infos_manager::vector_infos_manager): Add probability.
20075 (vector_infos_manager::dump): Ditto.
20076 (pass_vsetvl::compute_probabilities): Ditto.
20077 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
20079 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20081 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
20082 (vector_insn_info::merge): Ditto.
20083 (vector_insn_info::dump): Ditto.
20084 (pass_vsetvl::merge_successors): Ditto.
20085 (pass_vsetvl::backward_demand_fusion): Ditto.
20086 (pass_vsetvl::forward_demand_fusion): Ditto.
20087 (pass_vsetvl::commit_vsetvls): Ditto.
20088 * config/riscv/riscv-vsetvl.h: Ditto.
20090 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20092 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
20095 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20097 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
20099 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20101 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
20102 Add pre-check for redundant flow.
20104 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20106 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
20107 (vector_infos_manager::free_bitmap_vectors): Ditto.
20108 (pass_vsetvl::pre_vsetvl): Adjust codes.
20109 * config/riscv/riscv-vsetvl.h: New function declaration.
20111 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20113 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
20114 (vector_insn_info::set_demand_info): New function.
20115 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
20116 (pass_vsetvl::merge_successors): Ditto.
20117 (pass_vsetvl::compute_global_backward_infos): Ditto.
20118 (pass_vsetvl::backward_demand_fusion): Ditto.
20119 (pass_vsetvl::forward_demand_fusion): Ditto.
20120 (pass_vsetvl::demand_fusion): New function.
20121 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
20122 * config/riscv/riscv-vsetvl.h: New function declaration.
20124 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20126 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
20128 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20130 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
20131 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
20133 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20135 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
20136 (backward_propagate_worthwhile_p): Fix non-worthwhile.
20138 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20140 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
20142 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20144 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
20145 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
20146 (pass_vsetvl::commit_vsetvls): Ditto.
20147 * config/riscv/riscv-vsetvl.h: New function declaration.
20149 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20151 * config/riscv/vector.md:
20153 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20155 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
20156 pred_store for vse.
20157 * config/riscv/riscv-vector-builtins.cc
20158 (function_expander::add_mem_operand): Refine function.
20159 (function_expander::use_contiguous_load_insn): Adjust new
20161 (function_expander::use_contiguous_store_insn): Ditto.
20162 * config/riscv/riscv-vector-builtins.h: Refine function.
20163 * config/riscv/vector.md (@pred_store<mode>): New pattern.
20165 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20167 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
20169 2023-01-26 Marek Polacek <polacek@redhat.com>
20171 PR middle-end/108543
20172 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
20173 if it was previously set.
20175 2023-01-26 Jakub Jelinek <jakub@redhat.com>
20177 PR tree-optimization/108540
20178 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
20179 are singletons, use range_true even if op1 != op2
20180 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
20181 even if intersection of the ranges is empty and one has
20182 zero low bound and another zero high bound, use range_true_and_false
20183 rather than range_false.
20184 (foperator_not_equal::fold_range): If both op1 and op2
20185 are singletons, use range_false even if op1 != op2
20186 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
20187 even if intersection of the ranges is empty and one has
20188 zero low bound and another zero high bound, use range_true_and_false
20189 rather than range_true.
20191 2023-01-26 Jakub Jelinek <jakub@redhat.com>
20193 * value-relation.cc (kind_string): Add const.
20194 (rr_negate_table, rr_swap_table, rr_intersect_table,
20195 rr_union_table, rr_transitive_table): Add static const, change
20196 element type from relation_kind to unsigned char.
20197 (relation_negate, relation_swap, relation_intersect, relation_union,
20198 relation_transitive): Cast rr_*_table element to relation_kind.
20199 (relation_to_code): Add static const.
20200 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
20202 2023-01-26 Richard Biener <rguenther@suse.de>
20204 PR tree-optimization/108547
20205 * gimple-predicate-analysis.cc (value_sat_pred_p):
20208 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
20210 PR tree-optimization/108522
20211 * tree-object-size.cc (compute_object_offset): Make EXPR
20212 argument non-const. Call component_ref_field_offset.
20214 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20216 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
20217 FEATURE_STRING field.
20219 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
20221 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
20223 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
20227 * gcc.cc: Provide default specs for Modula-2 so that when the
20228 language is not built-in better diagnostics are emitted for
20229 attempts to use .mod or .m2i file extensions.
20231 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20233 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
20235 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20237 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
20239 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20241 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
20244 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20246 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
20248 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
20250 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
20252 2023-01-25 Richard Biener <rguenther@suse.de>
20254 PR tree-optimization/108523
20255 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
20256 backedge value for the result when using predication to
20259 2023-01-25 Richard Biener <rguenther@suse.de>
20261 * doc/lto.texi (Command line options): Reword and update reference
20262 to removed lto_read_all_file_options.
20264 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
20266 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
20269 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
20271 * doc/contrib.texi: Add Jose E. Marchesi.
20273 2023-01-25 Jakub Jelinek <jakub@redhat.com>
20275 PR tree-optimization/108498
20276 * gimple-ssa-store-merging.cc (class store_operand_info):
20277 End coment with full stop rather than comma.
20278 (split_group): Likewise.
20279 (merged_store_group::apply_stores): Clear string_concatenation if
20280 start or end aren't on a byte boundary.
20282 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
20283 Jakub Jelinek <jakub@redhat.com>
20285 PR tree-optimization/108522
20286 * tree-object-size.cc (compute_object_offset): Use
20287 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
20289 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20291 * config/xtensa/xtensa.md:
20292 Fix exit from loops detecting references before overwriting in the
20295 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
20297 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
20298 do elimination but only for hard register.
20299 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
20300 calls of get_hard_regno.
20302 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
20304 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
20307 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
20310 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
20311 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
20314 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20316 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
20317 and only include 'csky/t-csky-linux' when enable multilib.
20318 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
20319 define it when disable multilib.
20321 2023-01-24 Richard Biener <rguenther@suse.de>
20323 PR tree-optimization/108500
20324 * dominance.h (calculate_dominance_info): Add parameter
20325 to indicate fast-query compute, defaulted to true.
20326 * dominance.cc (calculate_dominance_info): Honor
20327 fast-query compute parameter.
20328 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
20329 not compute the dominator fast-query DFS numbers.
20331 2023-01-24 Eric Biggers <ebiggers@google.com>
20334 * optc-save-gen.awk: Fix copy-and-paste error.
20336 2023-01-24 Jakub Jelinek <jakub@redhat.com>
20339 * cgraphbuild.cc: Include gimplify.h.
20340 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
20341 their corresponding DECL_VALUE_EXPR expressions after unsharing.
20343 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20346 * config.gcc (tm_file): Move the variable out of loop.
20348 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
20349 Yang Yujie <yangyujie@loongson.cn>
20352 * config/loongarch/loongarch.cc (loongarch_classify_address):
20353 Add precessint for CONST_INT.
20354 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
20355 (loongarch_print_operand): Increase the processing of '%c'.
20356 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
20357 And port the public operand modifiers information to this document.
20359 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20361 * doc/invoke.texi (-mbranch-protection): Update documentation.
20363 2023-01-23 Richard Biener <rguenther@suse.de>
20366 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
20368 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
20369 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
20370 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
20371 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
20373 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20375 * config/arm/aout.h (ra_auth_code): Add entry in enum.
20376 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
20377 to dwarf frame expression.
20378 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
20379 (arm_expand_prologue): Update frame related information and reg notes
20380 for pac/pacbit insn.
20381 (arm_regno_class): Check for pac pseudo reigster.
20382 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
20383 (arm_init_machine_status): Set pacspval_needed to zero.
20384 (arm_debugger_regno): Check for PAC register.
20385 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
20387 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
20388 (arm_unwind_emit): Update REG_CFA_REGISTER case._
20389 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
20390 (DWARF_PAC_REGNUM): Define.
20391 (IS_PAC_REGNUM): Likewise.
20392 (enum reg_class): Add PAC_REG entry.
20393 (machine_function): Add pacbti_needed state to structure.
20394 * config/arm/arm.md (RA_AUTH_CODE): Define.
20396 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20398 * config.gcc ($tm_file): Update variable.
20399 * config/arm/arm-mlib.h: Create new header file.
20400 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
20401 multilib arch directory.
20402 (MULTILIB_REUSE): Add multilib reuse rules.
20403 (MULTILIB_MATCHES): Add multilib match rules.
20405 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20407 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
20408 * config/arm/arm-tables.opt: Regenerate.
20409 * config/arm/arm-tune.md: Likewise.
20410 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
20411 * (-mfix-cmse-cve-2021-35465): Likewise.
20413 2023-01-23 Richard Biener <rguenther@suse.de>
20415 PR tree-optimization/108482
20416 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
20417 .LOOP_DIST_ALIAS calls.
20419 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20421 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
20422 * config/arm/arm-protos.h: Update.
20423 * config/arm/aarch-common-protos.h: Declare
20424 'aarch_bti_arch_check'.
20425 * config/arm/arm.cc (aarch_bti_enabled) Update.
20426 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
20427 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
20428 * config/arm/arm.md (bti_nop): New insn.
20429 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
20430 (aarch-bti-insert.o): New target.
20431 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
20432 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
20434 (gate): Make use of 'aarch_bti_arch_check'.
20435 * config/arm/arm-passes.def: New file.
20436 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
20438 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20440 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
20441 'aarch-bti-insert.o'.
20442 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
20444 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
20445 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
20446 (aarch64_output_mi_thunk)
20447 (aarch64_print_patchable_function_entry)
20448 (aarch64_file_end_indicate_exec_stack): Update renamed function
20449 calls to renamed functions.
20450 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
20451 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
20453 * config/aarch64/aarch64-bti-insert.cc: Delete.
20454 * config/arm/aarch-bti-insert.cc: New file including and
20455 generalizing code from aarch64-bti-insert.cc.
20456 * config/arm/aarch-common-protos.h: Update.
20458 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20460 * config/arm/arm.h (arm_arch8m_main): Declare it.
20461 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
20463 * config/arm/arm.cc (arm_arch8m_main): Define it.
20464 (arm_option_reconfigure_globals): Set arm_arch8m_main.
20465 (arm_compute_frame_layout, arm_expand_prologue)
20466 (thumb2_expand_return, arm_expand_epilogue)
20467 (arm_conditional_register_usage): Update for pac codegen.
20468 (arm_current_function_pac_enabled_p): New function.
20469 (aarch_bti_enabled) New function.
20470 (use_return_insn): Return zero when pac is enabled.
20471 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
20473 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
20474 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
20476 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20478 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
20479 mbranch-protection.
20481 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20482 Tejas Belagod <tbelagod@arm.com>
20484 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
20485 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
20487 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20488 Tejas Belagod <tbelagod@arm.com>
20489 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20491 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
20492 new pseudo register class _UVRSC_PAC.
20494 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20495 Tejas Belagod <tbelagod@arm.com>
20497 * config/arm/arm-c.cc (arm_cpu_builtins): Define
20498 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
20499 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
20501 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20502 Tejas Belagod <tbelagod@arm.com>
20504 * doc/sourcebuild.texi: Document arm_pacbti_hw.
20506 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20507 Tejas Belagod <tbelagod@arm.com>
20508 Richard Earnshaw <Richard.Earnshaw@arm.com>
20510 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
20511 -mbranch-protection option and initialize appropriate data structures.
20512 * config/arm/arm.opt (-mbranch-protection): New option.
20513 * doc/invoke.texi (Arm Options): Document it.
20515 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20516 Tejas Belagod <tbelagod@arm.com>
20518 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
20519 * config/arm/arm-cpus.in (pacbti): New feature.
20520 * doc/invoke.texi (Arm Options): Document it.
20522 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
20523 Tejas Belagod <tbelagod@arm.com>
20525 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
20526 (all_architectures): Fix comment.
20527 (aarch64_parse_extension): Rename return type, enum value names.
20528 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
20529 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
20530 Also rename corresponding enum values.
20531 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
20532 out aarch64_function_type and move it to common code as
20533 aarch_function_type in aarch-common.h.
20534 * config/aarch64/aarch64-protos.h: Include common types header,
20535 move out types aarch64_parse_opt_result and aarch64_key_type to
20537 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
20538 and functions out into aarch-common.h and aarch-common.cc. Fix up
20539 all the name changes resulting from the move.
20540 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
20542 * config/aarch64/aarch64.opt: Include aarch-common.h to import
20543 type move. Fix up name changes from factoring out common code and
20545 * config/arm/aarch-common-protos.h: Export factored out routines to both
20547 * config/arm/aarch-common.cc: Include newly factored out types.
20548 Move all mbranch-protection code and data structures from
20550 * config/arm/aarch-common.h: New header that declares types shared
20551 between aarch32 and aarch64 backends.
20552 * config/arm/arm-protos.h: Declare types and variables that are
20553 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
20554 aarch_ra_sign_scope and aarch_enable_bti.
20555 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
20556 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
20557 * config/arm/arm.cc: Add missing includes.
20559 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
20561 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
20563 2023-01-23 Richard Biener <rguenther@suse.de>
20565 PR tree-optimization/108449
20566 * cgraphunit.cc (check_global_declaration): Do not turn
20567 undefined statics into externs.
20569 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
20571 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
20572 and HI input modes.
20573 * config/pru/pru.md (clz): Fix generated code for QI and HI
20576 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
20578 * config/v850/v850.cc (v850_select_section): Put const volatile
20579 objects into read-only sections.
20581 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
20583 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
20584 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
20585 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
20587 2023-01-20 Jakub Jelinek <jakub@redhat.com>
20589 PR tree-optimization/108457
20590 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
20591 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
20592 argument instead of a temporary. Formatting fixes.
20594 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20596 PR tree-optimization/108447
20597 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
20598 (relation_tests): Add self-tests for relation_{intersect,union}
20600 * selftest.h (relation_tests): Declare.
20601 * function-tests.cc (test_ranges): Call it.
20603 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
20606 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
20607 invalid third argument to __builtin_ia32_prefetch.
20609 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20611 PR middle-end/108459
20612 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
20613 than fold_unary for NEGATE_EXPR.
20615 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
20618 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
20619 comment. Move assert about alignment a bit later.
20621 2023-01-19 Jakub Jelinek <jakub@redhat.com>
20623 PR tree-optimization/108440
20624 * tree-ssa-forwprop.cc: Include gimple-range.h.
20625 (simplify_rotate): For the forms with T2 wider than T and shift counts of
20626 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
20627 to B. For the forms with T2 wider than T and shift counts of
20628 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
20629 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
20630 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
20631 pass specific ranger instead of get_global_range_query.
20632 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
20635 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
20637 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
20638 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
20640 (aarch64_simd_vec_copy_lane<mode>): Likewise.
20641 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
20643 2023-01-19 Alexandre Oliva <oliva@adacore.com>
20646 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
20647 within debug insns.
20649 2023-01-18 Martin Jambor <mjambor@suse.cz>
20652 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
20653 lcone_of chain also do not need the body.
20655 2023-01-18 Richard Biener <rguenther@suse.de>
20658 2022-12-16 Richard Biener <rguenther@suse.de>
20660 PR middle-end/108086
20661 * tree-inline.cc (remap_ssa_name): Do not unshare the
20662 result from the decl_map.
20664 2023-01-18 Murray Steele <murray.steele@arm.com>
20667 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
20669 (__arm_vst1q_p_s8): Likewise.
20670 (__arm_vld1q_z_u8): Likewise.
20671 (__arm_vld1q_z_s8): Likewise.
20672 (__arm_vst1q_p_u16): Likewise.
20673 (__arm_vst1q_p_s16): Likewise.
20674 (__arm_vld1q_z_u16): Likewise.
20675 (__arm_vld1q_z_s16): Likewise.
20676 (__arm_vst1q_p_u32): Likewise.
20677 (__arm_vst1q_p_s32): Likewise.
20678 (__arm_vld1q_z_u32): Likewise.
20679 (__arm_vld1q_z_s32): Likewise.
20680 (__arm_vld1q_z_f16): Likewise.
20681 (__arm_vst1q_p_f16): Likewise.
20682 (__arm_vld1q_z_f32): Likewise.
20683 (__arm_vst1q_p_f32): Likewise.
20685 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20687 * config/xtensa/xtensa.md (xorsi3_internal):
20688 Rename from the original of "xorsi3".
20689 (xorsi3): New expansion pattern that emits addition rather than
20690 bitwise-XOR when the second source is a constant of -2147483648
20693 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
20694 Andrew Pinski <apinski@marvell.com>
20697 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
20698 vec_vsubcuqP with vec_vsubcuq.
20700 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
20703 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
20704 support for invalid uses of MMA opaque type in function arguments.
20706 2023-01-18 liuhongt <hongtao.liu@intel.com>
20709 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
20710 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
20711 -share or -mno-daz-ftz is specified.
20712 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
20713 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
20715 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
20717 * config/bpf/bpf.cc (bpf_option_override): Disable
20720 2023-01-17 Jakub Jelinek <jakub@redhat.com>
20722 PR tree-optimization/106523
20723 * tree-ssa-forwprop.cc (simplify_rotate): For the
20724 patterns with (-Y) & (B - 1) in one operand's shift
20725 count and Y in another, if T2 has wider precision than T,
20726 punt if Y could have a value in [B, B2 - 1] range.
20728 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
20731 * config/i386/i386.cc (x86_output_mi_thunk): Disable
20732 -mforce-indirect-call for PIC in 32-bit mode.
20734 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
20737 * ipa-modref.cc (modref_access_analysis::analyze): Use
20738 find_always_executed_bbs.
20739 * ipa-sra.cc (process_scan_results): Likewise.
20740 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
20741 (find_always_executed_bbs): New function.
20742 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
20743 (find_always_executed_bbs): Declare.
20745 2023-01-16 Jan Hubicka <jh@suse.cz>
20747 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
20748 by TARGET_USE_SCATTER.
20749 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
20750 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
20751 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
20752 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
20753 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
20754 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
20756 2023-01-16 Richard Biener <rguenther@suse.de>
20759 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
20761 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
20765 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
20766 (__ARM_mve_coerce3): Likewise.
20768 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20770 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
20772 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20774 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
20775 (number_of_iterations_bitcount): Add call to the above.
20776 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
20777 c[lt]z idiom recognition.
20779 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20781 * doc/sourcebuild.texi: Add missing target attributes.
20783 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
20785 PR tree-optimization/94793
20786 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
20788 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
20789 (number_of_iterations_cltz_complement): New.
20790 (number_of_iterations_bitcount): Add call to the above.
20792 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
20794 * doc/extend.texi (Common Function Attributes): Fix grammar.
20796 2023-01-16 Jakub Jelinek <jakub@redhat.com>
20799 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
20800 * config/riscv/riscv-vsetvl.cc: Likewise.
20802 2023-01-16 Jakub Jelinek <jakub@redhat.com>
20805 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
20806 disable -Winit-self using pragma GCC diagnostic ignored.
20807 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
20809 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
20810 _mm256_undefined_si256): Likewise.
20811 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
20812 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
20813 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
20814 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
20816 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
20819 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
20820 support for invalid uses in inline asm, factor out the checking and
20821 erroring to lambda function check_and_error_invalid_use.
20823 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
20825 PR tree-optimization/107608
20826 * range-op-float.cc (range_operator_float::fold_range): Avoid
20827 folding into INF when flag_trapping_math.
20828 * value-range.h (frange::known_isinf): Return false for possible NANs.
20830 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
20832 * config.gcc (csky-*-*): Support --with-float=softfp.
20834 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20836 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
20837 Rename to xtensa_adjust_reg_alloc_order.
20838 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
20839 Ditto. And also remove code to reorder register numbers for
20840 leaf functions, rename the tables, and adjust the allocation
20841 order for the call0 ABI to use register A0 more.
20842 (xtensa_leaf_regs): Remove.
20843 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
20844 (order_regs_for_local_alloc): Rename as the above.
20845 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
20847 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
20849 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
20850 Change to define_insn_and_split to fold ldr+dup to ld1rq.
20851 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
20853 2023-01-14 Alexandre Oliva <oliva@adacore.com>
20855 * hash-table.h (is_deleted): Precheck !is_empty.
20856 (mark_deleted): Postcheck !is_empty.
20857 (copy constructor): Test is_empty before is_deleted.
20859 2023-01-14 Alexandre Oliva <oliva@adacore.com>
20862 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
20865 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
20867 PR rtl-optimization/108274
20868 * function.cc (thread_prologue_and_epilogue_insns): Also update the
20869 DF information for calls in a few more cases.
20871 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
20873 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
20874 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
20876 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
20877 (MAX_SYNC_LIBFUNC_SIZE): Define.
20878 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
20880 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
20881 libcall when sync libcalls are disabled.
20882 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
20883 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
20884 are disabled on 32-bit target.
20885 * config/pa/pa.opt (matomic-libcalls): New option.
20886 * doc/invoke.texi (HPPA Options): Update.
20888 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
20890 PR rtl-optimization/108117
20891 PR rtl-optimization/108132
20892 * sched-deps.cc (deps_analyze_insn): Do not schedule across
20893 calls before reload.
20895 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
20897 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
20898 options for -mlibarch.
20899 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
20900 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
20902 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
20904 * attribs.cc (strict_flex_array_level_of): Move this function to ...
20905 * attribs.h (strict_flex_array_level_of): Remove the declaration.
20906 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
20907 replace the referece to strict_flex_array_level_of with
20908 DECL_NOT_FLEXARRAY.
20909 * tree.cc (component_ref_size): Likewise.
20911 2023-01-13 Richard Biener <rguenther@suse.de>
20914 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
20915 crtfastmath.o for -shared.
20916 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
20918 2023-01-13 Richard Biener <rguenther@suse.de>
20921 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
20922 crtfastmath.o for -shared.
20923 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
20925 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
20928 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
20930 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
20932 (TARGET_DWARF_FRAME_REG_MODE): Define.
20934 2023-01-13 Richard Biener <rguenther@suse.de>
20937 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
20938 update EH info on the fly.
20940 2023-01-13 Richard Biener <rguenther@suse.de>
20942 PR tree-optimization/108387
20943 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
20944 value before inserting expression into the tables.
20946 2023-01-12 Andrew Pinski <apinski@marvell.com>
20947 Roger Sayle <roger@nextmovesoftware.com>
20949 PR tree-optimization/92342
20950 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
20951 Use tcc_comparison and :c for the multiply.
20952 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
20954 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
20955 Richard Sandiford <richard.sandiford@arm.com>
20958 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
20959 Check DECL_PACKED for bitfield.
20960 (aarch64_layout_arg): Warn when parameter passing ABI changes.
20961 (aarch64_function_arg_boundary): Do not warn here.
20962 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
20965 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
20966 Richard Sandiford <richard.sandiford@arm.com>
20968 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
20970 (aarch64_layout_arg): Factorize warning conditions.
20971 (aarch64_function_arg_boundary): Fix typo.
20972 * function.cc (currently_expanding_function_start): New variable.
20973 (expand_function_start): Handle
20974 currently_expanding_function_start.
20975 * function.h (currently_expanding_function_start): Declare.
20977 2023-01-12 Richard Biener <rguenther@suse.de>
20979 PR tree-optimization/99412
20980 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
20981 (swap_ops_for_binary_stmt): Remove reduction handling.
20982 (rewrite_expr_tree_parallel): Adjust.
20983 (reassociate_bb): Likewise.
20984 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
20986 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20988 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
20989 Rearrange the emitting codes.
20991 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20993 * config/xtensa/xtensa.md (*btrue):
20994 Correct value of the attribute "length" that depends on
20995 TARGET_DENSITY and operands, and add '?' character to the register
20996 constraint of the compared operand.
20998 2023-01-12 Alexandre Oliva <oliva@adacore.com>
21000 * hash-table.h (expand): Check elements and deleted counts.
21001 (verify): Likewise.
21003 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
21005 PR tree-optimization/71343
21006 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
21007 the value number of the expression X << C the same as the value
21008 number for the multiplication X * (1<<C).
21010 2023-01-11 David Faust <david.faust@oracle.com>
21013 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
21014 floating point modes.
21016 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
21018 PR tree-optimization/108199
21019 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
21020 for bit-field references.
21022 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
21024 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
21025 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
21026 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
21027 OPTION_MASK_P10_FUSION.
21029 2023-01-11 Richard Biener <rguenther@suse.de>
21031 PR tree-optimization/107767
21032 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
21033 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
21034 * tree-switch-conversion.cc (switch_conversion::collect):
21035 Count unique non-default targets accounting for later
21036 merging opportunities.
21038 2023-01-11 Martin Liska <mliska@suse.cz>
21040 PR middle-end/107976
21041 * params.opt: Limit JT params.
21042 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
21044 2023-01-11 Richard Biener <rguenther@suse.de>
21046 PR tree-optimization/108352
21047 * tree-ssa-threadbackward.cc
21048 (back_threader_profitability::profitable_path_p): Adjust
21049 heuristic that allows non-multi-way branch threads creating
21051 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
21052 (--param fsm-scale-path-stmts): Adjust.
21053 * params.opt (--param=fsm-scale-path-blocks=): Remove.
21054 (-param=fsm-scale-path-stmts=): Adjust description.
21056 2023-01-11 Richard Biener <rguenther@suse.de>
21058 PR tree-optimization/108353
21059 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
21061 (add_ssa_edge): Simplify.
21062 (add_control_edge): Likewise.
21063 (ssa_prop_init): Likewise.
21064 (ssa_prop_fini): Likewise.
21065 (ssa_propagation_engine::ssa_propagate): Likewise.
21067 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
21069 * config/s390/s390.md (*not<mode>): New pattern.
21071 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21073 * config/xtensa/xtensa.cc (xtensa_insn_cost):
21074 Let insn cost for size be obtained by applying COSTS_N_INSNS()
21075 to instruction length and then dividing by 3.
21077 2023-01-10 Richard Biener <rguenther@suse.de>
21079 PR tree-optimization/106293
21080 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
21081 process degenerate PHI defs.
21083 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
21085 PR rtl-optimization/106421
21086 * cprop.cc (bypass_block): Check that DEST is local to this
21087 function (non-NULL) before calling find_edge.
21089 2023-01-10 Martin Jambor <mjambor@suse.cz>
21092 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
21093 sort_replacements, lookup_first_base_replacement and
21094 m_sorted_replacements_p.
21095 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
21096 (ipa_param_body_adjustments::register_replacement): Set
21097 m_sorted_replacements_p to false.
21098 (compare_param_body_replacement): New function.
21099 (ipa_param_body_adjustments::sort_replacements): Likewise.
21100 (ipa_param_body_adjustments::common_initialization): Call
21102 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
21103 m_sorted_replacements_p.
21104 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
21106 (ipa_param_body_adjustments::lookup_first_base_replacement): New
21108 (ipa_param_body_adjustments::modify_call_stmt): Use
21109 lookup_first_base_replacement.
21110 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
21111 adjustments->sort_replacements.
21113 2023-01-10 Richard Biener <rguenther@suse.de>
21115 PR tree-optimization/108314
21116 * tree-vect-stmts.cc (vectorizable_condition): Do not
21117 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
21119 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
21121 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
21123 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
21125 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
21127 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
21129 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
21130 defines for soft float abi.
21132 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
21134 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
21135 (smart_bclri): Likewise.
21136 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
21137 (fast_bclri): Likewise.
21138 (fast_cmpnesi_i): Likewise.
21139 (*fast_cmpltsi_i): Likewise.
21140 (*fast_cmpgeusi_i): Likewise.
21142 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
21144 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
21145 flag_fp_int_builtin_inexact || !flag_trapping_math.
21146 (<frm_pattern><mode>2): Likewise.
21148 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
21150 * config/s390/s390.cc (s390_register_info): Check call_used_regs
21151 instead of hard-coding the register numbers for call saved
21153 (s390_optimize_register_info): Likewise.
21155 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
21157 * doc/gm2.texi (Overview): Fix @node markers.
21158 (Using): Likewise. Remove subsections that were moved to Overview
21159 from the menu and move others around.
21161 2023-01-09 Richard Biener <rguenther@suse.de>
21163 PR middle-end/108209
21164 * genmatch.cc (commutative_op): Fix return value for
21165 user-id with non-commutative first replacement.
21167 2023-01-09 Jakub Jelinek <jakub@redhat.com>
21170 * calls.cc (expand_call): For calls with
21171 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
21174 2023-01-09 Richard Biener <rguenther@suse.de>
21176 PR middle-end/69482
21177 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
21178 qualified accesses also force objects to memory.
21180 2023-01-09 Martin Liska <mliska@suse.cz>
21183 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
21184 NULL (deleleted value) to a hash_set.
21186 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21188 * config/xtensa/xtensa.md (*splice_bits):
21189 New insn_and_split pattern.
21191 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21193 * config/xtensa/xtensa.cc
21194 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
21195 New helper functions.
21196 (xtensa_set_return_address, xtensa_output_mi_thunk):
21197 Change to use the helper function.
21198 (xtensa_emit_adjust_stack_ptr): Ditto.
21199 And also change to try reusing the content of scratch register
21200 A9 if the register is not modified in the function body.
21202 2023-01-07 LIU Hao <lh_mouse@126.com>
21204 PR middle-end/108300
21205 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
21206 before <windows.h>.
21207 * diagnostic-color.cc: Likewise.
21208 * plugin.cc: Likewise.
21209 * prefix.cc: Likewise.
21211 2023-01-06 Joseph Myers <joseph@codesourcery.com>
21213 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
21214 for handling real integer types.
21216 2023-01-06 Tamar Christina <tamar.christina@arm.com>
21219 2022-12-12 Tamar Christina <tamar.christina@arm.com>
21221 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
21222 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
21223 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
21224 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
21225 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
21226 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
21227 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
21228 (aarch64_simd_dupv2hf): New.
21229 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
21231 * config/aarch64/iterators.md (VHSDF_P): New.
21232 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
21233 Vel, q, vp): Add V2HF.
21234 * config/arm/types.md (neon_fp_reduc_add_h): New.
21236 2023-01-06 Martin Liska <mliska@suse.cz>
21238 PR middle-end/107966
21239 * doc/options.texi: Fix Var documentation in internal manual.
21241 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
21244 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21246 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
21247 RTL expansion to allow condition (mask) to be shared/reused,
21248 by avoiding overwriting pseudos and adding REG_EQUAL notes.
21250 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
21252 * common.opt: Add -static-libgm2.
21253 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
21254 * doc/gm2.texi: Document static-libgm2.
21255 * gcc.cc (driver_handle_option): Allow static-libgm2.
21257 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
21259 * common/config/i386/i386-common.cc (processor_alias_table):
21260 Use CPU_ZNVER4 for znver4.
21261 * config/i386/i386.md: Add znver4.md.
21262 * config/i386/znver4.md: New.
21264 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21266 PR tree-optimization/108253
21267 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
21270 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21272 PR middle-end/108237
21273 * generic-match-head.cc: Include tree-pass.h.
21274 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
21275 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
21276 resp. PROP_gimple_lvec property set.
21278 2023-01-04 Jakub Jelinek <jakub@redhat.com>
21280 PR sanitizer/108256
21281 * convert.cc (do_narrow): Punt for MULT_EXPR if original
21282 type doesn't wrap around and -fsanitize=signed-integer-overflow
21284 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
21286 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
21288 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
21289 * common/config/i386/i386-common.cc: Add Emeraldrapids.
21291 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
21293 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
21296 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
21298 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
21299 default constructor to initialize it.
21300 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
21301 for last and iterate to handle recursive calls. Delete leftover
21302 candidates at the end.
21303 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
21305 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
21306 gc_candidate bit when a clone is used.
21308 2023-01-03 Florian Weimer <fweimer@redhat.com>
21311 2023-01-02 Florian Weimer <fweimer@redhat.com>
21313 * dwarf2cfi.cc (init_return_column_size): Remove.
21314 (init_one_dwarf_reg_size): Adjust.
21315 (generate_dwarf_reg_sizes): New function. Extracted
21316 from expand_builtin_init_dwarf_reg_sizes.
21317 (expand_builtin_init_dwarf_reg_sizes): Call
21318 generate_dwarf_reg_sizes.
21319 * target.def (init_dwarf_reg_sizes_extra): Adjust
21321 * config/msp430/msp430.cc
21322 (msp430_init_dwarf_reg_sizes_extra): Adjust.
21323 * config/rs6000/rs6000.cc
21324 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
21325 * doc/tm.texi: Update.
21327 2023-01-03 Florian Weimer <fweimer@redhat.com>
21330 2023-01-02 Florian Weimer <fweimer@redhat.com>
21332 * debug.h (dwarf_reg_sizes_constant): Declare.
21333 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
21335 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
21337 PR tree-optimization/105043
21338 * doc/extend.texi (Object Size Checking): Split out into two
21339 subsections and mention _FORTIFY_SOURCE.
21341 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21343 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
21344 RTL expansion to allow condition (mask) to be shared/reused,
21345 by avoiding overwriting pseudos and adding REG_EQUAL notes.
21347 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
21350 * config/i386/i386-features.cc
21351 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
21352 the gain/cost of converting a MEM operand.
21354 2023-01-03 Jakub Jelinek <jakub@redhat.com>
21356 PR middle-end/108264
21357 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
21358 from source which doesn't have scalar integral mode first convert
21361 2023-01-03 Jakub Jelinek <jakub@redhat.com>
21363 PR rtl-optimization/108263
21364 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
21367 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
21370 * config/i386/lujiazui.md (lujiazui_div): New automaton.
21371 (lua_div): New unit.
21372 (lua_idiv_qi): Correct unit in the reservation.
21373 (lua_idiv_qi_load): Ditto.
21374 (lua_idiv_hi): Ditto.
21375 (lua_idiv_hi_load): Ditto.
21376 (lua_idiv_si): Ditto.
21377 (lua_idiv_si_load): Ditto.
21378 (lua_idiv_di): Ditto.
21379 (lua_idiv_di_load): Ditto.
21380 (lua_fdiv_SF): Ditto.
21381 (lua_fdiv_SF_load): Ditto.
21382 (lua_fdiv_DF): Ditto.
21383 (lua_fdiv_DF_load): Ditto.
21384 (lua_fdiv_XF): Ditto.
21385 (lua_fdiv_XF_load): Ditto.
21386 (lua_ssediv_SF): Ditto.
21387 (lua_ssediv_load_SF): Ditto.
21388 (lua_ssediv_V4SF): Ditto.
21389 (lua_ssediv_load_V4SF): Ditto.
21390 (lua_ssediv_V8SF): Ditto.
21391 (lua_ssediv_load_V8SF): Ditto.
21392 (lua_ssediv_SD): Ditto.
21393 (lua_ssediv_load_SD): Ditto.
21394 (lua_ssediv_V2DF): Ditto.
21395 (lua_ssediv_load_V2DF): Ditto.
21396 (lua_ssediv_V4DF): Ditto.
21397 (lua_ssediv_load_V4DF): Ditto.
21399 2023-01-02 Florian Weimer <fweimer@redhat.com>
21401 * debug.h (dwarf_reg_sizes_constant): Declare.
21402 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
21404 2023-01-02 Florian Weimer <fweimer@redhat.com>
21406 * dwarf2cfi.cc (init_return_column_size): Remove.
21407 (init_one_dwarf_reg_size): Adjust.
21408 (generate_dwarf_reg_sizes): New function. Extracted
21409 from expand_builtin_init_dwarf_reg_sizes.
21410 (expand_builtin_init_dwarf_reg_sizes): Call
21411 generate_dwarf_reg_sizes.
21412 * target.def (init_dwarf_reg_sizes_extra): Adjust
21414 * config/msp430/msp430.cc
21415 (msp430_init_dwarf_reg_sizes_extra): Adjust.
21416 * config/rs6000/rs6000.cc
21417 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
21418 * doc/tm.texi: Update.
21420 2023-01-02 Jakub Jelinek <jakub@redhat.com>
21422 * gcc.cc (process_command): Update copyright notice dates.
21423 * gcov-dump.cc (print_version): Ditto.
21424 * gcov.cc (print_version): Ditto.
21425 * gcov-tool.cc (print_version): Ditto.
21426 * gengtype.cc (create_file): Ditto.
21427 * doc/cpp.texi: Bump @copying's copyright year.
21428 * doc/cppinternals.texi: Ditto.
21429 * doc/gcc.texi: Ditto.
21430 * doc/gccint.texi: Ditto.
21431 * doc/gcov.texi: Ditto.
21432 * doc/install.texi: Ditto.
21433 * doc/invoke.texi: Ditto.
21435 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
21436 Uroš Bizjak <ubizjak@gmail.com>
21438 * config/i386/i386.md (extendditi2): New define_insn.
21439 (define_split): Use DWIH mode iterator to treat new extendditi2
21440 identically to existing extendsidi2_1.
21441 (define_peephole2): Likewise.
21442 (define_peephole2): Likewise.
21443 (define_Split): Likewise.
21446 Copyright (C) 2023 Free Software Foundation, Inc.
21448 Copying and distribution of this file, with or without modification,
21449 are permitted in any medium without royalty provided the copyright
21450 notice and this notice are preserved.