ada: Fix wrong resolution for hidden discriminant in predicate
[official-gcc.git] / gcc / ChangeLog
blobcd7076bf4e44ec46d9b824de34a74df06d0cc898
1 2023-07-10  Peter Bergner  <bergner@linux.ibm.com>
3         * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
4         MEM_P usage.
5         (vsx_quad_dform_memory_operand): Likewise.
7 2023-07-10  Uros Bizjak  <ubizjak@gmail.com>
9         * reorg.cc (stop_search_p): Change return type from int to bool
10         and adjust function body accordingly.
11         (resource_conflicts_p): Ditto.
12         (insn_references_resource_p): Change return type from int to bool.
13         (insn_sets_resource_p): Ditto.
14         (redirect_with_delay_slots_safe_p): Ditto.
15         (condition_dominates_p): Change return type from int to bool
16         and adjust function body accordingly.
17         (redirect_with_delay_list_safe_p): Ditto.
18         (check_annul_list_true_false): Ditto.  Change "annul_true_p"
19         function argument to bool.
20         (steal_delay_list_from_target): Change "pannul_p" function
21         argument to bool pointer.  Change "must_annul" and "used_annul"
22         variables from int to bool.
23         (steal_delay_list_from_fallthrough): Ditto.
24         (own_thread_p): Change return type from int to bool and adjust
25         function body accordingly.  Change "allow_fallthrough" function
26         argument to bool.
27         (reorg_redirect_jump): Change return type from int to bool.
28         (fill_simple_delay_slots): Change "non_jumps_p" function
29         argument from int to bool.  Change "maybe_never" varible to bool.
30         (fill_slots_from_thread): Change "likely", "thread_if_true" and
31         "own_thread" function arguments to bool.  Change "lose" and
32         "must_annul" variables to bool.
33         (delete_from_delay_slot): Change "had_barrier" variable to bool.
34         (try_merge_delay_insns): Change "annul_p" variable to bool.
35         (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
36         variables to bool.
37         (rest_of_handle_delay_slots): Change return type from int to void
38         and adjust function body accordingly.
40 2023-07-10  Kito Cheng  <kito.cheng@sifive.com>
42         * doc/extend.texi (RISC-V Operand Modifiers): New.
44 2023-07-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46         * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
47         (insert_insn_end_basic_block): Ditto.
48         (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
49         * gcse.cc (insert_insn_end_basic_block):  Export as global function.
50         * gcse.h (insert_insn_end_basic_block): Ditto.
52 2023-07-10  Christophe Lyon   <christophe.lyon@linaro.org>
54         PR target/110268
55         * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
56         (arm_builtin_decl): Hahndle MVE builtins.
57         * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
58         (add_unique_function): Fix handling of
59         __ARM_MVE_PRESERVE_USER_NAMESPACE.
60         (add_overloaded_function): Likewise.
61         * config/arm/arm-protos.h (builtin_decl): New declaration.
63 2023-07-10  Christophe Lyon  <christophe.lyon@linaro.org>
65         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
67 2023-07-10  Xi Ruoyao  <xry111@xry111.site>
69         PR tree-optimization/110557
70         * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
71         Ensure the output sign-extended if necessary.
73 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
75         * config/i386/i386.md (peephole2): Transform xchg insn with a
76         REG_UNUSED note to a (simple) move.
77         (*insvti_lowpart_1): New define_insn_and_split.
78         (*insvdi_lowpart_1): Likewise.
80 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
82         * config/i386/i386-features.cc (compute_convert_gain): Tweak
83         gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
84         (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
85         avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
87 2023-07-10  liuhongt  <hongtao.liu@intel.com>
89         PR target/110170
90         * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
91         splitter to detect fp max pattern.
92         (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
94 2023-07-09  Jan Hubicka  <jh@suse.cz>
96         * cfg.cc (check_bb_profile): Dump counts with relative frequency.
97         (dump_edge_info): Likewise.
98         (dump_bb_info): Likewise.
99         * profile-count.cc (profile_count::dump): Add comma between quality and
100         freq.
102 2023-07-08  Jan Hubicka  <jh@suse.cz>
104         PR tree-optimization/110600
105         * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
107 2023-07-08  Jan Hubicka  <jh@suse.cz>
109         PR middle-end/110590
110         * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
111         inner loops and be more careful about inconsistent profiles.
112         (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
113         exit is followed by other exit.
115 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
117         * cprop.cc (reg_available_p): Change return type from int to bool.
118         (reg_not_set_p): Ditto.
119         (try_replace_reg): Ditto.  Change "success" variable to bool.
120         (cprop_jump): Change return type from int to void
121         and adjust function body accordingly.
122         (constprop_register): Ditto.
123         (cprop_insn): Ditto.  Change "changed" variable to bool.
124         (local_cprop_pass): Change return type from int to void
125         and adjust function body accordingly.
126         (bypass_block): Ditto.  Change "change", "may_be_loop_header"
127         and "removed_p" variables to bool.
128         (bypass_conditional_jumps): Change return type from int to void
129         and adjust function body accordingly.  Change "changed"
130         variable to bool.
131         (one_cprop_pass): Ditto.
133 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
135         * gcse.cc (expr_equiv_p): Change return type from int to bool.
136         (oprs_unchanged_p): Change return type from int to void
137         and adjust function body accordingly.
138         (oprs_anticipatable_p): Ditto.
139         (oprs_available_p): Ditto.
140         (insert_expr_in_table): Ditto.  Change "antic_p" and "avail_p"
141         arguments to bool. Change "found" variable to bool.
142         (load_killed_in_block_p): Change return type from int to void and
143         adjust function body accordingly.  Change "avail_p" argument to bool.
144         (pre_expr_reaches_here_p): Change return type from int to void
145         and adjust function body accordingly.
146         (pre_delete): Ditto.  Change "changed" variable to bool.
147         (pre_gcse): Change return type from int to void
148         and adjust function body accordingly. Change "did_insert" and
149         "changed" variables to bool.
150         (one_pre_gcse_pass): Change return type from int to void
151         and adjust function body accordingly.  Change "changed" variable
152         to bool.
153         (should_hoist_expr_to_dom): Change return type from int to void
154         and adjust function body accordingly.  Change
155         "visited_allocated_locally" variable to bool.
156         (hoist_code): Change return type from int to void and adjust
157         function body accordingly.  Change "changed" variable to bool.
158         (one_code_hoisting_pass): Ditto.
159         (pre_edge_insert): Change return type from int to void and adjust
160         function body accordingly.  Change "did_insert" variable to bool.
161         (pre_expr_reaches_here_p_work): Change return type from int to void
162         and adjust function body accordingly.
163         (simple_mem): Ditto.
164         (want_to_gcse_p): Change return type from int to void
165         and adjust function body accordingly.
166         (can_assign_to_reg_without_clobbers_p): Update function body
167         for bool return type.
168         (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
169         (pre_insert_copies): Change "added_copy" variable to bool.
171 2023-07-08  Jonathan Wakely  <jwakely@redhat.com>
173         PR c++/110595
174         PR c++/110596
175         * doc/invoke.texi (Warning Options): Fix typos.
177 2023-07-07  Jan Hubicka  <jh@suse.cz>
179         * profile-count.cc (profile_count::dump): Add FUN
180         parameter; print relative frequency.
181         (profile_count::debug): Update.
182         * profile-count.h (profile_count::dump): Update
183         prototype.
185 2023-07-07  Roger Sayle  <roger@nextmovesoftware.com>
187         PR target/43644
188         PR target/110533
189         * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
190         TImode destinations from paradoxical SUBREGs (setting the lowpart)
191         into explicit zero extensions.  Use *insvti_highpart_1 instruction
192         to set the highpart of a TImode destination.
194 2023-07-07  Jan Hubicka  <jh@suse.cz>
196         * predict.cc (force_edge_cold): Use
197         set_edge_probability_and_rescale_others; improve dumps.
199 2023-07-07  Jan Hubicka  <jh@suse.cz>
201         * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
202         after exit.
203         * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
204         is known.
206 2023-07-07  Juergen Christ  <jchrist@linux.ibm.com>
208         * config/s390/s390.cc (vec_init): Fix default case
210 2023-07-07  Vladimir N. Makarov  <vmakarov@redhat.com>
212         * lra-assigns.cc (assign_by_spills): Add reload insns involving
213         reload pseudos with non-refined class to be processed on the next
214         sub-pass.
215         * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
216         (in_class_p): Use it.
217         (print_curr_insn_alt): New func.
218         (process_alt_operands): Use it.  Improve debug info.
219         (curr_insn_transform): Use print_curr_insn_alt.  Refine reload
220         pseudo class if it is not refined yet.
222 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
224         * value-range.cc (irange::get_bitmask_from_range): Return all the
225         known bits for a singleton.
226         (irange::set_range_from_bitmask): Set a range of a singleton when
227         all bits are known.
229 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
231         * value-range.cc (irange::intersect): Leave normalization to
232         caller.
234 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
236         * data-streamer-in.cc (streamer_read_value_range): Adjust for
237         value/mask.
238         * data-streamer-out.cc (streamer_write_vrange): Same.
239         * range-op.cc (operator_cast::fold_range): Same.
240         * value-range-pretty-print.cc
241         (vrange_printer::print_irange_bitmasks): Same.
242         * value-range-storage.cc (irange_storage::write_lengths_address):
243         Same.
244         (irange_storage::set_irange): Same.
245         (irange_storage::get_irange): Same.
246         (irange_storage::size): Same.
247         (irange_storage::dump): Same.
248         * value-range-storage.h: Same.
249         * value-range.cc (debug): New.
250         (irange_bitmask::dump): New.
251         (add_vrange): Adjust for value/mask.
252         (irange::operator=): Same.
253         (irange::set): Same.
254         (irange::verify_range): Same.
255         (irange::operator==): Same.
256         (irange::contains_p): Same.
257         (irange::irange_single_pair_union): Same.
258         (irange::union_): Same.
259         (irange::intersect): Same.
260         (irange::invert): Same.
261         (irange::get_nonzero_bits_from_range): Rename to...
262         (irange::get_bitmask_from_range): ...this.
263         (irange::set_range_from_nonzero_bits): Rename to...
264         (irange::set_range_from_bitmask): ...this.
265         (irange::set_nonzero_bits): Rename to...
266         (irange::update_bitmask): ...this.
267         (irange::get_nonzero_bits): Rename to...
268         (irange::get_bitmask): ...this.
269         (irange::intersect_nonzero_bits): Rename to...
270         (irange::intersect_bitmask): ...this.
271         (irange::union_nonzero_bits): Rename to...
272         (irange::union_bitmask): ...this.
273         (irange_bitmask::verify_mask): New.
274         * value-range.h (class irange_bitmask): New.
275         (irange_bitmask::set_unknown): New.
276         (irange_bitmask::unknown_p): New.
277         (irange_bitmask::irange_bitmask): New.
278         (irange_bitmask::get_precision): New.
279         (irange_bitmask::get_nonzero_bits): New.
280         (irange_bitmask::set_nonzero_bits): New.
281         (irange_bitmask::operator==): New.
282         (irange_bitmask::union_): New.
283         (irange_bitmask::intersect): New.
284         (class irange): Friend vrange_printer.
285         (irange::varying_compatible_p): Adjust for bitmask.
286         (irange::set_varying): Same.
287         (irange::set_nonzero): Same.
289 2023-07-07  Jan Beulich  <jbeulich@suse.com>
291         * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
293 2023-07-07  Jan Beulich  <jbeulich@suse.com>
295         * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
296         alternative. Switch new last alternative's "isa" attribute to
297         "avx512vl".
298         (vec_extract_hi_v32qi): Likewise.
300 2023-07-07  Pan Li  <pan2.li@intel.com>
301             Robin Dapp  <rdapp@ventanamicro.com>
303         * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
304         when FRM_MODE_DYN.
305         (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
306         (riscv_mode_exit): Likewise for exit mode.
307         (riscv_mode_needed): Likewise for needed mode.
308         (riscv_mode_after): Likewise for after mode.
310 2023-07-07  Pan Li  <pan2.li@intel.com>
312         * config/riscv/vector.md: Fix typo.
314 2023-07-06  Jan Hubicka  <jh@suse.cz>
316         PR middle-end/25623
317         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
318         of iterations determined.
319         * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
321 2023-07-06  Jan Hubicka  <jh@suse.cz>
323         * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
324         probability update to be safe on loops with subloops.
325         Make bound parameter to be iteration bound.
326         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
327         of scale_loop_profile.
328         * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
330 2023-07-06  Hao Liu OS  <hliu@os.amperecomputing.com>
332         PR tree-optimization/110449
333         * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
334         vec_loop for the unrolled loop.
336 2023-07-06  Jan Hubicka  <jh@suse.cz>
338         * cfg.cc (set_edge_probability_and_rescale_others): New function.
339         (update_bb_profile_for_threading): Use it; simplify the rest.
340         * cfg.h (set_edge_probability_and_rescale_others): Declare.
341         * profile-count.h (profile_probability::apply_scale): New.
343 2023-07-06  Claudiu Zissulescu  <claziss@gmail.com>
345         * doc/extend.texi (ARC Built-in Functions): Update documentation
346         with missing builtins.
348 2023-07-06  Richard Biener  <rguenther@suse.de>
350         PR tree-optimization/110556
351         * tree-ssa-tail-merge.cc (gimple_equal_p): Check
352         assign code and all operands of non-stores.
354 2023-07-06  Richard Biener  <rguenther@suse.de>
356         PR tree-optimization/110563
357         * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
358         Remove second argument.
359         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
360         Remove for_epilogue_p argument.  Merge assert ...
361         (vect_analyze_loop_2): ... with check done before determining
362         partial vectors by moving it after.
363         * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
365 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
367         * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
368         few things re 'reorder' option and strings.
369         * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
371 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
373         * gengtype-parse.cc: Clean up obsolete parametrized structs
374         remnants.
375         * gengtype.cc: Likewise.
376         * gengtype.h: Likewise.
378 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
380         * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
381         Adjust all users.
383 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
385         * gengtype-parse.cc (token_names): Add '"user"'.
386         * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
387         'FIRST_TOKEN_WITH_VALUE'.
389 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
391         * doc/gty.texi (GTY Options) <string_length>: Enhance.
393 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
395         * gengtype.cc (write_root, write_roots): Explicitly reject
396         'string_length' option.
397         * doc/gty.texi (GTY Options) <string_length>: Document.
399 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
401         * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
402         (ggc_pch_write_object): Remove 'bool is_string' argument.
403         * ggc-common.cc: Adjust.
404         * ggc-page.cc: Likewise.
406 2023-07-06  Roger Sayle  <roger@nextmovesoftware.com>
408         * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
410 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
412         * doc/extend.texi: Move x86 inlining rule to a new subsubsection
413         and add description for inling of function with arch and tune
414         attributes.
416 2023-07-06  Richard Biener  <rguenther@suse.de>
418         PR tree-optimization/110515
419         * tree-ssa-pre.cc (compute_avail): Make code dealing
420         with hoisting loads with different alias-sets more
421         robust.
423 2023-07-06  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
425         * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
427 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
429         * config/i386/i386.cc (ix86_can_inline_p): If callee has
430         default arch=x86-64 and tune=generic, do not block the
431         inlining to its caller. Also allow callee with different
432         arch= to be inlined if it has always_inline attribute and
433         it's ISA is subset of caller's.
435 2023-07-06  liuhongt  <hongtao.liu@intel.com>
437         * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
438         DF/SFmode AND/IOR/XOR/ANDN operations.
440 2023-07-06  Andrew Pinski  <apinski@marvell.com>
442         PR middle-end/110554
443         * tree-vect-generic.cc (expand_vector_condition): For comparisons,
444         just build using boolean_type_node instead of the cond_type.
445         For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
446         that will feed into the COND_EXPR.
448 2023-07-06  liuhongt  <hongtao.liu@intel.com>
450         PR target/110170
451         * config/i386/i386.md (movdf_internal): Disparage slightly for
452         2 alternatives (r,v) and (v,r) by adding constraint modifier
453         '?'.
455 2023-07-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
457         PR target/106907
458         * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
459         initialization of new_addr.
461 2023-07-06  Hao Liu  <hliu@os.amperecomputing.com>
463         PR tree-optimization/110474
464         * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
465         unroll factor while selecting the epilog vect loop VF.
467 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
469         * gimple-range-gori.cc (compute_operand_range): Convert to a tail
470         call.
472 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
474         * gimple-range-gori.cc (compute_operand_range): After calling
475         compute_operand2_range, recursively call self if needed.
476         (compute_operand2_range): Turn into a leaf function.
477         (gori_compute::compute_operand1_and_operand2_range): Finish
478         operand2 calculation.
479         * gimple-range-gori.h (compute_operand2_range): Remove name param.
481 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
483         * gimple-range-gori.cc (compute_operand_range): After calling
484         compute_operand1_range, recursively call self if needed.
485         (compute_operand1_range): Turn into a leaf function.
486         (gori_compute::compute_operand1_and_operand2_range): Finish
487         operand1 calculation.
488         * gimple-range-gori.h (compute_operand1_range): Remove name param.
490 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
492         * gimple-range-gori.cc (compute_operand_range): Check for
493         operand interdependence when both op1 and op2 are computed.
494         (compute_operand1_and_operand2_range): No checks required now.
496 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
498         * gimple-range-gori.cc (compute_operand_range): Check for
499         a relation between op1 and op2 and use that instead.
500         (compute_operand1_range): Don't look for a relation override.
501         (compute_operand2_range): Ditto.
503 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
505         * doc/contrib.texi (Contributors): Update my entry.
507 2023-07-05  Filip Kastl  <filip.kastl@gmail.com>
509         * value-prof.cc (gimple_mod_subtract_transform): Correct edge
510         prob calculation.
512 2023-07-05  Uros Bizjak  <ubizjak@gmail.com>
514         * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
515         scehdule_more_p and contributes_to_priority indirect frunction
516         type from int to bool.
517         (no_real_insns_p): Change return type from int to bool.
518         (contributes_to_priority): Ditto.
519         * haifa-sched.cc (no_real_insns_p): Change return type from
520         int to bool and adjust function body accordingly.
521         * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
522         variable type from int to bool.
523         (ps_insn_advance_column): Change return type from int to bool.
524         (ps_has_conflicts): Ditto. Change "has_conflicts"
525         variable type from int to bool.
526         * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
527         (conditions_mutex_p): Ditto.
528         * sched-ebb.cc (schedule_more_p): Ditto.
529         (ebb_contributes_to_priority): Change return type from
530         int to bool and adjust function body accordingly.
531         * sched-rgn.cc (is_cfg_nonregular): Ditto.
532         (check_live_1): Ditto.
533         (is_pfree): Ditto.
534         (find_conditional_protection): Ditto.
535         (is_conditionally_protected): Ditto.
536         (is_prisky): Ditto.
537         (is_exception_free): Ditto.
538         (haifa_find_rgns): Change "unreachable" and "too_large_failure"
539         variables from int to bool.
540         (extend_rgns): Change "rescan" variable from int to bool.
541         (check_live): Change return type from
542         int to bool and adjust function body accordingly.
543         (can_schedule_ready_p): Ditto.
544         (schedule_more_p): Ditto.
545         (contributes_to_priority): Ditto.
547 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
549         * doc/md.texi: Document that vec_set and vec_extract must not
550         fail.
551         * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
552         (gimple_expand_vec_set_extract_expr): ...to this.
553         (gimple_expand_vec_exprs): Call renamed function.
554         * internal-fn.cc (vec_extract_direct): Add.
555         (expand_vec_extract_optab_fn): New function to expand
556         vec_extract optab.
557         (direct_vec_extract_optab_supported_p): Add.
558         * internal-fn.def (VEC_EXTRACT): Add.
559         * optabs.cc (can_vec_extract_var_idx_p): New function.
560         * optabs.h (can_vec_extract_var_idx_p): Declare.
562 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
564         * config/riscv/autovec.md: Add gen_lowpart.
566 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
568         * config/riscv/autovec.md: Allow register index operand.
570 2023-07-05  Pan Li  <pan2.li@intel.com>
572         * config/riscv/riscv-vector-builtins.cc
573         (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
575 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
577         * config/riscv/autovec.md: Use float_truncate.
579 2023-07-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
581         * internal-fn.cc (internal_fn_len_index): Apply
582         LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
583         (internal_fn_mask_index): Ditto.
584         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
585         (supports_vec_scatter_store_p): Ditto.
586         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
587         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
588         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
589         (vect_get_strided_load_store_ops): Ditto.
590         (vectorizable_store): Ditto.
591         (vectorizable_load): Ditto.
593 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
594             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
596         * simplify-rtx.cc (native_encode_rtx): Ditto.
597         (native_decode_vector_rtx): Ditto.
598         (simplify_const_vector_byte_offset): Ditto.
599         (simplify_const_vector_subreg): Ditto.
600         * tree.cc (build_truth_vector_type_for_mode): Ditto.
601         * varasm.cc (output_constant_pool_2): Ditto.
603 2023-07-05  YunQiang Su  <yunqiang.su@cipunited.com>
605         * config/mips/mips.cc (mips_expand_block_move): don't expand for
606         r6 with -mno-unaligned-access option if one or both of src and
607         dest are unaligned. restruct: return directly if length is not const.
608         (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
610 2023-07-05  Jan Beulich  <jbeulich@suse.com>
612         PR target/100711
613         * config/i386/sse.md: New splitters to simplify
614         not;vec_duplicate as a singular vpternlog.
615         (one_cmpl<mode>2): Allow broadcast for operand 1.
616         (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
618 2023-07-05  Jan Beulich  <jbeulich@suse.com>
620         PR target/100711
621         * config/i386/sse.md: New splitters to simplify
622         not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
624 2023-07-05  Jan Beulich  <jbeulich@suse.com>
626         PR target/100711
627         * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
628         form of splitter for PR target/100711.
630 2023-07-05  Richard Biener  <rguenther@suse.de>
632         PR middle-end/110541
633         * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
634         reality.
636 2023-07-05  Jan Beulich  <jbeulich@suse.com>
638         PR target/93768
639         * config/i386/sse.md (*andnot<mode>3): Add new alternatives
640         for memory form operand 1.
642 2023-07-05  Jan Beulich  <jbeulich@suse.com>
644         PR target/93768
645         * config/i386/i386.cc (ix86_rtx_costs): Further special-case
646         bitwise vector operations.
647         * config/i386/sse.md (*iornot<mode>3): New insn.
648         (*xnor<mode>3): Likewise.
649         (*<nlogic><mode>3): Likewise.
650         (andor): New code iterator.
651         (nlogic): New code attribute.
652         (ternlog_nlogic): Likewise.
654 2023-07-05  Richard Biener  <rguenther@suse.de>
656         * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
658 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
660         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
662 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
664         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
665         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
666         (ADJUST_ALIGNMENT): Ditto.
667         (RVV_TUPLE_PARTIAL_MODES): Ditto.
668         (ADJUST_NUNITS): Ditto.
669         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
670         New types.
671         (vfloat16mf4x3_t): Ditto.
672         (vfloat16mf4x4_t): Ditto.
673         (vfloat16mf4x5_t): Ditto.
674         (vfloat16mf4x6_t): Ditto.
675         (vfloat16mf4x7_t): Ditto.
676         (vfloat16mf4x8_t): Ditto.
677         (vfloat16mf2x2_t): Ditto.
678         (vfloat16mf2x3_t): Ditto.
679         (vfloat16mf2x4_t): Ditto.
680         (vfloat16mf2x5_t): Ditto.
681         (vfloat16mf2x6_t): Ditto.
682         (vfloat16mf2x7_t): Ditto.
683         (vfloat16mf2x8_t): Ditto.
684         (vfloat16m1x2_t): Ditto.
685         (vfloat16m1x3_t): Ditto.
686         (vfloat16m1x4_t): Ditto.
687         (vfloat16m1x5_t): Ditto.
688         (vfloat16m1x6_t): Ditto.
689         (vfloat16m1x7_t): Ditto.
690         (vfloat16m1x8_t): Ditto.
691         (vfloat16m2x2_t): Ditto.
692         (vfloat16m2x3_t): Ditto.
693         (vfloat16m2x4_t): Ditto.
694         (vfloat16m4x2_t): Ditto.
695         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
696         (vfloat16mf4x3_t): Ditto.
697         (vfloat16mf4x4_t): Ditto.
698         (vfloat16mf4x5_t): Ditto.
699         (vfloat16mf4x6_t): Ditto.
700         (vfloat16mf4x7_t): Ditto.
701         (vfloat16mf4x8_t): Ditto.
702         (vfloat16mf2x2_t): Ditto.
703         (vfloat16mf2x3_t): Ditto.
704         (vfloat16mf2x4_t): Ditto.
705         (vfloat16mf2x5_t): Ditto.
706         (vfloat16mf2x6_t): Ditto.
707         (vfloat16mf2x7_t): Ditto.
708         (vfloat16mf2x8_t): Ditto.
709         (vfloat16m1x2_t): Ditto.
710         (vfloat16m1x3_t): Ditto.
711         (vfloat16m1x4_t): Ditto.
712         (vfloat16m1x5_t): Ditto.
713         (vfloat16m1x6_t): Ditto.
714         (vfloat16m1x7_t): Ditto.
715         (vfloat16m1x8_t): Ditto.
716         (vfloat16m2x2_t): Ditto.
717         (vfloat16m2x3_t): Ditto.
718         (vfloat16m2x4_t): Ditto.
719         (vfloat16m4x2_t): Ditto.
720         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
721         * config/riscv/riscv.md: New.
722         * config/riscv/vector-iterators.md: New.
724 2023-07-04  Andrew Pinski  <apinski@marvell.com>
726         PR tree-optimization/110487
727         * match.pd (a !=/== CST1 ? CST2 : CST3): Always
728         build a nonstandard integer and use that.
730 2023-07-04  Andrew Pinski  <apinski@marvell.com>
732         * match.pd (a?-1:0): Cast type an integer type
733         rather the type before the negative.
734         (a?0:-1): Likewise.
736 2023-07-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
738         * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
739         Change to use HARD_REG_BIT and its macros.
740         * config/xtensa/xtensa.md
741         (peephole2: regmove elimination during DFmode input reload):
742         Likewise.
744 2023-07-04  Richard Biener  <rguenther@suse.de>
746         PR tree-optimization/110491
747         * tree-ssa-phiopt.cc (match_simplify_replacement): Check
748         whether the PHI args are possibly undefined before folding
749         the COND_EXPR.
751 2023-07-04  Pan Li  <pan2.li@intel.com>
752             Thomas Schwinge  <thomas@codesourcery.com>
754         * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
755         bits for machine mode table.
756         * lto-streamer-out.cc (lto_write_mode_table): Stream out the
757         HOST machine mode bits.
758         * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
759         * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
760         as the table size.
761         * tree-streamer.h (streamer_mode_table): Ditto.
762         (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
763         as the packing limit.
764         (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
766 2023-07-04  Thomas Schwinge  <thomas@codesourcery.com>
768         * lto-streamer.h (class lto_input_block): Capture
769         'lto_file_decl_data *file_data' instead of just
770         'unsigned char *mode_table'.
771         * ipa-devirt.cc (ipa_odr_read_section): Adjust.
772         * ipa-fnsummary.cc (inline_read_section): Likewise.
773         * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
774         * ipa-modref.cc (read_section): Likewise.
775         * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
776         Likewise.
777         * ipa-sra.cc (isra_read_summary_section): Likewise.
778         * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
779         * lto-section-in.cc (lto_create_simple_input_block): Likewise.
780         * lto-streamer-in.cc (lto_read_body_or_constructor)
781         (lto_input_toplevel_asms): Likewise.
782         * tree-streamer.h (bp_unpack_machine_mode): Likewise.
784 2023-07-04  Richard Biener  <rguenther@suse.de>
786         * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
787         (empty_bb_or_one_feeding_into_p): Check for them.
788         * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
789         * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
791 2023-07-04  Richard Biener  <rguenther@suse.de>
793         * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
794         check guarding scalar_niter underflow.
796 2023-07-04  Hao Liu  <hliu@os.amperecomputing.com>
798         PR tree-optimization/110531
799         * tree-vect-loop.cc (vect_analyze_loop_1): initialize
800         slp_done_for_suggested_uf to false.
802 2023-07-04  Richard Biener  <rguenther@suse.de>
804         PR tree-optimization/110228
805         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
806         Mark SSA may-undefs.
807         (bb_no_side_effects_p): Check stmt uses for undefs.
809 2023-07-04  Richard Biener  <rguenther@suse.de>
811         PR tree-optimization/110436
812         * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
813         force live but not relevant pattern stmts relevant.
815 2023-07-04  Lili Cui  <lili.cui@intel.com>
817         * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
818         * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
820 2023-07-04  Richard Biener  <rguenther@suse.de>
822         PR middle-end/110495
823         * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
824         since we do not set TREE_OVERFLOW on those since the
825         introduction of VL vectors.
826         * match.pd (x +- CST +- CST): For VECTOR_CST do not look
827         at TREE_OVERFLOW to determine validity of association.
829 2023-07-04  Richard Biener  <rguenther@suse.de>
831         PR tree-optimization/110310
832         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
833         Move costing part ...
834         (vect_analyze_loop_costing): ... here.  Integrate better
835         estimate for epilogues from ...
836         (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
837         with actual epilogue status.
838         * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
839         avoid cancelling epilogue vectorization.
840         (vect_update_epilogue_niters): Remove.  No longer update
841         epilogue LOOP_VINFO_NITERS.
843 2023-07-04  Pan Li  <pan2.li@intel.com>
845         Revert:
846         2023-07-03  Pan Li  <pan2.li@intel.com>
848         * config/riscv/vector.md: Fix typo.
850 2023-07-04  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
852         * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
853         * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
854         (expand_gather_load_optab_fn): Ditto.
855         (internal_load_fn_p): Ditto.
856         (internal_store_fn_p): Ditto.
857         (internal_gather_scatter_fn_p): Ditto.
858         (internal_fn_len_index): Ditto.
859         (internal_fn_mask_index): Ditto.
860         (internal_fn_stored_value_index): Ditto.
861         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
862         (LEN_MASK_SCATTER_STORE): Ditto.
863         * optabs.def (OPTAB_CD): Ditto.
865 2023-07-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
867         * config/riscv/riscv-vsetvl.cc
868         (vector_insn_info::parse_insn): Add early break.
870 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
872         * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
873         ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
875 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
877         * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
879 2023-07-03  Christoph Müllner  <christoph.muellner@vrull.eu>
881         * common/config/riscv/riscv-common.cc: Add support for zvbb,
882         zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
883         zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
884         * config/riscv/arch-canonicalize: Add canonicalization info for
885         zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
886         * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
887         (MASK_ZVBC): Likewise.
888         (TARGET_ZVBB): Likewise.
889         (TARGET_ZVBC): Likewise.
890         (MASK_ZVKG): Likewise.
891         (MASK_ZVKNED): Likewise.
892         (MASK_ZVKNHA): Likewise.
893         (MASK_ZVKNHB): Likewise.
894         (MASK_ZVKSED): Likewise.
895         (MASK_ZVKSH): Likewise.
896         (MASK_ZVKN): Likewise.
897         (MASK_ZVKNC): Likewise.
898         (MASK_ZVKNG): Likewise.
899         (MASK_ZVKS): Likewise.
900         (MASK_ZVKSC): Likewise.
901         (MASK_ZVKSG): Likewise.
902         (MASK_ZVKT): Likewise.
903         (TARGET_ZVKG): Likewise.
904         (TARGET_ZVKNED): Likewise.
905         (TARGET_ZVKNHA): Likewise.
906         (TARGET_ZVKNHB): Likewise.
907         (TARGET_ZVKSED): Likewise.
908         (TARGET_ZVKSH): Likewise.
909         (TARGET_ZVKN): Likewise.
910         (TARGET_ZVKNC): Likewise.
911         (TARGET_ZVKNG): Likewise.
912         (TARGET_ZVKS): Likewise.
913         (TARGET_ZVKSC): Likewise.
914         (TARGET_ZVKSG): Likewise.
915         (TARGET_ZVKT): Likewise.
916         * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
918 2023-07-03  Andrew Pinski  <apinski@marvell.com>
920         PR middle-end/110510
921         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
923 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
925         * config/darwin.h: Avoid duplicate multiply_defined specs on
926         earlier Darwin versions with shared libgcc.
928 2023-07-03  Uros Bizjak  <ubizjak@gmail.com>
930         * tree.h (tree_int_cst_equal): Change return type from int to bool.
931         (operand_equal_for_phi_arg_p): Ditto.
932         (tree_map_base_marked_p): Ditto.
933         * tree.cc (contains_placeholder_p): Update function body
934         for bool return type.
935         (type_cache_hasher::equal): Ditto.
936         (tree_map_base_hash): Change return type
937         from int to void and adjust function body accordingly.
938         (tree_int_cst_equal): Ditto.
939         (operand_equal_for_phi_arg_p): Ditto.
940         (get_narrower): Change "first" variable to bool.
941         (cl_option_hasher::equal): Update function body for bool return type.
942         * ggc.h (ggc_set_mark): Change return type from int to bool.
943         (ggc_marked_p): Ditto.
944         * ggc-page.cc (gt_ggc_mx): Change return type
945         from int to void and adjust function body accordingly.
946         (ggc_set_mark): Ditto.
948 2023-07-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
950         * config/riscv/autovec.md: Change order of
951         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
952         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
953         * doc/md.texi: Ditto.
954         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
955         * internal-fn.cc (len_maskload_direct): Ditto.
956         (len_maskstore_direct): Ditto.
957         (add_len_and_mask_args): New function.
958         (expand_partial_load_optab_fn): Change order of
959         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
960         (expand_partial_store_optab_fn): Ditto.
961         (internal_fn_len_index): New function.
962         (internal_fn_mask_index): Change order of
963         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
964         (internal_fn_stored_value_index): Ditto.
965         (internal_len_load_store_bias): Ditto.
966         * internal-fn.h (internal_fn_len_index): New function.
967         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
968         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
969         * tree-vect-stmts.cc (vectorizable_store): Ditto.
970         (vectorizable_load): Ditto.
972 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
974         PR modula2/110125
975         * doc/gm2.texi (Semantic checking): Include examples using
976         -Wuninit-variable-checking.
978 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
980         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
981         (*single_widen_fnma<mode>): Ditto.
982         (*double_widen_fms<mode>): Ditto.
983         (*single_widen_fms<mode>): Ditto.
984         (*double_widen_fnms<mode>): Ditto.
985         (*single_widen_fnms<mode>): Ditto.
987 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
989         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
990         into "*" in pattern name which simplifies build files.
991         (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
992         (*pred_single_widen_mul<mode>): New pattern.
994 2023-07-03  Richard Sandiford  <richard.sandiford@arm.com>
996         * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
997         the index to be 0 or 1.
999 2023-07-03  Lehua Ding  <lehua.ding@rivai.ai>
1001         Revert:
1002         2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1004         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
1005         (*single_widen_fnma<mode>): Ditto.
1006         (*double_widen_fms<mode>): Ditto.
1007         (*single_widen_fms<mode>): Ditto.
1008         (*double_widen_fnms<mode>): Ditto.
1009         (*single_widen_fnms<mode>): Ditto.
1011 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1013         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
1014         (*single_widen_fnma<mode>): Ditto.
1015         (*double_widen_fms<mode>): Ditto.
1016         (*single_widen_fms<mode>): Ditto.
1017         (*double_widen_fnms<mode>): Ditto.
1018         (*single_widen_fnms<mode>): Ditto.
1020 2023-07-03  Pan Li  <pan2.li@intel.com>
1022         * config/riscv/vector.md: Fix typo.
1024 2023-07-03  Richard Biener  <rguenther@suse.de>
1026         PR tree-optimization/110506
1027         * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
1028         TYPE_PRECISION access with INTEGRAL_TYPE_P check.
1030 2023-07-03  Richard Biener  <rguenther@suse.de>
1032         PR tree-optimization/110506
1033         * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
1034         type before relying on TYPE_PRECISION to produce a nonzero mask.
1036 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1038         * config/mips/mips.md(*and<mode>3_mips16): Generates
1039         ZEB/ZEH instructions.
1041 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1043         * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
1044         address register to M16_REGS for MIPS16.
1045         (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
1046         (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
1047         (AVAIL_NON_MIPS16 (cache..)): Update to
1048         AVAIL_MIPS16E2_OR_NON_MIPS16.
1049         * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
1050         * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
1052 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1054         * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
1055         for ISA_HAS_MIPS16E2.
1056         (ISA_HAS_SYNC): Same as above.
1057         (ISA_HAS_LL_SC): Same as above.
1059 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1061         * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
1062         Add logics for generating instruction.
1063         * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
1064         * config/mips/mips.md(mov_<load>l): Generates instructions.
1065         (mov_<load>r): Same as above.
1066         (mov_<store>l): Adjusted for the conditions above.
1067         (mov_<store>r): Same as above.
1068         (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
1069         (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
1071 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1073         * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
1074         (mips_const_insns): Same as above.
1075         (mips_output_move): Same as above.
1076         (mips_output_function_prologue): Same as above.
1077         * config/mips/mips.md: Same as above
1079 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1081         * config/mips/constraints.md(Yz): New constraints for mips16e2.
1082         * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
1083         (mips_bit_clear_info): Same as above.
1084         * config/mips/mips.cc(mips_bit_clear_info): New function for
1085         generating instructions.
1086         (mips_bit_clear_p): Same as above.
1087         * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
1088         * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
1089         (*and<mode>3): Generates INS instruction.
1090         (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
1091         (ior<mode>3): Add logics for ORI instruction.
1092         (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
1093         (*ior<mode>3_mips16): Add logics for XORI instruction.
1094         (*xor<mode>3_mips16): Generates XORI instrucion.
1095         (*extzv<mode>): Add logics for EXT instruction.
1096         (*insv<mode>): Add logics for INS instruction.
1097         * config/mips/predicates.md(bit_clear_operand): New predicate for
1098         generating bitwise instructions.
1099         (and_reg_operand): Add logics for generating bitwise instructions.
1101 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1103         * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
1104         that uses global pointer register.
1105         (mips16_unextended_reference_p): Same as above.
1106         (mips_pic_base_register): Same as above.
1107         (mips_init_relocs): Same as above.
1108         * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
1109         (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
1110         * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
1111         (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
1113 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1115         * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
1116         * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
1117         (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
1118         (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
1119         (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
1120         * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
1122 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
1124         * config/mips/mips.cc(mips_file_start): Add mips16e2 info
1125         for output file.
1126         * config/mips/mips.h(__mips_mips16e2): Defined a new
1127         predefine macro.
1128         (ISA_HAS_MIPS16E2): Defined a new macro.
1129         (ASM_SPEC): Pass mmips16e2 to the assembler.
1130         * config/mips/mips.opt: Add -m(no-)mips16e2 option.
1131         * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
1132         * doc/invoke.texi: Add -m(no-)mips16e2 option..
1134 2023-07-02  Jakub Jelinek  <jakub@redhat.com>
1136         PR tree-optimization/110508
1137         * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
1138         REALPART_EXPR opf nlhs if re2 is non-NULL.
1140 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
1142         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
1143         Simplify.
1144         * config/xtensa/xtensa.md (*xtensa_clamps):
1145         Add TARGET_MINMAX to the condition.
1147 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
1149         * config/xtensa/xtensa.md (*eqne_INT_MIN):
1150         Add missing ":SI" to the match_operator.
1152 2023-07-02  Iain Sandoe  <iain@sandoe.co.uk>
1154         PR target/108743
1155         * config/darwin.opt: Add fconstant-cfstrings alias to
1156         mconstant-cfstrings.
1157         * doc/invoke.texi: Amend invocation descriptions to reflect
1158         that the fconstant-cfstrings is a target-option alias and to
1159         add the missing mconstant-cfstrings option description to the
1160         Darwin section.
1162 2023-07-01  Jan Hubicka  <jh@suse.cz>
1164         * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
1165         parmaeter; update profile.
1166         * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
1167         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
1168         (static_loop_exit): ... this; return the edge to be elliminated.
1169         (ch_base::copy_headers): Handle profile updating for eliminated exits.
1171 2023-07-01  Roger Sayle  <roger@nextmovesoftware.com>
1173         * config/i386/i386-features.cc (compute_convert_gain): Provide
1174         gains/costs for ROTATE and ROTATERT (by an integer constant).
1175         (general_scalar_chain::convert_rotate): New helper function to
1176         convert a DImode or SImode rotation by an integer constant into
1177         SSE vector form.
1178         (general_scalar_chain::convert_insn): Call the new convert_rotate
1179         for ROTATE and ROTATERT.
1180         (general_scalar_to_vector_candidate_p): Consider ROTATE and
1181         ROTATERT to be candidates if the second operand is an integer
1182         constant, valid for a rotation (or shift) in the given mode.
1183         * config/i386/i386-features.h (general_scalar_chain): Add new
1184         helper method convert_rotate.
1186 2023-07-01  Jan Hubicka  <jh@suse.cz>
1188         PR tree-optimization/103680
1189         * cfg.cc (update_bb_profile_for_threading): Fix profile update;
1190         make message clearer.
1192 2023-06-30  Qing Zhao  <qing.zhao@oracle.com>
1194         PR tree-optimization/101832
1195         * tree-object-size.cc (addr_object_size): Handle structure/union type
1196         when it has flexible size.
1198 2023-06-30  Eric Botcazou  <ebotcazou@adacore.com>
1200         * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
1201         (fold_nonarray_ctor_reference): Likewise.  Specifically deal
1202         with integral bit-fields.
1203         (fold_ctor_reference): Make sure that the constructor uses the
1204         native storage order.
1206 2023-06-30  Jan Hubicka  <jh@suse.cz>
1208         PR middle-end/109849
1209         * predict.cc (estimate_bb_frequencies): Turn to static function.
1210         (expr_expected_value_1): Fix handling of binary expressions with
1211         predicted values.
1212         * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
1213         (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
1214         queue.
1215         * predict.h (estimate_bb_frequencies): No longer declare it.
1217 2023-06-30  Uros Bizjak  <ubizjak@gmail.com>
1219         * fold-const.h (multiple_of_p): Change return type from int to bool.
1220         * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
1221         neg_conp_p and neg_var_p variables to bool.
1222         (const_binop): Change sat_p variable to bool.
1223         (merge_ranges): Change no_overlap variable to bool.
1224         (extract_muldiv_1): Change same_p variable to bool.
1225         (tree_swap_operands_p): Update function body for bool return type.
1226         (fold_truth_andor): Change commutative variable to bool.
1227         (multiple_of_p): Change return type
1228         from int to void and adjust function body accordingly.
1229         * optabs.h (expand_twoval_unop): Change return type from int to bool.
1230         (expand_twoval_binop): Ditto.
1231         (can_compare_p): Ditto.
1232         (have_add2_insn): Ditto.
1233         (have_addptr3_insn): Ditto.
1234         (have_sub2_insn): Ditto.
1235         (have_insn_for): Ditto.
1236         * optabs.cc (add_equal_note): Ditto.
1237         (widen_operand): Change no_extend argument from int to bool.
1238         (expand_binop): Ditto.
1239         (expand_twoval_unop): Change return type
1240         from int to void and adjust function body accordingly.
1241         (expand_twoval_binop): Ditto.
1242         (can_compare_p): Ditto.
1243         (have_add2_insn): Ditto.
1244         (have_addptr3_insn): Ditto.
1245         (have_sub2_insn): Ditto.
1246         (have_insn_for): Ditto.
1248 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
1250         * config/aarch64/aarch64-simd.md
1251         (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
1252         Expansions for abd vec widen optabs.
1253         (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
1254         * config/aarch64/iterators.md (USMAX_EXT): Code attributes
1255         that give the appropriate extend RTL for the max RTL.
1257 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
1259         * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
1260         * optabs.def (vec_widen_sabd_optab,
1261         vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
1262         vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
1263         vec_widen_uabd_optab,
1264         vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
1265         vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
1266         New optabs.
1267         * doc/md.texi: Document them.
1268         * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
1269         to build a VEC_WIDEN_ABD call if the input precision is smaller
1270         than the precision of the output.
1271         (vect_recog_widen_abd_pattern): Should an ABD expression be
1272         found preceeding an extension, replace the two with a
1273         VEC_WIDEN_ABD.
1275 2023-06-30  Pan Li  <pan2.li@intel.com>
1277         * config/riscv/vector.md: Refactor the common condition.
1279 2023-06-30  Richard Biener  <rguenther@suse.de>
1281         PR tree-optimization/110496
1282         * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
1283         verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
1285 2023-06-30  Richard Biener  <rguenther@suse.de>
1287         PR middle-end/110489
1288         * statistics.cc (curr_statistics_hash): Add argument
1289         indicating whether we should allocate the hash.
1290         (statistics_fini_pass): If the hash isn't allocated
1291         only print the summary header.
1293 2023-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
1294             Thomas Schwinge  <thomas@codesourcery.com>
1296         * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
1298 2023-06-30  Jovan Dmitrović  <jovan.dmitrovic@syrmia.com>
1300         PR target/109435
1301         * config/mips/mips.cc (mips_function_arg_alignment): Returns
1302         the alignment of function argument. In case of typedef type,
1303         it returns the aligment of the aliased type.
1304         (mips_function_arg_boundary): Relocated calculation of the
1305         aligment of function arguments.
1307 2023-06-29  Jan Hubicka  <jh@suse.cz>
1309         PR tree-optimization/109849
1310         * ipa-fnsummary.cc (decompose_param_expr): Skip
1311         functions returning its parameter.
1312         (set_cond_stmt_execution_predicate): Return early
1313         if predicate was constructed.
1315 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
1317         PR c/77650
1318         * doc/extend.texi: Document GCC extension on a structure containing
1319         a flexible array member to be a member of another structure.
1321 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
1323         * print-tree.cc (print_node): Print new bit type_include_flexarray.
1324         * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
1325         as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
1326         * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
1327         in bit no_named_args_stdarg_p properly for its corresponding type.
1328         * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
1329         out bit no_named_args_stdarg_p properly for its corresponding type.
1330         * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
1332 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
1334         * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
1335         * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
1336         * tree-vrp.h (maybe_set_nonzero_bits): Remove.
1338 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
1340         * value-range.cc (frange::set): Do not call verify_range.
1341         (frange::normalize_kind): Verify range.
1342         (frange::union_nans): Do not call verify_range.
1343         (frange::union_): Same.
1344         (frange::intersect): Same.
1345         (irange::irange_single_pair_union): Call normalize_kind if
1346         necessary.
1347         (irange::union_): Same.
1348         (irange::intersect): Same.
1349         (irange::set_range_from_nonzero_bits): Verify range.
1350         (irange::set_nonzero_bits): Call normalize_kind if necessary.
1351         (irange::get_nonzero_bits): Tweak comment.
1352         (irange::intersect_nonzero_bits): Call normalize_kind if
1353         necessary.
1354         (irange::union_nonzero_bits): Same.
1355         * value-range.h (irange::normalize_kind): Verify range.
1357 2023-06-29  Uros Bizjak  <ubizjak@gmail.com>
1359         * cselib.h (rtx_equal_for_cselib_1):
1360         Change return type from int to bool.
1361         (references_value_p): Ditto.
1362         (rtx_equal_for_cselib_p): Ditto.
1363         * expr.h (can_store_by_pieces): Ditto.
1364         (try_casesi): Ditto.
1365         (try_tablejump): Ditto.
1366         (safe_from_p): Ditto.
1367         * sbitmap.h (bitmap_equal_p): Ditto.
1368         * cselib.cc (references_value_p): Change return type
1369         from int to void and adjust function body accordingly.
1370         (rtx_equal_for_cselib_1): Ditto.
1371         * expr.cc (is_aligning_offset): Ditto.
1372         (can_store_by_pieces): Ditto.
1373         (mostly_zeros_p): Ditto.
1374         (all_zeros_p): Ditto.
1375         (safe_from_p): Ditto.
1376         (is_aligning_offset): Ditto.
1377         (try_casesi): Ditto.
1378         (try_tablejump): Ditto.
1379         (store_constructor): Change "need_to_clear" and
1380         "const_bounds_p" variables to bool.
1381         * sbitmap.cc (bitmap_equal_p):  Change return type from int to bool.
1383 2023-06-29  Robin Dapp  <rdapp@ventanamicro.com>
1385         * tree-ssa-math-opts.cc (divmod_candidate_p): Use
1386         element_precision.
1388 2023-06-29  Richard Biener  <rguenther@suse.de>
1390         PR tree-optimization/110460
1391         * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
1392         Only allow integral, pointer and scalar float type scalar_type.
1394 2023-06-29  Lili Cui  <lili.cui@intel.com>
1396         PR tree-optimization/110148
1397         * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
1398         ops in this function.
1400 2023-06-29  Richard Biener  <rguenther@suse.de>
1402         PR middle-end/110452
1403         * expr.cc (store_constructor): Handle uniform boolean
1404         vectors with integer mode specially.
1406 2023-06-29  Richard Biener  <rguenther@suse.de>
1408         PR middle-end/110461
1409         * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
1410         for VECTOR_TYPE_P.
1412 2023-06-29  Richard Sandiford  <richard.sandiford@arm.com>
1414         * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
1415         (array_slice): Relax va_gc constructor to handle all vectors
1416         with a vl_embed layout.
1418 2023-06-29  Pan Li  <pan2.li@intel.com>
1420         * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
1421         (riscv_mode_needed): Likewise.
1422         (riscv_entity_mode_after): Likewise.
1423         (riscv_mode_after): Likewise.
1424         (riscv_mode_entry): Likewise.
1425         (riscv_mode_exit): Likewise.
1426         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
1427         for FRM.
1428         * config/riscv/riscv.md: Add FRM register.
1429         * config/riscv/vector-iterators.md: Add FRM type.
1430         * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
1431         (fsrm): Define new insn for fsrm instruction.
1433 2023-06-29  Pan Li  <pan2.li@intel.com>
1435         * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
1436         Add macro for static frm min and max.
1437         * config/riscv/riscv-vector-builtins-bases.cc
1438         (class binop_frm): New class for floating-point with frm.
1439         (BASE): Add vfadd for frm.
1440         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
1441         * config/riscv/riscv-vector-builtins-functions.def
1442         (vfadd_frm): Likewise.
1443         * config/riscv/riscv-vector-builtins-shapes.cc
1444         (struct alu_frm_def): New struct for alu with frm.
1445         (SHAPE): Add alu with frm.
1446         * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
1447         * config/riscv/riscv-vector-builtins.cc
1448         (function_checker::report_out_of_range_and_not): New function
1449         for report out of range and not val.
1450         (function_checker::require_immediate_range_or): New function
1451         for checking in range or one val.
1452         * config/riscv/riscv-vector-builtins.h: Add function decl.
1454 2023-06-29  Cui, Lili  <lili.cui@intel.com>
1456         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
1457         from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
1459 2023-06-28  Hans-Peter Nilsson  <hp@axis.com>
1461         PR target/110144
1462         * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
1463         to insn before validating it.
1465 2023-06-28  Jan Hubicka  <jh@suse.cz>
1467         PR middle-end/110334
1468         * ipa-fnsummary.h (ipa_fn_summary): Add
1469         safe_to_inline_to_always_inline.
1470         * ipa-inline.cc (can_early_inline_edge_p): ICE
1471         if SSA is not built; do cycle checking for
1472         always_inline functions.
1473         (inline_always_inline_functions): Be recrusive;
1474         watch for cycles; do not updat overall summary.
1475         (early_inliner): Do not give up on always_inlines.
1476         * ipa-utils.cc (ipa_reverse_postorder): Do not skip
1477         always inlines.
1479 2023-06-28  Uros Bizjak  <ubizjak@gmail.com>
1481         * output.h (leaf_function_p): Change return type from int to bool.
1482         (final_forward_branch_p): Ditto.
1483         (only_leaf_regs_used): Ditto.
1484         (maybe_assemble_visibility): Ditto.
1485         * varasm.h (supports_one_only): Ditto.
1486         * rtl.h (compute_alignments): Change return type from int to void.
1487         * final.cc (app_on): Change return type from int to bool.
1488         (compute_alignments): Change return type from int to void
1489         and adjust function body accordingly.
1490         (shorten_branches):  Change "something_changed" variable
1491         type from int to bool.
1492         (leaf_function_p):  Change return type from int to bool
1493         and adjust function body accordingly.
1494         (final_forward_branch_p): Ditto.
1495         (only_leaf_regs_used): Ditto.
1496         * varasm.cc (contains_pointers_p): Change return type from
1497         int to bool and adjust function body accordingly.
1498         (compare_constant): Ditto.
1499         (maybe_assemble_visibility): Ditto.
1500         (supports_one_only): Ditto.
1502 2023-06-28  Manolis Tsamis  <manolis.tsamis@vrull.eu>
1504         PR debug/110308
1505         * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
1506         (maybe_copy_reg_attrs): New function.
1507         (find_oldest_value_reg): Use maybe_copy_reg_attrs.
1508         (copyprop_hardreg_forward_1): Ditto.
1510 2023-06-28  Richard Biener  <rguenther@suse.de>
1512         PR tree-optimization/110434
1513         * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
1514         VAR we replace with <retval>.
1516 2023-06-28  Richard Biener  <rguenther@suse.de>
1518         PR tree-optimization/110451
1519         * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
1520         tcc_comparison are expensive.
1522 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
1524         * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
1525         for TImode comparisons on 32-bit architectures.
1526         * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
1527         SWIM1248x to exclude/avoid TImode being conditional on -m64.
1528         (cbranchti4): New define_expand for TImode on both TARGET_64BIT
1529         and/or with TARGET_SSE4_1.
1530         * config/i386/predicates.md (ix86_timode_comparison_operator):
1531         New predicate that depends upon TARGET_64BIT.
1532         (ix86_timode_comparison_operand): Likewise.
1534 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
1536         PR target/78794
1537         * config/i386/i386-features.cc (compute_convert_gain): Provide
1538         more accurate gains for conversion of scalar comparisons to
1539         PTEST.
1541 2023-06-28  Richard Biener  <rguenther@suse.de>
1543         PR tree-optimization/110443
1544         * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
1545         gather loads.
1547 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
1549         * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
1550         (peephole2 for move_and_compare): New.
1551         (mode_iterator WORD): New.  Set the mode to SI/DImode by
1552         TARGET_POWERPC64.
1553         (*mov<mode>_internal2): Change the mode iterator from P to WORD.
1554         (split pattern for compare_and_move): Likewise.
1556 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1558         * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
1559         (*single_widen_fma<mode>): Ditto.
1561 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
1563         PR target/104124
1564         * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
1565         to...
1566         (altivec_vupkhs<VU_char>_direct): ...this.
1567         * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
1568         predicate to test if a constant can be loaded with vspltisw and
1569         vupkhsw.
1570         (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
1571         a vector constant can be synthesized with a vspltisw and a vupkhsw.
1572         * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
1573         Declare.
1574         * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
1575         function to return true if OP mode is V2DI and can be synthesized
1576         with vupkhsw and vspltisw.
1577         * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
1578         constants with vspltisw and vupkhsw.
1580 2023-06-28  Jan Hubicka  <jh@suse.cz>
1582         PR tree-optimization/110377
1583         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
1584         the ranger query.
1585         (ipa_analyze_node): Enable ranger.
1587 2023-06-28  Richard Biener  <rguenther@suse.de>
1589         * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
1590         (TYPE_PRECISION_RAW): Provide raw access to the precision
1591         field.
1592         * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
1593         (gimple_canonical_types_compatible_p): Likewise.
1594         * tree-streamer-out.cc (pack_ts_type_common_value_fields):
1595         Stream TYPE_PRECISION_RAW.
1596         * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
1597         Likewise.
1598         * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
1600 2023-06-28  Alexandre Oliva  <oliva@adacore.com>
1602         * doc/extend.texi (zero-call-used-regs): Document leafy and
1603         variants thereof.
1604         * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
1605         LEAFY and variants.
1606         * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
1607         functions in leafy mode.
1608         * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
1610 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1612         * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
1613         * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
1614         Remove.
1615         (@pred_single_widen_add<mode>): New pattern.
1616         (@pred_single_widen_sub<mode>): New pattern.
1618 2023-06-28  liuhongt  <hongtao.liu@intel.com>
1620         * config/i386/i386.cc (ix86_invalid_conversion): New function.
1621         (TARGET_INVALID_CONVERSION): Define as
1622         ix86_invalid_conversion.
1624 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
1626         * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
1627         expander.
1628         (<float_cvt><vnconvert><mode>2): Ditto.
1629         (<optab><mode><vnconvert>2): Ditto.
1630         (<float_cvt><mode><vnconvert>2): Ditto.
1631         * config/riscv/vector-iterators.md: Add vnconvert.
1633 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
1635         * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
1636         expander.
1637         (extend<v_quad_trunc><mode>2): Ditto.
1638         (trunc<mode><v_double_trunc>2): Ditto.
1639         (trunc<mode><v_quad_trunc>2): Ditto.
1640         * config/riscv/vector-iterators.md: Add VQEXTF and HF to
1641         V_QUAD_TRUNC and v_quad_trunc.
1643 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
1645         * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
1646         expander.
1648 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
1650         * config/riscv/autovec.md (copysign<mode>3): Add expander.
1651         (xorsign<mode>3): Ditto.
1652         * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
1653         New class.
1654         * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
1655         (xorsign): Ditto.
1656         (n): Ditto.
1657         (x): Ditto.
1658         * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
1659         (@pred_ncopysign<mode>_scalar): Ditto.
1661 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
1663         * config/riscv/autovec.md: VF_AUTO -> VF.
1664         * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
1665         VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
1666         VHF_LMUL1.
1667         * config/riscv/vector.md: Use new iterators.
1669 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
1671         * match.pd: Use element_mode and check if target supports
1672         operation with new type.
1674 2023-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1676         * config/aarch64/aarch64-sve-builtins-base.cc
1677         (svdupq_impl::fold_nonconst_dupq): New method.
1678         (svdupq_impl::fold): Call fold_nonconst_dupq.
1680 2023-06-27  Andrew Pinski  <apinski@marvell.com>
1682         PR middle-end/110420
1683         PR middle-end/103979
1684         PR middle-end/98619
1685         * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
1687 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
1689         * ipa-cp.cc (decide_whether_version_node): Adjust comment.
1690         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
1691         for Value_Range.
1692         (set_switch_stmt_execution_predicate): Same.
1693         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
1695 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
1697         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
1698         ipa_vr instead of value_range.
1699         (gt_pch_nx): Same.
1700         (gt_ggc_mx): Same.
1701         (ipa_get_value_range): Same.
1702         * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
1703         ipa_vr.
1704         (gt_ggc_mx): Same.
1706 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
1708         * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
1709         * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
1710         (ipa_set_jfunc_vr): Take a range.
1711         (ipa_compute_jump_functions_for_edge): Pass range to
1712         ipa_set_jfunc_vr.
1713         (ipa_write_jump_function): Call streamer write helper.
1714         (ipa_read_jump_function): Call streamer read helper.
1715         * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
1717 2023-06-27  Richard Sandiford  <richard.sandiford@arm.com>
1719         * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
1720         as a probable initializer rather than a probable complete statement.
1722 2023-06-27  Richard Biener  <rguenther@suse.de>
1724         PR tree-optimization/96208
1725         * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
1726         a non-grouped load if it is the same for all lanes.
1727         (vect_build_slp_tree_2): Handle not grouped loads.
1728         (vect_optimize_slp_pass::remove_redundant_permutations):
1729         Likewise.
1730         (vect_transform_slp_perm_load_1): Likewise.
1731         * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
1732         (get_group_load_store_type): Likewise.  Handle
1733         invariant accesses.
1734         (vectorizable_load): Likewise.
1736 2023-06-27  liuhongt  <hongtao.liu@intel.com>
1738         PR rtl-optimization/110237
1739         * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
1740         UNSPEC_MASKMOV.
1741         (maskstore<mode><avx512fmaskmodelower): Ditto.
1742         (*<avx512>_store<mode>_mask): New define_insn, it's renamed
1743         from original <avx512>_store<mode>_mask.
1745 2023-06-27  liuhongt  <hongtao.liu@intel.com>
1747         * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
1748         Move flag_expensive_optimizations && !optimize_size to ..
1749         * config/i386/i386-options.cc (ix86_option_override_internal):
1750         .. this, it makes -mvzeroupper independent of optimization
1751         level, but still keeps the behavior of architecture
1752         tuning(emit_vzeroupper) unchanged.
1754 2023-06-27  liuhongt  <hongtao.liu@intel.com>
1756         PR target/82735
1757         * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
1758         vzeroupper for vzeroupper call_insn.
1760 2023-06-27  Andrew Pinski  <apinski@marvell.com>
1762         * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
1763         defbuiltin usage.
1765 2023-06-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1767         * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
1768         with base != 0.
1770 2023-06-26  Andrew Pinski  <apinski@marvell.com>
1772         * doc/extend.texi (access attribute): Add
1773         cindex for it.
1774         (interrupt/interrupt_handler attribute):
1775         Likewise.
1777 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1779         * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
1780         Use <DWI> instead of <V2XWIDE>.
1781         (aarch64_sqrshrun_n<mode>): Likewise.
1783 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1785         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
1786         Rename to...
1787         (aarch64_rnd_imm_p): ... This.
1788         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
1789         Rename to...
1790         (aarch64_int_rnd_operand): ... This.
1791         (aarch64_simd_rshrn_imm_vec): Delete.
1792         * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
1793         Adjust for the above.
1794         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
1795         (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
1796         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
1797         (aarch64_sqrshrun_n<mode>_insn): Likewise.
1798         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
1799         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
1800         (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
1801         (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
1802         * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
1803         Rename to...
1804         (aarch64_rnd_imm_p): ... This.
1806 2023-06-26  Andreas Krebbel  <krebbel@linux.ibm.com>
1808         * config/s390/s390.cc (s390_encode_section_info): Set
1809         SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
1810         misaligned.
1812 2023-06-26  Jan Hubicka  <jh@suse.cz>
1814         PR tree-optimization/109849
1815         * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
1816         count of newly constructed forwarder block.
1818 2023-06-26  Andrew Carlotti  <andrew.carlotti@arm.com>
1820         * doc/optinfo.texi: Fix "steam" -> "stream".
1822 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1824         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
1825         fix LEN_STORE.
1826         (dse_optimize_stmt): Add LEN_MASK_STORE.
1828 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1830         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
1831         fold of LOAD/STORE with length.
1833 2023-06-26  Andrew MacLeod  <amacleod@redhat.com>
1835         * gimple-range-gori.cc (compute_operand1_and_operand2_range):
1836         Check for interdependence between operands 1 and 2.
1838 2023-06-26  Richard Sandiford  <richard.sandiford@arm.com>
1840         * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
1841         into account when costing non-widening/truncating conversions.
1843 2023-06-26  Richard Biener  <rguenther@suse.de>
1845         PR tree-optimization/110381
1846         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
1847         Materialize permutes before fold-left reductions.
1849 2023-06-26  Pan Li  <pan2.li@intel.com>
1851         * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
1853 2023-06-26  Richard Biener  <rguenther@suse.de>
1855         * varasm.cc (initializer_constant_valid_p_1): Also
1856         constrain the type of value to be scalar integral
1857         before dispatching to narrowing_initializer_constant_valid_p.
1859 2023-06-26  Richard Biener  <rguenther@suse.de>
1861         * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
1862         Use element_precision.
1864 2023-06-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1866         * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
1867         vcond patterns.
1868         (vcondu<V:mode><VI:mode>): Ditto.
1869         * config/riscv/riscv-protos.h (expand_vcond): Ditto.
1870         * config/riscv/riscv-v.cc (expand_vcond): Ditto.
1872 2023-06-26  Richard Biener  <rguenther@suse.de>
1874         PR tree-optimization/110392
1875         * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
1876         Do early exits on true/false predicate only after normalization.
1878 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1880         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
1881         "length".
1883 2023-06-26  Roger Sayle  <roger@nextmovesoftware.com>
1885         * config/i386/i386.md (peephole2): Simplify zeroing a register
1886         followed by an IOR, XOR or PLUS operation on it, into a move.
1887         (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
1888         eliminate (and hide from reload) unnecessary word to doubleword
1889         extensions that are followed by left shifts by sufficiently large,
1890         but valid, bit counts.
1892 2023-06-26  liuhongt  <hongtao.liu@intel.com>
1894         PR tree-optimization/110371
1895         PR tree-optimization/110018
1896         * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
1897         save intermediate type operand instead of "subtle" vec_dest
1898         for case NONE.
1900 2023-06-26  liuhongt  <hongtao.liu@intel.com>
1902         PR tree-optimization/110371
1903         PR tree-optimization/110018
1904         * tree-vect-stmts.cc (vectorizable_conversion): Don't use
1905         intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
1907 2023-06-26  Hongyu Wang  <hongyu.wang@intel.com>
1909         * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
1910         Override tune_string with arch_string if tune_string is not
1911         explicitly specified.
1913 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1915         * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
1916         AVL propagation.
1917         * config/riscv/riscv-vsetvl.h: New function.
1919 2023-06-25  Li Xu  <xuli1@eswincomputing.com>
1921         * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
1922         emit_move_insn
1924 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1926         * config/riscv/autovec.md (len_load_<mode>): Remove.
1927         (len_maskload<mode><vm>): Remove.
1928         (len_store_<mode>): New pattern.
1929         (len_maskstore<mode><vm>): New pattern.
1930         * config/riscv/predicates.md (autovec_length_operand): New predicate.
1931         * config/riscv/riscv-protos.h (enum insn_type): New enum.
1932         (expand_load_store): New function.
1933         * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
1934         (emit_nonvlmax_masked_insn): Ditto.
1935         (expand_load_store): Ditto.
1936         * config/riscv/riscv-vector-builtins.cc
1937         (function_expander::use_contiguous_store_insn): Add avl_type operand
1938         into pred_store.
1939         * config/riscv/vector.md: Ditto.
1941 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1943         * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
1944         argument index.
1946 2023-06-25  Pan Li  <pan2.li@intel.com>
1948         * config/riscv/vector.md: Revert.
1950 2023-06-25  Pan Li  <pan2.li@intel.com>
1952         * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
1953         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
1954         (ADJUST_ALIGNMENT): Ditto.
1955         (RVV_TUPLE_PARTIAL_MODES): Ditto.
1956         (ADJUST_NUNITS): Ditto.
1957         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
1958         (vfloat16mf4x3_t): Ditto.
1959         (vfloat16mf4x4_t): Ditto.
1960         (vfloat16mf4x5_t): Ditto.
1961         (vfloat16mf4x6_t): Ditto.
1962         (vfloat16mf4x7_t): Ditto.
1963         (vfloat16mf4x8_t): Ditto.
1964         (vfloat16mf2x2_t): Ditto.
1965         (vfloat16mf2x3_t): Ditto.
1966         (vfloat16mf2x4_t): Ditto.
1967         (vfloat16mf2x5_t): Ditto.
1968         (vfloat16mf2x6_t): Ditto.
1969         (vfloat16mf2x7_t): Ditto.
1970         (vfloat16mf2x8_t): Ditto.
1971         (vfloat16m1x2_t): Ditto.
1972         (vfloat16m1x3_t): Ditto.
1973         (vfloat16m1x4_t): Ditto.
1974         (vfloat16m1x5_t): Ditto.
1975         (vfloat16m1x6_t): Ditto.
1976         (vfloat16m1x7_t): Ditto.
1977         (vfloat16m1x8_t): Ditto.
1978         (vfloat16m2x2_t): Ditto.
1979         (vfloat16m2x3_t): Diito.
1980         (vfloat16m2x4_t): Diito.
1981         (vfloat16m4x2_t): Diito.
1982         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
1983         (vfloat16mf4x3_t): Ditto.
1984         (vfloat16mf4x4_t): Ditto.
1985         (vfloat16mf4x5_t): Ditto.
1986         (vfloat16mf4x6_t): Ditto.
1987         (vfloat16mf4x7_t): Ditto.
1988         (vfloat16mf4x8_t): Ditto.
1989         (vfloat16mf2x2_t): Ditto.
1990         (vfloat16mf2x3_t): Ditto.
1991         (vfloat16mf2x4_t): Ditto.
1992         (vfloat16mf2x5_t): Ditto.
1993         (vfloat16mf2x6_t): Ditto.
1994         (vfloat16mf2x7_t): Ditto.
1995         (vfloat16mf2x8_t): Ditto.
1996         (vfloat16m1x2_t): Ditto.
1997         (vfloat16m1x3_t): Ditto.
1998         (vfloat16m1x4_t): Ditto.
1999         (vfloat16m1x5_t): Ditto.
2000         (vfloat16m1x6_t): Ditto.
2001         (vfloat16m1x7_t): Ditto.
2002         (vfloat16m1x8_t): Ditto.
2003         (vfloat16m2x2_t): Ditto.
2004         (vfloat16m2x3_t): Ditto.
2005         (vfloat16m2x4_t): Ditto.
2006         (vfloat16m4x2_t): Ditto.
2007         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
2008         * config/riscv/riscv.md: Ditto.
2009         * config/riscv/vector-iterators.md: Ditto.
2011 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2013         * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
2014         (gimple_fold_partial_load_store_mem_ref): Ditto.
2015         (gimple_fold_partial_store): Ditto.
2016         (gimple_fold_call): Ditto.
2018 2023-06-25  liuhongt  <hongtao.liu@intel.com>
2020         PR target/110309
2021         * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
2022         Refine pattern with UNSPEC_MASKLOAD.
2023         (maskload<mode><avx512fmaskmodelower>): Ditto.
2024         (*<avx512>_load<mode>_mask): Extend mode iterator to
2025         VI12HFBF_AVX512VL.
2026         (*<avx512>_load<mode>): Ditto.
2028 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2030         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
2032 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2034         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
2035         LEN_MASK_{LOAD,STORE}
2037 2023-06-25  yulong  <shiyulong@iscas.ac.cn>
2039         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
2041 2023-06-24  Roger Sayle  <roger@nextmovesoftware.com>
2043         * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
2045 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2047         * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
2048         (*fma<VI:mode><P:mode>): Ditto.
2049         (*fnma<mode>): Ditto.
2050         (*fnma<VI:mode><P:mode>): Ditto.
2052 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2054         * config/riscv/autovec.md (fma<mode>4): New pattern.
2055         (*fma<mode>): Ditto.
2056         (fnma<mode>4): Ditto.
2057         (*fnma<mode>): Ditto.
2058         (fms<mode>4): Ditto.
2059         (*fms<mode>): Ditto.
2060         (fnms<mode>4): Ditto.
2061         (*fnms<mode>): Ditto.
2062         * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
2063         New function.
2064         * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
2065         * config/riscv/vector.md: Fix attribute bug.
2067 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2069         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
2070         Apply LEN_MASK_{LOAD,STORE}.
2072 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2074         * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
2075         Add LEN_MASK_{LOAD,STORE}.
2077 2023-06-24  David Malcolm  <dmalcolm@redhat.com>
2079         * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
2080         * diagnostic.cc: Likewise.
2081         * text-art/box-drawing.cc: Likewise.
2082         * text-art/canvas.cc: Likewise.
2083         * text-art/ruler.cc: Likewise.
2084         * text-art/selftests.cc: Likewise.
2085         * text-art/selftests.h (text_art::canvas): New forward decl.
2086         * text-art/style.cc: Add #define INCLUDE_VECTOR.
2087         * text-art/styled-string.cc: Likewise.
2088         * text-art/table.cc: Likewise.
2089         * text-art/table.h: Remove #include <vector>.
2090         * text-art/theme.cc: Add #define INCLUDE_VECTOR.
2091         * text-art/types.h: Check that INCLUDE_VECTOR is defined.
2092         Remove #include of <vector> and <string>.
2093         * text-art/widget.cc: Add #define INCLUDE_VECTOR.
2094         * text-art/widget.h: Remove #include <vector>.
2096 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2098         * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
2099         (internal_load_fn_p): Add LEN_MASK_LOAD.
2100         (internal_store_fn_p): Add LEN_MASK_STORE.
2101         (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
2102         (internal_fn_stored_value_index): Add LEN_MASK_STORE.
2103         (internal_len_load_store_bias):  Add LEN_MASK_{LOAD,STORE}.
2104         * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
2105         (get_len_load_store_mode): Ditto.
2106         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
2107         (get_len_load_store_mode): Ditto.
2108         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
2109         (get_all_ones_mask): New function.
2110         (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
2111         (vectorizable_load): Ditto.
2113 2023-06-23  Marek Polacek  <polacek@redhat.com>
2115         * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
2116         -std=gnu++26.  Document that for C++23, its value is 202302L.
2117         * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
2118         * dwarf2out.cc (highest_c_language): Handle GNU C++26.
2119         (gen_compile_unit_die): Likewise.
2121 2023-06-23  Jan Hubicka  <jh@suse.cz>
2123         * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
2124         demand.
2125         (pass_phiprop::execute): Do not compute it here; return
2126         update_ssa_only_virtuals if something changed.
2127         (pass_data_phiprop): Remove TODO_update_ssa from todos.
2129 2023-06-23   Michael Meissner  <meissner@linux.ibm.com>
2130             Aaron Sawdey   <acsawdey@linux.ibm.com>
2132         PR target/105325
2133         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
2134         allowed prefixed lwa to be generated.
2135         * config/rs6000/fusion.md: Regenerate.
2136         * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
2137         * config/rs6000/rs6000.md (prefixed attribute): Add support for load
2138         plus compare immediate fused insns.
2139         (maybe_prefixed): Likewise.
2141 2023-06-23  Roger Sayle  <roger@nextmovesoftware.com>
2143         * simplify-rtx.cc (simplify_subreg):  Optimize lowpart SUBREGs
2144         of ASHIFT to const0_rtx with sufficiently large shift count.
2145         Optimize highpart SUBREGs of ASHIFT as the shift operand when
2146         the shift count is the correct offset.  Optimize SUBREGs of
2147         multi-word logic operations if the SUBREGs of both operands
2148         can be simplified.
2150 2023-06-23  Richard Biener  <rguenther@suse.de>
2152         * varasm.cc (initializer_constant_valid_p_1): Only
2153         allow conversions between scalar floating point types.
2155 2023-06-23  Richard Biener  <rguenther@suse.de>
2157         * tree-vect-stmts.cc (vectorizable_assignment):
2158         Properly handle non-integral operands when analyzing
2159         conversions.
2161 2023-06-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2163         PR tree-optimization/110280
2164         * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
2165         using build_vector_from_val with the element of input operand, and
2166         mask's type if operand and mask's types don't match.
2168 2023-06-23  Richard Biener  <rguenther@suse.de>
2170         * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
2171         the truth_value_p case with !VECTOR_TYPE_P.
2173 2023-06-23  Richard Biener  <rguenther@suse.de>
2175         * tree-vect-patterns.cc (vect_look_through_possible_promotion):
2176         Exit early when the type isn't scalar integral.
2178 2023-06-23  Richard Biener  <rguenther@suse.de>
2180         * match.pd ((outertype)((innertype0)a+(innertype1)b)
2181         -> ((newtype)a+(newtype)b)): Use element_precision
2182         where appropriate.
2184 2023-06-23  Richard Biener  <rguenther@suse.de>
2186         * fold-const.cc (fold_binary_loc): Use element_precision
2187         when trying (double)float1 CMP (double)float2 to
2188         float1 CMP float2 simplification.
2189         * match.pd: Likewise.
2191 2023-06-23  Richard Biener  <rguenther@suse.de>
2193         * tree-vect-stmts.cc (vectorizable_load): Avoid useless
2194         copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
2196 2023-06-23  Richard Biener  <rguenther@suse.de>
2198         * tree-vect-stmts.cc (vector_vector_composition_type):
2199         Handle composition of a vector from a number of elements that
2200         happens to match its number of lanes.
2202 2023-06-22  Marek Polacek  <polacek@redhat.com>
2204         * configure.ac (--enable-host-bind-now): New check.  Add
2205         -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
2206         * configure: Regenerate.
2207         * doc/install.texi: Document --enable-host-bind-now.
2209 2023-06-22  Di Zhao OS  <dizhao@os.amperecomputing.com>
2211         * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
2213 2023-06-22  Richard Biener  <rguenther@suse.de>
2215         PR tree-optimization/110332
2216         * tree-ssa-phiprop.cc (propagate_with_phi): Always
2217         check aliasing with edge inserted loads.
2219 2023-06-22  Roger Sayle  <roger@nextmovesoftware.com>
2220             Uros Bizjak  <ubizjak@gmail.com>
2222         * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
2223         expansion of ptestc with equal operands as producing const1_rtx.
2224         * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
2225         estimates of UNSPEC_PTEST, where the ptest performs the PAND
2226         or PAND of its operands.
2227         * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
2228         of reg_equal_p operands into an x86_stc instruction.
2229         (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
2230         (define_split): Similar to above for strict_low_part destinations.
2231         (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
2233 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
2235         PR analyzer/106626
2236         * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
2237         * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
2238         text art.
2239         (fanalyzer-debug-text-art): New.
2241 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
2243         * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
2244         text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
2245         text-art/style.o, text-art/styled-string.o, text-art/table.o,
2246         text-art/theme.o, and text-art/widget.o.
2247         * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
2248         (COLOR_FG_BRIGHT_RED): New.
2249         (COLOR_FG_BRIGHT_GREEN): New.
2250         (COLOR_FG_BRIGHT_YELLOW): New.
2251         (COLOR_FG_BRIGHT_BLUE): New.
2252         (COLOR_FG_BRIGHT_MAGENTA): New.
2253         (COLOR_FG_BRIGHT_CYAN): New.
2254         (COLOR_FG_BRIGHT_WHITE): New.
2255         (COLOR_BG_BRIGHT_BLACK): New.
2256         (COLOR_BG_BRIGHT_RED): New.
2257         (COLOR_BG_BRIGHT_GREEN): New.
2258         (COLOR_BG_BRIGHT_YELLOW): New.
2259         (COLOR_BG_BRIGHT_BLUE): New.
2260         (COLOR_BG_BRIGHT_MAGENTA): New.
2261         (COLOR_BG_BRIGHT_CYAN): New.
2262         (COLOR_BG_BRIGHT_WHITE): New.
2263         * common.opt (fdiagnostics-text-art-charset=): New option.
2264         (diagnostic-text-art.h): New SourceInclude.
2265         (diagnostic_text_art_charset) New Enum and EnumValues.
2266         * configure: Regenerate.
2267         * configure.ac (gccdepdir): Add text-art to loop.
2268         * diagnostic-diagram.h: New file.
2269         * diagnostic-format-json.cc (json_emit_diagram): New.
2270         (diagnostic_output_format_init_json): Wire it up to
2271         context->m_diagrams.m_emission_cb.
2272         * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
2273         "text-art/canvas.h".
2274         (sarif_result::on_nested_diagnostic): Move code to...
2275         (sarif_result::add_related_location): ...this new function.
2276         (sarif_result::on_diagram): New.
2277         (sarif_builder::emit_diagram): New.
2278         (sarif_builder::make_message_object_for_diagram): New.
2279         (sarif_emit_diagram): New.
2280         (diagnostic_output_format_init_sarif): Set
2281         context->m_diagrams.m_emission_cb to sarif_emit_diagram.
2282         * diagnostic-text-art.h: New file.
2283         * diagnostic.cc: Include "diagnostic-text-art.h",
2284         "diagnostic-diagram.h", and "text-art/theme.h".
2285         (diagnostic_initialize): Initialize context->m_diagrams and
2286         call diagnostics_text_art_charset_init.
2287         (diagnostic_finish): Clean up context->m_diagrams.m_theme.
2288         (diagnostic_emit_diagram): New.
2289         (diagnostics_text_art_charset_init): New.
2290         * diagnostic.h (text_art::theme): New forward decl.
2291         (class diagnostic_diagram): Likewise.
2292         (diagnostic_context::m_diagrams): New field.
2293         (diagnostic_emit_diagram): New decl.
2294         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
2295         -fdiagnostics-text-art-charset=.
2296         (-fdiagnostics-plain-output): Add
2297         -fdiagnostics-text-art-charset=none.
2298         * gcc.cc: Include "diagnostic-text-art.h".
2299         (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
2300         * opts-common.cc (decode_cmdline_options_to_array): Add
2301         "-fdiagnostics-text-art-charset=none" to expanded_args for
2302         -fdiagnostics-plain-output.
2303         * opts.cc: Include "diagnostic-text-art.h".
2304         (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
2305         * pretty-print.cc (pp_unicode_character): New.
2306         * pretty-print.h (pp_unicode_character): New decl.
2307         * selftest-run-tests.cc: Include "text-art/selftests.h".
2308         (selftest::run_tests): Call text_art_tests.
2309         * text-art/box-drawing-chars.inc: New file, generated by
2310         contrib/unicode/gen-box-drawing-chars.py.
2311         * text-art/box-drawing.cc: New file.
2312         * text-art/box-drawing.h: New file.
2313         * text-art/canvas.cc: New file.
2314         * text-art/canvas.h: New file.
2315         * text-art/ruler.cc: New file.
2316         * text-art/ruler.h: New file.
2317         * text-art/selftests.cc: New file.
2318         * text-art/selftests.h: New file.
2319         * text-art/style.cc: New file.
2320         * text-art/styled-string.cc: New file.
2321         * text-art/table.cc: New file.
2322         * text-art/table.h: New file.
2323         * text-art/theme.cc: New file.
2324         * text-art/theme.h: New file.
2325         * text-art/types.h: New file.
2326         * text-art/widget.cc: New file.
2327         * text-art/widget.h: New file.
2329 2023-06-21  Uros Bizjak  <ubizjak@gmail.com>
2331         * function.h (emit_initial_value_sets):
2332         Change return type from int to void.
2333         (aggregate_value_p): Change return type from int to bool.
2334         (prologue_contains): Ditto.
2335         (epilogue_contains): Ditto.
2336         (prologue_epilogue_contains): Ditto.
2337         * function.cc (temp_slot): Make "in_use" variable bool.
2338         (make_slot_available): Update for changed "in_use" variable.
2339         (assign_stack_temp_for_type): Ditto.
2340         (emit_initial_value_sets): Change return type from int to void
2341         and update function body accordingly.
2342         (instantiate_virtual_regs): Ditto.
2343         (rest_of_handle_thread_prologue_and_epilogue): Ditto.
2344         (safe_insn_predicate): Change return type from int to bool.
2345         (aggregate_value_p): Change return type from int to bool
2346         and update function body accordingly.
2347         (prologue_contains): Change return type from int to bool.
2348         (prologue_epilogue_contains): Ditto.
2350 2023-06-21  Alexander Monakov  <amonakov@ispras.ru>
2352         * common.opt (fp_contract_mode) [on]: Remove fallback.
2353         * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
2354         * doc/invoke.texi (-ffp-contract): Update.
2355         * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
2357 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2359         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
2360         Add alternatives to prefer to avoid same input and output Z register.
2361         (mask_gather_load<mode><v_int_container>): Likewise.
2362         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2363         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2364         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2365         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
2366         Likewise.
2367         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
2368         Likewise.
2369         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2370         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
2371         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2372         <SVE_2BHSI:mode>_sxtw): Likewise.
2373         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2374         <SVE_2BHSI:mode>_uxtw): Likewise.
2375         (@aarch64_ldff1_gather<mode>): Likewise.
2376         (@aarch64_ldff1_gather<mode>): Likewise.
2377         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2378         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2379         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2380         <VNx4_NARROW:mode>): Likewise.
2381         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2382         <VNx2_NARROW:mode>): Likewise.
2383         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2384         <VNx2_NARROW:mode>_sxtw): Likewise.
2385         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2386         <VNx2_NARROW:mode>_uxtw): Likewise.
2387         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
2388         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2389         <SVE_PARTIAL_I:mode>): Likewise.
2391 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2393         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
2394         Convert to compact alternatives syntax.
2395         (mask_gather_load<mode><v_int_container>): Likewise.
2396         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2397         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2398         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2399         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
2400         Likewise.
2401         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
2402         Likewise.
2403         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2404         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
2405         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2406         <SVE_2BHSI:mode>_sxtw): Likewise.
2407         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2408         <SVE_2BHSI:mode>_uxtw): Likewise.
2409         (@aarch64_ldff1_gather<mode>): Likewise.
2410         (@aarch64_ldff1_gather<mode>): Likewise.
2411         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2412         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2413         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2414         <VNx4_NARROW:mode>): Likewise.
2415         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2416         <VNx2_NARROW:mode>): Likewise.
2417         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2418         <VNx2_NARROW:mode>_sxtw): Likewise.
2419         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2420         <VNx2_NARROW:mode>_uxtw): Likewise.
2421         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
2422         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2423         <SVE_PARTIAL_I:mode>): Likewise.
2425 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2427         Revert:
2428         2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2430         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
2431         Convert to compact alternatives syntax.
2432         (mask_gather_load<mode><v_int_container>): Likewise.
2433         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2434         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2435         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2436         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
2437         Likewise.
2438         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
2439         Likewise.
2440         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2441         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
2442         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2443         <SVE_2BHSI:mode>_sxtw): Likewise.
2444         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2445         <SVE_2BHSI:mode>_uxtw): Likewise.
2446         (@aarch64_ldff1_gather<mode>): Likewise.
2447         (@aarch64_ldff1_gather<mode>): Likewise.
2448         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2449         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2450         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2451         <VNx4_NARROW:mode>): Likewise.
2452         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2453         <VNx2_NARROW:mode>): Likewise.
2454         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2455         <VNx2_NARROW:mode>_sxtw): Likewise.
2456         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2457         <VNx2_NARROW:mode>_uxtw): Likewise.
2458         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
2459         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2460         <SVE_PARTIAL_I:mode>): Likewise.
2462 2023-06-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2464         * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
2465         (get_len_load_store_mode): Ditto.
2466         * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
2467         (get_len_load_store_mode): Ditto.
2468         * optabs-tree.cc (can_vec_mask_load_store_p): New function.
2469         (get_len_load_store_mode): Ditto.
2470         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
2471         (get_len_load_store_mode): Ditto.
2472         * tree-if-conv.cc: include optabs-tree instead of optabs-query
2474 2023-06-21  Richard Biener  <rguenther@suse.de>
2476         * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
2477         split_constant_offset for the POINTER_PLUS_EXPR case.
2479 2023-06-21  Richard Biener  <rguenther@suse.de>
2481         * tree-ssa-loop-ivopts.cc (record_group_use): Use
2482         split_constant_offset.
2484 2023-06-21  Richard Biener  <rguenther@suse.de>
2486         * tree-loop-distribution.cc (classify_builtin_st): Use
2487         split_constant_offset.
2488         * tree-ssa-loop-ivopts.h (strip_offset): Remove.
2489         * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
2491 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2493         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
2494         Convert to compact alternatives syntax.
2495         (mask_gather_load<mode><v_int_container>): Likewise.
2496         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2497         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2498         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2499         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
2500         Likewise.
2501         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
2502         Likewise.
2503         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2504         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
2505         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2506         <SVE_2BHSI:mode>_sxtw): Likewise.
2507         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2508         <SVE_2BHSI:mode>_uxtw): Likewise.
2509         (@aarch64_ldff1_gather<mode>): Likewise.
2510         (@aarch64_ldff1_gather<mode>): Likewise.
2511         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2512         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2513         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2514         <VNx4_NARROW:mode>): Likewise.
2515         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2516         <VNx2_NARROW:mode>): Likewise.
2517         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2518         <VNx2_NARROW:mode>_sxtw): Likewise.
2519         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2520         <VNx2_NARROW:mode>_uxtw): Likewise.
2521         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
2522         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2523         <SVE_PARTIAL_I:mode>): Likewise.
2525 2023-06-21  Tamar Christina  <tamar.christina@arm.com>
2527         PR other/110329
2528         * doc/md.texi: Replace backslashchar.
2530 2023-06-21  Richard Biener  <rguenther@suse.de>
2532         * config/i386/i386.cc (ix86_vector_costs::finish_cost):
2533         Overload.  For masked main loops make sure the vectorization
2534         factor isn't more than double the number of iterations.
2536 2023-06-21  Jan Beulich  <jbeulich@suse.com>
2538         * config/i386/i386-expand.cc (ix86_expand_copysign): Request
2539         value duplication by ix86_build_signbit_mask() when AVX512F and
2540         not HFmode.
2541         * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
2542         2-alternative form. Adjust "mode" attribute. Add "enabled"
2543         attribute.
2544         (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
2545         && !TARGET_PREFER_AVX256.
2546         (*<avx512>_vpternlog<mode>_2): Likewise.
2547         (*<avx512>_vpternlog<mode>_3): Likewise.
2549 2023-06-21  liuhongt  <hongtao.liu@intel.com>
2551         PR target/110018
2552         * tree-vect-stmts.cc (vectorizable_conversion): Use
2553         intermiediate integer type for float_expr/fix_trunc_expr when
2554         direct optab is not existed.
2556 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
2558         PR bootstrap/110324
2559         * gensupport.cc (convert_syntax): Explicitly check for RTX code.
2561 2023-06-20  Richard Sandiford  <richard.sandiford@arm.com>
2563         * config/aarch64/aarch64.md (stack_tie): Hard-code the first
2564         register operand to the stack pointer.  Require the second register
2565         operand to have the number specified in a separate const_int operand.
2566         * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
2567         (aarch64_allocate_and_probe_stack_space): Use it.
2568         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
2569         (aarch64_expand_epilogue): Likewise.
2571 2023-06-20  Jakub Jelinek  <jakub@redhat.com>
2573         PR middle-end/79173
2574         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
2575         IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
2576         type.
2578 2023-06-20  Uros Bizjak  <ubizjak@gmail.com>
2580         * calls.h (setjmp_call_p): Change return type from int to bool.
2581         * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
2582         (store_one_arg): Change return type from int to bool
2583         and adjust function body accordingly.  Change "sibcall_failure"
2584         variable to bool.
2585         (finalize_must_preallocate): Ditto.  Change *must_preallocate pointer
2586         argument  to bool.  Change "partial_seen" variable to bool.
2587         (load_register_parameters):  Change *sibcall_failure
2588         pointer argument to bool.
2589         (check_sibcall_argument_overlap_1): Change return type from int to bool
2590         and adjust function body accordingly.
2591         (check_sibcall_argument_overlap):  Ditto.  Change
2592         "mark_stored_args_map" argument to bool.
2593         (emit_call_1): Change "already_popped" variable to bool.
2594         (setjmp_call_p): Change return type from int to bool
2595         and adjust function body accordingly.
2596         (initialize_argument_information): Change *must_preallocate
2597         pointer argument to bool.
2598         (expand_call): Change "pcc_struct_value", "must_preallocate"
2599         and "sibcall_failure" variables to bool.
2600         (emit_library_call_value_1): Change "pcc_struct_value"
2601         variable to bool.
2603 2023-06-20  Martin Jambor  <mjambor@suse.cz>
2605         PR ipa/110276
2606         * ipa-sra.cc (struct caller_issues): New field there_is_one.
2607         (check_for_caller_issues): Set it.
2608         (check_all_callers_for_issues): Check it.
2610 2023-06-20  Martin Jambor  <mjambor@suse.cz>
2612         * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
2613         (struct ipcp_transformation): Rearrange members according to
2614         C++ class coding convention, add m_uid_to_idx,
2615         get_param_index and maybe_create_parm_idx_map.
2616         * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
2617         (compare_uids): Likewise.
2618         (ipcp_transformation::maype_create_parm_idx_map): Likewise.
2619         * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
2620         (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
2621         (ipcp_update_vr): Likewise.
2622         (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
2623         out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
2625 2023-06-20  Carl Love  <cel@us.ibm.com>
2627         * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
2628         Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
2629         Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
2630         Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
2631         Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
2632         (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
2633         CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
2634         * config/rs6000/rs6000-builtins.def
2635         (__builtin_vsx_scalar_extract_exp_to_vec,
2636         __builtin_vsx_scalar_extract_sig_to_vec,
2637         __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
2638         Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
2639         xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
2640         * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
2641         Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
2642         overloaded instance. Update comments.
2643         * config/rs6000/rs6000-overload.def
2644         (__builtin_vec_scalar_insert_exp): Add new overload definition with
2645         vector arguments.
2646         (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
2647         overloaded definitions.
2648         * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
2649         (DI_to_TI): New mode attribute.
2650         Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
2651         Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
2652         Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
2653         * doc/extend.texi (scalar_extract_exp_to_vec,
2654         scalar_extract_sig_to_vec): Add documentation for new builtins.
2655         (scalar_insert_exp): Add new overloaded builtin definition.
2657 2023-06-20  Li Xu  <xuli1@eswincomputing.com>
2659         * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
2660         size of vector mask mode to one rvv register.
2662 2023-06-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2664         * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
2666 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
2668         * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
2669         switch handler.
2671 2023-06-20  Richard Biener  <rguenther@suse.de>
2673         * tree-ssa-dse.cc (dse_classify_store): When we found
2674         no defs and the basic-block with the original definition
2675         ends in __builtin_unreachable[_trap] the store is dead.
2677 2023-06-20  Richard Biener  <rguenther@suse.de>
2679         * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
2680         keep the virtual SSA form up-to-date.
2682 2023-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2684         * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
2685         New define_insn_and_split.
2687 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
2689         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
2691 2023-06-20  Jan Beulich  <jbeulich@suse.com>
2693         * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
2694         constraint. Add new AVX512F alternative.
2696 2023-06-20  Richard Biener  <rguenther@suse.de>
2698         PR debug/110295
2699         * dwarf2out.cc (process_scope_var): Continue processing
2700         the decl after setting a parent in case the existing DIE
2701         was in limbo.
2703 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
2705         * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
2706         (riscv_arg_has_vector): Simplify.
2707         (riscv_pass_in_vector_p): Adjust warning message.
2709 2023-06-19  Jin Ma  <jinma@linux.alibaba.com>
2711         * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
2712         (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
2713         * config/riscv/riscv.md (riscv_frcsr): New patterns.
2714         (riscv_fscsr): Likewise.
2716 2023-06-19  Toru Kisuki  <tkisuki@tachyum.com>
2718         PR rtl-optimization/110305
2719         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
2720         Handle HONOR_SNANS for x + 0.0.
2722 2023-06-19  Jan Hubicka  <jh@suse.cz>
2724         PR tree-optimization/109811
2725         PR tree-optimization/109849
2726         * passes.def: Add phiprop to early optimization passes.
2727         * tree-ssa-phiprop.cc: Allow clonning.
2729 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
2731         * config/aarch64/aarch64.md (arches): Add nosimd.
2732         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
2733         compact syntax.
2735 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
2736             Omar Tahir  <Omar.Tahir2@arm.com>
2738         * gensupport.cc (class conlist, add_constraints, add_attributes,
2739         skip_spaces, expect_char, preprocess_compact_syntax,
2740         parse_section_layout, parse_section, convert_syntax): New.
2741         (process_rtx): Check for conversion.
2742         * genoutput.cc (process_template): Check for unresolved iterators.
2743         (class data): Add compact_syntax_p.
2744         (gen_insn): Use it.
2745         * gensupport.h (compact_syntax): New.
2746         (hash-set.h): Include.
2747         * doc/md.texi: Document it.
2749 2023-06-19  Uros Bizjak  <ubizjak@gmail.com>
2751         * recog.h (check_asm_operands): Change return type from int to bool.
2752         (insn_invalid_p): Ditto.
2753         (verify_changes): Ditto.
2754         (apply_change_group): Ditto.
2755         (constrain_operands): Ditto.
2756         (constrain_operands_cached): Ditto.
2757         (validate_replace_rtx_subexp): Ditto.
2758         (validate_replace_rtx): Ditto.
2759         (validate_replace_rtx_part): Ditto.
2760         (validate_replace_rtx_part_nosimplify): Ditto.
2761         (added_clobbers_hard_reg_p): Ditto.
2762         (peep2_regno_dead_p): Ditto.
2763         (peep2_reg_dead_p): Ditto.
2764         (store_data_bypass_p): Ditto.
2765         (if_test_bypass_p): Ditto.
2766         * rtl.h (split_all_insns_noflow): Change
2767         return type from unsigned int to void.
2768         * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
2769         of generated added_clobbers_hard_reg_p from int to bool and adjust
2770         function body accordingly.  Change "used" variable type from
2771         int to bool.
2772         * recog.cc (check_asm_operands): Change return type
2773         from int to bool and adjust function body accordingly.
2774         (insn_invalid_p): Ditto.  Change "is_asm" variable to bool.
2775         (verify_changes): Change return type from int to bool.
2776         (apply_change_group): Change return type from int to bool
2777         and adjust function body accordingly.
2778         (validate_replace_rtx_subexp): Change return type from int to bool.
2779         (validate_replace_rtx): Ditto.
2780         (validate_replace_rtx_part): Ditto.
2781         (validate_replace_rtx_part_nosimplify): Ditto.
2782         (constrain_operands_cached): Ditto.
2783         (constrain_operands): Ditto.  Change "lose" and "win"
2784         variables type from int to bool.
2785         (split_all_insns_noflow): Change return type from unsigned int
2786         to void and adjust function body accordingly.
2787         (peep2_regno_dead_p): Change return type from int to bool.
2788         (peep2_reg_dead_p): Ditto.
2789         (peep2_find_free_register): Change "success"
2790         variable type from int to bool
2791         (store_data_bypass_p_1): Change return type from int to bool.
2792         (store_data_bypass_p): Ditto.
2794 2023-06-19  Li Xu  <xuli1@eswincomputing.com>
2796         * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
2797         Zve32f extension.
2799 2023-06-19  Pan Li  <pan2.li@intel.com>
2801         PR target/110299
2802         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
2803         modes.
2804         * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
2805         VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
2806         VF_ZVE63 and VF_ZVE32.
2807         * config/riscv/vector.md
2808         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
2809         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
2810         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
2811         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
2812         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
2813         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
2814         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
2815         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
2816         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
2817         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
2819 2023-06-19  Pan Li  <pan2.li@intel.com>
2821         PR target/110277
2822         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
2823         ret_mode.
2824         * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
2825         VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
2826         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
2827         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
2828         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
2829         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
2830         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
2831         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
2832         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
2833         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
2834         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
2835         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
2836         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
2837         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
2839 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
2841         * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
2842         (gcn_init_libfuncs): Add div and mod functions for all modes.
2843         Add placeholders for divmod functions.
2844         (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
2846 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
2848         * tree-vect-generic.cc: Include optabs-libfuncs.h.
2849         (get_compute_type): Check optab_libfunc.
2850         * tree-vect-stmts.cc: Include optabs-libfuncs.h.
2851         (vectorizable_operation): Check optab_libfunc.
2853 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
2855         * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
2856         * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
2857         (V_MOV, V_MOV_ALT): Likewise.
2858         (scalar_mode, SCALAR_MODE): Add TImode.
2859         (vnsi, VnSI, vndi, VnDI): Likewise.
2860         (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
2861         (mov<mode>, mov<mode>_unspec): Use V_MOV.
2862         (*mov<mode>_4reg): New insn.
2863         (mov<mode>_exec): New 4reg variant.
2864         (mov<mode>_sgprbase): Likewise.
2865         (reload_in<mode>, reload_out<mode>): Use V_MOV.
2866         (vec_set<mode>): Likewise.
2867         (vec_duplicate<mode><exec>): New 4reg variant.
2868         (vec_extract<mode><scalar_mode>): Likewise.
2869         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
2870         (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
2871         (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
2872         (fold_extract_last_<mode>): Use V_MOV.
2873         (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
2874         (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
2875         (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
2876         gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
2877         gather<mode>_insn_2offsets<exec>): Use V_MOV.
2878         (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
2879         scatter<mode>_insn_1offset<exec_scatter>,
2880         scatter<mode>_insn_1offset_ds<exec_scatter>,
2881         scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
2882         (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
2883         mask_scatter_store<mode><vnsi>): Likewise.
2884         * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
2885         (gcn_hard_regno_mode_ok): Likewise.
2886         (GEN_VNM): Add TImode support.
2887         (USE_TI): New macro. Separate TImode operations from non-TImode ones.
2888         (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
2889         V8TImode, and V2TImode.
2890         (print_operand):  Add 'J' and 'K' print codes.
2892 2023-06-19  Richard Biener  <rguenther@suse.de>
2894         PR tree-optimization/110298
2895         * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
2896         Clear number of iterations info before cleaning up the CFG.
2898 2023-06-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2900         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
2901         Simplify vec_concat of lowpart subreg and high part vec_select.
2903 2023-06-19  Tobias Burnus  <tobias@codesourcery.com>
2905         * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
2907 2023-06-19  Richard Sandiford  <richard.sandiford@arm.com>
2909         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
2910         Handle null niters_skip.
2912 2023-06-19  Richard Biener  <rguenther@suse.de>
2914         * config/aarch64/aarch64.cc
2915         (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
2916         to LOOP_VINFO_MASKS.
2918 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
2920         PR target/105523
2921         * common/config/avr/avr-common.cc: Remove setting
2922         of OPT_fdelete_null_pointer_checks.
2923         * config/avr/avr.cc (avr_option_override): Clear
2924         flag_delete_null_pointer_checks if zero_address_valid.
2925         (avr_addr_space_zero_address_valid): New function.
2926         (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
2927         hook.
2929 2023-06-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2930             Robin Dapp  <rdapp.gcc@gmail.com>
2932         * doc/md.texi: Add len_mask{load,store}.
2933         * genopinit.cc (main): Ditto.
2934         (CMP_NAME): Ditto.
2935         * internal-fn.cc (len_maskload_direct): Ditto.
2936         (len_maskstore_direct): Ditto.
2937         (expand_call_mem_ref): Ditto.
2938         (expand_partial_load_optab_fn): Ditto.
2939         (expand_len_maskload_optab_fn): Ditto.
2940         (expand_partial_store_optab_fn): Ditto.
2941         (expand_len_maskstore_optab_fn): Ditto.
2942         (direct_len_maskload_optab_supported_p): Ditto.
2943         (direct_len_maskstore_optab_supported_p): Ditto.
2944         * internal-fn.def (LEN_MASK_LOAD): Ditto.
2945         (LEN_MASK_STORE): Ditto.
2946         * optabs.def (OPTAB_CD): Ditto.
2948 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
2950         * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
2952 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
2954         * config/riscv/autovec.md (<optab><mode>3): Implement binop
2955         expander.
2956         * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
2957         (enum vxrm_field_enum): Rename this...
2958         (enum fixed_point_rounding_mode): ...to this.
2959         (enum frm_field_enum): Rename this...
2960         (enum floating_point_rounding_mode): ...to this.
2961         * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
2962         * config/riscv/riscv.cc (riscv_const_insns): Clarify const
2963         vector handling.
2964         (riscv_libgcc_floating_mode_supported_p): Adjust comment.
2965         (riscv_excess_precision): Do not convert to float for ZVFH.
2966         * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
2968 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
2970         * config/riscv/vector-iterators.md: Add VI_QH iterator.
2971         * config/riscv/autovec-opt.md
2972         (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
2973         that includes sign extension.
2974         (@pred_extract_first_sextsi<mode>): Dito for SImode.
2976 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
2978         * config/riscv/autovec.md (vec_set<mode>): Implement.
2979         (vec_extract<mode><vel>): Implement.
2980         * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
2981         (emit_vlmax_slide_insn): Declare.
2982         (emit_nonvlmax_slide_tu_insn): Declare.
2983         (emit_scalar_move_insn): Export.
2984         (emit_nonvlmax_integer_move_insn): Export.
2985         * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
2986         (emit_nonvlmax_slide_tu_insn): New function.
2987         (emit_vlmax_masked_mu_insn): No change.
2988         (emit_vlmax_integer_move_insn): Export.
2990 2023-06-19  Richard Biener  <rguenther@suse.de>
2992         * tree-vectorizer.h (enum vect_partial_vector_style): New.
2993         (_loop_vec_info::partial_vector_style): Likewise.
2994         (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
2995         (rgroup_controls::compare_type): Add.
2996         (vec_loop_masks): Change from a typedef to auto_vec<>
2997         to a structure.
2998         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
2999         Adjust.  Convert niters_skip to compare_type.
3000         (vect_set_loop_condition_partial_vectors_avx512): New function
3001         implementing the AVX512 partial vector codegen.
3002         (vect_set_loop_condition): Dispatch to the correct
3003         vect_set_loop_condition_partial_vectors_* function based on
3004         LOOP_VINFO_PARTIAL_VECTORS_STYLE.
3005         (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
3006         in the original niter type.
3007         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
3008         partial_vector_style.
3009         (can_produce_all_loop_masks_p): Adjust.
3010         (vect_verify_full_masking): Produce the rgroup_controls vector
3011         here.  Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
3012         (vect_verify_full_masking_avx512): New function implementing
3013         verification of AVX512 style masking.
3014         (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
3015         (vect_analyze_loop_2): Also try AVX512 style masking.
3016         Adjust condition.
3017         (vect_estimate_min_profitable_iters): Implement AVX512 style
3018         mask producing cost.
3019         (vect_record_loop_mask): Do not build the rgroup_controls
3020         vector here but record masks in a hash-set.
3021         (vect_get_loop_mask): Implement AVX512 style mask query,
3022         complementing the existing while_ult style.
3024 2023-06-19  Richard Biener  <rguenther@suse.de>
3026         * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
3027         argument.
3028         * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
3029         (vectorize_fold_left_reduction): Adjust.
3030         (vect_transform_reduction): Likewise.
3031         (vectorizable_live_operation): Likewise.
3032         * tree-vect-stmts.cc (vectorizable_call): Likewise.
3033         (vectorizable_operation): Likewise.
3034         (vectorizable_store): Likewise.
3035         (vectorizable_load): Likewise.
3036         (vectorizable_condition): Likewise.
3038 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
3040         PR target/110086
3041         * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
3042         Add Optimization option property.
3044 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
3046         * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
3047         Add new pattern for the abovementioned case.
3049 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
3051         * config/xtensa/xtensa.cc
3052         (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
3054 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
3056         * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
3058 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
3060         * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
3062 2023-06-19  liuhongt  <hongtao.liu@intel.com>
3064         PR target/110235
3065         * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
3066         Substitute with ..
3067         (sse2_packsswb<mask_name>): .. this, ..
3068         (avx2_packsswb<mask_name>): .. this and ..
3069         (avx512bw_packsswb<mask_name>): .. this.
3070         (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
3071         (sse2_packssdw<mask_name>): .. this, ..
3072         (avx2_packssdw<mask_name>): .. this and ..
3073         (avx512bw_packssdw<mask_name>): .. this.
3075 2023-06-19  liuhongt  <hongtao.liu@intel.com>
3077         PR target/110235
3078         * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
3079         UNSPEC_US_TRUNCATE instead of original us_truncate for
3080         packusdw/packuswb.
3081         * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
3082         with ..
3083         (mmx_packsswb): .. this and ..
3084         (mmx_packuswb): .. this.
3085         (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
3086         us_truncate.
3087         (s_trunsuffix): Removed code iterator.
3088         (any_s_truncate): Ditto.
3089         * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
3090         UNSPEC_US_TRUNCATE instead of original us_truncate.
3091         (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
3092         * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
3094 2023-06-18  Pan Li  <pan2.li@intel.com>
3096         * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
3098 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
3100         * rtl.h (*rtx_equal_p_callback_function):
3101         Change return type from int to bool.
3102         (rtx_equal_p): Ditto.
3103         (*hash_rtx_callback_function): Ditto.
3104         * rtl.cc (rtx_equal_p): Change return type from int to bool
3105         and adjust function body accordingly.
3106         * early-remat.cc (scratch_equal): Ditto.
3107         * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
3108         (hash_with_unspec_callback): Ditto.
3110 2023-06-18  Jeff Law  <jlaw@ventanamicro.com>
3112         * config/arc/arc.md (movqi_insn): Allow certain constants to
3113         be stored into memory in the pattern's condition.
3114         (movsf_insn): Similarly.
3116 2023-06-18  Honza  <jh@ryzen3.suse.cz>
3118         PR tree-optimization/109849
3119         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
3120         ES; handle ipa_predicate::not_sra_candidate.
3121         (evaluate_properties_for_edge): Pass es to
3122         evaluate_conditions_for_known_args.
3123         (ipa_fn_summary_t::duplicate): Handle sra candidates.
3124         (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
3125         (load_or_store_of_ptr_parameter): New function.
3126         (points_to_possible_sra_candidate_p): New function.
3127         (analyze_function_body): Initialize points_to_possible_sra_candidate;
3128         determine sra predicates.
3129         (estimate_ipcp_clone_size_and_time): Update call of
3130         evaluate_conditions_for_known_args.
3131         (remap_edge_params): Update points_to_possible_sra_candidate.
3132         (read_ipa_call_summary): Stream points_to_possible_sra_candidate
3133         (write_ipa_call_summary): Likewise.
3134         * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
3135         (dump_condition): Dump it.
3136         * ipa-predicate.h (struct inline_param_summary): Add
3137         points_to_possible_sra_candidate.
3139 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
3141         * config/i386/i386-expand.cc (ix86_expand_carry): New helper
3142         function for setting the carry flag.
3143         (ix86_expand_builtin) <handlecarry>: Use it here.
3144         * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
3145         * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
3146         (usubc<mode>5): Likewise.
3148 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
3150         * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
3151         for the immediate constant shift count.
3152         (*concat<mode><dwi>3_2): Likewise.
3153         (*concat<mode><dwi>3_3): Likewise.
3154         (*concat<mode><dwi>3_4): Likewise.
3155         (*concat<mode><dwi>3_5): Likewise.
3156         (*concat<mode><dwi>3_6): Likewise.
3158 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
3160         * cse.cc (hash_rtx_cb): Rename to hash_rtx.
3161         (hash_rtx): Remove.
3162         * early-remat.cc (remat_candidate_hasher::equal): Update
3163         to call rtx_equal_p with rtx_equal_p_callback_function argument.
3164         * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
3165         (rtx_equal_p): Remove.
3166         * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
3167         argument with NULL default value.
3168         (rtx_equal_p_cb): Remove function declaration.
3169         (hash_rtx_cb): Ditto.
3170         (hash_rtx): Add hash_rtx_callback_function argument
3171         with NULL default value.
3172         * sel-sched-ir.cc (free_nop_pool): Update function comment.
3173         (skip_unspecs_callback): Ditto.
3174         (vinsn_init): Update to call hash_rtx with
3175         hash_rtx_callback_function argument.
3176         (vinsn_equal_p): Ditto.
3178 2023-06-18  yulong  <shiyulong@iscas.ac.cn>
3180         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
3181         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
3182         (ADJUST_ALIGNMENT): Ditto.
3183         (RVV_TUPLE_PARTIAL_MODES): Ditto.
3184         (ADJUST_NUNITS): Ditto.
3185         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
3186         New types.
3187         (vfloat16mf4x3_t): Ditto.
3188         (vfloat16mf4x4_t): Ditto.
3189         (vfloat16mf4x5_t): Ditto.
3190         (vfloat16mf4x6_t): Ditto.
3191         (vfloat16mf4x7_t): Ditto.
3192         (vfloat16mf4x8_t): Ditto.
3193         (vfloat16mf2x2_t): Ditto.
3194         (vfloat16mf2x3_t): Ditto.
3195         (vfloat16mf2x4_t): Ditto.
3196         (vfloat16mf2x5_t): Ditto.
3197         (vfloat16mf2x6_t): Ditto.
3198         (vfloat16mf2x7_t): Ditto.
3199         (vfloat16mf2x8_t): Ditto.
3200         (vfloat16m1x2_t): Ditto.
3201         (vfloat16m1x3_t): Ditto.
3202         (vfloat16m1x4_t): Ditto.
3203         (vfloat16m1x5_t): Ditto.
3204         (vfloat16m1x6_t): Ditto.
3205         (vfloat16m1x7_t): Ditto.
3206         (vfloat16m1x8_t): Ditto.
3207         (vfloat16m2x2_t): Ditto.
3208         (vfloat16m2x3_t): Ditto.
3209         (vfloat16m2x4_t): Ditto.
3210         (vfloat16m4x2_t): Ditto.
3211         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
3212         (vfloat16mf4x3_t): Ditto.
3213         (vfloat16mf4x4_t): Ditto.
3214         (vfloat16mf4x5_t): Ditto.
3215         (vfloat16mf4x6_t): Ditto.
3216         (vfloat16mf4x7_t): Ditto.
3217         (vfloat16mf4x8_t): Ditto.
3218         (vfloat16mf2x2_t): Ditto.
3219         (vfloat16mf2x3_t): Ditto.
3220         (vfloat16mf2x4_t): Ditto.
3221         (vfloat16mf2x5_t): Ditto.
3222         (vfloat16mf2x6_t): Ditto.
3223         (vfloat16mf2x7_t): Ditto.
3224         (vfloat16mf2x8_t): Ditto.
3225         (vfloat16m1x2_t): Ditto.
3226         (vfloat16m1x3_t): Ditto.
3227         (vfloat16m1x4_t): Ditto.
3228         (vfloat16m1x5_t): Ditto.
3229         (vfloat16m1x6_t): Ditto.
3230         (vfloat16m1x7_t): Ditto.
3231         (vfloat16m1x8_t): Ditto.
3232         (vfloat16m2x2_t): Ditto.
3233         (vfloat16m2x3_t): Ditto.
3234         (vfloat16m2x4_t): Ditto.
3235         (vfloat16m4x2_t): Ditto.
3236         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
3237         * config/riscv/riscv.md: New.
3238         * config/riscv/vector-iterators.md: New.
3240 2023-06-17  Roger Sayle  <roger@nextmovesoftware.com>
3242         * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
3243         CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
3244         Generalize special case for converting TImode to V1TImode to handle
3245         all 128-bit vector conversions.
3247 2023-06-17  Costas Argyris  <costas.argyris@gmail.com>
3249         * gcc-ar.cc (main): Refactor to slightly reduce code
3250         duplication.  Avoid unnecessary elements in nargv.
3252 2023-06-16  Pan Li  <pan2.li@intel.com>
3254         PR target/110265
3255         * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
3256         integer reduction expand.
3257         * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
3258         and the LMUL1 attr respectively.
3259         * config/riscv/vector.md
3260         (@pred_reduc_<reduc><mode><vlmul1>): Removed.
3261         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
3262         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
3263         (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
3264         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
3265         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
3266         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
3268 2023-06-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3270         PR target/110264
3271         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
3273 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
3275         PR middle-end/79173
3276         * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
3277         BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
3278         BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
3279         types.
3280         * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
3281         BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
3282         * builtins.cc (fold_builtin_addc_subc): New function.
3283         (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
3284         * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
3286 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
3288         PR tree-optimization/110271
3289         * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
3290         <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
3291         instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
3293 2023-06-16  Martin Jambor  <mjambor@suse.cz>
3295         * configure: Regenerate.
3297 2023-06-16  Roger Sayle  <roger@nextmovesoftware.com>
3298             Uros Bizjak  <ubizjak@gmail.com>
3300         PR target/31985
3301         * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
3302         define_insn_and_split combine *add<dwi>3_doubleword with
3303         a *concat<mode><dwi>3 for more efficient lowering after reload.
3305 2023-06-16  Vladimir N. Makarov  <vmakarov@redhat.com>
3307         * ira-lives.cc: Include except.h.
3308         (process_bb_node_lives): Ignore conflicts from cleanup exceptions
3309         when the pseudo does not live at the exception landing pad.
3311 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
3313         * doc/invoke.texi: Document -Welaborated-enum-base.
3315 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3317         * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
3318         (ushrn2_n): ... This.
3319         (sqshrn2_n): Rename builtins to...
3320         (ssqshrn2_n): ... This.
3321         (uqshrn2_n): Rename builtins to...
3322         (uqushrn2_n): ... This.
3323         * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
3324         (vqshrn_high_n_s32): Likewise.
3325         (vqshrn_high_n_s64): Likewise.
3326         (vqshrn_high_n_u16): Likewise.
3327         (vqshrn_high_n_u32): Likewise.
3328         (vqshrn_high_n_u64): Likewise.
3329         (vshrn_high_n_s16): Likewise.
3330         (vshrn_high_n_s32): Likewise.
3331         (vshrn_high_n_s64): Likewise.
3332         (vshrn_high_n_u16): Likewise.
3333         (vshrn_high_n_u32): Likewise.
3334         (vshrn_high_n_u64): Likewise.
3335         * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
3336         Rename to...
3337         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
3338         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
3339         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
3340         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
3341         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
3342         (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
3343         (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
3344         Update expander for the above.
3346 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3348         * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
3349         (shrn2_n): ... This.
3350         (rshrn2): Rename builtins to...
3351         (rshrn2_n): ... This.
3352         * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
3353         (vrshrn_high_n_s32): Likewise.
3354         (vrshrn_high_n_s64): Likewise.
3355         (vrshrn_high_n_u16): Likewise.
3356         (vrshrn_high_n_u32): Likewise.
3357         (vrshrn_high_n_u64): Likewise.
3358         (vshrn_high_n_s16): Likewise.
3359         (vshrn_high_n_s32): Likewise.
3360         (vshrn_high_n_s64): Likewise.
3361         (vshrn_high_n_u16): Likewise.
3362         (vshrn_high_n_u32): Likewise.
3363         (vshrn_high_n_u64): Likewise.
3364         * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
3365         Delete.
3366         (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
3367         (aarch64_shrn2<mode>_insn_le): Likewise.
3368         (aarch64_shrn2<mode>_insn_be): Likewise.
3369         (aarch64_shrn2<mode>): Likewise.
3370         (aarch64_rshrn2<mode>_insn_le): Likewise.
3371         (aarch64_rshrn2<mode>_insn_be): Likewise.
3372         (aarch64_rshrn2<mode>): Likewise.
3373         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
3374         (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
3375         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
3376         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
3377         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
3378         (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
3379         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
3380         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
3381         (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
3382         (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
3383         (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
3384         (aarch64_sqshrun2_n<mode>): New define_expand.
3385         (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
3386         (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
3387         (aarch64_sqrshrun2_n<mode>): New define_expand.
3388         * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
3389         UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
3390         Delete unspec values.
3391         (VQSHRN_N): Delete int iterator.
3393 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3395         * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
3396         * config/aarch64/aarch64-simd.md
3397         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
3398         (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
3399         Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
3400         * config/aarch64/iterators.md (shrn_s): New code attribute.
3402 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3404         * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
3405         Rename to...
3406         (aarch64_<shrn_op>shrn_n<mode>): ... This.  Reimplement with RTL codes.
3407         (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
3408         (aarch64_sqrshrun_n<mode>_insn): Likewise.
3409         (aarch64_sqshrun_n<mode>_insn): Likewise.
3410         (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
3411         (aarch64_sqshrun_n<mode>): Likewise.
3412         (aarch64_sqrshrun_n<mode>): Likewise.
3413         * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
3415 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3417         * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
3418         (shrn_n): ... This.
3419         (rshrn): Rename builtins to...
3420         (rshrn_n): ... This.
3421         * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
3422         (vshrn_n_s32): Likewise.
3423         (vshrn_n_s64): Likewise.
3424         (vshrn_n_u16): Likewise.
3425         (vshrn_n_u32): Likewise.
3426         (vshrn_n_u64): Likewise.
3427         (vrshrn_n_s16): Likewise.
3428         (vrshrn_n_s32): Likewise.
3429         (vrshrn_n_s64): Likewise.
3430         (vrshrn_n_u16): Likewise.
3431         (vrshrn_n_u32): Likewise.
3432         (vrshrn_n_u64): Likewise.
3433         * config/aarch64/aarch64-simd.md
3434         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
3435         (aarch64_shrn<mode>): Likewise.
3436         (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
3437         (aarch64_rshrn<mode>): Likewise.
3438         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
3439         (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
3440         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
3441         (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
3442         (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
3443         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
3444         (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
3445         (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
3446         (aarch64_sqshrun_n<mode>): Likewise.
3447         (aarch64_sqrshrun_n<mode>): Likewise.
3448         * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
3449         (TRUNCEXTEND): New code attribute.
3450         (TRUNC_SHIFT): Likewise.
3451         (shrn_op): Likewise.
3452         * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
3453         New predicate.
3455 2023-06-16  Pan Li  <pan2.li@intel.com>
3457         * config/riscv/riscv-vsetvl.cc
3458         (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
3460 2023-06-16  Richard Biener  <rguenther@suse.de>
3462         PR tree-optimization/110278
3463         * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
3464         (x != (typeof x)(x == 0) -> true): Likewise.
3466 2023-06-16  Pali Rohár  <pali@kernel.org>
3468         * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
3469         (REAL_LIBGCC_SPEC): New define.
3470         * config/i386/mingw.opt: Add mcrtdll=
3471         * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
3472         (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
3473         (STARTFILE_SPEC): Adjust for -mcrtdll=.
3474         * doc/invoke.texi: Add mcrtdll= documentation.
3476 2023-06-16  Simon Dardis  <simon.dardis@imgtec.com>
3478         * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
3479         (mips_handle_code_readable_attr):New static function.
3480         (mips_get_code_readable_attr):New static enum function.
3481         (mips_set_current_function):Set the code_readable mode.
3482         (mips_option_override):Same as above.
3483         * doc/extend.texi:Document code_readable.
3485 2023-06-16  Richard Biener  <rguenther@suse.de>
3487         PR tree-optimization/110269
3488         * fold-const.cc (fold_binary_loc): Merge x != 0 folding
3489         with tree_expr_nonzero_p ...
3490         * match.pd (cmp (convert? addr@0) integer_zerop): With this
3491         pattern.
3493 2023-06-15  Marek Polacek  <polacek@redhat.com>
3495         * Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
3496         Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
3497         ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
3498         * configure.ac (--enable-host-shared): Don't set PICFLAG here.
3499         (--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
3500         check.
3501         * configure: Regenerate.
3502         * doc/install.texi: Document --enable-host-pie.
3504 2023-06-15  Manolis Tsamis  <manolis.tsamis@vrull.eu>
3506         * regcprop.cc (maybe_mode_change): Enable stack pointer
3507         propagation.
3509 2023-06-15  Andrew MacLeod  <amacleod@redhat.com>
3511         PR tree-optimization/110266
3512         * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
3513         complex type.
3514         (adjust_realpart_expr): Ditto.
3516 2023-06-15  Jan Beulich  <jbeulich@suse.com>
3518         * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
3519         vmovddup.
3521 2023-06-15  Jan Beulich  <jbeulich@suse.com>
3523         * config/i386/constraints.md: Mention k and r for B.
3525 2023-06-15  Lulu Cheng  <chenglulu@loongson.cn>
3526             Andrew Pinski  <apinski@marvell.com>
3528         PR target/110136
3529         * config/loongarch/loongarch.md: Modify the register constraints for template
3530         "jumptable" and "indirect_jump" from "r" to "e".
3532 2023-06-15  Xi Ruoyao  <xry111@xry111.site>
3534         * config/loongarch/loongarch-tune.h (loongarch_align): New
3535         struct.
3536         * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
3537         array.
3538         * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
3539         the array.
3540         * config/loongarch/loongarch.cc
3541         (loongarch_option_override_internal): Set the value of
3542         -falign-functions= if -falign-functions is enabled but no value
3543         is given.  Likewise for -falign-labels=.
3545 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
3547         PR middle-end/79173
3548         * internal-fn.def (UADDC, USUBC): New internal functions.
3549         * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
3550         (commutative_ternary_fn_p): Return true also for IFN_UADDC.
3551         * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
3552         * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
3553         match_uaddc_usubc): New functions.
3554         (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
3555         for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
3556         other optimizations have been successful for those.
3557         * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
3558         * fold-const-call.cc (fold_const_call): Likewise.
3559         * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
3560         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
3561         * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
3562         patterns.
3563         * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
3564         define_expand patterns.
3565         (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
3566         into NOTE_INSN_DELETED note rather than nop instruction.
3567         (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
3568         Likewise.
3570 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
3572         PR middle-end/79173
3573         * config/i386/i386.md (subborrow<mode>): Add alternative with
3574         memory destination and add for it define_peephole2
3575         TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
3576         destination in these patterns.
3578 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
3580         PR middle-end/79173
3581         * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
3582         addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
3583         define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
3584         using memory destination in these patterns.
3586 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
3588         * gimple-fold.cc (gimple_fold_call): Move handling of arg0
3589         as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
3590         and .{ADD,SUB,MUL}_OVERFLOW calls from here...
3591         * fold-const-call.cc (fold_const_call): ... here.
3593 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
3595         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
3596         Rename to <su>abd<mode>3.
3597         * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
3598         to <su>abd<mode>3.
3600 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
3602         * doc/md.texi (sabd, uabd): Document them.
3603         * internal-fn.def (ABD): Use new optab.
3604         * optabs.def (sabd_optab, uabd_optab): New optabs,
3605         * tree-vect-patterns.cc (vect_recog_absolute_difference):
3606         Recognize the following idiom abs (a - b).
3607         (vect_recog_sad_pattern): Refactor to use
3608         vect_recog_absolute_difference.
3609         (vect_recog_abd_pattern): Use patterns found by
3610         vect_recog_absolute_difference to build a new ABD
3611         internal call.
3613 2023-06-15  chenxiaolong  <chenxl04200420@163.com>
3615         * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
3616         of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
3618 2023-06-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3620         * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
3621         (expand_vec_perm_const_1): Add merge optmization.
3623 2023-06-15  Lehua Ding  <lehua.ding@rivai.ai>
3625         PR target/110119
3626         * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
3627         (riscv_pass_by_reference): Return true for vector mode
3629 2023-06-15  Pan Li  <pan2.li@intel.com>
3631         * config/riscv/autovec-opt.md: Align the predictor sytle.
3632         * config/riscv/autovec.md: Ditto.
3634 2023-06-15  Pan Li  <pan2.li@intel.com>
3636         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
3637         Take elen instead of scalar BITS_PER_WORD.
3638         (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
3639         instead of scaler BITS_PER_WORD.
3641 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
3643         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
3645 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3647         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
3648         Fix signed comparison warning in loop from npats to enelts.
3650 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
3652         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
3653         to offloading compilation.
3654         * config/gcn/mkoffload.cc (main): Adjust.
3655         * config/nvptx/mkoffload.cc (main): Likewise.
3656         * doc/invoke.texi (foffload-options): Update example.
3658 2023-06-14  liuhongt  <hongtao.liu@intel.com>
3660         PR target/110227
3661         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
3662         for alternative 2 since there's no evex version for vpcmpeqd
3663         ymm, ymm, ymm.
3665 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
3667         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
3669 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
3671         * config/sh/divtab.cc: Remove.
3673 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
3675         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
3676         superfluous spaces around \t for vpcmpeqd.
3678 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
3680         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
3681         clearing vectors with only a single element.  Set CLEARED if the
3682         vector was initialized to zero.
3684 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
3686         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
3687         #include.
3688         (ENTRY): Undef.
3689         (TUPLE_ENTRY): Undef.
3691 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3693         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
3694         (shuffle_generic_patterns): Ditto.
3695         (expand_vec_perm_const_1): Ditto.
3697 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3699         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
3700         (shuffle_decompress_patterns): Ditto.
3702 2023-06-13  Richard Biener  <rguenther@suse.de>
3704         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
3706 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
3707             Kito Cheng  <kito.cheng@sifive.com>
3709         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
3710         warning flag if func is not builtin
3711         * config/riscv/riscv.cc
3712         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
3713         (riscv_arg_has_vector): Determine whether the arg is vector type.
3714         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
3715         (riscv_init_cumulative_args): The same as header.
3716         (riscv_get_arg_info): Add the checking.
3717         (riscv_function_value): Check the func return and set warning flag
3718         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
3719         determine whether warning psabi or not.
3721 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3723         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
3724         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
3725         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
3726         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
3727         with TP_TPIDRURO.
3728         (arm_output_load_tpidr): Define.
3729         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
3730         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
3731         assembly.
3732         (reload_tp_hard): Likewise.
3733         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
3734         arm_tp_type.
3735         * doc/invoke.texi (Arm Options, mtp): Document new values.
3737 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3739         PR target/108779
3740         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
3741         AARCH64_TPIDRRO_EL0 value.
3742         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
3743         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
3744         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
3745         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
3747 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
3749         * range-op-float.cc (frange_nextafter): Drop inline.
3750         (frelop_early_resolve): Add static.
3751         (frange_float): Likewise.
3753 2023-06-13  Richard Biener  <rguenther@suse.de>
3755         PR middle-end/110232
3756         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
3757         to check whether the buffer covers the whole vector.
3759 2023-06-13  Richard Biener  <rguenther@suse.de>
3761         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
3762         .MASK_LOAD and friends set the size of the access to unknown.
3764 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
3766         PR target/96339
3767         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
3768         calls that have a constant input predicate vector.
3769         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
3770         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
3771         (svlast_impl::vect_all_same): Check if all vector elements are equal.
3773 2023-06-13  Andi Kleen  <ak@linux.intel.com>
3775         * config/i386/gcc-auto-profile: Regenerate.
3777 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3779         * config/riscv/vector-iterators.md: Fix requirement.
3781 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3783         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
3784         (shuffle_decompress_patterns): New function.
3785         (expand_vec_perm_const_1): Add decompress optimization.
3787 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
3789         PR rtl-optimization/101188
3790         * postreload.cc (reload_cse_move2add_invalidate): New function,
3791         extracted from...
3792         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
3794 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3796         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
3797         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
3798         and if maxv == 1, use constant element for duplicating into register.
3800 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
3802         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
3803         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
3804         (gimplify_adjust_omp_clauses): Change
3805         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
3806         GOMP_MAP_FORCE_PRESENT.
3807         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
3808         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
3809         to/from clauses with present modifier.
3811 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3813         PR tree-optimization/110205
3814         * range-op-float.cc (range_operator::fold_range): Add default FII
3815         fold routine.
3816         * range-op-mixed.h (class operator_gt): Add missing final overrides.
3817         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
3818         (operator_lshift ::update_bitmask): Add final override.
3819         (operator_rshift ::update_bitmask): Add final override.
3820         * range-op.h (range_operator::fold_range): Add FII prototype.
3822 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3824         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
3825         Use range_op_handler directly.
3826         * range-op.cc (range_op_handler::range_op_handler): Unsigned
3827         param instead of tree-code.
3828         (ptr_op_widen_plus_signed): Delete.
3829         (ptr_op_widen_plus_unsigned): Delete.
3830         (ptr_op_widen_mult_signed): Delete.
3831         (ptr_op_widen_mult_unsigned): Delete.
3832         (range_op_table::initialize_integral_ops): Add new opcodes.
3833         * range-op.h (range_op_handler): Use unsigned.
3834         (OP_WIDEN_MULT_SIGNED): New.
3835         (OP_WIDEN_MULT_UNSIGNED): New.
3836         (OP_WIDEN_PLUS_SIGNED): New.
3837         (OP_WIDEN_PLUS_UNSIGNED): New.
3838         (RANGE_OP_TABLE_SIZE): New.
3839         (range_op_table::operator []): Use unsigned.
3840         (range_op_table::set): Use unsigned.
3841         (m_range_tree): Make unsigned.
3842         (ptr_op_widen_mult_signed): Remove.
3843         (ptr_op_widen_mult_unsigned): Remove.
3844         (ptr_op_widen_plus_signed): Remove.
3845         (ptr_op_widen_plus_unsigned): Remove.
3847 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3849         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
3850         manually as there is no access to the default operator.
3851         (cfn_copysign::fold_range): Don't check for validity.
3852         (cfn_ubsan::fold_range): Ditto.
3853         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
3854         * range-op.cc (default_operator): New.
3855         (range_op_handler::range_op_handler): Use default_operator
3856         instead of NULL.
3857         (range_op_handler::operator bool): Move from header, compare
3858         against default operator.
3859         (range_op_handler::range_op): New.
3860         * range-op.h (range_op_handler::operator bool): Move.
3862 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3864         * range-op.cc (unified_table): Delete.
3865         (range_op_table operator_table): Instantiate.
3866         (range_op_table::range_op_table): Rename from unified_table.
3867         (range_op_handler::range_op_handler): Use range_op_table.
3868         * range-op.h (range_op_table::operator []): Inline.
3869         (range_op_table::set): Inline.
3871 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3873         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
3874         pass type.
3875         * gimple-range-op.cc (get_code): Rename from get_code_and_type
3876         and simplify.
3877         (gimple_range_op_handler::supported_p): No need for type.
3878         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
3879         (cfn_copysign::fold_range): Ditto.
3880         (cfn_ubsan::fold_range): Ditto.
3881         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
3882         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
3883         * range-op-float.cc (operator_plus::op1_range): Ditto.
3884         (operator_mult::op1_range): Ditto.
3885         (range_op_float_tests): Ditto.
3886         * range-op.cc (get_op_handler): Remove.
3887         (range_op_handler::set_op_handler): Remove.
3888         (operator_plus::op1_range): No need for type.
3889         (operator_minus::op1_range): Ditto.
3890         (operator_mult::op1_range): Ditto.
3891         (operator_exact_divide::op1_range): Ditto.
3892         (operator_cast::op1_range): Ditto.
3893         (perator_bitwise_not::fold_range): Ditto.
3894         (operator_negate::fold_range): Ditto.
3895         * range-op.h (range_op_handler::range_op_handler): Remove type param.
3896         (range_cast): No need for type.
3897         (range_op_table::operator[]): Check for enum_code >= 0.
3898         * tree-data-ref.cc (compute_distributive_range): No need for type.
3899         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
3900         * value-query.cc (range_query::get_tree_range): Ditto.
3901         * value-relation.cc (relation_oracle::validate_relation): Ditto.
3902         * vr-values.cc (range_of_var_in_loop): Ditto.
3903         (simplify_using_ranges::fold_cond_with_ops): Ditto.
3905 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3907         * range-op-mixed.h (operator_max): Remove final.
3908         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
3909         (pointer_table::pointer_table): Remove.
3910         (class hybrid_max_operator): New.
3911         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
3912         * range-op.cc (pointer_tree_table): Remove.
3913         (unified_table::unified_table): Comment out MAX_EXPR.
3914         (get_op_handler): Remove check of pointer table.
3915         * range-op.h (class pointer_table): Remove.
3917 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3919         * range-op-mixed.h (operator_min): Remove final.
3920         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
3921         (class hybrid_min_operator): New.
3922         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
3923         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
3925 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3927         * range-op-mixed.h (operator_bitwise_or): Remove final.
3928         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
3929         (class hybrid_or_operator): New.
3930         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
3931         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
3933 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3935         * range-op-mixed.h (operator_bitwise_and): Remove final.
3936         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
3937         (class hybrid_and_operator): New.
3938         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
3939         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
3941 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3943         * Makefile.in (OBJS): Add range-op-ptr.o.
3944         * range-op-mixed.h (update_known_bitmask): Move prototype here.
3945         (minus_op1_op2_relation_effect): Move prototype here.
3946         (wi_includes_zero_p): Move function to here.
3947         (wi_zero_p): Ditto.
3948         * range-op.cc (update_known_bitmask): Remove static.
3949         (wi_includes_zero_p): Move to header.
3950         (wi_zero_p): Move to header.
3951         (minus_op1_op2_relation_effect): Remove static.
3952         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
3953         (pointer_plus_operator): Ditto.
3954         (pointer_min_max_operator): Ditto.
3955         (pointer_and_operator): Ditto.
3956         (pointer_or_operator): Ditto.
3957         (pointer_table): Ditto.
3958         (range_op_table::initialize_pointer_ops): Ditto.
3959         * range-op-ptr.cc: New.
3961 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3963         * range-op-mixed.h (class operator_max): Move from...
3964         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
3965         (get_op_handler): Remove the integral table.
3966         (class operator_max): Move from here.
3967         (integral_table::integral_table): Delete.
3968         * range-op.h (class integral_table): Delete.
3970 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3972         * range-op-mixed.h (class operator_min): Move from...
3973         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
3974         (class operator_min): Move from here.
3975         (integral_table::integral_table): Remove MIN_EXPR.
3977 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3979         * range-op-mixed.h (class operator_bitwise_or): Move from...
3980         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
3981         (class operator_bitwise_or): Move from here.
3982         (integral_table::integral_table): Remove BIT_IOR_EXPR.
3984 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3986         * range-op-mixed.h (class operator_bitwise_and): Move from...
3987         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
3988         (get_op_handler): Check for a pointer table entry first.
3989         (class operator_bitwise_and): Move from here.
3990         (integral_table::integral_table): Remove BIT_AND_EXPR.
3992 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
3994         * range-op-mixed.h (class operator_bitwise_xor): Move from...
3995         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
3996         (class operator_bitwise_xor): Move from here.
3997         (integral_table::integral_table): Remove BIT_XOR_EXPR.
3998         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
4000 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4002         * range-op-mixed.h (class operator_bitwise_not): Move from...
4003         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
4004         (class operator_bitwise_not): Move from here.
4005         (integral_table::integral_table): Remove BIT_NOT_EXPR.
4006         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
4008 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
4010         * range-op-mixed.h (class operator_addr_expr): Move from...
4011         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
4012         (class operator_addr_expr): Move from here.
4013         (integral_table::integral_table): Remove ADDR_EXPR.
4014         (pointer_table::pointer_table): Remove ADDR_EXPR.
4016 2023-06-12  Pan Li  <pan2.li@intel.com>
4018         * config/riscv/riscv-vector-builtins-types.def
4019         (vfloat16m1_t): Add type to lmul1 ops.
4020         (vfloat16m2_t): Likewise.
4021         (vfloat16m4_t): Likewise.
4023 2023-06-12  Richard Biener  <rguenther@suse.de>
4025         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
4026         .MASK_STORE and friend set the size of the access to
4027         unknown.
4029 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
4031         * config.in: Regenerate.
4032         * configure: Regenerate.
4033         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
4035 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4037         * config/riscv/autovec-opt.md
4038         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
4039         (*<any_shiftrt:optab>trunc<mode>): Ditto.
4040         * config/riscv/autovec.md (<optab><mode>3): Change to
4041         define_insn_and_split.
4042         (v<optab><mode>3): Ditto.
4043         (trunc<mode><v_double_trunc>2): Ditto.
4045 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4047         * simplify-rtx.cc (simplify_const_unary_operation):
4048         Handle US_TRUNCATE, SS_TRUNCATE.
4050 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
4052         PR modula2/109952
4053         * doc/gm2.texi (Standard procedures): Fix Next link.
4055 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
4057         * config.in: Regenerate.
4059 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
4061         PR middle-end/110142
4062         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
4063         subtype to vect_widened_op_tree and remove subtype parameter, also
4064         remove superfluous overloaded function definition.
4065         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
4066         to call to vect_recog_widen_op_pattern.
4067         (vect_recog_widen_minus_pattern): Likewise.
4069 2023-06-12  liuhongt  <hongtao.liu@intel.com>
4071         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
4072         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
4073         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
4074         (vec_unpacks_lo_<mode>): Ditto.
4075         (vec_unpacks_hi_<mode>): Ditto.
4076         (sse_movlhps_<mode>): New define_insn.
4077         (ssse3_palignr<mode>_perm): Extend to V_128H.
4078         (V_128H): New mode iterator.
4079         (ssepackPHmode): New mode attribute.
4080         (vunpck_extract_mode): Ditto.
4081         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
4082         (vpckfloat_temp_mode): Ditto.
4083         (vpckfloat_op_mode): Ditto.
4084         (vunpckfixt_mode): Extend to VxHF.
4085         (vunpckfixt_model): Ditto.
4086         (vunpckfixt_extract_mode): Ditto.
4088 2023-06-12  Richard Biener  <rguenther@suse.de>
4090         PR middle-end/110200
4091         * genmatch.cc (expr::gen_transform): Put braces around
4092         the if arm for the (convert ...) short-cut.
4094 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
4096         PR target/109932
4097         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
4098         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
4100 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
4102         PR target/110011
4103         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
4104         floating constant itself for real_to_target call.
4106 2023-06-12  Pan Li  <pan2.li@intel.com>
4108         * config/riscv/riscv-vector-builtins-types.def
4109         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
4110         (vfloat16mf2_t): Ditto.
4111         (vfloat16m1_t): Ditto.
4112         (vfloat16m2_t): Ditto.
4113         (vfloat16m4_t): Ditto.
4115 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
4117         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
4118         Do not require a stack frame when debugging is enabled for AIX.
4120 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
4122         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
4123         Remove attribute values.
4124         (insv_notbit): New post-reload insn.
4125         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
4126         (*insv.not-bit.0_split, *insv.not-bit.7_split)
4127         (*insv.xor-extract_split): Split to insv_notbit.
4128         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
4129         (*insv.xor-extract): Remove post-reload insns.
4130         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
4131         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
4132         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
4133         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
4135 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
4137         PR target/109907
4138         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
4139         (MSB, SIZE): New mode attributes.
4140         (any_shift): New code iterator.
4141         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
4142         (*lshr<mode>3_const_split): Add constraint alternative for
4143         the case of shift-offset = MSB.  Ditch "length" attribute.
4144         (extzv<mode): New. replaces extzv.  Adjust following patterns.
4145         Use avr_out_extr, avr_out_extr_not to print asm.
4146         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
4147         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
4148         * config/avr/constraints.md (C15, C23, C31, Yil): New
4149         * config/avr/predicates.md (reg_or_low_io_operand)
4150         (const7_operand, reg_or_low_io_operand)
4151         (const15_operand, const_0_to_15_operand)
4152         (const23_operand, const_0_to_23_operand)
4153         (const31_operand, const_0_to_31_operand): New.
4154         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
4155         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
4156         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
4157         MSB case to new insn constraint "r" for operands[1].
4158         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
4159         Handle these cases.
4160         (avr_rtx_costs_1): Adjust cost for a new pattern.
4162 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4164         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
4165         (vector_insn_info::parse_insn): Add rtx_insn parse.
4166         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
4167         (get_first_vsetvl): New function.
4168         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
4169         (pass_vsetvl::cleanup_insns): Remove it.
4170         (pass_vsetvl::ssa_post_optimization): New function.
4171         (has_no_uses): Ditto.
4172         (pass_vsetvl::propagate_avl): Remove it.
4173         (pass_vsetvl::df_post_optimization): New function.
4174         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
4175         * config/riscv/riscv-vsetvl.h: Adapt declaration.
4177 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
4179         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
4180         (ipcp_vr_lattice::print): Call dump method.
4181         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
4182         Value_Range.
4183         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
4184         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
4185         range.
4186         (initialize_node_lattices): Pass type when appropriate.
4187         (ipa_vr_operation_and_type_effects): Make type agnostic.
4188         (ipa_value_range_from_jfunc): Same.
4189         (propagate_vr_across_jump_function): Same.
4190         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
4191         (evaluate_properties_for_edge): Same.
4192         * ipa-prop.cc (ipa_vr::get_vrange): Same.
4193         (ipcp_update_vr): Same.
4194         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
4195         (ipa_range_set_and_normalize): Same.
4197 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
4199         PR target/109650
4200         PR target/92729
4201         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
4202         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
4203         (avr_pass_data_ifelse): New pass_data for it.
4204         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
4205         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
4206         (avr_out_cmp_ext): New functions.
4207         (compare_condtition): Make sure REG_CC dies in the branch insn.
4208         (avr_rtx_costs_1): Add computation of cbranch costs.
4209         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
4210         [ADJUST_LEN_CMP_SEXT]Handle them.
4211         (TARGET_CANONICALIZE_COMPARISON): New define.
4212         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
4213         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
4214         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
4215         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
4216         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
4217         (avr_out_cmp_zext): New Protos
4218         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
4219         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
4220         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
4221         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
4222         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
4223         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
4224         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
4225         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
4226         (adjust_len) [add_set_ZN, cmp_zext]: New.
4227         (QIPSI): New mode iterator.
4228         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
4229         (gelt): New code iterator.
4230         (gelt_eqne): New code attribute.
4231         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
4232         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
4233         (*cmpqi_sign_extend): Remove insns.
4234         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
4235         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
4236         * config/avr/predicates.md (scratch_or_d_register_operand): New.
4237         * config/avr/constraints.md (Yxx): New constraint.
4239 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4241         * config/riscv/autovec.md (select_vl<mode>): New pattern.
4242         * config/riscv/riscv-protos.h (expand_select_vl): New function.
4243         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
4245 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4247         * range-op-float.cc (foperator_mult_div_base): Delete.
4248         (foperator_mult_div_base::find_range): Make static local function.
4249         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
4250         (operator_mult::op1_range): Rename from foperator_mult.
4251         (operator_mult::op2_range): Ditto.
4252         (operator_mult::rv_fold): Ditto.
4253         (float_table::float_table): Remove MULT_EXPR.
4254         (class foperator_div): Inherit from range_operator.
4255         (float_table::float_table): Delete.
4256         * range-op-mixed.h (class operator_mult): Combined from integer
4257         and float files.
4258         * range-op.cc (float_tree_table): Delete.
4259         (op_mult): New object.
4260         (unified_table::unified_table): Add MULT_EXPR.
4261         (get_op_handler): Do not check float table any longer.
4262         (class cross_product_operator): Move to range-op-mixed.h.
4263         (class operator_mult): Move to range-op-mixed.h.
4264         (integral_table::integral_table): Remove MULT_EXPR.
4265         (pointer_table::pointer_table): Remove MULT_EXPR.
4266         * range-op.h (float_table): Remove.
4268 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4270         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
4271         to range-op-mixed.h
4272         (operator_negate::fold_range): Rename from foperator_negate.
4273         (operator_negate::op1_range): Ditto.
4274         (float_table::float_table): Remove NEGATE_EXPR.
4275         * range-op-mixed.h (class operator_negate): Combined from integer
4276         and float files.
4277         * range-op.cc (op_negate): New object.
4278         (unified_table::unified_table): Add NEGATE_EXPR.
4279         (class operator_negate): Move to range-op-mixed.h.
4280         (integral_table::integral_table): Remove NEGATE_EXPR.
4281         (pointer_table::pointer_table): Remove NEGATE_EXPR.
4283 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4285         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
4286         to range-op-mixed.h
4287         (operator_minus::fold_range): Rename from foperator_minus.
4288         (operator_minus::op1_range): Ditto.
4289         (operator_minus::op2_range): Ditto.
4290         (operator_minus::rv_fold): Ditto.
4291         (float_table::float_table): Remove MINUS_EXPR.
4292         * range-op-mixed.h (class operator_minus): Combined from integer
4293         and float files.
4294         * range-op.cc (op_minus): New object.
4295         (unified_table::unified_table): Add MINUS_EXPR.
4296         (class operator_minus): Move to range-op-mixed.h.
4297         (integral_table::integral_table): Remove MINUS_EXPR.
4298         (pointer_table::pointer_table): Remove MINUS_EXPR.
4300 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4302         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
4303         to range-op-mixed.h
4304         (operator_abs::fold_range): Rename from foperator_abs.
4305         (operator_abs::op1_range): Ditto.
4306         (float_table::float_table): Remove ABS_EXPR.
4307         * range-op-mixed.h (class operator_abs): Combined from integer
4308         and float files.
4309         * range-op.cc (op_abs): New object.
4310         (unified_table::unified_table): Add ABS_EXPR.
4311         (class operator_abs): Move to range-op-mixed.h.
4312         (integral_table::integral_table): Remove ABS_EXPR.
4313         (pointer_table::pointer_table): Remove ABS_EXPR.
4315 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4317         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
4318         to range-op-mixed.h
4319         (operator_plus::fold_range): Rename from foperator_plus.
4320         (operator_plus::op1_range): Ditto.
4321         (operator_plus::op2_range): Ditto.
4322         (operator_plus::rv_fold): Ditto.
4323         (float_table::float_table): Remove PLUS_EXPR.
4324         * range-op-mixed.h (class operator_plus): Combined from integer
4325         and float files.
4326         * range-op.cc (op_plus): New object.
4327         (unified_table::unified_table): Add PLUS_EXPR.
4328         (class operator_plus): Move to range-op-mixed.h.
4329         (integral_table::integral_table): Remove PLUS_EXPR.
4330         (pointer_table::pointer_table): Remove PLUS_EXPR.
4332 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4334         * range-op-mixed.h (class operator_cast): Combined from integer
4335         and float files.
4336         * range-op.cc (op_cast): New object.
4337         (unified_table::unified_table): Add op_cast
4338         (class operator_cast): Move to range-op-mixed.h.
4339         (integral_table::integral_table): Remove op_cast
4340         (pointer_table::pointer_table): Remove op_cast.
4342 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4344         * range-op-float.cc (operator_cst::fold_range): New.
4345         * range-op-mixed.h (class operator_cst): Move from integer file.
4346         * range-op.cc (op_cst): New object.
4347         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
4348         (class operator_cst): Move to range-op-mixed.h.
4349         (integral_table::integral_table): Remove op_cst.
4350         (pointer_table::pointer_table): Remove op_cst.
4352 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4354         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
4355         to range-op-mixed.h
4356         (operator_identity::fold_range): Rename from foperator_identity.
4357         (operator_identity::op1_range): Ditto.
4358         (float_table::float_table): Remove fop_identity.
4359         * range-op-mixed.h (class operator_identity): Combined from integer
4360         and float files.
4361         * range-op.cc (op_identity): New object.
4362         (unified_table::unified_table): Add op_identity.
4363         (class operator_identity): Move to range-op-mixed.h.
4364         (integral_table::integral_table): Remove identity.
4365         (pointer_table::pointer_table): Remove identity.
4367 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4369         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
4370         to range-op-mixed.h
4371         (operator_ge::fold_range): Rename from foperator_ge.
4372         (operator_ge::op1_range): Ditto.
4373         (float_table::float_table): Remove GE_EXPR.
4374         * range-op-mixed.h (class operator_ge): Combined from integer
4375         and float files.
4376         * range-op.cc (op_ge): New object.
4377         (unified_table::unified_table): Add GE_EXPR.
4378         (class operator_ge): Move to range-op-mixed.h.
4379         (ge_op1_op2_relation): Fold into
4380         operator_ge::op1_op2_relation.
4381         (integral_table::integral_table): Remove GE_EXPR.
4382         (pointer_table::pointer_table): Remove GE_EXPR.
4383         * range-op.h (ge_op1_op2_relation): Delete.
4385 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4387         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
4388         to range-op-mixed.h
4389         (operator_gt::fold_range): Rename from foperator_gt.
4390         (operator_gt::op1_range): Ditto.
4391         (float_table::float_table): Remove GT_EXPR.
4392         * range-op-mixed.h (class operator_gt): Combined from integer
4393         and float files.
4394         * range-op.cc (op_gt): New object.
4395         (unified_table::unified_table): Add GT_EXPR.
4396         (class operator_gt): Move to range-op-mixed.h.
4397         (gt_op1_op2_relation): Fold into
4398         operator_gt::op1_op2_relation.
4399         (integral_table::integral_table): Remove GT_EXPR.
4400         (pointer_table::pointer_table): Remove GT_EXPR.
4401         * range-op.h (gt_op1_op2_relation): Delete.
4403 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4405         * range-op-float.cc (foperator_le): Remove.  Move prototypes
4406         to range-op-mixed.h
4407         (operator_le::fold_range): Rename from foperator_le.
4408         (operator_le::op1_range): Ditto.
4409         (float_table::float_table): Remove LE_EXPR.
4410         * range-op-mixed.h (class operator_le): Combined from integer
4411         and float files.
4412         * range-op.cc (op_le): New object.
4413         (unified_table::unified_table): Add LE_EXPR.
4414         (class operator_le): Move to range-op-mixed.h.
4415         (le_op1_op2_relation): Fold into
4416         operator_le::op1_op2_relation.
4417         (integral_table::integral_table): Remove LE_EXPR.
4418         (pointer_table::pointer_table): Remove LE_EXPR.
4419         * range-op.h (le_op1_op2_relation): Delete.
4421 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4423         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
4424         to range-op-mixed.h
4425         (operator_lt::fold_range): Rename from foperator_lt.
4426         (operator_lt::op1_range): Ditto.
4427         (float_table::float_table): Remove LT_EXPR.
4428         * range-op-mixed.h (class operator_lt): Combined from integer
4429         and float files.
4430         * range-op.cc (op_lt): New object.
4431         (unified_table::unified_table): Add LT_EXPR.
4432         (class operator_lt): Move to range-op-mixed.h.
4433         (lt_op1_op2_relation): Fold into
4434         operator_lt::op1_op2_relation.
4435         (integral_table::integral_table): Remove LT_EXPR.
4436         (pointer_table::pointer_table): Remove LT_EXPR.
4437         * range-op.h (lt_op1_op2_relation): Delete.
4439 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4441         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
4442         to range-op-mixed.h
4443         (operator_equal::fold_range): Rename from foperator_not_equal.
4444         (operator_equal::op1_range): Ditto.
4445         (float_table::float_table): Remove NE_EXPR.
4446         * range-op-mixed.h (class operator_not_equal): Combined from integer
4447         and float files.
4448         * range-op.cc (op_equal): New object.
4449         (unified_table::unified_table): Add NE_EXPR.
4450         (class operator_not_equal): Move to range-op-mixed.h.
4451         (not_equal_op1_op2_relation): Fold into
4452         operator_not_equal::op1_op2_relation.
4453         (integral_table::integral_table): Remove NE_EXPR.
4454         (pointer_table::pointer_table): Remove NE_EXPR.
4455         * range-op.h (not_equal_op1_op2_relation): Delete.
4457 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4459         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
4460         to range-op-mixed.h
4461         (operator_equal::fold_range): Rename from foperator_equal.
4462         (operator_equal::op1_range): Ditto.
4463         (float_table::float_table): Remove EQ_EXPR.
4464         * range-op-mixed.h (class operator_equal): Combined from integer
4465         and float files.
4466         * range-op.cc (op_equal): New object.
4467         (unified_table::unified_table): Add EQ_EXPR.
4468         (class operator_equal): Move to range-op-mixed.h.
4469         (equal_op1_op2_relation): Fold into
4470         operator_equal::op1_op2_relation.
4471         (integral_table::integral_table): Remove EQ_EXPR.
4472         (pointer_table::pointer_table): Remove EQ_EXPR.
4473         * range-op.h (equal_op1_op2_relation): Delete.
4475 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
4477         * range-op-float.cc (class float_table): Move to header.
4478         (float_table::float_table): Move float only operators to...
4479         (range_op_table::initialize_float_ops): Here.
4480         * range-op-mixed.h: New.
4481         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
4482         to top of file.
4483         (float_tree_table): Moved from range-op-float.cc.
4484         (unified_tree_table): New.
4485         (unified_table::unified_table): New.  Call initialize routines.
4486         (get_op_handler): Check unified table first.
4487         (range_op_handler::range_op_handler): Handle no type constructor.
4488         (integral_table::integral_table): Move integral only operators to...
4489         (range_op_table::initialize_integral_ops): Here.
4490         (pointer_table::pointer_table): Move pointer only operators to...
4491         (range_op_table::initialize_pointer_ops): Here.
4492         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
4493         (get_bool_state): Ditto.
4494         (empty_range_varying): Ditto.
4495         (relop_early_resolve): Ditto.
4496         (class range_op_table): Add new init methods for range types.
4497         (class integral_table): Move declaration to here.
4498         (class pointer_table): Move declaration to here.
4499         (class float_table): Move declaration to here.
4501 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
4502             Richard Sandiford <richard.sandiford@arm.com>
4503             Richard Biener  <rguenther@suse.de>
4505         * doc/md.texi: Add SELECT_VL support.
4506         * internal-fn.def (SELECT_VL): Ditto.
4507         * optabs.def (OPTAB_D): Ditto.
4508         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
4509         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
4510         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
4511         (vectorizable_store): Ditto.
4512         (vectorizable_load): Ditto.
4513         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
4515 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
4517         PR ipa/109886
4518         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
4519         type as well.
4521 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
4523         * range-op.cc (range_cast): Move to...
4524         * range-op.h (range_cast): Here and add generic a version.
4526 2023-06-09  Marek Polacek  <polacek@redhat.com>
4528         PR c/39589
4529         PR c++/96868
4530         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
4531         warn about designated initializers in C only.
4533 2023-06-09  Andrew Pinski  <apinski@marvell.com>
4535         PR tree-optimization/97711
4536         PR tree-optimization/110155
4537         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
4538         ((zero_one != 0) ? z <op> y : y): Likewise.
4540 2023-06-09  Andrew Pinski  <apinski@marvell.com>
4542         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
4543         multiply rather than negation/bit_and.
4545 2023-06-09  Andrew Pinski  <apinski@marvell.com>
4547         * match.pd (`X & -Y -> X * Y`): Allow for truncation
4548         and the same type for unsigned types.
4550 2023-06-09  Andrew Pinski  <apinski@marvell.com>
4552         PR tree-optimization/110165
4553         PR tree-optimization/110166
4554         * match.pd (zero_one_valued_p): Don't accept
4555         signed 1-bit integers.
4557 2023-06-09  Richard Biener  <rguenther@suse.de>
4559         * match.pd (two conversions in a row): Use element_precision
4560         to DTRT for VECTOR_TYPE.
4562 2023-06-09  Pan Li  <pan2.li@intel.com>
4564         * config/riscv/riscv.md (enabled): Move to another place, and
4565         add fp_vector_disabled to the cond.
4566         (fp_vector_disabled): New attr defined for disabling fp.
4567         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
4569 2023-06-09  Pan Li  <pan2.li@intel.com>
4571         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
4572         literal to int.
4574 2023-06-09  liuhongt  <hongtao.liu@intel.com>
4576         PR target/110108
4577         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
4578         view_convert_expr mask to signed type when folding pblendvb
4579         builtins.
4581 2023-06-09  liuhongt  <hongtao.liu@intel.com>
4583         PR target/110108
4584         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
4585         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
4586         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
4587         TARGET_64BIT.
4588         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
4589         real codename for __builtin_ia32_pabs{b,w,d}.
4591 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
4593         * gimple-range-op.cc
4594         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
4595         (gimple_range_op_handler::maybe_builtin_call): Adjust.
4596         * gimple-range-op.h (operand1, operand2): Use m_operator.
4597         * range-op.cc (integral_table, pointer_table): Relocate.
4598         (get_op_handler): Rename from get_handler and handle all types.
4599         (range_op_handler::range_op_handler): Relocate.
4600         (range_op_handler::set_op_handler): Relocate and adjust.
4601         (range_op_handler::range_op_handler): Relocate.
4602         (dispatch_trio): New.
4603         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
4604         (range_op_handler::dispatch_kind): New.
4605         (range_op_handler::fold_range): Relocate and Use new dispatch value.
4606         (range_op_handler::op1_range): Ditto.
4607         (range_op_handler::op2_range): Ditto.
4608         (range_op_handler::lhs_op1_relation): Ditto.
4609         (range_op_handler::lhs_op2_relation): Ditto.
4610         (range_op_handler::op1_op2_relation): Ditto.
4611         (range_op_handler::set_op_handler): Use m_operator member.
4612         * range-op.h (range_op_handler::operator bool): Use m_operator.
4613         (range_op_handler::dispatch_kind): New.
4614         (range_op_handler::m_valid): Delete.
4615         (range_op_handler::m_int): Delete
4616         (range_op_handler::m_float): Delete
4617         (range_op_handler::m_operator): New.
4618         (range_op_table::operator[]): Relocate from .cc file.
4619         (range_op_table::set): Ditto.
4620         * value-range.h (class vrange): Make range_op_handler a friend.
4622 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
4624         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
4625         (cfn_pass_through_arg1): Adjust using statemenmt.
4626         (cfn_signbit): Change base class, adjust using statement.
4627         (cfn_copysign): Ditto.
4628         (cfn_sqrt): Ditto.
4629         (cfn_sincos): Ditto.
4630         * range-op-float.cc (fold_range): Change class to range_operator.
4631         (rv_fold): Ditto.
4632         (op1_range): Ditto
4633         (op2_range): Ditto
4634         (lhs_op1_relation): Ditto.
4635         (lhs_op2_relation): Ditto.
4636         (op1_op2_relation): Ditto.
4637         (foperator_*): Ditto.
4638         (class float_table): New.  Inherit from range_op_table.
4639         (floating_tree_table) Change to range_op_table pointer.
4640         (class floating_op_table): Delete.
4641         * range-op.cc (operator_equal): Adjust using statement.
4642         (operator_not_equal): Ditto.
4643         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
4644         (operator_minus, operator_cast): Ditto.
4645         (operator_bitwise_and, pointer_plus_operator): Ditto.
4646         (get_float_handle): Change return type.
4647         * range-op.h (range_operator_float): Delete.  Relocate all methods
4648         into class range_operator.
4649         (range_op_handler::m_float): Change type to range_operator.
4650         (floating_op_table): Delete.
4651         (floating_tree_table): Change type.
4653 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
4655         * range-op.cc (range_operator::fold_range): Call virtual routine.
4656         (range_operator::update_bitmask): New.
4657         (operator_equal::update_bitmask): New.
4658         (operator_not_equal::update_bitmask): New.
4659         (operator_lt::update_bitmask): New.
4660         (operator_le::update_bitmask): New.
4661         (operator_gt::update_bitmask): New.
4662         (operator_ge::update_bitmask): New.
4663         (operator_ge::update_bitmask): New.
4664         (operator_plus::update_bitmask): New.
4665         (operator_minus::update_bitmask): New.
4666         (operator_pointer_diff::update_bitmask): New.
4667         (operator_min::update_bitmask): New.
4668         (operator_max::update_bitmask): New.
4669         (operator_mult::update_bitmask): New.
4670         (operator_div:operator_div):New.
4671         (operator_div::update_bitmask): New.
4672         (operator_div::m_code): New member.
4673         (operator_exact_divide::operator_exact_divide): New constructor.
4674         (operator_lshift::update_bitmask): New.
4675         (operator_rshift::update_bitmask): New.
4676         (operator_bitwise_and::update_bitmask): New.
4677         (operator_bitwise_or::update_bitmask): New.
4678         (operator_bitwise_xor::update_bitmask): New.
4679         (operator_trunc_mod::update_bitmask): New.
4680         (op_ident, op_unknown, op_ptr_min_max): New.
4681         (op_nop, op_convert): Delete.
4682         (op_ssa, op_paren, op_obj_type): Delete.
4683         (op_realpart, op_imagpart): Delete.
4684         (op_ptr_min, op_ptr_max): Delete.
4685         (pointer_plus_operator:update_bitmask): New.
4686         (range_op_table::set): Do not use m_code.
4687         (integral_table::integral_table): Adjust to single instances.
4688         * range-op.h (range_operator::range_operator): Delete.
4689         (range_operator::m_code): Delete.
4690         (range_operator::update_bitmask): New.
4692 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
4694         * range-op-float.cc (range_operator_float::fold_range): Return
4695         NAN of the result type.
4697 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
4699         * optabs.cc (expand_ffs): Add forward declaration.
4700         (expand_doubleword_clz): Rename to ...
4701         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
4702         handle also doubleword CTZ and FFS in addition to CLZ.
4703         (expand_unop): Adjust caller.  Also call it for doubleword
4704         ctz_optab and ffs_optab.
4706 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
4708         PR target/110152
4709         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
4710         n_words == 2 recurse with mmx_ok as first argument rather than false.
4712 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
4714         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
4715         avoid sign extension/undefined behaviour when setting each bit.
4717 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
4718             Uros Bizjak  <ubizjak@gmail.com>
4720         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
4721         Use new x86_stc instruction when the carry flag must be set.
4722         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
4723         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
4724         * config/i386/i386.h (TARGET_SLOW_STC): New define.
4725         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
4726         (x86_stc): New define_insn.
4727         (define_peephole2): Convert x86_stc into alternate implementation
4728         on pentium4 without -Os when a QImode register is available.
4729         (*x86_cmc): New define_insn.
4730         (define_peephole2): Convert *x86_cmc into alternate implementation
4731         on pentium4 without -Os when a QImode register is available.
4732         (*setccc): New define_insn_and_split for a no-op CCCmode move.
4733         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
4734         recognize (and eliminate) the carry flag being copied to itself.
4735         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
4736         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
4738 2023-06-07  Andrew Pinski  <apinski@marvell.com>
4740         * match.pd: Fix comment for the
4741         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
4743 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
4744             Jeff Law   <jlaw@ventanamicro.com>
4746         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
4747         (rotrsi3_sext): Expose generator.
4748         (rotlsi3 pattern): Hide generator.
4749         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
4750         declaration.
4751         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
4752         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
4753         (mulsi3, <optab>si3): Likewise.
4754         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
4755         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
4756         (<u>mulsidi3): Likewise.
4757         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
4758         (mulsi3_extended, <optab>si3_extended): Likewise.
4759         (splitter for shadd feeding divison): Update RTL pattern to account
4760         for changes in how 32 bit ops are expanded for TARGET_64BIT.
4761         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
4763 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
4765         PR target/109725
4766         * config/riscv/riscv.cc (riscv_print_operand): Calculate
4767         memmodel only when it is valid.
4769 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
4771         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
4772         for constant element of a vector.
4774 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
4776         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
4777         instead compare tree_nonzero_bits <= 1U rather than just == 1.
4779 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
4781         PR target/110132
4782         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
4783         New. Use it ...
4784         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
4785         names for builtins.
4786         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
4787         setup if in_lto_p, just like we do for SVE.
4788         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
4789         (__arm_st64b): Delete.
4790         (__arm_st64bv): Delete.
4791         (__arm_st64bv0): Delete.
4793 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
4795         PR target/110100
4796         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
4797         Use input operand for the destination address.
4798         * config/aarch64/aarch64.md (st64b): Fix constraint on address
4799         operand.
4801 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
4803         PR target/110100
4804         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
4805         Replace eight consecutive spaces with tabs.
4806         (aarch64_init_ls64_builtins): Likewise.
4807         (aarch64_expand_builtin_ls64): Likewise.
4808         * config/aarch64/aarch64.md (ld64b): Likewise.
4809         (st64b): Likewise.
4810         (st64bv): Likewise
4811         (st64bv0): Likewise.
4813 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
4815         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
4816         offset table pseudo to a general reg subset.
4818 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4820         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
4821         Rename to...
4822         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
4823         with RTL codes.
4824         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
4825         (aarch64_sqxtun2<mode>_le): Likewise.
4826         (aarch64_sqxtun2<mode>_be): Likewise.
4827         (aarch64_sqxtun2<mode>): Adjust for the above.
4828         (aarch64_sqmovun<mode>): New define_expand.
4829         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
4830         (half_mask): New mode attribute.
4831         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
4832         New predicate.
4834 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4836         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
4837         Reimplement as...
4838         (aarch64_addp<mode>_insn): ... This...
4839         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
4840         (aarch64_addp<mode>): New define_expand.
4842 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4844         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
4845         * config/riscv/riscv-v.cc
4846         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
4847         handling.
4848         (rvv_builder::single_step_npatterns_p): New function.
4849         (rvv_builder::npatterns_all_equal_p): Ditto.
4850         (const_vec_all_in_range_p): Support POLY handling.
4851         (gen_const_vector_dup): Ditto.
4852         (emit_vlmax_gather_insn): Add vrgatherei16.
4853         (emit_vlmax_masked_gather_mu_insn): Ditto.
4854         (expand_const_vector): Add VLA SLP const vector support.
4855         (expand_vec_perm): Support POLY.
4856         (struct expand_vec_perm_d): New struct.
4857         (shuffle_generic_patterns): New function.
4858         (expand_vec_perm_const_1): Ditto.
4859         (expand_vec_perm_const): Ditto.
4860         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
4861         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
4863 2023-06-07  Andrew Pinski  <apinski@marvell.com>
4865         PR middle-end/110117
4866         * expr.cc (expand_single_bit_test): Handle
4867         const_int from expand_expr.
4869 2023-06-07  Andrew Pinski  <apinski@marvell.com>
4871         * expr.cc (do_store_flag): Rearrange the
4872         TER code so that it overrides the nonzero bits
4873         info if we had `a & POW2`.
4875 2023-06-07  Andrew Pinski  <apinski@marvell.com>
4877         PR tree-optimization/110134
4878         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
4879         types.
4880         (-A CMP CST -> B CMP (-CST)): Likewise.
4882 2023-06-07  Andrew Pinski  <apinski@marvell.com>
4884         PR tree-optimization/89263
4885         PR tree-optimization/99069
4886         PR tree-optimization/20083
4887         PR tree-optimization/94898
4888         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
4889         one of the operands are constant.
4891 2023-06-07  Andrew Pinski  <apinski@marvell.com>
4893         * match.pd (zero_one_valued_p): Match 0 integer constant
4894         too.
4896 2023-06-07  Pan Li  <pan2.li@intel.com>
4898         * config/riscv/riscv-vector-builtins-types.def
4899         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
4900         (vfloat32m1_t): Ditto.
4901         (vfloat32m2_t): Ditto.
4902         (vfloat32m4_t): Ditto.
4903         (vfloat32m8_t): Ditto.
4904         (vint16mf4_t): Ditto.
4905         (vint16mf2_t): Ditto.
4906         (vint16m1_t): Ditto.
4907         (vint16m2_t): Ditto.
4908         (vint16m4_t): Ditto.
4909         (vint16m8_t): Ditto.
4910         (vuint16mf4_t): Ditto.
4911         (vuint16mf2_t): Ditto.
4912         (vuint16m1_t): Ditto.
4913         (vuint16m2_t): Ditto.
4914         (vuint16m4_t): Ditto.
4915         (vuint16m8_t): Ditto.
4916         (vint32mf2_t): Ditto.
4917         (vint32m1_t): Ditto.
4918         (vint32m2_t): Ditto.
4919         (vint32m4_t): Ditto.
4920         (vint32m8_t): Ditto.
4921         (vuint32mf2_t): Ditto.
4922         (vuint32m1_t): Ditto.
4923         (vuint32m2_t): Ditto.
4924         (vuint32m4_t): Ditto.
4925         (vuint32m8_t): Ditto.
4927 2023-06-07  Jason Merrill  <jason@redhat.com>
4929         PR c++/58487
4930         * doc/invoke.texi: Document it.
4932 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
4934         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
4935         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
4936         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
4937         NOT (BITREVERSE x) as BITREVERSE (NOT x).
4938         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
4939         Optimize PARITY (BITREVERSE x) as PARITY x.
4940         Optimize BITREVERSE (BITREVERSE x) as x.
4941         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
4942         BITREVERSE of a constant integer at compile-time.
4943         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
4944         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
4945         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
4946         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
4947         Optimize COPYSIGN (x, ABS y) as ABS x.
4948         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
4949         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
4950         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
4951         arguments at compile-time.
4953 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
4955         * rtl.h (function_invariant_p): Change return type from int to bool.
4956         * reload1.cc (function_invariant_p): Change return type from
4957         int to bool and adjust function body accordingly.
4959 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4961         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
4962         (*single_<optab>mult_plus<mode>): Ditto.
4963         (*double_<optab>mult_plus<mode>): Ditto.
4964         (*sign_zero_extend_fma): Ditto.
4965         (*zero_sign_extend_fma): Ditto.
4966         * config/riscv/riscv-protos.h (enum insn_type): New enum.
4968 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
4969             Tobias Burnus  <tobias@codesourcery.com>
4971         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
4972         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
4973         set.
4974         (omp_get_attachment): Handle map clauses with 'present' modifier.
4975         (omp_group_base): Likewise.
4976         (gimplify_scan_omp_clauses): Reorder present maps to come first.
4977         Set GOVD flags for present defaultmaps.
4978         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
4979         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
4980         clauses.
4981         (lower_omp_target): Handle map clauses with 'present' modifier.
4982         Handle 'to' and 'from' clauses with 'present'.
4983         * tree-core.h (enum omp_clause_defaultmap_kind): Add
4984         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
4985         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
4986         'from' clauses with 'present' modifier.  Handle present defaultmap.
4987         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
4989 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
4991         * config/rs6000/genfusion.pl: Delete some dead code.
4993 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
4995         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
4996         split out from...
4997         (gen_ld_cmpi_p10): ... this.
4999 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
5001         PR target/106907
5002         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
5003         duplicate expression.
5005 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5007         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
5008         Handle unsigned reduc_plus_scal_ builtins.
5009         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
5010         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
5011         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
5012         __builtin_aarch64_reduc_plus_scal_v2di.
5013         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
5015 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5017         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
5018         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
5019         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
5021 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5023         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
5024         (aarch64_shrn<mode>_insn_be): Delete.
5025         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
5026         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
5027         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
5028         (aarch64_rshrn<mode>_insn_le): Delete.
5029         (aarch64_rshrn<mode>_insn_be): Delete.
5030         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
5031         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
5033 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5035         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
5036         Define prototype.
5037         (aarch64_pars_overlap_p): Likewise.
5038         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
5039         Express in terms of UNSPEC_ADDV.
5040         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
5041         (*aarch64_<su>addlv<mode>_reduction): Define.
5042         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
5043         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
5044         (aarch64_pars_overlap_p): Likewise.
5045         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
5046         (VQUADW): New mode attribute.
5047         (VWIDE2X_S): Likewise.
5048         (USADDLV): Delete.
5049         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
5050         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
5052 2023-06-06  Richard Biener  <rguenther@suse.de>
5054         PR middle-end/110055
5055         * gimplify.cc (gimplify_target_expr): Do not emit
5056         CLOBBERs for variables which have static storage duration
5057         after gimplifying their initializers.
5059 2023-06-06  Richard Biener  <rguenther@suse.de>
5061         PR tree-optimization/109143
5062         * tree-ssa-structalias.cc (solution_set_expand): Avoid
5063         one bitmap iteration and optimize bit range setting.
5065 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
5067         PR bootstrap/110120
5068         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
5069         XVECEXP, not XEXP, to access first item of a PARALLEL.
5071 2023-06-06  Pan Li  <pan2.li@intel.com>
5073         * config/riscv/riscv-vector-builtins-types.def
5074         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
5075         (vfloat16mf2_t): Likewise.
5076         (vfloat16m1_t): Likewise.
5077         (vfloat16m2_t): Likewise.
5078         (vfloat16m4_t): Likewise.
5079         (vfloat16m8_t): Likewise.
5080         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
5081         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
5083 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
5085         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
5086         for cfi reg/mem machmode
5087         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
5089 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
5091         * config/riscv/vector-iterators.md:
5092         Fix 'REQUIREMENT' for machine_mode 'MODE'.
5093         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
5094         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
5095         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
5097 2023-06-06  Pan Li  <pan2.li@intel.com>
5099         * config/riscv/vector-iterators.md: Fix typo in mode attr.
5101 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
5102             Joel Hutton  <joel.hutton@arm.com>
5104         * doc/generic.texi: Remove old tree codes.
5105         * expr.cc (expand_expr_real_2): Remove old tree code cases.
5106         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
5107         * optabs-tree.cc (optab_for_tree_code): Likewise.
5108         (supportable_half_widening_operation): Likewise.
5109         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
5110         * tree-inline.cc (estimate_operator_cost): Likewise.
5111         (op_symbol_code): Likewise.
5112         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
5113         (vect_analyze_data_ref_accesses): Likewise.
5114         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
5115         * cfgexpand.cc (expand_debug_expr): Likewise.
5116         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
5117         (supportable_widening_operation): Likewise.
5118         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
5119         Likewise.
5120         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
5121         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
5122         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
5123         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
5124         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
5125         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
5126         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
5127         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
5129 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
5130             Joel Hutton  <joel.hutton@arm.com>
5131             Tamar Christina  <tamar.christina@arm.com>
5133         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
5134         this ...
5135         (vec_widen_<su>add_lo_<mode>): ... to this.
5136         (vec_widen_<su>addl_hi_<mode>): Rename this ...
5137         (vec_widen_<su>add_hi_<mode>): ... to this.
5138         (vec_widen_<su>subl_lo_<mode>): Rename this ...
5139         (vec_widen_<su>sub_lo_<mode>): ... to this.
5140         (vec_widen_<su>subl_hi_<mode>): Rename this ...
5141         (vec_widen_<su>sub_hi_<mode>): ...to this.
5142         * doc/generic.texi: Document new IFN codes.
5143         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
5144         (commutative_binary_fn_p): Add widen_plus fn's.
5145         (widening_fn_p): New function.
5146         (narrowing_fn_p): New function.
5147         (direct_internal_fn_optab): Change visibility.
5148         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
5149         internal_fn that expands into multiple internal_fns for widening.
5150         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
5151         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
5152         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
5153         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
5154         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
5155         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
5156         (lookup_hilo_internal_fn): Likewise.
5157         (widening_fn_p): Likewise.
5158         (Narrowing_fn_p): Likewise.
5159         * optabs.cc (commutative_optab_p): Add widening plus optabs.
5160         * optabs.def (OPTAB_D): Define widen add, sub optabs.
5161         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
5162         patterns with a hi/lo or even/odd split.
5163         (vect_recog_sad_pattern): Refactor to use new IFN codes.
5164         (vect_recog_widen_plus_pattern): Likewise.
5165         (vect_recog_widen_minus_pattern): Likewise.
5166         (vect_recog_average_pattern): Likewise.
5167         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
5168         _HILO IFNs.
5169         (supportable_widening_operation): Likewise.
5170         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
5172 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
5173             Joel Hutton  <joel.hutton@arm.com>
5175         * tree-vect-patterns.cc: Add include for gimple-iterator.
5176         (vect_recog_widen_op_pattern): Refactor to use code_helper.
5177         (vect_gimple_build): New function.
5178         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
5179         code_helper.
5180         (vectorizable_call): Likewise.
5181         (vect_gen_widened_results_half): Likewise.
5182         (vect_create_vectorized_demotion_stmts): Likewise.
5183         (vect_create_vectorized_promotion_stmts): Likewise.
5184         (vect_create_half_widening_stmts): Likewise.
5185         (vectorizable_conversion): Likewise.
5186         (supportable_widening_operation): Likewise.
5187         (supportable_narrowing_operation): Likewise.
5188         * tree-vectorizer.h (supportable_widening_operation): Change
5189         prototype to use code_helper.
5190         (supportable_narrowing_operation): Likewise.
5191         (vect_gimple_build): New function prototype.
5192         * tree.h (code_helper::safe_as_tree_code): New function.
5193         (code_helper::safe_as_fn_code): New function.
5195 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
5197         * wide-int.cc (wi::bitreverse_large): New function implementing
5198         bit reversal of an integer.
5199         * wide-int.h (wi::bitreverse): New (template) function prototype.
5200         (bitreverse_large): Prototype helper function/implementation.
5201         (wi::bitreverse): New template wrapper around bitreverse_large.
5203 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
5205         * rtl.h (print_rtl_single): Change return type from int to void.
5206         (print_rtl_single_with_indent): Ditto.
5207         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
5208         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
5209         (rtx_writer::print_rtx_operand_code_0): Ditto.
5210         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
5211         (rtx_writer::print_rtx_operand_code_i): Ditto.
5212         (rtx_writer::print_rtx_operand_code_u): Ditto.
5213         (rtx_writer::print_rtx_operand): Ditto.
5214         (rtx_writer::print_rtx): Ditto.
5215         (rtx_writer::finish_directive): Ditto.
5216         (print_rtl_single): Change return type from int to void
5217         and adjust function body accordingly.
5218         (rtx_writer::print_rtl_single_with_indent): Ditto.
5220 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
5222         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
5223         (reg_class_subset_p): Ditto.
5224         * reginfo.cc (reg_classes_intersect_p): Ditto.
5225         (reg_class_subset_p): Ditto.
5227 2023-06-05  Pan Li  <pan2.li@intel.com>
5229         * config/riscv/riscv-vector-builtins-types.def
5230         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
5231         (vfloat32m1_t): Ditto.
5232         (vfloat32m2_t): Ditto.
5233         (vfloat32m4_t): Ditto.
5234         (vfloat32m8_t): Ditto.
5235         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
5236         (vint16mf2_t): Ditto.
5237         (vint16m1_t): Ditto.
5238         (vint16m2_t): Ditto.
5239         (vint16m4_t): Ditto.
5240         (vint16m8_t): Ditto.
5241         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
5242         (vuint16mf2_t): Ditto.
5243         (vuint16m1_t): Ditto.
5244         (vuint16m2_t): Ditto.
5245         (vuint16m4_t): Ditto.
5246         (vuint16m8_t): Ditto.
5247         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
5248         (vint32m1_t): Ditto.
5249         (vint32m2_t): Ditto.
5250         (vint32m4_t): Ditto.
5251         (vint32m8_t): Ditto.
5252         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
5253         (vuint32m1_t): Ditto.
5254         (vuint32m2_t): Ditto.
5255         (vuint32m4_t): Ditto.
5256         (vuint32m8_t): Ditto.
5257         * config/riscv/vector-iterators.md: Add FP=16 support for V,
5258         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
5260 2023-06-05  Andrew Pinski  <apinski@marvell.com>
5262         PR bootstrap/110085
5263         * Makefile.in (clean): Remove the removing of
5264         MULTILIB_DIR/MULTILIB_OPTIONS directories.
5266 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
5268         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
5269         prototype.
5270         * config/mips/mips.cc (speculation_barrier_libfunc): New static
5271         variable.
5272         (mips_init_libfuncs): Initialize it.
5273         (mips_emit_speculation_barrier): New function.
5274         * config/mips/mips.md (speculation_barrier): Call
5275         mips_emit_speculation_barrier.
5277 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5279         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
5280         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
5281         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
5282         (rvv_builder::get_merged_repeating_sequence): Ditto.
5283         (rvv_builder::get_merge_scalar_mask): Ditto.
5284         (emit_scalar_move_insn): Ditto.
5285         (emit_vlmax_integer_move_insn): Ditto.
5286         (emit_nonvlmax_integer_move_insn): Ditto.
5287         (emit_vlmax_gather_insn): Ditto.
5288         (emit_vlmax_masked_gather_mu_insn): Ditto.
5289         (get_repeating_sequence_dup_machine_mode): Ditto.
5291 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5293         * config/riscv/autovec.md: Split arguments.
5294         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
5295         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
5297 2023-06-04  Andrew Pinski  <apinski@marvell.com>
5299         * expr.cc (do_store_flag): Improve for single bit testing
5300         not against zero but against that single bit.
5302 2023-06-04  Andrew Pinski  <apinski@marvell.com>
5304         * expr.cc (do_store_flag): Extend the one bit checking case
5305         to handle the case where we don't have an and but rather still
5306         one bit is known to be non-zero.
5308 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
5310         * config/h8300/constraints.md (Zz): Make this a normal
5311         constraint.
5312         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
5313         * config/h8300/logical.md (H8/SX bit patterns): Remove.
5315 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
5317         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
5318         New insn_and_split patterns.
5320 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5322         PR target/110109
5323         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
5324         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
5325         (@vlmul_extx4<mode>): Ditto.
5326         (@vlmul_extx8<mode>): Ditto.
5327         (@vlmul_extx16<mode>): Ditto.
5328         (@vlmul_extx32<mode>): Ditto.
5329         (@vlmul_extx64<mode>): Ditto.
5330         (*vlmul_extx2<mode>): Ditto.
5331         (*vlmul_extx4<mode>): Ditto.
5332         (*vlmul_extx8<mode>): Ditto.
5333         (*vlmul_extx16<mode>): Ditto.
5334         (*vlmul_extx32<mode>): Ditto.
5335         (*vlmul_extx64<mode>): Ditto.
5337 2023-06-04  Pan Li  <pan2.li@intel.com>
5339         * config/riscv/riscv-vector-builtins-types.def
5340         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
5341         (vfloat32m1_t): Likewise.
5342         (vfloat32m2_t): Likewise.
5343         (vfloat32m4_t): Likewise.
5344         (vfloat32m8_t): Likewise.
5345         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
5346         * config/riscv/vector-iterators.md: Add single to half machine
5347         mode conversion.
5349 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5351         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
5352         (*n<optab><mode>): Ditto.
5353         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
5354         (*n<optab><mode>): Ditto.
5355         * config/riscv/vector.md: Ditto.
5357 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
5359         PR target/110083
5360         * config/i386/i386-features.cc (scalar_chain::convert_compare):
5361         Update or delete REG_EQUAL notes, converting CONST_INT and
5362         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
5364 2023-06-04  Jason Merrill  <jason@redhat.com>
5366         PR c++/97720
5367         * tree-eh.cc (lower_resx): Pass the exception pointer to the
5368         failure_decl.
5369         * except.h: Tweak comment.
5371 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
5373         * postreload.cc (move2add_use_add2_insn): Handle
5374         trivial single_sets.  Rename variable PAT to SET.
5375         (move2add_use_add3_insn, reload_cse_move2add): Similar.
5377 2023-06-04  Pan Li  <pan2.li@intel.com>
5379         * config/riscv/riscv-vector-builtins-types.def
5380         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
5381         (vfloat16mf2_t): Likewise.
5382         (vfloat16m1_t): Likewise.
5383         (vfloat16m2_t): Likewise.
5384         (vfloat16m4_t): Likewise.
5385         (vfloat16m8_t): Likewise.
5386         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
5387         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
5388         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
5389         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
5390         vlmul and ratio.
5392 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
5394         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
5395         correct offset.
5397 2023-06-03  Die Li  <lidie@eswincomputing.com>
5399         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
5401 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5403         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
5405 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5407         * config/riscv/vector.md: Add vector-opt.md.
5408         * config/riscv/autovec-opt.md: New file.
5410 2023-06-03  liuhongt  <hongtao.liu@intel.com>
5412         PR tree-optimization/110067
5413         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
5414         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
5416 2023-06-03  liuhongt  <hongtao.liu@intel.com>
5418         PR target/92658
5419         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
5420         (truncv2si<mode>2): Ditto.
5422 2023-06-02  Andrew Pinski  <apinski@marvell.com>
5424         PR rtl-optimization/102733
5425         * dse.cc (store_info): Add addrspace field.
5426         (record_store): Record the address space
5427         and check to make sure they are the same.
5429 2023-06-02  Andrew Pinski  <apinski@marvell.com>
5431         PR rtl-optimization/110042
5432         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
5433         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
5435 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
5437         PR target/110044
5438         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
5439         Make sure that we do not have a cap on field alignment before altering
5440         the struct layout based on the type alignment of the first entry.
5442 2023-06-02  David Faust  <david.faust@oracle.com>
5444         PR debug/110073
5445         * btfout.cc (btf_absolute_func_id): New function.
5446         (btf_asm_func_type): Call it here.  Change index parameter from
5447         size_t to ctf_id_t.  Use PRIu64 formatter.
5449 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
5451         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
5452         (btf_asm_datasec_type): Likewise.
5454 2023-06-02  Carl Love  <cel@us.ibm.com>
5456         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
5457         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
5459 2023-06-02  Jason Merrill  <jason@redhat.com>
5461         PR c++/110070
5462         PR c++/105838
5463         * tree.h (DECL_MERGEABLE): New.
5464         * tree-core.h (struct tree_decl_common): Mention it.
5465         * gimplify.cc (gimplify_init_constructor): Check it.
5466         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
5467         * varasm.cc (categorize_decl_for_section): Likewise.
5469 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
5471         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
5472         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
5473         (stack_regs_mentioned_p): Change return type from int to bool
5474         and adjust function body accordingly.
5475         (stack_regs_mentioned): Ditto.
5476         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
5477         variable to bool.
5478         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
5479         (swap_rtx_condition_1): Change return type from int to bool
5480         and adjust function body accordingly.  Change "r" variable to bool.
5481         (swap_rtx_condition): Change return type from int to bool
5482         and adjust function body accordingly.
5483         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
5484         (subst_stack_regs): Ditto.
5485         (convert_regs_entry): Change return type from int to bool and adjust
5486         function body accordingly.  Change "inserted" variable to bool.
5487         (convert_regs_1): Recode handling of control_flow_insn_deleted.
5488         (convert_regs_2): Recode handling of cfg_altered.
5489         (convert_regs): Ditto.  Change "inserted" variable to bool.
5491 2023-06-02  Jason Merrill  <jason@redhat.com>
5493         PR c++/95226
5494         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
5495         (initializer_constant_valid_p_1): Compare float precision.
5497 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
5499         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
5500         semantics.
5502 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
5504         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
5505         (vect_set_loop_condition_partial_vectors): Ditto.
5507 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
5509         PR target/110088
5510         * config/avr/avr.md: Add an RTL peephole to optimize operations on
5511         non-LD_REGS after a move from LD_REGS.
5512         (piaop): New code iterator.
5514 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
5516         PR testsuite/66005
5517         * doc/install.texi: Document (optional) Perl usage for parallel
5518         testing of libgomp.
5520 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
5522         PR bootstrap/82856
5523         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
5524         later)".
5526 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5527             KuanLin Chen  <best124612@gmail.com>
5529         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
5530         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
5532 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5534         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
5536 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5538         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
5540 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5542         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
5543         __RISCV_ prefix.
5544         (DEF_RVV_FRM_ENUM): Ditto.
5546 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5548         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
5549         intrinsic API expander
5550         * config/riscv/vector.md
5551         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
5552         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
5553         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
5555 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5557         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
5558         * config/riscv/predicates.md (vector_perm_operand): New predicate.
5559         * config/riscv/riscv-protos.h (enum insn_type): New enum.
5560         (expand_vec_perm): New function.
5561         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
5562         (gen_const_vector_dup): Ditto.
5563         (emit_vlmax_gather_insn): Ditto.
5564         (emit_vlmax_masked_gather_mu_insn): Ditto.
5565         (expand_vec_perm): Ditto.
5567 2023-06-01  Jason Merrill  <jason@redhat.com>
5569         * doc/invoke.texi (-Wpedantic): Improve clarity.
5571 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
5573         * rtl.h (exp_equiv_p): Change return type from int to bool.
5574         * cse.cc (mention_regs): Change return type from int to bool
5575         and adjust function body accordingly.
5576         (exp_equiv_p): Ditto.
5577         (insert_regs): Ditto. Change "modified" function argument to bool
5578         and update usage accordingly.
5579         (record_jump_cond): Remove always zero "reversed_nonequality"
5580         function argument and update usage accordingly.
5581         (fold_rtx): Change "changed" variable to bool.
5582         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
5583         (is_dead_reg): Change return type from int to bool.
5585 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
5587         * config/xtensa/xtensa.md (adddi3, subdi3):
5588         New RTL generation patterns implemented according to the instruc-
5589         tion idioms described in the Xtensa ISA reference manual (p. 600).
5591 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
5592             Uros Bizjak  <ubizjak@gmail.com>
5594         PR target/109973
5595         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
5596         CODE_for_sse4_1_ptestzv2di.
5597         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
5598         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
5599         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
5600         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
5601         when expanding UNSPEC_PTEST to compare against zero.
5602         * config/i386/i386-features.cc (scalar_chain::convert_compare):
5603         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
5604         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
5605         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
5606         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
5607         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
5608         check for suitable matching modes for the UNSPEC_PTEST pattern.
5609         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
5610         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
5611         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
5612         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
5613         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
5614         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
5615         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
5616         current behavior.
5617         (*ptest<mode>_and): Specify CCZ to only perform this optimization
5618         when only the Z flag is required.
5620 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
5622         PR target/109954
5623         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
5625 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5627         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
5628         Add =r,m and =r,m alternatives.
5629         (load_pair<DREG:mode><DREG2:mode>): Likewise.
5630         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
5632 2023-06-01  Pan Li  <pan2.li@intel.com>
5634         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
5635         and zvfh.
5636         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
5637         (main): Disable FP16 tuple.
5638         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
5639         (TARGET_VECTOR_ELEN_FP_16): Ditto.
5640         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
5641         Add FP16.
5642         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
5643         (vfloat16mf2_t): Ditto.
5644         (vfloat16m1_t): Ditto.
5645         (vfloat16m2_t): Ditto.
5646         (vfloat16m4_t): Ditto.
5647         (vfloat16m8_t): Ditto.
5648         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
5649         New macro.
5650         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
5651         machine mode based on TARGET_VECTOR_ELEN_FP_16.
5653 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5655         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
5656         (DEF_RVV_FRM_ENUM): New macro.
5657         (handle_pragma_vector): Add FRM enum
5658         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
5659         (RNE): Ditto.
5660         (RTZ): Ditto.
5661         (RDN): Ditto.
5662         (RUP): Ditto.
5663         (RMM): Ditto.
5665 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
5666             Richard Sandiford  <richard.sandiford@arm.com>
5668         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
5669         Update call to wi::bswap.
5670         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
5671         Update call to wi::bswap.
5672         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
5673         Update calls to wi::bswap.
5674         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
5675         (wi::bswap_large): New function, with revised API.
5676         * wide-int.h (wi::bswap): New (template) function prototype.
5677         (wide_int_storage::bswap): Remove method.
5678         (sext_large, zext_large): Consistent indentation/line wrapping.
5679         (bswap_large): Prototype helper function containing implementation.
5680         (wi::bswap): New template wrapper around bswap_large.
5682 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5684         PR target/99195
5685         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
5686         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
5687         (usdot_prod<vsi2qi>): Rename to...
5688         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
5689         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
5690         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
5691         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
5692         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
5693         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
5694         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
5695         ... This.
5697 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5699         PR target/99195
5700         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
5701         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
5702         (aarch64_sq<r>dmulh_n<mode>): Rename to...
5703         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
5704         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
5705         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
5706         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
5707         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
5708         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
5709         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
5710         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
5711         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
5712         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
5713         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
5715 2023-05-31  David Faust  <david.faust@oracle.com>
5717         * btfout.cc (btf_kind_names): New.
5718         (btf_kind_name): New.
5719         (btf_absolute_var_id): New utility function.
5720         (btf_relative_var_id): Likewise.
5721         (btf_relative_func_id): Likewise.
5722         (btf_absolute_datasec_id): Likewise.
5723         (btf_asm_type_ref): New.
5724         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
5725         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
5726         (btf_asm_varent): Likewise.
5727         (btf_asm_func_arg): Likewise.
5728         (btf_asm_datasec_entry): Likewise.
5729         (btf_asm_datasec_type): Likewise.
5730         (btf_asm_func_type): Likewise. Add index parameter.
5731         (btf_asm_enum_const): Likewise.
5732         (btf_asm_sou_member): Likewise.
5733         (output_btf_vars): Update btf_asm_* call accordingly.
5734         (output_asm_btf_sou_fields): Likewise.
5735         (output_asm_btf_enum_list): Likewise.
5736         (output_asm_btf_func_args_list): Likewise.
5737         (output_asm_btf_vlen_bytes): Likewise.
5738         (output_btf_func_types): Add ctf_container_ref parameter.
5739         Pass it to btf_asm_func_type.
5740         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
5741         (btf_output): Update output_btf_func_types call similarly.
5743 2023-05-31  David Faust  <david.faust@oracle.com>
5745         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
5746         and BTF_KIND_FWD which do not use the size/type field at all.
5748 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
5750         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
5751         (active_insn_p): Ditto.
5752         (in_sequence_p): Ditto.
5753         (unshare_all_rtl): Change return type from int to void.
5754         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
5755         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
5756         and adjust function body accordingly.
5757         (mem_expr_equal_p): Ditto.
5758         (unshare_all_rtl): Change return type from int to void
5759         and adjust function body accordingly.
5760         (verify_rtx_sharing): Remove unneeded return.
5761         (active_insn_p): Change return type from int to bool
5762         and adjust function body accordingly.
5763         (in_sequence_p): Ditto.
5765 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
5767         * rtl.h (true_dependence): Change return type from int to bool.
5768         (canon_true_dependence): Ditto.
5769         (read_dependence): Ditto.
5770         (anti_dependence): Ditto.
5771         (canon_anti_dependence): Ditto.
5772         (output_dependence): Ditto.
5773         (canon_output_dependence): Ditto.
5774         (may_alias_p): Ditto.
5775         * alias.h (alias_sets_conflict_p): Ditto.
5776         (alias_sets_must_conflict_p): Ditto.
5777         (objects_must_conflict_p): Ditto.
5778         (nonoverlapping_memrefs_p): Ditto.
5779         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
5780         (record_set): Ditto.
5781         (base_alias_check): Ditto.
5782         (find_base_value): Ditto.
5783         (mems_in_disjoint_alias_sets_p): Ditto.
5784         (get_alias_set_entry): Ditto.
5785         (decl_for_component_ref): Ditto.
5786         (write_dependence_p): Ditto.
5787         (memory_modified_1): Ditto.
5788         (mems_in_disjoint_alias_set_p): Change return type from int to bool
5789         and adjust function body accordingly.
5790         (alias_sets_conflict_p): Ditto.
5791         (alias_sets_must_conflict_p): Ditto.
5792         (objects_must_conflict_p): Ditto.
5793         (rtx_equal_for_memref_p): Ditto.
5794         (base_alias_check): Ditto.
5795         (read_dependence): Ditto.
5796         (nonoverlapping_memrefs_p): Ditto.
5797         (true_dependence_1): Ditto.
5798         (true_dependence): Ditto.
5799         (canon_true_dependence): Ditto.
5800         (write_dependence_p): Ditto.
5801         (anti_dependence): Ditto.
5802         (canon_anti_dependence): Ditto.
5803         (output_dependence): Ditto.
5804         (canon_output_dependence): Ditto.
5805         (may_alias_p): Ditto.
5806         (init_alias_analysis): Change "changed" variable to bool.
5808 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5810         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
5811         expand into define_insn_and_split.
5813 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5815         * config/riscv/vector.md: Remove FRM.
5817 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5819         * config/riscv/vector.md: Remove FRM.
5821 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5823         * config/riscv/vector.md: Remove FRM.
5825 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
5827         PR target/110039
5828         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
5829         pattern.
5831 2023-05-31  Richard Biener  <rguenther@suse.de>
5833         PR ipa/109983
5834         PR tree-optimization/109143
5835         * tree-ssa-structalias.cc (struct topo_info): Remove.
5836         (init_topo_info): Likewise.
5837         (free_topo_info): Likewise.
5838         (compute_topo_order): Simplify API, put the component
5839         with ESCAPED last so it's processed first.
5840         (topo_visit): Adjust.
5841         (solve_graph): Likewise.
5843 2023-05-31  Richard Biener  <rguenther@suse.de>
5845         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
5846         New.
5847         (add_graph_edge): Count redundant edges we avoid to create.
5848         (dump_sa_stats): Dump them.
5849         (ipa_pta_execute): Do not dump generating constraints when
5850         we are not dumping them.
5852 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5854         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
5855         output template to avoid explicit switch on which_alternative.
5856         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
5857         (and<mode>3): Likewise.
5858         (ior<mode>3): Likewise.
5859         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
5861 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
5863         * config/xtensa/predicates.md (xtensa_bit_join_operator):
5864         New predicate.
5865         * config/xtensa/xtensa.md (ior_op): Remove.
5866         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
5867         insn_and_split pattern of the same name to express and capture
5868         the bit-combining operation with both sides swapped.
5869         In addition, replace use of code iterator with new operator
5870         predicate.
5871         (*shlrd_const, *shlrd_per_byte):
5872         Likewise regarding the code iterator.
5874 2023-05-31  Cui, Lili  <lili.cui@intel.com>
5876         PR tree-optimization/110038
5877         * params.opt: Add a limit on tree-reassoc-width.
5878         * tree-ssa-reassoc.cc
5879         (rewrite_expr_tree_parallel): Add width limit.
5881 2023-05-31  Pan Li  <pan2.li@intel.com>
5883         * common/config/riscv/riscv-common.cc:
5884         (riscv_implied_info): Add zvfh item.
5885         (riscv_ext_version_table): Ditto.
5886         (riscv_ext_flag_table): Ditto.
5887         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
5888         (TARGET_ZVFH): Ditto.
5890 2023-05-30  liuhongt  <hongtao.liu@intel.com>
5892         PR tree-optimization/108804
5893         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
5894         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
5895         Add new parameter narrow_src_p.
5896         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
5897         vectorization by truncating to lower precision.
5898         * tree-vectorizer.h (vect_get_range_info): New declare.
5900 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
5902         * lra-int.h (lra_update_sp_offset): Add the prototype.
5903         * lra.cc (setup_sp_offset): Change the return type.  Use
5904         lra_update_sp_offset.
5905         * lra-eliminations.cc (lra_update_sp_offset): New function.
5906         (lra_process_new_insns): Push the current insn to reprocess if the
5907         input reload changes sp offset.
5909 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
5911         PR target/110041
5912         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
5913         Fix misleading identation.
5915 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
5917         * rtl.h (comparison_dominates_p): Change return type from int to bool.
5918         (condjump_p): Ditto.
5919         (any_condjump_p): Ditto.
5920         (any_uncondjump_p): Ditto.
5921         (simplejump_p): Ditto.
5922         (returnjump_p): Ditto.
5923         (eh_returnjump_p): Ditto.
5924         (onlyjump_p): Ditto.
5925         (invert_jump_1): Ditto.
5926         (invert_jump): Ditto.
5927         (rtx_renumbered_equal_p): Ditto.
5928         (redirect_jump_1): Ditto.
5929         (redirect_jump): Ditto.
5930         (condjump_in_parallel_p): Ditto.
5931         * jump.cc (invert_exp_1): Adjust forward declaration.
5932         (comparison_dominates_p): Change return type from int to bool
5933         and adjust function body accordingly.
5934         (simplejump_p): Ditto.
5935         (condjump_p): Ditto.
5936         (condjump_in_parallel_p): Ditto.
5937         (any_uncondjump_p): Ditto.
5938         (any_condjump_p): Ditto.
5939         (returnjump_p): Ditto.
5940         (eh_returnjump_p): Ditto.
5941         (onlyjump_p): Ditto.
5942         (redirect_jump_1): Ditto.
5943         (redirect_jump): Ditto.
5944         (invert_exp_1): Ditto.
5945         (invert_jump_1): Ditto.
5946         (invert_jump): Ditto.
5947         (rtx_renumbered_equal_p): Ditto.
5949 2023-05-30  Andrew Pinski  <apinski@marvell.com>
5951         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
5952         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
5953         Add ne as a possible cmp.
5954         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
5956 2023-05-30  Andrew Pinski  <apinski@marvell.com>
5958         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
5959         pattern.
5961 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
5963         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
5964         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
5965         (and (extend X) C) as (zero_extend (and X C)), to also optimize
5966         modes wider than HOST_WIDE_INT.
5968 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
5970         PR target/107172
5971         * simplify-rtx.cc (simplify_const_relational_operation): Return
5972         early if we have a MODE_CC comparison that isn't a COMPARE against
5973         const0_rtx.
5975 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
5977         * config/riscv/riscv.cc (riscv_const_insns): Allow
5978         const_vec_duplicates.
5980 2023-05-30  liuhongt  <hongtao.liu@intel.com>
5982         PR middle-end/108938
5983         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
5984         function, cut from original find_bswap_or_nop function.
5985         (find_bswap_or_nop): Add a new parameter, detect bswap +
5986         rotate and save rotate result in the new parameter.
5987         (bswap_replace): Add a new parameter to indicate rotate and
5988         generate rotate stmt if needed.
5989         (maybe_optimize_vector_constructor): Adjust for new rotate
5990         parameter in the upper 2 functions.
5991         (pass_optimize_bswap::execute): Ditto.
5992         (imm_store_chain_info::output_merged_store): Ditto.
5994 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5996         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
5997         (aarch64_<su>adalp<mode>): New define_expand.
5998         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
5999         (aarch64_<su>addlp<mode>): Convert to define_expand.
6000         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
6001         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
6002         (ADALP): Likewise.
6003         (USADDLP): Likewise.
6004         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
6006 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6008         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
6009         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
6010         srhadd, urhadd builtin codes for standard optab ones.
6011         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
6012         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
6013         unspec.
6014         (<u>avg<mode>3_ceil): Rename to...
6015         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
6016         unspec.
6017         (aarch64_<su>hsub<mode>): New define_expand.
6018         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
6019         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
6020         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
6022 2023-05-30  Andreas Schwab  <schwab@suse.de>
6024         PR target/110036
6025         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
6026         match libsanitizer.
6028 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6030         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
6031         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
6032         Declare prototype.
6033         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
6034         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
6035         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
6036         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
6037         (aarch64_<sra_op>sra_n<mode>): New define_expand.
6038         (aarch64_<sra_op>rsra_n<mode>): Likewise.
6039         (aarch64_<sur>sra_n<mode>): Rename to...
6040         (aarch64_<sur>sra_ndi): ... This.
6041         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
6042         any_target_p argument.
6043         (aarch64_extract_vec_duplicate_wide_int): Define.
6044         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
6045         (aarch64_const_vec_rnd_cst_p): Likewise.
6046         (aarch64_vector_mode_supported_any_target_p): Likewise.
6047         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
6048         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
6049         (VSRA): Adjust for the above.
6050         (sur): Likewise.
6051         (V2XWIDE): New mode_attr.
6052         (vec_or_offset): Likewise.
6053         (SHIFTEXTEND): Likewise.
6054         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
6055         predicate.
6056         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
6057         clarify that it applies to current target options.
6058         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
6059         * doc/tm.texi.in: Regenerate.
6060         * stor-layout.cc (mode_for_vector): Check
6061         vector_mode_supported_any_target_p when iterating through vector modes.
6062         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
6063         clarify that it applies to current target options.
6064         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
6066 2023-05-30  Lili Cui  <lili.cui@intel.com>
6068         PR tree-optimization/98350
6069         * tree-ssa-reassoc.cc
6070         (rewrite_expr_tree_parallel): Rewrite this function.
6071         (rank_ops_for_fma): New.
6072         (reassociate_bb): Handle new function.
6074 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
6076         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
6077         (rtx_unstable_p): Ditto.
6078         (reg_mentioned_p): Ditto.
6079         (reg_referenced_p): Ditto.
6080         (reg_used_between_p): Ditto.
6081         (reg_set_between_p): Ditto.
6082         (modified_between_p): Ditto.
6083         (no_labels_between_p): Ditto.
6084         (modified_in_p): Ditto.
6085         (reg_set_p): Ditto.
6086         (multiple_sets): Ditto.
6087         (set_noop_p): Ditto.
6088         (noop_move_p): Ditto.
6089         (reg_overlap_mentioned_p): Ditto.
6090         (dead_or_set_p): Ditto.
6091         (dead_or_set_regno_p): Ditto.
6092         (find_reg_fusage): Ditto.
6093         (find_regno_fusage): Ditto.
6094         (side_effects_p): Ditto.
6095         (volatile_refs_p): Ditto.
6096         (volatile_insn_p): Ditto.
6097         (may_trap_p_1): Ditto.
6098         (may_trap_p): Ditto.
6099         (may_trap_or_fault_p): Ditto.
6100         (computed_jump_p): Ditto.
6101         (auto_inc_p): Ditto.
6102         (loc_mentioned_in_p): Ditto.
6103         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
6104         (rtx_unstable_p): Change return type from int to bool
6105         and adjust function body accordingly.
6106         (rtx_addr_can_trap_p): Ditto.
6107         (reg_mentioned_p): Ditto.
6108         (no_labels_between_p): Ditto.
6109         (reg_used_between_p): Ditto.
6110         (reg_referenced_p): Ditto.
6111         (reg_set_between_p): Ditto.
6112         (reg_set_p): Ditto.
6113         (modified_between_p): Ditto.
6114         (modified_in_p): Ditto.
6115         (multiple_sets): Ditto.
6116         (set_noop_p): Ditto.
6117         (noop_move_p): Ditto.
6118         (reg_overlap_mentioned_p): Ditto.
6119         (dead_or_set_p): Ditto.
6120         (dead_or_set_regno_p): Ditto.
6121         (find_reg_fusage): Ditto.
6122         (find_regno_fusage): Ditto.
6123         (remove_node_from_insn_list): Ditto.
6124         (volatile_insn_p): Ditto.
6125         (volatile_refs_p): Ditto.
6126         (side_effects_p): Ditto.
6127         (may_trap_p_1): Ditto.
6128         (may_trap_p): Ditto.
6129         (may_trap_or_fault_p): Ditto.
6130         (computed_jump_p): Ditto.
6131         (auto_inc_p): Ditto.
6132         (loc_mentioned_in_p): Ditto.
6133         * combine.cc (can_combine_p): Update indirect function.
6135 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6137         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
6138         * config/riscv/iterators.md: New attribute.
6139         * config/riscv/vector-iterators.md: New attribute.
6141 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6143         * config/riscv/riscv.md: Fix signed and unsigned comparison
6144         warning.
6146 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6148         * config/riscv/autovec.md (fnma<mode>4): New pattern.
6149         (*fnma<mode>): Ditto.
6151 2023-05-29  Die Li  <lidie@eswincomputing.com>
6153         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
6154         Delete.
6155         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
6156         process for TARGET_XTHEADCONDMOV
6158 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
6160         PR target/110021
6161         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
6162         TARGET_AVX512BW to generate truncv16hiv16qi2.
6164 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
6166         * config/riscv/riscv.md (and<mode>3): New expander.
6167         (*and<mode>3) New pattern.
6168         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
6169         predicate.
6171 2023-05-29  Pan Li  <pan2.li@intel.com>
6173         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
6174         comments and rename local variables.
6175         (emit_nonvlmax_insn): Diito.
6176         (emit_vlmax_merge_insn): Ditto.
6177         (emit_vlmax_cmp_insn): Ditto.
6178         (emit_vlmax_cmp_mu_insn): Ditto.
6179         (emit_scalar_move_insn): Ditto.
6181 2023-05-29  Pan Li  <pan2.li@intel.com>
6183         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
6184         magic number.
6185         (emit_nonvlmax_insn): Ditto.
6186         (emit_vlmax_merge_insn): Ditto.
6187         (emit_vlmax_cmp_insn): Ditto.
6188         (emit_vlmax_cmp_mu_insn): Ditto.
6189         (expand_vec_series): Ditto.
6191 2023-05-29  Pan Li  <pan2.li@intel.com>
6193         * config/riscv/riscv-protos.h (enum insn_type): New type.
6194         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
6195         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
6196         class member.
6197         (rvv_builder::get_merged_repeating_sequence): Ditto.
6198         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
6199         to evaluate the optimization cost.
6200         (rvv_builder::get_merge_scalar_mask): New function to get the merge
6201         mask.
6202         (emit_scalar_move_insn): New function to emit vmv.s.x.
6203         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
6204         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
6205         vmv.v.x.
6206         (get_repeating_sequence_dup_machine_mode): New function to get the dup
6207         machine mode.
6208         (expand_vector_init_merge_repeating_sequence): New function to perform
6209         the optimization.
6210         (expand_vec_init): Add this vector init optimization.
6211         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
6213 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
6215         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
6216         put onto the increment when it is inserted after the position.
6218 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
6220         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
6221         on constants.
6223 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6225         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
6227 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6229         * config/riscv/autovec.md (fma<mode>4): New pattern.
6230         (*fma<mode>): Ditto.
6231         * config/riscv/riscv-protos.h (enum insn_type): New enum.
6232         (emit_vlmax_ternary_insn): New function.
6233         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
6235 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6237         * config/riscv/vector.md: Fix vimuladd instruction bug.
6239 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6241         * config/riscv/riscv.cc (global_state_unknown_p): New function.
6242         (riscv_mode_after): Fix incorrect VXM.
6244 2023-05-29  Pan Li  <pan2.li@intel.com>
6246         * common/config/riscv/riscv-common.cc:
6247         (riscv_implied_info): Add zvfhmin item.
6248         (riscv_ext_version_table): Ditto.
6249         (riscv_ext_flag_table): Ditto.
6250         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
6251         (TARGET_ZFHMIN): Align indent.
6252         (TARGET_ZFH): Ditto.
6253         (TARGET_ZVFHMIN): New macro.
6255 2023-05-27  liuhongt  <hongtao.liu@intel.com>
6257         PR target/100711
6258         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
6259         to VI_AVX2 to cover more modes.
6261 2023-05-27  liuhongt  <hongtao.liu@intel.com>
6263         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
6264         Remove ATOM and ICELAKE(and later) core processors.
6266 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
6268         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
6269         (abs<mode>2): Add.
6270         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
6271         Declare.
6272         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
6273         function.
6275 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
6276             Juzhe Zhong  <juzhe.zhong@rivai.ai>
6278         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
6279         expander.
6280         (<optab><v_quad_trunc><mode>2): Dito.
6281         (<optab><v_oct_trunc><mode>2): Dito.
6282         (trunc<mode><v_double_trunc>2): Dito.
6283         (trunc<mode><v_quad_trunc>2): Dito.
6284         (trunc<mode><v_oct_trunc>2): Dito.
6285         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
6286         (autovectorize_vector_modes): Define.
6287         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
6288         hook.
6289         (autovectorize_vector_modes): Implement hook.
6290         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
6291         Implement target hook.
6292         (riscv_vectorize_related_mode): Implement target hook.
6293         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
6294         (TARGET_VECTORIZE_RELATED_MODE): Define.
6295         * config/riscv/vector-iterators.md: Add lowercase versions of
6296         mode_attr iterators.
6298 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
6299             Tobias Burnus  <tobias@codesourcery.com>
6301         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
6302         (ASM_SPEC): Use XNACKOPT.
6303         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
6304         (enum hsaco_attr_type): ... this, and generalize the names.
6305         (TARGET_XNACK): New macro.
6306         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
6307         but -mxnack=off.
6308         (output_file_start): Update xnack handling.
6309         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
6310         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
6311         (sram_ecc_type): Rename to ...
6312         (hsaco_attr_type: ... this.)
6313         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
6314         (TEST_XNACK): Delete.
6315         (TEST_XNACK_ANY): New macro.
6316         (TEST_XNACK_ON): New macro.
6317         (main): Support the new -mxnack=on/off/any syntax.
6318         * doc/invoke.texi (-mxnack): Update for new syntax.
6320 2023-05-26  Andrew Pinski  <apinski@marvell.com>
6322         * genmatch.cc (emit_debug_printf): New function.
6323         (dt_simplify::gen_1): Emit printf into the code
6324         before the `return true` or returning the folded result
6325         instead of emitting it always.
6327 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6329         * config/xtensa/xtensa-protos.h
6330         (xtensa_expand_block_set_unrolled_loop,
6331         xtensa_expand_block_set_small_loop): Remove.
6332         (xtensa_expand_block_set): New prototype.
6333         * config/xtensa/xtensa.cc
6334         (xtensa_expand_block_set_libcall): New subfunction.
6335         (xtensa_expand_block_set_unrolled_loop,
6336         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
6337         (xtensa_expand_block_set): New function that calls the above
6338         subfunctions.
6339         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
6340         xtensa_expand_block_set().
6342 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6344         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
6345         New prototype.
6346         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
6347         New function.
6348         * config/xtensa/constraints.md (O):
6349         Change to use the above function.
6350         * config/xtensa/xtensa.md (*subsi3_from_const):
6351         New insn_and_split pattern.
6353 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6355         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
6356         Retract excessive line folding, and correct the value of
6357         the "length" insn attribute related to TARGET_DENSITY.
6358         (*extzvsi-1bit_addsubx): Ditto.
6360 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
6362         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
6363         Do not disable call to ix86_expand_vecop_qihi2.
6365 2023-05-26  liuhongt  <hongtao.liu@intel.com>
6367         PR target/109610
6368         PR target/109858
6369         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
6370         calculation when !hard_regno_mode_ok for GENERAL_REGS and
6371         mode, otherwise still use GENERAL_REGS.
6373 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6375         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
6376         explict VL and drop VL in ops.
6378 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
6380         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
6381         in different BB blocks.
6383 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
6385         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
6386         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
6387         instructions when available.  Emulate truncation via
6388         ix86_expand_vec_perm_const_1 when native truncate insn
6389         is not available.
6390         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
6391         when available.  Trivially rename some variables.
6392         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
6393         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
6394         calculation of V*QImode emulations to account for generation of
6395         2x-wider mode instructions.
6396         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
6397         emulations to account for generation of 2x-wider mode instructions.
6399 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
6401         PR target/104327
6402         * config/avr/avr.cc (avr_can_inline_p): New static function.
6403         (TARGET_CAN_INLINE_P): Define to that function.
6405 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
6407         PR target/82931
6408         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
6409         Handle any bit position and use mode QISI.
6410         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
6411         of 2 insns for bit-transfer of respective style.
6413 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
6415         * config/arm/iterators.md (MVE_6): Remove.
6416         * config/arm/mve.md: Replace MVE_6 with MVE_5.
6418 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6419             Richard Sandiford  <richard.sandiford@arm.com>
6421         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
6422         function.
6423         (vect_set_loop_controls_directly): Add decrement IV support.
6424         (vect_set_loop_condition_partial_vectors): Ditto.
6425         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
6426         variable.
6427         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
6428         macro.
6430 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6432         PR target/99195
6433         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
6434         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
6435         Fix canonicalization of PLUS operands.
6436         (aarch64_fcmla<rot><mode>): Rename to...
6437         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
6438         Fix canonicalization of PLUS operands.
6439         (aarch64_fcmla_lane<rot><mode>): Rename to...
6440         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
6441         Fix canonicalization of PLUS operands.
6442         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
6443         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
6444         Fix canonicalization of PLUS operands.
6445         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
6447 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
6449         * config/arm/arm.md (rbitsi2): Rename to...
6450         (arm_rbit): ... This.
6451         (ctzsi2): Adjust for the above.
6452         (arm_rev16si2): Convert to define_expand.
6453         (arm_rev16si2_alt1): New pattern.
6454         (arm_rev16si2_alt): Rename to...
6455         (*arm_rev16si2_alt2): ... This.
6456         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
6457         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
6458         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
6459         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
6461 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
6463         PR target/109800
6464         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
6465         instead of DFmode.
6466         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
6467         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
6468         DFmode as an rvalue.
6470 2023-05-25  Richard Biener  <rguenther@suse.de>
6472         PR target/109955
6473         * tree-vect-stmts.cc (vectorizable_condition): For
6474         embedded comparisons also handle the case when the target
6475         only provides vec_cmp and vcond_mask.
6477 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
6479         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
6480         TLS Local Dynamic.
6482 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6484         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
6485         (seq_cost_ignoring_scalar_moves): Likewise.
6486         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
6488 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6490         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
6491         (vcage_f32): Likewise.
6492         (vcages_f32): Likewise.
6493         (vcageq_f32): Likewise.
6494         (vcaged_f64): Likewise.
6495         (vcageq_f64): Likewise.
6496         (vcagts_f32): Likewise.
6497         (vcagt_f32): Likewise.
6498         (vcagt_f64): Likewise.
6499         (vcagtq_f32): Likewise.
6500         (vcagtd_f64): Likewise.
6501         (vcagtq_f64): Likewise.
6502         (vcale_f32): Likewise.
6503         (vcale_f64): Likewise.
6504         (vcaled_f64): Likewise.
6505         (vcales_f32): Likewise.
6506         (vcaleq_f32): Likewise.
6507         (vcaleq_f64): Likewise.
6508         (vcalt_f32): Likewise.
6509         (vcalt_f64): Likewise.
6510         (vcaltd_f64): Likewise.
6511         (vcaltq_f32): Likewise.
6512         (vcaltq_f64): Likewise.
6513         (vcalts_f32): Likewise.
6515 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
6517         PR target/109173
6518         PR target/109174
6519         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
6520         int to const int or const int to const unsigned int.
6521         (_mm512_mask_srli_epi16): Ditto.
6522         (_mm512_slli_epi16): Ditto.
6523         (_mm512_mask_slli_epi16): Ditto.
6524         (_mm512_maskz_slli_epi16): Ditto.
6525         (_mm512_srai_epi16): Ditto.
6526         (_mm512_mask_srai_epi16): Ditto.
6527         (_mm512_maskz_srai_epi16): Ditto.
6528         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
6529         (_mm512_mask_slli_epi64): Ditto.
6530         (_mm512_maskz_slli_epi64): Ditto.
6531         (_mm512_srli_epi64): Ditto.
6532         (_mm512_mask_srli_epi64): Ditto.
6533         (_mm512_maskz_srli_epi64): Ditto.
6534         (_mm512_srai_epi64): Ditto.
6535         (_mm512_mask_srai_epi64): Ditto.
6536         (_mm512_maskz_srai_epi64): Ditto.
6537         (_mm512_slli_epi32): Ditto.
6538         (_mm512_mask_slli_epi32): Ditto.
6539         (_mm512_maskz_slli_epi32): Ditto.
6540         (_mm512_srli_epi32): Ditto.
6541         (_mm512_mask_srli_epi32): Ditto.
6542         (_mm512_maskz_srli_epi32): Ditto.
6543         (_mm512_srai_epi32): Ditto.
6544         (_mm512_mask_srai_epi32): Ditto.
6545         (_mm512_maskz_srai_epi32): Ditto.
6546         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
6547         (_mm256_maskz_srai_epi16): Ditto.
6548         (_mm_mask_srai_epi16): Ditto.
6549         (_mm_maskz_srai_epi16): Ditto.
6550         (_mm256_mask_slli_epi16): Ditto.
6551         (_mm256_maskz_slli_epi16): Ditto.
6552         (_mm_mask_slli_epi16): Ditto.
6553         (_mm_maskz_slli_epi16): Ditto.
6554         (_mm_maskz_srli_epi16): Ditto.
6555         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
6556         (_mm256_maskz_srli_epi32): Ditto.
6557         (_mm_mask_srli_epi32): Ditto.
6558         (_mm_maskz_srli_epi32): Ditto.
6559         (_mm256_mask_srli_epi64): Ditto.
6560         (_mm256_maskz_srli_epi64): Ditto.
6561         (_mm_mask_srli_epi64): Ditto.
6562         (_mm_maskz_srli_epi64): Ditto.
6563         (_mm256_mask_srai_epi32): Ditto.
6564         (_mm256_maskz_srai_epi32): Ditto.
6565         (_mm_mask_srai_epi32): Ditto.
6566         (_mm_maskz_srai_epi32): Ditto.
6567         (_mm256_srai_epi64): Ditto.
6568         (_mm256_mask_srai_epi64): Ditto.
6569         (_mm256_maskz_srai_epi64): Ditto.
6570         (_mm_srai_epi64): Ditto.
6571         (_mm_mask_srai_epi64): Ditto.
6572         (_mm_maskz_srai_epi64): Ditto.
6573         (_mm_mask_slli_epi32): Ditto.
6574         (_mm_maskz_slli_epi32): Ditto.
6575         (_mm_mask_slli_epi64): Ditto.
6576         (_mm_maskz_slli_epi64): Ditto.
6577         (_mm256_mask_slli_epi32): Ditto.
6578         (_mm256_maskz_slli_epi32): Ditto.
6579         (_mm256_mask_slli_epi64): Ditto.
6580         (_mm256_maskz_slli_epi64): Ditto.
6582 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6584         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
6585         instructions.
6587 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
6589         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
6590         * data-streamer-out.cc (streamer_write_vrange): Same.
6591         * value-range.h (class vrange): Make streamer_write_vrange a friend.
6593 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
6595         * value-query.cc (range_query::get_tree_range): Set NAN directly
6596         if necessary.
6597         * value-range.cc (frange::set): Assert that bounds are not NAN.
6599 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
6601         * value-range.cc (add_vrange): Handle known NANs.
6603 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
6605         * value-range.h (frange::set_nan): New.
6607 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
6609         PR target/100106
6610         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
6611         requires stricter alignment than MEM's.
6613 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
6615         PR tree-optimization/107822
6616         PR tree-optimization/107986
6617         * Makefile.in (OBJS): Add gimple-range-phi.o.
6618         * gimple-range-cache.h (ranger_cache::m_estimate): New
6619         phi_analyzer pointer member.
6620         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
6621         phi_analyzer if no loop info is available.
6622         * gimple-range-phi.cc: New file.
6623         * gimple-range-phi.h: New file.
6624         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
6626 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
6628         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
6629         to contructors.
6630         (fold_range): Add range_query parameter.
6631         (fur_relation::fur_relation): New.
6632         (fur_relation::trio): New.
6633         (fur_relation::register_relation): New.
6634         (fold_relations): New.
6635         * gimple-range-fold.h (fold_range): Adjust prototypes.
6636         (fold_relations): New.
6638 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
6640         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
6641         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
6642         (ranger_cache::const_query): New.
6643         * gimple-range.cc (gimple_ranger::const_query): New.
6644         * gimple-range.h (gimple_ranger::const_query): New prototype.
6646 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
6648         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
6649         (ssa_cache::dump_range_query): Delete.
6650         (ssa_lazy_cache::dump_range_query): Delete.
6651         (ssa_lazy_cache::get_range): Move from header file.
6652         (ssa_lazy_cache::clear_range): ditto.
6653         (ssa_lazy_cache::clear): Ditto.
6654         * gimple-range-cache.h (class ssa_cache): Virtualize.
6655         (class ssa_lazy_cache): Inherit and virtualize.
6657 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
6659         * value-range.h (vrange::kind): Remove.
6661 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
6663         PR middle-end/109840
6664         * match.pd <popcount optimizations>: Preserve zero-extension when
6665         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
6666         popcount((T)x), so the popcount's argument keeps the same type.
6667         <parity optimizations>:  Likewise preserve extensions when
6668         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
6669         parity((T)x), so that the parity's argument type is the same.
6671 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
6673         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
6674         (ipcp_store_vr_results): Same.
6675         * ipa-prop.cc (ipa_vr::ipa_vr): New.
6676         (ipa_vr::get_vrange): New.
6677         (ipa_vr::set_unknown): New.
6678         (ipa_vr::streamer_read): New.
6679         (ipa_vr::streamer_write): New.
6680         (write_ipcp_transformation_info): Use new ipa_vr API.
6681         (read_ipcp_transformation_info): Same.
6682         (ipa_vr::nonzero_p): Delete.
6683         (ipcp_update_vr): Use new ipa_vr API.
6684         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
6685         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
6687 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
6689         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
6690         silence overflow warnings later on.
6692 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
6694         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
6695         Remove handling of V8QImode.
6696         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
6697         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
6698         (v<insn>v4qi3): Ditto.
6699         * config/i386/sse.md (v<insn>v8qi3): Remove.
6701 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6703         PR target/99195
6704         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
6705         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
6706         (aarch64_simd_ashr<mode>): Rename to...
6707         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
6708         (aarch64_simd_imm_shl<mode>): Rename to...
6709         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
6710         (aarch64_simd_reg_sshl<mode>): Rename to...
6711         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
6712         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
6713         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
6714         (aarch64_simd_reg_shl<mode>_signed): Rename to...
6715         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
6716         (vec_shr_<mode>): Rename to...
6717         (vec_shr_<mode><vczle><vczbe>): ... This.
6718         (aarch64_<sur>shl<mode>): Rename to...
6719         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
6720         (aarch64_<sur>q<r>shl<mode>): Rename to...
6721         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
6723 2023-05-24  Richard Biener  <rguenther@suse.de>
6725         PR target/109944
6726         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
6727         Perform final vector composition using
6728         ix86_expand_vector_init_general instead of setting
6729         the highpart and lowpart which causes spilling.
6731 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
6733         PR tree-optimization/109695
6734         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
6735         changed param.
6736         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
6737         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
6738         flag to set_global_range.
6739         (gimple_ranger::prefill_stmt_dependencies): Ditto.
6741 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
6743         PR tree-optimization/109695
6744         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
6745         a positive int.
6746         (temporal_cache::current_p): Check always_current method.
6747         (temporal_cache::set_always_current): Add param and set value
6748         appropriately.
6749         (temporal_cache::always_current_p): New.
6750         (ranger_cache::get_global_range): Adjust.
6751         (ranger_cache::set_global_range): set always current first.
6753 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
6755         PR tree-optimization/109695
6756         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
6757         fold_range with global query to choose an initial value.
6759 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6761         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
6762         prefix.
6764 2023-05-24  Richard Biener  <rguenther@suse.de>
6766         PR tree-optimization/109849
6767         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
6768         expressions but take the first sets.
6770 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
6772         PR modula2/109952
6773         * doc/gm2.texi (High procedure function): New node.
6774         (Using): New menu entry for High procedure function.
6776 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
6778         PR rtl-optimization/109940
6779         * early-remat.cc (postorder_index): Rename to...
6780         (rpo_index): ...this.
6781         (compare_candidates): Sort by decreasing rpo_index rather than
6782         increasing postorder_index.
6783         (early_remat::sort_candidates): Calculate the forward RPO from
6784         DF_FORWARD.
6785         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
6786         rather than DF_BACKWARD in reverse.
6788 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6790         PR target/109939
6791         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
6792         qualifier_none for the return operand.
6794 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6796         * config/riscv/autovec.md (<optab><mode>3): New pattern.
6797         (one_cmpl<mode>2): Ditto.
6798         (*<optab>not<mode>): Ditto.
6799         (*n<optab><mode>): Ditto.
6800         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
6801         one_cmpl.
6803 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
6805         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
6806         calculation on n_perms by considering nvectors_per_build.
6808 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6809             Richard Sandiford  <richard.sandiford@arm.com>
6811         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
6812         (vec_cmp<mode><vm>): New pattern.
6813         (vec_cmpu<mode><vm>): New pattern.
6814         (vcond<V:mode><VI:mode>): New pattern.
6815         (vcondu<V:mode><VI:mode>): New pattern.
6816         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
6817         (emit_vlmax_merge_insn): New function.
6818         (emit_vlmax_cmp_insn): Ditto.
6819         (emit_vlmax_cmp_mu_insn): Ditto.
6820         (expand_vec_cmp): Ditto.
6821         (expand_vec_cmp_float): Ditto.
6822         (expand_vcond): Ditto.
6823         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
6824         (emit_vlmax_cmp_insn): Ditto.
6825         (emit_vlmax_cmp_mu_insn): Ditto.
6826         (get_cmp_insn_code): Ditto.
6827         (expand_vec_cmp): Ditto.
6828         (expand_vec_cmp_float): Ditto.
6829         (expand_vcond): Ditto.
6831 2023-05-24  Pan Li  <pan2.li@intel.com>
6833         * config/riscv/genrvv-type-indexer.cc (main): Add
6834         unsigned_eew*_lmul1_interpret for indexer.
6835         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
6836         Register vuint*m1_t interpret function.
6837         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
6838         New macro for vuint8m1_t.
6839         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
6840         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
6841         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
6842         (vbool1_t): Add to unsigned_eew*_interpret_ops.
6843         (vbool2_t): Likewise.
6844         (vbool4_t): Likewise.
6845         (vbool8_t): Likewise.
6846         (vbool16_t): Likewise.
6847         (vbool32_t): Likewise.
6848         (vbool64_t): Likewise.
6849         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
6850         New macro for vuint*m1_t.
6851         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
6852         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
6853         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
6854         (required_extensions_p): Add vuint*m1_t interpret case.
6855         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
6856         Add vuint*m1_t interpret to base type.
6857         (unsigned_eew16_lmul1_interpret): Likewise.
6858         (unsigned_eew32_lmul1_interpret): Likewise.
6859         (unsigned_eew64_lmul1_interpret): Likewise.
6861 2023-05-24  Pan Li  <pan2.li@intel.com>
6863         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
6864         for the eew size list.
6865         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
6866         (main): Add signed_eew*_lmul1_interpret for indexer.
6867         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
6868         Register vint*m1_t interpret function.
6869         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
6870         New macro for vint8m1_t.
6871         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
6872         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
6873         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
6874         (vbool1_t): Add to signed_eew*_interpret_ops.
6875         (vbool2_t): Likewise.
6876         (vbool4_t): Likewise.
6877         (vbool8_t): Likewise.
6878         (vbool16_t): Likewise.
6879         (vbool32_t): Likewise.
6880         (vbool64_t): Likewise.
6881         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
6882         New macro for vint*m1_t.
6883         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
6884         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
6885         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
6886         (required_extensions_p): Add vint8m1_t interpret case.
6887         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
6888         Add vint*m1_t interpret to base type.
6889         (signed_eew16_lmul1_interpret): Likewise.
6890         (signed_eew32_lmul1_interpret): Likewise.
6891         (signed_eew64_lmul1_interpret): Likewise.
6893 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6895         * config/riscv/autovec.md: Adjust for new interface.
6896         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
6897         (emit_nonvlmax_insn): Add AVL operand.
6898         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
6899         (emit_nonvlmax_insn): Add AVL operand.
6900         (sew64_scalar_helper): Adjust for new interface.
6901         (expand_tuple_move): Ditto.
6902         * config/riscv/vector.md: Ditto.
6904 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6906         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
6907         (expand_const_vector): Ditto.
6908         (legitimize_move): Ditto.
6909         (sew64_scalar_helper): Ditto.
6910         (expand_tuple_move): Ditto.
6911         (expand_vector_init_insert_elems): Ditto.
6912         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
6914 2023-05-24  liuhongt  <hongtao.liu@intel.com>
6916         PR target/109900
6917         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
6918         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
6919         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
6920         (ix86_masked_all_ones): Handle 64-bit mask.
6921         * config/i386/i386-builtin.def: Replace icode of related
6922         non-mask simd abs builtins with CODE_FOR_nothing.
6924 2023-05-23  Martin Uecker  <uecker@tugraz.at>
6926         PR c/109450
6927         * function.cc (gimplify_parm_type): Remove function.
6928         (gimplify_parameters): Call gimplify_type_sizes.
6930 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6932         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
6933         and change to also accept '*subx' pattern.
6934         (*subx): Remove.
6936 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6938         * config/xtensa/predicates.md (addsub_operator): New.
6939         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
6940         *extzvsi-1bit_addsubx): New insn_and_split patterns.
6941         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
6942         Add a special case about ifcvt 'noce_try_cmove()' to handle
6943         constant loads that do not fit into signed 12 bits in the
6944         patterns added above.
6946 2023-05-23  Richard Biener  <rguenther@suse.de>
6948         PR tree-optimization/109747
6949         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
6950         the SLP node only once to the cost hook.
6952 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
6954         * config/avr/avr.cc (avr_insn_cost): New static function.
6955         (TARGET_INSN_COST): Define to that function.
6957 2023-05-23  Richard Biener  <rguenther@suse.de>
6959         PR target/109944
6960         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
6961         For vector construction or splats apply GPR->XMM move
6962         costing.  QImode memory can be handled directly only
6963         with SSE4.1 pinsrb.
6965 2023-05-23  Richard Biener  <rguenther@suse.de>
6967         PR tree-optimization/108752
6968         * tree-vect-stmts.cc (vectorizable_operation): For bit
6969         operations with generic word_mode vectors do not cost
6970         an extra stmt.  For plus, minus and negate also cost the
6971         constant materialization.
6973 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
6975         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
6976         Call ix86_expand_vec_shift_qihi_constant for shifts
6977         with constant count operand.
6978         * config/i386/i386.cc (ix86_shift_rotate_cost):
6979         Handle V4QImode and V8QImode.
6980         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
6981         (<insn>v4qi3): Ditto.
6983 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6985         * config/riscv/vector.md: Add mode.
6987 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
6989         PR tree-optimization/109934
6990         * value-range.cc (irange::invert): Remove buggy special case.
6992 2023-05-23  Richard Biener  <rguenther@suse.de>
6994         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
6995         ANTIC_OUT.
6997 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
6999         PR target/109632
7000         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
7001         subregs between any scalars that are 64 bits or smaller.
7002         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
7003         (bits_etype): New int attribute.
7004         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
7005         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
7006         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
7008 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
7010         * doc/md.texi: Document that <FOO> can be used to refer to the
7011         numerical value of an int iterator FOO.  Tweak other parts of
7012         the int iterator documentation.
7013         * read-rtl.cc (iterator_group::has_self_attr): New field.
7014         (map_attr_string): When has_self_attr is true, make <FOO>
7015         expand to the current value of iterator FOO.
7016         (initialize_iterators): Set has_self_attr for int iterators.
7018 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7020         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
7021         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
7022         (RVV_UNOP_NUM): New macro.
7023         (RVV_BINOP_NUM): Ditto.
7024         (legitimize_move): Refactor the framework of RVV auto-vectorization.
7025         (emit_vlmax_op): Ditto.
7026         (emit_vlmax_reg_op): Ditto.
7027         (emit_len_op): Ditto.
7028         (emit_len_binop): Ditto.
7029         (emit_vlmax_tany_many): Ditto.
7030         (emit_nonvlmax_tany_many): Ditto.
7031         (sew64_scalar_helper): Ditto.
7032         (expand_tuple_move): Ditto.
7033         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
7034         (emit_pred_binop): Ditto.
7035         (emit_vlmax_op): Ditto.
7036         (emit_vlmax_tany_many): New function.
7037         (emit_len_op): Remove.
7038         (emit_nonvlmax_tany_many): New function.
7039         (emit_vlmax_reg_op): Remove.
7040         (emit_len_binop): Ditto.
7041         (emit_index_op): Ditto.
7042         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
7043         (expand_const_vector): Ditto.
7044         (legitimize_move): Ditto.
7045         (sew64_scalar_helper): Ditto.
7046         (expand_tuple_move): Ditto.
7047         (expand_vector_init_insert_elems): Ditto.
7048         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
7049         * config/riscv/vector.md: Ditto.
7051 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7053         PR target/109855
7054         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
7055         and constraint for operand 0.
7056         (add_vec_concat_subst_be): Likewise.
7058 2023-05-23  Richard Biener  <rguenther@suse.de>
7060         PR tree-optimization/109849
7061         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
7062         and use that to determine what to hoist.
7064 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
7066         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
7067         specific treatment for bit-fields only if they have an integral type
7068         and filter out non-integral bit-fields that do not start and end on
7069         a byte boundary.
7071 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
7073         PR tree-optimization/109920
7074         * value-range.h (RESIZABLE>::~int_range): Use delete[].
7076 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
7078         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
7079         calcuation of integer vector mode costs to reflect generated
7080         instruction sequences of different integer vector modes and
7081         different target ABIs.  Remove "speed" function argument.
7082         (ix86_rtx_costs): Update call for removed function argument.
7083         (ix86_vector_costs::add_stmt_cost): Ditto.
7085 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
7087         * value-range.h (class Value_Range): Implement set_zero,
7088         set_nonzero, and nonzero_p.
7090 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
7092         * config/i386/i386.cc (ix86_multiplication_cost): Add
7093         the cost of a memory read to the cost of V?QImode sequences.
7095 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7097         * config/riscv/riscv-v.cc: Add "m_" prefix.
7099 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
7101         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
7102         multiple-rgroup of length.
7103         * tree-vect-stmts.cc (vectorizable_store): Ditto.
7104         (vectorizable_load): Ditto.
7105         * tree-vectorizer.h (vect_get_loop_len): Ditto.
7107 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7109         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
7110         codes.
7112 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
7114         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
7115         handling for the case index == count.
7117 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
7119         PR target/90622
7120         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
7121         Don't fold to XOR / AND / XOR if just one bit is copied to the
7122         same position.
7124 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
7126         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
7127         builtin for bit reversal using brev instruction.
7128         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
7129         NVPTX_BUILTIN_BREVLL.
7130         (nvptx_init_builtins): Define "brev" and "brevll".
7131         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
7132         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
7133         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
7134         section, document __builtin_nvptx_brev{,ll}.
7136 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
7138         PR tree-optimization/109505
7139         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
7140         Combine successive equal operations with constants,
7141         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
7142         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
7143         operands.
7145 2023-05-21  Andrew Pinski  <apinski@marvell.com>
7147         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
7149 2023-05-21  Pan Li  <pan2.li@intel.com>
7151         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
7152         rest bool size, aka 2, 4, 8, 16, 32, 64.
7153         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
7154         Register vbool[2|4|8|16|32|64] interpret function.
7155         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
7156         New macro for vbool2_t.
7157         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
7158         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
7159         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
7160         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
7161         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
7162         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
7163         (vint16m1_t): Likewise.
7164         (vint32m1_t): Likewise.
7165         (vint64m1_t): Likewise.
7166         (vuint8m1_t): Likewise.
7167         (vuint16m1_t): Likewise.
7168         (vuint32m1_t): Likewise.
7169         (vuint64m1_t): Likewise.
7170         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
7171         New macro for vbool2_t.
7172         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
7173         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
7174         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
7175         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
7176         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
7177         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
7178         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
7179         vbool2_t interprect to base type.
7180         (bool4_interpret): Likewise.
7181         (bool8_interpret): Likewise.
7182         (bool16_interpret): Likewise.
7183         (bool32_interpret): Likewise.
7184         (bool64_interpret): Likewise.
7186 2023-05-21  Andrew Pinski  <apinski@marvell.com>
7188         PR middle-end/109919
7189         * expr.cc (expand_single_bit_test): Don't use the
7190         target for expand_expr.
7192 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
7194         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
7195         section.
7197 2023-05-20  Pan Li  <pan2.li@intel.com>
7199         * mode-switching.cc (entity_map): Initialize the array to zero.
7200         (bb_info): Ditto.
7202 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
7204         PR target/105753
7205         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
7206         Remove superfluous "parallel" in insn pattern.
7207         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
7208         printing error text to assembly.
7210 2023-05-20  Andrew Pinski  <apinski@marvell.com>
7212         * expr.cc (fold_single_bit_test): Rename to ...
7213         (expand_single_bit_test): This and expand directly.
7214         (do_store_flag): Update for the rename function.
7216 2023-05-20  Andrew Pinski  <apinski@marvell.com>
7218         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
7219         instead of shift/and.
7221 2023-05-20  Andrew Pinski  <apinski@marvell.com>
7223         * expr.cc (fold_single_bit_test): Add an assert
7224         and simplify based on code being NE_EXPR or EQ_EXPR.
7226 2023-05-20  Andrew Pinski  <apinski@marvell.com>
7228         * expr.cc (fold_single_bit_test): Take inner and bitnum
7229         instead of arg0 and arg1. Update the code.
7230         (do_store_flag): Don't create a tree when calling
7231         fold_single_bit_test instead just call it with the bitnum
7232         and the inner tree.
7234 2023-05-20  Andrew Pinski  <apinski@marvell.com>
7236         * expr.cc (fold_single_bit_test): Use get_def_for_expr
7237         instead of checking the inner's code.
7239 2023-05-20  Andrew Pinski  <apinski@marvell.com>
7241         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
7242         (fold_single_bit_test): This and simplify.
7244 2023-05-20  Andrew Pinski  <apinski@marvell.com>
7246         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
7247         expr.cc.
7248         (fold_single_bit_test): Likewise.
7249         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
7250         (fold_single_bit_test): Likewise and make static.
7251         * fold-const.h (fold_single_bit_test): Remove declaration.
7253 2023-05-20  Die Li  <lidie@eswincomputing.com>
7255         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
7256         checking.
7258 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
7260         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
7262 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
7264         PR target/106888
7265         * config/riscv/bitmanip.md
7266         (<bitmanip_optab>disi2): Match with any_extend.
7267         (<bitmanip_optab>disi2_sext): New pattern to match
7268         with sign extend using an ANDI instruction.
7270 2023-05-19  Nathan Sidwell  <nathan@acm.org>
7272         PR other/99451
7273         * opts.h (handle_deferred_dump_options): Declare.
7274         * opts-global.cc (handle_common_deferred_options): Do not handle
7275         dump options here.
7276         (handle_deferred_dump_options): New.
7277         * toplev.cc (toplev::main): Call it after plugin init.
7279 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
7281         * config/riscv/constraints.md (DsS, DsD): Restore agreement
7282         with shiftm1 mode attribute.
7284 2023-05-19  Andrew Pinski  <apinski@marvell.com>
7286         PR driver/33980
7287         * gcc.cc (default_compilers["@c-header"]): Add %w
7288         after the --output-pch.
7290 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
7292         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
7293         to hival, ASHIFT the corresponding regs.
7295 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
7297         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
7299 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
7301         PR tree-optimization/105776
7302         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
7303         non-NULL, allow division statement to have a cast as single imm use
7304         rather than comparison/condition.
7305         (match_arith_overflow): In that case remove the cast stmt in addition
7306         to the division statement.
7308 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
7310         PR tree-optimization/101856
7311         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
7312         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
7313         support it but umul_highpart_optab does.
7315 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
7317         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
7318         of tree_to_shwi on array indices.  Minor tweaks.
7320 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
7322         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
7323         * attribs.cc (diag_attr_exclusions): Ditto.
7324         (decl_attributes): Ditto.
7325         (build_type_attribute_qual_variant): Ditto.
7326         * builtins.cc (fold_builtin_carg): Ditto.
7327         (fold_builtin_next_arg): Ditto.
7328         (do_mpc_arg2): Ditto.
7329         * cfgexpand.cc (expand_return): Ditto.
7330         * cgraph.h (decl_in_symtab_p): Ditto.
7331         (symtab_node::get_create): Ditto.
7332         * dwarf2out.cc (base_type_die): Ditto.
7333         (implicit_ptr_descriptor): Ditto.
7334         (gen_array_type_die): Ditto.
7335         (gen_type_die_with_usage): Ditto.
7336         (optimize_location_into_implicit_ptr): Ditto.
7337         * expr.cc (do_store_flag): Ditto.
7338         * fold-const.cc (negate_expr_p): Ditto.
7339         (fold_negate_expr_1): Ditto.
7340         (fold_convert_const): Ditto.
7341         (fold_convert_loc): Ditto.
7342         (constant_boolean_node): Ditto.
7343         (fold_binary_op_with_conditional_arg): Ditto.
7344         (build_fold_addr_expr_with_type_loc): Ditto.
7345         (fold_comparison): Ditto.
7346         (fold_checksum_tree): Ditto.
7347         (tree_unary_nonnegative_warnv_p): Ditto.
7348         (integer_valued_real_unary_p): Ditto.
7349         (fold_read_from_constant_string): Ditto.
7350         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
7351         * gimple-expr.cc (useless_type_conversion_p): Ditto.
7352         (is_gimple_reg): Ditto.
7353         (is_gimple_asm_val): Ditto.
7354         (mark_addressable): Ditto.
7355         * gimple-expr.h (is_gimple_variable): Ditto.
7356         (virtual_operand_p): Ditto.
7357         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
7358         * gimplify.cc (gimplify_bind_expr): Ditto.
7359         (gimplify_return_expr): Ditto.
7360         (gimple_add_padding_init_for_auto_var): Ditto.
7361         (gimplify_addr_expr): Ditto.
7362         (omp_add_variable): Ditto.
7363         (omp_notice_variable): Ditto.
7364         (omp_get_base_pointer): Ditto.
7365         (omp_strip_components_and_deref): Ditto.
7366         (omp_strip_indirections): Ditto.
7367         (omp_accumulate_sibling_list): Ditto.
7368         (omp_build_struct_sibling_lists): Ditto.
7369         (gimplify_adjust_omp_clauses_1): Ditto.
7370         (gimplify_adjust_omp_clauses): Ditto.
7371         (gimplify_omp_for): Ditto.
7372         (goa_lhs_expr_p): Ditto.
7373         (gimplify_one_sizepos): Ditto.
7374         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
7375         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
7376         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
7377         (propagate_controlled_uses): Ditto.
7378         * ipa-sra.cc (type_prevails_p): Ditto.
7379         (scan_expr_access): Ditto.
7380         * optabs-tree.cc (optab_for_tree_code): Ditto.
7381         * toplev.cc (wrapup_global_declaration_1): Ditto.
7382         * trans-mem.cc (transaction_invariant_address_p): Ditto.
7383         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
7384         (verify_gimple_comparison): Ditto.
7385         (verify_gimple_assign_binary): Ditto.
7386         (verify_gimple_assign_single): Ditto.
7387         * tree-complex.cc (get_component_ssa_name): Ditto.
7388         * tree-emutls.cc (lower_emutls_2): Ditto.
7389         * tree-inline.cc (copy_tree_body_r): Ditto.
7390         (estimate_move_cost): Ditto.
7391         (copy_decl_for_dup_finish): Ditto.
7392         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
7393         (note_nonlocal_vla_type): Ditto.
7394         (convert_local_omp_clauses): Ditto.
7395         (remap_vla_decls): Ditto.
7396         (fixup_vla_decls): Ditto.
7397         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
7398         * tree-pretty-print.cc (print_declaration): Ditto.
7399         (print_call_name): Ditto.
7400         * tree-sra.cc (compare_access_positions): Ditto.
7401         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
7402         * tree-ssa-ccp.cc (get_default_value): Ditto.
7403         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
7404         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
7405         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
7406         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
7407         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
7408         * tree-ssa-sink.cc (statement_sink_location): Ditto.
7409         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
7410         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
7411         * tree-ssa-uninit.cc (warn_uninit): Ditto.
7412         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
7413         (non_rewritable_mem_ref_base): Ditto.
7414         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
7415         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
7416         * tree-vect-generic.cc (do_binop): Ditto.
7417         (do_cond): Ditto.
7418         * tree-vect-stmts.cc (vect_init_vector): Ditto.
7419         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
7420         * tree.cc (sign_mask_for): Ditto.
7421         (verify_type_variant): Ditto.
7422         (gimple_canonical_types_compatible_p): Ditto.
7423         (verify_type): Ditto.
7424         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
7425         * var-tracking.cc (prepare_call_arguments): Ditto.
7426         (vt_add_function_parameters): Ditto.
7427         * varasm.cc (decode_addr_const): Ditto.
7429 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
7431         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
7432         (lower_reduction_clauses): Ditto.
7433         (lower_send_clauses): Ditto.
7434         (lower_omp_task_reductions): Ditto.
7435         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
7436         (worker_single_copy): Ditto.
7437         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
7438         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
7440 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
7442         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
7443         tree.h.
7444         (lto_read_body_or_constructor): Ditto.
7445         * lto-streamer-out.cc (tree_is_indexable): Ditto.
7446         (lto_output_var_decl_ref): Ditto.
7447         (DFS::DFS_write_tree_body): Ditto.
7448         (wrap_refs): Ditto.
7449         (write_symbol_extension_info): Ditto.
7451 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
7453         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
7454         defines from tree.h.
7455         (aarch64_mangle_type): Ditto.
7456         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
7457         (alpha_gimplify_va_arg_1): Ditto.
7458         * config/arc/arc.cc (arc_encode_section_info): Ditto.
7459         (arc_is_aux_reg_p): Ditto.
7460         (arc_is_uncached_mem_p): Ditto.
7461         (arc_handle_aux_attribute): Ditto.
7462         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
7463         (arm_handle_cmse_nonsecure_call): Ditto.
7464         (arm_set_default_type_attributes): Ditto.
7465         (arm_is_segment_info_known): Ditto.
7466         (arm_mangle_type): Ditto.
7467         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
7468         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
7469         (avr_decl_absdata_p): Ditto.
7470         (avr_insert_attributes): Ditto.
7471         (avr_section_type_flags): Ditto.
7472         (avr_encode_section_info): Ditto.
7473         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
7474         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
7475         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
7476         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
7477         (csky_mangle_type): Ditto.
7478         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
7479         * config/darwin.cc (is_objc_metadata): Ditto.
7480         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
7481         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
7482         * config/frv/frv.cc (frv_emit_movsi): Ditto.
7483         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
7484         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
7485         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
7486         * config/i386/i386-expand.cc: Ditto.
7487         * config/i386/i386.cc (type_natural_mode): Ditto.
7488         (ix86_function_arg): Ditto.
7489         (ix86_data_alignment): Ditto.
7490         (ix86_local_alignment): Ditto.
7491         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
7492         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
7493         (i386_pe_type_dllexport_p): Ditto.
7494         (i386_pe_adjust_class_at_definition): Ditto.
7495         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
7496         (i386_pe_binds_local_p): Ditto.
7497         (i386_pe_section_type_flags): Ditto.
7498         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
7499         (ia64_gimplify_va_arg): Ditto.
7500         (ia64_in_small_data_p): Ditto.
7501         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
7502         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
7503         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
7504         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
7505         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
7506         (mcore_encode_section_info): Ditto.
7507         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
7508         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
7509         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
7510         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
7511         (pass_in_memory): Ditto.
7512         (nvptx_generate_vector_shuffle): Ditto.
7513         (nvptx_lockless_update): Ditto.
7514         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
7515         (pa_function_value): Ditto.
7516         (pa_function_arg): Ditto.
7517         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
7518         (TEXT_SPACE_P): Ditto.
7519         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
7520         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
7521         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
7522         (riscv_mangle_type): Ditto.
7523         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
7524         (rl78_addsi3_internal): Ditto.
7525         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
7526         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
7527         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
7528         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
7529         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
7530         (rs6000_function_arg_advance_1): Ditto.
7531         (rs6000_function_arg): Ditto.
7532         (rs6000_pass_by_reference): Ditto.
7533         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
7534         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
7535         (rs6000_set_default_type_attributes): Ditto.
7536         (rs6000_elf_in_small_data_p): Ditto.
7537         (IN_NAMED_SECTION): Ditto.
7538         (rs6000_xcoff_encode_section_info): Ditto.
7539         (rs6000_function_value): Ditto.
7540         (invalid_arg_for_unprototyped_fn): Ditto.
7541         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
7542         (s390_vec_n_elem): Ditto.
7543         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
7544         (s390_function_arg_integer): Ditto.
7545         (s390_return_in_memory): Ditto.
7546         (s390_encode_section_info): Ditto.
7547         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
7548         (sh_function_value): Ditto.
7549         * config/sol2.cc (solaris_insert_attributes): Ditto.
7550         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
7551         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
7552         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
7553         (xstormy16_handle_below100_attribute): Ditto.
7554         * config/v850/v850.cc (v850_encode_section_info): Ditto.
7555         (v850_insert_attributes): Ditto.
7556         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
7557         (visium_return_in_memory): Ditto.
7558         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
7560 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
7562         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
7563         (ix86_expand_vecop_qihi): Add op2vec bool variable.
7564         Do not set REG_EQUAL note.
7565         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
7566         Add prototype.
7567         * config/i386/i386.cc (ix86_multiplication_cost): Handle
7568         V4QImode and V8QImode.
7569         * config/i386/mmx.md (mulv8qi3): New expander.
7570         (mulv4qi3): Ditto.
7571         * config/i386/sse.md (mulv8qi3): Remove.
7573 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
7575         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
7577 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
7579         PR bootstrap/105831
7580         * config.gcc: Use = operator instead of ==.
7582 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
7584         PR bootstrap/105831
7585         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
7586         * configure.ac: Likewise.
7587         * configure: Regenerate.
7589 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
7591         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
7592         (__ARM_mve_coerce1): Remove.
7593         (__ARM_mve_coerce2): Remove.
7594         (__ARM_mve_coerce3): Remove.
7595         (__ARM_mve_coerce_i_scalar): New.
7596         (__ARM_mve_coerce_s8_ptr): New.
7597         (__ARM_mve_coerce_u8_ptr): New.
7598         (__ARM_mve_coerce_s16_ptr): New.
7599         (__ARM_mve_coerce_u16_ptr): New.
7600         (__ARM_mve_coerce_s32_ptr): New.
7601         (__ARM_mve_coerce_u32_ptr): New.
7602         (__ARM_mve_coerce_s64_ptr): New.
7603         (__ARM_mve_coerce_u64_ptr): New.
7604         (__ARM_mve_coerce_f_scalar): New.
7605         (__ARM_mve_coerce_f16_ptr): New.
7606         (__ARM_mve_coerce_f32_ptr): New.
7607         (__arm_vst4q): Change _coerce_ overloads.
7608         (__arm_vbicq): Change _coerce_ overloads.
7609         (__arm_vld1q): Change _coerce_ overloads.
7610         (__arm_vld1q_z): Change _coerce_ overloads.
7611         (__arm_vld2q): Change _coerce_ overloads.
7612         (__arm_vld4q): Change _coerce_ overloads.
7613         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
7614         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
7615         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
7616         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
7617         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
7618         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
7619         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
7620         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
7621         (__arm_vst1q_p): Change _coerce_ overloads.
7622         (__arm_vst2q): Change _coerce_ overloads.
7623         (__arm_vst1q): Change _coerce_ overloads.
7624         (__arm_vstrhq): Change _coerce_ overloads.
7625         (__arm_vstrhq_p): Change _coerce_ overloads.
7626         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
7627         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
7628         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
7629         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
7630         (__arm_vstrwq_p): Change _coerce_ overloads.
7631         (__arm_vstrwq): Change _coerce_ overloads.
7632         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
7633         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
7634         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
7635         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
7636         (__arm_vsetq_lane): Change _coerce_ overloads.
7637         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
7638         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
7639         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
7640         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
7641         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
7642         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
7643         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
7644         (__arm_vidupq_x_u8): Change _coerce_ overloads.
7645         (__arm_vddupq_x_u8): Change _coerce_ overloads.
7646         (__arm_vidupq_x_u16): Change _coerce_ overloads.
7647         (__arm_vddupq_x_u16): Change _coerce_ overloads.
7648         (__arm_vidupq_x_u32): Change _coerce_ overloads.
7649         (__arm_vddupq_x_u32): Change _coerce_ overloads.
7650         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
7651         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
7652         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
7653         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
7654         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
7655         (__arm_vidupq_u16): Change _coerce_ overloads.
7656         (__arm_vidupq_u32): Change _coerce_ overloads.
7657         (__arm_vidupq_u8): Change _coerce_ overloads.
7658         (__arm_vddupq_u16): Change _coerce_ overloads.
7659         (__arm_vddupq_u32): Change _coerce_ overloads.
7660         (__arm_vddupq_u8): Change _coerce_ overloads.
7661         (__arm_viwdupq_m): Change _coerce_ overloads.
7662         (__arm_viwdupq_u16): Change _coerce_ overloads.
7663         (__arm_viwdupq_u32): Change _coerce_ overloads.
7664         (__arm_viwdupq_u8): Change _coerce_ overloads.
7665         (__arm_vdwdupq_m): Change _coerce_ overloads.
7666         (__arm_vdwdupq_u16): Change _coerce_ overloads.
7667         (__arm_vdwdupq_u32): Change _coerce_ overloads.
7668         (__arm_vdwdupq_u8): Change _coerce_ overloads.
7669         (__arm_vstrbq): Change _coerce_ overloads.
7670         (__arm_vstrbq_p): Change _coerce_ overloads.
7671         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
7672         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
7673         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
7674         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
7675         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
7677 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
7679         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
7680         scalar constant.
7682 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
7684         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
7685         (__arm_vadcq_u32): Likewise.
7686         (__arm_vadcq_m_s32): Likewise.
7687         (__arm_vadcq_m_u32): Likewise.
7688         (__arm_vsbcq_s32): Likewise.
7689         (__arm_vsbcq_u32): Likewise.
7690         (__arm_vsbcq_m_s32): Likewise.
7691         (__arm_vsbcq_m_u32): Likewise.
7692         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
7694 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
7696         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
7697         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
7698         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
7699         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
7700         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
7701         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
7702         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
7703         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
7704         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
7705         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
7706         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
7707         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
7708         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
7709         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
7710         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
7711         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
7712         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
7713         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
7714         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
7715         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
7716         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
7717         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
7718         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
7719         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
7720         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
7721         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
7722         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
7723         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
7724         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
7725         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
7726         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
7727         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
7728         (mve_vorrq_m_f<mode>)
7729         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
7730         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
7731         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
7732         capitalization in the emitted asm.
7734 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
7736         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
7737         predicates.md.
7738         (Ri): Move constraint definition from predicates.md.
7739         (Rl): Define new constraint.
7740         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
7741         missing constraint.
7742         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
7743         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
7744         op 2. Fix asm output spacing.
7745         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
7746         * config/arm/predicates.md (Ri) Move constraint to constraints.md
7747         (mve_vldrd_immediate): Move it from
7748         constraints.md.
7749         (mve_vstrw_immediate): New predicate.
7751 2023-05-18  Pan Li  <pan2.li@intel.com>
7752             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
7753             Kito Cheng  <kito.cheng@sifive.com>
7754             Richard Biener  <rguenther@suse.de>
7755             Richard Sandiford  <richard.sandiford@arm.com>
7757         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
7758         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
7759         (struct table_elt): Extend machine_mode to 16 bits.
7760         (struct set): Ditto.
7761         * genmodes.cc (emit_mode_wider): Extend type from char to short.
7762         (emit_mode_complex): Ditto.
7763         (emit_mode_inner): Ditto.
7764         (emit_class_narrowest_mode): Ditto.
7765         * genopinit.cc (main): Extend the machine_mode limit.
7766         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
7767         re-ordered the struct fields for padding.
7768         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
7769         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
7770         (get_mode_alignment): Extend type from char to short.
7771         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
7772         removed the ATTRIBUTE_PACKED.
7773         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
7774         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
7775         m_kind to 2 bits and remove m_spare.
7776         * rtl.h (RTX_CODE_BITSIZE): New macro.
7777         (struct rtx_def): Swap both the bit size and location between the
7778         rtx_code and the machine_mode.
7779         (subreg_shape::unique_id): Extend the machine_mode limit.
7780         * rtlanal.h: Extend machine_mode to 16 bits.
7781         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
7782         bits and re-ordered the struct fields for padding.
7783         (struct tree_decl_common): Extend machine_mode to 16 bits.
7785 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
7787         * genrecog.cc (print_nonbool_test): Fix type error of
7788         switch (SUBREG_BYTE (op))'.
7790 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
7792         * common/config/riscv/riscv-common.cc: Remove
7793         trailing spaces on lines.
7794         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
7795         * config/riscv/riscv.h (enum reg_class): Likewise.
7796         * config/riscv/riscv.md: Likewise.
7798 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
7800         * config/pa/pa.md (clear_cache): New.
7802 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
7804         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
7805         parenthesis.  Fix misnamed index entry.
7806         <concept>: Fix misnamed index entry.
7808 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
7810         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
7811         combined from ...
7812         (*<optab>si3_mask, *<optab>di3_mask): Here.
7813         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
7814         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
7815         pattern.
7816         (*<bitmanip_optab>si3_sext_mask): Likewise.
7817         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
7818         and const_di_mask_operand.
7819         (bitmanip_rotate): New iterator.
7820         (bitmanip_optab): Add rotates.
7821         * config/riscv/predicates.md (const_si_mask_operand): Renamed
7822         from const31_operand.  Generalize to handle more mask constants.
7823         (const_di_mask_operand): Similarly.
7825 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
7827         PR c++/109884
7828         * config/i386/i386-builtin-types.def (FLOAT128): Use
7829         float128t_type_node rather than float128_type_node.
7831 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
7833         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
7834         FP_CONTRACT_FAST (no functional change).
7836 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
7838         * config/i386/i386.cc (ix86_multiplication_cost): Correct
7839         calcuation of integer vector mode costs to reflect generated
7840         instruction sequences of different integer vector modes and
7841         different target ABIs.
7843 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7845         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
7846         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
7847         (riscv_mode_needed): Ditto.
7848         (riscv_mode_after): Ditto.
7849         (riscv_mode_entry): Ditto.
7850         (riscv_mode_exit): Ditto.
7851         (riscv_mode_priority): Ditto.
7852         (TARGET_MODE_EMIT): New target hook.
7853         (TARGET_MODE_NEEDED): Ditto.
7854         (TARGET_MODE_AFTER): Ditto.
7855         (TARGET_MODE_ENTRY): Ditto.
7856         (TARGET_MODE_EXIT): Ditto.
7857         (TARGET_MODE_PRIORITY): Ditto.
7858         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
7859         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
7860         * config/riscv/riscv.md: Add csrwvxrm.
7861         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
7862         (vxrmsi): New pattern.
7864 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7866         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
7867         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
7868         (struct narrow_alu_def): Ditto.
7869         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
7870         (function_expander::use_exact_insn): Ditto.
7871         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
7872         (function_base::has_rounding_mode_operand_p): New function.
7874 2023-05-17  Andrew Pinski  <apinski@marvell.com>
7876         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
7877         against 0 instead of calling integer_zerop.
7879 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7881         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
7882         (DEF_RVV_VXRM_ENUM): New macro.
7883         (handle_pragma_vector): Add vxrm enum register.
7884         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
7885         (RNU): Ditto.
7886         (RNE): Ditto.
7887         (RDN): Ditto.
7888         (ROD): Ditto.
7890 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
7892         * value-range.h (Value_Range::operator=): New.
7894 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
7896         * value-range.cc (vrange::operator=): Add a stub to copy
7897         unsupported ranges.
7898         * value-range.h (is_a <unsupported_range>): New.
7899         (Value_Range::operator=): Support copying unsupported ranges.
7901 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
7903         * data-streamer-in.cc (streamer_read_real_value): New.
7904         (streamer_read_value_range): New.
7905         * data-streamer-out.cc (streamer_write_real_value): New.
7906         (streamer_write_vrange): New.
7907         * data-streamer.h (streamer_write_vrange): New.
7908         (streamer_read_value_range): New.
7910 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
7912         PR c++/109532
7913         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
7914         is ignored for a fixed underlying type.
7915         (C++ Dialect Options): Likewise for -fstrict-enums.
7917 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
7919         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
7920         special case.
7922 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
7924         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
7925         New.
7926         (s390_atomic_align_for_mode): New.
7928 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
7930         * wide-int.cc (wi::from_array): Add missing closing paren in function
7931         comment.
7933 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
7935         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
7936         suggested unroll factor once the previous analysis fails.
7938 2023-05-17  Pan Li  <pan2.li@intel.com>
7940         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
7941         macro.
7942         (main): Add bool1 to the type indexer.
7943         * config/riscv/riscv-vector-builtins-functions.def
7944         (vreinterpret): Register vbool1 interpret function.
7945         * config/riscv/riscv-vector-builtins-types.def
7946         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
7947         (vint8m1_t): Add the type to bool1_interpret_ops.
7948         (vint16m1_t): Ditto.
7949         (vint32m1_t): Ditto.
7950         (vint64m1_t): Ditto.
7951         (vuint8m1_t): Ditto.
7952         (vuint16m1_t): Ditto.
7953         (vuint32m1_t): Ditto.
7954         (vuint64m1_t): Ditto.
7955         * config/riscv/riscv-vector-builtins.cc
7956         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
7957         (required_extensions_p): Add bool1 interpret case.
7958         * config/riscv/riscv-vector-builtins.def
7959         (bool1_interpret): Add bool1 interpret to base type.
7960         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
7961         with VB dest for vreinterpret.
7963 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
7965         PR target/106708
7966         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
7967         constants through "lis; xoris".
7969 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
7971         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
7972         default rs6000 target pass for O2 and above.
7973         * doc/invoke.texi: Document -free
7975 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
7977         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
7978         Fix wrong select_kind...
7980 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
7982         * config/s390/s390-protos.h (s390_expand_setmem): Change
7983         function signature.
7984         * config/s390/s390.cc (s390_expand_setmem): For memset's less
7985         than or equal to 256 byte do not perform a libc call.
7986         * config/s390/s390.md: Change expander into a version which
7987         takes 8 operands.
7989 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
7991         * config/s390/s390-protos.h (s390_expand_movmem): New.
7992         * config/s390/s390.cc (s390_expand_movmem): New.
7993         * config/s390/s390.md (movmem<mode>): New.
7994         (*mvcrl): New.
7995         (mvcrl): New.
7997 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
7999         * config/s390/s390-protos.h (s390_expand_cpymem): Change
8000         function signature.
8001         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
8002         than or equal to 256 byte do not perform a libc call.
8003         (s390_expand_insv): Adapt new function signature of
8004         s390_expand_cpymem.
8005         * config/s390/s390.md: Change expander into a version which
8006         takes 8 operands.
8008 2023-05-16  Andrew Pinski  <apinski@marvell.com>
8010         PR tree-optimization/109424
8011         * match.pd: Add patterns for min/max of zero_one_valued
8012         values to `&`/`|`.
8014 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8016         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
8017         * config/riscv/riscv-vector-builtins.cc
8018         (function_expander::use_ternop_insn): Add default rounding mode.
8019         (function_expander::use_widen_ternop_insn): Ditto.
8020         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
8021         (riscv_hard_regno_mode_ok): Ditto.
8022         (riscv_conditional_register_usage): Ditto.
8023         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
8024         (FRM_REG_P): Ditto.
8025         (RISCV_DWARF_FRM): Ditto.
8026         * config/riscv/riscv.md: Ditto.
8027         * config/riscv/vector-iterators.md: split no frm and has frm operations.
8028         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
8029         (@pred_<optab><mode>): Ditto.
8031 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
8033         PR tree-optimization/109695
8034         * value-range.cc (irange::operator=): Resize range.
8035         (irange::union_): Same.
8036         (irange::intersect): Same.
8037         (irange::invert): Same.
8038         (int_range_max): Default to 3 sub-ranges and resize as needed.
8039         * value-range.h (irange::maybe_resize): New.
8040         (~int_range): New.
8041         (int_range::int_range): Adjust for resizing.
8042         (int_range::operator=): Same.
8044 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
8046         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
8047         range copying
8048         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
8049         when range changed.
8051 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8053         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
8054         * config/riscv/riscv-vector-builtins.cc
8055         (function_expander::use_exact_insn): Add default rounding mode operand.
8056         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
8057         (riscv_hard_regno_mode_ok): Ditto.
8058         (riscv_conditional_register_usage): Ditto.
8059         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
8060         (VXRM_REG_P): Ditto.
8061         (RISCV_DWARF_VXRM): Ditto.
8062         * config/riscv/riscv.md: Ditto.
8063         * config/riscv/vector.md: Ditto
8065 2023-05-15  Pan Li  <pan2.li@intel.com>
8067         * optabs.cc (maybe_gen_insn): Add case to generate instruction
8068         that has 11 operands.
8070 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8072         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
8073         logic for vector modes.
8075 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8077         PR target/99195
8078         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
8079         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
8080         (aarch64_cmtst<mode>): Rename to...
8081         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
8082         (*aarch64_cmtst_same_<mode>): Rename to...
8083         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
8084         (*aarch64_cmtstdi): Rename to...
8085         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
8086         (aarch64_fac<optab><mode>): Rename to...
8087         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
8089 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8091         PR target/99195
8092         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
8093         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
8095 2023-05-15  Pan Li  <pan2.li@intel.com>
8096             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8097             kito-cheng  <kito.cheng@sifive.com>
8099         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
8100         deciding the mode is constant or not.
8101         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
8103 2023-05-15  Richard Biener  <rguenther@suse.de>
8105         PR tree-optimization/109848
8106         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
8107         TARGET_MEM_REF address preparation before the store, not
8108         before the CTOR.
8110 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8112         * config/riscv/riscv.cc
8113         (riscv_vectorize_preferred_vector_alignment): New function.
8114         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
8116 2023-05-14  Andrew Pinski  <apinski@marvell.com>
8118         PR tree-optimization/109829
8119         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
8121 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
8123         PR target/109807
8124         * config/i386/i386.cc: Revert the 2023-05-11 change.
8125         (ix86_widen_mult_cost): Return high value instead of
8126         ICEing for unsupported modes.
8128 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
8130         * config/i386/i386.cc (x86_function_profiler): Take
8131         ix86_direct_extern_access into account when generating calls
8132         to __fentry__()
8134 2023-05-14  Pan Li  <pan2.li@intel.com>
8136         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
8137         Refactor the or pattern to switch cases.
8139 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
8141         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
8142         aarch64_expand_vector_init to this, and remove  interleaving case.
8143         Recursively call aarch64_expand_vector_init_fallback, instead of
8144         aarch64_expand_vector_init.
8145         (aarch64_unzip_vector_init): New function.
8146         (aarch64_expand_vector_init): Likewise.
8148 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
8150         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
8151         Pull out function call from the gcc_assert.
8153 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
8155         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
8156         (policy_to_str): New.
8157         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
8159 2023-05-13  Andrew Pinski  <apinski@marvell.com>
8161         PR tree-optimization/109834
8162         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
8163         (popcount(rotate(x,y))->popcount(x)): Likewise.
8165 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
8167         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
8168         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
8169         gen_extend_insn to generate zero/sign extension instructions.
8170         Fix comments.
8171         (ix86_expand_vecop_qihi): Initialize interleave functions
8172         for MULT code only.  Fix comments.
8174 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
8176         PR target/109797
8177         * config/i386/mmx.md (mulv2si3): Remove expander.
8178         (mulv2si3): Rename insn pattern from *mulv2si.
8180 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
8182         PR libstdc++/109816
8183         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
8184         '!lto_stream_offload_p'.
8186 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
8187             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8189         PR target/109743
8190         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
8191         (local_avl_compatible_p): New.
8192         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
8193         for LCM, rewrite as a backward algorithm.
8194         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
8195         interface, handle a BB at once.
8197 2023-05-12  Richard Biener  <rguenther@suse.de>
8199         PR tree-optimization/64731
8200         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
8201         handle TARGET_MEM_REF destinations of stores from vector
8202         CTORs.
8204 2023-05-12  Richard Biener  <rguenther@suse.de>
8206         PR tree-optimization/109791
8207         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
8208         New pattern.
8209         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
8210         Likewise.
8212 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8214         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
8215         * config/arm/arm-mve-builtins-base.def (vsriq): New.
8216         * config/arm/arm-mve-builtins-base.h (vsriq): New.
8217         * config/arm/arm-mve-builtins.cc
8218         (function_instance::has_inactive_argument): Handle vsriq.
8219         * config/arm/arm_mve.h (vsriq): Remove.
8220         (vsriq_m): Remove.
8221         (vsriq_n_u8): Remove.
8222         (vsriq_n_s8): Remove.
8223         (vsriq_n_u16): Remove.
8224         (vsriq_n_s16): Remove.
8225         (vsriq_n_u32): Remove.
8226         (vsriq_n_s32): Remove.
8227         (vsriq_m_n_s8): Remove.
8228         (vsriq_m_n_u8): Remove.
8229         (vsriq_m_n_s16): Remove.
8230         (vsriq_m_n_u16): Remove.
8231         (vsriq_m_n_s32): Remove.
8232         (vsriq_m_n_u32): Remove.
8233         (__arm_vsriq_n_u8): Remove.
8234         (__arm_vsriq_n_s8): Remove.
8235         (__arm_vsriq_n_u16): Remove.
8236         (__arm_vsriq_n_s16): Remove.
8237         (__arm_vsriq_n_u32): Remove.
8238         (__arm_vsriq_n_s32): Remove.
8239         (__arm_vsriq_m_n_s8): Remove.
8240         (__arm_vsriq_m_n_u8): Remove.
8241         (__arm_vsriq_m_n_s16): Remove.
8242         (__arm_vsriq_m_n_u16): Remove.
8243         (__arm_vsriq_m_n_s32): Remove.
8244         (__arm_vsriq_m_n_u32): Remove.
8245         (__arm_vsriq): Remove.
8246         (__arm_vsriq_m): Remove.
8248 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8250         * config/arm/iterators.md (mve_insn): Add vsri.
8251         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
8252         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
8253         (mve_vsriq_m_n_<supf><mode>): Rename into ...
8254         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8256 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8258         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
8259         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
8261 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8263         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
8264         * config/arm/arm-mve-builtins-base.def (vsliq): New.
8265         * config/arm/arm-mve-builtins-base.h (vsliq): New.
8266         * config/arm/arm-mve-builtins.cc
8267         (function_instance::has_inactive_argument): Handle vsliq.
8268         * config/arm/arm_mve.h (vsliq): Remove.
8269         (vsliq_m): Remove.
8270         (vsliq_n_u8): Remove.
8271         (vsliq_n_s8): Remove.
8272         (vsliq_n_u16): Remove.
8273         (vsliq_n_s16): Remove.
8274         (vsliq_n_u32): Remove.
8275         (vsliq_n_s32): Remove.
8276         (vsliq_m_n_s8): Remove.
8277         (vsliq_m_n_s32): Remove.
8278         (vsliq_m_n_s16): Remove.
8279         (vsliq_m_n_u8): Remove.
8280         (vsliq_m_n_u32): Remove.
8281         (vsliq_m_n_u16): Remove.
8282         (__arm_vsliq_n_u8): Remove.
8283         (__arm_vsliq_n_s8): Remove.
8284         (__arm_vsliq_n_u16): Remove.
8285         (__arm_vsliq_n_s16): Remove.
8286         (__arm_vsliq_n_u32): Remove.
8287         (__arm_vsliq_n_s32): Remove.
8288         (__arm_vsliq_m_n_s8): Remove.
8289         (__arm_vsliq_m_n_s32): Remove.
8290         (__arm_vsliq_m_n_s16): Remove.
8291         (__arm_vsliq_m_n_u8): Remove.
8292         (__arm_vsliq_m_n_u32): Remove.
8293         (__arm_vsliq_m_n_u16): Remove.
8294         (__arm_vsliq): Remove.
8295         (__arm_vsliq_m): Remove.
8297 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8299         * config/arm/iterators.md (mve_insn>): Add vsli.
8300         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
8301         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8302         (mve_vsliq_m_n_<supf><mode>): Rename into ...
8303         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8305 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8307         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
8308         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
8310 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8312         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
8313         * config/arm/arm-mve-builtins-base.def (vpselq): New.
8314         * config/arm/arm-mve-builtins-base.h (vpselq): New.
8315         * config/arm/arm_mve.h (vpselq): Remove.
8316         (vpselq_u8): Remove.
8317         (vpselq_s8): Remove.
8318         (vpselq_u16): Remove.
8319         (vpselq_s16): Remove.
8320         (vpselq_u32): Remove.
8321         (vpselq_s32): Remove.
8322         (vpselq_u64): Remove.
8323         (vpselq_s64): Remove.
8324         (vpselq_f16): Remove.
8325         (vpselq_f32): Remove.
8326         (__arm_vpselq_u8): Remove.
8327         (__arm_vpselq_s8): Remove.
8328         (__arm_vpselq_u16): Remove.
8329         (__arm_vpselq_s16): Remove.
8330         (__arm_vpselq_u32): Remove.
8331         (__arm_vpselq_s32): Remove.
8332         (__arm_vpselq_u64): Remove.
8333         (__arm_vpselq_s64): Remove.
8334         (__arm_vpselq_f16): Remove.
8335         (__arm_vpselq_f32): Remove.
8336         (__arm_vpselq): Remove.
8338 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8340         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
8341         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
8343 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8345         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
8346         gen_mve_vpselq.
8347         * config/arm/iterators.md (MVE_VPSELQ_F): New.
8348         (mve_insn): Add vpsel.
8349         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
8350         (@mve_<mve_insn>q_<supf><mode>): ... this.
8351         (@mve_vpselq_f<mode>): Rename into ...
8352         (@mve_<mve_insn>q_f<mode>): ... this.
8354 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8356         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
8357         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
8358         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
8359         * config/arm/arm-mve-builtins.cc
8360         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
8361         vfmsq.
8362         * config/arm/arm_mve.h (vfmaq): Remove.
8363         (vfmasq): Remove.
8364         (vfmsq): Remove.
8365         (vfmaq_m): Remove.
8366         (vfmasq_m): Remove.
8367         (vfmsq_m): Remove.
8368         (vfmaq_f16): Remove.
8369         (vfmaq_n_f16): Remove.
8370         (vfmasq_n_f16): Remove.
8371         (vfmsq_f16): Remove.
8372         (vfmaq_f32): Remove.
8373         (vfmaq_n_f32): Remove.
8374         (vfmasq_n_f32): Remove.
8375         (vfmsq_f32): Remove.
8376         (vfmaq_m_f32): Remove.
8377         (vfmaq_m_f16): Remove.
8378         (vfmaq_m_n_f32): Remove.
8379         (vfmaq_m_n_f16): Remove.
8380         (vfmasq_m_n_f32): Remove.
8381         (vfmasq_m_n_f16): Remove.
8382         (vfmsq_m_f32): Remove.
8383         (vfmsq_m_f16): Remove.
8384         (__arm_vfmaq_f16): Remove.
8385         (__arm_vfmaq_n_f16): Remove.
8386         (__arm_vfmasq_n_f16): Remove.
8387         (__arm_vfmsq_f16): Remove.
8388         (__arm_vfmaq_f32): Remove.
8389         (__arm_vfmaq_n_f32): Remove.
8390         (__arm_vfmasq_n_f32): Remove.
8391         (__arm_vfmsq_f32): Remove.
8392         (__arm_vfmaq_m_f32): Remove.
8393         (__arm_vfmaq_m_f16): Remove.
8394         (__arm_vfmaq_m_n_f32): Remove.
8395         (__arm_vfmaq_m_n_f16): Remove.
8396         (__arm_vfmasq_m_n_f32): Remove.
8397         (__arm_vfmasq_m_n_f16): Remove.
8398         (__arm_vfmsq_m_f32): Remove.
8399         (__arm_vfmsq_m_f16): Remove.
8400         (__arm_vfmaq): Remove.
8401         (__arm_vfmasq): Remove.
8402         (__arm_vfmsq): Remove.
8403         (__arm_vfmaq_m): Remove.
8404         (__arm_vfmasq_m): Remove.
8405         (__arm_vfmsq_m): Remove.
8407 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8409         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
8410         VFMSQ_M_F.
8411         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
8412         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
8413         (mve_insn): Add vfma, vfmas, vfms.
8414         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
8415         into ...
8416         (@mve_<mve_insn>q_f<mode>): ... this.
8417         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
8418         (@mve_<mve_insn>q_n_f<mode>): ... this.
8419         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
8420         @mve_<mve_insn>q_m_f<mode>.
8421         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
8422         @mve_<mve_insn>q_m_n_f<mode>.
8424 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8426         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
8427         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
8429 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8431         * config/arm/arm-mve-builtins-base.cc
8432         (FUNCTION_WITH_RTX_M_N_NO_F): New.
8433         (vmvnq): New.
8434         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
8435         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
8436         * config/arm/arm_mve.h (vmvnq): Remove.
8437         (vmvnq_m): Remove.
8438         (vmvnq_x): Remove.
8439         (vmvnq_s8): Remove.
8440         (vmvnq_s16): Remove.
8441         (vmvnq_s32): Remove.
8442         (vmvnq_n_s16): Remove.
8443         (vmvnq_n_s32): Remove.
8444         (vmvnq_u8): Remove.
8445         (vmvnq_u16): Remove.
8446         (vmvnq_u32): Remove.
8447         (vmvnq_n_u16): Remove.
8448         (vmvnq_n_u32): Remove.
8449         (vmvnq_m_u8): Remove.
8450         (vmvnq_m_s8): Remove.
8451         (vmvnq_m_u16): Remove.
8452         (vmvnq_m_s16): Remove.
8453         (vmvnq_m_u32): Remove.
8454         (vmvnq_m_s32): Remove.
8455         (vmvnq_m_n_s16): Remove.
8456         (vmvnq_m_n_u16): Remove.
8457         (vmvnq_m_n_s32): Remove.
8458         (vmvnq_m_n_u32): Remove.
8459         (vmvnq_x_s8): Remove.
8460         (vmvnq_x_s16): Remove.
8461         (vmvnq_x_s32): Remove.
8462         (vmvnq_x_u8): Remove.
8463         (vmvnq_x_u16): Remove.
8464         (vmvnq_x_u32): Remove.
8465         (vmvnq_x_n_s16): Remove.
8466         (vmvnq_x_n_s32): Remove.
8467         (vmvnq_x_n_u16): Remove.
8468         (vmvnq_x_n_u32): Remove.
8469         (__arm_vmvnq_s8): Remove.
8470         (__arm_vmvnq_s16): Remove.
8471         (__arm_vmvnq_s32): Remove.
8472         (__arm_vmvnq_n_s16): Remove.
8473         (__arm_vmvnq_n_s32): Remove.
8474         (__arm_vmvnq_u8): Remove.
8475         (__arm_vmvnq_u16): Remove.
8476         (__arm_vmvnq_u32): Remove.
8477         (__arm_vmvnq_n_u16): Remove.
8478         (__arm_vmvnq_n_u32): Remove.
8479         (__arm_vmvnq_m_u8): Remove.
8480         (__arm_vmvnq_m_s8): Remove.
8481         (__arm_vmvnq_m_u16): Remove.
8482         (__arm_vmvnq_m_s16): Remove.
8483         (__arm_vmvnq_m_u32): Remove.
8484         (__arm_vmvnq_m_s32): Remove.
8485         (__arm_vmvnq_m_n_s16): Remove.
8486         (__arm_vmvnq_m_n_u16): Remove.
8487         (__arm_vmvnq_m_n_s32): Remove.
8488         (__arm_vmvnq_m_n_u32): Remove.
8489         (__arm_vmvnq_x_s8): Remove.
8490         (__arm_vmvnq_x_s16): Remove.
8491         (__arm_vmvnq_x_s32): Remove.
8492         (__arm_vmvnq_x_u8): Remove.
8493         (__arm_vmvnq_x_u16): Remove.
8494         (__arm_vmvnq_x_u32): Remove.
8495         (__arm_vmvnq_x_n_s16): Remove.
8496         (__arm_vmvnq_x_n_s32): Remove.
8497         (__arm_vmvnq_x_n_u16): Remove.
8498         (__arm_vmvnq_x_n_u32): Remove.
8499         (__arm_vmvnq): Remove.
8500         (__arm_vmvnq_m): Remove.
8501         (__arm_vmvnq_x): Remove.
8503 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8505         * config/arm/iterators.md (mve_insn): Add vmvn.
8506         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
8507         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8508         (mve_vmvnq_m_<supf><mode>): Rename into ...
8509         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
8510         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
8511         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8513 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8515         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
8516         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
8518 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8520         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
8521         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
8522         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
8523         * config/arm/arm_mve.h (vbrsrq): Remove.
8524         (vbrsrq_m): Remove.
8525         (vbrsrq_x): Remove.
8526         (vbrsrq_n_f16): Remove.
8527         (vbrsrq_n_f32): Remove.
8528         (vbrsrq_n_u8): Remove.
8529         (vbrsrq_n_s8): Remove.
8530         (vbrsrq_n_u16): Remove.
8531         (vbrsrq_n_s16): Remove.
8532         (vbrsrq_n_u32): Remove.
8533         (vbrsrq_n_s32): Remove.
8534         (vbrsrq_m_n_s8): Remove.
8535         (vbrsrq_m_n_s32): Remove.
8536         (vbrsrq_m_n_s16): Remove.
8537         (vbrsrq_m_n_u8): Remove.
8538         (vbrsrq_m_n_u32): Remove.
8539         (vbrsrq_m_n_u16): Remove.
8540         (vbrsrq_m_n_f32): Remove.
8541         (vbrsrq_m_n_f16): Remove.
8542         (vbrsrq_x_n_s8): Remove.
8543         (vbrsrq_x_n_s16): Remove.
8544         (vbrsrq_x_n_s32): Remove.
8545         (vbrsrq_x_n_u8): Remove.
8546         (vbrsrq_x_n_u16): Remove.
8547         (vbrsrq_x_n_u32): Remove.
8548         (vbrsrq_x_n_f16): Remove.
8549         (vbrsrq_x_n_f32): Remove.
8550         (__arm_vbrsrq_n_u8): Remove.
8551         (__arm_vbrsrq_n_s8): Remove.
8552         (__arm_vbrsrq_n_u16): Remove.
8553         (__arm_vbrsrq_n_s16): Remove.
8554         (__arm_vbrsrq_n_u32): Remove.
8555         (__arm_vbrsrq_n_s32): Remove.
8556         (__arm_vbrsrq_m_n_s8): Remove.
8557         (__arm_vbrsrq_m_n_s32): Remove.
8558         (__arm_vbrsrq_m_n_s16): Remove.
8559         (__arm_vbrsrq_m_n_u8): Remove.
8560         (__arm_vbrsrq_m_n_u32): Remove.
8561         (__arm_vbrsrq_m_n_u16): Remove.
8562         (__arm_vbrsrq_x_n_s8): Remove.
8563         (__arm_vbrsrq_x_n_s16): Remove.
8564         (__arm_vbrsrq_x_n_s32): Remove.
8565         (__arm_vbrsrq_x_n_u8): Remove.
8566         (__arm_vbrsrq_x_n_u16): Remove.
8567         (__arm_vbrsrq_x_n_u32): Remove.
8568         (__arm_vbrsrq_n_f16): Remove.
8569         (__arm_vbrsrq_n_f32): Remove.
8570         (__arm_vbrsrq_m_n_f32): Remove.
8571         (__arm_vbrsrq_m_n_f16): Remove.
8572         (__arm_vbrsrq_x_n_f16): Remove.
8573         (__arm_vbrsrq_x_n_f32): Remove.
8574         (__arm_vbrsrq): Remove.
8575         (__arm_vbrsrq_m): Remove.
8576         (__arm_vbrsrq_x): Remove.
8578 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8580         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
8581         (mve_insn): Add vbrsr.
8582         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
8583         (@mve_<mve_insn>q_n_f<mode>): ... this.
8584         (mve_vbrsrq_n_<supf><mode>): Rename into ...
8585         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8586         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
8587         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8588         (mve_vbrsrq_m_n_f<mode>): Rename into ...
8589         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
8591 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8593         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
8594         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
8596 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8598         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
8599         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
8600         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
8601         * config/arm/arm_mve.h (vqshluq): Remove.
8602         (vqshluq_m): Remove.
8603         (vqshluq_n_s8): Remove.
8604         (vqshluq_n_s16): Remove.
8605         (vqshluq_n_s32): Remove.
8606         (vqshluq_m_n_s8): Remove.
8607         (vqshluq_m_n_s16): Remove.
8608         (vqshluq_m_n_s32): Remove.
8609         (__arm_vqshluq_n_s8): Remove.
8610         (__arm_vqshluq_n_s16): Remove.
8611         (__arm_vqshluq_n_s32): Remove.
8612         (__arm_vqshluq_m_n_s8): Remove.
8613         (__arm_vqshluq_m_n_s16): Remove.
8614         (__arm_vqshluq_m_n_s32): Remove.
8615         (__arm_vqshluq): Remove.
8616         (__arm_vqshluq_m): Remove.
8618 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8620         * config/arm/iterators.md (mve_insn): Add vqshlu.
8621         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
8622         (VQSHLUQ_M_N, VQSHLUQ_N): New.
8623         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
8624         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8625         (mve_vqshluq_m_n_s<mode>): Change name into ...
8626         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8628 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8630         * config/arm/arm-mve-builtins-shapes.cc
8631         (binary_lshift_unsigned): New.
8632         * config/arm/arm-mve-builtins-shapes.h
8633         (binary_lshift_unsigned): New.
8635 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8637         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
8638         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
8639         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
8640         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
8641         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
8642         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
8643         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
8644         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
8645         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
8646         (vrmlaldavhaxq): Remove.
8647         (vrmlsldavhaq): Remove.
8648         (vrmlsldavhaxq): Remove.
8649         (vrmlaldavhaq_p): Remove.
8650         (vrmlaldavhaxq_p): Remove.
8651         (vrmlsldavhaq_p): Remove.
8652         (vrmlsldavhaxq_p): Remove.
8653         (vrmlaldavhaq_s32): Remove.
8654         (vrmlaldavhaq_u32): Remove.
8655         (vrmlaldavhaxq_s32): Remove.
8656         (vrmlsldavhaq_s32): Remove.
8657         (vrmlsldavhaxq_s32): Remove.
8658         (vrmlaldavhaq_p_s32): Remove.
8659         (vrmlaldavhaq_p_u32): Remove.
8660         (vrmlaldavhaxq_p_s32): Remove.
8661         (vrmlsldavhaq_p_s32): Remove.
8662         (vrmlsldavhaxq_p_s32): Remove.
8663         (__arm_vrmlaldavhaq_s32): Remove.
8664         (__arm_vrmlaldavhaq_u32): Remove.
8665         (__arm_vrmlaldavhaxq_s32): Remove.
8666         (__arm_vrmlsldavhaq_s32): Remove.
8667         (__arm_vrmlsldavhaxq_s32): Remove.
8668         (__arm_vrmlaldavhaq_p_s32): Remove.
8669         (__arm_vrmlaldavhaq_p_u32): Remove.
8670         (__arm_vrmlaldavhaxq_p_s32): Remove.
8671         (__arm_vrmlsldavhaq_p_s32): Remove.
8672         (__arm_vrmlsldavhaxq_p_s32): Remove.
8673         (__arm_vrmlaldavhaq): Remove.
8674         (__arm_vrmlaldavhaxq): Remove.
8675         (__arm_vrmlsldavhaq): Remove.
8676         (__arm_vrmlsldavhaxq): Remove.
8677         (__arm_vrmlaldavhaq_p): Remove.
8678         (__arm_vrmlaldavhaxq_p): Remove.
8679         (__arm_vrmlsldavhaq_p): Remove.
8680         (__arm_vrmlsldavhaxq_p): Remove.
8682 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8684         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
8685         (MVE_VRMLxLDAVHAxQ_P): New.
8686         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
8687         vrmlsldavhax.
8688         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
8689         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
8690         VRMLALDAVHAQ_P_S.
8691         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
8692         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
8693         (mve_vrmlsldavhaq_sv4si): Merge into ...
8694         (@mve_<mve_insn>q_<supf>v4si): ... this.
8695         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
8696         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
8697         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
8698         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
8700 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8702         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
8703         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
8704         New.
8705         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
8706         * config/arm/arm_mve.h (vqdmulltq): Remove.
8707         (vqdmullbq): Remove.
8708         (vqdmullbq_m): Remove.
8709         (vqdmulltq_m): Remove.
8710         (vqdmulltq_s16): Remove.
8711         (vqdmulltq_n_s16): Remove.
8712         (vqdmullbq_s16): Remove.
8713         (vqdmullbq_n_s16): Remove.
8714         (vqdmulltq_s32): Remove.
8715         (vqdmulltq_n_s32): Remove.
8716         (vqdmullbq_s32): Remove.
8717         (vqdmullbq_n_s32): Remove.
8718         (vqdmullbq_m_n_s32): Remove.
8719         (vqdmullbq_m_n_s16): Remove.
8720         (vqdmullbq_m_s32): Remove.
8721         (vqdmullbq_m_s16): Remove.
8722         (vqdmulltq_m_n_s32): Remove.
8723         (vqdmulltq_m_n_s16): Remove.
8724         (vqdmulltq_m_s32): Remove.
8725         (vqdmulltq_m_s16): Remove.
8726         (__arm_vqdmulltq_s16): Remove.
8727         (__arm_vqdmulltq_n_s16): Remove.
8728         (__arm_vqdmullbq_s16): Remove.
8729         (__arm_vqdmullbq_n_s16): Remove.
8730         (__arm_vqdmulltq_s32): Remove.
8731         (__arm_vqdmulltq_n_s32): Remove.
8732         (__arm_vqdmullbq_s32): Remove.
8733         (__arm_vqdmullbq_n_s32): Remove.
8734         (__arm_vqdmullbq_m_n_s32): Remove.
8735         (__arm_vqdmullbq_m_n_s16): Remove.
8736         (__arm_vqdmullbq_m_s32): Remove.
8737         (__arm_vqdmullbq_m_s16): Remove.
8738         (__arm_vqdmulltq_m_n_s32): Remove.
8739         (__arm_vqdmulltq_m_n_s16): Remove.
8740         (__arm_vqdmulltq_m_s32): Remove.
8741         (__arm_vqdmulltq_m_s16): Remove.
8742         (__arm_vqdmulltq): Remove.
8743         (__arm_vqdmullbq): Remove.
8744         (__arm_vqdmullbq_m): Remove.
8745         (__arm_vqdmulltq_m): Remove.
8747 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8749         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
8750         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
8751         (mve_insn): Add vqdmullb, vqdmullt.
8752         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
8753         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
8754         VQDMULLTQ_N_S.
8755         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
8756         (mve_vqdmulltq_n_s<mode>): Merge into ...
8757         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8758         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
8759         (@mve_<mve_insn>q_<supf><mode>): ... this.
8760         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
8761         ...
8762         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8763         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
8764         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
8766 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
8768         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
8769         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
8771 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
8773         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
8774         Drop unused parameter.
8775         (riscv_select_multilib): Ditto.
8776         (riscv_compute_multilib): Update call site of
8777         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
8779 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
8781         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
8782         * config/riscv/riscv-protos.h (expand_vec_init): New function.
8783         * config/riscv/riscv-v.cc (class rvv_builder): New class.
8784         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
8785         (rvv_builder::get_merged_repeating_sequence): Ditto.
8786         (expand_vector_init_insert_elems): Ditto.
8787         (expand_vec_init): Ditto.
8788         * config/riscv/vector-iterators.md: New attribute.
8790 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
8792         * config/rs6000/rs6000-builtins.def
8793         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
8794         to xsiexpdp_di.
8795         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
8796         xsiexpdpf to xsiexpdpf_di.
8797         * config/rs6000/vsx.md (xsiexpdp): Rename to...
8798         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
8799         replace TARGET_64BIT with TARGET_POWERPC64.
8800         (xsiexpdpf): Rename to...
8801         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
8802         replace TARGET_64BIT with TARGET_POWERPC64.
8804 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
8806         * config/rs6000/rs6000-builtins.def
8807         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
8808         long long.
8809         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
8810         TARGET_POWERPC64.
8812 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
8814         * config/rs6000/rs6000-builtins.def
8815         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
8816         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
8817         to power9 catalog.
8818         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
8819         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
8820         TARGET_64BIT check.
8821         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
8822         requirement when it has a 64-bit argument.
8824 2023-05-12  Pan Li  <pan2.li@intel.com>
8825             Richard Sandiford  <richard.sandiford@arm.com>
8826             Richard Biener  <rguenther@suse.de>
8827             Jakub Jelinek  <jakub@redhat.com>
8829         * mux-utils.h: Add overload operator == and != for pointer_mux.
8830         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
8831         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
8832         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
8833         (dv_as_decl): Ditto.
8834         (dv_as_opaque): Removed due to unnecessary.
8835         (struct variable_hasher): Take decl_or_value as compare_type.
8836         (variable_hasher::equal): Diito.
8837         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
8838         (dv_from_value): Ditto.
8839         (attrs_list_member):  Ditto.
8840         (vars_copy): Ditto.
8841         (var_reg_decl_set): Ditto.
8842         (var_reg_delete_and_set): Ditto.
8843         (find_loc_in_1pdv): Ditto.
8844         (canonicalize_values_star): Ditto.
8845         (variable_post_merge_new_vals): Ditto.
8846         (dump_onepart_variable_differences): Ditto.
8847         (variable_different_p): Ditto.
8848         (set_slot_part): Ditto.
8849         (clobber_slot_part): Ditto.
8850         (clobber_variable_part): Ditto.
8852 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
8854         * match.pd: simplify vector shift + bit_and + multiply.
8856 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
8858         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
8859         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
8860         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
8861         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
8862         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
8863         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
8864         * config/arm/arm-mve-builtins.cc
8865         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
8866         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
8867         * config/arm/arm_mve.h (vqrdmlashq): Remove.
8868         (vqrdmlahq): Remove.
8869         (vqdmlashq): Remove.
8870         (vqdmlahq): Remove.
8871         (vmlasq): Remove.
8872         (vmlaq): Remove.
8873         (vmlaq_m): Remove.
8874         (vmlasq_m): Remove.
8875         (vqdmlashq_m): Remove.
8876         (vqdmlahq_m): Remove.
8877         (vqrdmlahq_m): Remove.
8878         (vqrdmlashq_m): Remove.
8879         (vmlasq_n_u8): Remove.
8880         (vmlaq_n_u8): Remove.
8881         (vqrdmlashq_n_s8): Remove.
8882         (vqrdmlahq_n_s8): Remove.
8883         (vqdmlahq_n_s8): Remove.
8884         (vqdmlashq_n_s8): Remove.
8885         (vmlasq_n_s8): Remove.
8886         (vmlaq_n_s8): Remove.
8887         (vmlasq_n_u16): Remove.
8888         (vmlaq_n_u16): Remove.
8889         (vqrdmlashq_n_s16): Remove.
8890         (vqrdmlahq_n_s16): Remove.
8891         (vqdmlashq_n_s16): Remove.
8892         (vqdmlahq_n_s16): Remove.
8893         (vmlasq_n_s16): Remove.
8894         (vmlaq_n_s16): Remove.
8895         (vmlasq_n_u32): Remove.
8896         (vmlaq_n_u32): Remove.
8897         (vqrdmlashq_n_s32): Remove.
8898         (vqrdmlahq_n_s32): Remove.
8899         (vqdmlashq_n_s32): Remove.
8900         (vqdmlahq_n_s32): Remove.
8901         (vmlasq_n_s32): Remove.
8902         (vmlaq_n_s32): Remove.
8903         (vmlaq_m_n_s8): Remove.
8904         (vmlaq_m_n_s32): Remove.
8905         (vmlaq_m_n_s16): Remove.
8906         (vmlaq_m_n_u8): Remove.
8907         (vmlaq_m_n_u32): Remove.
8908         (vmlaq_m_n_u16): Remove.
8909         (vmlasq_m_n_s8): Remove.
8910         (vmlasq_m_n_s32): Remove.
8911         (vmlasq_m_n_s16): Remove.
8912         (vmlasq_m_n_u8): Remove.
8913         (vmlasq_m_n_u32): Remove.
8914         (vmlasq_m_n_u16): Remove.
8915         (vqdmlashq_m_n_s8): Remove.
8916         (vqdmlashq_m_n_s32): Remove.
8917         (vqdmlashq_m_n_s16): Remove.
8918         (vqdmlahq_m_n_s8): Remove.
8919         (vqdmlahq_m_n_s32): Remove.
8920         (vqdmlahq_m_n_s16): Remove.
8921         (vqrdmlahq_m_n_s8): Remove.
8922         (vqrdmlahq_m_n_s32): Remove.
8923         (vqrdmlahq_m_n_s16): Remove.
8924         (vqrdmlashq_m_n_s8): Remove.
8925         (vqrdmlashq_m_n_s32): Remove.
8926         (vqrdmlashq_m_n_s16): Remove.
8927         (__arm_vmlasq_n_u8): Remove.
8928         (__arm_vmlaq_n_u8): Remove.
8929         (__arm_vqrdmlashq_n_s8): Remove.
8930         (__arm_vqdmlashq_n_s8): Remove.
8931         (__arm_vqrdmlahq_n_s8): Remove.
8932         (__arm_vqdmlahq_n_s8): Remove.
8933         (__arm_vmlasq_n_s8): Remove.
8934         (__arm_vmlaq_n_s8): Remove.
8935         (__arm_vmlasq_n_u16): Remove.
8936         (__arm_vmlaq_n_u16): Remove.
8937         (__arm_vqrdmlashq_n_s16): Remove.
8938         (__arm_vqdmlashq_n_s16): Remove.
8939         (__arm_vqrdmlahq_n_s16): Remove.
8940         (__arm_vqdmlahq_n_s16): Remove.
8941         (__arm_vmlasq_n_s16): Remove.
8942         (__arm_vmlaq_n_s16): Remove.
8943         (__arm_vmlasq_n_u32): Remove.
8944         (__arm_vmlaq_n_u32): Remove.
8945         (__arm_vqrdmlashq_n_s32): Remove.
8946         (__arm_vqdmlashq_n_s32): Remove.
8947         (__arm_vqrdmlahq_n_s32): Remove.
8948         (__arm_vqdmlahq_n_s32): Remove.
8949         (__arm_vmlasq_n_s32): Remove.
8950         (__arm_vmlaq_n_s32): Remove.
8951         (__arm_vmlaq_m_n_s8): Remove.
8952         (__arm_vmlaq_m_n_s32): Remove.
8953         (__arm_vmlaq_m_n_s16): Remove.
8954         (__arm_vmlaq_m_n_u8): Remove.
8955         (__arm_vmlaq_m_n_u32): Remove.
8956         (__arm_vmlaq_m_n_u16): Remove.
8957         (__arm_vmlasq_m_n_s8): Remove.
8958         (__arm_vmlasq_m_n_s32): Remove.
8959         (__arm_vmlasq_m_n_s16): Remove.
8960         (__arm_vmlasq_m_n_u8): Remove.
8961         (__arm_vmlasq_m_n_u32): Remove.
8962         (__arm_vmlasq_m_n_u16): Remove.
8963         (__arm_vqdmlahq_m_n_s8): Remove.
8964         (__arm_vqdmlahq_m_n_s32): Remove.
8965         (__arm_vqdmlahq_m_n_s16): Remove.
8966         (__arm_vqrdmlahq_m_n_s8): Remove.
8967         (__arm_vqrdmlahq_m_n_s32): Remove.
8968         (__arm_vqrdmlahq_m_n_s16): Remove.
8969         (__arm_vqrdmlashq_m_n_s8): Remove.
8970         (__arm_vqrdmlashq_m_n_s32): Remove.
8971         (__arm_vqrdmlashq_m_n_s16): Remove.
8972         (__arm_vqdmlashq_m_n_s8): Remove.
8973         (__arm_vqdmlashq_m_n_s16): Remove.
8974         (__arm_vqdmlashq_m_n_s32): Remove.
8975         (__arm_vmlasq): Remove.
8976         (__arm_vmlaq): Remove.
8977         (__arm_vqrdmlashq): Remove.
8978         (__arm_vqdmlashq): Remove.
8979         (__arm_vqrdmlahq): Remove.
8980         (__arm_vqdmlahq): Remove.
8981         (__arm_vmlaq_m): Remove.
8982         (__arm_vmlasq_m): Remove.
8983         (__arm_vqdmlahq_m): Remove.
8984         (__arm_vqrdmlahq_m): Remove.
8985         (__arm_vqrdmlashq_m): Remove.
8986         (__arm_vqdmlashq_m): Remove.
8988 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
8990         * config/arm/iterators.md (MVE_VMLxQ_N): New.
8991         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
8992         vqrdmlash.
8993         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
8994         VQRDMLASHQ_N_S.
8995         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
8996         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
8997         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
8998         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
8999         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9001 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9003         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
9004         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
9006 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9008         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
9009         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
9010         (vqrdmlsdhxq): New.
9011         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
9012         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
9013         (vqrdmlsdhxq): New.
9014         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
9015         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
9016         (vqrdmlsdhxq): New.
9017         * config/arm/arm-mve-builtins.cc
9018         (function_instance::has_inactive_argument): Handle vqrdmladhq,
9019         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
9020         vqdmlsdhq, vqdmlsdhxq.
9021         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
9022         (vqrdmlsdhq): Remove.
9023         (vqrdmladhxq): Remove.
9024         (vqrdmladhq): Remove.
9025         (vqdmlsdhxq): Remove.
9026         (vqdmlsdhq): Remove.
9027         (vqdmladhxq): Remove.
9028         (vqdmladhq): Remove.
9029         (vqdmladhq_m): Remove.
9030         (vqdmladhxq_m): Remove.
9031         (vqdmlsdhq_m): Remove.
9032         (vqdmlsdhxq_m): Remove.
9033         (vqrdmladhq_m): Remove.
9034         (vqrdmladhxq_m): Remove.
9035         (vqrdmlsdhq_m): Remove.
9036         (vqrdmlsdhxq_m): Remove.
9037         (vqrdmlsdhxq_s8): Remove.
9038         (vqrdmlsdhq_s8): Remove.
9039         (vqrdmladhxq_s8): Remove.
9040         (vqrdmladhq_s8): Remove.
9041         (vqdmlsdhxq_s8): Remove.
9042         (vqdmlsdhq_s8): Remove.
9043         (vqdmladhxq_s8): Remove.
9044         (vqdmladhq_s8): Remove.
9045         (vqrdmlsdhxq_s16): Remove.
9046         (vqrdmlsdhq_s16): Remove.
9047         (vqrdmladhxq_s16): Remove.
9048         (vqrdmladhq_s16): Remove.
9049         (vqdmlsdhxq_s16): Remove.
9050         (vqdmlsdhq_s16): Remove.
9051         (vqdmladhxq_s16): Remove.
9052         (vqdmladhq_s16): Remove.
9053         (vqrdmlsdhxq_s32): Remove.
9054         (vqrdmlsdhq_s32): Remove.
9055         (vqrdmladhxq_s32): Remove.
9056         (vqrdmladhq_s32): Remove.
9057         (vqdmlsdhxq_s32): Remove.
9058         (vqdmlsdhq_s32): Remove.
9059         (vqdmladhxq_s32): Remove.
9060         (vqdmladhq_s32): Remove.
9061         (vqdmladhq_m_s8): Remove.
9062         (vqdmladhq_m_s32): Remove.
9063         (vqdmladhq_m_s16): Remove.
9064         (vqdmladhxq_m_s8): Remove.
9065         (vqdmladhxq_m_s32): Remove.
9066         (vqdmladhxq_m_s16): Remove.
9067         (vqdmlsdhq_m_s8): Remove.
9068         (vqdmlsdhq_m_s32): Remove.
9069         (vqdmlsdhq_m_s16): Remove.
9070         (vqdmlsdhxq_m_s8): Remove.
9071         (vqdmlsdhxq_m_s32): Remove.
9072         (vqdmlsdhxq_m_s16): Remove.
9073         (vqrdmladhq_m_s8): Remove.
9074         (vqrdmladhq_m_s32): Remove.
9075         (vqrdmladhq_m_s16): Remove.
9076         (vqrdmladhxq_m_s8): Remove.
9077         (vqrdmladhxq_m_s32): Remove.
9078         (vqrdmladhxq_m_s16): Remove.
9079         (vqrdmlsdhq_m_s8): Remove.
9080         (vqrdmlsdhq_m_s32): Remove.
9081         (vqrdmlsdhq_m_s16): Remove.
9082         (vqrdmlsdhxq_m_s8): Remove.
9083         (vqrdmlsdhxq_m_s32): Remove.
9084         (vqrdmlsdhxq_m_s16): Remove.
9085         (__arm_vqrdmlsdhxq_s8): Remove.
9086         (__arm_vqrdmlsdhq_s8): Remove.
9087         (__arm_vqrdmladhxq_s8): Remove.
9088         (__arm_vqrdmladhq_s8): Remove.
9089         (__arm_vqdmlsdhxq_s8): Remove.
9090         (__arm_vqdmlsdhq_s8): Remove.
9091         (__arm_vqdmladhxq_s8): Remove.
9092         (__arm_vqdmladhq_s8): Remove.
9093         (__arm_vqrdmlsdhxq_s16): Remove.
9094         (__arm_vqrdmlsdhq_s16): Remove.
9095         (__arm_vqrdmladhxq_s16): Remove.
9096         (__arm_vqrdmladhq_s16): Remove.
9097         (__arm_vqdmlsdhxq_s16): Remove.
9098         (__arm_vqdmlsdhq_s16): Remove.
9099         (__arm_vqdmladhxq_s16): Remove.
9100         (__arm_vqdmladhq_s16): Remove.
9101         (__arm_vqrdmlsdhxq_s32): Remove.
9102         (__arm_vqrdmlsdhq_s32): Remove.
9103         (__arm_vqrdmladhxq_s32): Remove.
9104         (__arm_vqrdmladhq_s32): Remove.
9105         (__arm_vqdmlsdhxq_s32): Remove.
9106         (__arm_vqdmlsdhq_s32): Remove.
9107         (__arm_vqdmladhxq_s32): Remove.
9108         (__arm_vqdmladhq_s32): Remove.
9109         (__arm_vqdmladhq_m_s8): Remove.
9110         (__arm_vqdmladhq_m_s32): Remove.
9111         (__arm_vqdmladhq_m_s16): Remove.
9112         (__arm_vqdmladhxq_m_s8): Remove.
9113         (__arm_vqdmladhxq_m_s32): Remove.
9114         (__arm_vqdmladhxq_m_s16): Remove.
9115         (__arm_vqdmlsdhq_m_s8): Remove.
9116         (__arm_vqdmlsdhq_m_s32): Remove.
9117         (__arm_vqdmlsdhq_m_s16): Remove.
9118         (__arm_vqdmlsdhxq_m_s8): Remove.
9119         (__arm_vqdmlsdhxq_m_s32): Remove.
9120         (__arm_vqdmlsdhxq_m_s16): Remove.
9121         (__arm_vqrdmladhq_m_s8): Remove.
9122         (__arm_vqrdmladhq_m_s32): Remove.
9123         (__arm_vqrdmladhq_m_s16): Remove.
9124         (__arm_vqrdmladhxq_m_s8): Remove.
9125         (__arm_vqrdmladhxq_m_s32): Remove.
9126         (__arm_vqrdmladhxq_m_s16): Remove.
9127         (__arm_vqrdmlsdhq_m_s8): Remove.
9128         (__arm_vqrdmlsdhq_m_s32): Remove.
9129         (__arm_vqrdmlsdhq_m_s16): Remove.
9130         (__arm_vqrdmlsdhxq_m_s8): Remove.
9131         (__arm_vqrdmlsdhxq_m_s32): Remove.
9132         (__arm_vqrdmlsdhxq_m_s16): Remove.
9133         (__arm_vqrdmlsdhxq): Remove.
9134         (__arm_vqrdmlsdhq): Remove.
9135         (__arm_vqrdmladhxq): Remove.
9136         (__arm_vqrdmladhq): Remove.
9137         (__arm_vqdmlsdhxq): Remove.
9138         (__arm_vqdmlsdhq): Remove.
9139         (__arm_vqdmladhxq): Remove.
9140         (__arm_vqdmladhq): Remove.
9141         (__arm_vqdmladhq_m): Remove.
9142         (__arm_vqdmladhxq_m): Remove.
9143         (__arm_vqdmlsdhq_m): Remove.
9144         (__arm_vqdmlsdhxq_m): Remove.
9145         (__arm_vqrdmladhq_m): Remove.
9146         (__arm_vqrdmladhxq_m): Remove.
9147         (__arm_vqrdmlsdhq_m): Remove.
9148         (__arm_vqrdmlsdhxq_m): Remove.
9150 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9152         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
9153         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
9154         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
9155         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
9156         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
9157         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
9158         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
9159         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
9160         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
9161         (mve_vqdmladhq_s<mode>): Merge into ...
9162         (@mve_<mve_insn>q_<supf><mode>): ... this.
9164 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9166         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
9167         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
9169 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9171         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
9172         (vmlsldavaq, vmlsldavaxq): New.
9173         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
9174         (vmlsldavaq, vmlsldavaxq): New.
9175         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
9176         (vmlsldavaq, vmlsldavaxq): New.
9177         * config/arm/arm_mve.h (vmlaldavaq): Remove.
9178         (vmlaldavaxq): Remove.
9179         (vmlsldavaq): Remove.
9180         (vmlsldavaxq): Remove.
9181         (vmlaldavaq_p): Remove.
9182         (vmlaldavaxq_p): Remove.
9183         (vmlsldavaq_p): Remove.
9184         (vmlsldavaxq_p): Remove.
9185         (vmlaldavaq_s16): Remove.
9186         (vmlaldavaxq_s16): Remove.
9187         (vmlsldavaq_s16): Remove.
9188         (vmlsldavaxq_s16): Remove.
9189         (vmlaldavaq_u16): Remove.
9190         (vmlaldavaq_s32): Remove.
9191         (vmlaldavaxq_s32): Remove.
9192         (vmlsldavaq_s32): Remove.
9193         (vmlsldavaxq_s32): Remove.
9194         (vmlaldavaq_u32): Remove.
9195         (vmlaldavaq_p_s32): Remove.
9196         (vmlaldavaq_p_s16): Remove.
9197         (vmlaldavaq_p_u32): Remove.
9198         (vmlaldavaq_p_u16): Remove.
9199         (vmlaldavaxq_p_s32): Remove.
9200         (vmlaldavaxq_p_s16): Remove.
9201         (vmlsldavaq_p_s32): Remove.
9202         (vmlsldavaq_p_s16): Remove.
9203         (vmlsldavaxq_p_s32): Remove.
9204         (vmlsldavaxq_p_s16): Remove.
9205         (__arm_vmlaldavaq_s16): Remove.
9206         (__arm_vmlaldavaxq_s16): Remove.
9207         (__arm_vmlsldavaq_s16): Remove.
9208         (__arm_vmlsldavaxq_s16): Remove.
9209         (__arm_vmlaldavaq_u16): Remove.
9210         (__arm_vmlaldavaq_s32): Remove.
9211         (__arm_vmlaldavaxq_s32): Remove.
9212         (__arm_vmlsldavaq_s32): Remove.
9213         (__arm_vmlsldavaxq_s32): Remove.
9214         (__arm_vmlaldavaq_u32): Remove.
9215         (__arm_vmlaldavaq_p_s32): Remove.
9216         (__arm_vmlaldavaq_p_s16): Remove.
9217         (__arm_vmlaldavaq_p_u32): Remove.
9218         (__arm_vmlaldavaq_p_u16): Remove.
9219         (__arm_vmlaldavaxq_p_s32): Remove.
9220         (__arm_vmlaldavaxq_p_s16): Remove.
9221         (__arm_vmlsldavaq_p_s32): Remove.
9222         (__arm_vmlsldavaq_p_s16): Remove.
9223         (__arm_vmlsldavaxq_p_s32): Remove.
9224         (__arm_vmlsldavaxq_p_s16): Remove.
9225         (__arm_vmlaldavaq): Remove.
9226         (__arm_vmlaldavaxq): Remove.
9227         (__arm_vmlsldavaq): Remove.
9228         (__arm_vmlsldavaxq): Remove.
9229         (__arm_vmlaldavaq_p): Remove.
9230         (__arm_vmlaldavaxq_p): Remove.
9231         (__arm_vmlsldavaq_p): Remove.
9232         (__arm_vmlsldavaxq_p): Remove.
9234 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9236         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
9237         New.
9238         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
9239         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
9240         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
9241         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
9242         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
9243         (mve_vmlaldavaxq_s<mode>): Merge into ...
9244         (@mve_<mve_insn>q_<supf><mode>): ... this.
9245         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
9246         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
9247         ...
9248         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9250 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9252         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
9253         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
9255 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9257         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
9258         (vrmlsldavhq, vrmlsldavhxq): New.
9259         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
9260         (vrmlsldavhq, vrmlsldavhxq): New.
9261         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
9262         (vrmlsldavhq, vrmlsldavhxq): New.
9263         * config/arm/arm-mve-builtins-functions.h
9264         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
9265         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
9266         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
9267         (vrmlsldavhxq): Remove.
9268         (vrmlsldavhq): Remove.
9269         (vrmlaldavhxq): Remove.
9270         (vrmlaldavhq_p): Remove.
9271         (vrmlaldavhxq_p): Remove.
9272         (vrmlsldavhq_p): Remove.
9273         (vrmlsldavhxq_p): Remove.
9274         (vrmlaldavhq_u32): Remove.
9275         (vrmlsldavhxq_s32): Remove.
9276         (vrmlsldavhq_s32): Remove.
9277         (vrmlaldavhxq_s32): Remove.
9278         (vrmlaldavhq_s32): Remove.
9279         (vrmlaldavhq_p_s32): Remove.
9280         (vrmlaldavhxq_p_s32): Remove.
9281         (vrmlsldavhq_p_s32): Remove.
9282         (vrmlsldavhxq_p_s32): Remove.
9283         (vrmlaldavhq_p_u32): Remove.
9284         (__arm_vrmlaldavhq_u32): Remove.
9285         (__arm_vrmlsldavhxq_s32): Remove.
9286         (__arm_vrmlsldavhq_s32): Remove.
9287         (__arm_vrmlaldavhxq_s32): Remove.
9288         (__arm_vrmlaldavhq_s32): Remove.
9289         (__arm_vrmlaldavhq_p_s32): Remove.
9290         (__arm_vrmlaldavhxq_p_s32): Remove.
9291         (__arm_vrmlsldavhq_p_s32): Remove.
9292         (__arm_vrmlsldavhxq_p_s32): Remove.
9293         (__arm_vrmlaldavhq_p_u32): Remove.
9294         (__arm_vrmlaldavhq): Remove.
9295         (__arm_vrmlsldavhxq): Remove.
9296         (__arm_vrmlsldavhq): Remove.
9297         (__arm_vrmlaldavhxq): Remove.
9298         (__arm_vrmlaldavhq_p): Remove.
9299         (__arm_vrmlaldavhxq_p): Remove.
9300         (__arm_vrmlsldavhq_p): Remove.
9301         (__arm_vrmlsldavhxq_p): Remove.
9303 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9305         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
9306         New.
9307         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
9308         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
9309         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
9310         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
9311         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
9312         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
9313         (@mve_<mve_insn>q_<supf>v4si): ... this.
9314         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
9315         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
9316         into ...
9317         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
9319 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9321         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
9322         (vmlsldavq, vmlsldavxq): New.
9323         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
9324         (vmlsldavq, vmlsldavxq): New.
9325         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
9326         (vmlsldavq, vmlsldavxq): New.
9327         * config/arm/arm_mve.h (vmlaldavq): Remove.
9328         (vmlsldavxq): Remove.
9329         (vmlsldavq): Remove.
9330         (vmlaldavxq): Remove.
9331         (vmlaldavq_p): Remove.
9332         (vmlaldavxq_p): Remove.
9333         (vmlsldavq_p): Remove.
9334         (vmlsldavxq_p): Remove.
9335         (vmlaldavq_u16): Remove.
9336         (vmlsldavxq_s16): Remove.
9337         (vmlsldavq_s16): Remove.
9338         (vmlaldavxq_s16): Remove.
9339         (vmlaldavq_s16): Remove.
9340         (vmlaldavq_u32): Remove.
9341         (vmlsldavxq_s32): Remove.
9342         (vmlsldavq_s32): Remove.
9343         (vmlaldavxq_s32): Remove.
9344         (vmlaldavq_s32): Remove.
9345         (vmlaldavq_p_s16): Remove.
9346         (vmlaldavxq_p_s16): Remove.
9347         (vmlsldavq_p_s16): Remove.
9348         (vmlsldavxq_p_s16): Remove.
9349         (vmlaldavq_p_u16): Remove.
9350         (vmlaldavq_p_s32): Remove.
9351         (vmlaldavxq_p_s32): Remove.
9352         (vmlsldavq_p_s32): Remove.
9353         (vmlsldavxq_p_s32): Remove.
9354         (vmlaldavq_p_u32): Remove.
9355         (__arm_vmlaldavq_u16): Remove.
9356         (__arm_vmlsldavxq_s16): Remove.
9357         (__arm_vmlsldavq_s16): Remove.
9358         (__arm_vmlaldavxq_s16): Remove.
9359         (__arm_vmlaldavq_s16): Remove.
9360         (__arm_vmlaldavq_u32): Remove.
9361         (__arm_vmlsldavxq_s32): Remove.
9362         (__arm_vmlsldavq_s32): Remove.
9363         (__arm_vmlaldavxq_s32): Remove.
9364         (__arm_vmlaldavq_s32): Remove.
9365         (__arm_vmlaldavq_p_s16): Remove.
9366         (__arm_vmlaldavxq_p_s16): Remove.
9367         (__arm_vmlsldavq_p_s16): Remove.
9368         (__arm_vmlsldavxq_p_s16): Remove.
9369         (__arm_vmlaldavq_p_u16): Remove.
9370         (__arm_vmlaldavq_p_s32): Remove.
9371         (__arm_vmlaldavxq_p_s32): Remove.
9372         (__arm_vmlsldavq_p_s32): Remove.
9373         (__arm_vmlsldavxq_p_s32): Remove.
9374         (__arm_vmlaldavq_p_u32): Remove.
9375         (__arm_vmlaldavq): Remove.
9376         (__arm_vmlsldavxq): Remove.
9377         (__arm_vmlsldavq): Remove.
9378         (__arm_vmlaldavxq): Remove.
9379         (__arm_vmlaldavq_p): Remove.
9380         (__arm_vmlaldavxq_p): Remove.
9381         (__arm_vmlsldavq_p): Remove.
9382         (__arm_vmlsldavxq_p): Remove.
9384 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9386         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
9387         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
9388         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
9389         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
9390         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
9391         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
9392         (mve_vmlsldavxq_s<mode>): Merge into ...
9393         (@mve_<mve_insn>q_<supf><mode>): ... this.
9394         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
9395         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
9396         ...
9397         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9399 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9401         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
9402         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
9404 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9406         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
9407         * config/arm/arm-mve-builtins-base.def (vabavq): New.
9408         * config/arm/arm-mve-builtins-base.h (vabavq): New.
9409         * config/arm/arm_mve.h (vabavq): Remove.
9410         (vabavq_p): Remove.
9411         (vabavq_s8): Remove.
9412         (vabavq_s16): Remove.
9413         (vabavq_s32): Remove.
9414         (vabavq_u8): Remove.
9415         (vabavq_u16): Remove.
9416         (vabavq_u32): Remove.
9417         (vabavq_p_s8): Remove.
9418         (vabavq_p_u8): Remove.
9419         (vabavq_p_s16): Remove.
9420         (vabavq_p_u16): Remove.
9421         (vabavq_p_s32): Remove.
9422         (vabavq_p_u32): Remove.
9423         (__arm_vabavq_s8): Remove.
9424         (__arm_vabavq_s16): Remove.
9425         (__arm_vabavq_s32): Remove.
9426         (__arm_vabavq_u8): Remove.
9427         (__arm_vabavq_u16): Remove.
9428         (__arm_vabavq_u32): Remove.
9429         (__arm_vabavq_p_s8): Remove.
9430         (__arm_vabavq_p_u8): Remove.
9431         (__arm_vabavq_p_s16): Remove.
9432         (__arm_vabavq_p_u16): Remove.
9433         (__arm_vabavq_p_s32): Remove.
9434         (__arm_vabavq_p_u32): Remove.
9435         (__arm_vabavq): Remove.
9436         (__arm_vabavq_p): Remove.
9438 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9440         * config/arm/iterators.md (mve_insn): Add vabav.
9441         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
9442         (@mve_<mve_insn>q_<supf><mode>): ... this,.
9443         (mve_vabavq_p_<supf><mode>): Rename into ...
9444         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
9446 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9448         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
9449         (vmlsdavaq, vmlsdavaxq): New.
9450         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
9451         (vmlsdavaq, vmlsdavaxq): New.
9452         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
9453         (vmlsdavaq, vmlsdavaxq): New.
9454         * config/arm/arm_mve.h (vmladavaq): Remove.
9455         (vmlsdavaxq): Remove.
9456         (vmlsdavaq): Remove.
9457         (vmladavaxq): Remove.
9458         (vmladavaq_p): Remove.
9459         (vmladavaxq_p): Remove.
9460         (vmlsdavaq_p): Remove.
9461         (vmlsdavaxq_p): Remove.
9462         (vmladavaq_u8): Remove.
9463         (vmlsdavaxq_s8): Remove.
9464         (vmlsdavaq_s8): Remove.
9465         (vmladavaxq_s8): Remove.
9466         (vmladavaq_s8): Remove.
9467         (vmladavaq_u16): Remove.
9468         (vmlsdavaxq_s16): Remove.
9469         (vmlsdavaq_s16): Remove.
9470         (vmladavaxq_s16): Remove.
9471         (vmladavaq_s16): Remove.
9472         (vmladavaq_u32): Remove.
9473         (vmlsdavaxq_s32): Remove.
9474         (vmlsdavaq_s32): Remove.
9475         (vmladavaxq_s32): Remove.
9476         (vmladavaq_s32): Remove.
9477         (vmladavaq_p_s8): Remove.
9478         (vmladavaq_p_s32): Remove.
9479         (vmladavaq_p_s16): Remove.
9480         (vmladavaq_p_u8): Remove.
9481         (vmladavaq_p_u32): Remove.
9482         (vmladavaq_p_u16): Remove.
9483         (vmladavaxq_p_s8): Remove.
9484         (vmladavaxq_p_s32): Remove.
9485         (vmladavaxq_p_s16): Remove.
9486         (vmlsdavaq_p_s8): Remove.
9487         (vmlsdavaq_p_s32): Remove.
9488         (vmlsdavaq_p_s16): Remove.
9489         (vmlsdavaxq_p_s8): Remove.
9490         (vmlsdavaxq_p_s32): Remove.
9491         (vmlsdavaxq_p_s16): Remove.
9492         (__arm_vmladavaq_u8): Remove.
9493         (__arm_vmlsdavaxq_s8): Remove.
9494         (__arm_vmlsdavaq_s8): Remove.
9495         (__arm_vmladavaxq_s8): Remove.
9496         (__arm_vmladavaq_s8): Remove.
9497         (__arm_vmladavaq_u16): Remove.
9498         (__arm_vmlsdavaxq_s16): Remove.
9499         (__arm_vmlsdavaq_s16): Remove.
9500         (__arm_vmladavaxq_s16): Remove.
9501         (__arm_vmladavaq_s16): Remove.
9502         (__arm_vmladavaq_u32): Remove.
9503         (__arm_vmlsdavaxq_s32): Remove.
9504         (__arm_vmlsdavaq_s32): Remove.
9505         (__arm_vmladavaxq_s32): Remove.
9506         (__arm_vmladavaq_s32): Remove.
9507         (__arm_vmladavaq_p_s8): Remove.
9508         (__arm_vmladavaq_p_s32): Remove.
9509         (__arm_vmladavaq_p_s16): Remove.
9510         (__arm_vmladavaq_p_u8): Remove.
9511         (__arm_vmladavaq_p_u32): Remove.
9512         (__arm_vmladavaq_p_u16): Remove.
9513         (__arm_vmladavaxq_p_s8): Remove.
9514         (__arm_vmladavaxq_p_s32): Remove.
9515         (__arm_vmladavaxq_p_s16): Remove.
9516         (__arm_vmlsdavaq_p_s8): Remove.
9517         (__arm_vmlsdavaq_p_s32): Remove.
9518         (__arm_vmlsdavaq_p_s16): Remove.
9519         (__arm_vmlsdavaxq_p_s8): Remove.
9520         (__arm_vmlsdavaxq_p_s32): Remove.
9521         (__arm_vmlsdavaxq_p_s16): Remove.
9522         (__arm_vmladavaq): Remove.
9523         (__arm_vmlsdavaxq): Remove.
9524         (__arm_vmlsdavaq): Remove.
9525         (__arm_vmladavaxq): Remove.
9526         (__arm_vmladavaq_p): Remove.
9527         (__arm_vmladavaxq_p): Remove.
9528         (__arm_vmlsdavaq_p): Remove.
9529         (__arm_vmlsdavaxq_p): Remove.
9531 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9533         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
9534         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
9536 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9538         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
9539         (vmlsdavq, vmlsdavxq): New.
9540         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
9541         (vmlsdavq, vmlsdavxq): New.
9542         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
9543         (vmlsdavq, vmlsdavxq): New.
9544         * config/arm/arm_mve.h (vmladavq): Remove.
9545         (vmlsdavxq): Remove.
9546         (vmlsdavq): Remove.
9547         (vmladavxq): Remove.
9548         (vmladavq_p): Remove.
9549         (vmlsdavxq_p): Remove.
9550         (vmlsdavq_p): Remove.
9551         (vmladavxq_p): Remove.
9552         (vmladavq_u8): Remove.
9553         (vmlsdavxq_s8): Remove.
9554         (vmlsdavq_s8): Remove.
9555         (vmladavxq_s8): Remove.
9556         (vmladavq_s8): Remove.
9557         (vmladavq_u16): Remove.
9558         (vmlsdavxq_s16): Remove.
9559         (vmlsdavq_s16): Remove.
9560         (vmladavxq_s16): Remove.
9561         (vmladavq_s16): Remove.
9562         (vmladavq_u32): Remove.
9563         (vmlsdavxq_s32): Remove.
9564         (vmlsdavq_s32): Remove.
9565         (vmladavxq_s32): Remove.
9566         (vmladavq_s32): Remove.
9567         (vmladavq_p_u8): Remove.
9568         (vmlsdavxq_p_s8): Remove.
9569         (vmlsdavq_p_s8): Remove.
9570         (vmladavxq_p_s8): Remove.
9571         (vmladavq_p_s8): Remove.
9572         (vmladavq_p_u16): Remove.
9573         (vmlsdavxq_p_s16): Remove.
9574         (vmlsdavq_p_s16): Remove.
9575         (vmladavxq_p_s16): Remove.
9576         (vmladavq_p_s16): Remove.
9577         (vmladavq_p_u32): Remove.
9578         (vmlsdavxq_p_s32): Remove.
9579         (vmlsdavq_p_s32): Remove.
9580         (vmladavxq_p_s32): Remove.
9581         (vmladavq_p_s32): Remove.
9582         (__arm_vmladavq_u8): Remove.
9583         (__arm_vmlsdavxq_s8): Remove.
9584         (__arm_vmlsdavq_s8): Remove.
9585         (__arm_vmladavxq_s8): Remove.
9586         (__arm_vmladavq_s8): Remove.
9587         (__arm_vmladavq_u16): Remove.
9588         (__arm_vmlsdavxq_s16): Remove.
9589         (__arm_vmlsdavq_s16): Remove.
9590         (__arm_vmladavxq_s16): Remove.
9591         (__arm_vmladavq_s16): Remove.
9592         (__arm_vmladavq_u32): Remove.
9593         (__arm_vmlsdavxq_s32): Remove.
9594         (__arm_vmlsdavq_s32): Remove.
9595         (__arm_vmladavxq_s32): Remove.
9596         (__arm_vmladavq_s32): Remove.
9597         (__arm_vmladavq_p_u8): Remove.
9598         (__arm_vmlsdavxq_p_s8): Remove.
9599         (__arm_vmlsdavq_p_s8): Remove.
9600         (__arm_vmladavxq_p_s8): Remove.
9601         (__arm_vmladavq_p_s8): Remove.
9602         (__arm_vmladavq_p_u16): Remove.
9603         (__arm_vmlsdavxq_p_s16): Remove.
9604         (__arm_vmlsdavq_p_s16): Remove.
9605         (__arm_vmladavxq_p_s16): Remove.
9606         (__arm_vmladavq_p_s16): Remove.
9607         (__arm_vmladavq_p_u32): Remove.
9608         (__arm_vmlsdavxq_p_s32): Remove.
9609         (__arm_vmlsdavq_p_s32): Remove.
9610         (__arm_vmladavxq_p_s32): Remove.
9611         (__arm_vmladavq_p_s32): Remove.
9612         (__arm_vmladavq): Remove.
9613         (__arm_vmlsdavxq): Remove.
9614         (__arm_vmlsdavq): Remove.
9615         (__arm_vmladavxq): Remove.
9616         (__arm_vmladavq_p): Remove.
9617         (__arm_vmlsdavxq_p): Remove.
9618         (__arm_vmlsdavq_p): Remove.
9619         (__arm_vmladavxq_p): Remove.
9621 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9623         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
9624         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
9625         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
9626         vmlsdavax, vmlsdav, vmlsdavx.
9627         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
9628         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
9629         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
9630         VMLSDAVXQ_S.
9631         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
9632         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
9633         (mve_vmlsdavxq_s<mode>): Merge into ...
9634         (@mve_<mve_insn>q_<supf><mode>): ... this.
9635         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
9636         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
9637         ...
9638         (@mve_<mve_insn>q_<supf><mode>): ... this.
9639         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
9640         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
9641         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9642         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
9643         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
9644         ...
9645         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9647 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9649         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
9650         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
9652 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9654         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
9655         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
9656         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
9657         * config/arm/arm_mve.h (vaddlvaq): Remove.
9658         (vaddlvaq_p): Remove.
9659         (vaddlvaq_u32): Remove.
9660         (vaddlvaq_s32): Remove.
9661         (vaddlvaq_p_s32): Remove.
9662         (vaddlvaq_p_u32): Remove.
9663         (__arm_vaddlvaq_u32): Remove.
9664         (__arm_vaddlvaq_s32): Remove.
9665         (__arm_vaddlvaq_p_s32): Remove.
9666         (__arm_vaddlvaq_p_u32): Remove.
9667         (__arm_vaddlvaq): Remove.
9668         (__arm_vaddlvaq_p): Remove.
9670 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9672         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
9673         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
9675 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9677         * config/arm/iterators.md (mve_insn): Add vaddlva.
9678         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
9679         (@mve_<mve_insn>q_<supf>v4si): ... this.
9680         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
9681         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
9683 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
9685         PR target/109807
9686         * config/i386/i386.cc (ix86_widen_mult_cost):
9687         Handle V4HImode and V2SImode.
9689 2023-05-11  Andrew Pinski  <apinski@marvell.com>
9691         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
9692         defined by a phi node with more than one uses, allow for the
9693         only uses are in that same defining statement.
9695 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
9697         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
9698         vector constants.
9700 2023-05-11  Pan Li  <pan2.li@intel.com>
9702         * config/riscv/vector.md: Add comments for simplifying to vmset.
9704 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
9706         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
9707         pattern.
9708         (v<optab><mode>3): Add vector shift pattern.
9709         * config/riscv/vector-iterators.md: New iterator.
9711 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
9713         * config/riscv/autovec.md: Use renamed functions.
9714         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
9715         (emit_vlmax_reg_op): To this.
9716         (emit_nonvlmax_op): Rename.
9717         (emit_len_op): To this.
9718         (emit_nonvlmax_binop): Rename.
9719         (emit_len_binop): To this.
9720         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
9721         (emit_pred_binop): Remove vlmax_p.
9722         (emit_vlmax_op): Rename.
9723         (emit_vlmax_reg_op): To this.
9724         (emit_nonvlmax_op): Rename.
9725         (emit_len_op): To this.
9726         (emit_nonvlmax_binop): Rename.
9727         (emit_len_binop): To this.
9728         (sew64_scalar_helper): Use renamed functions.
9729         (expand_tuple_move): Use renamed functions.
9730         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
9731         renamed functions.
9732         * config/riscv/vector.md: Use renamed functions.
9734 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
9735             Michael Collison  <collison@rivosinc.com>
9737         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
9738         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
9739         * config/riscv/riscv-v.cc (emit_pred_op): New function.
9740         (set_expander_dest_and_mask): New function.
9741         (emit_pred_binop): New function.
9742         (emit_nonvlmax_binop): New function.
9744 2023-05-11  Pan Li  <pan2.li@intel.com>
9746         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
9747         * gimple-loop-interchange.cc
9748         (tree_loop_interchange::map_inductions_to_loop): Ditto.
9749         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
9750         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
9751         * tree-ssa-loop-manip.cc (create_iv): Ditto.
9752         (tree_transform_and_unroll_loop): Ditto.
9753         (canonicalize_loop_ivs): Ditto.
9754         * tree-ssa-loop-manip.h (create_iv): Ditto.
9755         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
9756         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
9757         Ditto.
9758         (vect_set_loop_condition_normal): Ditto.
9759         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
9760         * tree-vect-stmts.cc (vectorizable_store): Ditto.
9761         (vectorizable_load): Ditto.
9763 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9765         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
9766         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
9767         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
9768         * config/arm/arm_mve.h (vmovlbq): Remove.
9769         (vmovltq): Remove.
9770         (vmovlbq_m): Remove.
9771         (vmovltq_m): Remove.
9772         (vmovlbq_x): Remove.
9773         (vmovltq_x): Remove.
9774         (vmovlbq_s8): Remove.
9775         (vmovlbq_s16): Remove.
9776         (vmovltq_s8): Remove.
9777         (vmovltq_s16): Remove.
9778         (vmovltq_u8): Remove.
9779         (vmovltq_u16): Remove.
9780         (vmovlbq_u8): Remove.
9781         (vmovlbq_u16): Remove.
9782         (vmovlbq_m_s8): Remove.
9783         (vmovltq_m_s8): Remove.
9784         (vmovlbq_m_u8): Remove.
9785         (vmovltq_m_u8): Remove.
9786         (vmovlbq_m_s16): Remove.
9787         (vmovltq_m_s16): Remove.
9788         (vmovlbq_m_u16): Remove.
9789         (vmovltq_m_u16): Remove.
9790         (vmovlbq_x_s8): Remove.
9791         (vmovlbq_x_s16): Remove.
9792         (vmovlbq_x_u8): Remove.
9793         (vmovlbq_x_u16): Remove.
9794         (vmovltq_x_s8): Remove.
9795         (vmovltq_x_s16): Remove.
9796         (vmovltq_x_u8): Remove.
9797         (vmovltq_x_u16): Remove.
9798         (__arm_vmovlbq_s8): Remove.
9799         (__arm_vmovlbq_s16): Remove.
9800         (__arm_vmovltq_s8): Remove.
9801         (__arm_vmovltq_s16): Remove.
9802         (__arm_vmovltq_u8): Remove.
9803         (__arm_vmovltq_u16): Remove.
9804         (__arm_vmovlbq_u8): Remove.
9805         (__arm_vmovlbq_u16): Remove.
9806         (__arm_vmovlbq_m_s8): Remove.
9807         (__arm_vmovltq_m_s8): Remove.
9808         (__arm_vmovlbq_m_u8): Remove.
9809         (__arm_vmovltq_m_u8): Remove.
9810         (__arm_vmovlbq_m_s16): Remove.
9811         (__arm_vmovltq_m_s16): Remove.
9812         (__arm_vmovlbq_m_u16): Remove.
9813         (__arm_vmovltq_m_u16): Remove.
9814         (__arm_vmovlbq_x_s8): Remove.
9815         (__arm_vmovlbq_x_s16): Remove.
9816         (__arm_vmovlbq_x_u8): Remove.
9817         (__arm_vmovlbq_x_u16): Remove.
9818         (__arm_vmovltq_x_s8): Remove.
9819         (__arm_vmovltq_x_s16): Remove.
9820         (__arm_vmovltq_x_u8): Remove.
9821         (__arm_vmovltq_x_u16): Remove.
9822         (__arm_vmovlbq): Remove.
9823         (__arm_vmovltq): Remove.
9824         (__arm_vmovlbq_m): Remove.
9825         (__arm_vmovltq_m): Remove.
9826         (__arm_vmovlbq_x): Remove.
9827         (__arm_vmovltq_x): Remove.
9829 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9831         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
9832         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
9834 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9836         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
9837         (VMOVLBQ, VMOVLTQ): Merge into ...
9838         (VMOVLxQ): ... this.
9839         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
9840         (VMOVLxQ_M): ... this.
9841         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
9842         (mve_vmovlbq_<supf><mode>): Merge into ...
9843         (@mve_<mve_insn>q_<supf><mode>): ... this.
9844         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
9845         into ...
9846         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
9848 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9850         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
9851         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
9852         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
9853         * config/arm/arm-mve-builtins-functions.h
9854         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
9855         * config/arm/arm_mve.h (vaddlvq): Remove.
9856         (vaddlvq_p): Remove.
9857         (vaddlvq_s32): Remove.
9858         (vaddlvq_u32): Remove.
9859         (vaddlvq_p_s32): Remove.
9860         (vaddlvq_p_u32): Remove.
9861         (__arm_vaddlvq_s32): Remove.
9862         (__arm_vaddlvq_u32): Remove.
9863         (__arm_vaddlvq_p_s32): Remove.
9864         (__arm_vaddlvq_p_u32): Remove.
9865         (__arm_vaddlvq): Remove.
9866         (__arm_vaddlvq_p): Remove.
9868 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9870         * config/arm/iterators.md (mve_insn): Add vaddlv.
9871         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
9872         (@mve_<mve_insn>q_<supf>v4si): ... this.
9873         (mve_vaddlvq_p_<supf>v4si): Rename into ...
9874         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
9876 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9878         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
9879         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
9881 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9883         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
9884         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
9885         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
9886         * config/arm/arm_mve.h (vaddvaq): Remove.
9887         (vaddvaq_p): Remove.
9888         (vaddvaq_u8): Remove.
9889         (vaddvaq_s8): Remove.
9890         (vaddvaq_u16): Remove.
9891         (vaddvaq_s16): Remove.
9892         (vaddvaq_u32): Remove.
9893         (vaddvaq_s32): Remove.
9894         (vaddvaq_p_u8): Remove.
9895         (vaddvaq_p_s8): Remove.
9896         (vaddvaq_p_u16): Remove.
9897         (vaddvaq_p_s16): Remove.
9898         (vaddvaq_p_u32): Remove.
9899         (vaddvaq_p_s32): Remove.
9900         (__arm_vaddvaq_u8): Remove.
9901         (__arm_vaddvaq_s8): Remove.
9902         (__arm_vaddvaq_u16): Remove.
9903         (__arm_vaddvaq_s16): Remove.
9904         (__arm_vaddvaq_u32): Remove.
9905         (__arm_vaddvaq_s32): Remove.
9906         (__arm_vaddvaq_p_u8): Remove.
9907         (__arm_vaddvaq_p_s8): Remove.
9908         (__arm_vaddvaq_p_u16): Remove.
9909         (__arm_vaddvaq_p_s16): Remove.
9910         (__arm_vaddvaq_p_u32): Remove.
9911         (__arm_vaddvaq_p_s32): Remove.
9912         (__arm_vaddvaq): Remove.
9913         (__arm_vaddvaq_p): Remove.
9915 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9917         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
9918         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
9920 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9922         * config/arm/iterators.md (mve_insn): Add vaddva.
9923         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
9924         (@mve_<mve_insn>q_<supf><mode>): ... this.
9925         (mve_vaddvaq_p_<supf><mode>): Rename into ...
9926         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9928 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9930         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
9931         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
9932         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
9933         * config/arm/arm_mve.h (vaddvq): Remove.
9934         (vaddvq_p): Remove.
9935         (vaddvq_s8): Remove.
9936         (vaddvq_s16): Remove.
9937         (vaddvq_s32): Remove.
9938         (vaddvq_u8): Remove.
9939         (vaddvq_u16): Remove.
9940         (vaddvq_u32): Remove.
9941         (vaddvq_p_u8): Remove.
9942         (vaddvq_p_s8): Remove.
9943         (vaddvq_p_u16): Remove.
9944         (vaddvq_p_s16): Remove.
9945         (vaddvq_p_u32): Remove.
9946         (vaddvq_p_s32): Remove.
9947         (__arm_vaddvq_s8): Remove.
9948         (__arm_vaddvq_s16): Remove.
9949         (__arm_vaddvq_s32): Remove.
9950         (__arm_vaddvq_u8): Remove.
9951         (__arm_vaddvq_u16): Remove.
9952         (__arm_vaddvq_u32): Remove.
9953         (__arm_vaddvq_p_u8): Remove.
9954         (__arm_vaddvq_p_s8): Remove.
9955         (__arm_vaddvq_p_u16): Remove.
9956         (__arm_vaddvq_p_s16): Remove.
9957         (__arm_vaddvq_p_u32): Remove.
9958         (__arm_vaddvq_p_s32): Remove.
9959         (__arm_vaddvq): Remove.
9960         (__arm_vaddvq_p): Remove.
9962 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9964         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
9965         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
9967 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9969         * config/arm/iterators.md (mve_insn): Add vaddv.
9970         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
9971         (@mve_<mve_insn>q_<supf><mode>): ... this.
9972         (mve_vaddvq_p_<supf><mode>): Rename into ...
9973         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9974         * config/arm/vec-common.md: Use gen_mve_q instead of
9975         gen_mve_vaddvq.
9977 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
9979         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
9980         (vdupq): New.
9981         * config/arm/arm-mve-builtins-base.def (vdupq): New.
9982         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
9983         * config/arm/arm_mve.h (vdupq_n): Remove.
9984         (vdupq_m): Remove.
9985         (vdupq_n_f16): Remove.
9986         (vdupq_n_f32): Remove.
9987         (vdupq_n_s8): Remove.
9988         (vdupq_n_s16): Remove.
9989         (vdupq_n_s32): Remove.
9990         (vdupq_n_u8): Remove.
9991         (vdupq_n_u16): Remove.
9992         (vdupq_n_u32): Remove.
9993         (vdupq_m_n_u8): Remove.
9994         (vdupq_m_n_s8): Remove.
9995         (vdupq_m_n_u16): Remove.
9996         (vdupq_m_n_s16): Remove.
9997         (vdupq_m_n_u32): Remove.
9998         (vdupq_m_n_s32): Remove.
9999         (vdupq_m_n_f16): Remove.
10000         (vdupq_m_n_f32): Remove.
10001         (vdupq_x_n_s8): Remove.
10002         (vdupq_x_n_s16): Remove.
10003         (vdupq_x_n_s32): Remove.
10004         (vdupq_x_n_u8): Remove.
10005         (vdupq_x_n_u16): Remove.
10006         (vdupq_x_n_u32): Remove.
10007         (vdupq_x_n_f16): Remove.
10008         (vdupq_x_n_f32): Remove.
10009         (__arm_vdupq_n_s8): Remove.
10010         (__arm_vdupq_n_s16): Remove.
10011         (__arm_vdupq_n_s32): Remove.
10012         (__arm_vdupq_n_u8): Remove.
10013         (__arm_vdupq_n_u16): Remove.
10014         (__arm_vdupq_n_u32): Remove.
10015         (__arm_vdupq_m_n_u8): Remove.
10016         (__arm_vdupq_m_n_s8): Remove.
10017         (__arm_vdupq_m_n_u16): Remove.
10018         (__arm_vdupq_m_n_s16): Remove.
10019         (__arm_vdupq_m_n_u32): Remove.
10020         (__arm_vdupq_m_n_s32): Remove.
10021         (__arm_vdupq_x_n_s8): Remove.
10022         (__arm_vdupq_x_n_s16): Remove.
10023         (__arm_vdupq_x_n_s32): Remove.
10024         (__arm_vdupq_x_n_u8): Remove.
10025         (__arm_vdupq_x_n_u16): Remove.
10026         (__arm_vdupq_x_n_u32): Remove.
10027         (__arm_vdupq_n_f16): Remove.
10028         (__arm_vdupq_n_f32): Remove.
10029         (__arm_vdupq_m_n_f16): Remove.
10030         (__arm_vdupq_m_n_f32): Remove.
10031         (__arm_vdupq_x_n_f16): Remove.
10032         (__arm_vdupq_x_n_f32): Remove.
10033         (__arm_vdupq_n): Remove.
10034         (__arm_vdupq_m): Remove.
10036 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10038         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
10039         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
10041 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10043         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
10044         (MVE_FP_N_VDUPQ_ONLY): New.
10045         (mve_insn): Add vdupq.
10046         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
10047         (@mve_<mve_insn>q_n_f<mode>): ... this.
10048         (mve_vdupq_n_<supf><mode>): Rename into ...
10049         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10050         (mve_vdupq_m_n_<supf><mode>): Rename into ...
10051         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10052         (mve_vdupq_m_n_f<mode>): Rename into ...
10053         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
10055 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10057         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
10058         New.
10059         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
10060         (vrev64q): New.
10061         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
10062         (vrev64q): New.
10063         * config/arm/arm_mve.h (vrev16q): Remove.
10064         (vrev32q): Remove.
10065         (vrev64q): Remove.
10066         (vrev64q_m): Remove.
10067         (vrev16q_m): Remove.
10068         (vrev32q_m): Remove.
10069         (vrev16q_x): Remove.
10070         (vrev32q_x): Remove.
10071         (vrev64q_x): Remove.
10072         (vrev64q_f16): Remove.
10073         (vrev64q_f32): Remove.
10074         (vrev32q_f16): Remove.
10075         (vrev16q_s8): Remove.
10076         (vrev32q_s8): Remove.
10077         (vrev32q_s16): Remove.
10078         (vrev64q_s8): Remove.
10079         (vrev64q_s16): Remove.
10080         (vrev64q_s32): Remove.
10081         (vrev64q_u8): Remove.
10082         (vrev64q_u16): Remove.
10083         (vrev64q_u32): Remove.
10084         (vrev32q_u8): Remove.
10085         (vrev32q_u16): Remove.
10086         (vrev16q_u8): Remove.
10087         (vrev64q_m_u8): Remove.
10088         (vrev64q_m_s8): Remove.
10089         (vrev64q_m_u16): Remove.
10090         (vrev64q_m_s16): Remove.
10091         (vrev64q_m_u32): Remove.
10092         (vrev64q_m_s32): Remove.
10093         (vrev16q_m_s8): Remove.
10094         (vrev32q_m_f16): Remove.
10095         (vrev16q_m_u8): Remove.
10096         (vrev32q_m_s8): Remove.
10097         (vrev64q_m_f16): Remove.
10098         (vrev32q_m_u8): Remove.
10099         (vrev32q_m_s16): Remove.
10100         (vrev64q_m_f32): Remove.
10101         (vrev32q_m_u16): Remove.
10102         (vrev16q_x_s8): Remove.
10103         (vrev16q_x_u8): Remove.
10104         (vrev32q_x_s8): Remove.
10105         (vrev32q_x_s16): Remove.
10106         (vrev32q_x_u8): Remove.
10107         (vrev32q_x_u16): Remove.
10108         (vrev64q_x_s8): Remove.
10109         (vrev64q_x_s16): Remove.
10110         (vrev64q_x_s32): Remove.
10111         (vrev64q_x_u8): Remove.
10112         (vrev64q_x_u16): Remove.
10113         (vrev64q_x_u32): Remove.
10114         (vrev32q_x_f16): Remove.
10115         (vrev64q_x_f16): Remove.
10116         (vrev64q_x_f32): Remove.
10117         (__arm_vrev16q_s8): Remove.
10118         (__arm_vrev32q_s8): Remove.
10119         (__arm_vrev32q_s16): Remove.
10120         (__arm_vrev64q_s8): Remove.
10121         (__arm_vrev64q_s16): Remove.
10122         (__arm_vrev64q_s32): Remove.
10123         (__arm_vrev64q_u8): Remove.
10124         (__arm_vrev64q_u16): Remove.
10125         (__arm_vrev64q_u32): Remove.
10126         (__arm_vrev32q_u8): Remove.
10127         (__arm_vrev32q_u16): Remove.
10128         (__arm_vrev16q_u8): Remove.
10129         (__arm_vrev64q_m_u8): Remove.
10130         (__arm_vrev64q_m_s8): Remove.
10131         (__arm_vrev64q_m_u16): Remove.
10132         (__arm_vrev64q_m_s16): Remove.
10133         (__arm_vrev64q_m_u32): Remove.
10134         (__arm_vrev64q_m_s32): Remove.
10135         (__arm_vrev16q_m_s8): Remove.
10136         (__arm_vrev16q_m_u8): Remove.
10137         (__arm_vrev32q_m_s8): Remove.
10138         (__arm_vrev32q_m_u8): Remove.
10139         (__arm_vrev32q_m_s16): Remove.
10140         (__arm_vrev32q_m_u16): Remove.
10141         (__arm_vrev16q_x_s8): Remove.
10142         (__arm_vrev16q_x_u8): Remove.
10143         (__arm_vrev32q_x_s8): Remove.
10144         (__arm_vrev32q_x_s16): Remove.
10145         (__arm_vrev32q_x_u8): Remove.
10146         (__arm_vrev32q_x_u16): Remove.
10147         (__arm_vrev64q_x_s8): Remove.
10148         (__arm_vrev64q_x_s16): Remove.
10149         (__arm_vrev64q_x_s32): Remove.
10150         (__arm_vrev64q_x_u8): Remove.
10151         (__arm_vrev64q_x_u16): Remove.
10152         (__arm_vrev64q_x_u32): Remove.
10153         (__arm_vrev64q_f16): Remove.
10154         (__arm_vrev64q_f32): Remove.
10155         (__arm_vrev32q_f16): Remove.
10156         (__arm_vrev32q_m_f16): Remove.
10157         (__arm_vrev64q_m_f16): Remove.
10158         (__arm_vrev64q_m_f32): Remove.
10159         (__arm_vrev32q_x_f16): Remove.
10160         (__arm_vrev64q_x_f16): Remove.
10161         (__arm_vrev64q_x_f32): Remove.
10162         (__arm_vrev16q): Remove.
10163         (__arm_vrev32q): Remove.
10164         (__arm_vrev64q): Remove.
10165         (__arm_vrev64q_m): Remove.
10166         (__arm_vrev16q_m): Remove.
10167         (__arm_vrev32q_m): Remove.
10168         (__arm_vrev16q_x): Remove.
10169         (__arm_vrev32q_x): Remove.
10170         (__arm_vrev64q_x): Remove.
10172 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10174         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
10175         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
10176         (MVE_FP_M_VREV32Q_ONLY): New iterators.
10177         (mve_insn): Add vrev16q, vrev32q, vrev64q.
10178         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
10179         (@mve_<mve_insn>q_f<mode>): ... this
10180         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
10181         (mve_vrev64q_<supf><mode>): Rename into ...
10182         (@mve_<mve_insn>q_<supf><mode>): ... this.
10183         (mve_vrev32q_<supf><mode>): Rename into
10184         @mve_<mve_insn>q_<supf><mode>.
10185         (mve_vrev16q_<supf>v16qi): Rename into
10186         @mve_<mve_insn>q_<supf><mode>.
10187         (mve_vrev64q_m_<supf><mode>): Rename into
10188         @mve_<mve_insn>q_m_<supf><mode>.
10189         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
10190         (mve_vrev32q_m_<supf><mode>): Rename into
10191         @mve_<mve_insn>q_m_<supf><mode>.
10192         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
10193         (mve_vrev16q_m_<supf>v16qi): Rename into
10194         @mve_<mve_insn>q_m_<supf><mode>.
10196 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10198         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
10199         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
10200         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
10201         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
10202         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
10203         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
10204         * config/arm/arm-mve-builtins-functions.h (class
10205         unspec_based_mve_function_exact_insn_vcmp): New.
10206         * config/arm/arm-mve-builtins.cc
10207         (function_instance::has_inactive_argument): Handle vcmp.
10208         * config/arm/arm_mve.h (vcmpneq): Remove.
10209         (vcmphiq): Remove.
10210         (vcmpeqq): Remove.
10211         (vcmpcsq): Remove.
10212         (vcmpltq): Remove.
10213         (vcmpleq): Remove.
10214         (vcmpgtq): Remove.
10215         (vcmpgeq): Remove.
10216         (vcmpneq_m): Remove.
10217         (vcmphiq_m): Remove.
10218         (vcmpeqq_m): Remove.
10219         (vcmpcsq_m): Remove.
10220         (vcmpcsq_m_n): Remove.
10221         (vcmpltq_m): Remove.
10222         (vcmpleq_m): Remove.
10223         (vcmpgtq_m): Remove.
10224         (vcmpgeq_m): Remove.
10225         (vcmpneq_s8): Remove.
10226         (vcmpneq_s16): Remove.
10227         (vcmpneq_s32): Remove.
10228         (vcmpneq_u8): Remove.
10229         (vcmpneq_u16): Remove.
10230         (vcmpneq_u32): Remove.
10231         (vcmpneq_n_u8): Remove.
10232         (vcmphiq_u8): Remove.
10233         (vcmphiq_n_u8): Remove.
10234         (vcmpeqq_u8): Remove.
10235         (vcmpeqq_n_u8): Remove.
10236         (vcmpcsq_u8): Remove.
10237         (vcmpcsq_n_u8): Remove.
10238         (vcmpneq_n_s8): Remove.
10239         (vcmpltq_s8): Remove.
10240         (vcmpltq_n_s8): Remove.
10241         (vcmpleq_s8): Remove.
10242         (vcmpleq_n_s8): Remove.
10243         (vcmpgtq_s8): Remove.
10244         (vcmpgtq_n_s8): Remove.
10245         (vcmpgeq_s8): Remove.
10246         (vcmpgeq_n_s8): Remove.
10247         (vcmpeqq_s8): Remove.
10248         (vcmpeqq_n_s8): Remove.
10249         (vcmpneq_n_u16): Remove.
10250         (vcmphiq_u16): Remove.
10251         (vcmphiq_n_u16): Remove.
10252         (vcmpeqq_u16): Remove.
10253         (vcmpeqq_n_u16): Remove.
10254         (vcmpcsq_u16): Remove.
10255         (vcmpcsq_n_u16): Remove.
10256         (vcmpneq_n_s16): Remove.
10257         (vcmpltq_s16): Remove.
10258         (vcmpltq_n_s16): Remove.
10259         (vcmpleq_s16): Remove.
10260         (vcmpleq_n_s16): Remove.
10261         (vcmpgtq_s16): Remove.
10262         (vcmpgtq_n_s16): Remove.
10263         (vcmpgeq_s16): Remove.
10264         (vcmpgeq_n_s16): Remove.
10265         (vcmpeqq_s16): Remove.
10266         (vcmpeqq_n_s16): Remove.
10267         (vcmpneq_n_u32): Remove.
10268         (vcmphiq_u32): Remove.
10269         (vcmphiq_n_u32): Remove.
10270         (vcmpeqq_u32): Remove.
10271         (vcmpeqq_n_u32): Remove.
10272         (vcmpcsq_u32): Remove.
10273         (vcmpcsq_n_u32): Remove.
10274         (vcmpneq_n_s32): Remove.
10275         (vcmpltq_s32): Remove.
10276         (vcmpltq_n_s32): Remove.
10277         (vcmpleq_s32): Remove.
10278         (vcmpleq_n_s32): Remove.
10279         (vcmpgtq_s32): Remove.
10280         (vcmpgtq_n_s32): Remove.
10281         (vcmpgeq_s32): Remove.
10282         (vcmpgeq_n_s32): Remove.
10283         (vcmpeqq_s32): Remove.
10284         (vcmpeqq_n_s32): Remove.
10285         (vcmpneq_n_f16): Remove.
10286         (vcmpneq_f16): Remove.
10287         (vcmpltq_n_f16): Remove.
10288         (vcmpltq_f16): Remove.
10289         (vcmpleq_n_f16): Remove.
10290         (vcmpleq_f16): Remove.
10291         (vcmpgtq_n_f16): Remove.
10292         (vcmpgtq_f16): Remove.
10293         (vcmpgeq_n_f16): Remove.
10294         (vcmpgeq_f16): Remove.
10295         (vcmpeqq_n_f16): Remove.
10296         (vcmpeqq_f16): Remove.
10297         (vcmpneq_n_f32): Remove.
10298         (vcmpneq_f32): Remove.
10299         (vcmpltq_n_f32): Remove.
10300         (vcmpltq_f32): Remove.
10301         (vcmpleq_n_f32): Remove.
10302         (vcmpleq_f32): Remove.
10303         (vcmpgtq_n_f32): Remove.
10304         (vcmpgtq_f32): Remove.
10305         (vcmpgeq_n_f32): Remove.
10306         (vcmpgeq_f32): Remove.
10307         (vcmpeqq_n_f32): Remove.
10308         (vcmpeqq_f32): Remove.
10309         (vcmpeqq_m_f16): Remove.
10310         (vcmpeqq_m_f32): Remove.
10311         (vcmpneq_m_u8): Remove.
10312         (vcmpneq_m_n_u8): Remove.
10313         (vcmphiq_m_u8): Remove.
10314         (vcmphiq_m_n_u8): Remove.
10315         (vcmpeqq_m_u8): Remove.
10316         (vcmpeqq_m_n_u8): Remove.
10317         (vcmpcsq_m_u8): Remove.
10318         (vcmpcsq_m_n_u8): Remove.
10319         (vcmpneq_m_s8): Remove.
10320         (vcmpneq_m_n_s8): Remove.
10321         (vcmpltq_m_s8): Remove.
10322         (vcmpltq_m_n_s8): Remove.
10323         (vcmpleq_m_s8): Remove.
10324         (vcmpleq_m_n_s8): Remove.
10325         (vcmpgtq_m_s8): Remove.
10326         (vcmpgtq_m_n_s8): Remove.
10327         (vcmpgeq_m_s8): Remove.
10328         (vcmpgeq_m_n_s8): Remove.
10329         (vcmpeqq_m_s8): Remove.
10330         (vcmpeqq_m_n_s8): Remove.
10331         (vcmpneq_m_u16): Remove.
10332         (vcmpneq_m_n_u16): Remove.
10333         (vcmphiq_m_u16): Remove.
10334         (vcmphiq_m_n_u16): Remove.
10335         (vcmpeqq_m_u16): Remove.
10336         (vcmpeqq_m_n_u16): Remove.
10337         (vcmpcsq_m_u16): Remove.
10338         (vcmpcsq_m_n_u16): Remove.
10339         (vcmpneq_m_s16): Remove.
10340         (vcmpneq_m_n_s16): Remove.
10341         (vcmpltq_m_s16): Remove.
10342         (vcmpltq_m_n_s16): Remove.
10343         (vcmpleq_m_s16): Remove.
10344         (vcmpleq_m_n_s16): Remove.
10345         (vcmpgtq_m_s16): Remove.
10346         (vcmpgtq_m_n_s16): Remove.
10347         (vcmpgeq_m_s16): Remove.
10348         (vcmpgeq_m_n_s16): Remove.
10349         (vcmpeqq_m_s16): Remove.
10350         (vcmpeqq_m_n_s16): Remove.
10351         (vcmpneq_m_u32): Remove.
10352         (vcmpneq_m_n_u32): Remove.
10353         (vcmphiq_m_u32): Remove.
10354         (vcmphiq_m_n_u32): Remove.
10355         (vcmpeqq_m_u32): Remove.
10356         (vcmpeqq_m_n_u32): Remove.
10357         (vcmpcsq_m_u32): Remove.
10358         (vcmpcsq_m_n_u32): Remove.
10359         (vcmpneq_m_s32): Remove.
10360         (vcmpneq_m_n_s32): Remove.
10361         (vcmpltq_m_s32): Remove.
10362         (vcmpltq_m_n_s32): Remove.
10363         (vcmpleq_m_s32): Remove.
10364         (vcmpleq_m_n_s32): Remove.
10365         (vcmpgtq_m_s32): Remove.
10366         (vcmpgtq_m_n_s32): Remove.
10367         (vcmpgeq_m_s32): Remove.
10368         (vcmpgeq_m_n_s32): Remove.
10369         (vcmpeqq_m_s32): Remove.
10370         (vcmpeqq_m_n_s32): Remove.
10371         (vcmpeqq_m_n_f16): Remove.
10372         (vcmpgeq_m_f16): Remove.
10373         (vcmpgeq_m_n_f16): Remove.
10374         (vcmpgtq_m_f16): Remove.
10375         (vcmpgtq_m_n_f16): Remove.
10376         (vcmpleq_m_f16): Remove.
10377         (vcmpleq_m_n_f16): Remove.
10378         (vcmpltq_m_f16): Remove.
10379         (vcmpltq_m_n_f16): Remove.
10380         (vcmpneq_m_f16): Remove.
10381         (vcmpneq_m_n_f16): Remove.
10382         (vcmpeqq_m_n_f32): Remove.
10383         (vcmpgeq_m_f32): Remove.
10384         (vcmpgeq_m_n_f32): Remove.
10385         (vcmpgtq_m_f32): Remove.
10386         (vcmpgtq_m_n_f32): Remove.
10387         (vcmpleq_m_f32): Remove.
10388         (vcmpleq_m_n_f32): Remove.
10389         (vcmpltq_m_f32): Remove.
10390         (vcmpltq_m_n_f32): Remove.
10391         (vcmpneq_m_f32): Remove.
10392         (vcmpneq_m_n_f32): Remove.
10393         (__arm_vcmpneq_s8): Remove.
10394         (__arm_vcmpneq_s16): Remove.
10395         (__arm_vcmpneq_s32): Remove.
10396         (__arm_vcmpneq_u8): Remove.
10397         (__arm_vcmpneq_u16): Remove.
10398         (__arm_vcmpneq_u32): Remove.
10399         (__arm_vcmpneq_n_u8): Remove.
10400         (__arm_vcmphiq_u8): Remove.
10401         (__arm_vcmphiq_n_u8): Remove.
10402         (__arm_vcmpeqq_u8): Remove.
10403         (__arm_vcmpeqq_n_u8): Remove.
10404         (__arm_vcmpcsq_u8): Remove.
10405         (__arm_vcmpcsq_n_u8): Remove.
10406         (__arm_vcmpneq_n_s8): Remove.
10407         (__arm_vcmpltq_s8): Remove.
10408         (__arm_vcmpltq_n_s8): Remove.
10409         (__arm_vcmpleq_s8): Remove.
10410         (__arm_vcmpleq_n_s8): Remove.
10411         (__arm_vcmpgtq_s8): Remove.
10412         (__arm_vcmpgtq_n_s8): Remove.
10413         (__arm_vcmpgeq_s8): Remove.
10414         (__arm_vcmpgeq_n_s8): Remove.
10415         (__arm_vcmpeqq_s8): Remove.
10416         (__arm_vcmpeqq_n_s8): Remove.
10417         (__arm_vcmpneq_n_u16): Remove.
10418         (__arm_vcmphiq_u16): Remove.
10419         (__arm_vcmphiq_n_u16): Remove.
10420         (__arm_vcmpeqq_u16): Remove.
10421         (__arm_vcmpeqq_n_u16): Remove.
10422         (__arm_vcmpcsq_u16): Remove.
10423         (__arm_vcmpcsq_n_u16): Remove.
10424         (__arm_vcmpneq_n_s16): Remove.
10425         (__arm_vcmpltq_s16): Remove.
10426         (__arm_vcmpltq_n_s16): Remove.
10427         (__arm_vcmpleq_s16): Remove.
10428         (__arm_vcmpleq_n_s16): Remove.
10429         (__arm_vcmpgtq_s16): Remove.
10430         (__arm_vcmpgtq_n_s16): Remove.
10431         (__arm_vcmpgeq_s16): Remove.
10432         (__arm_vcmpgeq_n_s16): Remove.
10433         (__arm_vcmpeqq_s16): Remove.
10434         (__arm_vcmpeqq_n_s16): Remove.
10435         (__arm_vcmpneq_n_u32): Remove.
10436         (__arm_vcmphiq_u32): Remove.
10437         (__arm_vcmphiq_n_u32): Remove.
10438         (__arm_vcmpeqq_u32): Remove.
10439         (__arm_vcmpeqq_n_u32): Remove.
10440         (__arm_vcmpcsq_u32): Remove.
10441         (__arm_vcmpcsq_n_u32): Remove.
10442         (__arm_vcmpneq_n_s32): Remove.
10443         (__arm_vcmpltq_s32): Remove.
10444         (__arm_vcmpltq_n_s32): Remove.
10445         (__arm_vcmpleq_s32): Remove.
10446         (__arm_vcmpleq_n_s32): Remove.
10447         (__arm_vcmpgtq_s32): Remove.
10448         (__arm_vcmpgtq_n_s32): Remove.
10449         (__arm_vcmpgeq_s32): Remove.
10450         (__arm_vcmpgeq_n_s32): Remove.
10451         (__arm_vcmpeqq_s32): Remove.
10452         (__arm_vcmpeqq_n_s32): Remove.
10453         (__arm_vcmpneq_m_u8): Remove.
10454         (__arm_vcmpneq_m_n_u8): Remove.
10455         (__arm_vcmphiq_m_u8): Remove.
10456         (__arm_vcmphiq_m_n_u8): Remove.
10457         (__arm_vcmpeqq_m_u8): Remove.
10458         (__arm_vcmpeqq_m_n_u8): Remove.
10459         (__arm_vcmpcsq_m_u8): Remove.
10460         (__arm_vcmpcsq_m_n_u8): Remove.
10461         (__arm_vcmpneq_m_s8): Remove.
10462         (__arm_vcmpneq_m_n_s8): Remove.
10463         (__arm_vcmpltq_m_s8): Remove.
10464         (__arm_vcmpltq_m_n_s8): Remove.
10465         (__arm_vcmpleq_m_s8): Remove.
10466         (__arm_vcmpleq_m_n_s8): Remove.
10467         (__arm_vcmpgtq_m_s8): Remove.
10468         (__arm_vcmpgtq_m_n_s8): Remove.
10469         (__arm_vcmpgeq_m_s8): Remove.
10470         (__arm_vcmpgeq_m_n_s8): Remove.
10471         (__arm_vcmpeqq_m_s8): Remove.
10472         (__arm_vcmpeqq_m_n_s8): Remove.
10473         (__arm_vcmpneq_m_u16): Remove.
10474         (__arm_vcmpneq_m_n_u16): Remove.
10475         (__arm_vcmphiq_m_u16): Remove.
10476         (__arm_vcmphiq_m_n_u16): Remove.
10477         (__arm_vcmpeqq_m_u16): Remove.
10478         (__arm_vcmpeqq_m_n_u16): Remove.
10479         (__arm_vcmpcsq_m_u16): Remove.
10480         (__arm_vcmpcsq_m_n_u16): Remove.
10481         (__arm_vcmpneq_m_s16): Remove.
10482         (__arm_vcmpneq_m_n_s16): Remove.
10483         (__arm_vcmpltq_m_s16): Remove.
10484         (__arm_vcmpltq_m_n_s16): Remove.
10485         (__arm_vcmpleq_m_s16): Remove.
10486         (__arm_vcmpleq_m_n_s16): Remove.
10487         (__arm_vcmpgtq_m_s16): Remove.
10488         (__arm_vcmpgtq_m_n_s16): Remove.
10489         (__arm_vcmpgeq_m_s16): Remove.
10490         (__arm_vcmpgeq_m_n_s16): Remove.
10491         (__arm_vcmpeqq_m_s16): Remove.
10492         (__arm_vcmpeqq_m_n_s16): Remove.
10493         (__arm_vcmpneq_m_u32): Remove.
10494         (__arm_vcmpneq_m_n_u32): Remove.
10495         (__arm_vcmphiq_m_u32): Remove.
10496         (__arm_vcmphiq_m_n_u32): Remove.
10497         (__arm_vcmpeqq_m_u32): Remove.
10498         (__arm_vcmpeqq_m_n_u32): Remove.
10499         (__arm_vcmpcsq_m_u32): Remove.
10500         (__arm_vcmpcsq_m_n_u32): Remove.
10501         (__arm_vcmpneq_m_s32): Remove.
10502         (__arm_vcmpneq_m_n_s32): Remove.
10503         (__arm_vcmpltq_m_s32): Remove.
10504         (__arm_vcmpltq_m_n_s32): Remove.
10505         (__arm_vcmpleq_m_s32): Remove.
10506         (__arm_vcmpleq_m_n_s32): Remove.
10507         (__arm_vcmpgtq_m_s32): Remove.
10508         (__arm_vcmpgtq_m_n_s32): Remove.
10509         (__arm_vcmpgeq_m_s32): Remove.
10510         (__arm_vcmpgeq_m_n_s32): Remove.
10511         (__arm_vcmpeqq_m_s32): Remove.
10512         (__arm_vcmpeqq_m_n_s32): Remove.
10513         (__arm_vcmpneq_n_f16): Remove.
10514         (__arm_vcmpneq_f16): Remove.
10515         (__arm_vcmpltq_n_f16): Remove.
10516         (__arm_vcmpltq_f16): Remove.
10517         (__arm_vcmpleq_n_f16): Remove.
10518         (__arm_vcmpleq_f16): Remove.
10519         (__arm_vcmpgtq_n_f16): Remove.
10520         (__arm_vcmpgtq_f16): Remove.
10521         (__arm_vcmpgeq_n_f16): Remove.
10522         (__arm_vcmpgeq_f16): Remove.
10523         (__arm_vcmpeqq_n_f16): Remove.
10524         (__arm_vcmpeqq_f16): Remove.
10525         (__arm_vcmpneq_n_f32): Remove.
10526         (__arm_vcmpneq_f32): Remove.
10527         (__arm_vcmpltq_n_f32): Remove.
10528         (__arm_vcmpltq_f32): Remove.
10529         (__arm_vcmpleq_n_f32): Remove.
10530         (__arm_vcmpleq_f32): Remove.
10531         (__arm_vcmpgtq_n_f32): Remove.
10532         (__arm_vcmpgtq_f32): Remove.
10533         (__arm_vcmpgeq_n_f32): Remove.
10534         (__arm_vcmpgeq_f32): Remove.
10535         (__arm_vcmpeqq_n_f32): Remove.
10536         (__arm_vcmpeqq_f32): Remove.
10537         (__arm_vcmpeqq_m_f16): Remove.
10538         (__arm_vcmpeqq_m_f32): Remove.
10539         (__arm_vcmpeqq_m_n_f16): Remove.
10540         (__arm_vcmpgeq_m_f16): Remove.
10541         (__arm_vcmpgeq_m_n_f16): Remove.
10542         (__arm_vcmpgtq_m_f16): Remove.
10543         (__arm_vcmpgtq_m_n_f16): Remove.
10544         (__arm_vcmpleq_m_f16): Remove.
10545         (__arm_vcmpleq_m_n_f16): Remove.
10546         (__arm_vcmpltq_m_f16): Remove.
10547         (__arm_vcmpltq_m_n_f16): Remove.
10548         (__arm_vcmpneq_m_f16): Remove.
10549         (__arm_vcmpneq_m_n_f16): Remove.
10550         (__arm_vcmpeqq_m_n_f32): Remove.
10551         (__arm_vcmpgeq_m_f32): Remove.
10552         (__arm_vcmpgeq_m_n_f32): Remove.
10553         (__arm_vcmpgtq_m_f32): Remove.
10554         (__arm_vcmpgtq_m_n_f32): Remove.
10555         (__arm_vcmpleq_m_f32): Remove.
10556         (__arm_vcmpleq_m_n_f32): Remove.
10557         (__arm_vcmpltq_m_f32): Remove.
10558         (__arm_vcmpltq_m_n_f32): Remove.
10559         (__arm_vcmpneq_m_f32): Remove.
10560         (__arm_vcmpneq_m_n_f32): Remove.
10561         (__arm_vcmpneq): Remove.
10562         (__arm_vcmphiq): Remove.
10563         (__arm_vcmpeqq): Remove.
10564         (__arm_vcmpcsq): Remove.
10565         (__arm_vcmpltq): Remove.
10566         (__arm_vcmpleq): Remove.
10567         (__arm_vcmpgtq): Remove.
10568         (__arm_vcmpgeq): Remove.
10569         (__arm_vcmpneq_m): Remove.
10570         (__arm_vcmphiq_m): Remove.
10571         (__arm_vcmpeqq_m): Remove.
10572         (__arm_vcmpcsq_m): Remove.
10573         (__arm_vcmpltq_m): Remove.
10574         (__arm_vcmpleq_m): Remove.
10575         (__arm_vcmpgtq_m): Remove.
10576         (__arm_vcmpgeq_m): Remove.
10578 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10580         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
10581         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
10583 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10585         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
10586         (MVE_CMP_M_N_F, mve_cmp_op1): New.
10587         (isu): Add VCMP*
10588         (supf): Likewise.
10589         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
10590         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
10591         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
10592         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
10593         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
10594         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
10595         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
10596         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
10597         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
10598         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
10599         ...
10600         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
10601         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
10602         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
10603         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
10604         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
10605         into ...
10606         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
10607         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
10608         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
10609         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
10610         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
10612 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
10614         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
10615         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
10616         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
10617         vice versa.
10619 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
10621         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
10622         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
10623         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
10624         Simplify parity(rotate(x,y)) as parity(x).
10626 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10628         * config/riscv/autovec.md (@vec_series<mode>): New pattern
10629         * config/riscv/riscv-protos.h (expand_vec_series): New function.
10630         * config/riscv/riscv-v.cc (emit_binop): Ditto.
10631         (emit_index_op): Ditto.
10632         (expand_vec_series): Ditto.
10633         (expand_const_vector): Add series vector handling.
10634         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
10636 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
10638         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
10639         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
10640         (*concat<mode><dwi>3_2): Likewise.
10641         (*concat<mode><dwi>3_3): Likewise.
10642         (*concat<mode><dwi>3_4): Likewise.
10643         (*concat<mode><dwi>3_5): Likewise.
10644         (*concat<mode><dwi>3_6): Likewise.
10645         (*concat<mode><dwi>3_7): Likewise.
10647 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
10649         PR target/92658
10650         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
10651         (<insn>v4qiv4hi2): New expander.
10652         (<insn>v2hiv2si2): Ditto.
10653         (<insn>v2qiv2si2): Ditto.
10654         (<insn>v2qiv2hi2): Ditto.
10656 2023-05-10  Jeff Law  <jlaw@ventanamicro>
10658         * config/h8300/constraints.md (Q): Make this a special memory
10659         constraint.
10660         (Zz): Similarly.
10662 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
10664         PR fortran/109788
10665         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
10666         if t is void_list_node.
10668 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10670         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
10671         (aarch64_sqmovun<mode>_insn_be): Delete.
10672         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
10673         (aarch64_sqmovun<mode>): Delete expander.
10675 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10677         PR target/99195
10678         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
10679         Rename to...
10680         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
10681         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
10682         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
10684 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10686         PR target/99195
10687         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
10688         Rename to...
10689         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
10690         (aarch64_<sur>qadd<mode>): Rename to...
10691         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
10693 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10695         * config/aarch64/aarch64-simd.md
10696         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
10697         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
10698         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
10699         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
10701 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10703         PR target/99195
10704         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
10705         (aarch64_xtn<mode>_insn_be): Likewise.
10706         (trunc<mode><Vnarrowq>2): Rename to...
10707         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
10708         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
10709         (aarch64_<su>qmovn<mode>): Likewise.
10710         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
10711         (aarch64_<su>qmovn<mode>_insn_le): Delete.
10712         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
10714 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
10716         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
10717         intruction replace null avl with (const_int 0).
10719 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10721         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
10722         incorrect codes.
10724 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10726         PR target/109773
10727         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
10728         (source_equal_p): Fix dead loop in vsetvl avl checking.
10730 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
10732         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
10733         of modeadjusted_dccr.
10735 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10737         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
10738         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
10739         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
10740         * config/arm/arm-mve-builtins.cc
10741         (function_instance::has_inactive_argument): Handle vmaxaq and
10742         vminaq.
10743         * config/arm/arm_mve.h (vminaq): Remove.
10744         (vmaxaq): Remove.
10745         (vminaq_m): Remove.
10746         (vmaxaq_m): Remove.
10747         (vminaq_s8): Remove.
10748         (vmaxaq_s8): Remove.
10749         (vminaq_s16): Remove.
10750         (vmaxaq_s16): Remove.
10751         (vminaq_s32): Remove.
10752         (vmaxaq_s32): Remove.
10753         (vminaq_m_s8): Remove.
10754         (vmaxaq_m_s8): Remove.
10755         (vminaq_m_s16): Remove.
10756         (vmaxaq_m_s16): Remove.
10757         (vminaq_m_s32): Remove.
10758         (vmaxaq_m_s32): Remove.
10759         (__arm_vminaq_s8): Remove.
10760         (__arm_vmaxaq_s8): Remove.
10761         (__arm_vminaq_s16): Remove.
10762         (__arm_vmaxaq_s16): Remove.
10763         (__arm_vminaq_s32): Remove.
10764         (__arm_vmaxaq_s32): Remove.
10765         (__arm_vminaq_m_s8): Remove.
10766         (__arm_vmaxaq_m_s8): Remove.
10767         (__arm_vminaq_m_s16): Remove.
10768         (__arm_vmaxaq_m_s16): Remove.
10769         (__arm_vminaq_m_s32): Remove.
10770         (__arm_vmaxaq_m_s32): Remove.
10771         (__arm_vminaq): Remove.
10772         (__arm_vmaxaq): Remove.
10773         (__arm_vminaq_m): Remove.
10774         (__arm_vmaxaq_m): Remove.
10776 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10778         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
10779         New.
10780         (mve_insn): Add vmaxa, vmina.
10781         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
10782         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
10783         Merge into ...
10784         (@mve_<mve_insn>q_<supf><mode>): ... this.
10785         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
10786         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10788 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10790         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
10791         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
10793 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10795         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
10796         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
10797         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
10798         * config/arm/arm-mve-builtins.cc
10799         (function_instance::has_inactive_argument): Handle vmaxnmaq and
10800         vminnmaq.
10801         * config/arm/arm_mve.h (vminnmaq): Remove.
10802         (vmaxnmaq): Remove.
10803         (vmaxnmaq_m): Remove.
10804         (vminnmaq_m): Remove.
10805         (vminnmaq_f16): Remove.
10806         (vmaxnmaq_f16): Remove.
10807         (vminnmaq_f32): Remove.
10808         (vmaxnmaq_f32): Remove.
10809         (vmaxnmaq_m_f16): Remove.
10810         (vminnmaq_m_f16): Remove.
10811         (vmaxnmaq_m_f32): Remove.
10812         (vminnmaq_m_f32): Remove.
10813         (__arm_vminnmaq_f16): Remove.
10814         (__arm_vmaxnmaq_f16): Remove.
10815         (__arm_vminnmaq_f32): Remove.
10816         (__arm_vmaxnmaq_f32): Remove.
10817         (__arm_vmaxnmaq_m_f16): Remove.
10818         (__arm_vminnmaq_m_f16): Remove.
10819         (__arm_vmaxnmaq_m_f32): Remove.
10820         (__arm_vminnmaq_m_f32): Remove.
10821         (__arm_vminnmaq): Remove.
10822         (__arm_vmaxnmaq): Remove.
10823         (__arm_vmaxnmaq_m): Remove.
10824         (__arm_vminnmaq_m): Remove.
10826 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10828         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
10829         (MVE_VMAXNMA_VMINNMAQ_M): New.
10830         (mve_insn): Add vmaxnma, vminnma.
10831         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
10832         Merge into ...
10833         (@mve_<mve_insn>q_f<mode>): ... this.
10834         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
10835         (@mve_<mve_insn>q_m_f<mode>): ... this.
10837 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10839         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
10840         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
10841         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
10842         (vminnmavq, vminnmvq): New.
10843         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
10844         (vminnmavq, vminnmvq): New.
10845         * config/arm/arm_mve.h (vminnmvq): Remove.
10846         (vminnmavq): Remove.
10847         (vmaxnmvq): Remove.
10848         (vmaxnmavq): Remove.
10849         (vmaxnmavq_p): Remove.
10850         (vmaxnmvq_p): Remove.
10851         (vminnmavq_p): Remove.
10852         (vminnmvq_p): Remove.
10853         (vminnmvq_f16): Remove.
10854         (vminnmavq_f16): Remove.
10855         (vmaxnmvq_f16): Remove.
10856         (vmaxnmavq_f16): Remove.
10857         (vminnmvq_f32): Remove.
10858         (vminnmavq_f32): Remove.
10859         (vmaxnmvq_f32): Remove.
10860         (vmaxnmavq_f32): Remove.
10861         (vmaxnmavq_p_f16): Remove.
10862         (vmaxnmvq_p_f16): Remove.
10863         (vminnmavq_p_f16): Remove.
10864         (vminnmvq_p_f16): Remove.
10865         (vmaxnmavq_p_f32): Remove.
10866         (vmaxnmvq_p_f32): Remove.
10867         (vminnmavq_p_f32): Remove.
10868         (vminnmvq_p_f32): Remove.
10869         (__arm_vminnmvq_f16): Remove.
10870         (__arm_vminnmavq_f16): Remove.
10871         (__arm_vmaxnmvq_f16): Remove.
10872         (__arm_vmaxnmavq_f16): Remove.
10873         (__arm_vminnmvq_f32): Remove.
10874         (__arm_vminnmavq_f32): Remove.
10875         (__arm_vmaxnmvq_f32): Remove.
10876         (__arm_vmaxnmavq_f32): Remove.
10877         (__arm_vmaxnmavq_p_f16): Remove.
10878         (__arm_vmaxnmvq_p_f16): Remove.
10879         (__arm_vminnmavq_p_f16): Remove.
10880         (__arm_vminnmvq_p_f16): Remove.
10881         (__arm_vmaxnmavq_p_f32): Remove.
10882         (__arm_vmaxnmvq_p_f32): Remove.
10883         (__arm_vminnmavq_p_f32): Remove.
10884         (__arm_vminnmvq_p_f32): Remove.
10885         (__arm_vminnmvq): Remove.
10886         (__arm_vminnmavq): Remove.
10887         (__arm_vmaxnmvq): Remove.
10888         (__arm_vmaxnmavq): Remove.
10889         (__arm_vmaxnmavq_p): Remove.
10890         (__arm_vmaxnmvq_p): Remove.
10891         (__arm_vminnmavq_p): Remove.
10892         (__arm_vminnmvq_p): Remove.
10893         (__arm_vmaxnmavq_m): Remove.
10894         (__arm_vmaxnmvq_m): Remove.
10896 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10898         * config/arm/arm-mve-builtins-functions.h
10899         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
10901 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10903         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
10904         (MVE_VMAXNMxV_MINNMxVQ_P): New.
10905         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
10906         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
10907         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
10908         (@mve_<mve_insn>q_f<mode>): ... this.
10909         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
10910         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
10911         (@mve_<mve_insn>q_p_f<mode>): ... this.
10913 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10915         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
10916         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
10917         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
10918         * config/arm/arm_mve.h (vminnmq): Remove.
10919         (vmaxnmq): Remove.
10920         (vmaxnmq_m): Remove.
10921         (vminnmq_m): Remove.
10922         (vminnmq_x): Remove.
10923         (vmaxnmq_x): Remove.
10924         (vminnmq_f16): Remove.
10925         (vmaxnmq_f16): Remove.
10926         (vminnmq_f32): Remove.
10927         (vmaxnmq_f32): Remove.
10928         (vmaxnmq_m_f32): Remove.
10929         (vmaxnmq_m_f16): Remove.
10930         (vminnmq_m_f32): Remove.
10931         (vminnmq_m_f16): Remove.
10932         (vminnmq_x_f16): Remove.
10933         (vminnmq_x_f32): Remove.
10934         (vmaxnmq_x_f16): Remove.
10935         (vmaxnmq_x_f32): Remove.
10936         (__arm_vminnmq_f16): Remove.
10937         (__arm_vmaxnmq_f16): Remove.
10938         (__arm_vminnmq_f32): Remove.
10939         (__arm_vmaxnmq_f32): Remove.
10940         (__arm_vmaxnmq_m_f32): Remove.
10941         (__arm_vmaxnmq_m_f16): Remove.
10942         (__arm_vminnmq_m_f32): Remove.
10943         (__arm_vminnmq_m_f16): Remove.
10944         (__arm_vminnmq_x_f16): Remove.
10945         (__arm_vminnmq_x_f32): Remove.
10946         (__arm_vmaxnmq_x_f16): Remove.
10947         (__arm_vmaxnmq_x_f32): Remove.
10948         (__arm_vminnmq): Remove.
10949         (__arm_vmaxnmq): Remove.
10950         (__arm_vmaxnmq_m): Remove.
10951         (__arm_vminnmq_m): Remove.
10952         (__arm_vminnmq_x): Remove.
10953         (__arm_vmaxnmq_x): Remove.
10955 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10957         * config/arm/iterators.md (MAX_MIN_F): New.
10958         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
10959         (mve_insn): Add vmaxnm, vminnm.
10960         (max_min_f_str): New.
10961         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
10962         Merge into ...
10963         (@mve_<max_min_f_str>q_f<mode>): ... this.
10964         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
10965         (@mve_<mve_insn>q_m_f<mode>): ... this.
10967 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10969         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
10970         (smax<mode>3): Likewise.
10972 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
10974         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
10975         (FUNCTION_PRED_P_S): New.
10976         (vmaxavq, vminavq, vmaxvq, vminvq): New.
10977         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
10978         (vminvq): New.
10979         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
10980         (vminvq): New.
10981         * config/arm/arm_mve.h (vminvq): Remove.
10982         (vmaxvq): Remove.
10983         (vminvq_p): Remove.
10984         (vmaxvq_p): Remove.
10985         (vminvq_u8): Remove.
10986         (vmaxvq_u8): Remove.
10987         (vminvq_s8): Remove.
10988         (vmaxvq_s8): Remove.
10989         (vminvq_u16): Remove.
10990         (vmaxvq_u16): Remove.
10991         (vminvq_s16): Remove.
10992         (vmaxvq_s16): Remove.
10993         (vminvq_u32): Remove.
10994         (vmaxvq_u32): Remove.
10995         (vminvq_s32): Remove.
10996         (vmaxvq_s32): Remove.
10997         (vminvq_p_u8): Remove.
10998         (vmaxvq_p_u8): Remove.
10999         (vminvq_p_s8): Remove.
11000         (vmaxvq_p_s8): Remove.
11001         (vminvq_p_u16): Remove.
11002         (vmaxvq_p_u16): Remove.
11003         (vminvq_p_s16): Remove.
11004         (vmaxvq_p_s16): Remove.
11005         (vminvq_p_u32): Remove.
11006         (vmaxvq_p_u32): Remove.
11007         (vminvq_p_s32): Remove.
11008         (vmaxvq_p_s32): Remove.
11009         (__arm_vminvq_u8): Remove.
11010         (__arm_vmaxvq_u8): Remove.
11011         (__arm_vminvq_s8): Remove.
11012         (__arm_vmaxvq_s8): Remove.
11013         (__arm_vminvq_u16): Remove.
11014         (__arm_vmaxvq_u16): Remove.
11015         (__arm_vminvq_s16): Remove.
11016         (__arm_vmaxvq_s16): Remove.
11017         (__arm_vminvq_u32): Remove.
11018         (__arm_vmaxvq_u32): Remove.
11019         (__arm_vminvq_s32): Remove.
11020         (__arm_vmaxvq_s32): Remove.
11021         (__arm_vminvq_p_u8): Remove.
11022         (__arm_vmaxvq_p_u8): Remove.
11023         (__arm_vminvq_p_s8): Remove.
11024         (__arm_vmaxvq_p_s8): Remove.
11025         (__arm_vminvq_p_u16): Remove.
11026         (__arm_vmaxvq_p_u16): Remove.
11027         (__arm_vminvq_p_s16): Remove.
11028         (__arm_vmaxvq_p_s16): Remove.
11029         (__arm_vminvq_p_u32): Remove.
11030         (__arm_vmaxvq_p_u32): Remove.
11031         (__arm_vminvq_p_s32): Remove.
11032         (__arm_vmaxvq_p_s32): Remove.
11033         (__arm_vminvq): Remove.
11034         (__arm_vmaxvq): Remove.
11035         (__arm_vminvq_p): Remove.
11036         (__arm_vmaxvq_p): Remove.
11037         (vminavq): Remove.
11038         (vmaxavq): Remove.
11039         (vminavq_p): Remove.
11040         (vmaxavq_p): Remove.
11041         (vminavq_s8): Remove.
11042         (vmaxavq_s8): Remove.
11043         (vminavq_s16): Remove.
11044         (vmaxavq_s16): Remove.
11045         (vminavq_s32): Remove.
11046         (vmaxavq_s32): Remove.
11047         (vminavq_p_s8): Remove.
11048         (vmaxavq_p_s8): Remove.
11049         (vminavq_p_s16): Remove.
11050         (vmaxavq_p_s16): Remove.
11051         (vminavq_p_s32): Remove.
11052         (vmaxavq_p_s32): Remove.
11053         (__arm_vminavq_s8): Remove.
11054         (__arm_vmaxavq_s8): Remove.
11055         (__arm_vminavq_s16): Remove.
11056         (__arm_vmaxavq_s16): Remove.
11057         (__arm_vminavq_s32): Remove.
11058         (__arm_vmaxavq_s32): Remove.
11059         (__arm_vminavq_p_s8): Remove.
11060         (__arm_vmaxavq_p_s8): Remove.
11061         (__arm_vminavq_p_s16): Remove.
11062         (__arm_vmaxavq_p_s16): Remove.
11063         (__arm_vminavq_p_s32): Remove.
11064         (__arm_vmaxavq_p_s32): Remove.
11065         (__arm_vminavq): Remove.
11066         (__arm_vmaxavq): Remove.
11067         (__arm_vminavq_p): Remove.
11068         (__arm_vmaxavq_p): Remove.
11070 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11072         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
11073         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
11074         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
11075         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
11076         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
11077         (@mve_<mve_insn>q_<supf><mode>): ... this.
11078         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
11079         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
11080         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11082 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11084         * config/arm/arm-mve-builtins-functions.h (class
11085         unspec_mve_function_exact_insn_pred_p): New.
11087 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11089         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
11090         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
11092 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11094         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
11095         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
11097 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
11099         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
11100         Declare.
11101         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
11102         (ADJUST_REG_ALLOC_ORDER): Likewise.
11103         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
11104         function.
11105         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
11106         Upa rather than Upl for unpredicated movprfx alternatives.
11108 2023-05-09  Jeff Law  <jlaw@ventanamicro>
11110         * config/h8300/testcompare.md: Add peephole2 which uses a memory
11111         load to set flags, thus eliminating a compare against zero.
11113 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11115         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
11116         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
11117         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
11118         * config/arm/arm_mve.h (vshlltq): Remove.
11119         (vshllbq): Remove.
11120         (vshllbq_m): Remove.
11121         (vshlltq_m): Remove.
11122         (vshllbq_x): Remove.
11123         (vshlltq_x): Remove.
11124         (vshlltq_n_u8): Remove.
11125         (vshllbq_n_u8): Remove.
11126         (vshlltq_n_s8): Remove.
11127         (vshllbq_n_s8): Remove.
11128         (vshlltq_n_u16): Remove.
11129         (vshllbq_n_u16): Remove.
11130         (vshlltq_n_s16): Remove.
11131         (vshllbq_n_s16): Remove.
11132         (vshllbq_m_n_s8): Remove.
11133         (vshllbq_m_n_s16): Remove.
11134         (vshllbq_m_n_u8): Remove.
11135         (vshllbq_m_n_u16): Remove.
11136         (vshlltq_m_n_s8): Remove.
11137         (vshlltq_m_n_s16): Remove.
11138         (vshlltq_m_n_u8): Remove.
11139         (vshlltq_m_n_u16): Remove.
11140         (vshllbq_x_n_s8): Remove.
11141         (vshllbq_x_n_s16): Remove.
11142         (vshllbq_x_n_u8): Remove.
11143         (vshllbq_x_n_u16): Remove.
11144         (vshlltq_x_n_s8): Remove.
11145         (vshlltq_x_n_s16): Remove.
11146         (vshlltq_x_n_u8): Remove.
11147         (vshlltq_x_n_u16): Remove.
11148         (__arm_vshlltq_n_u8): Remove.
11149         (__arm_vshllbq_n_u8): Remove.
11150         (__arm_vshlltq_n_s8): Remove.
11151         (__arm_vshllbq_n_s8): Remove.
11152         (__arm_vshlltq_n_u16): Remove.
11153         (__arm_vshllbq_n_u16): Remove.
11154         (__arm_vshlltq_n_s16): Remove.
11155         (__arm_vshllbq_n_s16): Remove.
11156         (__arm_vshllbq_m_n_s8): Remove.
11157         (__arm_vshllbq_m_n_s16): Remove.
11158         (__arm_vshllbq_m_n_u8): Remove.
11159         (__arm_vshllbq_m_n_u16): Remove.
11160         (__arm_vshlltq_m_n_s8): Remove.
11161         (__arm_vshlltq_m_n_s16): Remove.
11162         (__arm_vshlltq_m_n_u8): Remove.
11163         (__arm_vshlltq_m_n_u16): Remove.
11164         (__arm_vshllbq_x_n_s8): Remove.
11165         (__arm_vshllbq_x_n_s16): Remove.
11166         (__arm_vshllbq_x_n_u8): Remove.
11167         (__arm_vshllbq_x_n_u16): Remove.
11168         (__arm_vshlltq_x_n_s8): Remove.
11169         (__arm_vshlltq_x_n_s16): Remove.
11170         (__arm_vshlltq_x_n_u8): Remove.
11171         (__arm_vshlltq_x_n_u16): Remove.
11172         (__arm_vshlltq): Remove.
11173         (__arm_vshllbq): Remove.
11174         (__arm_vshllbq_m): Remove.
11175         (__arm_vshlltq_m): Remove.
11176         (__arm_vshllbq_x): Remove.
11177         (__arm_vshlltq_x): Remove.
11179 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11181         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
11182         (VSHLLBQ_N, VSHLLTQ_N): Remove.
11183         (VSHLLxQ_N): New.
11184         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
11185         (VSHLLxQ_M_N): New.
11186         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
11187         (mve_vshlltq_n_<supf><mode>): Merge into ...
11188         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11189         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
11190         Merge into ...
11191         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11193 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11195         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
11196         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
11198 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11200         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
11201         (vqmovntq, vqmovunbq, vqmovuntq): New.
11202         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
11203         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
11204         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
11205         (vqmovntq, vqmovunbq, vqmovuntq): New.
11206         * config/arm/arm-mve-builtins.cc
11207         (function_instance::has_inactive_argument): Handle vmovnbq,
11208         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
11209         * config/arm/arm_mve.h (vqmovntq): Remove.
11210         (vqmovnbq): Remove.
11211         (vqmovnbq_m): Remove.
11212         (vqmovntq_m): Remove.
11213         (vqmovntq_u16): Remove.
11214         (vqmovnbq_u16): Remove.
11215         (vqmovntq_s16): Remove.
11216         (vqmovnbq_s16): Remove.
11217         (vqmovntq_u32): Remove.
11218         (vqmovnbq_u32): Remove.
11219         (vqmovntq_s32): Remove.
11220         (vqmovnbq_s32): Remove.
11221         (vqmovnbq_m_s16): Remove.
11222         (vqmovntq_m_s16): Remove.
11223         (vqmovnbq_m_u16): Remove.
11224         (vqmovntq_m_u16): Remove.
11225         (vqmovnbq_m_s32): Remove.
11226         (vqmovntq_m_s32): Remove.
11227         (vqmovnbq_m_u32): Remove.
11228         (vqmovntq_m_u32): Remove.
11229         (__arm_vqmovntq_u16): Remove.
11230         (__arm_vqmovnbq_u16): Remove.
11231         (__arm_vqmovntq_s16): Remove.
11232         (__arm_vqmovnbq_s16): Remove.
11233         (__arm_vqmovntq_u32): Remove.
11234         (__arm_vqmovnbq_u32): Remove.
11235         (__arm_vqmovntq_s32): Remove.
11236         (__arm_vqmovnbq_s32): Remove.
11237         (__arm_vqmovnbq_m_s16): Remove.
11238         (__arm_vqmovntq_m_s16): Remove.
11239         (__arm_vqmovnbq_m_u16): Remove.
11240         (__arm_vqmovntq_m_u16): Remove.
11241         (__arm_vqmovnbq_m_s32): Remove.
11242         (__arm_vqmovntq_m_s32): Remove.
11243         (__arm_vqmovnbq_m_u32): Remove.
11244         (__arm_vqmovntq_m_u32): Remove.
11245         (__arm_vqmovntq): Remove.
11246         (__arm_vqmovnbq): Remove.
11247         (__arm_vqmovnbq_m): Remove.
11248         (__arm_vqmovntq_m): Remove.
11249         (vmovntq): Remove.
11250         (vmovnbq): Remove.
11251         (vmovnbq_m): Remove.
11252         (vmovntq_m): Remove.
11253         (vmovntq_u16): Remove.
11254         (vmovnbq_u16): Remove.
11255         (vmovntq_s16): Remove.
11256         (vmovnbq_s16): Remove.
11257         (vmovntq_u32): Remove.
11258         (vmovnbq_u32): Remove.
11259         (vmovntq_s32): Remove.
11260         (vmovnbq_s32): Remove.
11261         (vmovnbq_m_s16): Remove.
11262         (vmovntq_m_s16): Remove.
11263         (vmovnbq_m_u16): Remove.
11264         (vmovntq_m_u16): Remove.
11265         (vmovnbq_m_s32): Remove.
11266         (vmovntq_m_s32): Remove.
11267         (vmovnbq_m_u32): Remove.
11268         (vmovntq_m_u32): Remove.
11269         (__arm_vmovntq_u16): Remove.
11270         (__arm_vmovnbq_u16): Remove.
11271         (__arm_vmovntq_s16): Remove.
11272         (__arm_vmovnbq_s16): Remove.
11273         (__arm_vmovntq_u32): Remove.
11274         (__arm_vmovnbq_u32): Remove.
11275         (__arm_vmovntq_s32): Remove.
11276         (__arm_vmovnbq_s32): Remove.
11277         (__arm_vmovnbq_m_s16): Remove.
11278         (__arm_vmovntq_m_s16): Remove.
11279         (__arm_vmovnbq_m_u16): Remove.
11280         (__arm_vmovntq_m_u16): Remove.
11281         (__arm_vmovnbq_m_s32): Remove.
11282         (__arm_vmovntq_m_s32): Remove.
11283         (__arm_vmovnbq_m_u32): Remove.
11284         (__arm_vmovntq_m_u32): Remove.
11285         (__arm_vmovntq): Remove.
11286         (__arm_vmovnbq): Remove.
11287         (__arm_vmovnbq_m): Remove.
11288         (__arm_vmovntq_m): Remove.
11289         (vqmovuntq): Remove.
11290         (vqmovunbq): Remove.
11291         (vqmovunbq_m): Remove.
11292         (vqmovuntq_m): Remove.
11293         (vqmovuntq_s16): Remove.
11294         (vqmovunbq_s16): Remove.
11295         (vqmovuntq_s32): Remove.
11296         (vqmovunbq_s32): Remove.
11297         (vqmovunbq_m_s16): Remove.
11298         (vqmovuntq_m_s16): Remove.
11299         (vqmovunbq_m_s32): Remove.
11300         (vqmovuntq_m_s32): Remove.
11301         (__arm_vqmovuntq_s16): Remove.
11302         (__arm_vqmovunbq_s16): Remove.
11303         (__arm_vqmovuntq_s32): Remove.
11304         (__arm_vqmovunbq_s32): Remove.
11305         (__arm_vqmovunbq_m_s16): Remove.
11306         (__arm_vqmovuntq_m_s16): Remove.
11307         (__arm_vqmovunbq_m_s32): Remove.
11308         (__arm_vqmovuntq_m_s32): Remove.
11309         (__arm_vqmovuntq): Remove.
11310         (__arm_vqmovunbq): Remove.
11311         (__arm_vqmovunbq_m): Remove.
11312         (__arm_vqmovuntq_m): Remove.
11314 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11316         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
11317         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
11318         vqmovunt.
11319         (isu): Likewise.
11320         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
11321         VQMOVUNTQ_S.
11322         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
11323         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
11324         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
11325         (mve_vqmovuntq_s<mode>): Merge into ...
11326         (@mve_<mve_insn>q_<supf><mode>): ... this.
11327         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
11328         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
11329         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
11330         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11332 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11334         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
11335         (binary_move_narrow_unsigned): New.
11336         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
11337         (binary_move_narrow_unsigned): New.
11339 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11341         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
11342         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
11343         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
11344         (vrndpq, vrndq, vrndxq): New.
11345         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
11346         (vrndpq, vrndq, vrndxq): New.
11347         * config/arm/arm_mve.h (vrndxq): Remove.
11348         (vrndq): Remove.
11349         (vrndpq): Remove.
11350         (vrndnq): Remove.
11351         (vrndmq): Remove.
11352         (vrndaq): Remove.
11353         (vrndaq_m): Remove.
11354         (vrndmq_m): Remove.
11355         (vrndnq_m): Remove.
11356         (vrndpq_m): Remove.
11357         (vrndq_m): Remove.
11358         (vrndxq_m): Remove.
11359         (vrndq_x): Remove.
11360         (vrndnq_x): Remove.
11361         (vrndmq_x): Remove.
11362         (vrndpq_x): Remove.
11363         (vrndaq_x): Remove.
11364         (vrndxq_x): Remove.
11365         (vrndxq_f16): Remove.
11366         (vrndxq_f32): Remove.
11367         (vrndq_f16): Remove.
11368         (vrndq_f32): Remove.
11369         (vrndpq_f16): Remove.
11370         (vrndpq_f32): Remove.
11371         (vrndnq_f16): Remove.
11372         (vrndnq_f32): Remove.
11373         (vrndmq_f16): Remove.
11374         (vrndmq_f32): Remove.
11375         (vrndaq_f16): Remove.
11376         (vrndaq_f32): Remove.
11377         (vrndaq_m_f16): Remove.
11378         (vrndmq_m_f16): Remove.
11379         (vrndnq_m_f16): Remove.
11380         (vrndpq_m_f16): Remove.
11381         (vrndq_m_f16): Remove.
11382         (vrndxq_m_f16): Remove.
11383         (vrndaq_m_f32): Remove.
11384         (vrndmq_m_f32): Remove.
11385         (vrndnq_m_f32): Remove.
11386         (vrndpq_m_f32): Remove.
11387         (vrndq_m_f32): Remove.
11388         (vrndxq_m_f32): Remove.
11389         (vrndq_x_f16): Remove.
11390         (vrndq_x_f32): Remove.
11391         (vrndnq_x_f16): Remove.
11392         (vrndnq_x_f32): Remove.
11393         (vrndmq_x_f16): Remove.
11394         (vrndmq_x_f32): Remove.
11395         (vrndpq_x_f16): Remove.
11396         (vrndpq_x_f32): Remove.
11397         (vrndaq_x_f16): Remove.
11398         (vrndaq_x_f32): Remove.
11399         (vrndxq_x_f16): Remove.
11400         (vrndxq_x_f32): Remove.
11401         (__arm_vrndxq_f16): Remove.
11402         (__arm_vrndxq_f32): Remove.
11403         (__arm_vrndq_f16): Remove.
11404         (__arm_vrndq_f32): Remove.
11405         (__arm_vrndpq_f16): Remove.
11406         (__arm_vrndpq_f32): Remove.
11407         (__arm_vrndnq_f16): Remove.
11408         (__arm_vrndnq_f32): Remove.
11409         (__arm_vrndmq_f16): Remove.
11410         (__arm_vrndmq_f32): Remove.
11411         (__arm_vrndaq_f16): Remove.
11412         (__arm_vrndaq_f32): Remove.
11413         (__arm_vrndaq_m_f16): Remove.
11414         (__arm_vrndmq_m_f16): Remove.
11415         (__arm_vrndnq_m_f16): Remove.
11416         (__arm_vrndpq_m_f16): Remove.
11417         (__arm_vrndq_m_f16): Remove.
11418         (__arm_vrndxq_m_f16): Remove.
11419         (__arm_vrndaq_m_f32): Remove.
11420         (__arm_vrndmq_m_f32): Remove.
11421         (__arm_vrndnq_m_f32): Remove.
11422         (__arm_vrndpq_m_f32): Remove.
11423         (__arm_vrndq_m_f32): Remove.
11424         (__arm_vrndxq_m_f32): Remove.
11425         (__arm_vrndq_x_f16): Remove.
11426         (__arm_vrndq_x_f32): Remove.
11427         (__arm_vrndnq_x_f16): Remove.
11428         (__arm_vrndnq_x_f32): Remove.
11429         (__arm_vrndmq_x_f16): Remove.
11430         (__arm_vrndmq_x_f32): Remove.
11431         (__arm_vrndpq_x_f16): Remove.
11432         (__arm_vrndpq_x_f32): Remove.
11433         (__arm_vrndaq_x_f16): Remove.
11434         (__arm_vrndaq_x_f32): Remove.
11435         (__arm_vrndxq_x_f16): Remove.
11436         (__arm_vrndxq_x_f32): Remove.
11437         (__arm_vrndxq): Remove.
11438         (__arm_vrndq): Remove.
11439         (__arm_vrndpq): Remove.
11440         (__arm_vrndnq): Remove.
11441         (__arm_vrndmq): Remove.
11442         (__arm_vrndaq): Remove.
11443         (__arm_vrndaq_m): Remove.
11444         (__arm_vrndmq_m): Remove.
11445         (__arm_vrndnq_m): Remove.
11446         (__arm_vrndpq_m): Remove.
11447         (__arm_vrndq_m): Remove.
11448         (__arm_vrndxq_m): Remove.
11449         (__arm_vrndq_x): Remove.
11450         (__arm_vrndnq_x): Remove.
11451         (__arm_vrndmq_x): Remove.
11452         (__arm_vrndpq_x): Remove.
11453         (__arm_vrndaq_x): Remove.
11454         (__arm_vrndxq_x): Remove.
11456 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11458         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
11459         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
11460         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
11461         (vclzq, vqabsq, vqnegq): New.
11462         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
11463         (vqabsq, vqnegq): New.
11464         * config/arm/arm_mve.h (vabsq): Remove.
11465         (vabsq_m): Remove.
11466         (vabsq_x): Remove.
11467         (vabsq_f16): Remove.
11468         (vabsq_f32): Remove.
11469         (vabsq_s8): Remove.
11470         (vabsq_s16): Remove.
11471         (vabsq_s32): Remove.
11472         (vabsq_m_s8): Remove.
11473         (vabsq_m_s16): Remove.
11474         (vabsq_m_s32): Remove.
11475         (vabsq_m_f16): Remove.
11476         (vabsq_m_f32): Remove.
11477         (vabsq_x_s8): Remove.
11478         (vabsq_x_s16): Remove.
11479         (vabsq_x_s32): Remove.
11480         (vabsq_x_f16): Remove.
11481         (vabsq_x_f32): Remove.
11482         (__arm_vabsq_s8): Remove.
11483         (__arm_vabsq_s16): Remove.
11484         (__arm_vabsq_s32): Remove.
11485         (__arm_vabsq_m_s8): Remove.
11486         (__arm_vabsq_m_s16): Remove.
11487         (__arm_vabsq_m_s32): Remove.
11488         (__arm_vabsq_x_s8): Remove.
11489         (__arm_vabsq_x_s16): Remove.
11490         (__arm_vabsq_x_s32): Remove.
11491         (__arm_vabsq_f16): Remove.
11492         (__arm_vabsq_f32): Remove.
11493         (__arm_vabsq_m_f16): Remove.
11494         (__arm_vabsq_m_f32): Remove.
11495         (__arm_vabsq_x_f16): Remove.
11496         (__arm_vabsq_x_f32): Remove.
11497         (__arm_vabsq): Remove.
11498         (__arm_vabsq_m): Remove.
11499         (__arm_vabsq_x): Remove.
11500         (vnegq): Remove.
11501         (vnegq_m): Remove.
11502         (vnegq_x): Remove.
11503         (vnegq_f16): Remove.
11504         (vnegq_f32): Remove.
11505         (vnegq_s8): Remove.
11506         (vnegq_s16): Remove.
11507         (vnegq_s32): Remove.
11508         (vnegq_m_s8): Remove.
11509         (vnegq_m_s16): Remove.
11510         (vnegq_m_s32): Remove.
11511         (vnegq_m_f16): Remove.
11512         (vnegq_m_f32): Remove.
11513         (vnegq_x_s8): Remove.
11514         (vnegq_x_s16): Remove.
11515         (vnegq_x_s32): Remove.
11516         (vnegq_x_f16): Remove.
11517         (vnegq_x_f32): Remove.
11518         (__arm_vnegq_s8): Remove.
11519         (__arm_vnegq_s16): Remove.
11520         (__arm_vnegq_s32): Remove.
11521         (__arm_vnegq_m_s8): Remove.
11522         (__arm_vnegq_m_s16): Remove.
11523         (__arm_vnegq_m_s32): Remove.
11524         (__arm_vnegq_x_s8): Remove.
11525         (__arm_vnegq_x_s16): Remove.
11526         (__arm_vnegq_x_s32): Remove.
11527         (__arm_vnegq_f16): Remove.
11528         (__arm_vnegq_f32): Remove.
11529         (__arm_vnegq_m_f16): Remove.
11530         (__arm_vnegq_m_f32): Remove.
11531         (__arm_vnegq_x_f16): Remove.
11532         (__arm_vnegq_x_f32): Remove.
11533         (__arm_vnegq): Remove.
11534         (__arm_vnegq_m): Remove.
11535         (__arm_vnegq_x): Remove.
11536         (vclsq): Remove.
11537         (vclsq_m): Remove.
11538         (vclsq_x): Remove.
11539         (vclsq_s8): Remove.
11540         (vclsq_s16): Remove.
11541         (vclsq_s32): Remove.
11542         (vclsq_m_s8): Remove.
11543         (vclsq_m_s16): Remove.
11544         (vclsq_m_s32): Remove.
11545         (vclsq_x_s8): Remove.
11546         (vclsq_x_s16): Remove.
11547         (vclsq_x_s32): Remove.
11548         (__arm_vclsq_s8): Remove.
11549         (__arm_vclsq_s16): Remove.
11550         (__arm_vclsq_s32): Remove.
11551         (__arm_vclsq_m_s8): Remove.
11552         (__arm_vclsq_m_s16): Remove.
11553         (__arm_vclsq_m_s32): Remove.
11554         (__arm_vclsq_x_s8): Remove.
11555         (__arm_vclsq_x_s16): Remove.
11556         (__arm_vclsq_x_s32): Remove.
11557         (__arm_vclsq): Remove.
11558         (__arm_vclsq_m): Remove.
11559         (__arm_vclsq_x): Remove.
11560         (vclzq): Remove.
11561         (vclzq_m): Remove.
11562         (vclzq_x): Remove.
11563         (vclzq_s8): Remove.
11564         (vclzq_s16): Remove.
11565         (vclzq_s32): Remove.
11566         (vclzq_u8): Remove.
11567         (vclzq_u16): Remove.
11568         (vclzq_u32): Remove.
11569         (vclzq_m_u8): Remove.
11570         (vclzq_m_s8): Remove.
11571         (vclzq_m_u16): Remove.
11572         (vclzq_m_s16): Remove.
11573         (vclzq_m_u32): Remove.
11574         (vclzq_m_s32): Remove.
11575         (vclzq_x_s8): Remove.
11576         (vclzq_x_s16): Remove.
11577         (vclzq_x_s32): Remove.
11578         (vclzq_x_u8): Remove.
11579         (vclzq_x_u16): Remove.
11580         (vclzq_x_u32): Remove.
11581         (__arm_vclzq_s8): Remove.
11582         (__arm_vclzq_s16): Remove.
11583         (__arm_vclzq_s32): Remove.
11584         (__arm_vclzq_u8): Remove.
11585         (__arm_vclzq_u16): Remove.
11586         (__arm_vclzq_u32): Remove.
11587         (__arm_vclzq_m_u8): Remove.
11588         (__arm_vclzq_m_s8): Remove.
11589         (__arm_vclzq_m_u16): Remove.
11590         (__arm_vclzq_m_s16): Remove.
11591         (__arm_vclzq_m_u32): Remove.
11592         (__arm_vclzq_m_s32): Remove.
11593         (__arm_vclzq_x_s8): Remove.
11594         (__arm_vclzq_x_s16): Remove.
11595         (__arm_vclzq_x_s32): Remove.
11596         (__arm_vclzq_x_u8): Remove.
11597         (__arm_vclzq_x_u16): Remove.
11598         (__arm_vclzq_x_u32): Remove.
11599         (__arm_vclzq): Remove.
11600         (__arm_vclzq_m): Remove.
11601         (__arm_vclzq_x): Remove.
11602         (vqabsq): Remove.
11603         (vqnegq): Remove.
11604         (vqnegq_m): Remove.
11605         (vqabsq_m): Remove.
11606         (vqabsq_s8): Remove.
11607         (vqabsq_s16): Remove.
11608         (vqabsq_s32): Remove.
11609         (vqnegq_s8): Remove.
11610         (vqnegq_s16): Remove.
11611         (vqnegq_s32): Remove.
11612         (vqnegq_m_s8): Remove.
11613         (vqabsq_m_s8): Remove.
11614         (vqnegq_m_s16): Remove.
11615         (vqabsq_m_s16): Remove.
11616         (vqnegq_m_s32): Remove.
11617         (vqabsq_m_s32): Remove.
11618         (__arm_vqabsq_s8): Remove.
11619         (__arm_vqabsq_s16): Remove.
11620         (__arm_vqabsq_s32): Remove.
11621         (__arm_vqnegq_s8): Remove.
11622         (__arm_vqnegq_s16): Remove.
11623         (__arm_vqnegq_s32): Remove.
11624         (__arm_vqnegq_m_s8): Remove.
11625         (__arm_vqabsq_m_s8): Remove.
11626         (__arm_vqnegq_m_s16): Remove.
11627         (__arm_vqabsq_m_s16): Remove.
11628         (__arm_vqnegq_m_s32): Remove.
11629         (__arm_vqabsq_m_s32): Remove.
11630         (__arm_vqabsq): Remove.
11631         (__arm_vqnegq): Remove.
11632         (__arm_vqnegq_m): Remove.
11633         (__arm_vqabsq_m): Remove.
11635 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11637         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
11638         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
11639         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
11640         vrndm, vrndn, vrndp, vrnd, vrndx.
11641         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
11642         VQABSQ_M_S, VQNEGQ_M_S.
11643         (mve_mnemo): New.
11644         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
11645         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
11646         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
11647         (@mve_<mve_insn>q_f<mode>): ... this.
11648         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
11649         (mve_v<absneg_str>q_f<mode>): ... this.
11650         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
11651         (mve_v<absneg_str>q_s<mode>): ... this.
11652         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
11653         (@mve_<mve_insn>q_<supf><mode>): ... this.
11654         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
11655         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
11656         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
11657         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11658         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
11659         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
11660         (mve_vrndxq_m_f<mode>): Merge into ...
11661         (@mve_<mve_insn>q_m_f<mode>): ... this.
11663 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
11665         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
11666         * config/arm/arm-mve-builtins-shapes.h (unary): New.
11668 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
11670         * mux-utils.h: Fix comment typo, avoides -> avoids.
11672 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
11674         PR tree-optimization/109778
11675         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
11676         wi::zext (x, width) rather than x if width != precision, rather
11677         than using wi::zext (right, width) after the shift.
11678         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
11679         of wi::lrotate or wi::rrotate.
11681 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
11683         * genmatch.cc (get_out_file): Make static and rename to ...
11684         (choose_output): ... this. Reimplement. Update all uses ...
11685         (decision_tree::gen): ... here and ...
11686         (main): ... here.
11688 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
11690         * genmatch.cc (showUsage): Reimplement as ...
11691         (usage): ...this.  Adjust all uses.
11692         (main): Print usage when no arguments.  Add missing 'return 1'.
11694 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
11696         * genmatch.cc (header_file): Make static.
11697         (emit_func): Rename to...
11698         (fp_decl): ... this.  Adjust all uses.
11699         (fp_decl_done): New function.  Use it...
11700         (decision_tree::gen): ... here and...
11701         (write_predicate): ... here.
11702         (main): Adjust.
11704 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
11706         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
11707         earlyclobbers.
11709 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
11710             Uros Bizjak  <ubizjak@gmail.com>
11712         * config/i386/i386.md (any_or_plus): Move definition earlier.
11713         (*insvti_highpart_1): New define_insn_and_split to overwrite
11714         (insv) the highpart of a TImode register/memory.
11716 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
11718         * auto-profile.cc (auto_profile): Check todo from early_inline
11719         to see if cleanup_tree_vfg needs to be called.
11720         (early_inline): Return todo from early_inliner.
11722 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
11724         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
11725         New.
11726         (pass_vsetvl::get_block_info): New.
11727         (pass_vsetvl::update_vector_info): New.
11728         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
11729         (pass_vsetvl::compute_local_backward_infos): Ditto.
11730         (pass_vsetvl::transfer_before): Ditto.
11731         (pass_vsetvl::transfer_after): Ditto.
11732         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
11733         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
11734         (pass_vsetvl::cleanup_insns): Ditto.
11735         (pass_vsetvl::compute_local_backward_infos): Use
11736         update_vector_info.
11738 2023-05-08  Jeff Law  <jlaw@ventanamicro>
11740         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
11742 2023-05-08  Richard Biener  <rguenther@suse.de>
11743             Michael Meissner  <meissner@linux.ibm.com>
11745         PR middle-end/108623
11746         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
11747         Align bit fields > 1 bit to at least an 8-bit boundary.
11749 2023-05-08  Andrew Pinski  <apinski@marvell.com>
11751         PR tree-optimization/109424
11752         PR tree-optimization/59424
11753         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
11754         (factor_out_conditional_operation): This and add support for all unary
11755         operations.
11756         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
11757         to call factor_out_conditional_operation instead.
11759 2023-05-08  Andrew Pinski  <apinski@marvell.com>
11761         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
11762         over factor_out_conditional_conversion.
11764 2023-05-08  Andrew Pinski  <apinski@marvell.com>
11766         PR tree-optimization/49959
11767         PR tree-optimization/103771
11768         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
11769         Diamond shapped bb form for factor_out_conditional_conversion.
11771 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11773         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
11774         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
11775         (riscv_vector_get_mask_mode): Ditto.
11776         (get_mask_policy_no_pred): Ditto.
11777         (get_tail_policy_no_pred): Ditto.
11778         (get_mask_mode): New function.
11779         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
11780         (get_tail_policy_no_pred): Ditto.
11781         (riscv_vector_mask_mode_p): Ditto.
11782         (riscv_vector_get_mask_mode): Ditto.
11783         (get_mask_mode): New function.
11784         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
11785         global extern.
11786         (get_tail_policy_for_pred): Ditto.
11787         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
11788         (get_mask_policy_for_pred): Ditto
11789         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
11791 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
11793         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
11794         (riscv_select_multilib): New.
11795         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
11796         also handle select_by_abi.
11797         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
11798         to select_by_abi_arch_cmodel from 1.
11799         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
11800         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
11802 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
11804         * Makefile.in: (gimple-match-head.o-warn): Remove.
11805         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
11806         gimple-match-exports.cc.
11807         (gimple-match-auto.h): Only depend on s-gimple-match.
11808         (generic-match-auto.h): Likewise.
11810 2023-05-08  Andrew Pinski  <apinski@marvell.com>
11812         PR tree-optimization/109691
11813         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
11814         argument.
11815         If the removed statement can throw, have need_eh_cleanup
11816         include the bb of that statement.
11817         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
11818         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
11819         num_dce.
11820         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
11821         Initialize dceworklist instead of stmts_to_remove.
11822         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
11823         Destore dceworklist instead of stmts_to_remove.
11824         (substitute_and_fold_dom_walker::before_dom_children):
11825         Set dceworklist instead of adding to stmts_to_remove.
11826         (substitute_and_fold_engine::substitute_and_fold):
11827         Call simple_dce_from_worklist instead of poping
11828         from the list.
11829         Don't update the stat on removal statements.
11831 2023-05-07  Andrew Pinski  <apinski@marvell.com>
11833         PR target/109762
11834         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
11835         Change argument type to aarch64_feature_flags.
11836         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
11837         constructor argument type to aarch64_feature_flags.
11838         Change m_old_asm_isa_flags to be aarch64_feature_flags.
11840 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
11842         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
11843         more parallel code if can_create_pseudo_p.
11845 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
11847         PR target/43644
11848         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
11849         immediately before moving a multi-word register by parts.
11851 2023-05-06  Jeff Law  <jlaw@ventanamicro>
11853         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
11855 2023-05-06  Michael Collison  <collison@rivosinc.com>
11857         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
11858         Check that GET_MODE_NUNITS is a multiple of 2.
11860 2023-05-06  Michael Collison  <collison@rivosinc.com>
11862         * config/riscv/riscv.cc
11863         (riscv_estimated_poly_value): Implement
11864         TARGET_ESTIMATED_POLY_VALUE.
11865         (riscv_preferred_simd_mode): Implement
11866         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
11867         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
11868         (riscv_empty_mask_is_expensive): Implement
11869         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
11870         (riscv_vectorize_create_costs): Implement
11871         TARGET_VECTORIZE_CREATE_COSTS.
11872         (riscv_support_vector_misalignment): Implement
11873         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
11874         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
11875         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
11876         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
11877         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
11879 2023-05-06  Jeff Law  <jlaw@ventanamicro>
11881         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
11882         duplicate definition.
11884 2023-05-06  Michael Collison  <collison@rivosinc.com>
11886         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
11887         (riscv_vector_preferred_simd_mode): Ditto.
11888         (get_mask_policy_no_pred): Ditto.
11889         (get_tail_policy_no_pred): Ditto.
11890         (riscv_vector_mask_mode_p): Ditto.
11891         (riscv_vector_get_mask_mode): Ditto.
11893 2023-05-06  Michael Collison  <collison@rivosinc.com>
11895         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
11896         Remove static declaration to to make externally visible.
11897         (get_mask_policy_for_pred): Ditto.
11898         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
11899         New external declaration.
11900         (get_mask_policy_for_pred): Ditto.
11902 2023-05-06  Michael Collison  <collison@rivosinc.com>
11904         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
11905         (riscv_vector_get_mask_mode): Ditto.
11906         (get_mask_policy_no_pred): Ditto.
11907         (get_tail_policy_no_pred): Ditto.
11909 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
11911         * config/loongarch/loongarch.h (struct machine_function): Add
11912         reg_is_wrapped_separately array for register wrapping
11913         information.
11914         * config/loongarch/loongarch.cc
11915         (loongarch_get_separate_components): New function.
11916         (loongarch_components_for_bb): Likewise.
11917         (loongarch_disqualify_components): Likewise.
11918         (loongarch_process_components): Likewise.
11919         (loongarch_emit_prologue_components): Likewise.
11920         (loongarch_emit_epilogue_components): Likewise.
11921         (loongarch_set_handled_components): Likewise.
11922         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
11923         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
11924         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
11925         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
11926         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
11927         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
11928         (loongarch_for_each_saved_reg): Skip registers that are wrapped
11929         separately.
11931 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
11933         PR other/109522
11934         * Makefile.in (s-macro_list): Pass -nostdinc to
11935         $(GCC_FOR_TARGET).
11937 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11939         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
11940         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
11941         (preferred_simd_mode): Ditto.
11942         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
11943         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
11944         (riscv_preferred_simd_mode): New function.
11945         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
11946         * config/riscv/vector.md: Add autovec.md.
11947         * config/riscv/autovec.md: New file.
11949 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
11951         * real.h (dconst_pi): Define.
11952         (dconst_e_ptr): Formatting fix.
11953         (dconst_pi_ptr): Declare.
11954         * real.cc (dconst_pi_ptr): New function.
11955         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
11956         boundaries range with range computed from sin/cos of the particular
11957         bounds if the argument range is shorter than 2*pi.
11958         (cfn_sincos::op1_range): Take bulps into account when determining
11959         which result ranges are always invalid or behave like known NAN.
11961 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
11963         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
11964         pass type to vrange_storage::equal_p.
11965         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
11966         (irange_storage::equal_p): Same.
11967         (frange_storage::equal_p): Same.
11968         * value-range-storage.h (class frange_storage): Same.
11970 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11972         PR target/109748
11973         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
11974         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
11976 2023-05-06  liuhongt  <hongtao.liu@intel.com>
11978         * combine.cc (maybe_swap_commutative_operands): Canonicalize
11979         vec_merge when mask is constant.
11980         * doc/md.texi: Document vec_merge canonicalization.
11982 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
11984         * value-range.h (frange_arithmetic): Declare.
11985         * range-op-float.cc (frange_arithmetic): No longer static.
11986         * gimple-range-op.cc (frange_mpfr_arg1): New function.
11987         (cfn_sqrt::fold_range): Intersect the generic boundaries range
11988         with range computed from sqrt of the particular bounds.
11989         (cfn_sqrt::op1_range): Intersect the generic boundaries range
11990         with range computed from squared particular bounds.
11992 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
11994         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
11995         earlier with helper variables also renamed.
11996         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
11997         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
11998         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
12000 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
12002         * config/cris/cris.md (splitop): Add PLUS.
12003         * config/cris/cris.cc (cris_split_constant): Also handle
12004         PLUS when a split into two insns may be useful.
12006 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
12008         * config/cris/cris.md (movandsplit1): New define_peephole2.
12010 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
12012         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
12014 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
12016         * doc/md.texi (define_peephole2): Document order of scanning.
12018 2023-05-05  Pan Li  <pan2.li@intel.com>
12019             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
12021         * config/riscv/vector.md: Allow const as the operand of RVV
12022         indexed load/store.
12024 2023-05-05  Pan Li  <pan2.li@intel.com>
12026         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
12027         consumed by simplify_rtx.
12029 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12031         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
12032         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
12033         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
12034         * config/arm/arm_mve.h (vshrq): Remove.
12035         (vrshrq): Remove.
12036         (vrshrq_m): Remove.
12037         (vshrq_m): Remove.
12038         (vrshrq_x): Remove.
12039         (vshrq_x): Remove.
12040         (vshrq_n_s8): Remove.
12041         (vshrq_n_s16): Remove.
12042         (vshrq_n_s32): Remove.
12043         (vshrq_n_u8): Remove.
12044         (vshrq_n_u16): Remove.
12045         (vshrq_n_u32): Remove.
12046         (vrshrq_n_u8): Remove.
12047         (vrshrq_n_s8): Remove.
12048         (vrshrq_n_u16): Remove.
12049         (vrshrq_n_s16): Remove.
12050         (vrshrq_n_u32): Remove.
12051         (vrshrq_n_s32): Remove.
12052         (vrshrq_m_n_s8): Remove.
12053         (vrshrq_m_n_s32): Remove.
12054         (vrshrq_m_n_s16): Remove.
12055         (vrshrq_m_n_u8): Remove.
12056         (vrshrq_m_n_u32): Remove.
12057         (vrshrq_m_n_u16): Remove.
12058         (vshrq_m_n_s8): Remove.
12059         (vshrq_m_n_s32): Remove.
12060         (vshrq_m_n_s16): Remove.
12061         (vshrq_m_n_u8): Remove.
12062         (vshrq_m_n_u32): Remove.
12063         (vshrq_m_n_u16): Remove.
12064         (vrshrq_x_n_s8): Remove.
12065         (vrshrq_x_n_s16): Remove.
12066         (vrshrq_x_n_s32): Remove.
12067         (vrshrq_x_n_u8): Remove.
12068         (vrshrq_x_n_u16): Remove.
12069         (vrshrq_x_n_u32): Remove.
12070         (vshrq_x_n_s8): Remove.
12071         (vshrq_x_n_s16): Remove.
12072         (vshrq_x_n_s32): Remove.
12073         (vshrq_x_n_u8): Remove.
12074         (vshrq_x_n_u16): Remove.
12075         (vshrq_x_n_u32): Remove.
12076         (__arm_vshrq_n_s8): Remove.
12077         (__arm_vshrq_n_s16): Remove.
12078         (__arm_vshrq_n_s32): Remove.
12079         (__arm_vshrq_n_u8): Remove.
12080         (__arm_vshrq_n_u16): Remove.
12081         (__arm_vshrq_n_u32): Remove.
12082         (__arm_vrshrq_n_u8): Remove.
12083         (__arm_vrshrq_n_s8): Remove.
12084         (__arm_vrshrq_n_u16): Remove.
12085         (__arm_vrshrq_n_s16): Remove.
12086         (__arm_vrshrq_n_u32): Remove.
12087         (__arm_vrshrq_n_s32): Remove.
12088         (__arm_vrshrq_m_n_s8): Remove.
12089         (__arm_vrshrq_m_n_s32): Remove.
12090         (__arm_vrshrq_m_n_s16): Remove.
12091         (__arm_vrshrq_m_n_u8): Remove.
12092         (__arm_vrshrq_m_n_u32): Remove.
12093         (__arm_vrshrq_m_n_u16): Remove.
12094         (__arm_vshrq_m_n_s8): Remove.
12095         (__arm_vshrq_m_n_s32): Remove.
12096         (__arm_vshrq_m_n_s16): Remove.
12097         (__arm_vshrq_m_n_u8): Remove.
12098         (__arm_vshrq_m_n_u32): Remove.
12099         (__arm_vshrq_m_n_u16): Remove.
12100         (__arm_vrshrq_x_n_s8): Remove.
12101         (__arm_vrshrq_x_n_s16): Remove.
12102         (__arm_vrshrq_x_n_s32): Remove.
12103         (__arm_vrshrq_x_n_u8): Remove.
12104         (__arm_vrshrq_x_n_u16): Remove.
12105         (__arm_vrshrq_x_n_u32): Remove.
12106         (__arm_vshrq_x_n_s8): Remove.
12107         (__arm_vshrq_x_n_s16): Remove.
12108         (__arm_vshrq_x_n_s32): Remove.
12109         (__arm_vshrq_x_n_u8): Remove.
12110         (__arm_vshrq_x_n_u16): Remove.
12111         (__arm_vshrq_x_n_u32): Remove.
12112         (__arm_vshrq): Remove.
12113         (__arm_vrshrq): Remove.
12114         (__arm_vrshrq_m): Remove.
12115         (__arm_vshrq_m): Remove.
12116         (__arm_vrshrq_x): Remove.
12117         (__arm_vshrq_x): Remove.
12119 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12121         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
12122         (mve_insn): Add vrshr, vshr.
12123         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
12124         (mve_vrshrq_n_<supf><mode>): Merge into ...
12125         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12126         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
12127         into ...
12128         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12130 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12132         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
12133         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
12135 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12137         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
12138         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
12139         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
12140         (vqrshrunbq, vqrshruntq): New.
12141         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
12142         (vqrshrunbq, vqrshruntq): New.
12143         * config/arm/arm-mve-builtins.cc
12144         (function_instance::has_inactive_argument): Handle vqshrunbq,
12145         vqshruntq, vqrshrunbq, vqrshruntq.
12146         * config/arm/arm_mve.h (vqrshrunbq): Remove.
12147         (vqrshruntq): Remove.
12148         (vqrshrunbq_m): Remove.
12149         (vqrshruntq_m): Remove.
12150         (vqrshrunbq_n_s16): Remove.
12151         (vqrshrunbq_n_s32): Remove.
12152         (vqrshruntq_n_s16): Remove.
12153         (vqrshruntq_n_s32): Remove.
12154         (vqrshrunbq_m_n_s32): Remove.
12155         (vqrshrunbq_m_n_s16): Remove.
12156         (vqrshruntq_m_n_s32): Remove.
12157         (vqrshruntq_m_n_s16): Remove.
12158         (__arm_vqrshrunbq_n_s16): Remove.
12159         (__arm_vqrshrunbq_n_s32): Remove.
12160         (__arm_vqrshruntq_n_s16): Remove.
12161         (__arm_vqrshruntq_n_s32): Remove.
12162         (__arm_vqrshrunbq_m_n_s32): Remove.
12163         (__arm_vqrshrunbq_m_n_s16): Remove.
12164         (__arm_vqrshruntq_m_n_s32): Remove.
12165         (__arm_vqrshruntq_m_n_s16): Remove.
12166         (__arm_vqrshrunbq): Remove.
12167         (__arm_vqrshruntq): Remove.
12168         (__arm_vqrshrunbq_m): Remove.
12169         (__arm_vqrshruntq_m): Remove.
12170         (vqshrunbq): Remove.
12171         (vqshruntq): Remove.
12172         (vqshrunbq_m): Remove.
12173         (vqshruntq_m): Remove.
12174         (vqshrunbq_n_s16): Remove.
12175         (vqshruntq_n_s16): Remove.
12176         (vqshrunbq_n_s32): Remove.
12177         (vqshruntq_n_s32): Remove.
12178         (vqshrunbq_m_n_s32): Remove.
12179         (vqshrunbq_m_n_s16): Remove.
12180         (vqshruntq_m_n_s32): Remove.
12181         (vqshruntq_m_n_s16): Remove.
12182         (__arm_vqshrunbq_n_s16): Remove.
12183         (__arm_vqshruntq_n_s16): Remove.
12184         (__arm_vqshrunbq_n_s32): Remove.
12185         (__arm_vqshruntq_n_s32): Remove.
12186         (__arm_vqshrunbq_m_n_s32): Remove.
12187         (__arm_vqshrunbq_m_n_s16): Remove.
12188         (__arm_vqshruntq_m_n_s32): Remove.
12189         (__arm_vqshruntq_m_n_s16): Remove.
12190         (__arm_vqshrunbq): Remove.
12191         (__arm_vqshruntq): Remove.
12192         (__arm_vqshrunbq_m): Remove.
12193         (__arm_vqshruntq_m): Remove.
12195 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12197         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
12198         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
12199         (MVE_SHRN_M_N): Likewise.
12200         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
12201         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
12202         (supf): Likewise.
12203         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
12204         (mve_vqrshruntq_n_s<mode>): Remove.
12205         (mve_vqshrunbq_n_s<mode>): Remove.
12206         (mve_vqshruntq_n_s<mode>): Remove.
12207         (mve_vqrshrunbq_m_n_s<mode>): Remove.
12208         (mve_vqrshruntq_m_n_s<mode>): Remove.
12209         (mve_vqshrunbq_m_n_s<mode>): Remove.
12210         (mve_vqshruntq_m_n_s<mode>): Remove.
12212 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12214         * config/arm/arm-mve-builtins-shapes.cc
12215         (binary_rshift_narrow_unsigned): New.
12216         * config/arm/arm-mve-builtins-shapes.h
12217         (binary_rshift_narrow_unsigned): New.
12219 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12221         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
12222         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
12223         (vqrshrnbq, vqrshrntq): New.
12224         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
12225         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
12226         New.
12227         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
12228         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
12229         * config/arm/arm-mve-builtins.cc
12230         (function_instance::has_inactive_argument): Handle vshrnbq,
12231         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
12232         vqrshrntq.
12233         * config/arm/arm_mve.h (vshrnbq): Remove.
12234         (vshrntq): Remove.
12235         (vshrnbq_m): Remove.
12236         (vshrntq_m): Remove.
12237         (vshrnbq_n_s16): Remove.
12238         (vshrntq_n_s16): Remove.
12239         (vshrnbq_n_u16): Remove.
12240         (vshrntq_n_u16): Remove.
12241         (vshrnbq_n_s32): Remove.
12242         (vshrntq_n_s32): Remove.
12243         (vshrnbq_n_u32): Remove.
12244         (vshrntq_n_u32): Remove.
12245         (vshrnbq_m_n_s32): Remove.
12246         (vshrnbq_m_n_s16): Remove.
12247         (vshrnbq_m_n_u32): Remove.
12248         (vshrnbq_m_n_u16): Remove.
12249         (vshrntq_m_n_s32): Remove.
12250         (vshrntq_m_n_s16): Remove.
12251         (vshrntq_m_n_u32): Remove.
12252         (vshrntq_m_n_u16): Remove.
12253         (__arm_vshrnbq_n_s16): Remove.
12254         (__arm_vshrntq_n_s16): Remove.
12255         (__arm_vshrnbq_n_u16): Remove.
12256         (__arm_vshrntq_n_u16): Remove.
12257         (__arm_vshrnbq_n_s32): Remove.
12258         (__arm_vshrntq_n_s32): Remove.
12259         (__arm_vshrnbq_n_u32): Remove.
12260         (__arm_vshrntq_n_u32): Remove.
12261         (__arm_vshrnbq_m_n_s32): Remove.
12262         (__arm_vshrnbq_m_n_s16): Remove.
12263         (__arm_vshrnbq_m_n_u32): Remove.
12264         (__arm_vshrnbq_m_n_u16): Remove.
12265         (__arm_vshrntq_m_n_s32): Remove.
12266         (__arm_vshrntq_m_n_s16): Remove.
12267         (__arm_vshrntq_m_n_u32): Remove.
12268         (__arm_vshrntq_m_n_u16): Remove.
12269         (__arm_vshrnbq): Remove.
12270         (__arm_vshrntq): Remove.
12271         (__arm_vshrnbq_m): Remove.
12272         (__arm_vshrntq_m): Remove.
12273         (vrshrnbq): Remove.
12274         (vrshrntq): Remove.
12275         (vrshrnbq_m): Remove.
12276         (vrshrntq_m): Remove.
12277         (vrshrnbq_n_s16): Remove.
12278         (vrshrntq_n_s16): Remove.
12279         (vrshrnbq_n_u16): Remove.
12280         (vrshrntq_n_u16): Remove.
12281         (vrshrnbq_n_s32): Remove.
12282         (vrshrntq_n_s32): Remove.
12283         (vrshrnbq_n_u32): Remove.
12284         (vrshrntq_n_u32): Remove.
12285         (vrshrnbq_m_n_s32): Remove.
12286         (vrshrnbq_m_n_s16): Remove.
12287         (vrshrnbq_m_n_u32): Remove.
12288         (vrshrnbq_m_n_u16): Remove.
12289         (vrshrntq_m_n_s32): Remove.
12290         (vrshrntq_m_n_s16): Remove.
12291         (vrshrntq_m_n_u32): Remove.
12292         (vrshrntq_m_n_u16): Remove.
12293         (__arm_vrshrnbq_n_s16): Remove.
12294         (__arm_vrshrntq_n_s16): Remove.
12295         (__arm_vrshrnbq_n_u16): Remove.
12296         (__arm_vrshrntq_n_u16): Remove.
12297         (__arm_vrshrnbq_n_s32): Remove.
12298         (__arm_vrshrntq_n_s32): Remove.
12299         (__arm_vrshrnbq_n_u32): Remove.
12300         (__arm_vrshrntq_n_u32): Remove.
12301         (__arm_vrshrnbq_m_n_s32): Remove.
12302         (__arm_vrshrnbq_m_n_s16): Remove.
12303         (__arm_vrshrnbq_m_n_u32): Remove.
12304         (__arm_vrshrnbq_m_n_u16): Remove.
12305         (__arm_vrshrntq_m_n_s32): Remove.
12306         (__arm_vrshrntq_m_n_s16): Remove.
12307         (__arm_vrshrntq_m_n_u32): Remove.
12308         (__arm_vrshrntq_m_n_u16): Remove.
12309         (__arm_vrshrnbq): Remove.
12310         (__arm_vrshrntq): Remove.
12311         (__arm_vrshrnbq_m): Remove.
12312         (__arm_vrshrntq_m): Remove.
12313         (vqshrnbq): Remove.
12314         (vqshrntq): Remove.
12315         (vqshrnbq_m): Remove.
12316         (vqshrntq_m): Remove.
12317         (vqshrnbq_n_s16): Remove.
12318         (vqshrntq_n_s16): Remove.
12319         (vqshrnbq_n_u16): Remove.
12320         (vqshrntq_n_u16): Remove.
12321         (vqshrnbq_n_s32): Remove.
12322         (vqshrntq_n_s32): Remove.
12323         (vqshrnbq_n_u32): Remove.
12324         (vqshrntq_n_u32): Remove.
12325         (vqshrnbq_m_n_s32): Remove.
12326         (vqshrnbq_m_n_s16): Remove.
12327         (vqshrnbq_m_n_u32): Remove.
12328         (vqshrnbq_m_n_u16): Remove.
12329         (vqshrntq_m_n_s32): Remove.
12330         (vqshrntq_m_n_s16): Remove.
12331         (vqshrntq_m_n_u32): Remove.
12332         (vqshrntq_m_n_u16): Remove.
12333         (__arm_vqshrnbq_n_s16): Remove.
12334         (__arm_vqshrntq_n_s16): Remove.
12335         (__arm_vqshrnbq_n_u16): Remove.
12336         (__arm_vqshrntq_n_u16): Remove.
12337         (__arm_vqshrnbq_n_s32): Remove.
12338         (__arm_vqshrntq_n_s32): Remove.
12339         (__arm_vqshrnbq_n_u32): Remove.
12340         (__arm_vqshrntq_n_u32): Remove.
12341         (__arm_vqshrnbq_m_n_s32): Remove.
12342         (__arm_vqshrnbq_m_n_s16): Remove.
12343         (__arm_vqshrnbq_m_n_u32): Remove.
12344         (__arm_vqshrnbq_m_n_u16): Remove.
12345         (__arm_vqshrntq_m_n_s32): Remove.
12346         (__arm_vqshrntq_m_n_s16): Remove.
12347         (__arm_vqshrntq_m_n_u32): Remove.
12348         (__arm_vqshrntq_m_n_u16): Remove.
12349         (__arm_vqshrnbq): Remove.
12350         (__arm_vqshrntq): Remove.
12351         (__arm_vqshrnbq_m): Remove.
12352         (__arm_vqshrntq_m): Remove.
12353         (vqrshrnbq): Remove.
12354         (vqrshrntq): Remove.
12355         (vqrshrnbq_m): Remove.
12356         (vqrshrntq_m): Remove.
12357         (vqrshrnbq_n_s16): Remove.
12358         (vqrshrnbq_n_u16): Remove.
12359         (vqrshrnbq_n_s32): Remove.
12360         (vqrshrnbq_n_u32): Remove.
12361         (vqrshrntq_n_s16): Remove.
12362         (vqrshrntq_n_u16): Remove.
12363         (vqrshrntq_n_s32): Remove.
12364         (vqrshrntq_n_u32): Remove.
12365         (vqrshrnbq_m_n_s32): Remove.
12366         (vqrshrnbq_m_n_s16): Remove.
12367         (vqrshrnbq_m_n_u32): Remove.
12368         (vqrshrnbq_m_n_u16): Remove.
12369         (vqrshrntq_m_n_s32): Remove.
12370         (vqrshrntq_m_n_s16): Remove.
12371         (vqrshrntq_m_n_u32): Remove.
12372         (vqrshrntq_m_n_u16): Remove.
12373         (__arm_vqrshrnbq_n_s16): Remove.
12374         (__arm_vqrshrnbq_n_u16): Remove.
12375         (__arm_vqrshrnbq_n_s32): Remove.
12376         (__arm_vqrshrnbq_n_u32): Remove.
12377         (__arm_vqrshrntq_n_s16): Remove.
12378         (__arm_vqrshrntq_n_u16): Remove.
12379         (__arm_vqrshrntq_n_s32): Remove.
12380         (__arm_vqrshrntq_n_u32): Remove.
12381         (__arm_vqrshrnbq_m_n_s32): Remove.
12382         (__arm_vqrshrnbq_m_n_s16): Remove.
12383         (__arm_vqrshrnbq_m_n_u32): Remove.
12384         (__arm_vqrshrnbq_m_n_u16): Remove.
12385         (__arm_vqrshrntq_m_n_s32): Remove.
12386         (__arm_vqrshrntq_m_n_s16): Remove.
12387         (__arm_vqrshrntq_m_n_u32): Remove.
12388         (__arm_vqrshrntq_m_n_u16): Remove.
12389         (__arm_vqrshrnbq): Remove.
12390         (__arm_vqrshrntq): Remove.
12391         (__arm_vqrshrnbq_m): Remove.
12392         (__arm_vqrshrntq_m): Remove.
12394 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12396         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
12397         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
12398         vrshrnt, vshrnb, vshrnt.
12399         (isu): New.
12400         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
12401         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
12402         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
12403         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
12404         (mve_vshrntq_n_<supf><mode>): Merge into ...
12405         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12406         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
12407         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
12408         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
12409         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
12410         Merge into ...
12411         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12413 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12415         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
12416         New.
12417         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
12419 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12421         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
12422         (vmaxq, vminq): New.
12423         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
12424         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
12425         * config/arm/arm_mve.h (vminq): Remove.
12426         (vmaxq): Remove.
12427         (vmaxq_m): Remove.
12428         (vminq_m): Remove.
12429         (vminq_x): Remove.
12430         (vmaxq_x): Remove.
12431         (vminq_u8): Remove.
12432         (vmaxq_u8): Remove.
12433         (vminq_s8): Remove.
12434         (vmaxq_s8): Remove.
12435         (vminq_u16): Remove.
12436         (vmaxq_u16): Remove.
12437         (vminq_s16): Remove.
12438         (vmaxq_s16): Remove.
12439         (vminq_u32): Remove.
12440         (vmaxq_u32): Remove.
12441         (vminq_s32): Remove.
12442         (vmaxq_s32): Remove.
12443         (vmaxq_m_s8): Remove.
12444         (vmaxq_m_s32): Remove.
12445         (vmaxq_m_s16): Remove.
12446         (vmaxq_m_u8): Remove.
12447         (vmaxq_m_u32): Remove.
12448         (vmaxq_m_u16): Remove.
12449         (vminq_m_s8): Remove.
12450         (vminq_m_s32): Remove.
12451         (vminq_m_s16): Remove.
12452         (vminq_m_u8): Remove.
12453         (vminq_m_u32): Remove.
12454         (vminq_m_u16): Remove.
12455         (vminq_x_s8): Remove.
12456         (vminq_x_s16): Remove.
12457         (vminq_x_s32): Remove.
12458         (vminq_x_u8): Remove.
12459         (vminq_x_u16): Remove.
12460         (vminq_x_u32): Remove.
12461         (vmaxq_x_s8): Remove.
12462         (vmaxq_x_s16): Remove.
12463         (vmaxq_x_s32): Remove.
12464         (vmaxq_x_u8): Remove.
12465         (vmaxq_x_u16): Remove.
12466         (vmaxq_x_u32): Remove.
12467         (__arm_vminq_u8): Remove.
12468         (__arm_vmaxq_u8): Remove.
12469         (__arm_vminq_s8): Remove.
12470         (__arm_vmaxq_s8): Remove.
12471         (__arm_vminq_u16): Remove.
12472         (__arm_vmaxq_u16): Remove.
12473         (__arm_vminq_s16): Remove.
12474         (__arm_vmaxq_s16): Remove.
12475         (__arm_vminq_u32): Remove.
12476         (__arm_vmaxq_u32): Remove.
12477         (__arm_vminq_s32): Remove.
12478         (__arm_vmaxq_s32): Remove.
12479         (__arm_vmaxq_m_s8): Remove.
12480         (__arm_vmaxq_m_s32): Remove.
12481         (__arm_vmaxq_m_s16): Remove.
12482         (__arm_vmaxq_m_u8): Remove.
12483         (__arm_vmaxq_m_u32): Remove.
12484         (__arm_vmaxq_m_u16): Remove.
12485         (__arm_vminq_m_s8): Remove.
12486         (__arm_vminq_m_s32): Remove.
12487         (__arm_vminq_m_s16): Remove.
12488         (__arm_vminq_m_u8): Remove.
12489         (__arm_vminq_m_u32): Remove.
12490         (__arm_vminq_m_u16): Remove.
12491         (__arm_vminq_x_s8): Remove.
12492         (__arm_vminq_x_s16): Remove.
12493         (__arm_vminq_x_s32): Remove.
12494         (__arm_vminq_x_u8): Remove.
12495         (__arm_vminq_x_u16): Remove.
12496         (__arm_vminq_x_u32): Remove.
12497         (__arm_vmaxq_x_s8): Remove.
12498         (__arm_vmaxq_x_s16): Remove.
12499         (__arm_vmaxq_x_s32): Remove.
12500         (__arm_vmaxq_x_u8): Remove.
12501         (__arm_vmaxq_x_u16): Remove.
12502         (__arm_vmaxq_x_u32): Remove.
12503         (__arm_vminq): Remove.
12504         (__arm_vmaxq): Remove.
12505         (__arm_vmaxq_m): Remove.
12506         (__arm_vminq_m): Remove.
12507         (__arm_vminq_x): Remove.
12508         (__arm_vmaxq_x): Remove.
12510 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12512         * config/arm/iterators.md (MAX_MIN_SU): New.
12513         (max_min_su_str): New.
12514         (max_min_supf): New.
12515         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
12516         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
12517         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
12519 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12521         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
12522         (vqshlq, vshlq): New.
12523         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
12524         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
12525         * config/arm/arm_mve.h (vshlq): Remove.
12526         (vshlq_r): Remove.
12527         (vshlq_n): Remove.
12528         (vshlq_m_r): Remove.
12529         (vshlq_m): Remove.
12530         (vshlq_m_n): Remove.
12531         (vshlq_x): Remove.
12532         (vshlq_x_n): Remove.
12533         (vshlq_s8): Remove.
12534         (vshlq_s16): Remove.
12535         (vshlq_s32): Remove.
12536         (vshlq_u8): Remove.
12537         (vshlq_u16): Remove.
12538         (vshlq_u32): Remove.
12539         (vshlq_r_u8): Remove.
12540         (vshlq_n_u8): Remove.
12541         (vshlq_r_s8): Remove.
12542         (vshlq_n_s8): Remove.
12543         (vshlq_r_u16): Remove.
12544         (vshlq_n_u16): Remove.
12545         (vshlq_r_s16): Remove.
12546         (vshlq_n_s16): Remove.
12547         (vshlq_r_u32): Remove.
12548         (vshlq_n_u32): Remove.
12549         (vshlq_r_s32): Remove.
12550         (vshlq_n_s32): Remove.
12551         (vshlq_m_r_u8): Remove.
12552         (vshlq_m_r_s8): Remove.
12553         (vshlq_m_r_u16): Remove.
12554         (vshlq_m_r_s16): Remove.
12555         (vshlq_m_r_u32): Remove.
12556         (vshlq_m_r_s32): Remove.
12557         (vshlq_m_u8): Remove.
12558         (vshlq_m_s8): Remove.
12559         (vshlq_m_u16): Remove.
12560         (vshlq_m_s16): Remove.
12561         (vshlq_m_u32): Remove.
12562         (vshlq_m_s32): Remove.
12563         (vshlq_m_n_s8): Remove.
12564         (vshlq_m_n_s32): Remove.
12565         (vshlq_m_n_s16): Remove.
12566         (vshlq_m_n_u8): Remove.
12567         (vshlq_m_n_u32): Remove.
12568         (vshlq_m_n_u16): Remove.
12569         (vshlq_x_s8): Remove.
12570         (vshlq_x_s16): Remove.
12571         (vshlq_x_s32): Remove.
12572         (vshlq_x_u8): Remove.
12573         (vshlq_x_u16): Remove.
12574         (vshlq_x_u32): Remove.
12575         (vshlq_x_n_s8): Remove.
12576         (vshlq_x_n_s16): Remove.
12577         (vshlq_x_n_s32): Remove.
12578         (vshlq_x_n_u8): Remove.
12579         (vshlq_x_n_u16): Remove.
12580         (vshlq_x_n_u32): Remove.
12581         (__arm_vshlq_s8): Remove.
12582         (__arm_vshlq_s16): Remove.
12583         (__arm_vshlq_s32): Remove.
12584         (__arm_vshlq_u8): Remove.
12585         (__arm_vshlq_u16): Remove.
12586         (__arm_vshlq_u32): Remove.
12587         (__arm_vshlq_r_u8): Remove.
12588         (__arm_vshlq_n_u8): Remove.
12589         (__arm_vshlq_r_s8): Remove.
12590         (__arm_vshlq_n_s8): Remove.
12591         (__arm_vshlq_r_u16): Remove.
12592         (__arm_vshlq_n_u16): Remove.
12593         (__arm_vshlq_r_s16): Remove.
12594         (__arm_vshlq_n_s16): Remove.
12595         (__arm_vshlq_r_u32): Remove.
12596         (__arm_vshlq_n_u32): Remove.
12597         (__arm_vshlq_r_s32): Remove.
12598         (__arm_vshlq_n_s32): Remove.
12599         (__arm_vshlq_m_r_u8): Remove.
12600         (__arm_vshlq_m_r_s8): Remove.
12601         (__arm_vshlq_m_r_u16): Remove.
12602         (__arm_vshlq_m_r_s16): Remove.
12603         (__arm_vshlq_m_r_u32): Remove.
12604         (__arm_vshlq_m_r_s32): Remove.
12605         (__arm_vshlq_m_u8): Remove.
12606         (__arm_vshlq_m_s8): Remove.
12607         (__arm_vshlq_m_u16): Remove.
12608         (__arm_vshlq_m_s16): Remove.
12609         (__arm_vshlq_m_u32): Remove.
12610         (__arm_vshlq_m_s32): Remove.
12611         (__arm_vshlq_m_n_s8): Remove.
12612         (__arm_vshlq_m_n_s32): Remove.
12613         (__arm_vshlq_m_n_s16): Remove.
12614         (__arm_vshlq_m_n_u8): Remove.
12615         (__arm_vshlq_m_n_u32): Remove.
12616         (__arm_vshlq_m_n_u16): Remove.
12617         (__arm_vshlq_x_s8): Remove.
12618         (__arm_vshlq_x_s16): Remove.
12619         (__arm_vshlq_x_s32): Remove.
12620         (__arm_vshlq_x_u8): Remove.
12621         (__arm_vshlq_x_u16): Remove.
12622         (__arm_vshlq_x_u32): Remove.
12623         (__arm_vshlq_x_n_s8): Remove.
12624         (__arm_vshlq_x_n_s16): Remove.
12625         (__arm_vshlq_x_n_s32): Remove.
12626         (__arm_vshlq_x_n_u8): Remove.
12627         (__arm_vshlq_x_n_u16): Remove.
12628         (__arm_vshlq_x_n_u32): Remove.
12629         (__arm_vshlq): Remove.
12630         (__arm_vshlq_r): Remove.
12631         (__arm_vshlq_n): Remove.
12632         (__arm_vshlq_m_r): Remove.
12633         (__arm_vshlq_m): Remove.
12634         (__arm_vshlq_m_n): Remove.
12635         (__arm_vshlq_x): Remove.
12636         (__arm_vshlq_x_n): Remove.
12637         (vqshlq): Remove.
12638         (vqshlq_r): Remove.
12639         (vqshlq_n): Remove.
12640         (vqshlq_m_r): Remove.
12641         (vqshlq_m_n): Remove.
12642         (vqshlq_m): Remove.
12643         (vqshlq_u8): Remove.
12644         (vqshlq_r_u8): Remove.
12645         (vqshlq_n_u8): Remove.
12646         (vqshlq_s8): Remove.
12647         (vqshlq_r_s8): Remove.
12648         (vqshlq_n_s8): Remove.
12649         (vqshlq_u16): Remove.
12650         (vqshlq_r_u16): Remove.
12651         (vqshlq_n_u16): Remove.
12652         (vqshlq_s16): Remove.
12653         (vqshlq_r_s16): Remove.
12654         (vqshlq_n_s16): Remove.
12655         (vqshlq_u32): Remove.
12656         (vqshlq_r_u32): Remove.
12657         (vqshlq_n_u32): Remove.
12658         (vqshlq_s32): Remove.
12659         (vqshlq_r_s32): Remove.
12660         (vqshlq_n_s32): Remove.
12661         (vqshlq_m_r_u8): Remove.
12662         (vqshlq_m_r_s8): Remove.
12663         (vqshlq_m_r_u16): Remove.
12664         (vqshlq_m_r_s16): Remove.
12665         (vqshlq_m_r_u32): Remove.
12666         (vqshlq_m_r_s32): Remove.
12667         (vqshlq_m_n_s8): Remove.
12668         (vqshlq_m_n_s32): Remove.
12669         (vqshlq_m_n_s16): Remove.
12670         (vqshlq_m_n_u8): Remove.
12671         (vqshlq_m_n_u32): Remove.
12672         (vqshlq_m_n_u16): Remove.
12673         (vqshlq_m_s8): Remove.
12674         (vqshlq_m_s32): Remove.
12675         (vqshlq_m_s16): Remove.
12676         (vqshlq_m_u8): Remove.
12677         (vqshlq_m_u32): Remove.
12678         (vqshlq_m_u16): Remove.
12679         (__arm_vqshlq_u8): Remove.
12680         (__arm_vqshlq_r_u8): Remove.
12681         (__arm_vqshlq_n_u8): Remove.
12682         (__arm_vqshlq_s8): Remove.
12683         (__arm_vqshlq_r_s8): Remove.
12684         (__arm_vqshlq_n_s8): Remove.
12685         (__arm_vqshlq_u16): Remove.
12686         (__arm_vqshlq_r_u16): Remove.
12687         (__arm_vqshlq_n_u16): Remove.
12688         (__arm_vqshlq_s16): Remove.
12689         (__arm_vqshlq_r_s16): Remove.
12690         (__arm_vqshlq_n_s16): Remove.
12691         (__arm_vqshlq_u32): Remove.
12692         (__arm_vqshlq_r_u32): Remove.
12693         (__arm_vqshlq_n_u32): Remove.
12694         (__arm_vqshlq_s32): Remove.
12695         (__arm_vqshlq_r_s32): Remove.
12696         (__arm_vqshlq_n_s32): Remove.
12697         (__arm_vqshlq_m_r_u8): Remove.
12698         (__arm_vqshlq_m_r_s8): Remove.
12699         (__arm_vqshlq_m_r_u16): Remove.
12700         (__arm_vqshlq_m_r_s16): Remove.
12701         (__arm_vqshlq_m_r_u32): Remove.
12702         (__arm_vqshlq_m_r_s32): Remove.
12703         (__arm_vqshlq_m_n_s8): Remove.
12704         (__arm_vqshlq_m_n_s32): Remove.
12705         (__arm_vqshlq_m_n_s16): Remove.
12706         (__arm_vqshlq_m_n_u8): Remove.
12707         (__arm_vqshlq_m_n_u32): Remove.
12708         (__arm_vqshlq_m_n_u16): Remove.
12709         (__arm_vqshlq_m_s8): Remove.
12710         (__arm_vqshlq_m_s32): Remove.
12711         (__arm_vqshlq_m_s16): Remove.
12712         (__arm_vqshlq_m_u8): Remove.
12713         (__arm_vqshlq_m_u32): Remove.
12714         (__arm_vqshlq_m_u16): Remove.
12715         (__arm_vqshlq): Remove.
12716         (__arm_vqshlq_r): Remove.
12717         (__arm_vqshlq_n): Remove.
12718         (__arm_vqshlq_m_r): Remove.
12719         (__arm_vqshlq_m_n): Remove.
12720         (__arm_vqshlq_m): Remove.
12722 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12724         * config/arm/arm-mve-builtins-functions.h (class
12725         unspec_mve_function_exact_insn_vshl): New.
12727 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12729         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
12730         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
12732 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12734         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
12735         (finish_opt_n_resolution): Handle MODE_r.
12736         * config/arm/arm-mve-builtins.def (r): New mode.
12738 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12740         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
12741         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
12743 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12745         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
12746         (vabdq): New.
12747         * config/arm/arm-mve-builtins-base.def (vabdq): New.
12748         * config/arm/arm-mve-builtins-base.h (vabdq): New.
12749         * config/arm/arm_mve.h (vabdq): Remove.
12750         (vabdq_m): Remove.
12751         (vabdq_x): Remove.
12752         (vabdq_u8): Remove.
12753         (vabdq_s8): Remove.
12754         (vabdq_u16): Remove.
12755         (vabdq_s16): Remove.
12756         (vabdq_u32): Remove.
12757         (vabdq_s32): Remove.
12758         (vabdq_f16): Remove.
12759         (vabdq_f32): Remove.
12760         (vabdq_m_s8): Remove.
12761         (vabdq_m_s32): Remove.
12762         (vabdq_m_s16): Remove.
12763         (vabdq_m_u8): Remove.
12764         (vabdq_m_u32): Remove.
12765         (vabdq_m_u16): Remove.
12766         (vabdq_m_f32): Remove.
12767         (vabdq_m_f16): Remove.
12768         (vabdq_x_s8): Remove.
12769         (vabdq_x_s16): Remove.
12770         (vabdq_x_s32): Remove.
12771         (vabdq_x_u8): Remove.
12772         (vabdq_x_u16): Remove.
12773         (vabdq_x_u32): Remove.
12774         (vabdq_x_f16): Remove.
12775         (vabdq_x_f32): Remove.
12776         (__arm_vabdq_u8): Remove.
12777         (__arm_vabdq_s8): Remove.
12778         (__arm_vabdq_u16): Remove.
12779         (__arm_vabdq_s16): Remove.
12780         (__arm_vabdq_u32): Remove.
12781         (__arm_vabdq_s32): Remove.
12782         (__arm_vabdq_m_s8): Remove.
12783         (__arm_vabdq_m_s32): Remove.
12784         (__arm_vabdq_m_s16): Remove.
12785         (__arm_vabdq_m_u8): Remove.
12786         (__arm_vabdq_m_u32): Remove.
12787         (__arm_vabdq_m_u16): Remove.
12788         (__arm_vabdq_x_s8): Remove.
12789         (__arm_vabdq_x_s16): Remove.
12790         (__arm_vabdq_x_s32): Remove.
12791         (__arm_vabdq_x_u8): Remove.
12792         (__arm_vabdq_x_u16): Remove.
12793         (__arm_vabdq_x_u32): Remove.
12794         (__arm_vabdq_f16): Remove.
12795         (__arm_vabdq_f32): Remove.
12796         (__arm_vabdq_m_f32): Remove.
12797         (__arm_vabdq_m_f16): Remove.
12798         (__arm_vabdq_x_f16): Remove.
12799         (__arm_vabdq_x_f32): Remove.
12800         (__arm_vabdq): Remove.
12801         (__arm_vabdq_m): Remove.
12802         (__arm_vabdq_x): Remove.
12804 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12806         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
12807         (MVE_FP_VABDQ_ONLY): New.
12808         (mve_insn): Add vabd.
12809         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
12810         (@mve_<mve_insn>q_f<mode>): ... this.
12811         (mve_vabdq_m_f<mode>): Remove.
12813 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12815         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
12816         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
12817         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
12818         * config/arm/arm_mve.h (vqrdmulhq): Remove.
12819         (vqrdmulhq_m): Remove.
12820         (vqrdmulhq_s8): Remove.
12821         (vqrdmulhq_n_s8): Remove.
12822         (vqrdmulhq_s16): Remove.
12823         (vqrdmulhq_n_s16): Remove.
12824         (vqrdmulhq_s32): Remove.
12825         (vqrdmulhq_n_s32): Remove.
12826         (vqrdmulhq_m_n_s8): Remove.
12827         (vqrdmulhq_m_n_s32): Remove.
12828         (vqrdmulhq_m_n_s16): Remove.
12829         (vqrdmulhq_m_s8): Remove.
12830         (vqrdmulhq_m_s32): Remove.
12831         (vqrdmulhq_m_s16): Remove.
12832         (__arm_vqrdmulhq_s8): Remove.
12833         (__arm_vqrdmulhq_n_s8): Remove.
12834         (__arm_vqrdmulhq_s16): Remove.
12835         (__arm_vqrdmulhq_n_s16): Remove.
12836         (__arm_vqrdmulhq_s32): Remove.
12837         (__arm_vqrdmulhq_n_s32): Remove.
12838         (__arm_vqrdmulhq_m_n_s8): Remove.
12839         (__arm_vqrdmulhq_m_n_s32): Remove.
12840         (__arm_vqrdmulhq_m_n_s16): Remove.
12841         (__arm_vqrdmulhq_m_s8): Remove.
12842         (__arm_vqrdmulhq_m_s32): Remove.
12843         (__arm_vqrdmulhq_m_s16): Remove.
12844         (__arm_vqrdmulhq): Remove.
12845         (__arm_vqrdmulhq_m): Remove.
12847 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12849         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
12850         (MVE_SHIFT_N, MVE_SHIFT_R): New.
12851         (mve_insn): Add vqshl, vshl.
12852         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
12853         (mve_vshlq_n_<supf><mode>): Merge into ...
12854         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12855         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
12856         ...
12857         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
12858         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
12859         into ...
12860         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
12861         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
12862         into ...
12863         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12864         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
12865         into ...
12866         (@mve_<mve_insn>q_<supf><mode>): ... this.
12868 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
12870         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
12871         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
12872         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
12873         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
12874         vqrshlq, vrshlq.
12875         * config/arm/arm_mve.h (vrshlq): Remove.
12876         (vrshlq_m_n): Remove.
12877         (vrshlq_m): Remove.
12878         (vrshlq_x): Remove.
12879         (vrshlq_u8): Remove.
12880         (vrshlq_n_u8): Remove.
12881         (vrshlq_s8): Remove.
12882         (vrshlq_n_s8): Remove.
12883         (vrshlq_u16): Remove.
12884         (vrshlq_n_u16): Remove.
12885         (vrshlq_s16): Remove.
12886         (vrshlq_n_s16): Remove.
12887         (vrshlq_u32): Remove.
12888         (vrshlq_n_u32): Remove.
12889         (vrshlq_s32): Remove.
12890         (vrshlq_n_s32): Remove.
12891         (vrshlq_m_n_u8): Remove.
12892         (vrshlq_m_n_s8): Remove.
12893         (vrshlq_m_n_u16): Remove.
12894         (vrshlq_m_n_s16): Remove.
12895         (vrshlq_m_n_u32): Remove.
12896         (vrshlq_m_n_s32): Remove.
12897         (vrshlq_m_s8): Remove.
12898         (vrshlq_m_s32): Remove.
12899         (vrshlq_m_s16): Remove.
12900         (vrshlq_m_u8): Remove.
12901         (vrshlq_m_u32): Remove.
12902         (vrshlq_m_u16): Remove.
12903         (vrshlq_x_s8): Remove.
12904         (vrshlq_x_s16): Remove.
12905         (vrshlq_x_s32): Remove.
12906         (vrshlq_x_u8): Remove.
12907         (vrshlq_x_u16): Remove.
12908         (vrshlq_x_u32): Remove.
12909         (__arm_vrshlq_u8): Remove.
12910         (__arm_vrshlq_n_u8): Remove.
12911         (__arm_vrshlq_s8): Remove.
12912         (__arm_vrshlq_n_s8): Remove.
12913         (__arm_vrshlq_u16): Remove.
12914         (__arm_vrshlq_n_u16): Remove.
12915         (__arm_vrshlq_s16): Remove.
12916         (__arm_vrshlq_n_s16): Remove.
12917         (__arm_vrshlq_u32): Remove.
12918         (__arm_vrshlq_n_u32): Remove.
12919         (__arm_vrshlq_s32): Remove.
12920         (__arm_vrshlq_n_s32): Remove.
12921         (__arm_vrshlq_m_n_u8): Remove.
12922         (__arm_vrshlq_m_n_s8): Remove.
12923         (__arm_vrshlq_m_n_u16): Remove.
12924         (__arm_vrshlq_m_n_s16): Remove.
12925         (__arm_vrshlq_m_n_u32): Remove.
12926         (__arm_vrshlq_m_n_s32): Remove.
12927         (__arm_vrshlq_m_s8): Remove.
12928         (__arm_vrshlq_m_s32): Remove.
12929         (__arm_vrshlq_m_s16): Remove.
12930         (__arm_vrshlq_m_u8): Remove.
12931         (__arm_vrshlq_m_u32): Remove.
12932         (__arm_vrshlq_m_u16): Remove.
12933         (__arm_vrshlq_x_s8): Remove.
12934         (__arm_vrshlq_x_s16): Remove.
12935         (__arm_vrshlq_x_s32): Remove.
12936         (__arm_vrshlq_x_u8): Remove.
12937         (__arm_vrshlq_x_u16): Remove.
12938         (__arm_vrshlq_x_u32): Remove.
12939         (__arm_vrshlq): Remove.
12940         (__arm_vrshlq_m_n): Remove.
12941         (__arm_vrshlq_m): Remove.
12942         (__arm_vrshlq_x): Remove.
12943         (vqrshlq): Remove.
12944         (vqrshlq_m_n): Remove.
12945         (vqrshlq_m): Remove.
12946         (vqrshlq_u8): Remove.
12947         (vqrshlq_n_u8): Remove.
12948         (vqrshlq_s8): Remove.
12949         (vqrshlq_n_s8): Remove.
12950         (vqrshlq_u16): Remove.
12951         (vqrshlq_n_u16): Remove.
12952         (vqrshlq_s16): Remove.
12953         (vqrshlq_n_s16): Remove.
12954         (vqrshlq_u32): Remove.
12955         (vqrshlq_n_u32): Remove.
12956         (vqrshlq_s32): Remove.
12957         (vqrshlq_n_s32): Remove.
12958         (vqrshlq_m_n_u8): Remove.
12959         (vqrshlq_m_n_s8): Remove.
12960         (vqrshlq_m_n_u16): Remove.
12961         (vqrshlq_m_n_s16): Remove.
12962         (vqrshlq_m_n_u32): Remove.
12963         (vqrshlq_m_n_s32): Remove.
12964         (vqrshlq_m_s8): Remove.
12965         (vqrshlq_m_s32): Remove.
12966         (vqrshlq_m_s16): Remove.
12967         (vqrshlq_m_u8): Remove.
12968         (vqrshlq_m_u32): Remove.
12969         (vqrshlq_m_u16): Remove.
12970         (__arm_vqrshlq_u8): Remove.
12971         (__arm_vqrshlq_n_u8): Remove.
12972         (__arm_vqrshlq_s8): Remove.
12973         (__arm_vqrshlq_n_s8): Remove.
12974         (__arm_vqrshlq_u16): Remove.
12975         (__arm_vqrshlq_n_u16): Remove.
12976         (__arm_vqrshlq_s16): Remove.
12977         (__arm_vqrshlq_n_s16): Remove.
12978         (__arm_vqrshlq_u32): Remove.
12979         (__arm_vqrshlq_n_u32): Remove.
12980         (__arm_vqrshlq_s32): Remove.
12981         (__arm_vqrshlq_n_s32): Remove.
12982         (__arm_vqrshlq_m_n_u8): Remove.
12983         (__arm_vqrshlq_m_n_s8): Remove.
12984         (__arm_vqrshlq_m_n_u16): Remove.
12985         (__arm_vqrshlq_m_n_s16): Remove.
12986         (__arm_vqrshlq_m_n_u32): Remove.
12987         (__arm_vqrshlq_m_n_s32): Remove.
12988         (__arm_vqrshlq_m_s8): Remove.
12989         (__arm_vqrshlq_m_s32): Remove.
12990         (__arm_vqrshlq_m_s16): Remove.
12991         (__arm_vqrshlq_m_u8): Remove.
12992         (__arm_vqrshlq_m_u32): Remove.
12993         (__arm_vqrshlq_m_u16): Remove.
12994         (__arm_vqrshlq): Remove.
12995         (__arm_vqrshlq_m_n): Remove.
12996         (__arm_vqrshlq_m): Remove.
12998 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13000         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
13001         (mve_insn): Add vqrshl, vrshl.
13002         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
13003         (mve_vrshlq_n_<supf><mode>): Merge into ...
13004         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13005         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
13006         into ...
13007         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13009 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13011         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
13012         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
13014 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13016         PR target/109615
13017         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
13018         denegrate PHI optmization.
13020 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
13022         * config/i386/predicates.md (register_no_SP_operand):
13023         Rename from index_register_operand.
13024         (call_register_operand): Update for rename.
13025         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
13027 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
13029         PR bootstrap/84402
13030         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
13031         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
13032         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
13033         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
13034         (s-match): Split into s-generic-match and s-gimple-match.
13035         * configure.ac (with-matchpd-partitions,
13036         DEFAULT_MATCHPD_PARTITIONS): New.
13037         * configure: Regenerate.
13039 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
13041         PR bootstrap/84402
13042         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
13043         (decision_tree::gen): Accept list of files instead of single and update
13044         to write function definition to header and main file.
13045         (write_predicate): Likewise.
13046         (write_header): Emit pragmas and new includes.
13047         (main): Create file buffers and cleanup.
13048         (showUsage, write_header_includes): New.
13050 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
13052         PR bootstrap/84402
13053         * Makefile.in (OBJS): Add gimple-match-exports.o.
13054         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
13055         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
13056         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
13057         gimple_resimplify5, constant_for_folding, convert_conditional_op,
13058         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
13059         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
13060         do_valueize, try_conditional_simplification, gimple_extract,
13061         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
13062         commutative_ternary_op_p, first_commutative_argument,
13063         associative_binary_op_p, directly_supported_p,
13064         get_conditional_internal_fn): Moved to gimple-match-exports.cc
13065         * gimple-match-exports.cc: New file.
13067 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
13069         PR bootstrap/84402
13070         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
13071         debug_dump var.
13072         (dt_simplify::gen_1): Use it.
13074 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
13076         PR bootstrap/84402
13077         * genmatch.cc (output_line_directive): Only emit commented directive
13078         when -vv.
13080 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
13082         PR bootstrap/84402
13083         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
13085 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
13087         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
13088         unused in_mode/in_n variables.
13090 2023-05-05  Richard Biener  <rguenther@suse.de>
13092         PR tree-optimization/109735
13093         * tree-vect-stmts.cc (vectorizable_operation): Perform
13094         conversion for POINTER_DIFF_EXPR unconditionally.
13096 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
13098         * config/i386/mmx.md (mulv2si3): New expander.
13099         (*mulv2si3): New insn pattern.
13101 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
13102             Thomas Schwinge  <thomas@codesourcery.com>
13104         PR libgomp/108098
13105         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
13106         alongside reverse-offload function table to prevent NULL values
13107         of the function addresses.
13109 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
13111         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
13112         mpft_t -> mpfr_t.
13113         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
13115 2023-05-05  Andrew Pinski  <apinski@marvell.com>
13117         PR tree-optimization/109732
13118         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
13119         of the argtrue/argfalse.
13121 2023-05-05  Andrew Pinski  <apinski@marvell.com>
13123         PR tree-optimization/109722
13124         * match.pd: Extend the `ABS<a> == 0` pattern
13125         to cover `ABSU<a> == 0` too.
13127 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
13129         PR target/109733
13130         * config/i386/predicates.md (index_reg_operand): New predicate.
13131         * config/i386/i386.md (ashift to lea spliter): Use
13132         general_reg_operand and index_reg_operand predicates.
13134 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13136         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
13137         Rename and reimplement with RTL codes to...
13138         (aarch64_<optab>hn2<mode>_insn_le): .. This.
13139         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
13140         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
13141         codes to...
13142         (aarch64_<optab>hn2<mode>_insn_be): ... This.
13143         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
13144         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
13145         (aarch64_<optab>hn2<mode>): ... This.
13146         (aarch64_r<optab>hn2<mode>): New expander.
13147         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
13148         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
13149         (ADDSUBHN): Delete.
13150         (sur): Remove handling of the above.
13151         (addsub): Likewise.
13153 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13155         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
13156         Delete.
13157         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
13158         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
13159         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
13160         (aarch64_<sur><addsub>hn<mode>): Delete.
13161         (aarch64_<optab>hn<mode>): New define_expand.
13162         (aarch64_r<optab>hn<mode>): Likewise.
13163         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
13164         New predicate.
13166 2023-05-04  Andrew Pinski  <apinski@marvell.com>
13168         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
13169         diamond form bb with forwarder only empty blocks better.
13171 2023-05-04  Andrew Pinski  <apinski@marvell.com>
13173         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
13174         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
13175         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
13176         of an inline version of it.
13177         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
13178         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
13180 2023-05-04  Andrew Pinski  <apinski@marvell.com>
13182         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
13183         the default argument value for dce_ssa_names to nullptr.
13184         Check to make sure dce_ssa_names is a non-nullptr before
13185         calling simple_dce_from_worklist.
13187 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
13189         * config/i386/predicates.md (index_register_operand): Reject
13190         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
13191         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
13192         (call_register_no_elim_operand): Rewrite as ...
13193         (call_register_operand): ... this.
13194         (call_insn_operand): Use call_register_operand predicate.
13196 2023-05-04  Richard Biener  <rguenther@suse.de>
13198         PR tree-optimization/109721
13199         * tree-vect-stmts.cc (vectorizable_operation): Make sure
13200         to test word_mode for all !target_support_p operations.
13202 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13204         PR target/99195
13205         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
13206         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
13207         (aarch64_mla<mode>): Rename to...
13208         (aarch64_mla<mode><vczle><vczbe>): ... This.
13209         (*aarch64_mla_elt<mode>): Rename to...
13210         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
13211         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
13212         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
13213         (aarch64_mla_n<mode>): Rename to...
13214         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
13215         (aarch64_mls<mode>): Rename to...
13216         (aarch64_mls<mode><vczle><vczbe>): ... This.
13217         (*aarch64_mls_elt<mode>): Rename to...
13218         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
13219         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
13220         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
13221         (aarch64_mls_n<mode>): Rename to...
13222         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
13223         (fma<mode>4): Rename to...
13224         (fma<mode>4<vczle><vczbe>): ... This.
13225         (*aarch64_fma4_elt<mode>): Rename to...
13226         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
13227         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
13228         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
13229         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
13230         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
13231         (fnma<mode>4): Rename to...
13232         (fnma<mode>4<vczle><vczbe>): ... This.
13233         (*aarch64_fnma4_elt<mode>): Rename to...
13234         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
13235         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
13236         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
13237         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
13238         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
13239         (aarch64_simd_bsl<mode>_internal): Rename to...
13240         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
13241         (*aarch64_simd_bsl<mode>_alt): Rename to...
13242         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
13244 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13246         PR target/99195
13247         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
13248         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
13249         (fabd<mode>3): Rename to...
13250         (fabd<mode>3<vczle><vczbe>): ... This.
13251         (aarch64_<optab>p<mode>): Rename to...
13252         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
13253         (aarch64_faddp<mode>): Rename to...
13254         (aarch64_faddp<mode><vczle><vczbe>): ... This.
13256 2023-05-04  Martin Liska  <mliska@suse.cz>
13258         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
13259         (print_version): Use it.
13260         (generate_results): Likewise.
13262 2023-05-04  Richard Biener  <rguenther@suse.de>
13264         * tree-cfg.h (last_stmt): Rename to ...
13265         (last_nondebug_stmt): ... this.
13266         * tree-cfg.cc (last_stmt): Rename to ...
13267         (last_nondebug_stmt): ... this.
13268         (assign_discriminators): Adjust.
13269         (group_case_labels_stmt): Likewise.
13270         (gimple_can_duplicate_bb_p): Likewise.
13271         (execute_fixup_cfg): Likewise.
13272         * auto-profile.cc (afdo_propagate_circuit): Likewise.
13273         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
13274         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
13275         (determine_parallel_type): Likewise.
13276         (adjust_context_and_scope): Likewise.
13277         (expand_task_call): Likewise.
13278         (remove_exit_barrier): Likewise.
13279         (expand_omp_taskreg): Likewise.
13280         (expand_omp_for_init_counts): Likewise.
13281         (expand_omp_for_init_vars): Likewise.
13282         (expand_omp_for_static_chunk): Likewise.
13283         (expand_omp_simd): Likewise.
13284         (expand_oacc_for): Likewise.
13285         (expand_omp_for): Likewise.
13286         (expand_omp_sections): Likewise.
13287         (expand_omp_atomic_fetch_op): Likewise.
13288         (expand_omp_atomic_cas): Likewise.
13289         (expand_omp_atomic): Likewise.
13290         (expand_omp_target): Likewise.
13291         (expand_omp): Likewise.
13292         (omp_make_gimple_edges): Likewise.
13293         * trans-mem.cc (tm_region_init): Likewise.
13294         * tree-inline.cc (redirect_all_calls): Likewise.
13295         * tree-parloops.cc (gen_parallel_loop): Likewise.
13296         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
13297         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
13298         Likewise.
13299         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
13300         (may_eliminate_iv): Likewise.
13301         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
13302         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
13303         Likewise.
13304         (estimate_numbers_of_iterations): Likewise.
13305         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
13306         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
13307         (set_predicates_for_bb): Likewise.
13308         (init_loop_unswitch_info): Likewise.
13309         (hoist_guard): Likewise.
13310         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
13311         (minmax_replacement): Likewise.
13312         * tree-ssa-reassoc.cc (update_range_test): Likewise.
13313         (optimize_range_tests_to_bit_test): Likewise.
13314         (optimize_range_tests_var_bound): Likewise.
13315         (optimize_range_tests): Likewise.
13316         (no_side_effect_bb): Likewise.
13317         (suitable_cond_bb): Likewise.
13318         (maybe_optimize_range_tests): Likewise.
13319         (reassociate_bb): Likewise.
13320         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
13322 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
13324         PR debug/109676
13325         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
13326         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
13327         for it only if it still has TImode.  Don't decide whether to call
13328         fix_debug_reg_uses based on whether SRC is ever set or not.
13330 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
13332         * config/cris/cris.cc (cris_split_constant): New function.
13333         * config/cris/cris.md (splitop): New iterator.
13334         (opsplit1): New define_peephole2.
13335         * config/cris/cris-protos.h (cris_split_constant): Declare.
13336         (cris_splittable_constant_p): New macro.
13338 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
13340         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
13341         to ALL_REGS.
13343 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
13345         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
13346         lra_in_progress, not reload_in_progress.
13347         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
13348         * config/cris/constraints.md ("Q"): Ditto.
13350 2023-05-03  Andrew Pinski  <apinski@marvell.com>
13352         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
13353         stats on removed number of statements and phis.
13355 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
13357         PR tree-optimization/109711
13358         * value-range.cc (irange::verify_range): Allow types of
13359         error_mark_node.
13361 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
13363         PR sanitizer/90746
13364         * calls.cc (can_implement_as_sibling_call_p): Reject calls
13365         to __sanitizer_cov_trace_pc.
13367 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
13369         PR target/109661
13370         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
13371         a new ABI break parameter for GCC 14.  Set it to the alignment
13372         of enums that have an underlying type.  Take the true alignment
13373         of such enums from the TYPE_ALIGN of the underlying type's
13374         TYPE_MAIN_VARIANT.
13375         (aarch64_function_arg_boundary): Update accordingly.
13376         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
13377         Warn about ABI differences.
13379 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
13381         PR target/109661
13382         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
13383         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
13384         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
13385         (aarch64_gimplify_va_arg_expr): Likewise.
13387 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13389         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
13390         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
13391         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
13392         (vrmulhq): New.
13393         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
13394         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
13395         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
13396         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
13397         * config/arm/arm_mve.h (vhsubq): Remove.
13398         (vhaddq): Remove.
13399         (vhaddq_m): Remove.
13400         (vhsubq_m): Remove.
13401         (vhaddq_x): Remove.
13402         (vhsubq_x): Remove.
13403         (vhsubq_u8): Remove.
13404         (vhsubq_n_u8): Remove.
13405         (vhaddq_u8): Remove.
13406         (vhaddq_n_u8): Remove.
13407         (vhsubq_s8): Remove.
13408         (vhsubq_n_s8): Remove.
13409         (vhaddq_s8): Remove.
13410         (vhaddq_n_s8): Remove.
13411         (vhsubq_u16): Remove.
13412         (vhsubq_n_u16): Remove.
13413         (vhaddq_u16): Remove.
13414         (vhaddq_n_u16): Remove.
13415         (vhsubq_s16): Remove.
13416         (vhsubq_n_s16): Remove.
13417         (vhaddq_s16): Remove.
13418         (vhaddq_n_s16): Remove.
13419         (vhsubq_u32): Remove.
13420         (vhsubq_n_u32): Remove.
13421         (vhaddq_u32): Remove.
13422         (vhaddq_n_u32): Remove.
13423         (vhsubq_s32): Remove.
13424         (vhsubq_n_s32): Remove.
13425         (vhaddq_s32): Remove.
13426         (vhaddq_n_s32): Remove.
13427         (vhaddq_m_n_s8): Remove.
13428         (vhaddq_m_n_s32): Remove.
13429         (vhaddq_m_n_s16): Remove.
13430         (vhaddq_m_n_u8): Remove.
13431         (vhaddq_m_n_u32): Remove.
13432         (vhaddq_m_n_u16): Remove.
13433         (vhaddq_m_s8): Remove.
13434         (vhaddq_m_s32): Remove.
13435         (vhaddq_m_s16): Remove.
13436         (vhaddq_m_u8): Remove.
13437         (vhaddq_m_u32): Remove.
13438         (vhaddq_m_u16): Remove.
13439         (vhsubq_m_n_s8): Remove.
13440         (vhsubq_m_n_s32): Remove.
13441         (vhsubq_m_n_s16): Remove.
13442         (vhsubq_m_n_u8): Remove.
13443         (vhsubq_m_n_u32): Remove.
13444         (vhsubq_m_n_u16): Remove.
13445         (vhsubq_m_s8): Remove.
13446         (vhsubq_m_s32): Remove.
13447         (vhsubq_m_s16): Remove.
13448         (vhsubq_m_u8): Remove.
13449         (vhsubq_m_u32): Remove.
13450         (vhsubq_m_u16): Remove.
13451         (vhaddq_x_n_s8): Remove.
13452         (vhaddq_x_n_s16): Remove.
13453         (vhaddq_x_n_s32): Remove.
13454         (vhaddq_x_n_u8): Remove.
13455         (vhaddq_x_n_u16): Remove.
13456         (vhaddq_x_n_u32): Remove.
13457         (vhaddq_x_s8): Remove.
13458         (vhaddq_x_s16): Remove.
13459         (vhaddq_x_s32): Remove.
13460         (vhaddq_x_u8): Remove.
13461         (vhaddq_x_u16): Remove.
13462         (vhaddq_x_u32): Remove.
13463         (vhsubq_x_n_s8): Remove.
13464         (vhsubq_x_n_s16): Remove.
13465         (vhsubq_x_n_s32): Remove.
13466         (vhsubq_x_n_u8): Remove.
13467         (vhsubq_x_n_u16): Remove.
13468         (vhsubq_x_n_u32): Remove.
13469         (vhsubq_x_s8): Remove.
13470         (vhsubq_x_s16): Remove.
13471         (vhsubq_x_s32): Remove.
13472         (vhsubq_x_u8): Remove.
13473         (vhsubq_x_u16): Remove.
13474         (vhsubq_x_u32): Remove.
13475         (__arm_vhsubq_u8): Remove.
13476         (__arm_vhsubq_n_u8): Remove.
13477         (__arm_vhaddq_u8): Remove.
13478         (__arm_vhaddq_n_u8): Remove.
13479         (__arm_vhsubq_s8): Remove.
13480         (__arm_vhsubq_n_s8): Remove.
13481         (__arm_vhaddq_s8): Remove.
13482         (__arm_vhaddq_n_s8): Remove.
13483         (__arm_vhsubq_u16): Remove.
13484         (__arm_vhsubq_n_u16): Remove.
13485         (__arm_vhaddq_u16): Remove.
13486         (__arm_vhaddq_n_u16): Remove.
13487         (__arm_vhsubq_s16): Remove.
13488         (__arm_vhsubq_n_s16): Remove.
13489         (__arm_vhaddq_s16): Remove.
13490         (__arm_vhaddq_n_s16): Remove.
13491         (__arm_vhsubq_u32): Remove.
13492         (__arm_vhsubq_n_u32): Remove.
13493         (__arm_vhaddq_u32): Remove.
13494         (__arm_vhaddq_n_u32): Remove.
13495         (__arm_vhsubq_s32): Remove.
13496         (__arm_vhsubq_n_s32): Remove.
13497         (__arm_vhaddq_s32): Remove.
13498         (__arm_vhaddq_n_s32): Remove.
13499         (__arm_vhaddq_m_n_s8): Remove.
13500         (__arm_vhaddq_m_n_s32): Remove.
13501         (__arm_vhaddq_m_n_s16): Remove.
13502         (__arm_vhaddq_m_n_u8): Remove.
13503         (__arm_vhaddq_m_n_u32): Remove.
13504         (__arm_vhaddq_m_n_u16): Remove.
13505         (__arm_vhaddq_m_s8): Remove.
13506         (__arm_vhaddq_m_s32): Remove.
13507         (__arm_vhaddq_m_s16): Remove.
13508         (__arm_vhaddq_m_u8): Remove.
13509         (__arm_vhaddq_m_u32): Remove.
13510         (__arm_vhaddq_m_u16): Remove.
13511         (__arm_vhsubq_m_n_s8): Remove.
13512         (__arm_vhsubq_m_n_s32): Remove.
13513         (__arm_vhsubq_m_n_s16): Remove.
13514         (__arm_vhsubq_m_n_u8): Remove.
13515         (__arm_vhsubq_m_n_u32): Remove.
13516         (__arm_vhsubq_m_n_u16): Remove.
13517         (__arm_vhsubq_m_s8): Remove.
13518         (__arm_vhsubq_m_s32): Remove.
13519         (__arm_vhsubq_m_s16): Remove.
13520         (__arm_vhsubq_m_u8): Remove.
13521         (__arm_vhsubq_m_u32): Remove.
13522         (__arm_vhsubq_m_u16): Remove.
13523         (__arm_vhaddq_x_n_s8): Remove.
13524         (__arm_vhaddq_x_n_s16): Remove.
13525         (__arm_vhaddq_x_n_s32): Remove.
13526         (__arm_vhaddq_x_n_u8): Remove.
13527         (__arm_vhaddq_x_n_u16): Remove.
13528         (__arm_vhaddq_x_n_u32): Remove.
13529         (__arm_vhaddq_x_s8): Remove.
13530         (__arm_vhaddq_x_s16): Remove.
13531         (__arm_vhaddq_x_s32): Remove.
13532         (__arm_vhaddq_x_u8): Remove.
13533         (__arm_vhaddq_x_u16): Remove.
13534         (__arm_vhaddq_x_u32): Remove.
13535         (__arm_vhsubq_x_n_s8): Remove.
13536         (__arm_vhsubq_x_n_s16): Remove.
13537         (__arm_vhsubq_x_n_s32): Remove.
13538         (__arm_vhsubq_x_n_u8): Remove.
13539         (__arm_vhsubq_x_n_u16): Remove.
13540         (__arm_vhsubq_x_n_u32): Remove.
13541         (__arm_vhsubq_x_s8): Remove.
13542         (__arm_vhsubq_x_s16): Remove.
13543         (__arm_vhsubq_x_s32): Remove.
13544         (__arm_vhsubq_x_u8): Remove.
13545         (__arm_vhsubq_x_u16): Remove.
13546         (__arm_vhsubq_x_u32): Remove.
13547         (__arm_vhsubq): Remove.
13548         (__arm_vhaddq): Remove.
13549         (__arm_vhaddq_m): Remove.
13550         (__arm_vhsubq_m): Remove.
13551         (__arm_vhaddq_x): Remove.
13552         (__arm_vhsubq_x): Remove.
13553         (vmulhq): Remove.
13554         (vmulhq_m): Remove.
13555         (vmulhq_x): Remove.
13556         (vmulhq_u8): Remove.
13557         (vmulhq_s8): Remove.
13558         (vmulhq_u16): Remove.
13559         (vmulhq_s16): Remove.
13560         (vmulhq_u32): Remove.
13561         (vmulhq_s32): Remove.
13562         (vmulhq_m_s8): Remove.
13563         (vmulhq_m_s32): Remove.
13564         (vmulhq_m_s16): Remove.
13565         (vmulhq_m_u8): Remove.
13566         (vmulhq_m_u32): Remove.
13567         (vmulhq_m_u16): Remove.
13568         (vmulhq_x_s8): Remove.
13569         (vmulhq_x_s16): Remove.
13570         (vmulhq_x_s32): Remove.
13571         (vmulhq_x_u8): Remove.
13572         (vmulhq_x_u16): Remove.
13573         (vmulhq_x_u32): Remove.
13574         (__arm_vmulhq_u8): Remove.
13575         (__arm_vmulhq_s8): Remove.
13576         (__arm_vmulhq_u16): Remove.
13577         (__arm_vmulhq_s16): Remove.
13578         (__arm_vmulhq_u32): Remove.
13579         (__arm_vmulhq_s32): Remove.
13580         (__arm_vmulhq_m_s8): Remove.
13581         (__arm_vmulhq_m_s32): Remove.
13582         (__arm_vmulhq_m_s16): Remove.
13583         (__arm_vmulhq_m_u8): Remove.
13584         (__arm_vmulhq_m_u32): Remove.
13585         (__arm_vmulhq_m_u16): Remove.
13586         (__arm_vmulhq_x_s8): Remove.
13587         (__arm_vmulhq_x_s16): Remove.
13588         (__arm_vmulhq_x_s32): Remove.
13589         (__arm_vmulhq_x_u8): Remove.
13590         (__arm_vmulhq_x_u16): Remove.
13591         (__arm_vmulhq_x_u32): Remove.
13592         (__arm_vmulhq): Remove.
13593         (__arm_vmulhq_m): Remove.
13594         (__arm_vmulhq_x): Remove.
13595         (vqsubq): Remove.
13596         (vqaddq): Remove.
13597         (vqaddq_m): Remove.
13598         (vqsubq_m): Remove.
13599         (vqsubq_u8): Remove.
13600         (vqsubq_n_u8): Remove.
13601         (vqaddq_u8): Remove.
13602         (vqaddq_n_u8): Remove.
13603         (vqsubq_s8): Remove.
13604         (vqsubq_n_s8): Remove.
13605         (vqaddq_s8): Remove.
13606         (vqaddq_n_s8): Remove.
13607         (vqsubq_u16): Remove.
13608         (vqsubq_n_u16): Remove.
13609         (vqaddq_u16): Remove.
13610         (vqaddq_n_u16): Remove.
13611         (vqsubq_s16): Remove.
13612         (vqsubq_n_s16): Remove.
13613         (vqaddq_s16): Remove.
13614         (vqaddq_n_s16): Remove.
13615         (vqsubq_u32): Remove.
13616         (vqsubq_n_u32): Remove.
13617         (vqaddq_u32): Remove.
13618         (vqaddq_n_u32): Remove.
13619         (vqsubq_s32): Remove.
13620         (vqsubq_n_s32): Remove.
13621         (vqaddq_s32): Remove.
13622         (vqaddq_n_s32): Remove.
13623         (vqaddq_m_n_s8): Remove.
13624         (vqaddq_m_n_s32): Remove.
13625         (vqaddq_m_n_s16): Remove.
13626         (vqaddq_m_n_u8): Remove.
13627         (vqaddq_m_n_u32): Remove.
13628         (vqaddq_m_n_u16): Remove.
13629         (vqaddq_m_s8): Remove.
13630         (vqaddq_m_s32): Remove.
13631         (vqaddq_m_s16): Remove.
13632         (vqaddq_m_u8): Remove.
13633         (vqaddq_m_u32): Remove.
13634         (vqaddq_m_u16): Remove.
13635         (vqsubq_m_n_s8): Remove.
13636         (vqsubq_m_n_s32): Remove.
13637         (vqsubq_m_n_s16): Remove.
13638         (vqsubq_m_n_u8): Remove.
13639         (vqsubq_m_n_u32): Remove.
13640         (vqsubq_m_n_u16): Remove.
13641         (vqsubq_m_s8): Remove.
13642         (vqsubq_m_s32): Remove.
13643         (vqsubq_m_s16): Remove.
13644         (vqsubq_m_u8): Remove.
13645         (vqsubq_m_u32): Remove.
13646         (vqsubq_m_u16): Remove.
13647         (__arm_vqsubq_u8): Remove.
13648         (__arm_vqsubq_n_u8): Remove.
13649         (__arm_vqaddq_u8): Remove.
13650         (__arm_vqaddq_n_u8): Remove.
13651         (__arm_vqsubq_s8): Remove.
13652         (__arm_vqsubq_n_s8): Remove.
13653         (__arm_vqaddq_s8): Remove.
13654         (__arm_vqaddq_n_s8): Remove.
13655         (__arm_vqsubq_u16): Remove.
13656         (__arm_vqsubq_n_u16): Remove.
13657         (__arm_vqaddq_u16): Remove.
13658         (__arm_vqaddq_n_u16): Remove.
13659         (__arm_vqsubq_s16): Remove.
13660         (__arm_vqsubq_n_s16): Remove.
13661         (__arm_vqaddq_s16): Remove.
13662         (__arm_vqaddq_n_s16): Remove.
13663         (__arm_vqsubq_u32): Remove.
13664         (__arm_vqsubq_n_u32): Remove.
13665         (__arm_vqaddq_u32): Remove.
13666         (__arm_vqaddq_n_u32): Remove.
13667         (__arm_vqsubq_s32): Remove.
13668         (__arm_vqsubq_n_s32): Remove.
13669         (__arm_vqaddq_s32): Remove.
13670         (__arm_vqaddq_n_s32): Remove.
13671         (__arm_vqaddq_m_n_s8): Remove.
13672         (__arm_vqaddq_m_n_s32): Remove.
13673         (__arm_vqaddq_m_n_s16): Remove.
13674         (__arm_vqaddq_m_n_u8): Remove.
13675         (__arm_vqaddq_m_n_u32): Remove.
13676         (__arm_vqaddq_m_n_u16): Remove.
13677         (__arm_vqaddq_m_s8): Remove.
13678         (__arm_vqaddq_m_s32): Remove.
13679         (__arm_vqaddq_m_s16): Remove.
13680         (__arm_vqaddq_m_u8): Remove.
13681         (__arm_vqaddq_m_u32): Remove.
13682         (__arm_vqaddq_m_u16): Remove.
13683         (__arm_vqsubq_m_n_s8): Remove.
13684         (__arm_vqsubq_m_n_s32): Remove.
13685         (__arm_vqsubq_m_n_s16): Remove.
13686         (__arm_vqsubq_m_n_u8): Remove.
13687         (__arm_vqsubq_m_n_u32): Remove.
13688         (__arm_vqsubq_m_n_u16): Remove.
13689         (__arm_vqsubq_m_s8): Remove.
13690         (__arm_vqsubq_m_s32): Remove.
13691         (__arm_vqsubq_m_s16): Remove.
13692         (__arm_vqsubq_m_u8): Remove.
13693         (__arm_vqsubq_m_u32): Remove.
13694         (__arm_vqsubq_m_u16): Remove.
13695         (__arm_vqsubq): Remove.
13696         (__arm_vqaddq): Remove.
13697         (__arm_vqaddq_m): Remove.
13698         (__arm_vqsubq_m): Remove.
13699         (vqdmulhq): Remove.
13700         (vqdmulhq_m): Remove.
13701         (vqdmulhq_s8): Remove.
13702         (vqdmulhq_n_s8): Remove.
13703         (vqdmulhq_s16): Remove.
13704         (vqdmulhq_n_s16): Remove.
13705         (vqdmulhq_s32): Remove.
13706         (vqdmulhq_n_s32): Remove.
13707         (vqdmulhq_m_n_s8): Remove.
13708         (vqdmulhq_m_n_s32): Remove.
13709         (vqdmulhq_m_n_s16): Remove.
13710         (vqdmulhq_m_s8): Remove.
13711         (vqdmulhq_m_s32): Remove.
13712         (vqdmulhq_m_s16): Remove.
13713         (__arm_vqdmulhq_s8): Remove.
13714         (__arm_vqdmulhq_n_s8): Remove.
13715         (__arm_vqdmulhq_s16): Remove.
13716         (__arm_vqdmulhq_n_s16): Remove.
13717         (__arm_vqdmulhq_s32): Remove.
13718         (__arm_vqdmulhq_n_s32): Remove.
13719         (__arm_vqdmulhq_m_n_s8): Remove.
13720         (__arm_vqdmulhq_m_n_s32): Remove.
13721         (__arm_vqdmulhq_m_n_s16): Remove.
13722         (__arm_vqdmulhq_m_s8): Remove.
13723         (__arm_vqdmulhq_m_s32): Remove.
13724         (__arm_vqdmulhq_m_s16): Remove.
13725         (__arm_vqdmulhq): Remove.
13726         (__arm_vqdmulhq_m): Remove.
13727         (vrhaddq): Remove.
13728         (vrhaddq_m): Remove.
13729         (vrhaddq_x): Remove.
13730         (vrhaddq_u8): Remove.
13731         (vrhaddq_s8): Remove.
13732         (vrhaddq_u16): Remove.
13733         (vrhaddq_s16): Remove.
13734         (vrhaddq_u32): Remove.
13735         (vrhaddq_s32): Remove.
13736         (vrhaddq_m_s8): Remove.
13737         (vrhaddq_m_s32): Remove.
13738         (vrhaddq_m_s16): Remove.
13739         (vrhaddq_m_u8): Remove.
13740         (vrhaddq_m_u32): Remove.
13741         (vrhaddq_m_u16): Remove.
13742         (vrhaddq_x_s8): Remove.
13743         (vrhaddq_x_s16): Remove.
13744         (vrhaddq_x_s32): Remove.
13745         (vrhaddq_x_u8): Remove.
13746         (vrhaddq_x_u16): Remove.
13747         (vrhaddq_x_u32): Remove.
13748         (__arm_vrhaddq_u8): Remove.
13749         (__arm_vrhaddq_s8): Remove.
13750         (__arm_vrhaddq_u16): Remove.
13751         (__arm_vrhaddq_s16): Remove.
13752         (__arm_vrhaddq_u32): Remove.
13753         (__arm_vrhaddq_s32): Remove.
13754         (__arm_vrhaddq_m_s8): Remove.
13755         (__arm_vrhaddq_m_s32): Remove.
13756         (__arm_vrhaddq_m_s16): Remove.
13757         (__arm_vrhaddq_m_u8): Remove.
13758         (__arm_vrhaddq_m_u32): Remove.
13759         (__arm_vrhaddq_m_u16): Remove.
13760         (__arm_vrhaddq_x_s8): Remove.
13761         (__arm_vrhaddq_x_s16): Remove.
13762         (__arm_vrhaddq_x_s32): Remove.
13763         (__arm_vrhaddq_x_u8): Remove.
13764         (__arm_vrhaddq_x_u16): Remove.
13765         (__arm_vrhaddq_x_u32): Remove.
13766         (__arm_vrhaddq): Remove.
13767         (__arm_vrhaddq_m): Remove.
13768         (__arm_vrhaddq_x): Remove.
13769         (vrmulhq): Remove.
13770         (vrmulhq_m): Remove.
13771         (vrmulhq_x): Remove.
13772         (vrmulhq_u8): Remove.
13773         (vrmulhq_s8): Remove.
13774         (vrmulhq_u16): Remove.
13775         (vrmulhq_s16): Remove.
13776         (vrmulhq_u32): Remove.
13777         (vrmulhq_s32): Remove.
13778         (vrmulhq_m_s8): Remove.
13779         (vrmulhq_m_s32): Remove.
13780         (vrmulhq_m_s16): Remove.
13781         (vrmulhq_m_u8): Remove.
13782         (vrmulhq_m_u32): Remove.
13783         (vrmulhq_m_u16): Remove.
13784         (vrmulhq_x_s8): Remove.
13785         (vrmulhq_x_s16): Remove.
13786         (vrmulhq_x_s32): Remove.
13787         (vrmulhq_x_u8): Remove.
13788         (vrmulhq_x_u16): Remove.
13789         (vrmulhq_x_u32): Remove.
13790         (__arm_vrmulhq_u8): Remove.
13791         (__arm_vrmulhq_s8): Remove.
13792         (__arm_vrmulhq_u16): Remove.
13793         (__arm_vrmulhq_s16): Remove.
13794         (__arm_vrmulhq_u32): Remove.
13795         (__arm_vrmulhq_s32): Remove.
13796         (__arm_vrmulhq_m_s8): Remove.
13797         (__arm_vrmulhq_m_s32): Remove.
13798         (__arm_vrmulhq_m_s16): Remove.
13799         (__arm_vrmulhq_m_u8): Remove.
13800         (__arm_vrmulhq_m_u32): Remove.
13801         (__arm_vrmulhq_m_u16): Remove.
13802         (__arm_vrmulhq_x_s8): Remove.
13803         (__arm_vrmulhq_x_s16): Remove.
13804         (__arm_vrmulhq_x_s32): Remove.
13805         (__arm_vrmulhq_x_u8): Remove.
13806         (__arm_vrmulhq_x_u16): Remove.
13807         (__arm_vrmulhq_x_u32): Remove.
13808         (__arm_vrmulhq): Remove.
13809         (__arm_vrmulhq_m): Remove.
13810         (__arm_vrmulhq_x): Remove.
13812 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13814         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
13815         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
13816         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
13817         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
13818         * config/arm/mve.md (mve_vabdq_<supf><mode>)
13819         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
13820         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
13821         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
13822         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
13823         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
13824         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
13825         ...
13826         (@mve_<mve_insn>q_<supf><mode>): ... this.
13827         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
13828         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
13829         gen_mve_vhaddq / gen_mve_vrhaddq.
13831 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13833         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
13834         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
13835         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
13836         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
13837         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
13838         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
13839         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
13840         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
13841         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
13842         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
13843         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
13844         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
13845         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13847 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13849         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
13850         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
13851         vqsubq.
13852         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
13853         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
13854         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
13855         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
13856         (mve_vqsubq_n_<supf><mode>): Merge into ...
13857         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13859 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13861         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
13862         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
13863         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
13864         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
13865         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
13866         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
13867         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
13868         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
13869         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
13870         (mve_vshlq_m_<supf><mode>): Merged into
13871         @mve_<mve_insn>q_m_<supf><mode>.
13872         (mve_vabdq_m_<supf><mode>): Likewise.
13873         (mve_vhaddq_m_<supf><mode>): Likewise.
13874         (mve_vhsubq_m_<supf><mode>): Likewise.
13875         (mve_vmaxq_m_<supf><mode>): Likewise.
13876         (mve_vminq_m_<supf><mode>): Likewise.
13877         (mve_vmulhq_m_<supf><mode>): Likewise.
13878         (mve_vqaddq_m_<supf><mode>): Likewise.
13879         (mve_vqrshlq_m_<supf><mode>): Likewise.
13880         (mve_vqshlq_m_<supf><mode>): Likewise.
13881         (mve_vqsubq_m_<supf><mode>): Likewise.
13882         (mve_vrhaddq_m_<supf><mode>): Likewise.
13883         (mve_vrmulhq_m_<supf><mode>): Likewise.
13884         (mve_vrshlq_m_<supf><mode>): Likewise.
13885         (mve_vqdmladhq_m_s<mode>): Likewise.
13886         (mve_vqdmladhxq_m_s<mode>): Likewise.
13887         (mve_vqdmlsdhq_m_s<mode>): Likewise.
13888         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
13889         (mve_vqdmulhq_m_s<mode>): Likewise.
13890         (mve_vqrdmladhq_m_s<mode>): Likewise.
13891         (mve_vqrdmladhxq_m_s<mode>): Likewise.
13892         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
13893         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
13894         (mve_vqrdmulhq_m_s<mode>): Likewise.
13896 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13898         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
13899         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
13900         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
13901         * config/arm/arm_mve.h (vcreateq_f16): Remove.
13902         (vcreateq_f32): Remove.
13903         (vcreateq_u8): Remove.
13904         (vcreateq_u16): Remove.
13905         (vcreateq_u32): Remove.
13906         (vcreateq_u64): Remove.
13907         (vcreateq_s8): Remove.
13908         (vcreateq_s16): Remove.
13909         (vcreateq_s32): Remove.
13910         (vcreateq_s64): Remove.
13911         (__arm_vcreateq_u8): Remove.
13912         (__arm_vcreateq_u16): Remove.
13913         (__arm_vcreateq_u32): Remove.
13914         (__arm_vcreateq_u64): Remove.
13915         (__arm_vcreateq_s8): Remove.
13916         (__arm_vcreateq_s16): Remove.
13917         (__arm_vcreateq_s32): Remove.
13918         (__arm_vcreateq_s64): Remove.
13919         (__arm_vcreateq_f16): Remove.
13920         (__arm_vcreateq_f32): Remove.
13922 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13924         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
13925         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
13926         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
13927         (@mve_<mve_insn>q_f<mode>): ... this.
13928         (mve_vcreateq_<supf><mode>): Rename into ...
13929         (@mve_<mve_insn>q_<supf><mode>): ... this.
13931 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13933         * config/arm/arm-mve-builtins-shapes.cc (create): New.
13934         * config/arm/arm-mve-builtins-shapes.h: (create): New.
13936 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13938         * config/arm/arm-mve-builtins-functions.h (class
13939         unspec_mve_function_exact_insn): New.
13941 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
13943         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
13944         (vorrq): New.
13945         * config/arm/arm-mve-builtins-base.def (vorrq): New.
13946         * config/arm/arm-mve-builtins-base.h (vorrq): New.
13947         * config/arm/arm-mve-builtins.cc
13948         (function_instance::has_inactive_argument): Handle vorrq.
13949         * config/arm/arm_mve.h (vorrq): Remove.
13950         (vorrq_m_n): Remove.
13951         (vorrq_m): Remove.
13952         (vorrq_x): Remove.
13953         (vorrq_u8): Remove.
13954         (vorrq_s8): Remove.
13955         (vorrq_u16): Remove.
13956         (vorrq_s16): Remove.
13957         (vorrq_u32): Remove.
13958         (vorrq_s32): Remove.
13959         (vorrq_n_u16): Remove.
13960         (vorrq_f16): Remove.
13961         (vorrq_n_s16): Remove.
13962         (vorrq_n_u32): Remove.
13963         (vorrq_f32): Remove.
13964         (vorrq_n_s32): Remove.
13965         (vorrq_m_n_s16): Remove.
13966         (vorrq_m_n_u16): Remove.
13967         (vorrq_m_n_s32): Remove.
13968         (vorrq_m_n_u32): Remove.
13969         (vorrq_m_s8): Remove.
13970         (vorrq_m_s32): Remove.
13971         (vorrq_m_s16): Remove.
13972         (vorrq_m_u8): Remove.
13973         (vorrq_m_u32): Remove.
13974         (vorrq_m_u16): Remove.
13975         (vorrq_m_f32): Remove.
13976         (vorrq_m_f16): Remove.
13977         (vorrq_x_s8): Remove.
13978         (vorrq_x_s16): Remove.
13979         (vorrq_x_s32): Remove.
13980         (vorrq_x_u8): Remove.
13981         (vorrq_x_u16): Remove.
13982         (vorrq_x_u32): Remove.
13983         (vorrq_x_f16): Remove.
13984         (vorrq_x_f32): Remove.
13985         (__arm_vorrq_u8): Remove.
13986         (__arm_vorrq_s8): Remove.
13987         (__arm_vorrq_u16): Remove.
13988         (__arm_vorrq_s16): Remove.
13989         (__arm_vorrq_u32): Remove.
13990         (__arm_vorrq_s32): Remove.
13991         (__arm_vorrq_n_u16): Remove.
13992         (__arm_vorrq_n_s16): Remove.
13993         (__arm_vorrq_n_u32): Remove.
13994         (__arm_vorrq_n_s32): Remove.
13995         (__arm_vorrq_m_n_s16): Remove.
13996         (__arm_vorrq_m_n_u16): Remove.
13997         (__arm_vorrq_m_n_s32): Remove.
13998         (__arm_vorrq_m_n_u32): Remove.
13999         (__arm_vorrq_m_s8): Remove.
14000         (__arm_vorrq_m_s32): Remove.
14001         (__arm_vorrq_m_s16): Remove.
14002         (__arm_vorrq_m_u8): Remove.
14003         (__arm_vorrq_m_u32): Remove.
14004         (__arm_vorrq_m_u16): Remove.
14005         (__arm_vorrq_x_s8): Remove.
14006         (__arm_vorrq_x_s16): Remove.
14007         (__arm_vorrq_x_s32): Remove.
14008         (__arm_vorrq_x_u8): Remove.
14009         (__arm_vorrq_x_u16): Remove.
14010         (__arm_vorrq_x_u32): Remove.
14011         (__arm_vorrq_f16): Remove.
14012         (__arm_vorrq_f32): Remove.
14013         (__arm_vorrq_m_f32): Remove.
14014         (__arm_vorrq_m_f16): Remove.
14015         (__arm_vorrq_x_f16): Remove.
14016         (__arm_vorrq_x_f32): Remove.
14017         (__arm_vorrq): Remove.
14018         (__arm_vorrq_m_n): Remove.
14019         (__arm_vorrq_m): Remove.
14020         (__arm_vorrq_x): Remove.
14022 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14024         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
14025         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
14026         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
14027         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
14029 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14031         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
14032         (vandq,veorq): New.
14033         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
14034         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
14035         * config/arm/arm_mve.h (vandq): Remove.
14036         (vandq_m): Remove.
14037         (vandq_x): Remove.
14038         (vandq_u8): Remove.
14039         (vandq_s8): Remove.
14040         (vandq_u16): Remove.
14041         (vandq_s16): Remove.
14042         (vandq_u32): Remove.
14043         (vandq_s32): Remove.
14044         (vandq_f16): Remove.
14045         (vandq_f32): Remove.
14046         (vandq_m_s8): Remove.
14047         (vandq_m_s32): Remove.
14048         (vandq_m_s16): Remove.
14049         (vandq_m_u8): Remove.
14050         (vandq_m_u32): Remove.
14051         (vandq_m_u16): Remove.
14052         (vandq_m_f32): Remove.
14053         (vandq_m_f16): Remove.
14054         (vandq_x_s8): Remove.
14055         (vandq_x_s16): Remove.
14056         (vandq_x_s32): Remove.
14057         (vandq_x_u8): Remove.
14058         (vandq_x_u16): Remove.
14059         (vandq_x_u32): Remove.
14060         (vandq_x_f16): Remove.
14061         (vandq_x_f32): Remove.
14062         (__arm_vandq_u8): Remove.
14063         (__arm_vandq_s8): Remove.
14064         (__arm_vandq_u16): Remove.
14065         (__arm_vandq_s16): Remove.
14066         (__arm_vandq_u32): Remove.
14067         (__arm_vandq_s32): Remove.
14068         (__arm_vandq_m_s8): Remove.
14069         (__arm_vandq_m_s32): Remove.
14070         (__arm_vandq_m_s16): Remove.
14071         (__arm_vandq_m_u8): Remove.
14072         (__arm_vandq_m_u32): Remove.
14073         (__arm_vandq_m_u16): Remove.
14074         (__arm_vandq_x_s8): Remove.
14075         (__arm_vandq_x_s16): Remove.
14076         (__arm_vandq_x_s32): Remove.
14077         (__arm_vandq_x_u8): Remove.
14078         (__arm_vandq_x_u16): Remove.
14079         (__arm_vandq_x_u32): Remove.
14080         (__arm_vandq_f16): Remove.
14081         (__arm_vandq_f32): Remove.
14082         (__arm_vandq_m_f32): Remove.
14083         (__arm_vandq_m_f16): Remove.
14084         (__arm_vandq_x_f16): Remove.
14085         (__arm_vandq_x_f32): Remove.
14086         (__arm_vandq): Remove.
14087         (__arm_vandq_m): Remove.
14088         (__arm_vandq_x): Remove.
14089         (veorq_m): Remove.
14090         (veorq_x): Remove.
14091         (veorq_u8): Remove.
14092         (veorq_s8): Remove.
14093         (veorq_u16): Remove.
14094         (veorq_s16): Remove.
14095         (veorq_u32): Remove.
14096         (veorq_s32): Remove.
14097         (veorq_f16): Remove.
14098         (veorq_f32): Remove.
14099         (veorq_m_s8): Remove.
14100         (veorq_m_s32): Remove.
14101         (veorq_m_s16): Remove.
14102         (veorq_m_u8): Remove.
14103         (veorq_m_u32): Remove.
14104         (veorq_m_u16): Remove.
14105         (veorq_m_f32): Remove.
14106         (veorq_m_f16): Remove.
14107         (veorq_x_s8): Remove.
14108         (veorq_x_s16): Remove.
14109         (veorq_x_s32): Remove.
14110         (veorq_x_u8): Remove.
14111         (veorq_x_u16): Remove.
14112         (veorq_x_u32): Remove.
14113         (veorq_x_f16): Remove.
14114         (veorq_x_f32): Remove.
14115         (__arm_veorq_u8): Remove.
14116         (__arm_veorq_s8): Remove.
14117         (__arm_veorq_u16): Remove.
14118         (__arm_veorq_s16): Remove.
14119         (__arm_veorq_u32): Remove.
14120         (__arm_veorq_s32): Remove.
14121         (__arm_veorq_m_s8): Remove.
14122         (__arm_veorq_m_s32): Remove.
14123         (__arm_veorq_m_s16): Remove.
14124         (__arm_veorq_m_u8): Remove.
14125         (__arm_veorq_m_u32): Remove.
14126         (__arm_veorq_m_u16): Remove.
14127         (__arm_veorq_x_s8): Remove.
14128         (__arm_veorq_x_s16): Remove.
14129         (__arm_veorq_x_s32): Remove.
14130         (__arm_veorq_x_u8): Remove.
14131         (__arm_veorq_x_u16): Remove.
14132         (__arm_veorq_x_u32): Remove.
14133         (__arm_veorq_f16): Remove.
14134         (__arm_veorq_f32): Remove.
14135         (__arm_veorq_m_f32): Remove.
14136         (__arm_veorq_m_f16): Remove.
14137         (__arm_veorq_x_f16): Remove.
14138         (__arm_veorq_x_f32): Remove.
14139         (__arm_veorq): Remove.
14140         (__arm_veorq_m): Remove.
14141         (__arm_veorq_x): Remove.
14143 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14145         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
14146         (MVE_FP_M_BINARY_LOGIC): New.
14147         (MVE_INT_M_N_BINARY_LOGIC): New.
14148         (MVE_INT_N_BINARY_LOGIC): New.
14149         (mve_insn): Add vand, veor, vorr, vbic.
14150         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
14151         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
14152         (mve_vbicq_m_<supf><mode>): Merge into ...
14153         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
14154         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
14155         (mve_vbicq_m_f<mode>): Merge into ...
14156         (@mve_<mve_insn>q_m_f<mode>): ... this.
14157         (mve_vorrq_n_<supf><mode>)
14158         (mve_vbicq_n_<supf><mode>): Merge into ...
14159         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14160         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
14161         into ...
14162         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14164 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14166         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
14167         * config/arm/arm-mve-builtins-shapes.h (binary): New.
14169 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14171         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
14172         New.
14173         (vaddq, vmulq, vsubq): New.
14174         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
14175         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
14176         * config/arm/arm_mve.h (vaddq): Remove.
14177         (vaddq_m): Remove.
14178         (vaddq_x): Remove.
14179         (vaddq_n_u8): Remove.
14180         (vaddq_n_s8): Remove.
14181         (vaddq_n_u16): Remove.
14182         (vaddq_n_s16): Remove.
14183         (vaddq_n_u32): Remove.
14184         (vaddq_n_s32): Remove.
14185         (vaddq_n_f16): Remove.
14186         (vaddq_n_f32): Remove.
14187         (vaddq_m_n_s8): Remove.
14188         (vaddq_m_n_s32): Remove.
14189         (vaddq_m_n_s16): Remove.
14190         (vaddq_m_n_u8): Remove.
14191         (vaddq_m_n_u32): Remove.
14192         (vaddq_m_n_u16): Remove.
14193         (vaddq_m_s8): Remove.
14194         (vaddq_m_s32): Remove.
14195         (vaddq_m_s16): Remove.
14196         (vaddq_m_u8): Remove.
14197         (vaddq_m_u32): Remove.
14198         (vaddq_m_u16): Remove.
14199         (vaddq_m_f32): Remove.
14200         (vaddq_m_f16): Remove.
14201         (vaddq_m_n_f32): Remove.
14202         (vaddq_m_n_f16): Remove.
14203         (vaddq_s8): Remove.
14204         (vaddq_s16): Remove.
14205         (vaddq_s32): Remove.
14206         (vaddq_u8): Remove.
14207         (vaddq_u16): Remove.
14208         (vaddq_u32): Remove.
14209         (vaddq_f16): Remove.
14210         (vaddq_f32): Remove.
14211         (vaddq_x_s8): Remove.
14212         (vaddq_x_s16): Remove.
14213         (vaddq_x_s32): Remove.
14214         (vaddq_x_n_s8): Remove.
14215         (vaddq_x_n_s16): Remove.
14216         (vaddq_x_n_s32): Remove.
14217         (vaddq_x_u8): Remove.
14218         (vaddq_x_u16): Remove.
14219         (vaddq_x_u32): Remove.
14220         (vaddq_x_n_u8): Remove.
14221         (vaddq_x_n_u16): Remove.
14222         (vaddq_x_n_u32): Remove.
14223         (vaddq_x_f16): Remove.
14224         (vaddq_x_f32): Remove.
14225         (vaddq_x_n_f16): Remove.
14226         (vaddq_x_n_f32): Remove.
14227         (__arm_vaddq_n_u8): Remove.
14228         (__arm_vaddq_n_s8): Remove.
14229         (__arm_vaddq_n_u16): Remove.
14230         (__arm_vaddq_n_s16): Remove.
14231         (__arm_vaddq_n_u32): Remove.
14232         (__arm_vaddq_n_s32): Remove.
14233         (__arm_vaddq_m_n_s8): Remove.
14234         (__arm_vaddq_m_n_s32): Remove.
14235         (__arm_vaddq_m_n_s16): Remove.
14236         (__arm_vaddq_m_n_u8): Remove.
14237         (__arm_vaddq_m_n_u32): Remove.
14238         (__arm_vaddq_m_n_u16): Remove.
14239         (__arm_vaddq_m_s8): Remove.
14240         (__arm_vaddq_m_s32): Remove.
14241         (__arm_vaddq_m_s16): Remove.
14242         (__arm_vaddq_m_u8): Remove.
14243         (__arm_vaddq_m_u32): Remove.
14244         (__arm_vaddq_m_u16): Remove.
14245         (__arm_vaddq_s8): Remove.
14246         (__arm_vaddq_s16): Remove.
14247         (__arm_vaddq_s32): Remove.
14248         (__arm_vaddq_u8): Remove.
14249         (__arm_vaddq_u16): Remove.
14250         (__arm_vaddq_u32): Remove.
14251         (__arm_vaddq_x_s8): Remove.
14252         (__arm_vaddq_x_s16): Remove.
14253         (__arm_vaddq_x_s32): Remove.
14254         (__arm_vaddq_x_n_s8): Remove.
14255         (__arm_vaddq_x_n_s16): Remove.
14256         (__arm_vaddq_x_n_s32): Remove.
14257         (__arm_vaddq_x_u8): Remove.
14258         (__arm_vaddq_x_u16): Remove.
14259         (__arm_vaddq_x_u32): Remove.
14260         (__arm_vaddq_x_n_u8): Remove.
14261         (__arm_vaddq_x_n_u16): Remove.
14262         (__arm_vaddq_x_n_u32): Remove.
14263         (__arm_vaddq_n_f16): Remove.
14264         (__arm_vaddq_n_f32): Remove.
14265         (__arm_vaddq_m_f32): Remove.
14266         (__arm_vaddq_m_f16): Remove.
14267         (__arm_vaddq_m_n_f32): Remove.
14268         (__arm_vaddq_m_n_f16): Remove.
14269         (__arm_vaddq_f16): Remove.
14270         (__arm_vaddq_f32): Remove.
14271         (__arm_vaddq_x_f16): Remove.
14272         (__arm_vaddq_x_f32): Remove.
14273         (__arm_vaddq_x_n_f16): Remove.
14274         (__arm_vaddq_x_n_f32): Remove.
14275         (__arm_vaddq): Remove.
14276         (__arm_vaddq_m): Remove.
14277         (__arm_vaddq_x): Remove.
14278         (vmulq): Remove.
14279         (vmulq_m): Remove.
14280         (vmulq_x): Remove.
14281         (vmulq_u8): Remove.
14282         (vmulq_n_u8): Remove.
14283         (vmulq_s8): Remove.
14284         (vmulq_n_s8): Remove.
14285         (vmulq_u16): Remove.
14286         (vmulq_n_u16): Remove.
14287         (vmulq_s16): Remove.
14288         (vmulq_n_s16): Remove.
14289         (vmulq_u32): Remove.
14290         (vmulq_n_u32): Remove.
14291         (vmulq_s32): Remove.
14292         (vmulq_n_s32): Remove.
14293         (vmulq_n_f16): Remove.
14294         (vmulq_f16): Remove.
14295         (vmulq_n_f32): Remove.
14296         (vmulq_f32): Remove.
14297         (vmulq_m_n_s8): Remove.
14298         (vmulq_m_n_s32): Remove.
14299         (vmulq_m_n_s16): Remove.
14300         (vmulq_m_n_u8): Remove.
14301         (vmulq_m_n_u32): Remove.
14302         (vmulq_m_n_u16): Remove.
14303         (vmulq_m_s8): Remove.
14304         (vmulq_m_s32): Remove.
14305         (vmulq_m_s16): Remove.
14306         (vmulq_m_u8): Remove.
14307         (vmulq_m_u32): Remove.
14308         (vmulq_m_u16): Remove.
14309         (vmulq_m_f32): Remove.
14310         (vmulq_m_f16): Remove.
14311         (vmulq_m_n_f32): Remove.
14312         (vmulq_m_n_f16): Remove.
14313         (vmulq_x_s8): Remove.
14314         (vmulq_x_s16): Remove.
14315         (vmulq_x_s32): Remove.
14316         (vmulq_x_n_s8): Remove.
14317         (vmulq_x_n_s16): Remove.
14318         (vmulq_x_n_s32): Remove.
14319         (vmulq_x_u8): Remove.
14320         (vmulq_x_u16): Remove.
14321         (vmulq_x_u32): Remove.
14322         (vmulq_x_n_u8): Remove.
14323         (vmulq_x_n_u16): Remove.
14324         (vmulq_x_n_u32): Remove.
14325         (vmulq_x_f16): Remove.
14326         (vmulq_x_f32): Remove.
14327         (vmulq_x_n_f16): Remove.
14328         (vmulq_x_n_f32): Remove.
14329         (__arm_vmulq_u8): Remove.
14330         (__arm_vmulq_n_u8): Remove.
14331         (__arm_vmulq_s8): Remove.
14332         (__arm_vmulq_n_s8): Remove.
14333         (__arm_vmulq_u16): Remove.
14334         (__arm_vmulq_n_u16): Remove.
14335         (__arm_vmulq_s16): Remove.
14336         (__arm_vmulq_n_s16): Remove.
14337         (__arm_vmulq_u32): Remove.
14338         (__arm_vmulq_n_u32): Remove.
14339         (__arm_vmulq_s32): Remove.
14340         (__arm_vmulq_n_s32): Remove.
14341         (__arm_vmulq_m_n_s8): Remove.
14342         (__arm_vmulq_m_n_s32): Remove.
14343         (__arm_vmulq_m_n_s16): Remove.
14344         (__arm_vmulq_m_n_u8): Remove.
14345         (__arm_vmulq_m_n_u32): Remove.
14346         (__arm_vmulq_m_n_u16): Remove.
14347         (__arm_vmulq_m_s8): Remove.
14348         (__arm_vmulq_m_s32): Remove.
14349         (__arm_vmulq_m_s16): Remove.
14350         (__arm_vmulq_m_u8): Remove.
14351         (__arm_vmulq_m_u32): Remove.
14352         (__arm_vmulq_m_u16): Remove.
14353         (__arm_vmulq_x_s8): Remove.
14354         (__arm_vmulq_x_s16): Remove.
14355         (__arm_vmulq_x_s32): Remove.
14356         (__arm_vmulq_x_n_s8): Remove.
14357         (__arm_vmulq_x_n_s16): Remove.
14358         (__arm_vmulq_x_n_s32): Remove.
14359         (__arm_vmulq_x_u8): Remove.
14360         (__arm_vmulq_x_u16): Remove.
14361         (__arm_vmulq_x_u32): Remove.
14362         (__arm_vmulq_x_n_u8): Remove.
14363         (__arm_vmulq_x_n_u16): Remove.
14364         (__arm_vmulq_x_n_u32): Remove.
14365         (__arm_vmulq_n_f16): Remove.
14366         (__arm_vmulq_f16): Remove.
14367         (__arm_vmulq_n_f32): Remove.
14368         (__arm_vmulq_f32): Remove.
14369         (__arm_vmulq_m_f32): Remove.
14370         (__arm_vmulq_m_f16): Remove.
14371         (__arm_vmulq_m_n_f32): Remove.
14372         (__arm_vmulq_m_n_f16): Remove.
14373         (__arm_vmulq_x_f16): Remove.
14374         (__arm_vmulq_x_f32): Remove.
14375         (__arm_vmulq_x_n_f16): Remove.
14376         (__arm_vmulq_x_n_f32): Remove.
14377         (__arm_vmulq): Remove.
14378         (__arm_vmulq_m): Remove.
14379         (__arm_vmulq_x): Remove.
14380         (vsubq): Remove.
14381         (vsubq_m): Remove.
14382         (vsubq_x): Remove.
14383         (vsubq_n_f16): Remove.
14384         (vsubq_n_f32): Remove.
14385         (vsubq_u8): Remove.
14386         (vsubq_n_u8): Remove.
14387         (vsubq_s8): Remove.
14388         (vsubq_n_s8): Remove.
14389         (vsubq_u16): Remove.
14390         (vsubq_n_u16): Remove.
14391         (vsubq_s16): Remove.
14392         (vsubq_n_s16): Remove.
14393         (vsubq_u32): Remove.
14394         (vsubq_n_u32): Remove.
14395         (vsubq_s32): Remove.
14396         (vsubq_n_s32): Remove.
14397         (vsubq_f16): Remove.
14398         (vsubq_f32): Remove.
14399         (vsubq_m_s8): Remove.
14400         (vsubq_m_u8): Remove.
14401         (vsubq_m_s16): Remove.
14402         (vsubq_m_u16): Remove.
14403         (vsubq_m_s32): Remove.
14404         (vsubq_m_u32): Remove.
14405         (vsubq_m_n_s8): Remove.
14406         (vsubq_m_n_s32): Remove.
14407         (vsubq_m_n_s16): Remove.
14408         (vsubq_m_n_u8): Remove.
14409         (vsubq_m_n_u32): Remove.
14410         (vsubq_m_n_u16): Remove.
14411         (vsubq_m_f32): Remove.
14412         (vsubq_m_f16): Remove.
14413         (vsubq_m_n_f32): Remove.
14414         (vsubq_m_n_f16): Remove.
14415         (vsubq_x_s8): Remove.
14416         (vsubq_x_s16): Remove.
14417         (vsubq_x_s32): Remove.
14418         (vsubq_x_n_s8): Remove.
14419         (vsubq_x_n_s16): Remove.
14420         (vsubq_x_n_s32): Remove.
14421         (vsubq_x_u8): Remove.
14422         (vsubq_x_u16): Remove.
14423         (vsubq_x_u32): Remove.
14424         (vsubq_x_n_u8): Remove.
14425         (vsubq_x_n_u16): Remove.
14426         (vsubq_x_n_u32): Remove.
14427         (vsubq_x_f16): Remove.
14428         (vsubq_x_f32): Remove.
14429         (vsubq_x_n_f16): Remove.
14430         (vsubq_x_n_f32): Remove.
14431         (__arm_vsubq_u8): Remove.
14432         (__arm_vsubq_n_u8): Remove.
14433         (__arm_vsubq_s8): Remove.
14434         (__arm_vsubq_n_s8): Remove.
14435         (__arm_vsubq_u16): Remove.
14436         (__arm_vsubq_n_u16): Remove.
14437         (__arm_vsubq_s16): Remove.
14438         (__arm_vsubq_n_s16): Remove.
14439         (__arm_vsubq_u32): Remove.
14440         (__arm_vsubq_n_u32): Remove.
14441         (__arm_vsubq_s32): Remove.
14442         (__arm_vsubq_n_s32): Remove.
14443         (__arm_vsubq_m_s8): Remove.
14444         (__arm_vsubq_m_u8): Remove.
14445         (__arm_vsubq_m_s16): Remove.
14446         (__arm_vsubq_m_u16): Remove.
14447         (__arm_vsubq_m_s32): Remove.
14448         (__arm_vsubq_m_u32): Remove.
14449         (__arm_vsubq_m_n_s8): Remove.
14450         (__arm_vsubq_m_n_s32): Remove.
14451         (__arm_vsubq_m_n_s16): Remove.
14452         (__arm_vsubq_m_n_u8): Remove.
14453         (__arm_vsubq_m_n_u32): Remove.
14454         (__arm_vsubq_m_n_u16): Remove.
14455         (__arm_vsubq_x_s8): Remove.
14456         (__arm_vsubq_x_s16): Remove.
14457         (__arm_vsubq_x_s32): Remove.
14458         (__arm_vsubq_x_n_s8): Remove.
14459         (__arm_vsubq_x_n_s16): Remove.
14460         (__arm_vsubq_x_n_s32): Remove.
14461         (__arm_vsubq_x_u8): Remove.
14462         (__arm_vsubq_x_u16): Remove.
14463         (__arm_vsubq_x_u32): Remove.
14464         (__arm_vsubq_x_n_u8): Remove.
14465         (__arm_vsubq_x_n_u16): Remove.
14466         (__arm_vsubq_x_n_u32): Remove.
14467         (__arm_vsubq_n_f16): Remove.
14468         (__arm_vsubq_n_f32): Remove.
14469         (__arm_vsubq_f16): Remove.
14470         (__arm_vsubq_f32): Remove.
14471         (__arm_vsubq_m_f32): Remove.
14472         (__arm_vsubq_m_f16): Remove.
14473         (__arm_vsubq_m_n_f32): Remove.
14474         (__arm_vsubq_m_n_f16): Remove.
14475         (__arm_vsubq_x_f16): Remove.
14476         (__arm_vsubq_x_f32): Remove.
14477         (__arm_vsubq_x_n_f16): Remove.
14478         (__arm_vsubq_x_n_f32): Remove.
14479         (__arm_vsubq): Remove.
14480         (__arm_vsubq_m): Remove.
14481         (__arm_vsubq_x): Remove.
14482         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
14483         Remove.
14484         (vmulq_u, vmulq_s, vmulq_f): Remove.
14485         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
14486         (mve_vmulq_<supf><mode>): Remove.
14488 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14490         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
14491         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
14492         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
14493         iterators.
14494         * config/arm/mve.md
14495         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
14496         Factorize into ...
14497         (@mve_<mve_insn>q_n_f<mode>): ... this.
14498         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
14499         (mve_vsubq_n_<supf><mode>): Factorize into ...
14500         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14501         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
14502         into ...
14503         (mve_<mve_addsubmul>q<mode>): ... this.
14504         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
14505         Factorize into ...
14506         (mve_<mve_addsubmul>q_f<mode>): ... this.
14507         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
14508         (mve_vsubq_m_<supf><mode>): Factorize into ...
14509         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
14510         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
14511         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
14512         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14513         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
14514         Factorize into ...
14515         (@mve_<mve_insn>q_m_f<mode>): ... this.
14516         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
14517         (mve_vsubq_m_n_f<mode>): Factorize into ...
14518         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
14520 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14522         * config/arm/arm-mve-builtins-functions.h (class
14523         unspec_based_mve_function_base): New.
14524         (class unspec_based_mve_function_exact_insn): New.
14526 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
14528         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
14529         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
14531 2023-05-03  Murray Steele  <murray.steele@arm.com>
14532             Christophe Lyon  <christophe.lyon@arm.com>
14534         * config/arm/arm-mve-builtins-base.cc (class
14535         vuninitializedq_impl): New.
14536         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
14537         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
14538         declaration.
14539         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
14540         * config/arm/arm-mve-builtins-shapes.h (inherent): New
14541         declaration.
14542         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
14543         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
14544         (__arm_vuninitializedq_u8): Remove.
14545         (__arm_vuninitializedq_u16): Remove.
14546         (__arm_vuninitializedq_u32): Remove.
14547         (__arm_vuninitializedq_u64): Remove.
14548         (__arm_vuninitializedq_s8): Remove.
14549         (__arm_vuninitializedq_s16): Remove.
14550         (__arm_vuninitializedq_s32): Remove.
14551         (__arm_vuninitializedq_s64): Remove.
14552         (__arm_vuninitializedq_f16): Remove.
14553         (__arm_vuninitializedq_f32): Remove.
14555 2023-05-03  Murray Steele  <murray.steele@arm.com>
14556             Christophe Lyon  <christophe.lyon@arm.com>
14558         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
14559         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
14560         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
14561         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
14562         (parse_type): Likewise.
14563         (parse_signature): Likewise.
14564         (build_one): Likewise.
14565         (build_all): Likewise.
14566         (overloaded_base): New struct.
14567         (unary_convert_def): Likewise.
14568         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
14569         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
14570         macro.
14571         (TYPES_reinterpret_unsigned1): Likewise.
14572         (TYPES_reinterpret_integer): Likewise.
14573         (TYPES_reinterpret_integer1): Likewise.
14574         (TYPES_reinterpret_float1): Likewise.
14575         (TYPES_reinterpret_float): Likewise.
14576         (reinterpret_integer): New.
14577         (reinterpret_float): New.
14578         (handle_arm_mve_h): Register builtins.
14579         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
14580         (vreinterpretq_s32): Likewise.
14581         (vreinterpretq_s64): Likewise.
14582         (vreinterpretq_s8): Likewise.
14583         (vreinterpretq_u16): Likewise.
14584         (vreinterpretq_u32): Likewise.
14585         (vreinterpretq_u64): Likewise.
14586         (vreinterpretq_u8): Likewise.
14587         (vreinterpretq_f16): Likewise.
14588         (vreinterpretq_f32): Likewise.
14589         (vreinterpretq_s16_s32): Likewise.
14590         (vreinterpretq_s16_s64): Likewise.
14591         (vreinterpretq_s16_s8): Likewise.
14592         (vreinterpretq_s16_u16): Likewise.
14593         (vreinterpretq_s16_u32): Likewise.
14594         (vreinterpretq_s16_u64): Likewise.
14595         (vreinterpretq_s16_u8): Likewise.
14596         (vreinterpretq_s32_s16): Likewise.
14597         (vreinterpretq_s32_s64): Likewise.
14598         (vreinterpretq_s32_s8): Likewise.
14599         (vreinterpretq_s32_u16): Likewise.
14600         (vreinterpretq_s32_u32): Likewise.
14601         (vreinterpretq_s32_u64): Likewise.
14602         (vreinterpretq_s32_u8): Likewise.
14603         (vreinterpretq_s64_s16): Likewise.
14604         (vreinterpretq_s64_s32): Likewise.
14605         (vreinterpretq_s64_s8): Likewise.
14606         (vreinterpretq_s64_u16): Likewise.
14607         (vreinterpretq_s64_u32): Likewise.
14608         (vreinterpretq_s64_u64): Likewise.
14609         (vreinterpretq_s64_u8): Likewise.
14610         (vreinterpretq_s8_s16): Likewise.
14611         (vreinterpretq_s8_s32): Likewise.
14612         (vreinterpretq_s8_s64): Likewise.
14613         (vreinterpretq_s8_u16): Likewise.
14614         (vreinterpretq_s8_u32): Likewise.
14615         (vreinterpretq_s8_u64): Likewise.
14616         (vreinterpretq_s8_u8): Likewise.
14617         (vreinterpretq_u16_s16): Likewise.
14618         (vreinterpretq_u16_s32): Likewise.
14619         (vreinterpretq_u16_s64): Likewise.
14620         (vreinterpretq_u16_s8): Likewise.
14621         (vreinterpretq_u16_u32): Likewise.
14622         (vreinterpretq_u16_u64): Likewise.
14623         (vreinterpretq_u16_u8): Likewise.
14624         (vreinterpretq_u32_s16): Likewise.
14625         (vreinterpretq_u32_s32): Likewise.
14626         (vreinterpretq_u32_s64): Likewise.
14627         (vreinterpretq_u32_s8): Likewise.
14628         (vreinterpretq_u32_u16): Likewise.
14629         (vreinterpretq_u32_u64): Likewise.
14630         (vreinterpretq_u32_u8): Likewise.
14631         (vreinterpretq_u64_s16): Likewise.
14632         (vreinterpretq_u64_s32): Likewise.
14633         (vreinterpretq_u64_s64): Likewise.
14634         (vreinterpretq_u64_s8): Likewise.
14635         (vreinterpretq_u64_u16): Likewise.
14636         (vreinterpretq_u64_u32): Likewise.
14637         (vreinterpretq_u64_u8): Likewise.
14638         (vreinterpretq_u8_s16): Likewise.
14639         (vreinterpretq_u8_s32): Likewise.
14640         (vreinterpretq_u8_s64): Likewise.
14641         (vreinterpretq_u8_s8): Likewise.
14642         (vreinterpretq_u8_u16): Likewise.
14643         (vreinterpretq_u8_u32): Likewise.
14644         (vreinterpretq_u8_u64): Likewise.
14645         (vreinterpretq_s32_f16): Likewise.
14646         (vreinterpretq_s32_f32): Likewise.
14647         (vreinterpretq_u16_f16): Likewise.
14648         (vreinterpretq_u16_f32): Likewise.
14649         (vreinterpretq_u32_f16): Likewise.
14650         (vreinterpretq_u32_f32): Likewise.
14651         (vreinterpretq_u64_f16): Likewise.
14652         (vreinterpretq_u64_f32): Likewise.
14653         (vreinterpretq_u8_f16): Likewise.
14654         (vreinterpretq_u8_f32): Likewise.
14655         (vreinterpretq_f16_f32): Likewise.
14656         (vreinterpretq_f16_s16): Likewise.
14657         (vreinterpretq_f16_s32): Likewise.
14658         (vreinterpretq_f16_s64): Likewise.
14659         (vreinterpretq_f16_s8): Likewise.
14660         (vreinterpretq_f16_u16): Likewise.
14661         (vreinterpretq_f16_u32): Likewise.
14662         (vreinterpretq_f16_u64): Likewise.
14663         (vreinterpretq_f16_u8): Likewise.
14664         (vreinterpretq_f32_f16): Likewise.
14665         (vreinterpretq_f32_s16): Likewise.
14666         (vreinterpretq_f32_s32): Likewise.
14667         (vreinterpretq_f32_s64): Likewise.
14668         (vreinterpretq_f32_s8): Likewise.
14669         (vreinterpretq_f32_u16): Likewise.
14670         (vreinterpretq_f32_u32): Likewise.
14671         (vreinterpretq_f32_u64): Likewise.
14672         (vreinterpretq_f32_u8): Likewise.
14673         (vreinterpretq_s16_f16): Likewise.
14674         (vreinterpretq_s16_f32): Likewise.
14675         (vreinterpretq_s64_f16): Likewise.
14676         (vreinterpretq_s64_f32): Likewise.
14677         (vreinterpretq_s8_f16): Likewise.
14678         (vreinterpretq_s8_f32): Likewise.
14679         (__arm_vreinterpretq_f16): Likewise.
14680         (__arm_vreinterpretq_f32): Likewise.
14681         (__arm_vreinterpretq_s16): Likewise.
14682         (__arm_vreinterpretq_s32): Likewise.
14683         (__arm_vreinterpretq_s64): Likewise.
14684         (__arm_vreinterpretq_s8): Likewise.
14685         (__arm_vreinterpretq_u16): Likewise.
14686         (__arm_vreinterpretq_u32): Likewise.
14687         (__arm_vreinterpretq_u64): Likewise.
14688         (__arm_vreinterpretq_u8): Likewise.
14689         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
14690         (__arm_vreinterpretq_s16_s64): Likewise.
14691         (__arm_vreinterpretq_s16_s8): Likewise.
14692         (__arm_vreinterpretq_s16_u16): Likewise.
14693         (__arm_vreinterpretq_s16_u32): Likewise.
14694         (__arm_vreinterpretq_s16_u64): Likewise.
14695         (__arm_vreinterpretq_s16_u8): Likewise.
14696         (__arm_vreinterpretq_s32_s16): Likewise.
14697         (__arm_vreinterpretq_s32_s64): Likewise.
14698         (__arm_vreinterpretq_s32_s8): Likewise.
14699         (__arm_vreinterpretq_s32_u16): Likewise.
14700         (__arm_vreinterpretq_s32_u32): Likewise.
14701         (__arm_vreinterpretq_s32_u64): Likewise.
14702         (__arm_vreinterpretq_s32_u8): Likewise.
14703         (__arm_vreinterpretq_s64_s16): Likewise.
14704         (__arm_vreinterpretq_s64_s32): Likewise.
14705         (__arm_vreinterpretq_s64_s8): Likewise.
14706         (__arm_vreinterpretq_s64_u16): Likewise.
14707         (__arm_vreinterpretq_s64_u32): Likewise.
14708         (__arm_vreinterpretq_s64_u64): Likewise.
14709         (__arm_vreinterpretq_s64_u8): Likewise.
14710         (__arm_vreinterpretq_s8_s16): Likewise.
14711         (__arm_vreinterpretq_s8_s32): Likewise.
14712         (__arm_vreinterpretq_s8_s64): Likewise.
14713         (__arm_vreinterpretq_s8_u16): Likewise.
14714         (__arm_vreinterpretq_s8_u32): Likewise.
14715         (__arm_vreinterpretq_s8_u64): Likewise.
14716         (__arm_vreinterpretq_s8_u8): Likewise.
14717         (__arm_vreinterpretq_u16_s16): Likewise.
14718         (__arm_vreinterpretq_u16_s32): Likewise.
14719         (__arm_vreinterpretq_u16_s64): Likewise.
14720         (__arm_vreinterpretq_u16_s8): Likewise.
14721         (__arm_vreinterpretq_u16_u32): Likewise.
14722         (__arm_vreinterpretq_u16_u64): Likewise.
14723         (__arm_vreinterpretq_u16_u8): Likewise.
14724         (__arm_vreinterpretq_u32_s16): Likewise.
14725         (__arm_vreinterpretq_u32_s32): Likewise.
14726         (__arm_vreinterpretq_u32_s64): Likewise.
14727         (__arm_vreinterpretq_u32_s8): Likewise.
14728         (__arm_vreinterpretq_u32_u16): Likewise.
14729         (__arm_vreinterpretq_u32_u64): Likewise.
14730         (__arm_vreinterpretq_u32_u8): Likewise.
14731         (__arm_vreinterpretq_u64_s16): Likewise.
14732         (__arm_vreinterpretq_u64_s32): Likewise.
14733         (__arm_vreinterpretq_u64_s64): Likewise.
14734         (__arm_vreinterpretq_u64_s8): Likewise.
14735         (__arm_vreinterpretq_u64_u16): Likewise.
14736         (__arm_vreinterpretq_u64_u32): Likewise.
14737         (__arm_vreinterpretq_u64_u8): Likewise.
14738         (__arm_vreinterpretq_u8_s16): Likewise.
14739         (__arm_vreinterpretq_u8_s32): Likewise.
14740         (__arm_vreinterpretq_u8_s64): Likewise.
14741         (__arm_vreinterpretq_u8_s8): Likewise.
14742         (__arm_vreinterpretq_u8_u16): Likewise.
14743         (__arm_vreinterpretq_u8_u32): Likewise.
14744         (__arm_vreinterpretq_u8_u64): Likewise.
14745         (__arm_vreinterpretq_s32_f16): Likewise.
14746         (__arm_vreinterpretq_s32_f32): Likewise.
14747         (__arm_vreinterpretq_s16_f16): Likewise.
14748         (__arm_vreinterpretq_s16_f32): Likewise.
14749         (__arm_vreinterpretq_s64_f16): Likewise.
14750         (__arm_vreinterpretq_s64_f32): Likewise.
14751         (__arm_vreinterpretq_s8_f16): Likewise.
14752         (__arm_vreinterpretq_s8_f32): Likewise.
14753         (__arm_vreinterpretq_u16_f16): Likewise.
14754         (__arm_vreinterpretq_u16_f32): Likewise.
14755         (__arm_vreinterpretq_u32_f16): Likewise.
14756         (__arm_vreinterpretq_u32_f32): Likewise.
14757         (__arm_vreinterpretq_u64_f16): Likewise.
14758         (__arm_vreinterpretq_u64_f32): Likewise.
14759         (__arm_vreinterpretq_u8_f16): Likewise.
14760         (__arm_vreinterpretq_u8_f32): Likewise.
14761         (__arm_vreinterpretq_f16_f32): Likewise.
14762         (__arm_vreinterpretq_f16_s16): Likewise.
14763         (__arm_vreinterpretq_f16_s32): Likewise.
14764         (__arm_vreinterpretq_f16_s64): Likewise.
14765         (__arm_vreinterpretq_f16_s8): Likewise.
14766         (__arm_vreinterpretq_f16_u16): Likewise.
14767         (__arm_vreinterpretq_f16_u32): Likewise.
14768         (__arm_vreinterpretq_f16_u64): Likewise.
14769         (__arm_vreinterpretq_f16_u8): Likewise.
14770         (__arm_vreinterpretq_f32_f16): Likewise.
14771         (__arm_vreinterpretq_f32_s16): Likewise.
14772         (__arm_vreinterpretq_f32_s32): Likewise.
14773         (__arm_vreinterpretq_f32_s64): Likewise.
14774         (__arm_vreinterpretq_f32_s8): Likewise.
14775         (__arm_vreinterpretq_f32_u16): Likewise.
14776         (__arm_vreinterpretq_f32_u32): Likewise.
14777         (__arm_vreinterpretq_f32_u64): Likewise.
14778         (__arm_vreinterpretq_f32_u8): Likewise.
14779         (__arm_vreinterpretq_s16): Likewise.
14780         (__arm_vreinterpretq_s32): Likewise.
14781         (__arm_vreinterpretq_s64): Likewise.
14782         (__arm_vreinterpretq_s8): Likewise.
14783         (__arm_vreinterpretq_u16): Likewise.
14784         (__arm_vreinterpretq_u32): Likewise.
14785         (__arm_vreinterpretq_u64): Likewise.
14786         (__arm_vreinterpretq_u8): Likewise.
14787         (__arm_vreinterpretq_f16): Likewise.
14788         (__arm_vreinterpretq_f32): Likewise.
14789         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
14790         * config/arm/unspecs.md: (REINTERPRET): New unspec.
14792 2023-05-03  Murray Steele  <murray.steele@arm.com>
14793             Christophe Lyon  <christophe.lyon@arm.com>
14794             Christophe Lyon   <christophe.lyon@arm.com
14796         * config.gcc: Add arm-mve-builtins-base.o and
14797         arm-mve-builtins-shapes.o to extra_objs.
14798         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
14799         numberspace.
14800         (arm_expand_builtin): Likewise
14801         (arm_check_builtin_call): Likewise
14802         (arm_describe_resolver): Likewise.
14803         * config/arm/arm-builtins.h (enum resolver_ident): Add
14804         arm_mve_resolver.
14805         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
14806         (arm_resolve_overloaded_builtin): Handle MVE builtins.
14807         (arm_register_target_pragmas): Register arm_check_builtin_call.
14808         * config/arm/arm-mve-builtins.cc (class registered_function): New
14809         class.
14810         (struct registered_function_hasher): New struct.
14811         (pred_suffixes): New table.
14812         (mode_suffixes): New table.
14813         (type_suffix_info): New table.
14814         (TYPES_float16): New.
14815         (TYPES_all_float): New.
14816         (TYPES_integer_8): New.
14817         (TYPES_integer_8_16): New.
14818         (TYPES_integer_16_32): New.
14819         (TYPES_integer_32): New.
14820         (TYPES_signed_16_32): New.
14821         (TYPES_signed_32): New.
14822         (TYPES_all_signed): New.
14823         (TYPES_all_unsigned): New.
14824         (TYPES_all_integer): New.
14825         (TYPES_all_integer_with_64): New.
14826         (DEF_VECTOR_TYPE): New.
14827         (DEF_DOUBLE_TYPE): New.
14828         (DEF_MVE_TYPES_ARRAY): New.
14829         (all_integer): New.
14830         (all_integer_with_64): New.
14831         (float16): New.
14832         (all_float): New.
14833         (all_signed): New.
14834         (all_unsigned): New.
14835         (integer_8): New.
14836         (integer_8_16): New.
14837         (integer_16_32): New.
14838         (integer_32): New.
14839         (signed_16_32): New.
14840         (signed_32): New.
14841         (register_vector_type): Use void_type_node for mve.fp-only types when
14842         mve.fp is not enabled.
14843         (register_builtin_tuple_types): Likewise.
14844         (handle_arm_mve_h): New function..
14845         (matches_type_p): Likewise..
14846         (report_out_of_range): Likewise.
14847         (report_not_enum): Likewise.
14848         (report_missing_float): Likewise.
14849         (report_non_ice): Likewise.
14850         (check_requires_float): Likewise.
14851         (function_instance::hash): Likewise
14852         (function_instance::call_properties): Likewise.
14853         (function_instance::reads_global_state_p): Likewise.
14854         (function_instance::modifies_global_state_p): Likewise.
14855         (function_instance::could_trap_p): Likewise.
14856         (function_instance::has_inactive_argument): Likewise.
14857         (registered_function_hasher::hash): Likewise.
14858         (registered_function_hasher::equal): Likewise.
14859         (function_builder::function_builder): Likewise.
14860         (function_builder::~function_builder): Likewise.
14861         (function_builder::append_name): Likewise.
14862         (function_builder::finish_name): Likewise.
14863         (function_builder::get_name): Likewise.
14864         (add_attribute): Likewise.
14865         (function_builder::get_attributes): Likewise.
14866         (function_builder::add_function): Likewise.
14867         (function_builder::add_unique_function): Likewise.
14868         (function_builder::add_overloaded_function): Likewise.
14869         (function_builder::add_overloaded_functions): Likewise.
14870         (function_builder::register_function_group): Likewise.
14871         (function_call_info::function_call_info): Likewise.
14872         (function_resolver::function_resolver): Likewise.
14873         (function_resolver::get_vector_type): Likewise.
14874         (function_resolver::get_scalar_type_name): Likewise.
14875         (function_resolver::get_argument_type): Likewise.
14876         (function_resolver::scalar_argument_p): Likewise.
14877         (function_resolver::report_no_such_form): Likewise.
14878         (function_resolver::lookup_form): Likewise.
14879         (function_resolver::resolve_to): Likewise.
14880         (function_resolver::infer_vector_or_tuple_type): Likewise.
14881         (function_resolver::infer_vector_type): Likewise.
14882         (function_resolver::require_vector_or_scalar_type): Likewise.
14883         (function_resolver::require_vector_type): Likewise.
14884         (function_resolver::require_matching_vector_type): Likewise.
14885         (function_resolver::require_derived_vector_type): Likewise.
14886         (function_resolver::require_derived_scalar_type): Likewise.
14887         (function_resolver::require_integer_immediate): Likewise.
14888         (function_resolver::require_scalar_type): Likewise.
14889         (function_resolver::check_num_arguments): Likewise.
14890         (function_resolver::check_gp_argument): Likewise.
14891         (function_resolver::finish_opt_n_resolution): Likewise.
14892         (function_resolver::resolve_unary): Likewise.
14893         (function_resolver::resolve_unary_n): Likewise.
14894         (function_resolver::resolve_uniform): Likewise.
14895         (function_resolver::resolve_uniform_opt_n): Likewise.
14896         (function_resolver::resolve): Likewise.
14897         (function_checker::function_checker): Likewise.
14898         (function_checker::argument_exists_p): Likewise.
14899         (function_checker::require_immediate): Likewise.
14900         (function_checker::require_immediate_enum): Likewise.
14901         (function_checker::require_immediate_range): Likewise.
14902         (function_checker::check): Likewise.
14903         (gimple_folder::gimple_folder): Likewise.
14904         (gimple_folder::fold): Likewise.
14905         (function_expander::function_expander): Likewise.
14906         (function_expander::direct_optab_handler): Likewise.
14907         (function_expander::get_fallback_value): Likewise.
14908         (function_expander::get_reg_target): Likewise.
14909         (function_expander::add_output_operand): Likewise.
14910         (function_expander::add_input_operand): Likewise.
14911         (function_expander::add_integer_operand): Likewise.
14912         (function_expander::generate_insn): Likewise.
14913         (function_expander::use_exact_insn): Likewise.
14914         (function_expander::use_unpred_insn): Likewise.
14915         (function_expander::use_pred_x_insn): Likewise.
14916         (function_expander::use_cond_insn): Likewise.
14917         (function_expander::map_to_rtx_codes): Likewise.
14918         (function_expander::expand): Likewise.
14919         (resolve_overloaded_builtin): Likewise.
14920         (check_builtin_call): Likewise.
14921         (gimple_fold_builtin): Likewise.
14922         (expand_builtin): Likewise.
14923         (gt_ggc_mx): Likewise.
14924         (gt_pch_nx): Likewise.
14925         (gt_pch_nx): Likewise.
14926         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
14927         (s16): Likewise.
14928         (s32): Likewise.
14929         (s64): Likewise.
14930         (u8): Likewise.
14931         (u16): Likewise.
14932         (u32): Likewise.
14933         (u64): Likewise.
14934         (f16): Likewise.
14935         (f32): Likewise.
14936         (n): New mode.
14937         (offset): New mode.
14938         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
14939         (CP_READ_FPCR): Likewise.
14940         (CP_RAISE_FP_EXCEPTIONS): Likewise.
14941         (CP_READ_MEMORY): Likewise.
14942         (CP_WRITE_MEMORY): Likewise.
14943         (enum units_index): New enum.
14944         (enum predication_index): New.
14945         (enum type_class_index): New.
14946         (enum mode_suffix_index): New enum.
14947         (enum type_suffix_index): New.
14948         (struct mode_suffix_info): New struct.
14949         (struct type_suffix_info): New.
14950         (struct function_group_info): Likewise.
14951         (class function_instance): Likewise.
14952         (class registered_function): Likewise.
14953         (class function_builder): Likewise.
14954         (class function_call_info): Likewise.
14955         (class function_resolver): Likewise.
14956         (class function_checker): Likewise.
14957         (class gimple_folder): Likewise.
14958         (class function_expander): Likewise.
14959         (get_mve_pred16_t): Likewise.
14960         (find_mode_suffix): New function.
14961         (class function_base): Likewise.
14962         (class function_shape): Likewise.
14963         (function_instance::operator==): New function.
14964         (function_instance::operator!=): Likewise.
14965         (function_instance::vectors_per_tuple): Likewise.
14966         (function_instance::mode_suffix): Likewise.
14967         (function_instance::type_suffix): Likewise.
14968         (function_instance::scalar_type): Likewise.
14969         (function_instance::vector_type): Likewise.
14970         (function_instance::tuple_type): Likewise.
14971         (function_instance::vector_mode): Likewise.
14972         (function_call_info::function_returns_void_p): Likewise.
14973         (function_base::call_properties): Likewise.
14974         * config/arm/arm-protos.h (enum arm_builtin_class): Add
14975         ARM_BUILTIN_MVE.
14976         (handle_arm_mve_h): New.
14977         (resolve_overloaded_builtin): New.
14978         (check_builtin_call): New.
14979         (gimple_fold_builtin): New.
14980         (expand_builtin): New.
14981         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
14982         arm_gimple_fold_builtin.
14983         (arm_gimple_fold_builtin): New function.
14984         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
14985         * config/arm/predicates.md (arm_any_register_operand): New predicate.
14986         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
14987         (arm-mve-builtins-shapes.o): New target.
14988         (arm-mve-builtins-base.o): New target.
14989         * config/arm/arm-mve-builtins-base.cc: New file.
14990         * config/arm/arm-mve-builtins-base.def: New file.
14991         * config/arm/arm-mve-builtins-base.h: New file.
14992         * config/arm/arm-mve-builtins-functions.h: New file.
14993         * config/arm/arm-mve-builtins-shapes.cc: New file.
14994         * config/arm/arm-mve-builtins-shapes.h: New file.
14996 2023-05-03  Murray Steele  <murray.steele@arm.com>
14997             Christophe Lyon  <christophe.lyon@arm.com>
14998             Christophe Lyon   <christophe.lyon@arm.com>
15000         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
15001         New function.
15002         (arm_init_builtin): Use arm_general_add_builtin_function instead
15003         of arm_add_builtin_function.
15004         (arm_init_acle_builtins): Likewise.
15005         (arm_init_mve_builtins): Likewise.
15006         (arm_init_crypto_builtins): Likewise.
15007         (arm_init_builtins): Likewise.
15008         (arm_general_builtin_decl): New function.
15009         (arm_builtin_decl): Defer to numberspace-specialized functions.
15010         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
15011         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
15012         (arm_general_expand_builtin_1): ... specialize for general builtins.
15013         (arm_expand_acle_builtin): Use arm_general_expand_builtin
15014         instead of arm_expand_builtin.
15015         (arm_expand_mve_builtin): Likewise.
15016         (arm_expand_neon_builtin): Likewise.
15017         (arm_expand_vfp_builtin): Likewise.
15018         (arm_general_expand_builtin): New function.
15019         (arm_expand_builtin): Specialize for general builtins.
15020         (arm_general_check_builtin_call): New function.
15021         (arm_check_builtin_call): Specialize for general builtins.
15022         (arm_describe_resolver): Validate numberspace.
15023         (arm_cde_end_args): Likewise.
15024         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
15025         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
15027 2023-05-03  Martin Liska  <mliska@suse.cz>
15029         PR target/109713
15030         * config/riscv/sync.md: Add gcc_unreachable to a switch.
15032 2023-05-03  Richard Biener  <rguenther@suse.de>
15034         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
15035         (patch_loop_exit): Likewise.
15036         (connect_loops): Likewise.
15037         (split_loop): Likewise.
15038         (control_dep_semi_invariant_p): Likewise.
15039         (do_split_loop_on_cond): Likewise.
15040         (split_loop_on_cond): Likewise.
15041         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
15042         Likewise.
15043         (simplify_loop_version): Likewise.
15044         (evaluate_bbs): Likewise.
15045         (find_loop_guard): Likewise.
15046         (clean_up_after_unswitching): Likewise.
15047         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
15048         Likewise.
15049         (optimize_spaceship): Take a gcond * argument, avoid
15050         last_stmt.
15051         (math_opts_dom_walker::after_dom_children): Adjust call to
15052         optimize_spaceship.
15053         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
15054         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
15055         Likewise.
15057 2023-05-03  Andreas Schwab  <schwab@suse.de>
15059         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
15061 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15063         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
15064         New function.
15065         (class vlseg): New class.
15066         (class vsseg): Ditto.
15067         (class vlsseg): Ditto.
15068         (class vssseg): Ditto.
15069         (class seg_indexed_load): Ditto.
15070         (class seg_indexed_store): Ditto.
15071         (class vlsegff): Ditto.
15072         (BASE): Ditto.
15073         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15074         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
15075         Ditto.
15076         (vsseg): Ditto.
15077         (vlsseg): Ditto.
15078         (vssseg): Ditto.
15079         (vluxseg): Ditto.
15080         (vloxseg): Ditto.
15081         (vsuxseg): Ditto.
15082         (vsoxseg): Ditto.
15083         (vlsegff): Ditto.
15084         * config/riscv/riscv-vector-builtins-shapes.cc (struct
15085         seg_loadstore_def): Ditto.
15086         (struct seg_indexed_loadstore_def): Ditto.
15087         (struct seg_fault_load_def): Ditto.
15088         (SHAPE): Ditto.
15089         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15090         * config/riscv/riscv-vector-builtins.cc
15091         (function_builder::append_nf): New function.
15092         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
15093         Change ptr from double into float.
15094         (vfloat32m1x3_t): Ditto.
15095         (vfloat32m1x4_t): Ditto.
15096         (vfloat32m1x5_t): Ditto.
15097         (vfloat32m1x6_t): Ditto.
15098         (vfloat32m1x7_t): Ditto.
15099         (vfloat32m1x8_t): Ditto.
15100         (vfloat32m2x2_t): Ditto.
15101         (vfloat32m2x3_t): Ditto.
15102         (vfloat32m2x4_t): Ditto.
15103         (vfloat32m4x2_t): Ditto.
15104         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
15105         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
15106         segment ff load.
15107         * config/riscv/riscv.md: Add segment instructions.
15108         * config/riscv/vector-iterators.md: Support segment intrinsics.
15109         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
15110         pattern.
15111         (@pred_unit_strided_store<mode>): Ditto.
15112         (@pred_strided_load<mode>): Ditto.
15113         (@pred_strided_store<mode>): Ditto.
15114         (@pred_fault_load<mode>): Ditto.
15115         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
15116         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
15117         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
15118         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
15119         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
15120         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
15121         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
15122         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
15123         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
15124         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
15125         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
15126         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
15127         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
15128         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
15130 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15132         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
15133         tuple type support.
15134         (inttype): Ditto.
15135         (floattype): Ditto.
15136         (main): Ditto.
15137         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
15138         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
15139         tuple type vset.
15140         (vget): Add tuple type vget.
15141         * config/riscv/riscv-vector-builtins-types.def
15142         (DEF_RVV_TUPLE_OPS): New macro.
15143         (vint8mf8x2_t): Ditto.
15144         (vuint8mf8x2_t): Ditto.
15145         (vint8mf8x3_t): Ditto.
15146         (vuint8mf8x3_t): Ditto.
15147         (vint8mf8x4_t): Ditto.
15148         (vuint8mf8x4_t): Ditto.
15149         (vint8mf8x5_t): Ditto.
15150         (vuint8mf8x5_t): Ditto.
15151         (vint8mf8x6_t): Ditto.
15152         (vuint8mf8x6_t): Ditto.
15153         (vint8mf8x7_t): Ditto.
15154         (vuint8mf8x7_t): Ditto.
15155         (vint8mf8x8_t): Ditto.
15156         (vuint8mf8x8_t): Ditto.
15157         (vint8mf4x2_t): Ditto.
15158         (vuint8mf4x2_t): Ditto.
15159         (vint8mf4x3_t): Ditto.
15160         (vuint8mf4x3_t): Ditto.
15161         (vint8mf4x4_t): Ditto.
15162         (vuint8mf4x4_t): Ditto.
15163         (vint8mf4x5_t): Ditto.
15164         (vuint8mf4x5_t): Ditto.
15165         (vint8mf4x6_t): Ditto.
15166         (vuint8mf4x6_t): Ditto.
15167         (vint8mf4x7_t): Ditto.
15168         (vuint8mf4x7_t): Ditto.
15169         (vint8mf4x8_t): Ditto.
15170         (vuint8mf4x8_t): Ditto.
15171         (vint8mf2x2_t): Ditto.
15172         (vuint8mf2x2_t): Ditto.
15173         (vint8mf2x3_t): Ditto.
15174         (vuint8mf2x3_t): Ditto.
15175         (vint8mf2x4_t): Ditto.
15176         (vuint8mf2x4_t): Ditto.
15177         (vint8mf2x5_t): Ditto.
15178         (vuint8mf2x5_t): Ditto.
15179         (vint8mf2x6_t): Ditto.
15180         (vuint8mf2x6_t): Ditto.
15181         (vint8mf2x7_t): Ditto.
15182         (vuint8mf2x7_t): Ditto.
15183         (vint8mf2x8_t): Ditto.
15184         (vuint8mf2x8_t): Ditto.
15185         (vint8m1x2_t): Ditto.
15186         (vuint8m1x2_t): Ditto.
15187         (vint8m1x3_t): Ditto.
15188         (vuint8m1x3_t): Ditto.
15189         (vint8m1x4_t): Ditto.
15190         (vuint8m1x4_t): Ditto.
15191         (vint8m1x5_t): Ditto.
15192         (vuint8m1x5_t): Ditto.
15193         (vint8m1x6_t): Ditto.
15194         (vuint8m1x6_t): Ditto.
15195         (vint8m1x7_t): Ditto.
15196         (vuint8m1x7_t): Ditto.
15197         (vint8m1x8_t): Ditto.
15198         (vuint8m1x8_t): Ditto.
15199         (vint8m2x2_t): Ditto.
15200         (vuint8m2x2_t): Ditto.
15201         (vint8m2x3_t): Ditto.
15202         (vuint8m2x3_t): Ditto.
15203         (vint8m2x4_t): Ditto.
15204         (vuint8m2x4_t): Ditto.
15205         (vint8m4x2_t): Ditto.
15206         (vuint8m4x2_t): Ditto.
15207         (vint16mf4x2_t): Ditto.
15208         (vuint16mf4x2_t): Ditto.
15209         (vint16mf4x3_t): Ditto.
15210         (vuint16mf4x3_t): Ditto.
15211         (vint16mf4x4_t): Ditto.
15212         (vuint16mf4x4_t): Ditto.
15213         (vint16mf4x5_t): Ditto.
15214         (vuint16mf4x5_t): Ditto.
15215         (vint16mf4x6_t): Ditto.
15216         (vuint16mf4x6_t): Ditto.
15217         (vint16mf4x7_t): Ditto.
15218         (vuint16mf4x7_t): Ditto.
15219         (vint16mf4x8_t): Ditto.
15220         (vuint16mf4x8_t): Ditto.
15221         (vint16mf2x2_t): Ditto.
15222         (vuint16mf2x2_t): Ditto.
15223         (vint16mf2x3_t): Ditto.
15224         (vuint16mf2x3_t): Ditto.
15225         (vint16mf2x4_t): Ditto.
15226         (vuint16mf2x4_t): Ditto.
15227         (vint16mf2x5_t): Ditto.
15228         (vuint16mf2x5_t): Ditto.
15229         (vint16mf2x6_t): Ditto.
15230         (vuint16mf2x6_t): Ditto.
15231         (vint16mf2x7_t): Ditto.
15232         (vuint16mf2x7_t): Ditto.
15233         (vint16mf2x8_t): Ditto.
15234         (vuint16mf2x8_t): Ditto.
15235         (vint16m1x2_t): Ditto.
15236         (vuint16m1x2_t): Ditto.
15237         (vint16m1x3_t): Ditto.
15238         (vuint16m1x3_t): Ditto.
15239         (vint16m1x4_t): Ditto.
15240         (vuint16m1x4_t): Ditto.
15241         (vint16m1x5_t): Ditto.
15242         (vuint16m1x5_t): Ditto.
15243         (vint16m1x6_t): Ditto.
15244         (vuint16m1x6_t): Ditto.
15245         (vint16m1x7_t): Ditto.
15246         (vuint16m1x7_t): Ditto.
15247         (vint16m1x8_t): Ditto.
15248         (vuint16m1x8_t): Ditto.
15249         (vint16m2x2_t): Ditto.
15250         (vuint16m2x2_t): Ditto.
15251         (vint16m2x3_t): Ditto.
15252         (vuint16m2x3_t): Ditto.
15253         (vint16m2x4_t): Ditto.
15254         (vuint16m2x4_t): Ditto.
15255         (vint16m4x2_t): Ditto.
15256         (vuint16m4x2_t): Ditto.
15257         (vint32mf2x2_t): Ditto.
15258         (vuint32mf2x2_t): Ditto.
15259         (vint32mf2x3_t): Ditto.
15260         (vuint32mf2x3_t): Ditto.
15261         (vint32mf2x4_t): Ditto.
15262         (vuint32mf2x4_t): Ditto.
15263         (vint32mf2x5_t): Ditto.
15264         (vuint32mf2x5_t): Ditto.
15265         (vint32mf2x6_t): Ditto.
15266         (vuint32mf2x6_t): Ditto.
15267         (vint32mf2x7_t): Ditto.
15268         (vuint32mf2x7_t): Ditto.
15269         (vint32mf2x8_t): Ditto.
15270         (vuint32mf2x8_t): Ditto.
15271         (vint32m1x2_t): Ditto.
15272         (vuint32m1x2_t): Ditto.
15273         (vint32m1x3_t): Ditto.
15274         (vuint32m1x3_t): Ditto.
15275         (vint32m1x4_t): Ditto.
15276         (vuint32m1x4_t): Ditto.
15277         (vint32m1x5_t): Ditto.
15278         (vuint32m1x5_t): Ditto.
15279         (vint32m1x6_t): Ditto.
15280         (vuint32m1x6_t): Ditto.
15281         (vint32m1x7_t): Ditto.
15282         (vuint32m1x7_t): Ditto.
15283         (vint32m1x8_t): Ditto.
15284         (vuint32m1x8_t): Ditto.
15285         (vint32m2x2_t): Ditto.
15286         (vuint32m2x2_t): Ditto.
15287         (vint32m2x3_t): Ditto.
15288         (vuint32m2x3_t): Ditto.
15289         (vint32m2x4_t): Ditto.
15290         (vuint32m2x4_t): Ditto.
15291         (vint32m4x2_t): Ditto.
15292         (vuint32m4x2_t): Ditto.
15293         (vint64m1x2_t): Ditto.
15294         (vuint64m1x2_t): Ditto.
15295         (vint64m1x3_t): Ditto.
15296         (vuint64m1x3_t): Ditto.
15297         (vint64m1x4_t): Ditto.
15298         (vuint64m1x4_t): Ditto.
15299         (vint64m1x5_t): Ditto.
15300         (vuint64m1x5_t): Ditto.
15301         (vint64m1x6_t): Ditto.
15302         (vuint64m1x6_t): Ditto.
15303         (vint64m1x7_t): Ditto.
15304         (vuint64m1x7_t): Ditto.
15305         (vint64m1x8_t): Ditto.
15306         (vuint64m1x8_t): Ditto.
15307         (vint64m2x2_t): Ditto.
15308         (vuint64m2x2_t): Ditto.
15309         (vint64m2x3_t): Ditto.
15310         (vuint64m2x3_t): Ditto.
15311         (vint64m2x4_t): Ditto.
15312         (vuint64m2x4_t): Ditto.
15313         (vint64m4x2_t): Ditto.
15314         (vuint64m4x2_t): Ditto.
15315         (vfloat32mf2x2_t): Ditto.
15316         (vfloat32mf2x3_t): Ditto.
15317         (vfloat32mf2x4_t): Ditto.
15318         (vfloat32mf2x5_t): Ditto.
15319         (vfloat32mf2x6_t): Ditto.
15320         (vfloat32mf2x7_t): Ditto.
15321         (vfloat32mf2x8_t): Ditto.
15322         (vfloat32m1x2_t): Ditto.
15323         (vfloat32m1x3_t): Ditto.
15324         (vfloat32m1x4_t): Ditto.
15325         (vfloat32m1x5_t): Ditto.
15326         (vfloat32m1x6_t): Ditto.
15327         (vfloat32m1x7_t): Ditto.
15328         (vfloat32m1x8_t): Ditto.
15329         (vfloat32m2x2_t): Ditto.
15330         (vfloat32m2x3_t): Ditto.
15331         (vfloat32m2x4_t): Ditto.
15332         (vfloat32m4x2_t): Ditto.
15333         (vfloat64m1x2_t): Ditto.
15334         (vfloat64m1x3_t): Ditto.
15335         (vfloat64m1x4_t): Ditto.
15336         (vfloat64m1x5_t): Ditto.
15337         (vfloat64m1x6_t): Ditto.
15338         (vfloat64m1x7_t): Ditto.
15339         (vfloat64m1x8_t): Ditto.
15340         (vfloat64m2x2_t): Ditto.
15341         (vfloat64m2x3_t): Ditto.
15342         (vfloat64m2x4_t): Ditto.
15343         (vfloat64m4x2_t): Ditto.
15344         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
15345         Ditto.
15346         (DEF_RVV_TYPE_INDEX): Ditto.
15347         (rvv_arg_type_info::get_tuple_subpart_type): New function.
15348         (DEF_RVV_TUPLE_TYPE): New macro.
15349         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
15350         Adapt for tuple vget/vset support.
15351         (vint8mf4_t): Ditto.
15352         (vuint8mf4_t): Ditto.
15353         (vint8mf2_t): Ditto.
15354         (vuint8mf2_t): Ditto.
15355         (vint8m1_t): Ditto.
15356         (vuint8m1_t): Ditto.
15357         (vint8m2_t): Ditto.
15358         (vuint8m2_t): Ditto.
15359         (vint8m4_t): Ditto.
15360         (vuint8m4_t): Ditto.
15361         (vint8m8_t): Ditto.
15362         (vuint8m8_t): Ditto.
15363         (vint16mf4_t): Ditto.
15364         (vuint16mf4_t): Ditto.
15365         (vint16mf2_t): Ditto.
15366         (vuint16mf2_t): Ditto.
15367         (vint16m1_t): Ditto.
15368         (vuint16m1_t): Ditto.
15369         (vint16m2_t): Ditto.
15370         (vuint16m2_t): Ditto.
15371         (vint16m4_t): Ditto.
15372         (vuint16m4_t): Ditto.
15373         (vint16m8_t): Ditto.
15374         (vuint16m8_t): Ditto.
15375         (vint32mf2_t): Ditto.
15376         (vuint32mf2_t): Ditto.
15377         (vint32m1_t): Ditto.
15378         (vuint32m1_t): Ditto.
15379         (vint32m2_t): Ditto.
15380         (vuint32m2_t): Ditto.
15381         (vint32m4_t): Ditto.
15382         (vuint32m4_t): Ditto.
15383         (vint32m8_t): Ditto.
15384         (vuint32m8_t): Ditto.
15385         (vint64m1_t): Ditto.
15386         (vuint64m1_t): Ditto.
15387         (vint64m2_t): Ditto.
15388         (vuint64m2_t): Ditto.
15389         (vint64m4_t): Ditto.
15390         (vuint64m4_t): Ditto.
15391         (vint64m8_t): Ditto.
15392         (vuint64m8_t): Ditto.
15393         (vfloat32mf2_t): Ditto.
15394         (vfloat32m1_t): Ditto.
15395         (vfloat32m2_t): Ditto.
15396         (vfloat32m4_t): Ditto.
15397         (vfloat32m8_t): Ditto.
15398         (vfloat64m1_t): Ditto.
15399         (vfloat64m2_t): Ditto.
15400         (vfloat64m4_t): Ditto.
15401         (vfloat64m8_t): Ditto.
15402         (tuple_subpart): Add tuple subpart base type.
15403         * config/riscv/riscv-vector-builtins.h (struct
15404         rvv_arg_type_info): Ditto.
15405         (tuple_type_field): New function.
15407 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15409         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
15410         (RVV_TUPLE_PARTIAL_MODES): Ditto.
15411         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
15412         function.
15413         (get_nf): Ditto.
15414         (get_subpart_mode): Ditto.
15415         (get_tuple_mode): Ditto.
15416         (expand_tuple_move): Ditto.
15417         * config/riscv/riscv-v.cc (ENTRY): New macro.
15418         (TUPLE_ENTRY): Ditto.
15419         (get_nf): New function.
15420         (get_subpart_mode): Ditto.
15421         (get_tuple_mode): Ditto.
15422         (expand_tuple_move): Ditto.
15423         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
15424         New macro.
15425         (register_tuple_type): New function
15426         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
15427         New macro.
15428         (vint8mf8x2_t): New macro.
15429         (vuint8mf8x2_t): Ditto.
15430         (vint8mf8x3_t): Ditto.
15431         (vuint8mf8x3_t): Ditto.
15432         (vint8mf8x4_t): Ditto.
15433         (vuint8mf8x4_t): Ditto.
15434         (vint8mf8x5_t): Ditto.
15435         (vuint8mf8x5_t): Ditto.
15436         (vint8mf8x6_t): Ditto.
15437         (vuint8mf8x6_t): Ditto.
15438         (vint8mf8x7_t): Ditto.
15439         (vuint8mf8x7_t): Ditto.
15440         (vint8mf8x8_t): Ditto.
15441         (vuint8mf8x8_t): Ditto.
15442         (vint8mf4x2_t): Ditto.
15443         (vuint8mf4x2_t): Ditto.
15444         (vint8mf4x3_t): Ditto.
15445         (vuint8mf4x3_t): Ditto.
15446         (vint8mf4x4_t): Ditto.
15447         (vuint8mf4x4_t): Ditto.
15448         (vint8mf4x5_t): Ditto.
15449         (vuint8mf4x5_t): Ditto.
15450         (vint8mf4x6_t): Ditto.
15451         (vuint8mf4x6_t): Ditto.
15452         (vint8mf4x7_t): Ditto.
15453         (vuint8mf4x7_t): Ditto.
15454         (vint8mf4x8_t): Ditto.
15455         (vuint8mf4x8_t): Ditto.
15456         (vint8mf2x2_t): Ditto.
15457         (vuint8mf2x2_t): Ditto.
15458         (vint8mf2x3_t): Ditto.
15459         (vuint8mf2x3_t): Ditto.
15460         (vint8mf2x4_t): Ditto.
15461         (vuint8mf2x4_t): Ditto.
15462         (vint8mf2x5_t): Ditto.
15463         (vuint8mf2x5_t): Ditto.
15464         (vint8mf2x6_t): Ditto.
15465         (vuint8mf2x6_t): Ditto.
15466         (vint8mf2x7_t): Ditto.
15467         (vuint8mf2x7_t): Ditto.
15468         (vint8mf2x8_t): Ditto.
15469         (vuint8mf2x8_t): Ditto.
15470         (vint8m1x2_t): Ditto.
15471         (vuint8m1x2_t): Ditto.
15472         (vint8m1x3_t): Ditto.
15473         (vuint8m1x3_t): Ditto.
15474         (vint8m1x4_t): Ditto.
15475         (vuint8m1x4_t): Ditto.
15476         (vint8m1x5_t): Ditto.
15477         (vuint8m1x5_t): Ditto.
15478         (vint8m1x6_t): Ditto.
15479         (vuint8m1x6_t): Ditto.
15480         (vint8m1x7_t): Ditto.
15481         (vuint8m1x7_t): Ditto.
15482         (vint8m1x8_t): Ditto.
15483         (vuint8m1x8_t): Ditto.
15484         (vint8m2x2_t): Ditto.
15485         (vuint8m2x2_t): Ditto.
15486         (vint8m2x3_t): Ditto.
15487         (vuint8m2x3_t): Ditto.
15488         (vint8m2x4_t): Ditto.
15489         (vuint8m2x4_t): Ditto.
15490         (vint8m4x2_t): Ditto.
15491         (vuint8m4x2_t): Ditto.
15492         (vint16mf4x2_t): Ditto.
15493         (vuint16mf4x2_t): Ditto.
15494         (vint16mf4x3_t): Ditto.
15495         (vuint16mf4x3_t): Ditto.
15496         (vint16mf4x4_t): Ditto.
15497         (vuint16mf4x4_t): Ditto.
15498         (vint16mf4x5_t): Ditto.
15499         (vuint16mf4x5_t): Ditto.
15500         (vint16mf4x6_t): Ditto.
15501         (vuint16mf4x6_t): Ditto.
15502         (vint16mf4x7_t): Ditto.
15503         (vuint16mf4x7_t): Ditto.
15504         (vint16mf4x8_t): Ditto.
15505         (vuint16mf4x8_t): Ditto.
15506         (vint16mf2x2_t): Ditto.
15507         (vuint16mf2x2_t): Ditto.
15508         (vint16mf2x3_t): Ditto.
15509         (vuint16mf2x3_t): Ditto.
15510         (vint16mf2x4_t): Ditto.
15511         (vuint16mf2x4_t): Ditto.
15512         (vint16mf2x5_t): Ditto.
15513         (vuint16mf2x5_t): Ditto.
15514         (vint16mf2x6_t): Ditto.
15515         (vuint16mf2x6_t): Ditto.
15516         (vint16mf2x7_t): Ditto.
15517         (vuint16mf2x7_t): Ditto.
15518         (vint16mf2x8_t): Ditto.
15519         (vuint16mf2x8_t): Ditto.
15520         (vint16m1x2_t): Ditto.
15521         (vuint16m1x2_t): Ditto.
15522         (vint16m1x3_t): Ditto.
15523         (vuint16m1x3_t): Ditto.
15524         (vint16m1x4_t): Ditto.
15525         (vuint16m1x4_t): Ditto.
15526         (vint16m1x5_t): Ditto.
15527         (vuint16m1x5_t): Ditto.
15528         (vint16m1x6_t): Ditto.
15529         (vuint16m1x6_t): Ditto.
15530         (vint16m1x7_t): Ditto.
15531         (vuint16m1x7_t): Ditto.
15532         (vint16m1x8_t): Ditto.
15533         (vuint16m1x8_t): Ditto.
15534         (vint16m2x2_t): Ditto.
15535         (vuint16m2x2_t): Ditto.
15536         (vint16m2x3_t): Ditto.
15537         (vuint16m2x3_t): Ditto.
15538         (vint16m2x4_t): Ditto.
15539         (vuint16m2x4_t): Ditto.
15540         (vint16m4x2_t): Ditto.
15541         (vuint16m4x2_t): Ditto.
15542         (vint32mf2x2_t): Ditto.
15543         (vuint32mf2x2_t): Ditto.
15544         (vint32mf2x3_t): Ditto.
15545         (vuint32mf2x3_t): Ditto.
15546         (vint32mf2x4_t): Ditto.
15547         (vuint32mf2x4_t): Ditto.
15548         (vint32mf2x5_t): Ditto.
15549         (vuint32mf2x5_t): Ditto.
15550         (vint32mf2x6_t): Ditto.
15551         (vuint32mf2x6_t): Ditto.
15552         (vint32mf2x7_t): Ditto.
15553         (vuint32mf2x7_t): Ditto.
15554         (vint32mf2x8_t): Ditto.
15555         (vuint32mf2x8_t): Ditto.
15556         (vint32m1x2_t): Ditto.
15557         (vuint32m1x2_t): Ditto.
15558         (vint32m1x3_t): Ditto.
15559         (vuint32m1x3_t): Ditto.
15560         (vint32m1x4_t): Ditto.
15561         (vuint32m1x4_t): Ditto.
15562         (vint32m1x5_t): Ditto.
15563         (vuint32m1x5_t): Ditto.
15564         (vint32m1x6_t): Ditto.
15565         (vuint32m1x6_t): Ditto.
15566         (vint32m1x7_t): Ditto.
15567         (vuint32m1x7_t): Ditto.
15568         (vint32m1x8_t): Ditto.
15569         (vuint32m1x8_t): Ditto.
15570         (vint32m2x2_t): Ditto.
15571         (vuint32m2x2_t): Ditto.
15572         (vint32m2x3_t): Ditto.
15573         (vuint32m2x3_t): Ditto.
15574         (vint32m2x4_t): Ditto.
15575         (vuint32m2x4_t): Ditto.
15576         (vint32m4x2_t): Ditto.
15577         (vuint32m4x2_t): Ditto.
15578         (vint64m1x2_t): Ditto.
15579         (vuint64m1x2_t): Ditto.
15580         (vint64m1x3_t): Ditto.
15581         (vuint64m1x3_t): Ditto.
15582         (vint64m1x4_t): Ditto.
15583         (vuint64m1x4_t): Ditto.
15584         (vint64m1x5_t): Ditto.
15585         (vuint64m1x5_t): Ditto.
15586         (vint64m1x6_t): Ditto.
15587         (vuint64m1x6_t): Ditto.
15588         (vint64m1x7_t): Ditto.
15589         (vuint64m1x7_t): Ditto.
15590         (vint64m1x8_t): Ditto.
15591         (vuint64m1x8_t): Ditto.
15592         (vint64m2x2_t): Ditto.
15593         (vuint64m2x2_t): Ditto.
15594         (vint64m2x3_t): Ditto.
15595         (vuint64m2x3_t): Ditto.
15596         (vint64m2x4_t): Ditto.
15597         (vuint64m2x4_t): Ditto.
15598         (vint64m4x2_t): Ditto.
15599         (vuint64m4x2_t): Ditto.
15600         (vfloat32mf2x2_t): Ditto.
15601         (vfloat32mf2x3_t): Ditto.
15602         (vfloat32mf2x4_t): Ditto.
15603         (vfloat32mf2x5_t): Ditto.
15604         (vfloat32mf2x6_t): Ditto.
15605         (vfloat32mf2x7_t): Ditto.
15606         (vfloat32mf2x8_t): Ditto.
15607         (vfloat32m1x2_t): Ditto.
15608         (vfloat32m1x3_t): Ditto.
15609         (vfloat32m1x4_t): Ditto.
15610         (vfloat32m1x5_t): Ditto.
15611         (vfloat32m1x6_t): Ditto.
15612         (vfloat32m1x7_t): Ditto.
15613         (vfloat32m1x8_t): Ditto.
15614         (vfloat32m2x2_t): Ditto.
15615         (vfloat32m2x3_t): Ditto.
15616         (vfloat32m2x4_t): Ditto.
15617         (vfloat32m4x2_t): Ditto.
15618         (vfloat64m1x2_t): Ditto.
15619         (vfloat64m1x3_t): Ditto.
15620         (vfloat64m1x4_t): Ditto.
15621         (vfloat64m1x5_t): Ditto.
15622         (vfloat64m1x6_t): Ditto.
15623         (vfloat64m1x7_t): Ditto.
15624         (vfloat64m1x8_t): Ditto.
15625         (vfloat64m2x2_t): Ditto.
15626         (vfloat64m2x3_t): Ditto.
15627         (vfloat64m2x4_t): Ditto.
15628         (vfloat64m4x2_t): Ditto.
15629         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
15630         Ditto.
15631         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
15632         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
15633         function.
15634         (TUPLE_ENTRY): Ditto.
15635         (riscv_v_ext_mode_p): New function.
15636         (riscv_v_adjust_nunits): Add tuple mode adjustment.
15637         (riscv_classify_address): Ditto.
15638         (riscv_binary_cost): Ditto.
15639         (riscv_rtx_costs): Ditto.
15640         (riscv_secondary_memory_needed): Ditto.
15641         (riscv_hard_regno_nregs): Ditto.
15642         (riscv_hard_regno_mode_ok): Ditto.
15643         (riscv_vector_mode_supported_p): Ditto.
15644         (riscv_regmode_natural_size): Ditto.
15645         (riscv_array_mode): New function.
15646         (TARGET_ARRAY_MODE): New target hook.
15647         * config/riscv/riscv.md: Add tuple modes.
15648         * config/riscv/vector-iterators.md: Ditto.
15649         * config/riscv/vector.md (mov<mode>): Add tuple modes data
15650         movement.
15651         (*mov<VT:mode>_<P:mode>): Ditto.
15653 2023-05-03  Richard Biener  <rguenther@suse.de>
15655         * cse.cc (cse_insn): Track an equivalence to the destination
15656         separately and delay using src_related for it.
15658 2023-05-03  Richard Biener  <rguenther@suse.de>
15660         * cse.cc (HASH): Turn into inline function and mix
15661         in another HASH_SHIFT bits.
15662         (SAFE_HASH): Likewise.
15664 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15666         PR target/99195
15667         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
15668         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
15670 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15672         PR target/99195
15673         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
15674         (add<mode>3<vczle><vczbe>): ... This.
15675         (sub<mode>3): Rename to...
15676         (sub<mode>3<vczle><vczbe>): ... This.
15677         (mul<mode>3): Rename to...
15678         (mul<mode>3<vczle><vczbe>): ... This.
15679         (*div<mode>3): Rename to...
15680         (*div<mode>3<vczle><vczbe>): ... This.
15681         (neg<mode>2): Rename to...
15682         (neg<mode>2<vczle><vczbe>): ... This.
15683         (abs<mode>2): Rename to...
15684         (abs<mode>2<vczle><vczbe>): ... This.
15685         (<frint_pattern><mode>2): Rename to...
15686         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
15687         (<fmaxmin><mode>3): Rename to...
15688         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
15689         (*sqrt<mode>2): Rename to...
15690         (*sqrt<mode>2<vczle><vczbe>): ... This.
15692 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
15694         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
15696 2023-05-03  Martin Liska  <mliska@suse.cz>
15698         PR tree-optimization/109693
15699         * value-range-storage.cc (vrange_allocator::vrange_allocator):
15700         Remove unused field.
15701         * value-range-storage.h: Likewise.
15703 2023-05-02  Andrew Pinski  <apinski@marvell.com>
15705         * tree-ssa-phiopt.cc (move_stmt): New function.
15706         (match_simplify_replacement): Use move_stmt instead
15707         of the inlined version.
15709 2023-05-02  Andrew Pinski  <apinski@marvell.com>
15711         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
15712         pattern.
15714 2023-05-02  Andrew Pinski  <apinski@marvell.com>
15716         PR tree-optimization/109702
15717         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
15718         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
15720 2023-05-02  Andrew Pinski  <apinski@marvell.com>
15722         PR target/109657
15723         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
15724         insn_and_split pattern.
15726 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15728         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
15729         load mapping.
15731 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15733         * config/riscv/sync.md (mem_thread_fence_1): Change fence
15734         depending on the given memory model.
15736 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15738         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
15739         riscv_union_memmodels function to sync.md.
15740         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
15741         get the union of two memmodels in sync.md.
15742         (riscv_print_operand): Add %I and %J flags that output the
15743         optimal LR/SC flag bits for a given memory model.
15744         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
15745         bits on SC op and replace with optimized %I, %J flags.
15747 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15749         * config/riscv/riscv.cc
15750         (riscv_memmodel_needs_amo_release): Change function name.
15751         (riscv_print_operand): Remove unneeded %F case.
15752         * config/riscv/sync.md: Remove unneeded fences.
15754 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15756         PR target/89835
15757         * config/riscv/sync.md (atomic_store<mode>): Use simple store
15758         instruction in combination with fence(s).
15760 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15762         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
15763         of %A to include release bits.
15765 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15767         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
15768         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
15769         pair.
15771 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15773         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
15774         sequentially consistent LR.aqrl/SC.rl pairs.
15776 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
15778         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
15779         sanitize memmodel input with memmodel_base.
15781 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
15782             Pan Li  <pan2.li@intel.com>
15784         PR target/109617
15785         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
15787 2023-05-02  Romain Naour  <romain.naour@gmail.com>
15789         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
15790         the namespace.
15792 2023-05-02  Martin Liska  <mliska@suse.cz>
15794         * doc/invoke.texi: Update documentation based on param.opt file.
15796 2023-05-02  Richard Biener  <rguenther@suse.de>
15798         PR tree-optimization/109672
15799         * tree-vect-stmts.cc (vectorizable_operation): For plus,
15800         minus and negate always check the vector mode is word mode.
15802 2023-05-01  Andrew Pinski  <apinski@marvell.com>
15804         * tree-ssa-phiopt.cc: Update comment about
15805         how the transformation are implemented.
15807 2023-05-01  Jeff Law  <jlaw@ventanamicro>
15809         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
15811 2023-05-01  Jeff Law  <jlaw@ventanamicro>
15813         * config/cris/cris.cc (TARGET_LRA_P): Remove.
15814         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
15815         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
15816         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
15817         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
15818         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
15820 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
15822         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
15823         * print-tree.cc (print_decl_identifier): Implement it.
15824         * toplev.cc (output_stack_usage_1): Use it.
15826 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
15828         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
15829         friends.
15831 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
15833         * value-range.h (irange::set_nonzero): Inline.
15835 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
15837         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
15838         precision.
15839         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
15840         invalid_range, as it is an inverse range.
15841         * tree-vrp.cc (find_case_label_range): Avoid trees.
15842         * value-range.cc (irange::irange_set): Delete.
15843         (irange::irange_set_1bit_anti_range): Delete.
15844         (irange::irange_set_anti_range): Delete.
15845         (irange::set): Cleanup.
15846         * value-range.h (class irange): Remove irange_set,
15847         irange_set_anti_range, irange_set_1bit_anti_range.
15848         (irange::set_undefined): Remove set to m_type.
15850 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
15852         * range-op.cc (update_known_bitmask): Adjust for irange containing
15853         wide_ints internally.
15854         * tree-ssanames.cc (set_nonzero_bits): Same.
15855         * tree-ssanames.h (set_nonzero_bits): Same.
15856         * value-range-storage.cc (irange_storage::set_irange): Same.
15857         (irange_storage::get_irange): Same.
15858         * value-range.cc (irange::operator=): Same.
15859         (irange::irange_set): Same.
15860         (irange::irange_set_1bit_anti_range): Same.
15861         (irange::irange_set_anti_range): Same.
15862         (irange::set): Same.
15863         (irange::verify_range): Same.
15864         (irange::contains_p): Same.
15865         (irange::irange_single_pair_union): Same.
15866         (irange::union_): Same.
15867         (irange::irange_contains_p): Same.
15868         (irange::intersect): Same.
15869         (irange::invert): Same.
15870         (irange::set_range_from_nonzero_bits): Same.
15871         (irange::set_nonzero_bits): Same.
15872         (mask_to_wi): Same.
15873         (irange::intersect_nonzero_bits): Same.
15874         (irange::union_nonzero_bits): Same.
15875         (gt_ggc_mx): Same.
15876         (gt_pch_nx): Same.
15877         (tree_range): Same.
15878         (range_tests_strict_enum): Same.
15879         (range_tests_misc): Same.
15880         (range_tests_nonzero_bits): Same.
15881         * value-range.h (irange::type): Same.
15882         (irange::varying_compatible_p): Same.
15883         (irange::irange): Same.
15884         (int_range::int_range): Same.
15885         (irange::set_undefined): Same.
15886         (irange::set_varying): Same.
15887         (irange::lower_bound): Same.
15888         (irange::upper_bound): Same.
15890 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
15892         * gimple-range-fold.cc (tree_lower_bound): Delete.
15893         (tree_upper_bound): Delete.
15894         (vrp_val_max): Delete.
15895         (vrp_val_min): Delete.
15896         (fold_using_range::range_of_ssa_name_with_loop_info): Call
15897         range_of_var_in_loop.
15898         * vr-values.cc (valid_value_p): Delete.
15899         (fix_overflow): Delete.
15900         (get_scev_info): New.
15901         (bounds_of_var_in_loop): Refactor into...
15902         (induction_variable_may_overflow_p): ...this,
15903         (range_from_loop_direction): ...and this,
15904         (range_of_var_in_loop): ...and this.
15905         * vr-values.h (bounds_of_var_in_loop): Delete.
15906         (range_of_var_in_loop): New.
15908 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
15910         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
15911         irange_val*.
15912         (vrp_val_max): New.
15913         (vrp_val_min): New.
15914         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
15915         * range-op.cc (max_limit): Same.
15916         (min_limit): Same.
15917         (plus_minus_ranges): Same.
15918         (operator_rshift::op1_range): Same.
15919         (operator_cast::inside_domain_p): Same.
15920         * value-range.cc (vrp_val_is_max): Delete.
15921         (vrp_val_is_min): Delete.
15922         (range_tests_misc): Use irange_val_*.
15923         * value-range.h (vrp_val_is_min): Delete.
15924         (vrp_val_is_max): Delete.
15925         (vrp_val_max): Delete.
15926         (irange_val_min): New.
15927         (vrp_val_min): Delete.
15928         (irange_val_max): New.
15929         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
15931 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
15933         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
15934         * gimple-fold.cc (size_must_be_zero_p): Same.
15935         * gimple-loop-versioning.cc
15936         (loop_versioning::prune_loop_conditions): Same.
15937         * gimple-range-edge.cc (gcond_edge_range): Same.
15938         (gimple_outgoing_range::calc_switch_ranges): Same.
15939         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
15940         (adjust_realpart_expr): Same.
15941         (fold_using_range::range_of_address): Same.
15942         (fold_using_range::relation_fold_and_or): Same.
15943         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
15944         (range_is_either_true_or_false): Same.
15945         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
15946         (cfn_clz::fold_range): Same.
15947         (cfn_ctz::fold_range): Same.
15948         * gimple-range-tests.cc (class test_expr_eval): Same.
15949         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
15950         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
15951         (propagate_vr_across_jump_function): Same.
15952         (decide_whether_version_node): Same.
15953         * ipa-prop.cc (ipa_get_value_range): Same.
15954         * ipa-prop.h (ipa_range_set_and_normalize): Same.
15955         * range-op.cc (get_shift_range): Same.
15956         (value_range_from_overflowed_bounds): Same.
15957         (value_range_with_overflow): Same.
15958         (create_possibly_reversed_range): Same.
15959         (equal_op1_op2_relation): Same.
15960         (not_equal_op1_op2_relation): Same.
15961         (lt_op1_op2_relation): Same.
15962         (le_op1_op2_relation): Same.
15963         (gt_op1_op2_relation): Same.
15964         (ge_op1_op2_relation): Same.
15965         (operator_mult::op1_range): Same.
15966         (operator_exact_divide::op1_range): Same.
15967         (operator_lshift::op1_range): Same.
15968         (operator_rshift::op1_range): Same.
15969         (operator_cast::op1_range): Same.
15970         (operator_logical_and::fold_range): Same.
15971         (set_nonzero_range_from_mask): Same.
15972         (operator_bitwise_or::op1_range): Same.
15973         (operator_bitwise_xor::op1_range): Same.
15974         (operator_addr_expr::fold_range): Same.
15975         (pointer_plus_operator::wi_fold): Same.
15976         (pointer_or_operator::op1_range): Same.
15977         (INT): Same.
15978         (UINT): Same.
15979         (INT16): Same.
15980         (UINT16): Same.
15981         (SCHAR): Same.
15982         (UCHAR): Same.
15983         (range_op_cast_tests): Same.
15984         (range_op_lshift_tests): Same.
15985         (range_op_rshift_tests): Same.
15986         (range_op_bitwise_and_tests): Same.
15987         (range_relational_tests): Same.
15988         * range.cc (range_zero): Same.
15989         (range_nonzero): Same.
15990         * range.h (range_true): Same.
15991         (range_false): Same.
15992         (range_true_and_false): Same.
15993         * tree-data-ref.cc (split_constant_offset_1): Same.
15994         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
15995         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
15996         (find_unswitching_predicates_for_bb): Same.
15997         * tree-ssa-phiopt.cc (value_replacement): Same.
15998         * tree-ssa-threadbackward.cc
15999         (back_threader::find_taken_edge_cond): Same.
16000         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
16001         * tree-vrp.cc (find_case_label_range): Same.
16002         * value-query.cc (range_query::get_tree_range): Same.
16003         * value-range.cc (irange::set_nonnegative): Same.
16004         (frange::contains_p): Same.
16005         (frange::singleton_p): Same.
16006         (frange::internal_singleton_p): Same.
16007         (irange::irange_set): Same.
16008         (irange::irange_set_1bit_anti_range): Same.
16009         (irange::irange_set_anti_range): Same.
16010         (irange::set): Same.
16011         (irange::operator==): Same.
16012         (irange::singleton_p): Same.
16013         (irange::contains_p): Same.
16014         (irange::set_range_from_nonzero_bits): Same.
16015         (DEFINE_INT_RANGE_INSTANCE): Same.
16016         (INT): Same.
16017         (UINT): Same.
16018         (SCHAR): Same.
16019         (UINT128): Same.
16020         (UCHAR): Same.
16021         (range): New.
16022         (tree_range): New.
16023         (range_int): New.
16024         (range_uint): New.
16025         (range_uint128): New.
16026         (range_uchar): New.
16027         (range_char): New.
16028         (build_range3): Convert to irange wide_int API.
16029         (range_tests_irange3): Same.
16030         (range_tests_int_range_max): Same.
16031         (range_tests_strict_enum): Same.
16032         (range_tests_misc): Same.
16033         (range_tests_nonzero_bits): Same.
16034         (range_tests_nan): Same.
16035         (range_tests_signed_zeros): Same.
16036         * value-range.h (Value_Range::Value_Range): Same.
16037         (irange::set): Same.
16038         (irange::nonzero_p): Same.
16039         (irange::contains_p): Same.
16040         (range_includes_zero_p): Same.
16041         (irange::set_nonzero): Same.
16042         (irange::set_zero): Same.
16043         (contains_zero_p): Same.
16044         (frange::contains_p): Same.
16045         * vr-values.cc
16046         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
16047         (bounds_of_var_in_loop): Same.
16048         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
16050 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16052         * value-range.cc (irange::irange_union): Rename to...
16053         (irange::union_): ...this.
16054         (irange::irange_intersect): Rename to...
16055         (irange::intersect): ...this.
16056         * value-range.h (irange::union_): Delete.
16057         (irange::intersect): Delete.
16059 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16061         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
16063 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16065         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
16066         ranger API.
16067         (compare_ranges): Delete.
16068         (compare_range_with_value): Delete.
16069         (bounds_of_var_in_loop): Tidy up by using ranger API.
16070         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
16071         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
16072         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
16073         strict_overflow_p and only_ranges.
16074         (simplify_using_ranges::legacy_fold_cond): Adjust call to
16075         legacy_fold_cond_overflow.
16076         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
16077         rename.
16078         (range_fits_type_p): Rename value_range to irange.
16079         * vr-values.h (range_fits_type_p): Adjust prototype.
16081 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16083         * value-range.cc (irange::irange_set_anti_range): Remove uses of
16084         tree_lower_bound and tree_upper_bound.
16085         (irange::verify_range): Same.
16086         (irange::operator==): Same.
16087         (irange::singleton_p): Same.
16088         * value-range.h (irange::tree_lower_bound): Delete.
16089         (irange::tree_upper_bound): Delete.
16090         (irange::lower_bound): Delete.
16091         (irange::upper_bound): Delete.
16092         (irange::zero_p): Remove uses of tree_lower_bound and
16093         tree_upper_bound.
16095 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16097         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
16098         kind() call.
16099         (determine_value_range): Same.
16100         (record_nonwrapping_iv): Same.
16101         (infer_loop_bounds_from_signedness): Same.
16102         (scev_var_range_cant_overflow): Same.
16103         * tree-vrp.cc (operand_less_p): Delete.
16104         * tree-vrp.h (operand_less_p): Delete.
16105         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
16106         (irange::value_inside_range): Delete.
16107         * value-range.h (vrange::kind): Delete.
16108         (irange::num_pairs): Remove check of m_kind.
16109         (irange::min): Delete.
16110         (irange::max): Delete.
16112 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
16114         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
16115         for vrange_storage.
16116         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
16117         (sbr_vector::grow): Same.
16118         (sbr_vector::set_bb_range): Same.
16119         (sbr_vector::get_bb_range): Same.
16120         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
16121         (sbr_sparse_bitmap::set_bb_range): Same.
16122         (sbr_sparse_bitmap::get_bb_range): Same.
16123         (block_range_cache::block_range_cache): Same.
16124         (ssa_global_cache::ssa_global_cache): Same.
16125         (ssa_global_cache::get_global_range): Same.
16126         (ssa_global_cache::set_global_range): Same.
16127         * gimple-range-cache.h: Same.
16128         * gimple-range-edge.cc
16129         (gimple_outgoing_range::gimple_outgoing_range): Same.
16130         (gimple_outgoing_range::switch_edge_range): Same.
16131         (gimple_outgoing_range::calc_switch_ranges): Same.
16132         * gimple-range-edge.h: Same.
16133         * gimple-range-infer.cc
16134         (infer_range_manager::infer_range_manager): Same.
16135         (infer_range_manager::get_nonzero): Same.
16136         (infer_range_manager::maybe_adjust_range): Same.
16137         (infer_range_manager::add_range): Same.
16138         * gimple-range-infer.h: Rename obstack_vrange_allocator to
16139         vrange_allocator.
16140         * tree-core.h (struct irange_storage_slot): Remove.
16141         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
16142         range_info a pointer to vrange_storage.
16143         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
16144         (range_info_alloc): Same.
16145         (range_info_free): Same.
16146         (range_info_get_range): Same.
16147         (range_info_set_range): Same.
16148         (get_nonzero_bits): Same.
16149         * value-query.cc (get_ssa_name_range_info): Same.
16150         * value-range-storage.cc (class vrange_internal_alloc): New.
16151         (class vrange_obstack_alloc): New.
16152         (class vrange_ggc_alloc): New.
16153         (vrange_allocator::vrange_allocator): New.
16154         (vrange_allocator::~vrange_allocator): New.
16155         (vrange_storage::alloc_slot): New.
16156         (vrange_allocator::alloc): New.
16157         (vrange_allocator::free): New.
16158         (vrange_allocator::clone): New.
16159         (vrange_allocator::clone_varying): New.
16160         (vrange_allocator::clone_undefined): New.
16161         (vrange_storage::alloc): New.
16162         (vrange_storage::set_vrange): Remove slot argument.
16163         (vrange_storage::get_vrange): Same.
16164         (vrange_storage::fits_p): Same.
16165         (vrange_storage::equal_p): New.
16166         (irange_storage::write_lengths_address): New.
16167         (irange_storage::lengths_address): New.
16168         (irange_storage_slot::alloc_slot): Remove.
16169         (irange_storage::alloc): New.
16170         (irange_storage_slot::irange_storage_slot): Remove.
16171         (irange_storage::irange_storage): New.
16172         (write_wide_int): New.
16173         (irange_storage_slot::set_irange): Remove.
16174         (irange_storage::set_irange): New.
16175         (read_wide_int): New.
16176         (irange_storage_slot::get_irange): Remove.
16177         (irange_storage::get_irange): New.
16178         (irange_storage_slot::size): Remove.
16179         (irange_storage::equal_p): New.
16180         (irange_storage_slot::num_wide_ints_needed): Remove.
16181         (irange_storage::size): New.
16182         (irange_storage_slot::fits_p): Remove.
16183         (irange_storage::fits_p): New.
16184         (irange_storage_slot::dump): Remove.
16185         (irange_storage::dump): New.
16186         (frange_storage_slot::alloc_slot): Remove.
16187         (frange_storage::alloc): New.
16188         (frange_storage_slot::set_frange): Remove.
16189         (frange_storage::set_frange): New.
16190         (frange_storage_slot::get_frange): Remove.
16191         (frange_storage::get_frange): New.
16192         (frange_storage_slot::fits_p): Remove.
16193         (frange_storage::equal_p): New.
16194         (frange_storage::fits_p): New.
16195         (ggc_vrange_allocator): New.
16196         (ggc_alloc_vrange_storage): New.
16197         * value-range-storage.h (class vrange_storage): Rewrite.
16198         (class irange_storage): Rewrite.
16199         (class frange_storage): Rewrite.
16200         (class obstack_vrange_allocator): Remove.
16201         (class ggc_vrange_allocator): Remove.
16202         (vrange_allocator::alloc_vrange): Remove.
16203         (vrange_allocator::alloc_irange): Remove.
16204         (vrange_allocator::alloc_frange): Remove.
16205         (ggc_alloc_vrange_storage): New.
16206         * value-range.h (class irange): Rename vrange_allocator to
16207         irange_storage.
16208         (class frange): Same.
16210 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
16212         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
16213         inc to avoid clobbering the carry flag.
16215 2023-04-30  Andrew Pinski  <apinski@marvell.com>
16217         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
16218         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
16220 2023-04-30  Andrew Pinski  <apinski@marvell.com>
16222         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
16223         Allow some builtin/internal function calls which
16224         are known not to trap/throw.
16225         (phiopt_worker::match_simplify_replacement):
16226         Use name instead of getting the lhs again.
16228 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
16230         * configure: Regenerate.
16231         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
16233 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
16235         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
16236         emit_insn_if_valid_for_reload.
16237         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
16238         to be recognized, also try emitting a parallel that clobbers
16239         TARGET_FLAGS_REGNUM, as applicable.
16241 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
16243         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
16244         to a define_insn.
16245         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
16246         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
16248 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
16250         * config/stormy16/stormy16.md (any_lshift): New code iterator.
16251         (any_or_plus): Likewise.
16252         (any_rotate): Likewise.
16253         (*<any_lshift>_and_internal): New define_insn_and_split to
16254         recognize a logical shift followed by an AND, and split it
16255         again after reload.
16256         (*swpn): New define_insn matching xstormy16's swpn.
16257         (*swpn_zext): New define_insn recognizing swpn followed by
16258         zero_extendqihi2, i.e. with the high byte set to zero.
16259         (*swpn_sext): Likewise, for swpn followed by cbw.
16260         (*swpn_sext_2): Likewise, for an alternate RTL form.
16261         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
16262         sequence is split in the correct place to recognize the *swpn_zext
16263         followed by any_or_plus (ior, xor or plus) instruction.
16265 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
16267         PR target/105525
16268         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
16269         (lm32-*-uclinux*): Likewise.
16271 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
16273         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
16274         for riscv_use_save_libcall.
16275         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
16276         (riscv_compute_frame_info): restructure to decouple stack allocation
16277         for rv32e w/o save-restore.
16279 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
16281         * doc/install.texi: Fix documentation typo
16283 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
16285         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
16286         (u): Add div/udiv cases.
16287         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
16288         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
16289         divmod expansion.
16290         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
16291         (thead_c906_tune_info): Likewise.
16292         (optimize_size_tune_info): Likewise.
16293         (riscv_use_divmod_expander): New function.
16294         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
16296 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
16298         * config/riscv/bitmanip.md: Added clmulr instruction.
16299         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
16300         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
16301         (type): Add clmul
16302         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
16303         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
16304         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
16305         functions to riscv-cmo.def.
16306         * config/riscv/generic.md: Add clmul to list of instructions
16307         using the generic_imul reservation.
16309 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
16311         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
16313 2023-04-28  Andrew Pinski  <apinski@marvell.com>
16315         PR tree-optimization/100958
16316         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
16317         (pass_phiopt::execute): Don't call two_value_replacement.
16318         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
16319         handle what two_value_replacement did.
16321 2023-04-28  Andrew Pinski  <apinski@marvell.com>
16323         * match.pd: Add patterns for
16324         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
16326 2023-04-28  Andrew Pinski  <apinski@marvell.com>
16328         * match.pd: Factor out the deciding the min/max from
16329         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
16330         pattern to ...
16331         * fold-const.cc (minmax_from_comparison): this new function.
16332         * fold-const.h (minmax_from_comparison): New prototype.
16334 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
16336         PR rtl-optimization/109476
16337         * lower-subreg.cc: Include explow.h for force_reg.
16338         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
16339         If decomposing a suitable LSHIFTRT and we're not splitting
16340         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
16341         instead of setting a high part SUBREG to zero, which helps combine.
16342         (decompose_multiword_subregs): Update call to resolve_shift_zext.
16344 2023-04-28  Richard Biener  <rguenther@suse.de>
16346         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
16347         consider scatters.
16348         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
16349         gather-scatter info and cost emulated scatters accordingly.
16350         (get_load_store_type): Support emulated scatters.
16351         (vectorizable_store): Likewise.  Emulate them by extracting
16352         scalar offsets and data, doing scalar stores.
16354 2023-04-28  Richard Biener  <rguenther@suse.de>
16356         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
16357         Tame down element extracts and scalar loads for gather/scatter
16358         similar to elementwise strided accesses.
16360 2023-04-28  Pan Li  <pan2.li@intel.com>
16361             kito-cheng  <kito.cheng@sifive.com>
16363         * config/riscv/vector.md: Add new define split to perform
16364         the simplification.
16366 2023-04-28  Richard Biener  <rguenther@suse.de>
16368         PR ipa/109652
16369         * ipa-param-manipulation.cc
16370         (ipa_param_body_adjustments::modify_expression): Allow
16371         conversion of a register to a non-register type.  Elide
16372         conversions inside BIT_FIELD_REFs.
16374 2023-04-28  Richard Biener  <rguenther@suse.de>
16376         PR tree-optimization/109644
16377         * tree-cfg.cc (verify_types_in_gimple_reference): Check
16378         register constraints on the outermost VIEW_CONVERT_EXPR
16379         only.  Do not allow register or invariant bases on
16380         multi-level or possibly variable index handled components.
16382 2023-04-28  Richard Biener  <rguenther@suse.de>
16384         * gimplify.cc (gimplify_compound_lval): When there's a
16385         non-register type produced by one of the handled component
16386         operations make sure we get a non-register base.
16388 2023-04-28  Richard Biener  <rguenther@suse.de>
16390         PR tree-optimization/108752
16391         * tree-vect-generic.cc (build_replicated_const): Rename
16392         to build_replicated_int_cst and move to tree.{h,cc}.
16393         (do_plus_minus): Adjust.
16394         (do_negate): Likewise.
16395         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
16396         arithmetic vector operations in lowered form.
16397         * tree.h (build_replicated_int_cst): Declare.
16398         * tree.cc (build_replicated_int_cst): Moved from
16399         tree-vect-generic.cc build_replicated_const.
16401 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16403         PR target/99195
16404         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
16405         (aarch64_rbit<mode><vczle><vczbe>): ... This.
16406         (neg<mode>2): Rename to...
16407         (neg<mode>2<vczle><vczbe>): ... This.
16408         (abs<mode>2): Rename to...
16409         (abs<mode>2<vczle><vczbe>): ... This.
16410         (aarch64_abs<mode>): Rename to...
16411         (aarch64_abs<mode><vczle><vczbe>): ... This.
16412         (one_cmpl<mode>2): Rename to...
16413         (one_cmpl<mode>2<vczle><vczbe>): ... This.
16414         (clrsb<mode>2): Rename to...
16415         (clrsb<mode>2<vczle><vczbe>): ... This.
16416         (clz<mode>2): Rename to...
16417         (clz<mode>2<vczle><vczbe>): ... This.
16418         (popcount<mode>2): Rename to...
16419         (popcount<mode>2<vczle><vczbe>): ... This.
16421 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
16423         * gimple-range-op.cc (class cfn_sqrt): New type.
16424         (op_cfn_sqrt): New variable.
16425         (gimple_range_op_handler::maybe_builtin_call): Handle
16426         CASE_CFN_SQRT{,_FN}.
16428 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
16429             Jakub Jelinek  <jakub@redhat.com>
16431         * value-range.h (frange_nextafter): Declare.
16432         * gimple-range-op.cc (class cfn_sincos): New.
16433         (op_cfn_sin, op_cfn_cos): New variables.
16434         (gimple_range_op_handler::maybe_builtin_call): Handle
16435         CASE_CFN_{SIN,COS}{,_FN}.
16437 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
16439         * target.def (libm_function_max_error): New target hook.
16440         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
16441         * doc/tm.texi: Regenerated.
16442         * targhooks.h (default_libm_function_max_error,
16443         glibc_linux_libm_function_max_error): Declare.
16444         * targhooks.cc: Include case-cfn-macros.h.
16445         (default_libm_function_max_error,
16446         glibc_linux_libm_function_max_error): New functions.
16447         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16448         * config/linux-protos.h (linux_libm_function_max_error): Declare.
16449         * config/linux.cc: Include target.h and targhooks.h.
16450         (linux_libm_function_max_error): New function.
16451         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
16452         (arc_libm_function_max_error): New function.
16453         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16454         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
16455         (ix86_libm_function_max_error): New function.
16456         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16457         * config/rs6000/rs6000-protos.h
16458         (rs6000_linux_libm_function_max_error): Declare.
16459         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
16460         and case-cfn-macros.h.
16461         (rs6000_linux_libm_function_max_error): New function.
16462         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16463         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16464         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
16465         (or1k_libm_function_max_error): New function.
16466         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16468 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
16470         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
16471         Move detach value calls...
16472         (pass_harden_conditional_branches::execute): ... here.
16473         (pass_harden_compares::execute): Detach values before
16474         compares.
16476 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
16478         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
16479         (cml<addsub_as><mode>4): Likewise.
16480         (vec_addsub<mode>3): Likewise.
16481         (cadd<rot><mode>3): Likewise.
16482         (vec_fmaddsub<mode>4): Likewise.
16483         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
16485 2023-04-27  Andrew Pinski  <apinski@marvell.com>
16487         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
16488         up to 2 min/max expressions in the sequence/match code.
16490 2023-04-27  Andrew Pinski  <apinski@marvell.com>
16492         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
16493         COMPARISON.
16494         * tree-eh.cc (operation_could_trap_helper_p): Treate
16495         MIN_EXPR/MAX_EXPR similar as other comparisons.
16497 2023-04-27  Andrew Pinski  <apinski@marvell.com>
16499         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
16500         prototype.
16501         (cond_if_else_store_replacement): Likewise.
16502         (get_non_trapping): Likewise.
16503         (store_elim_worker): Move into ...
16504         (pass_cselim::execute): This.
16506 2023-04-27  Andrew Pinski  <apinski@marvell.com>
16508         * tree-ssa-phiopt.cc (two_value_replacement): Remove
16509         prototype.
16510         (match_simplify_replacement): Likewise.
16511         (factor_out_conditional_conversion): Likewise.
16512         (value_replacement): Likewise.
16513         (minmax_replacement): Likewise.
16514         (spaceship_replacement): Likewise.
16515         (cond_removal_in_builtin_zero_pattern): Likewise.
16516         (hoist_adjacent_loads): Likewise.
16517         (tree_ssa_phiopt_worker): Move into ...
16518         (pass_phiopt::execute): this.
16520 2023-04-27  Andrew Pinski  <apinski@marvell.com>
16522         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
16523         do_store_elim argument and split that part out to ...
16524         (store_elim_worker): This new function.
16525         (pass_cselim::execute): Call store_elim_worker.
16526         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
16528 2023-04-27  Jan Hubicka  <jh@suse.cz>
16530         * cfgloopmanip.h (unloop_loops): Export.
16531         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
16532         that no longer loop.
16533         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
16534         vectors of loops to unloop.
16535         (canonicalize_induction_variables): Free vectors here.
16536         (tree_unroll_loops_completely): Free vectors here.
16538 2023-04-27  Richard Biener  <rguenther@suse.de>
16540         PR tree-optimization/109170
16541         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
16542         Handle __builtin_expect and similar via cfn_pass_through_arg1
16543         and inspecting the calls fnspec.
16544         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
16545         and BUILT_IN_EXPECT_WITH_PROBABILITY.
16547 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
16549         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
16551 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
16553         PR tree-optimization/109639
16554         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
16555         (propagate_vr_across_jump_function): Same.
16556         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
16557         * ipa-prop.h (ipa_range_set_and_normalize): New.
16558         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
16560 2023-04-27  Richard Biener  <rguenther@suse.de>
16562         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
16563         create a CTOR operand in the result when simplifying GIMPLE.
16565 2023-04-27  Richard Biener  <rguenther@suse.de>
16567         * gimplify.cc (gimplify_compound_lval): When the base
16568         gimplified to a register make sure to split up chains
16569         of operations.
16571 2023-04-27  Richard Biener  <rguenther@suse.de>
16573         PR ipa/109607
16574         * ipa-param-manipulation.h
16575         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
16576         argument.
16577         * ipa-param-manipulation.cc
16578         (ipa_param_body_adjustments::modify_expression): Likewise.
16579         When we need a conversion and the replacement is a register
16580         split the conversion out.
16581         (ipa_param_body_adjustments::modify_assignment): Pass
16582         extra_stmts to RHS modify_expression.
16584 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
16586         * doc/extend.texi (Zero Length): Describe example.
16588 2023-04-27  Richard Biener  <rguenther@suse.de>
16590         PR tree-optimization/109594
16591         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
16592         what we rewrite to a register based on the above.
16594 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
16596         * config/riscv/riscv.cc: Fix whitespace.
16597         * config/riscv/sync.md: Fix whitespace.
16599 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
16601         PR tree-optimization/108697
16602         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
16603         not clear the vector on an out of range query.
16604         (ssa_cache::dump): Use dump_range_query instead of get_range.
16605         (ssa_cache::dump_range_query): New.
16606         (ssa_lazy_cache::dump_range_query): New.
16607         (ssa_lazy_cache::set_range): New.
16608         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
16609         (class ssa_lazy_cache): New.
16610         (ssa_lazy_cache::ssa_lazy_cache): New.
16611         (ssa_lazy_cache::~ssa_lazy_cache): New.
16612         (ssa_lazy_cache::get_range): New.
16613         (ssa_lazy_cache::clear_range): New.
16614         (ssa_lazy_cache::clear): New.
16615         (ssa_lazy_cache::dump): New.
16616         * gimple-range-path.cc (path_range_query::path_range_query): Do
16617         not allocate a ssa_cache object nor has_cache bitmap.
16618         (path_range_query::~path_range_query): Do not free objects.
16619         (path_range_query::clear_cache): Remove.
16620         (path_range_query::get_cache): Adjust.
16621         (path_range_query::set_cache): Remove.
16622         (path_range_query::dump): Don't call through a pointer.
16623         (path_range_query::internal_range_of_expr): Set cache directly.
16624         (path_range_query::reset_path): Clear cache directly.
16625         (path_range_query::ssa_range_in_phi): Fold with globals only.
16626         (path_range_query::compute_ranges_in_phis): Simply set range.
16627         (path_range_query::compute_ranges_in_block): Call cache directly.
16628         * gimple-range-path.h (class path_range_query): Replace bitmap
16629         and cache pointer with lazy cache object.
16630         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
16632 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
16634         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
16635         (ssa_cache::~ssa_cache): Rename.
16636         (ssa_cache::has_range): New.
16637         (ssa_cache::get_range): Rename.
16638         (ssa_cache::set_range): Rename.
16639         (ssa_cache::clear_range): Rename.
16640         (ssa_cache::clear): Rename.
16641         (ssa_cache::dump): Rename and use get_range.
16642         (ranger_cache::get_global_range): Use get_range and set_range.
16643         (ranger_cache::range_of_def): Use get_range.
16644         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
16645         (class ranger_cache): Use ssa_cache.
16646         * gimple-range-path.cc (path_range_query::path_range_query): Use
16647         ssa_cache.
16648         (path_range_query::get_cache): Use get_range.
16649         (path_range_query::set_cache): Use set_range.
16650         * gimple-range-path.h (class path_range_query): Use ssa_cache.
16651         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
16652         (assume_query::range_of_expr): Use get_range.
16653         (assume_query::assume_query): Use set_range.
16654         (assume_query::calculate_op): Use get_range and set_range.
16655         * gimple-range.h (class assume_query): Use ssa_cache.
16657 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
16659         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
16660         and local to optionally zero memory.
16661         (br_vector::grow): Only zero memory if flag is set.
16662         (class sbr_lazy_vector): New.
16663         (sbr_lazy_vector::sbr_lazy_vector): New.
16664         (sbr_lazy_vector::set_bb_range): New.
16665         (sbr_lazy_vector::get_bb_range): New.
16666         (sbr_lazy_vector::bb_range_p): New.
16667         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
16668         * gimple-range-gori.cc (gori_map::calculate_gori): Use
16669         param_vrp_switch_limit.
16670         (gori_compute::gori_compute): Use param_vrp_switch_limit.
16671         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
16672         (vrp_switch_limit): Rename from evrp_switch_limit.
16673         (vrp_vector_threshold): New.
16675 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
16677         * value-relation.cc (dom_oracle::query_relation): Check early for lack
16678         of any relation.
16679         * value-relation.h (equiv_oracle::has_equiv_p): New.
16681 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
16683         PR tree-optimization/109417
16684         * gimple-range-gori.cc (range_def_chain::register_dependency):
16685         Save the ssa version number, not the pointer.
16686         (gori_compute::may_recompute_p): No need to check if a dependency
16687         is in the free list.
16688         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
16689         fields to be unsigned int instead of trees.
16690         (ange_def_chain::depend1): Adjust.
16691         (ange_def_chain::depend2): Adjust.
16692         * gimple-range.h: Include "ssa.h" to inline ssa_name().
16694 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
16696         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
16697         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
16698         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
16700 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
16702         PR target/104338
16703         * config/riscv/riscv-protos.h: Add helper function stubs.
16704         * config/riscv/riscv.cc: Add helper functions for subword masking.
16705         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
16706         -mno-inline-atomics.
16707         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
16708         fetch_and_nand, CAS, and exchange ops.
16709         * doc/invoke.texi: Add blurb regarding new command-line flags
16710         -minline-atomics and -mno-inline-atomics.
16712 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16714         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
16715         Reimplement using standard RTL codes instead of unspec.
16716         (aarch64_rshrn2<mode>_insn_be): Likewise.
16717         (aarch64_rshrn2<mode>): Adjust for the above.
16718         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
16720 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16722         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
16723         with standard RTL codes instead of an UNSPEC.
16724         (aarch64_rshrn<mode>_insn_be): Likewise.
16725         (aarch64_rshrn<mode>): Adjust for the above.
16726         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
16728 2023-04-26  Pan Li  <pan2.li@intel.com>
16729             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16731         * config/riscv/riscv.cc (riscv_classify_address): Allow
16732         const0_rtx for the RVV load/store.
16734 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16736         * range-op.cc (range_op_cast_tests): Remove legacy support.
16737         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
16738         * value-range.cc (irange::operator=): Same.
16739         (get_legacy_range): Same.
16740         (irange::copy_legacy_to_multi_range): Delete.
16741         (irange::copy_to_legacy): Delete.
16742         (irange::irange_set_anti_range): Delete.
16743         (irange::set): Remove legacy support.
16744         (irange::verify_range): Same.
16745         (irange::legacy_lower_bound): Delete.
16746         (irange::legacy_upper_bound): Delete.
16747         (irange::legacy_equal_p): Delete.
16748         (irange::operator==): Remove legacy support.
16749         (irange::singleton_p): Same.
16750         (irange::value_inside_range): Same.
16751         (irange::contains_p): Same.
16752         (intersect_ranges): Delete.
16753         (irange::legacy_intersect): Delete.
16754         (union_ranges): Delete.
16755         (irange::legacy_union): Delete.
16756         (irange::legacy_verbose_union_): Delete.
16757         (irange::legacy_verbose_intersect): Delete.
16758         (irange::irange_union): Remove legacy support.
16759         (irange::irange_intersect): Same.
16760         (irange::intersect): Same.
16761         (irange::invert): Same.
16762         (ranges_from_anti_range): Delete.
16763         (gt_pch_nx): Adjust for legacy removal.
16764         (gt_ggc_mx): Same.
16765         (range_tests_legacy): Delete.
16766         (range_tests_misc): Adjust for legacy removal.
16767         (range_tests): Same.
16768         * value-range.h (class irange): Same.
16769         (irange::legacy_mode_p): Delete.
16770         (ranges_from_anti_range): Delete.
16771         (irange::nonzero_p): Adjust for legacy removal.
16772         (irange::lower_bound): Same.
16773         (irange::upper_bound): Same.
16774         (irange::union_): Same.
16775         (irange::intersect): Same.
16776         (irange::set_nonzero): Same.
16777         (irange::set_zero): Same.
16778         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
16780 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16782         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
16783         of range_has_numeric_bounds_p with irange API.
16784         (range_has_numeric_bounds_p): Delete.
16785         * value-range.h (range_has_numeric_bounds_p): Delete.
16787 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16789         * tree-data-ref.cc (compute_distributive_range): Replace uses of
16790         range_int_cst_p with irange API.
16791         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
16792         * tree-vrp.h (range_int_cst_p): Delete.
16793         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
16794         range_int_cst_p with irange API.
16795         (vr_set_zero_nonzero_bits): Same.
16796         (range_fits_type_p): Same.
16797         (simplify_using_ranges::simplify_casted_cond): Same.
16798         * tree-vrp.cc (range_int_cst_p): Remove.
16800 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16802         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
16804 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16806         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
16807         API uses to new API.
16808         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
16809         * internal-fn.cc (get_min_precision): Same.
16810         * match.pd: Same.
16811         * tree-affine.cc (expr_to_aff_combination): Same.
16812         * tree-data-ref.cc (dr_step_indicator): Same.
16813         * tree-dfa.cc (get_ref_base_and_extent): Same.
16814         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
16815         * tree-ssa-phiopt.cc (two_value_replacement): Same.
16816         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
16817         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
16818         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
16819         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
16820         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
16821         * tree.cc (get_range_pos_neg): Same.
16823 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16825         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
16826         vrange::dump instead of ad-hoc dumper.
16827         * tree-ssa-strlen.cc (dump_strlen_info): Same.
16828         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
16829         dump_generic_node.
16831 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16833         * range-op.cc (operator_cast::op1_range): Use
16834         create_possibly_reversed_range.
16835         (operator_bitwise_and::simple_op1_range_solver): Same.
16836         * value-range.cc (swap_out_of_order_endpoints): Delete.
16837         (irange::set): Remove call to swap_out_of_order_endpoints.
16839 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16841         * builtins.cc (determine_block_size): Convert use of legacy API to
16842         get_legacy_range.
16843         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
16844         (array_bounds_checker::check_array_ref): Same.
16845         * gimple-ssa-warn-restrict.cc
16846         (builtin_memref::extend_offset_range): Same.
16847         * ipa-cp.cc (ipcp_store_vr_results): Same.
16848         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
16849         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
16850         (ipa_write_jump_function): Same.
16851         * pointer-query.cc (get_size_range): Same.
16852         * tree-data-ref.cc (split_constant_offset): Same.
16853         * tree-ssa-strlen.cc (get_range): Same.
16854         (maybe_diag_stxncpy_trunc): Same.
16855         (strlen_pass::get_len_or_size): Same.
16856         (strlen_pass::count_nonzero_bytes_addr): Same.
16857         * tree-vect-patterns.cc (vect_get_range_info): Same.
16858         * value-range.cc (irange::maybe_anti_range): Remove.
16859         (get_legacy_range): New.
16860         (irange::copy_to_legacy): Use get_legacy_range.
16861         (ranges_from_anti_range): Same.
16862         * value-range.h (class irange): Remove maybe_anti_range.
16863         (get_legacy_range): New.
16864         * vr-values.cc (check_for_binary_op_overflow): Convert use of
16865         legacy API to get_legacy_range.
16866         (compare_ranges): Same.
16867         (compare_range_with_value): Same.
16868         (bounds_of_var_in_loop): Same.
16869         (find_case_label_ranges): Same.
16870         (simplify_using_ranges::simplify_switch_using_ranges): Same.
16872 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16874         * value-range-pretty-print.cc (vrange_printer::visit): Remove
16875         constant_p use.
16876         * value-range.cc (irange::constant_p): Remove.
16877         (irange::get_nonzero_bits_from_range): Remove constant_p use.
16878         * value-range.h (class irange): Remove constant_p.
16879         (irange::num_pairs): Remove constant_p use.
16881 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16883         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
16884         symbolics support.
16885         (irange::set): Same.
16886         (irange::legacy_lower_bound): Same.
16887         (irange::legacy_upper_bound): Same.
16888         (irange::contains_p): Same.
16889         (range_tests_legacy): Same.
16890         (irange::normalize_addresses): Remove.
16891         (irange::normalize_symbolics): Remove.
16892         (irange::symbolic_p): Remove.
16893         * value-range.h (class irange): Remove symbolic_p,
16894         normalize_symbolics, and normalize_addresses.
16895         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
16896         Remove symbolics support.
16898 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16900         * value-range.cc (irange::may_contain_p): Remove.
16901         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
16902         usage with contains_p.
16903         * vr-values.cc (compare_range_with_value): Same.
16905 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16907         * tree-vrp.cc (supported_types_p): Remove.
16908         (defined_ranges_p): Remove.
16909         (range_fold_binary_expr): Remove.
16910         (range_fold_unary_expr): Remove.
16911         * tree-vrp.h (range_fold_unary_expr): Remove.
16912         (range_fold_binary_expr): Remove.
16914 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16916         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
16917         (ipa_value_range_from_jfunc): Same.
16918         (propagate_vr_across_jump_function): Same.
16919         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
16920         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
16921         * vr-values.cc (bounds_of_var_in_loop): Same.
16923 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16925         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
16926         Add irange argument.
16927         (check_out_of_bounds_and_warn): Remove check for vr.
16928         (array_bounds_checker::check_array_ref): Remove pointer qualifier
16929         for vr and adjust accordingly.
16930         * gimple-array-bounds.h (get_value_range): Add irange argument.
16931         * value-query.cc (class equiv_allocator): Delete.
16932         (range_query::get_value_range): Delete.
16933         (range_query::range_query): Remove allocator access.
16934         (range_query::~range_query): Same.
16935         * value-query.h (get_value_range): Delete.
16936         * vr-values.cc
16937         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
16938         call to get_value_range.
16939         (check_for_binary_op_overflow): Same.
16940         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
16941         (simplify_using_ranges::simplify_abs_using_ranges): Same.
16942         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
16943         (simplify_using_ranges::simplify_casted_cond): Same.
16944         (simplify_using_ranges::simplify_switch_using_ranges): Same.
16945         (simplify_using_ranges::two_valued_val_range_p): Same.
16947 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16949         * vr-values.cc
16950         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
16951         Rename to...
16952         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
16953         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
16954         (simplify_using_ranges::legacy_fold_cond): ...this.
16955         (simplify_using_ranges::fold_cond): Rename
16956         vrp_evaluate_conditional_warnv_with_ops to
16957         legacy_fold_cond_overflow.
16958         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
16959         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
16960         legacy_fold_cond_overflow respectively.
16962 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
16964         * vr-values.cc (get_vr_for_comparison): Remove.
16965         (compare_name_with_value): Same.
16966         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
16967         compare_name_with_value.
16968         * vr-values.h: Remove compare_name_with_value.
16969         Remove get_vr_for_comparison.
16971 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
16973         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
16974         (bswapsi2): New define_insn.
16975         (swaphi): New define_insn to exchange two registers (swpw).
16976         (define_peephole2): Recognize exchange of registers as swaphi.
16978 2023-04-26  Richard Biener  <rguenther@suse.de>
16980         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
16981         Avoid last_stmt.
16982         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
16983         * predict.cc (apply_return_prediction): Likewise.
16984         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
16985         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
16986         (make_edges_bb): Likewise.
16987         (make_cond_expr_edges): Likewise.
16988         (end_recording_case_labels): Likewise.
16989         (make_gimple_asm_edges): Likewise.
16990         (cleanup_dead_labels): Likewise.
16991         (group_case_labels): Likewise.
16992         (gimple_can_merge_blocks_p): Likewise.
16993         (gimple_merge_blocks): Likewise.
16994         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
16995         (gimple_duplicate_sese_tail): Avoid last_stmt.
16996         (find_loop_dist_alias): Likewise.
16997         (gimple_block_ends_with_condjump_p): Likewise.
16998         (gimple_purge_dead_eh_edges): Likewise.
16999         (gimple_purge_dead_abnormal_call_edges): Likewise.
17000         (pass_warn_function_return::execute): Likewise.
17001         (execute_fixup_cfg): Likewise.
17002         * tree-eh.cc (redirect_eh_edge_1): Likewise.
17003         (pass_lower_resx::execute): Likewise.
17004         (pass_lower_eh_dispatch::execute): Likewise.
17005         (cleanup_empty_eh): Likewise.
17006         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
17007         (predicate_bbs): Likewise.
17008         (ifcvt_split_critical_edges): Likewise.
17009         * tree-loop-distribution.cc (create_edge_for_control_dependence):
17010         Likewise.
17011         (loop_distribution::transform_reduction_loop): Likewise.
17012         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
17013         (try_transform_to_exit_first_loop_alt): Likewise.
17014         (transform_to_exit_first_loop): Likewise.
17015         (create_parallel_loop): Likewise.
17016         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
17017         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
17018         (eliminate_unnecessary_stmts): Likewise.
17019         * tree-ssa-dom.cc
17020         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
17021         Likewise.
17022         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
17023         (pass_tree_ifcombine::execute): Likewise.
17024         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
17025         (should_duplicate_loop_header_p): Likewise.
17026         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
17027         (tree_estimate_loop_size): Likewise.
17028         (try_unroll_loop_completely): Likewise.
17029         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
17030         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
17031         (canonicalize_loop_ivs): Likewise.
17032         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
17033         (bound_difference): Likewise.
17034         (number_of_iterations_popcount): Likewise.
17035         (number_of_iterations_cltz): Likewise.
17036         (number_of_iterations_cltz_complement): Likewise.
17037         (simplify_using_initial_conditions): Likewise.
17038         (number_of_iterations_exit_assumptions): Likewise.
17039         (loop_niter_by_eval): Likewise.
17040         (estimate_numbers_of_iterations): Likewise.
17042 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17044         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
17046 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
17048         PR target/108758
17049         * config/rs6000/rs6000-builtins.def
17050         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
17051         __builtin_vsx_scalar_cmp_exp_qp_lt,
17052         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
17053         to power9-vector.
17055 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
17057         PR target/109069
17058         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
17059         easy_vector_constant with const_vector_each_byte_same, add
17060         handlings in preparation for !easy_vector_constant, and update
17061         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
17062         * config/rs6000/predicates.md (const_vector_each_byte_same): New
17063         predicate.
17065 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17067         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
17068         (*pred_ltge<mode>_merge_tie_mask): Ditto.
17069         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
17070         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
17071         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
17072         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
17073         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
17075 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17077         * config/riscv/vector.md: Fix redundant vmv1r.v.
17079 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17081         * config/riscv/vector.md: Fix RA constraint.
17083 2023-04-26  Pan Li  <pan2.li@intel.com>
17085         PR target/109272
17086         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
17087         check for vn_reference equal.
17089 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17091         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
17092         auto-vectorization preference.
17093         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
17094         auto-vectorization.
17095         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
17097 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
17099         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
17100         and bclridisi_nottwobits patterns.
17101         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
17102         predicate to avoid splitting arith constants.
17103         (const_nottwobits_not_arith_operand): New predicate.
17105 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
17107         * recog.cc (peep2_attempt, peep2_update_life): Correct
17108         head-comment description of parameter match_len.
17110 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
17112         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
17113         riscv_split_symbol() drop in_splitter arg.
17114         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
17115         riscv_split_symbol() drop in_splitter arg.
17116         riscv_force_temporary() drop in_splitter arg.
17117         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
17118         riscv_split_symbol() drop in_splitter arg.
17120 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
17122         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
17123         superfluous debug temporaries for single GIMPLE assignments.
17125 2023-04-25  Richard Biener  <rguenther@suse.de>
17127         PR tree-optimization/109609
17128         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
17129         Clarify semantics.
17130         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
17131         the size given by arg_max_access_size_given_by_arg_p as
17132         maximum, not exact, size.
17134 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17136         PR target/99195
17137         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
17138         (orn<mode>3<vczle><vczbe>): ... This.
17139         (bic<mode>3): Rename to...
17140         (bic<mode>3<vczle><vczbe>): ... This.
17141         (<su><maxmin><mode>3): Rename to...
17142         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
17144 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17146         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
17147         * config/aarch64/iterators.md (VQDIV): New mode iterator.
17148         (vnx2di): New mode attribute.
17150 2023-04-25  Richard Biener  <rguenther@suse.de>
17152         PR rtl-optimization/109585
17153         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
17155 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
17157         PR target/109566
17158         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
17159         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
17160         is larger than signed int maximum.
17162 2023-04-25  Martin Liska  <mliska@suse.cz>
17164         * doc/gcov.texi: Document the new "calls" field and document
17165         the API bump. Mention also "block_ids" for lines.
17166         * gcov.cc (output_intermediate_json_line): Output info about
17167         calls and extend branches as well.
17168         (generate_results): Bump version to 2.
17169         (output_line_details): Use block ID instead of a non-sensual
17170         index.
17172 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
17174         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
17175         length attribute for the first (memory operand) alternative.
17177 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
17179         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
17180         * config/aarch64/constraints.md: Make "Umn" relaxed memory
17181         constraint.
17182         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
17184 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
17186         * value-range.cc (frange::set): Adjust constructor.
17187         * value-range.h (nan_state::nan_state): Replace default
17188         constructor with one taking an argument.
17190 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
17192         * ipa-cp.cc (ipa_range_contains_p): New.
17193         (decide_whether_version_node): Use it.
17195 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
17197         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
17198         simplify two successive VEC_PERM_EXPRs with same VLA mask,
17199         where mask chooses elements in reverse order.
17201 2023-04-24  Andrew Pinski  <apinski@marvell.com>
17203         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
17204         and support diamond shaped basic block form.
17205         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
17207 2023-04-24  Andrew Pinski  <apinski@marvell.com>
17209         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
17210         Instead of calling last_and_only_stmt, look for the last statement
17211         manually.
17213 2023-04-24  Andrew Pinski  <apinski@marvell.com>
17215         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
17216         New function.
17217         (match_simplify_replacement): Call
17218         empty_bb_or_one_feeding_into_p instead of doing it inline.
17220 2023-04-24  Andrew Pinski  <apinski@marvell.com>
17222         PR tree-optimization/68894
17223         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
17224         continue for the do_hoist_loads diamond case.
17226 2023-04-24  Andrew Pinski  <apinski@marvell.com>
17228         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
17229         code for better code readability.
17231 2023-04-24  Andrew Pinski  <apinski@marvell.com>
17233         PR tree-optimization/109604
17234         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
17235         diamond form check from ...
17236         (minmax_replacement): Here.
17238 2023-04-24  Patrick Palka  <ppalka@redhat.com>
17240         * tree.cc (strip_array_types): Don't define here.
17241         (is_typedef_decl): Don't define here.
17242         (typedef_variant_p): Don't define here.
17243         * tree.h (strip_array_types): Define here.
17244         (is_typedef_decl): Define here.
17245         (typedef_variant_p): Define here.
17247 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
17249         * doc/generic.texi (OpenMP): Add != to allowed
17250         conditions and state that vars can be unsigned.
17251         * tree.def (OMP_FOR): Likewise.
17253 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17255         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
17257 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
17259         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
17260         Remove explicit Solaris 11 references.
17261         Markup fixes.
17262         (Options specification, --with-gnu-as): as and gas always differ
17263         on Solaris.
17264         Remove /usr/ccs/bin reference.
17265         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
17266         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
17267         (*-*-solaris2*): ... here.
17268         Update bundled GCC versions.
17269         Don't refer to pre-built binaries.
17270         Remove /bin/sh warning.
17271         Update assembler, linker recommendations.
17272         Document GNAT bootstrap compiler.
17273         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
17274         (sparc64-*-solaris2*): Move content...
17275         (sparcv9-*-solaris2*): ...here.
17276         Add GDC for 64-bit bootstrap compilers.
17278 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17280         PR target/109406
17281         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
17282         case.
17283         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
17284         pattern.
17286 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17288         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
17289         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
17290         (aarch64_<su>abal2<mode>): New define_expand.
17291         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
17292         (aarch64_rtx_costs): Handle ABD rtxes.
17293         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
17294         * config/aarch64/iterators.md (ABAL2): Delete.
17295         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
17297 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17299         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
17300         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
17301         (<sur>sadv16qi): Rename to...
17302         (<su>sadv16qi): ... This.  Adjust for the above.
17303         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
17304         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
17305         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
17306         * config/aarch64/iterators.md (ABAL): Delete.
17307         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
17309 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17311         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
17312         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
17313         (aarch64_<su>abdl2<mode>): New define_expand.
17314         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
17315         * config/aarch64/iterators.md (ABDL2): Delete.
17316         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
17318 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17320         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
17321         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
17322         unspec.
17323         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
17324         * config/aarch64/iterators.md (ABDL): Delete.
17325         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
17327 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17329         * config/aarch64/aarch64-simd.md
17330         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
17332 2023-04-24  Richard Biener  <rguenther@suse.de>
17334         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
17335         last_stmt.
17336         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
17337         Likewise.
17338         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
17339         (set_switch_stmt_execution_predicate): Likewise.
17340         (phi_result_unknown_predicate): Likewise.
17341         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
17342         (ipa_analyze_indirect_call_uses): Likewise.
17343         * predict.cc (predict_iv_comparison): Likewise.
17344         (predict_extra_loop_exits): Likewise.
17345         (predict_loops): Likewise.
17346         (tree_predict_by_opcode): Likewise.
17347         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
17348         Likewise.
17349         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
17350         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
17351         (replace_phi_edge_with_variable): Likewise.
17352         (two_value_replacement): Likewise.
17353         (value_replacement): Likewise.
17354         (minmax_replacement): Likewise.
17355         (spaceship_replacement): Likewise.
17356         (cond_removal_in_builtin_zero_pattern): Likewise.
17357         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
17358         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
17359         (vn_phi_lookup): Likewise.
17360         (vn_phi_insert): Likewise.
17361         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
17362         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
17363         Likewise.
17364         (back_threader_profitability::possibly_profitable_path_p):
17365         Likewise.
17366         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
17367         Likewise.
17368         * tree-switch-conversion.cc (pass_convert_switch::execute):
17369         Likewise.
17370         (pass_lower_switch<O0>::execute): Likewise.
17371         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
17372         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
17373         * tree-vect-slp.cc (vect_slp_function): Likewise.
17374         * tree-vect-stmts.cc (cfun_returns): Likewise.
17375         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
17376         (vect_loop_dist_alias_call): Likewise.
17378 2023-04-24  Richard Biener  <rguenther@suse.de>
17380         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
17382 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17384         * config/riscv/riscv-vsetvl.cc
17385         (vector_infos_manager::all_avail_in_compatible_p): New function.
17386         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
17387         * config/riscv/riscv-vsetvl.h: New function.
17389 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17391         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
17392         comment for cleanup_insns.
17394 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17396         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
17397         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
17398         with the fault first load property.
17400 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17402         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
17403         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
17405 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17407         PR target/99195
17408         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
17409         (aarch64_addp<mode><vczle><vczbe>): ... This.
17411 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
17413         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
17414         provide reasonable values for common arithmetic operations and
17415         immediate operands (in several machine modes).
17417 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
17419         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
17420         format specifier to output high_part register name of SImode reg.
17421         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
17422         (zero_extendqihi2): Fix lengths, consistent formatting and add
17423         "and Rx,#255" alternative, for documentation purposes.
17424         (zero_extendhisi2): New define_insn.
17426 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
17428         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
17429         SImode shifts by two by performing a single bit SImode shift twice.
17431 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
17433         PR tree-optimization/109593
17434         * value-range.cc (frange::operator==): Handle NANs.
17436 2023-04-23  liuhongt  <hongtao.liu@intel.com>
17438         PR rtl-optimization/108707
17439         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
17440         GENERAL_REGS when preferred reg_class is not known.
17442 2023-04-22  Andrew Pinski  <apinski@marvell.com>
17444         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
17445         Change the code around slightly to move diamond
17446         handling for do_store_elim/do_hoist_loads out of
17447         the big if/else.
17449 2023-04-22  Andrew Pinski  <apinski@marvell.com>
17451         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
17452         Remove check on empty_block_p.
17454 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
17456         PR bootstrap/109589
17457         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
17458         * realmpfr.h (class auto_mpfr): Likewise.
17460 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
17462         PR tree-optimization/109583
17463         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
17464         if vec_mode is not VECTOR_MODE_P.
17466 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
17467             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
17469         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
17470         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
17471         loop profile and bounds after header duplication.
17472         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
17473         Break out from try_peel_loop; fix handling of 0 iterations.
17474         (try_peel_loop): Use adjust_loop_info_after_peeling.
17476 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
17478         PR tree-optimization/109546
17479         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
17480         not fold conditions with ADDR_EXPR early.
17482 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17484         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
17485         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
17486         for umax.
17487         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
17488         (*aarch64_<optab><mode>3_zero): Define.
17489         (*aarch64_<optab><mode>3_cssc): Likewise.
17490         * config/aarch64/iterators.md (maxminand): New code attribute.
17492 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17494         PR target/108779
17495         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
17496         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
17497         Define prototype.
17498         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
17499         (aarch64_override_options_internal): Handle the above.
17500         (aarch64_output_load_tp): New function.
17501         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
17502         aarch64_output_load_tp.
17503         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
17504         (mtp=): New option.
17505         * doc/invoke.texi (AArch64 Options): Document -mtp=.
17507 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17509         PR target/99195
17510         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
17511         (add_vec_concat_subst_be): Likewise.
17512         (vczle): Likewise.
17513         (vczbe): Likewise.
17514         (add<mode>3): Rename to...
17515         (add<mode>3<vczle><vczbe>): ... This.
17516         (sub<mode>3): Rename to...
17517         (sub<mode>3<vczle><vczbe>): ... This.
17518         (mul<mode>3): Rename to...
17519         (mul<mode>3<vczle><vczbe>): ... This.
17520         (and<mode>3): Rename to...
17521         (and<mode>3<vczle><vczbe>): ... This.
17522         (ior<mode>3): Rename to...
17523         (ior<mode>3<vczle><vczbe>): ... This.
17524         (xor<mode>3): Rename to...
17525         (xor<mode>3<vczle><vczbe>): ... This.
17526         * config/aarch64/iterators.md (VDZ): Define.
17528 2023-04-21  Patrick Palka  <ppalka@redhat.com>
17530         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
17531         and type_p.
17533 2023-04-21  Jan Hubicka  <jh@suse.cz>
17535         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
17536         commit.
17538 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
17540         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
17541         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
17543 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
17545         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
17546         force_reg instead of copy_to_mode_reg.
17547         (aarch64_expand_vector_init): Likewise.
17549 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
17551         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
17552         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
17553         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
17554         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
17555         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
17556         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
17557         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
17558         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
17559         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
17560         * config/i386/predicates.md (index_register_operand):
17561         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
17562         * config/i386/i386.cc (ix86_legitimate_address_p): Use
17563         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
17564         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
17566 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
17567             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
17569         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
17570         latch.
17572 2023-04-21  Richard Biener  <rguenther@suse.de>
17574         * is-a.h (safe_is_a): New.
17576 2023-04-21  Richard Biener  <rguenther@suse.de>
17578         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
17579         (gphi_iterator::operator*): Likewise.
17581 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
17582             Michal Jires  <michal@jires.eu>
17584         * ipa-inline.cc (class inline_badness): New class.
17585         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
17586         of sreal.
17587         (update_edge_key): Update.
17588         (lookup_recursive_calls): Likewise.
17589         (recursive_inlining): Likewise.
17590         (add_new_edges_to_heap): Likewise.
17591         (inline_small_functions): Likewise.
17593 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
17595         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
17597 2023-04-21  Richard Biener  <rguenther@suse.de>
17599         PR tree-optimization/109573
17600         * tree-vect-loop.cc (vectorizable_live_operation): Allow
17601         unhandled SSA copy as well.  Demote assert to checking only.
17603 2023-04-21  Richard Biener  <rguenther@suse.de>
17605         * df-core.cc (df_analyze): Compute RPO on the reverse graph
17606         for DF_BACKWARD problems.
17607         (loop_post_order_compute): Rename to ...
17608         (loop_rev_post_order_compute): ... this, compute a RPO.
17609         (loop_inverted_post_order_compute): Rename to ...
17610         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
17611         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
17612         problems, RPO on the inverted graph for DF_BACKWARD.
17614 2023-04-21  Richard Biener  <rguenther@suse.de>
17616         * cfganal.h (inverted_rev_post_order_compute): Rename
17617         from ...
17618         (inverted_post_order_compute): ... this.  Add struct function
17619         argument, change allocation to a C array.
17620         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
17621         * lcm.cc (compute_antinout_edge): Adjust.
17622         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
17623         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
17624         * tree-ssa-pre.cc (compute_antic): Likewise.
17626 2023-04-21  Richard Biener  <rguenther@suse.de>
17628         * df.h (df_d::postorder_inverted): Change back to int *,
17629         clarify comments.
17630         * df-core.cc (rest_of_handle_df_finish): Adjust.
17631         (df_analyze_1): Likewise.
17632         (df_analyze): For DF_FORWARD problems use RPO on the forward
17633         graph.  Adjust.
17634         (loop_inverted_post_order_compute): Adjust API.
17635         (df_analyze_loop): Adjust.
17636         (df_get_n_blocks): Likewise.
17637         (df_get_postorder): Likewise.
17639 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17641         PR target/108270
17642         * config/riscv/riscv-vsetvl.cc
17643         (vector_infos_manager::all_empty_predecessor_p): New function.
17644         (pass_vsetvl::backward_demand_fusion): Ditto.
17645         * config/riscv/riscv-vsetvl.h: Ditto.
17647 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
17649         PR target/109582
17650         * config/riscv/generic.md: Change standard names to insn names.
17652 2023-04-21  Richard Biener  <rguenther@suse.de>
17654         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
17655         (compute_laterin): Use RPO.
17656         (compute_available): Likewise.
17658 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
17660         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
17662 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17664         PR target/109547
17665         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
17666         (vector_insn_info::skip_avl_compatible_p): Ditto.
17667         (vector_insn_info::merge): Remove default value.
17668         (pass_vsetvl::compute_local_backward_infos): Ditto.
17669         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
17670         * config/riscv/riscv-vsetvl.h: Ditto.
17672 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
17674         * doc/extend.texi (Common Function Attributes): Remove duplicate
17675         word.
17677 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
17679         PR tree-optimization/109564
17680         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
17681         UNDEFINED range names when deciding if all PHI arguments are the same,
17683 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
17685         PR tree-optimization/109011
17686         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
17687         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
17688         .CTZ (X) = PREC - .POPCOUNT (X | -X).
17690 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
17692         * lra-constraints.cc (match_reload): Exclude some hard regs for
17693         multi-reg inout reload pseudos used in asm in different mode.
17695 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
17697         * config/arm/arm.cc (thumb1_legitimate_address_p):
17698         Use VIRTUAL_REGISTER_P predicate.
17699         (arm_eliminable_register): Ditto.
17700         * config/avr/avr.md (push<mode>_1): Ditto.
17701         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
17702         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
17703         * config/i386/predicates.md (register_no_elim_operand): Ditto.
17704         * config/iq2000/predicates.md (call_insn_operand): Ditto.
17705         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
17707 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
17709         PR target/78952
17710         * config/i386/predicates.md (extract_operator): New predicate.
17711         * config/i386/i386.md (any_extract): Remove code iterator.
17712         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
17713         (*cmpqi_ext<mode>_1): Ditto.
17714         (*cmpqi_ext<mode>_2): Ditto.
17715         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
17716         (*cmpqi_ext<mode>_3): Ditto.
17717         (*cmpqi_ext<mode>_4): Ditto.
17718         (*extzvqi_mem_rex64): Ditto.
17719         (*extzvqi): Ditto.
17720         (*insvqi_2): Ditto.
17721         (*extendqi<SWI24:mode>_ext_1): Ditto.
17722         (*addqi_ext<mode>_0): Ditto.
17723         (*addqi_ext<mode>_1): Ditto.
17724         (*addqi_ext<mode>_2): Ditto.
17725         (*subqi_ext<mode>_0): Ditto.
17726         (*subqi_ext<mode>_2): Ditto.
17727         (*testqi_ext<mode>_1): Ditto.
17728         (*testqi_ext<mode>_2): Ditto.
17729         (*andqi_ext<mode>_0): Ditto.
17730         (*andqi_ext<mode>_1): Ditto.
17731         (*andqi_ext<mode>_1_cc): Ditto.
17732         (*andqi_ext<mode>_2): Ditto.
17733         (*<any_or:code>qi_ext<mode>_0): Ditto.
17734         (*<any_or:code>qi_ext<mode>_1): Ditto.
17735         (*<any_or:code>qi_ext<mode>_2): Ditto.
17736         (*xorqi_ext<mode>_1_cc): Ditto.
17737         (*negqi_ext<mode>_2): Ditto.
17738         (*ashlqi_ext<mode>_2): Ditto.
17739         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
17741 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
17743         PR target/108248
17744         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
17745         <bitmanip_insn> as the type to allow for fine grained control of
17746         scheduling these insns.
17747         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
17748         min, max.
17749         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
17750         pcnt, signed and unsigned min/max.
17752 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17753             kito-cheng  <kito.cheng@sifive.com>
17755         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
17757 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17758             kito-cheng  <kito.cheng@sifive.com>
17760         PR target/109535
17761         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
17762         (pass_vsetvl::cleanup_insns): Fix bug.
17764 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
17766         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
17767         (ldexp<mode>3): Delete.
17768         (ldexp<mode>3<exec>): Change "B" to "A".
17770 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
17771             Jonathan Wakely  <jwakely@redhat.com>
17773         * tree.h (built_in_function_equal_p): New helper function.
17774         (fndecl_built_in_p): Turn into variadic template to support
17775         1 or more built_in_function arguments.
17776         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
17777         * gimplify.cc (goa_stabilize_expr): Likewise.
17778         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
17779         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
17780         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
17781         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
17782         cgraph_update_edges_for_call_stmt_node,
17783         cgraph_edge::verify_corresponds_to_fndecl,
17784         cgraph_node::verify_node): Likewise.
17785         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
17786         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
17787         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
17789 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
17791         PR tree-optimization/109011
17792         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
17793         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
17794         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
17795         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
17796         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
17797         case.
17798         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
17800 2023-04-20  Richard Biener  <rguenther@suse.de>
17802         * df-core.cc (rest_of_handle_df_initialize): Remove
17803         computation of df->postorder, df->postorder_inverted and
17804         df->n_blocks.
17806 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
17808         * common/config/i386/i386-common.cc
17809         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
17810         (ix86_handle_option): Set AVX flag for VAES.
17811         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
17812         Add OPTION_MASK_ISA2_VAES_UNSET.
17813         (def_builtin): Share builtin between AES and VAES.
17814         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
17815         Ditto.
17816         * config/i386/i386.md (aes): New isa attribute.
17817         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
17818         (aesenclast): Ditto.
17819         (aesdec): Ditto.
17820         (aesdeclast): Ditto.
17821         * config/i386/vaesintrin.h: Remove redundant avx target push.
17822         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
17823         (_mm_aesdeclast_si128): Ditto.
17824         (_mm_aesenc_si128): Ditto.
17825         (_mm_aesenclast_si128): Ditto.
17827 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
17829         * config/i386/avx2intrin.h
17830         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
17831         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
17832         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
17833         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
17834         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
17835         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
17836         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
17837         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
17838         (_mm_reduce_add_epi16): New instrinsics.
17839         (_mm_reduce_mul_epi16): Ditto.
17840         (_mm_reduce_and_epi16): Ditto.
17841         (_mm_reduce_or_epi16): Ditto.
17842         (_mm_reduce_max_epi16): Ditto.
17843         (_mm_reduce_max_epu16): Ditto.
17844         (_mm_reduce_min_epi16): Ditto.
17845         (_mm_reduce_min_epu16): Ditto.
17846         (_mm256_reduce_add_epi16): Ditto.
17847         (_mm256_reduce_mul_epi16): Ditto.
17848         (_mm256_reduce_and_epi16): Ditto.
17849         (_mm256_reduce_or_epi16): Ditto.
17850         (_mm256_reduce_max_epi16): Ditto.
17851         (_mm256_reduce_max_epu16): Ditto.
17852         (_mm256_reduce_min_epi16): Ditto.
17853         (_mm256_reduce_min_epu16): Ditto.
17854         (_mm_reduce_add_epi8): Ditto.
17855         (_mm_reduce_mul_epi8): Ditto.
17856         (_mm_reduce_and_epi8): Ditto.
17857         (_mm_reduce_or_epi8): Ditto.
17858         (_mm_reduce_max_epi8): Ditto.
17859         (_mm_reduce_max_epu8): Ditto.
17860         (_mm_reduce_min_epi8): Ditto.
17861         (_mm_reduce_min_epu8): Ditto.
17862         (_mm256_reduce_add_epi8): Ditto.
17863         (_mm256_reduce_mul_epi8): Ditto.
17864         (_mm256_reduce_and_epi8): Ditto.
17865         (_mm256_reduce_or_epi8): Ditto.
17866         (_mm256_reduce_max_epi8): Ditto.
17867         (_mm256_reduce_max_epu8): Ditto.
17868         (_mm256_reduce_min_epi8): Ditto.
17869         (_mm256_reduce_min_epu8): Ditto.
17870         * config/i386/avx512vlbwintrin.h:
17871         (_mm_mask_reduce_add_epi16): Ditto.
17872         (_mm_mask_reduce_mul_epi16): Ditto.
17873         (_mm_mask_reduce_and_epi16): Ditto.
17874         (_mm_mask_reduce_or_epi16): Ditto.
17875         (_mm_mask_reduce_max_epi16): Ditto.
17876         (_mm_mask_reduce_max_epu16): Ditto.
17877         (_mm_mask_reduce_min_epi16): Ditto.
17878         (_mm_mask_reduce_min_epu16): Ditto.
17879         (_mm256_mask_reduce_add_epi16): Ditto.
17880         (_mm256_mask_reduce_mul_epi16): Ditto.
17881         (_mm256_mask_reduce_and_epi16): Ditto.
17882         (_mm256_mask_reduce_or_epi16): Ditto.
17883         (_mm256_mask_reduce_max_epi16): Ditto.
17884         (_mm256_mask_reduce_max_epu16): Ditto.
17885         (_mm256_mask_reduce_min_epi16): Ditto.
17886         (_mm256_mask_reduce_min_epu16): Ditto.
17887         (_mm_mask_reduce_add_epi8): Ditto.
17888         (_mm_mask_reduce_mul_epi8): Ditto.
17889         (_mm_mask_reduce_and_epi8): Ditto.
17890         (_mm_mask_reduce_or_epi8): Ditto.
17891         (_mm_mask_reduce_max_epi8): Ditto.
17892         (_mm_mask_reduce_max_epu8): Ditto.
17893         (_mm_mask_reduce_min_epi8): Ditto.
17894         (_mm_mask_reduce_min_epu8): Ditto.
17895         (_mm256_mask_reduce_add_epi8): Ditto.
17896         (_mm256_mask_reduce_mul_epi8): Ditto.
17897         (_mm256_mask_reduce_and_epi8): Ditto.
17898         (_mm256_mask_reduce_or_epi8): Ditto.
17899         (_mm256_mask_reduce_max_epi8): Ditto.
17900         (_mm256_mask_reduce_max_epu8): Ditto.
17901         (_mm256_mask_reduce_min_epi8): Ditto.
17902         (_mm256_mask_reduce_min_epu8): Ditto.
17904 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
17906         * common/config/i386/i386-common.cc
17907         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
17908         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
17909         (OPTION_MASK_ISA_AVX_UNSET):
17910         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
17911         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
17912         * config/i386/i386.md (vpclmulqdqvl): New.
17913         * config/i386/sse.md (pclmulqdq): Add evex encoding.
17914         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
17915         push.
17917 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
17919         * config/i386/avx512vlbwintrin.h
17920         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
17921         (_mm_mask_blend_epi8): Ditto.
17922         (_mm256_mask_blend_epi16): Ditto.
17923         (_mm256_mask_blend_epi8): Ditto.
17924         * config/i386/avx512vlintrin.h
17925         (_mm256_mask_blend_pd): Ditto.
17926         (_mm256_mask_blend_ps): Ditto.
17927         (_mm256_mask_blend_epi64): Ditto.
17928         (_mm256_mask_blend_epi32): Ditto.
17929         (_mm_mask_blend_pd): Ditto.
17930         (_mm_mask_blend_ps): Ditto.
17931         (_mm_mask_blend_epi64): Ditto.
17932         (_mm_mask_blend_epi32): Ditto.
17933         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
17934         (VF_AVX512HFBFVL): Move it before the first usage.
17935         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
17936         to VF_AVX512HFBFVL.
17938 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
17940         * common/config/i386/i386-common.cc
17941         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
17942         to OPTION_MASK_ISA_AVX512BW_SET.
17943         (OPTION_MASK_ISA_AVX512F_UNSET):
17944         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
17945         (OPTION_MASK_ISA_AVX512BW_UNSET):
17946         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
17947         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
17948         * config/i386/avx512vbmi2vlintrin.h: Ditto.
17949         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
17950         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
17951         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
17952         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
17953         VI12_AVX512VL.
17954         (compressstore<mode>_mask): Ditto.
17955         (expand<mode>_mask): Ditto.
17956         (expand<mode>_maskz): Ditto.
17957         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
17958         VI12_VI48F_AVX512VL.
17960 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
17962         * common/config/i386/i386-common.cc
17963         (OPTION_MASK_ISA_AVX512BITALG_SET):
17964         Change OPTION_MASK_ISA_AVX512F_SET
17965         to OPTION_MASK_ISA_AVX512BW_SET.
17966         (OPTION_MASK_ISA_AVX512F_UNSET):
17967         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
17968         (OPTION_MASK_ISA_AVX512BW_UNSET):
17969         Add OPTION_MASK_ISA_AVX512BITALG_SET.
17970         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
17971         * config/i386/i386-builtin.def:
17972         Remove redundant OPTION_MASK_ISA_AVX512BW.
17973         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
17974         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
17975         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
17977 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
17979         * config/i386/i386-expand.cc
17980         (ix86_check_builtin_isa_match): Correct wrong comments.
17981         Add a new macro SHARE_BUILTIN and refactor the current if
17982         clauses to macro.
17984 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
17986         * config/i386/cpuid.h: Open a new section for Extended Features
17987         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
17988         %ecx == 1).
17990 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
17992         * config/i386/sse.md: Modify insn vperm{i,f}
17993         and vshuf{i,f}.
17995 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
17997         * config/xtensa/xtensa-opts.h: New header.
17998         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
17999         xtensa_strict_align.
18000         * config/xtensa/xtensa.cc (xtensa_option_override): When
18001         -m[no-]strict-align is not specified in the command line set
18002         xtensa_strict_align to 0 if the hardware supports both unaligned
18003         loads and stores or to 1 otherwise.
18004         * config/xtensa/xtensa.opt (mstrict-align): New option.
18005         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
18007 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
18009         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
18010         function.
18012 2023-04-19  Andrew Pinski  <apinski@marvell.com>
18014         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
18016 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18018         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
18019         (VECTOR_BOOL_MODE): Ditto.
18020         (ADJUST_NUNITS): Ditto.
18021         (ADJUST_ALIGNMENT): Ditto.
18022         (ADJUST_BYTESIZE): Ditto.
18023         (ADJUST_PRECISION): Ditto.
18024         (RVV_MODES): Ditto.
18025         (VECTOR_MODE_WITH_PREFIX): Ditto.
18026         * config/riscv/riscv-v.cc (ENTRY): Ditto.
18027         (get_vlmul): Ditto.
18028         (get_ratio): Ditto.
18029         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
18030         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
18031         (vbool64_t): Ditto.
18032         (vbool32_t): Ditto.
18033         (vbool16_t): Ditto.
18034         (vbool8_t): Ditto.
18035         (vbool4_t): Ditto.
18036         (vbool2_t): Ditto.
18037         (vbool1_t): Ditto.
18038         (vint8mf8_t): Ditto.
18039         (vuint8mf8_t): Ditto.
18040         (vint8mf4_t): Ditto.
18041         (vuint8mf4_t): Ditto.
18042         (vint8mf2_t): Ditto.
18043         (vuint8mf2_t): Ditto.
18044         (vint8m1_t): Ditto.
18045         (vuint8m1_t): Ditto.
18046         (vint8m2_t): Ditto.
18047         (vuint8m2_t): Ditto.
18048         (vint8m4_t): Ditto.
18049         (vuint8m4_t): Ditto.
18050         (vint8m8_t): Ditto.
18051         (vuint8m8_t): Ditto.
18052         (vint16mf4_t): Ditto.
18053         (vuint16mf4_t): Ditto.
18054         (vint16mf2_t): Ditto.
18055         (vuint16mf2_t): Ditto.
18056         (vint16m1_t): Ditto.
18057         (vuint16m1_t): Ditto.
18058         (vint16m2_t): Ditto.
18059         (vuint16m2_t): Ditto.
18060         (vint16m4_t): Ditto.
18061         (vuint16m4_t): Ditto.
18062         (vint16m8_t): Ditto.
18063         (vuint16m8_t): Ditto.
18064         (vint32mf2_t): Ditto.
18065         (vuint32mf2_t): Ditto.
18066         (vint32m1_t): Ditto.
18067         (vuint32m1_t): Ditto.
18068         (vint32m2_t): Ditto.
18069         (vuint32m2_t): Ditto.
18070         (vint32m4_t): Ditto.
18071         (vuint32m4_t): Ditto.
18072         (vint32m8_t): Ditto.
18073         (vuint32m8_t): Ditto.
18074         (vint64m1_t): Ditto.
18075         (vuint64m1_t): Ditto.
18076         (vint64m2_t): Ditto.
18077         (vuint64m2_t): Ditto.
18078         (vint64m4_t): Ditto.
18079         (vuint64m4_t): Ditto.
18080         (vint64m8_t): Ditto.
18081         (vuint64m8_t): Ditto.
18082         (vfloat32mf2_t): Ditto.
18083         (vfloat32m1_t): Ditto.
18084         (vfloat32m2_t): Ditto.
18085         (vfloat32m4_t): Ditto.
18086         (vfloat32m8_t): Ditto.
18087         (vfloat64m1_t): Ditto.
18088         (vfloat64m2_t): Ditto.
18089         (vfloat64m4_t): Ditto.
18090         (vfloat64m8_t): Ditto.
18091         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
18092         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
18093         (riscv_convert_vector_bits): Ditto.
18094         * config/riscv/riscv.md:
18095         * config/riscv/vector-iterators.md:
18096         * config/riscv/vector.md
18097         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
18098         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
18099         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
18100         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
18101         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
18102         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
18103         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
18104         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
18105         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
18107 2023-04-19  Pan Li  <pan2.li@intel.com>
18109         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
18110         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
18112 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
18114         PR target/78904
18115         PR target/78952
18116         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
18117         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
18118         for operand 0. Use any_extract code iterator.
18119         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
18120         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
18121         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
18122         (*cmpqi_ext<mode>_1): Use general_operand predicate
18123         for operand 1. Use any_extract code iterator.
18124         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
18125         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
18127 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18129         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
18130         (aarch64_uaddw2<mode>): Delete.
18131         (aarch64_ssubw2<mode>): Delete.
18132         (aarch64_usubw2<mode>): Delete.
18133         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
18135 2023-04-19  Richard Biener  <rguenther@suse.de>
18137         * tree-ssa-structalias.cc (do_ds_constraint): Use
18138         solve_add_graph_edge.
18140 2023-04-19  Richard Biener  <rguenther@suse.de>
18142         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
18143         split out from ...
18144         (do_sd_constraint): ... here.
18146 2023-04-19  Richard Biener  <rguenther@suse.de>
18148         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
18149         rejecting the merge when A contains only a non-local label.
18151 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
18153         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
18154         (VIRTUAL_REGISTER_NUM_P): Ditto.
18155         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
18156         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
18157         * function.cc (instantiate_decl_rtl): Ditto.
18158         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
18159         (nonzero_address_p): Ditto.
18160         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
18162 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
18164         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
18166 2023-04-19  Richard Biener  <rguenther@suse.de>
18168         * system.h (auto_mpz::operator->()): New.
18169         * realmpfr.h (auto_mpfr::operator->()): New.
18170         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
18171         * real.cc (real_from_string): Likewise.
18172         (dconst_e_ptr): Likewise.
18173         (dconst_sqrt2_ptr): Likewise.
18174         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
18175         Use auto_mpz.
18176         (bound_difference_of_offsetted_base): Likewise.
18177         (number_of_iterations_ne): Likewise.
18178         (number_of_iterations_lt_to_ne): Likewise.
18179         * ubsan.cc: Include realmpfr.h.
18180         (ubsan_instrument_float_cast): Use auto_mpfr.
18182 2023-04-19  Richard Biener  <rguenther@suse.de>
18184         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
18185         edges, remove edges from escaped after special-casing them.
18187 2023-04-19  Richard Biener  <rguenther@suse.de>
18189         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
18190         special casing.
18192 2023-04-19  Richard Biener  <rguenther@suse.de>
18194         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
18195         to the LHS varinfo solution member.
18197 2023-04-19  Richard Biener  <rguenther@suse.de>
18199         * tree-ssa-structalias.cc (topo_visit): Look at the real
18200         destination of edges.
18202 2023-04-19  Richard Biener  <rguenther@suse.de>
18204         PR tree-optimization/44794
18205         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
18206         If an epilogue loop is required set its iteration upper bound.
18208 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
18210         PR target/109465
18211         * config/loongarch/loongarch-protos.h
18212         (loongarch_expand_block_move): Add a parameter as alignment RTX.
18213         * config/loongarch/loongarch.h:
18214         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
18215         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
18216         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
18217         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
18218         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
18219         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
18220         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
18221         Take the alignment from the parameter, but set it to
18222         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
18223         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
18224         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
18225         (loongarch_block_move_straight): When there are left-over bytes,
18226         half the mode size instead of falling back to byte mode at once.
18227         (loongarch_block_move_loop): Limit the length of loop body with
18228         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
18229         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
18230         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
18231         to loongarch_expand_block_move.
18233 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
18235         * config/loongarch/loongarch.cc
18236         (loongarch_setup_incoming_varargs): Don't save more GARs than
18237         cfun->va_list_gpr_size / UNITS_PER_WORD.
18239 2023-04-19  Richard Biener  <rguenther@suse.de>
18241         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
18242         no epilogue condition.
18244 2023-04-19  Richard Biener  <rguenther@suse.de>
18246         * gimple.h (gimple_assign_load): Outline...
18247         * gimple.cc (gimple_assign_load): ... here.  Avoid
18248         get_base_address and instead just strip the outermost
18249         handled component, treating a remaining handled component
18250         as load.
18252 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18254         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
18255         definition.
18256         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
18258 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
18260         PR tree-optimization/109011
18261         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
18262         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
18263         CLZ, CTZ and FFS.  Remove vargs variable, use
18264         gimple_build_call_internal rather than gimple_build_call_internal_vec.
18265         (vect_vect_recog_func_ptrs): Adjust popcount entry.
18267 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
18269         PR target/109040
18270         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
18271         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
18272         a new REG rather than the SUBREG.
18274 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
18276         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
18277         New pattern.
18279 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18281         PR target/108840
18282         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
18283         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
18285 2023-04-19  Richard Biener  <rguenther@suse.de>
18287         PR rtl-optimization/109237
18288         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
18289         TREE_VISITED on INSN_VAR_LOCATION_DECL.
18290         (delete_trivially_dead_insns): Maintain TREE_VISITED on
18291         active debug bind INSN_VAR_LOCATION_DECL.
18293 2023-04-19  Richard Biener  <rguenther@suse.de>
18295         PR rtl-optimization/109237
18296         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
18298 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
18300         * doc/install.texi (enable-decimal-float): Add AArch64.
18302 2023-04-19  liuhongt  <hongtao.liu@intel.com>
18304         PR rtl-optimization/109351
18305         * ira.cc (setup_class_subset_and_memory_move_costs): Check
18306         hard_regno_mode_ok before setting lowest memory move cost for
18307         the mode with different reg classes.
18309 2023-04-18  Jason Merrill  <jason@redhat.com>
18311         * doc/invoke.texi: Remove stray @gol.
18313 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18315         * ifcvt.cc (cond_move_process_if_block): Consider the result of
18316         targetm.noce_conversion_profitable_p() when replacing the original
18317         sequence with the converted one.
18319 2023-04-18  Mark Harmstone  <mark@harmstone.com>
18321         * common.opt (gcodeview): Add new option.
18322         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
18323         * opts.cc (command_handle_option): Similarly.
18324         * doc/invoke.texi: Add documentation for -gcodeview.
18326 2023-04-18  Andrew Pinski  <apinski@marvell.com>
18328         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
18329         (make_pass_phiopt): Make execute out of line.
18330         (tree_ssa_cs_elim): Move code into ...
18331         (pass_cselim::execute): here.
18333 2023-04-18  Sam James  <sam@gentoo.org>
18335         * system.h: Drop unused INCLUDE_PTHREAD_H.
18337 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
18339         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
18340         condition.
18342 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
18344         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
18345         (bswapdi2, bswapsi2): Similarly.
18347 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
18349         PR target/94908
18350         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
18351         Use CODE_FOR_sse4_1_insertps_v4sf.
18352         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
18353         (expand_vec_perm_1): Call expand_vec_per_insertps.
18354         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
18355         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
18356         (@sse4_1_insertps_<mode>): New insn pattern.
18357         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
18358         pattern from sse4_1_insertps using VI4F_128 mode iterator.
18360 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
18362         * value-range.cc (gt_ggc_mx): New.
18363         (gt_pch_nx): New.
18364         * value-range.h (class vrange): Add GTY marker.
18365         (class frange): Same.
18366         (gt_ggc_mx): Remove.
18367         (gt_pch_nx): Remove.
18369 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
18371         * lra-constraints.cc (constraint_unique): New.
18372         (process_address_1): Apply constraint_unique test.
18373         * recog.cc (constrain_operands): Allow relaxed memory
18374         constaints.
18376 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
18378         * doc/extend.texi (Target Builtins): Add RISC-V Vector
18379         Intrinsics.
18380         (RISC-V Vector Intrinsics): Document GCC implemented which
18381         version of RISC-V vector intrinsics and its reference.
18383 2023-04-18  Richard Biener  <rguenther@suse.de>
18385         PR middle-end/108786
18386         * bitmap.h (bitmap_clear_first_set_bit): New.
18387         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
18388         bitmap_first_set_bit and add optional clearing of the bit.
18389         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
18390         (bitmap_clear_first_set_bit): Likewise.
18391         * df-core.cc (df_worklist_dataflow_doublequeue): Use
18392         bitmap_clear_first_set_bit.
18393         * graphite-scop-detection.cc (scop_detection::merge_sese):
18394         Likewise.
18395         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
18396         (sanitize_asan_mark_poison): Likewise.
18397         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
18398         * tree-into-ssa.cc (rewrite_blocks): Likewise.
18399         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
18400         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
18402 2023-04-18  Richard Biener  <rguenther@suse.de>
18404         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
18405         (dump_sa_points_to_info): ... this function.
18406         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
18407         and call dump_sa_stats guarded with TDF_STATS.
18408         (ipa_pta_execute): Likewise.
18409         (compute_may_aliases): Guard dump_alias_info with
18410         TDF_DETAILS|TDF_ALIAS.
18412 2023-04-18  Andrew Pinski  <apinski@marvell.com>
18414         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
18415         the expression that is being tried when TDF_FOLDING
18416         is true.
18417         (phiopt_worker::match_simplify_replacement): Dump
18418         the sequence which was created by gimple_simplify_phiopt
18419         when TDF_FOLDING is true.
18421 2023-04-18  Andrew Pinski  <apinski@marvell.com>
18423         * tree-ssa-phiopt.cc (match_simplify_replacement):
18424         Simplify code that does the movement slightly.
18426 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18428         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
18429         define_expand.
18430         (rev16<mode>2): Rename to...
18431         (aarch64_rev16<mode>2_alt1): ... This.
18432         (rev16<mode>2_alt): Rename to...
18433         (*aarch64_rev16<mode>2_alt2): ... This.
18435 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
18437         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
18438         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
18439         declaration.
18440         * range-op-float.cc (zero_range): Use dconstm0.
18441         (zero_to_inf_range): Same.
18442         * real.h (dconstm0): New.
18443         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
18444         (frange::set_zero): Do not declare dconstm0.
18446 2023-04-18  Richard Biener  <rguenther@suse.de>
18448         * system.h (class auto_mpz): New,
18449         * realmpfr.h (class auto_mpfr): Likewise.
18450         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
18451         (do_mpfr_arg2): Likewise.
18452         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
18454 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18456         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
18457         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
18459 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
18461         * value-range.cc (frange::operator==): Adjust for NAN.
18462         (range_tests_nan): Remove some NAN tests.
18464 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
18466         * inchash.cc (hash::add_real_value): New.
18467         * inchash.h (class hash): Add add_real_value.
18468         * value-range.cc (add_vrange): New.
18469         * value-range.h (inchash::add_vrange): New.
18471 2023-04-18  Richard Biener  <rguenther@suse.de>
18473         PR tree-optimization/109539
18474         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
18475         Re-implement pointer relatedness for PHIs.
18477 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
18479         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
18480         (SV_FP): New iterator.
18481         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
18482         (recip<mode>2): Unify the two patterns using SV_FP.
18483         (div_scale<mode><exec_vcc>): New insn.
18484         (div_fmas<mode><exec>): New insn.
18485         (div_fixup<mode><exec>): New insn.
18486         (div<mode>3): Unify the two expanders and rewrite using hardfp.
18487         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
18488         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
18489         and UNSPEC_DIV_FIXUP.
18490         (vccwait): New attribute.
18492 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18494         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
18495         if the argument matches that.
18497 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18499         * config/aarch64/atomics.md
18500         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
18501         Use SD_HSDI for destination mode iterator.
18503 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
18505         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
18506         of z-extensions and s-extensions.
18507         (riscv_subset_list::parse): Likewise.
18509 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
18511         PR tree-optimization/109240
18512         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
18513         first vec_perm operand and minus as second using fneg/fadd and
18514         minus as first vec_perm operand and plus as second using fneg/fsub.
18516 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
18518         * data-streamer.cc (bp_pack_real_value): New.
18519         (bp_unpack_real_value): New.
18520         * data-streamer.h (bp_pack_real_value):  New.
18521         (bp_unpack_real_value): New.
18522         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
18523         bp_unpack_real_value.
18524         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
18525         bp_pack_real_value.
18527 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
18529         * wide-int.h (WIDE_INT_MAX_HWIS): New.
18530         (class fixed_wide_int_storage): Use it.
18531         (trailing_wide_ints <N>::set_precision): Use it.
18532         (trailing_wide_ints <N>::extra_size): Use it.
18534 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
18536         * config/loongarch/loongarch-protos.h
18537         (loongarch_addu16i_imm12_operand_p): New function prototype.
18538         (loongarch_split_plus_constant): Likewise.
18539         * config/loongarch/loongarch.cc
18540         (loongarch_addu16i_imm12_operand_p): New function.
18541         (loongarch_split_plus_constant): Likewise.
18542         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
18543         (DUAL_IMM12_OPERAND): Likewise.
18544         (DUAL_ADDU16I_OPERAND): Likewise.
18545         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
18546         constraint.
18547         * config/loongarch/predicates.md (const_dual_imm12_operand): New
18548         predicate.
18549         (const_addu16i_operand): Likewise.
18550         (const_addu16i_imm12_di_operand): Likewise.
18551         (const_addu16i_imm12_si_operand): Likewise.
18552         (plus_di_operand): Likewise.
18553         (plus_si_operand): Likewise.
18554         (plus_si_extend_operand): Likewise.
18555         * config/loongarch/loongarch.md (add<mode>3): Convert to
18556         define_insn_and_split.  Use plus_<mode>_operand predicate
18557         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
18558         and Le constraints.
18559         (*addsi3_extended): Convert to define_insn_and_split.  Use
18560         plus_si_extend_operand instead of arith_operand.  Add
18561         alternatives for La and Le alternatives.
18563 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
18565         * value-range.h (Value_Range::Value_Range): New.
18566         (Value_Range::contains_p): New.
18568 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
18570         * value-range.h (class vrange): Make m_discriminator const.
18571         (class irange): Make m_max_ranges const.  Adjust constructors
18572         accordingly.
18573         (class unsupported_range): Construct vrange appropriately.
18574         (class frange): Same.
18576 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
18578         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
18579         definition.
18581 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
18583         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
18585 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
18587         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
18588         readable.
18589         (riscv_expand_epilogue): Likewise.
18591 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
18593         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
18594         stack allocation.
18595         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
18597 2023-04-17  Andrew Pinski  <apinski@marvell.com>
18599         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
18600         prototype.
18602 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
18604         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
18605         global ranges.
18607 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
18609         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
18610         parameter remaining_size.
18611         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
18612         (riscv_expand_prologue): Likewise.
18613         (riscv_expand_epilogue): Likewise.
18615 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
18617         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
18618         roriw for constant counts.
18619         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
18620         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
18621         (simplify_context::simplify_binary_operation_1): Use it.
18622         * expmed.cc (expand_shift_1): Likewise.
18624 2023-04-17  Martin Jambor  <mjambor@suse.cz>
18626         PR ipa/107769
18627         PR ipa/109318
18628         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
18629         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
18630         (ipa_zap_jf_refdesc): New function.
18631         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
18632         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
18633         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
18634         the new parameter of find_reference.
18635         (adjust_references_in_caller): Likewise. Make sure the constant jump
18636         function is not used to decrement a refdec counter again.  Only
18637         decrement refdesc counters when the pass_through jump function allows
18638         it.  Added a detailed dump when decrementing refdesc counters.
18639         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
18640         (ipa_set_jf_simple_pass_through): Initialize the new flag.
18641         (ipa_set_jf_unary_pass_through): Likewise.
18642         (ipa_set_jf_arith_pass_through): Likewise.
18643         (remove_described_reference): Provide a value for the new parameter of
18644         find_reference.
18645         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
18646         the previous pass_through had a flag mandating that we do so.
18647         (propagate_controlled_uses): Likewise.  Only decrement refdesc
18648         counters when the pass_through jump function allows it.
18649         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
18650         parameter of find_reference.
18651         (ipa_write_jump_function): Assert the new flag does not have to be
18652         streamed.
18653         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
18654         it in searching.
18656 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
18657             Di Zhao  <di.zhao@amperecomputing.com>
18659         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
18660         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
18661         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
18662         Check for the above tuning option when processing loads.
18664 2023-04-17  Richard Biener  <rguenther@suse.de>
18666         PR tree-optimization/109524
18667         * tree-vrp.cc (remove_unreachable::m_list): Change to a
18668         vector of pairs of block indices.
18669         (remove_unreachable::maybe_register_block): Adjust.
18670         (remove_unreachable::remove_and_update_globals): Likewise.
18671         Deal with removed blocks.
18673 2023-04-16  Jeff Law  <jlaw@ventanamicro>
18675         PR target/109508
18676         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
18677         TARGET_SFB_ALU, force the true arm into a register.
18679 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
18681         PR target/104989
18682         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
18683         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
18684         size is zero.
18685         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
18686         (pa_function_arg_size): Change return type to int.  Return zero
18687         for arguments larger than 1 GB.  Update comments.
18689 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
18691         PR tree-optimization/109154
18692         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
18693         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
18695 2023-04-15  Jason Merrill  <jason@redhat.com>
18697         PR c++/109514
18698         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
18699         Overhaul lhs_ref.ref analysis.
18701 2023-04-14  Richard Biener  <rguenther@suse.de>
18703         PR tree-optimization/109502
18704         * tree-vect-stmts.cc (vectorizable_assignment): Fix
18705         check for conversion between mask and non-mask types.
18707 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
18708             Jakub Jelinek  <jakub@redhat.com>
18710         PR target/108947
18711         PR target/109040
18712         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
18713         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
18714         smaller than word_mode.
18715         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
18716         <case AND>: Likewise.
18718 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
18720         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
18721         of GEN_INT.
18723 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
18725         PR tree-optimization/108139
18726         PR tree-optimization/109462
18727         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
18728         equivalency check for PHI nodes.
18729         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
18730         does not dominate single-arg equivalency edges.
18732 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
18734         PR target/108910
18735         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
18736         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
18738 2023-04-13  Richard Biener  <rguenther@suse.de>
18740         PR tree-optimization/109491
18741         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
18742         NULL operands test.
18744 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18746         PR target/109479
18747         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
18748         (vint16mf4_t): Ditto.
18749         (vint32mf2_t): Ditto.
18750         (vint64m1_t): Ditto.
18751         (vint64m2_t): Ditto.
18752         (vint64m4_t): Ditto.
18753         (vint64m8_t): Ditto.
18754         (vuint8mf8_t): Ditto.
18755         (vuint16mf4_t): Ditto.
18756         (vuint32mf2_t): Ditto.
18757         (vuint64m1_t): Ditto.
18758         (vuint64m2_t): Ditto.
18759         (vuint64m4_t): Ditto.
18760         (vuint64m8_t): Ditto.
18761         (vfloat32mf2_t): Ditto.
18762         (vbool64_t): Ditto.
18763         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
18764         (register_vector_type): Ditto.
18765         (check_required_extensions): Fix condition.
18766         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
18767         (RVV_REQUIRE_ELEN_64): New define.
18768         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
18769         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
18770         (TARGET_VECTOR_FP64): Ditto.
18771         (ENTRY): Fix predicate.
18772         * config/riscv/vector-iterators.md: Fix predicate.
18774 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
18776         PR tree-optimization/109410
18777         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
18778         block if first statement of the function is a call to returns_twice
18779         function.
18781 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
18783         PR target/109458
18784         * config/i386/i386.cc: Include rtl-error.h.
18785         (ix86_print_operand): For z modifier warning, use warning_for_asm
18786         if this_is_asm_operands.  For Z modifier errors, use %c and code
18787         instead of hardcoded Z.
18789 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
18791         * config/i386/x-mingw32-utf8: Remove extrataneous $@
18793 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
18795         PR tree-optimization/109462
18796         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
18797         check for equivalences if NAME is a phi node.
18799 2023-04-12  Richard Biener  <rguenther@suse.de>
18801         PR tree-optimization/109473
18802         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
18803         Convert scalar result to the computation type before performing
18804         the reduction adjustment.
18806 2023-04-12  Richard Biener  <rguenther@suse.de>
18808         PR tree-optimization/109469
18809         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
18810         a returns-twice call.
18812 2023-04-12  Richard Biener  <rguenther@suse.de>
18814         PR tree-optimization/109434
18815         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
18816         handle possibly throwing calls when processing the LHS
18817         and may-defs are not OK.
18819 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
18821         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
18822         predicate to avoid splitting arith constants.
18824 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
18825             Pan Li  <pan2.li@intel.com>
18826             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18827             Kito Cheng  <kito.cheng@sifive.com>
18829         PR target/109104
18830         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
18831         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
18832         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
18833         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
18834         (riscv_zero_call_used_regs): New.
18835         (TARGET_ZERO_CALL_USED_REGS): New.
18837 2023-04-11  Martin Liska  <mliska@suse.cz>
18839         PR driver/108241
18840         * opts.cc (finish_options): Drop also
18841         x_flag_var_tracking_assignments.
18843 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
18845         PR tree-optimization/108888
18846         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
18848 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
18850         PR target/108812
18851         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
18852         (vsx_sign_extend_v16qi_<mode>): ... this.
18853         (vsx_sign_extend_hi_<mode>): Rename to...
18854         (vsx_sign_extend_v8hi_<mode>): ... this.
18855         (vsx_sign_extend_si_v2di): Rename to...
18856         (vsx_sign_extend_v4si_v2di): ... this.
18857         (vsignextend_qi_<mode>): Remove.
18858         (vsignextend_hi_<mode>): Remove.
18859         (vsignextend_si_v2di): Remove.
18860         (vsignextend_v2di_v1ti): Remove.
18861         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
18862         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
18863         with gen_vsx_sign_extend_v16qi_v4si.
18864         * config/rs6000/rs6000.md (split for DI constant generation):
18865         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
18866         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
18867         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
18868         with gen_vsx_sign_extend_v16qi_si.
18869         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
18870         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
18871         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
18872         vsx_sign_extend_v16qi_v4si.
18873         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
18874         vsx_sign_extend_v8hi_v2di.
18875         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
18876         vsx_sign_extend_v8hi_v4si.
18877         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
18878         vsx_sign_extend_si_v2di.
18879         (__builtin_altivec_vsignext): Set bif-pattern to
18880         vsx_sign_extend_v2di_v1ti.
18881         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
18882         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
18883         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
18884         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
18886 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
18888         PR target/70243
18889         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
18890         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
18892 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
18894         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
18896 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
18898         * common/config/i386/cpuinfo.h (get_available_features):
18899         Detect AMX-COMPLEX.
18900         * common/config/i386/i386-common.cc
18901         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
18902         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
18903         (ix86_handle_option): Handle -mamx-complex.
18904         * common/config/i386/i386-cpuinfo.h (enum processor_features):
18905         Add FEATURE_AMX_COMPLEX.
18906         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
18907         amx-complex.
18908         * config.gcc: Add amxcomplexintrin.h.
18909         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
18910         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
18911         __AMX_COMPLEX__.
18912         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
18913         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
18914         Handle amx-complex.
18915         * config/i386/i386.opt: Add option -mamx-complex.
18916         * config/i386/immintrin.h: Include amxcomplexintrin.h.
18917         * doc/extend.texi: Document amx-complex.
18918         * doc/invoke.texi: Document -mamx-complex.
18919         * doc/sourcebuild.texi: Document target amx-complex.
18920         * config/i386/amxcomplexintrin.h: New file.
18922 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
18924         PR tree-optimization/109392
18925         * tree-vect-generic.cc (tree_vec_extract): Handle failure
18926         of maybe_push_res_to_seq better.
18928 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
18930         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
18931         poly-int-types.h.
18932         (SYSTEM_H): Depend on $(HASHTAB_H).
18933         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
18934         dependency on $(RTL_BASE_H), remove redundant dependency on
18935         insn-modes.h.
18937 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
18939         PR target/107674
18940         * config/arm/arm.cc (arm_effective_regno): New function.
18941         (mve_vector_mem_operand): Use it.
18943 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
18945         PR tree-optimization/109417
18946         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
18947         dependency is in SSA_NAME_FREE_LIST.
18949 2023-04-06  Andrew Pinski  <apinski@marvell.com>
18951         PR tree-optimization/109427
18952         * params.opt (-param=vect-induction-float=):
18953         Fix option attribute typo for IntegerRange.
18955 2023-04-05  Jeff Law  <jlaw@ventanamicro>
18957         PR target/108892
18958         * combine.cc (combine_instructions): Force re-recognition when
18959         after restoring the body of an insn to its original form.
18961 2023-04-05  Martin Jambor  <mjambor@suse.cz>
18963         PR ipa/108959
18964         * ipa-sra.cc (zap_useless_ipcp_results): New function.
18965         (process_isra_node_results): Call it.
18967 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18969         * config/riscv/vector.md: Fix incorrect operand order.
18971 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18973         * config/riscv/riscv-vsetvl.cc
18974         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
18975         demand fusion.
18977 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
18979         * config/riscv/riscv-vector-builtins.def: Fix typo.
18980         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
18981         * config/riscv/vector-iterators.md: Ditto.
18983 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
18985         * doc/md.texi (Including Patterns): Fix page break.
18987 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
18989         PR tree-optimization/109386
18990         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
18991         foperator_le::op1_range, foperator_le::op2_range,
18992         foperator_gt::op1_range, foperator_gt::op2_range,
18993         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
18994         BRS_FALSE case even if the other op is maybe_isnan, not just
18995         known_isnan.
18996         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
18997         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
18998         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
18999         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
19000         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
19001         not just known_isnan.
19003 2023-04-04  Marek Polacek  <polacek@redhat.com>
19005         PR sanitizer/109107
19006         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
19007         when associating.
19008         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
19010 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
19012         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
19013         (mve_vcreateq_f<mode>): Swap operands.
19015 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
19017         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
19019 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
19021         PR target/109384
19022         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
19023         Reword diagnostics about zfinx conflict with f, formatting fixes.
19025 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
19027         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
19029 2023-04-04  Richard Biener  <rguenther@suse.de>
19031         PR tree-optimization/109304
19032         * tree-profile.cc (tree_profiling): Use symtab node
19033         availability to decide whether to skip adjusting calls.
19034         Do not adjust calls to internal functions.
19036 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
19038         PR target/108807
19039         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
19040         function for permutation control vector by considering big endianness.
19042 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
19044         PR target/108699
19045         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
19046         (rs6000_vprtyb<mode>2): ... this.
19047         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
19048         rs6000_vprtybv2di2.
19049         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
19050         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
19051         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
19052         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
19054 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
19055             Sandra Loosemore  <sandra@codesourcery.com>
19057         * doc/md.texi (Insn Splitting): Tweak wording for readability.
19059 2023-04-03  Martin Jambor  <mjambor@suse.cz>
19061         PR ipa/109303
19062         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
19063         offset + size will be representable in unsigned int.
19065 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
19067         * configure.ac (ZSTD_LIB): Move before zstd.h check.
19068         Unset gcc_cv_header_zstd_h without libzstd.
19069         * configure: Regenerate.
19071 2023-04-03  Martin Liska  <mliska@suse.cz>
19073         * doc/invoke.texi: Document new param.
19075 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
19077         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
19078         new check_effective_target function.
19080 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
19082         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
19083         (vfloat32m8_t): Likewise
19085 2023-04-03  liuhongt  <hongtao.liu@intel.com>
19087         * doc/md.texi: Document signbitm2.
19089 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19090             kito-cheng  <kito.cheng@sifive.com>
19092         * config/riscv/vector.md: Fix RA constraint.
19094 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19096         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
19097         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
19098         * config/riscv/vector.md: Fix scalar move bug.
19100 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
19102         * range-op-float.cc (foperator_equal::fold_range): If at least
19103         one of the op ranges is not singleton and neither is NaN and all
19104         4 bounds are zero, return [1, 1].
19105         (foperator_not_equal::fold_range): In the same case return [0, 0].
19107 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
19109         * range-op-float.cc (foperator_equal::fold_range): Perform the
19110         non-singleton handling regardless of maybe_isnan (op1, op2).
19111         (foperator_not_equal::fold_range): Likewise.
19112         (foperator_lt::fold_range, foperator_le::fold_range,
19113         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
19114         real_* comparison check which results in range_false (type)
19115         even if maybe_isnan (op1, op2).  Simplify.
19116         (foperator_ltgt): New class.
19117         (fop_ltgt): New variable.
19118         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
19119         fop_ltgt.
19121 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
19123         PR target/109254
19124         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
19125         returns VOIDmode, handle it like if the register isn't used for
19126         passing arguments at all.
19127         (apply_result_size): If targetm.calls.get_raw_result_mode returns
19128         VOIDmode, handle it like if the register isn't used for returning
19129         results at all.
19130         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
19131         means to return VOIDmode.
19132         * doc/tm.texi: Regenerated.
19133         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
19134         TARGET_SVE for P0_REGNUM.
19135         (aarch64_function_arg_regno_p): Also return true for p0-p3.
19136         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
19138 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
19140         * lra-constraints.cc: (combine_reload_insn): New function.
19142 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
19144         PR tree-optimization/91645
19145         * range-op-float.cc (foperator_unordered_lt::fold_range,
19146         foperator_unordered_le::fold_range,
19147         foperator_unordered_gt::fold_range,
19148         foperator_unordered_ge::fold_range,
19149         foperator_unordered_equal::fold_range): Call the ordered
19150         fold_range on ranges with cleared NaNs.
19151         * value-query.cc (range_query::get_tree_range): Handle also
19152         COMPARISON_CLASS_P trees.
19154 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
19155             Andrew Pinski  <pinskia@gmail.com>
19157         PR target/109328
19158         * config/riscv/t-riscv: Add missing dependencies.
19160 2023-03-31  liuhongt  <hongtao.liu@intel.com>
19162         * config/i386/i386.cc (inline_memory_move_cost): Return 100
19163         for MASK_REGS when MODE_SIZE > 8.
19165 2023-03-31  liuhongt  <hongtao.liu@intel.com>
19167         PR target/85048
19168         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
19169         ufloat/ufix to floatuns/fixuns.
19170         * config/i386/i386-expand.cc
19171         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
19172         * config/i386/sse.md
19173         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
19174         Renamed to ..
19175         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
19176         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
19177         Renamed to ..
19178         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
19179         .. this.
19180         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
19181         Renamed to ..
19182         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
19183         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
19184         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
19185         (ufloatv2siv2df2<mask_name>): Renamed to ..
19186         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
19187         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
19188         Renamed to ..
19189         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
19190         .. this.
19191         (ufix_notruncv2dfv2si2): Renamed to ..
19192         (fixuns_notruncv2dfv2si2):.. this.
19193         (ufix_notruncv2dfv2si2_mask): Renamed to ..
19194         (fixuns_notruncv2dfv2si2_mask): .. this.
19195         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
19196         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
19197         (ufix_truncv2dfv2si2): Renamed to ..
19198         (*fixuns_truncv2dfv2si2): .. this.
19199         (ufix_truncv2dfv2si2_mask): Renamed to ..
19200         (fixuns_truncv2dfv2si2_mask): .. this.
19201         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
19202         (*fixuns_truncv2dfv2si2_mask_1): .. this.
19203         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
19204         (fixuns_truncv4dfv4si2<mask_name>): .. this.
19205         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
19206         Renamed to ..
19207         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
19208         .. this.
19209         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
19210         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
19211         .. this.
19213 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
19215         PR tree-optimization/109154
19216         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
19217         * gimple-range-gori.h (may_recompute_p): Add depth param.
19218         * params.opt (ranger-recompute-depth): New param.
19220 2023-03-30  Jason Merrill  <jason@redhat.com>
19222         PR c++/107897
19223         PR c++/108887
19224         * cgraph.h: Move reset() from cgraph_node to symtab_node.
19225         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
19226         remove_from_same_comdat_group.
19228 2023-03-30  Richard Biener  <rguenther@suse.de>
19230         PR tree-optimization/107561
19231         * gimple-ssa-warn-access.cc (get_size_range): Add flags
19232         argument and pass it on.
19233         (check_access): When querying for the size range pass
19234         SR_ALLOW_ZERO when the known destination size is zero.
19236 2023-03-30  Richard Biener  <rguenther@suse.de>
19238         PR tree-optimization/109342
19239         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
19240         overload for edge.  When that edge is a backedge use
19241         dominated_by_p directly.
19243 2023-03-30  liuhongt  <hongtao.liu@intel.com>
19245         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
19246         vpblendd instead of vpblendw for V4SI under avx2.
19248 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
19250         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
19251         for many quick operands, for register-sized modes.
19253 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
19255         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
19256         New check.
19258 2023-03-29  Martin Liska  <mliska@suse.cz>
19260         PR bootstrap/109310
19261         * configure.ac: Emit a warning for deprecated option
19262         --enable-link-mutex.
19263         * configure: Regenerate.
19265 2023-03-29  Richard Biener  <rguenther@suse.de>
19267         PR tree-optimization/109331
19268         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
19269         discover a taken edge make sure to cleanup the CFG.
19271 2023-03-29  Richard Biener  <rguenther@suse.de>
19273         PR tree-optimization/109327
19274         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
19275         already removed stmts when draining to_remove.
19277 2023-03-29  Richard Biener  <rguenther@suse.de>
19279         PR ipa/106124
19280         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
19281         so we can re-create the DIE for the type if required.
19283 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
19284             Richard Biener  <rguenther@suse.de>
19286         PR tree-optimization/109301
19287         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
19288         properties_provided from PROP_gimple_opt_math to 0.
19289         (pass_data_expand_powcabs): Change properties_provided from 0 to
19290         PROP_gimple_opt_math.
19292 2023-03-29  Richard Biener  <rguenther@suse.de>
19294         PR tree-optimization/109154
19295         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
19296         inverted condition specially by inverting at the caller.
19297         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
19299 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
19301         PR c/107002
19302         * diagnostic-show-locus.cc (column_range::column_range): Factor
19303         out assertion conditional into...
19304         (column_range::valid_p): ...this new function.
19305         (line_corrections::add_hint): Don't attempt to consolidate hints
19306         if it would lead to invalid column_range instances.
19308 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
19310         PR target/109312
19311         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
19312         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
19313         minor refactor.
19315 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
19317         PR rtl-optimization/109187
19318         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
19319         subtraction in three-way comparison.
19321 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
19323         PR tree-optimization/109265
19324         PR tree-optimization/109274
19325         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
19326         not create a relation record is op1 and op2 are the same symbol.
19327         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
19328         handler for this stmt, but create a new record only if this statement
19329         generates a relation based on the ranges.
19330         (gori_compute::compute_operand2_range): Ditto.
19331         * value-relation.h (value_relation::set_relation): Always create the
19332         record that is requested.
19334 2023-03-28  Richard Biener  <rguenther@suse.de>
19336         PR tree-optimization/107087
19337         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
19338         executable regions to avoid useless work and to better
19339         propagate degenerate PHIs.
19341 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
19343         * config/i386/x-mingw32-utf8: update comments.
19345 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
19347         PR target/109072
19348         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
19349         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
19350         variable.
19351         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
19352         New function.
19353         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
19354         after inlining.  Record which decls are loaded from.  Fix handling
19355         of vops for loads and stores.
19356         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
19357         (aarch64_accesses_vector_load_decl_p): Likewise.
19358         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
19359         variable.
19360         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
19361         that loads from a decl, treat vector stores to those decls as
19362         zero cost.
19363         (aarch64_vector_costs::finish_cost): ...and in that case,
19364         if the vector code does nothing more than a store, give the
19365         prologue a zero cost as well.
19367 2023-03-28  Richard Biener  <rguenther@suse.de>
19369         PR bootstrap/84402
19370         PR tree-optimization/108129
19371         * genmatch.cc (lower_for): For (match ...) delay
19372         substituting into the match operator if possible.
19373         (dt_operand::gen_gimple_expr): For user_id look at the
19374         first substitute for determining how to access operands.
19375         (dt_operand::gen_generic_expr): Likewise.
19376         (dt_node::gen_kids): Properly sort user_ids according
19377         to their substitutes.
19378         (dt_node::gen_kids_1): Code-generate user_id matching.
19380 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
19381             Jonathan Wakely  <jwakely@redhat.com>
19383         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
19384         Use subcommand rather than sub-command in function comments.
19386 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
19388         PR tree-optimization/109154
19389         * value-range.h (frange::flush_denormals_to_zero): Make it public
19390         rather than private.
19391         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
19392         here.
19393         * range-op-float.cc (range_operator_float::fold_range): Call
19394         flush_denormals_to_zero.
19396 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
19398         PR middle-end/106190
19399         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
19400         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
19402 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
19404         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
19405         as 4th argument to set to avoid clear_nan and union_ calls.
19407 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
19409         PR target/109276
19410         * config/i386/i386.cc (assign_386_stack_local): For DImode
19411         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
19412         align 32 rather than 0 to assign_stack_local.
19414 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
19416         PR target/109140
19417         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
19418         on operand #3 to get the final condition code.  Use std::swap.
19419         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
19420         (fucmp<gcond:code>8<P:mode>_vis): Move around.
19421         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
19422         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
19424 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
19426         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
19427         top-level sections.
19429 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
19431         * config.host: Pull in i386/x-mingw32-utf8 Makefile
19432         fragment and reference utf8rc-mingw32.o explicitly
19433         for mingw hosts.
19434         * config/i386/sym-mingw32.cc: prevent name mangling of
19435         stub symbol.
19436         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
19437         depend on manifest file explicitly.
19439 2023-03-28  Richard Biener  <rguenther@suse.de>
19441         Revert:
19442         2023-03-27  Richard Biener  <rguenther@suse.de>
19444         PR rtl-optimization/109237
19445         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
19447 2023-03-28  Richard Biener  <rguenther@suse.de>
19449         * common.opt (gdwarf): Remove Negative(gdwarf-).
19451 2023-03-28  Richard Biener  <rguenther@suse.de>
19453         * common.opt (gdwarf): Add RejectNegative.
19454         (gdwarf-): Likewise.
19455         (ggdb): Likewise.
19456         (gvms): Likewise.
19458 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
19460         * config/cris/constraints.md ("T"): Correct to
19461         define_memory_constraint.
19463 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
19465         * config/cris/cris.md (BW2): New mode-iterator.
19466         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
19467         peephole2s.
19469 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
19471         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
19472         for possible eliminable compares.
19474 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
19476         * config/cris/constraints.md ("R"): Remove unused constraint.
19478 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
19480         PR gcov-profile/109297
19481         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
19482         (merge_stream_usage): Likewise.
19483         (overlap_usage): Likewise.
19485 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
19487         PR target/109296
19488         * config/riscv/thead.md: Add missing mode specifiers.
19490 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
19491             Jiangning Liu  <jiangning.liu@amperecomputing.com>
19492             Manolis Tsamis  <manolis.tsamis@vrull.eu>
19494         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
19496 2023-03-27  Richard Biener  <rguenther@suse.de>
19498         PR rtl-optimization/109237
19499         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
19501 2023-03-27  Richard Biener  <rguenther@suse.de>
19503         PR lto/109263
19504         * lto-wrapper.cc (run_gcc): Parse alternate debug options
19505         as well, they always enable debug.
19507 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
19509         PR target/109167
19510         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
19511         from ...
19512         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
19514 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
19516         PR target/109082
19517         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
19518         than zero when calling vec_sld.
19519         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
19520         zero when calling vec_sld.
19521         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
19522         than zero when calling vec_sld.
19524 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
19526         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
19527         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
19528         loops are represented and which fields are vectors.  Add
19529         documentation for OMP_FOR_PRE_BODY field.  Document internal
19530         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
19531         * tree.def (OMP_FOR): Make documentation consistent with the
19532         Texinfo manual, to fill some gaps and correct errors.
19534 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
19536         PR target/106282
19537         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
19538         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
19539         (handle_move_double): Call it before handle_movsi.
19540         * config/m68k/m68k-protos.h: Declare it.
19542 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
19544         PR tree-optimization/109230
19545         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
19547 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
19549         PR ipa/105685
19550         * predict.cc (compute_function_frequency): Don't call
19551         warn_function_cold if function already has cold attribute.
19553 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
19555         * doc/install.texi: Remove anachronistic note
19556         related to languages built and separate source tarballs.
19558 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
19560         PR analyzer/109098
19561         * diagnostic-format-sarif.cc (read_until_eof): Delete.
19562         (maybe_read_file): Delete.
19563         (sarif_builder::maybe_make_artifact_content_object): Use
19564         get_source_file_content rather than maybe_read_file.
19565         Reject it if it's not valid UTF-8.
19566         * input.cc (file_cache_slot::get_full_file_content): New.
19567         (get_source_file_content): New.
19568         (selftest::check_cpp_valid_utf8_p): New.
19569         (selftest::test_cpp_valid_utf8_p): New.
19570         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
19571         * input.h (get_source_file_content): New prototype.
19573 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
19575         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
19576         debugging options.
19577         (Special Functions for Debugging the Analyzer): Convert to a
19578         table, and rewrite in places.
19579         (Other Debugging Techniques): Add notes on how to compare two
19580         different exploded graphs.
19582 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
19584         PR other/109163
19585         * json.cc: Update comments to indicate that we now preserve
19586         insertion order of keys within objects.
19587         (object::print): Traverse keys in insertion order.
19588         (object::set): Preserve insertion order of keys.
19589         (selftest::test_writing_objects): Add an additional key to verify
19590         that we preserve insertion order.
19591         * json.h (object::m_keys): New field.
19593 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
19595         PR tree-optimization/109238
19596         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
19597         predecessors which this block dominates.
19599 2023-03-24  Richard Biener  <rguenther@suse.de>
19601         PR tree-optimization/106912
19602         * tree-profile.cc (tree_profiling): Update stmts only when
19603         profiling or testing coverage.  Make sure to update calls
19604         fntype, stripping 'const' there.
19606 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
19608         PR middle-end/109258
19609         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
19610         if target == const0_rtx.
19612 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
19614         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
19615         Document options and effective targets.
19617 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
19619         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
19620         optional.
19622 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
19624         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
19625         non-earlyclobber alternative.
19627 2023-03-23  Andrew Pinski  <apinski@marvell.com>
19629         PR c/84900
19630         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
19631         as a lvalue.
19633 2023-03-23  Richard Biener  <rguenther@suse.de>
19635         PR tree-optimization/107569
19636         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
19637         Do not push SSA names with zero uses as available leader.
19638         (process_bb): Likewise.
19640 2023-03-23  Richard Biener  <rguenther@suse.de>
19642         PR tree-optimization/109262
19643         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
19644         combining a piecewise complex load avoid touching loads
19645         that throw internally.  Use fun, not cfun throughout.
19647 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
19649         * value-range.cc (irange::irange_union, irange::intersect): Fix
19650         comment spelling bugs.
19651         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
19652         * gimple-range-trace.h: Likewise.
19653         * gimple-range-edge.cc: Likewise.
19654         (gimple_outgoing_range_stmt_p,
19655         gimple_outgoing_range::switch_edge_range,
19656         gimple_outgoing_range::edge_range_p): Likewise.
19657         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
19658         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
19659         assume_query::assume_query, assume_query::calculate_phi): Likewise.
19660         * gimple-range-edge.h: Likewise.
19661         * value-range.h (Value_Range::set, Value_Range::lower_bound,
19662         Value_Range::upper_bound, frange::set_undefined): Likewise.
19663         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
19664         gori_compute): Likewise.
19665         * gimple-range-fold.h (fold_using_range): Likewise.
19666         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
19667         Likewise.
19668         * gimple-range-gori.cc (range_def_chain::in_chain_p,
19669         range_def_chain::dump, gori_map::calculate_gori,
19670         gori_compute::compute_operand_range_switch,
19671         gori_compute::logical_combine, gori_compute::refine_using_relation,
19672         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
19673         Likewise.
19674         * gimple-range.h: Likewise.
19675         (enable_ranger): Likewise.
19676         * range-op.h (empty_range_varying): Likewise.
19677         * value-query.h (value_query): Likewise.
19678         * gimple-range-cache.cc (block_range_cache::set_bb_range,
19679         block_range_cache::dump, ssa_global_cache::clear_global_range,
19680         temporal_cache::temporal_value, temporal_cache::current_p,
19681         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
19682         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
19683         Likewise.
19684         * gimple-range-fold.cc (fur_edge::get_phi_operand,
19685         fur_stmt::get_operand, gimple_range_adjustment,
19686         fold_using_range::range_of_phi,
19687         fold_using_range::relation_fold_and_or): Likewise.
19688         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
19689         * value-query.cc (range_query::value_of_expr,
19690         range_query::value_on_edge, range_query::query_relation): Likewise.
19691         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
19692         intersect_range_with_nonzero_bits): Likewise.
19693         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
19694         exit_range): Likewise.
19695         * value-relation.h: Likewise.
19696         (equiv_oracle, relation_trio::relation_trio, value_relation,
19697         value_relation::value_relation, pe_min): Likewise.
19698         * range-op-float.cc (range_operator_float::rv_fold,
19699         frange_arithmetic, foperator_unordered_equal::op1_range,
19700         foperator_div::rv_fold): Likewise.
19701         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
19702         * value-relation.cc (equiv_oracle::query_relation,
19703         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
19704         value_relation::apply_transitive, relation_chain_head::find_relation,
19705         dom_oracle::query_relation, dom_oracle::find_relation_block,
19706         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
19707         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
19708         create_possibly_reversed_range, adjust_op1_for_overflow,
19709         operator_mult::wi_fold, operator_exact_divide::op1_range,
19710         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
19711         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
19712         range_op_lshift_tests): Likewise.
19714 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
19716         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
19717         (move_callee_saved_registers): Detect the bug condition early.
19719 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
19721         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
19722         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
19723         (V_2REG_ALT): New.
19724         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
19725         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
19726         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
19727         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
19728         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
19730 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
19732         PR tree-optimization/109176
19733         * tree-vect-generic.cc (expand_vector_condition): If a has
19734         vector boolean type and is a comparison, also check if both
19735         the comparison and VEC_COND_EXPR could be successfully expanded
19736         individually.
19738 2023-03-23  Pan Li  <pan2.li@intel.com>
19739             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19741         PR target/108654
19742         PR target/108185
19743         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
19744         for vector mask modes.
19745         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
19746         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
19748 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
19750         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
19752 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19754         PR target/109244
19755         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
19756         (emit_vlmax_op): Ditto.
19757         * config/riscv/riscv-v.cc (get_sew): New function.
19758         (emit_vlmax_vsetvl): Adapt function.
19759         (emit_pred_op): Ditto.
19760         (emit_vlmax_op): Ditto.
19761         (emit_nonvlmax_op): Ditto.
19762         (legitimize_move): Fix LRA ICE.
19763         (gen_no_side_effects_vsetvl_rtx): Adapt function.
19764         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
19765         (@mov<VB:mode><P:mode>_lra): Ditto.
19766         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
19767         (*mov<VB:mode><P:mode>_lra): Ditto.
19769 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19771         PR target/109228
19772         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
19773         __riscv_vlenb support.
19774         (BASE): Ditto.
19775         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19776         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
19777         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
19778         (SHAPE): Ditto.
19779         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19780         * config/riscv/riscv-vector-builtins.cc: Ditto.
19782 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19783             kito-cheng  <kito.cheng@sifive.com>
19785         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
19786         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
19787         (pass_vsetvl::need_vsetvl): Fix bugs.
19788         (pass_vsetvl::backward_demand_fusion): Fix bugs.
19789         (pass_vsetvl::demand_fusion): Fix bugs.
19790         (eliminate_insn): Fix bugs.
19791         (insert_vsetvl): Ditto.
19792         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
19793         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
19794         * config/riscv/vector.md: Ditto.
19796 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19797             kito-cheng  <kito.cheng@sifive.com>
19799         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
19800         * config/riscv/vector-iterators.md (nmsac): Ditto.
19801         (nmsub): Ditto.
19802         (msac): Ditto.
19803         (msub): Ditto.
19804         (nmadd): Ditto.
19805         (nmacc): Ditto.
19806         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
19807         (@pred_mul_plus<mode>): Ditto.
19808         (*pred_madd<mode>): Ditto.
19809         (*pred_macc<mode>): Ditto.
19810         (*pred_mul_plus<mode>): Ditto.
19811         (@pred_mul_plus<mode>_scalar): Ditto.
19812         (*pred_madd<mode>_scalar): Ditto.
19813         (*pred_macc<mode>_scalar): Ditto.
19814         (*pred_mul_plus<mode>_scalar): Ditto.
19815         (*pred_madd<mode>_extended_scalar): Ditto.
19816         (*pred_macc<mode>_extended_scalar): Ditto.
19817         (*pred_mul_plus<mode>_extended_scalar): Ditto.
19818         (@pred_minus_mul<mode>): Ditto.
19819         (*pred_<madd_nmsub><mode>): Ditto.
19820         (*pred_nmsub<mode>): Ditto.
19821         (*pred_<macc_nmsac><mode>): Ditto.
19822         (*pred_nmsac<mode>): Ditto.
19823         (*pred_mul_<optab><mode>): Ditto.
19824         (*pred_minus_mul<mode>): Ditto.
19825         (@pred_mul_<optab><mode>_scalar): Ditto.
19826         (@pred_minus_mul<mode>_scalar): Ditto.
19827         (*pred_<madd_nmsub><mode>_scalar): Ditto.
19828         (*pred_nmsub<mode>_scalar): Ditto.
19829         (*pred_<macc_nmsac><mode>_scalar): Ditto.
19830         (*pred_nmsac<mode>_scalar): Ditto.
19831         (*pred_mul_<optab><mode>_scalar): Ditto.
19832         (*pred_minus_mul<mode>_scalar): Ditto.
19833         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
19834         (*pred_nmsub<mode>_extended_scalar): Ditto.
19835         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
19836         (*pred_nmsac<mode>_extended_scalar): Ditto.
19837         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
19838         (*pred_minus_mul<mode>_extended_scalar): Ditto.
19839         (*pred_<madd_msub><mode>): Ditto.
19840         (*pred_<macc_msac><mode>): Ditto.
19841         (*pred_<madd_msub><mode>_scalar): Ditto.
19842         (*pred_<macc_msac><mode>_scalar): Ditto.
19843         (@pred_neg_mul_<optab><mode>): Ditto.
19844         (@pred_mul_neg_<optab><mode>): Ditto.
19845         (*pred_<nmadd_msub><mode>): Ditto.
19846         (*pred_<nmsub_nmadd><mode>): Ditto.
19847         (*pred_<nmacc_msac><mode>): Ditto.
19848         (*pred_<nmsac_nmacc><mode>): Ditto.
19849         (*pred_neg_mul_<optab><mode>): Ditto.
19850         (*pred_mul_neg_<optab><mode>): Ditto.
19851         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
19852         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
19853         (*pred_<nmadd_msub><mode>_scalar): Ditto.
19854         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
19855         (*pred_<nmacc_msac><mode>_scalar): Ditto.
19856         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
19857         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
19858         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
19859         (@pred_widen_neg_mul_<optab><mode>): Ditto.
19860         (@pred_widen_mul_neg_<optab><mode>): Ditto.
19861         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
19862         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
19864 2023-03-23  liuhongt  <hongtao.liu@intel.com>
19866         * builtins.cc (builtin_memset_read_str): Replace
19867         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
19868         (builtin_memset_gen_str): Ditto.
19869         * config/i386/i386-expand.cc
19870         (ix86_convert_const_wide_int_to_broadcast): Replace
19871         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
19872         (ix86_expand_vector_move): Ditto.
19873         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
19874         Removed.
19875         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
19876         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
19877         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
19878         * doc/tm.texi.in: Ditto.
19879         * target.def: Ditto.
19881 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
19883         * lra.cc (lra): Do not repeat inheritance and live range splitting
19884         when asm error is found.
19886 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
19888         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
19889         (gcn_expand_dpp_distribute_even_insn)
19890         (gcn_expand_dpp_distribute_odd_insn): Declare.
19891         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
19892         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
19893         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
19894         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
19895         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
19896         (fms<mode>4_negop2): New patterns.
19897         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
19898         (gcn_expand_dpp_distribute_even_insn)
19899         (gcn_expand_dpp_distribute_odd_insn): New functions.
19900         * config/gcn/gcn.md: Add entries to unspec enum.
19902 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
19904         PR tree-optimization/109008
19905         * value-range.cc (frange::set): Add nan_state argument.
19906         * value-range.h (class nan_state): New.
19907         (frange::get_nan_state): New.
19909 2023-03-22  Martin Liska  <mliska@suse.cz>
19911         * configure: Regenerate.
19913 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
19915         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
19916         to variants.
19918 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
19920         PR tree-optimization/109192
19921         * gimple-range-gori.cc (gori_compute::compute_operand_range):
19922         Terminate gori calculations if a relation is not relevant.
19923         * value-relation.h (value_relation::set_relation): Allow
19924         equality between op1 and op2 if they are the same.
19926 2023-03-21  Richard Biener  <rguenther@suse.de>
19928         PR tree-optimization/109219
19929         * tree-vect-loop.cc (vectorizable_reduction): Check
19930         slp_node, not STMT_SLP_TYPE.
19931         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
19932         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
19933         Remove assertion on STMT_SLP_TYPE.
19935 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
19937         PR tree-optimization/109215
19938         * tree.h (enum special_array_member): Adjust comments for int_0
19939         and trail_0.
19940         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
19941         has zero sized element type and the array has variable number of
19942         elements or constant one or more elements.
19943         (component_ref_size): Adjust comments, formatting fix.
19945 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
19947         * configure.ac: Add check for the Texinfo 6.8
19948         CONTENTS_OUTPUT_LOCATION customization variable and set it if
19949         supported.
19950         * configure: Regenerate.
19951         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
19952         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
19953         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
19954         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
19956 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
19958         * doc/extend.texi: Associate use_hazard_barrier_return index
19959         entry with its attribute.
19960         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
19961         its attribute
19963 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
19965         * doc/implement-c.texi: Remove usage of @gol.
19966         * doc/invoke.texi: Ditto.
19967         * doc/sourcebuild.texi: Ditto.
19968         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
19969         texinfo.tex versions, the bug it was working around appears to
19970         be gone.
19972 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
19974         * doc/include/texinfo.tex: Update to 2023-01-17.19.
19976 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
19978         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
19979         @enddefbuiltin for defining built-in functions.
19980         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
19981         places where it should be used.
19983 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
19985         * doc/extend.texi (Formatted Output Function Checking): New
19986         subsection for  grouping together printf et al.
19987         (Exception handling) Fix missing @ sign before copyright
19988         header, which lead to the copyright line leaking into
19989         '(gcc)Exception handling'.
19990         * doc/gcc.texi: Set document language to en_US.
19991         (@copying): Wrap front cover texts in quotations, move in manual
19992         description text.
19994 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
19996         * doc/gcc.texi: Add the Indices appendix, to make texinfo
19997         generate nice indices overview page.
19999 2023-03-21  Richard Biener  <rguenther@suse.de>
20001         PR tree-optimization/109170
20002         * gimple-range-op.cc (cfn_pass_through_arg1): New.
20003         (gimple_range_op_handler::maybe_builtin_call): Handle
20004         __builtin_expect via cfn_pass_through_arg1.
20006 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
20008         PR target/109067
20009         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
20010         (init_float128_ieee): Delete code to switch complex multiply and divide
20011         for long double.
20012         (complex_multiply_builtin_code): New helper function.
20013         (complex_divide_builtin_code): Likewise.
20014         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
20015         of complex 128-bit multiply and divide built-in functions.
20017 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
20019         PR target/109178
20020         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
20022 2023-03-19  Jonny Grant  <jg@jguk.org>
20024         * doc/extend.texi (Common Function Attributes) <nonnull>:
20025         Correct typo.
20027 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
20029         PR rtl-optimization/109179
20030         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
20031         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
20033 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
20035         PR target/105554
20036         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
20037         to false.
20038         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
20039         to allocate_struct_function instead of false.
20040         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
20041         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
20042         push_struct_function.  Call targetm.target_option.relayout_function
20043         after it.
20044         (tree_function_versioning): Formatting fix.
20046 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
20048         * lra-constraints.cc: Include hooks.h.
20049         (combine_reload_insn): New function.
20050         (lra_constraints): Call it.
20052 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20053             kito-cheng  <kito.cheng@sifive.com>
20055         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
20056         as legitimate value.
20057         * config/riscv/riscv-vector-builtins.cc
20058         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
20059         (function_expander::use_widen_ternop_insn): Ditto.
20060         * config/riscv/vector.md (@vundefined<mode>): New pattern.
20061         (pred_mul_<optab><mode>_undef_merge): Remove.
20062         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
20063         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
20064         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
20065         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
20067 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20069         PR target/109092
20070         * config/riscv/riscv.md: Fix subreg bug.
20072 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
20074         PR middle-end/108685
20075         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
20076         use its loop_father rather than BODY_BB's loop_father.
20077         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
20078         If broken_loop with ordered > collapse and at least one of those
20079         extra loops aren't guaranteed to have at least one iteration, change
20080         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
20081         loop_father to l0_bb's loop_father rather than l1_bb's.
20083 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
20085         PR plugins/108634
20086         * gdbhooks.py (TreePrinter.to_string): Wrap
20087         gdb.parse_and_eval('tree_code_type') in a try block, parse
20088         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
20089         raises exception.  Update comments for the recent tree_code_type
20090         changes.
20092 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
20094         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
20095         issues.  Add more line breaks to example so it doesn't overflow
20096         the margins.
20098 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
20100         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
20101         line breaks in examples.
20102         <malloc>: Fix bad line breaks in running text, also copy-edit
20103         for consistency.
20104         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
20105         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
20106         @gol.
20107         (C++ Dialect Options) <-fcontracts>: Add line break in example.
20108         <-Wctad-maybe-unsupported>: Likewise.
20109         <-Winvalid-constexpr>: Likewise.
20110         (Warning Options) <-Wdangling-pointer>: Likewise.
20111         <-Winterference-size>: Likewise.
20112         <-Wvla-parameter>: Likewise.
20113         (Static Analyzer Options): Fix bad line breaks in running text,
20114         plus add some missing markup.
20115         (Optimize Options) <openacc-privatization>: Fix more bad line
20116         breaks in running text.
20118 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
20120         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
20121         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
20122         (expand_vec_perm_2perm_pblendv): Ditto.
20124 2023-03-16  Martin Liska  <mliska@suse.cz>
20126         PR middle-end/106133
20127         * gcc.cc (driver_handle_option): Use x_main_input_basename
20128         if x_dump_base_name is null.
20129         * opts.cc (common_handle_option): Likewise.
20131 2023-03-16  Richard Biener  <rguenther@suse.de>
20133         PR tree-optimization/109123
20134         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
20135         Do not emit -Wuse-after-free late.
20136         (pass_waccess::check_call): Always check call pointer uses.
20138 2023-03-16  Richard Biener  <rguenther@suse.de>
20140         PR tree-optimization/109141
20141         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
20142         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
20143         out from ...
20144         (renumber_gimple_stmt_uids): ... here and
20145         (renumber_gimple_stmt_uids_in_blocks): ... here.
20146         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
20147         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
20148         to PHIs.
20149         (pass_waccess::check_pointer_uses): Process all PHIs.
20151 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
20153         PR analyzer/109097
20154         * diagnostic-format-sarif.cc (class sarif_invocation): New.
20155         (class sarif_ice_notification): New.
20156         (sarif_builder::m_invocation_obj): New field.
20157         (sarif_invocation::add_notification_for_ice): New.
20158         (sarif_invocation::prepare_to_flush): New.
20159         (sarif_ice_notification::sarif_ice_notification): New.
20160         (sarif_builder::sarif_builder): Add m_invocation_obj.
20161         (sarif_builder::end_diagnostic): Special-case DK_ICE and
20162         DK_ICE_NOBT.
20163         (sarif_builder::flush_to_file): Call prepare_to_flush on
20164         m_invocation_obj.  Pass the latter to make_top_level_object.
20165         (sarif_builder::make_result_object): Move creation of "locations"
20166         array to...
20167         (sarif_builder::make_locations_arr): ...this new function.
20168         (sarif_builder::make_top_level_object): Add "invocation_obj" param
20169         and pass it to make_run_object.
20170         (sarif_builder::make_run_object): Add "invocation_obj" param and
20171         use it.
20172         (sarif_ice_handler): New callback.
20173         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
20174         * diagnostic.cc (diagnostic_initialize): Initialize new field
20175         "ice_handler_cb".
20176         (diagnostic_action_after_output): If it is set, make one attempt
20177         to call ice_handler_cb.
20178         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
20180 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
20182         * config/i386/i386-expand.cc (expand_vec_perm_blend):
20183         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
20184         and fix V2HImode handling.
20185         (expand_vec_perm_1): Try to emit BLEND instruction
20186         before MOVSS/MOVSD.
20187         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
20189 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
20191         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
20193 2023-03-15  Richard Biener  <rguenther@suse.de>
20195         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
20196         Do not diagnose clobbers.
20198 2023-03-15  Richard Biener  <rguenther@suse.de>
20200         PR tree-optimization/109139
20201         * tree-ssa-live.cc (remove_unused_locals): Look at the
20202         base address for unused decls on the LHS of .DEFERRED_INIT.
20204 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
20206         PR other/109086
20207         * builtins.cc (inline_string_cmp): Force the character
20208         difference into "result" pseudo-register, instead of reassign
20209         the pseudo-register.
20211 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20213         * config.gcc: Add thead.o to RISC-V extra_objs.
20214         * config/riscv/peephole.md: Add mempair peephole passes.
20215         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
20216         prototype.
20217         (th_mempair_operands_p): Likewise.
20218         (th_mempair_order_operands): Likewise.
20219         (th_mempair_prepare_save_restore_operands): Likewise.
20220         (th_mempair_save_restore_regs): Likewise.
20221         (th_mempair_output_move): Likewise.
20222         * config/riscv/riscv.cc (riscv_save_reg): Move code.
20223         (riscv_restore_reg): Move code.
20224         (riscv_for_each_saved_reg): Add code to emit mempair insns.
20225         * config/riscv/t-riscv: Add thead.cc.
20226         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
20227         New insn.
20228         (*th_mempair_store_<GPR:mode>2): Likewise.
20229         (*th_mempair_load_extendsidi2): Likewise.
20230         (*th_mempair_load_zero_extendsidi2): Likewise.
20231         * config/riscv/thead.cc: New file.
20233 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20235         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
20236         New constraint "th_f_fmv".
20237         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
20238         "th_r_fmv".
20239         * config/riscv/riscv.cc (riscv_split_doubleword_move):
20240         Add split code for XTheadFmv.
20241         (riscv_secondary_memory_needed): XTheadFmv does not need
20242         secondary memory.
20243         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
20244         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
20245         movdf_hardfloat_rv32.
20246         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
20247         (th_fmv_x_w): New INSN.
20248         (th_fmv_x_hw): New INSN.
20250 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20252         * config/riscv/riscv.md (maddhisi4): New expand.
20253         (msubhisi4): New expand.
20254         * config/riscv/thead.md (*th_mula<mode>): New pattern.
20255         (*th_mulawsi): New pattern.
20256         (*th_mulawsi2): New pattern.
20257         (*th_maddhisi4): New pattern.
20258         (*th_sextw_maddhisi4): New pattern.
20259         (*th_muls<mode>): New pattern.
20260         (*th_mulswsi): New pattern.
20261         (*th_mulswsi2): New pattern.
20262         (*th_msubhisi4): New pattern.
20263         (*th_sextw_msubhisi4): New pattern.
20265 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20267         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
20268         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
20269         Add prototype.
20270         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
20271         XTheadCondMov.
20272         (riscv_expand_conditional_move): New function.
20273         (riscv_expand_conditional_move_onesided): New function.
20274         * config/riscv/riscv.md: Add support for XTheadCondMov.
20275         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
20276         support for XTheadCondMov.
20277         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
20279 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20281         * config/riscv/bitmanip.md (clzdi2): New expand.
20282         (clzsi2): New expand.
20283         (ctz<mode>2): New expand.
20284         (popcount<mode>2): New expand.
20285         (<bitmanip_optab>si2): Rename INSN.
20286         (*<bitmanip_optab>si2): Hide INSN name.
20287         (<bitmanip_optab>di2): Rename INSN.
20288         (*<bitmanip_optab>di2): Hide INSN name.
20289         (rotrsi3): Remove INSN.
20290         (rotr<mode>3): Add expand.
20291         (*rotrsi3): New INSN.
20292         (rotrdi3): Rename INSN.
20293         (*rotrdi3): Hide INSN name.
20294         (rotrsi3_sext): Rename INSN.
20295         (*rotrsi3_sext): Hide INSN name.
20296         (bswap<mode>2): Remove INSN.
20297         (bswapdi2): Add expand.
20298         (bswapsi2): Add expand.
20299         (*bswap<mode>2): Hide INSN name.
20300         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
20301         extraction.
20302         * config/riscv/riscv.md (extv<mode>): New expand.
20303         (extzv<mode>): New expand.
20304         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
20305         (*th_ext<mode>): New INSN.
20306         (*th_extu<mode>): New INSN.
20307         (*th_clz<mode>2): New INSN.
20308         (*th_rev<mode>2): New INSN.
20310 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20312         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
20313         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
20315 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20317         * config/riscv/riscv.md: Include thead.md
20318         * config/riscv/thead.md: New file.
20320 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20322         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
20324 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
20326         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
20327         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
20328         (MASK_XTHEADBB): New.
20329         (MASK_XTHEADBS): New.
20330         (MASK_XTHEADCMO): New.
20331         (MASK_XTHEADCONDMOV): New.
20332         (MASK_XTHEADFMEMIDX): New.
20333         (MASK_XTHEADFMV): New.
20334         (MASK_XTHEADINT): New.
20335         (MASK_XTHEADMAC): New.
20336         (MASK_XTHEADMEMIDX): New.
20337         (MASK_XTHEADMEMPAIR): New.
20338         (MASK_XTHEADSYNC): New.
20339         (TARGET_XTHEADBA): New.
20340         (TARGET_XTHEADBB): New.
20341         (TARGET_XTHEADBS): New.
20342         (TARGET_XTHEADCMO): New.
20343         (TARGET_XTHEADCONDMOV): New.
20344         (TARGET_XTHEADFMEMIDX): New.
20345         (TARGET_XTHEADFMV): New.
20346         (TARGET_XTHEADINT): New.
20347         (TARGET_XTHEADMAC): New.
20348         (TARGET_XTHEADMEMIDX): New.
20349         (TARGET_XTHEADMEMPAIR): new.
20350         (TARGET_XTHEADSYNC): New.
20351         * config/riscv/riscv.opt: Add riscv_xthead_subext.
20353 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
20355         PR target/109117
20356         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
20357         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
20358         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
20360 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
20362         PR target/109109
20363         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
20364         when lo is equal to dhi and hi is a MEM which uses dlo register.
20366 2023-03-14  Martin Jambor  <mjambor@suse.cz>
20368         PR ipa/107925
20369         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
20370         global0 instead of zeroing when it does not have as many counts as
20371         it should.
20373 2023-03-14  Martin Jambor  <mjambor@suse.cz>
20375         PR ipa/107925
20376         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
20377         ipa count, remove assert, lenient_count_portion_handling, dump
20378         also orig_node_count.
20380 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
20382         * config/i386/i386-expand.cc (expand_vec_perm_movs):
20383         Handle V2SImode for TARGET_MMX_WITH_SSE.
20384         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
20385         using V2FI mode iterator to handle both V2SI and V2SF modes.
20387 2023-03-14  Sam James  <sam@gentoo.org>
20389         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
20390         including <sstream> earlier.
20391         * system.h: Add INCLUDE_SSTREAM.
20393 2023-03-14  Richard Biener  <rguenther@suse.de>
20395         * tree-ssa-live.cc (remove_unused_locals): Do not treat
20396         the .DEFERRED_INIT of a variable as use, instead remove
20397         that if it is the only use.
20399 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
20401         PR rtl-optimization/107762
20402         * expr.cc (emit_group_store): Revert latest change.
20404 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20406         PR tree-optimization/109005
20407         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
20408         aggregate type check.
20410 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
20412         PR tree-optimization/109115
20413         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
20414         r.upper_bound () on r.undefined_p () range.
20416 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
20418         PR tree-optimization/106896
20419         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
20420         implementatoin with probability_in; avoid some asserts.
20422 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
20424         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
20426 2023-03-13  Sean Bright  <sean@seanbright.com>
20428         * doc/invoke.texi (Warning Options): Remove errant 'See'
20429         before @xref.
20431 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
20433         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
20434         REG_OK_FOR_BASE_P): Remove.
20436 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20438         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
20439         (=vd,vd,vr,vr): Ditto.
20440         * config/riscv/vector.md: Ditto.
20442 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20444         * config/riscv/riscv-vector-builtins.cc
20445         (function_expander::use_compare_insn): Add operand predicate check.
20447 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20449         * config/riscv/vector.md: Fine tune RA constraints.
20451 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
20453         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
20454         hsaco assemble/link.
20456 2023-03-13  Richard Biener  <rguenther@suse.de>
20458         PR tree-optimization/109046
20459         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
20460         piecewise complex loads.
20462 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
20464         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
20465         (aarch64_bf16_ptr_type_node): Adjust comment.
20466         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
20467         bfloat16_type_node rather than aarch64_bf16_type_node.
20468         (aarch64_libgcc_floating_mode_supported_p,
20469         aarch64_scalar_mode_supported_p): Also support BFmode.
20470         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
20471         (aarch64_invalid_binary_op): Remove BFmode related rejections.
20472         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
20473         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
20474         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
20475         aarch64_bf16_type_node.
20476         (aarch64_init_simd_builtin_types): Likewise.
20477         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
20478         which is created in tree.cc already.
20479         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
20481 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
20483         PR middle-end/109031
20484         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
20485         ensure that the type of x is as wide or wider than the type of a.
20487 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
20489         PR target/108583
20490         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
20491         (*bitmask_shift_plus<mode>): New.
20492         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
20493         (@aarch64_bitmask_udiv<mode>3): Remove.
20494         * config/aarch64/aarch64.cc
20495         (aarch64_vectorize_can_special_div_by_constant,
20496         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
20497         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
20498         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
20500 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
20502         PR target/108583
20503         * target.def (preferred_div_as_shifts_over_mult): New.
20504         * doc/tm.texi.in: Document it.
20505         * doc/tm.texi: Regenerate.
20506         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
20507         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
20508         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
20510 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
20511             Richard Sandiford  <richard.sandiford@arm.com>
20513         PR target/108583
20514         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
20515         single use.
20517 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
20518             Andrew MacLeod  <amacleod@redhat.com>
20520         PR target/108583
20521         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
20522         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
20523         Use it.
20524         (gimple_range_op_handler::maybe_non_standard): New.
20525         * range-op.cc (class operator_widen_plus_signed,
20526         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
20527         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
20528         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
20529         operator_widen_mult_unsigned::wi_fold,
20530         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
20531         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
20532         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
20533         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
20535 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
20537         PR target/108583
20538         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
20539         * doc/tm.texi.in: Likewise.
20540         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
20541         * expmed.cc (expand_divmod): Likewise.
20542         * expmed.h (expand_divmod): Likewise.
20543         * expr.cc (force_operand, expand_expr_divmod): Likewise.
20544         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
20545         * target.def (can_special_div_by_const): Remove.
20546         * target.h: Remove tree-core.h include
20547         * targhooks.cc (default_can_special_div_by_const): Remove.
20548         * targhooks.h (default_can_special_div_by_const): Remove.
20549         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
20550         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
20551         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
20553 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
20555         * doc/install.texi2html: Fix issue number typo in comment.
20557 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
20559         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
20560         bool.
20562 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
20564         * doc/invoke.texi (Optimize Options):  Add markup to
20565         description of asan-kernel-mem-intrinsic-prefix, and clarify
20566         wording slightly.
20568 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
20570         * doc/extend.texi (Named Address Spaces): Drop a redundant link
20571         to AVR-LibC.
20573 2023-03-11  Jeff Law  <jlaw@ventanamicro>
20575         PR web/88860
20576         * doc/extend.texi: Clarify Attribute Syntax a bit.
20578 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
20580         * doc/install.texi (Prerequisites): Suggest using newer versions
20581         of Texinfo.
20582         (Final install): Clean up and modernize discussion of how to
20583         build or obtain the GCC manuals.
20584         * doc/install.texi2html: Update comment to point to the PR instead
20585         of "makeinfo 4.7 brokenness" (it's not specific to that version).
20587 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
20589         PR target/107703
20590         * optabs.cc (expand_fix): For conversions from BFmode to integral,
20591         use shifts to convert it to SFmode first and then convert SFmode
20592         to integral.
20594 2023-03-10  Andrew Pinski  <apinski@marvell.com>
20596         * config/aarch64/aarch64.md: Add a new define_split
20597         to help combine.
20599 2023-03-10  Richard Biener  <rguenther@suse.de>
20601         * tree-ssa-structalias.cc (solve_graph): Immediately
20602         iterate self-cycles.
20604 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
20606         PR tree-optimization/109008
20607         * range-op-float.cc (float_widen_lhs_range): If not
20608         -frounding-math and not IBM double double format, extend lhs
20609         range just by 0.5ulp rather than 1ulp in each direction.
20611 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
20613         PR target/107998
20614         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
20615         $tmake_file.
20616         * config/i386/t-cygwin-w64: Remove.
20618 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
20620         PR plugins/108634
20621         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
20622         C++14, don't declare as extern const arrays.
20623         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
20624         static constexpr member arrays for C++11 or C++14.
20625         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
20626         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
20627         (TREE_CODE_LENGTH): For C++11 or C++14 use
20628         tree_code_length_tmpl <0>::tree_code_length instead of
20629         tree_code_length.
20630         * tree.cc (tree_code_type, tree_code_length): Remove.
20632 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
20634         PR other/108464
20635         * common.opt (fcanon-prefix-map): New option.
20636         * opts.cc: Include file-prefix-map.h.
20637         (flag_canon_prefix_map): New variable.
20638         (common_handle_option): Handle OPT_fcanon_prefix_map.
20639         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
20640         * file-prefix-map.h (flag_canon_prefix_map): Declare.
20641         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
20642         member.
20643         (add_prefix_map): Initialize canonicalize member from
20644         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
20645         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
20646         use lrealpath result only for map->canonicalize map entries.
20647         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
20648         * opts-global.cc (handle_common_deferred_options): Clear
20649         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
20650         * doc/invoke.texi (-fcanon-prefix-map): Document.
20651         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
20652         see also for -fcanon-prefix-map.
20653         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
20655 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
20657         PR c/108079
20658         * cgraphunit.cc (check_global_declaration): Don't warn for unused
20659         variables which have OPT_Wunused_variable warning suppressed.
20661 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
20663         PR tree-optimization/109008
20664         * range-op-float.cc (float_widen_lhs_range): If lb is
20665         minimum representable finite number or ub is maximum
20666         representable finite number, instead of widening it to
20667         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
20668         Temporarily clear flag_finite_math_only when canonicalizing
20669         the widened range.
20671 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20673         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
20674         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
20675         (gimple_fold_builtin):  Ditto.
20676         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
20677         (class vleff): Ditto.
20678         (BASE): Ditto.
20679         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20680         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
20681         (vleff): Ditto.
20682         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
20683         (struct fault_load_def): Ditto.
20684         (SHAPE): Ditto.
20685         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20686         * config/riscv/riscv-vector-builtins.cc
20687         (rvv_arg_type_info::get_tree_type): Add size_ptr.
20688         (gimple_folder::gimple_folder): New class.
20689         (gimple_folder::fold): Ditto.
20690         (gimple_fold_builtin): New function.
20691         (get_read_vl_instance): Ditto.
20692         (get_read_vl_decl): Ditto.
20693         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
20694         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
20695         (get_read_vl_instance): New function.
20696         (get_read_vl_decl):  Ditto.
20697         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
20698         (read_vl_insn_p): Ditto.
20699         (available_occurrence_p): Ditto.
20700         (backward_propagate_worthwhile_p): Ditto.
20701         (gen_vsetvl_pat): Adapt for vleff support.
20702         (get_forward_read_vl_insn): New function.
20703         (get_backward_fault_first_load_insn): Ditto.
20704         (source_equal_p): Adapt for vleff support.
20705         (first_ratio_invalid_for_second_sew_p): Remove.
20706         (first_ratio_invalid_for_second_lmul_p): Ditto.
20707         (first_lmul_less_than_second_lmul_p): Ditto.
20708         (first_ratio_less_than_second_ratio_p): Ditto.
20709         (support_relaxed_compatible_p): New function.
20710         (vector_insn_info::operator>): Remove.
20711         (vector_insn_info::operator>=): Refine.
20712         (vector_insn_info::parse_insn): Adapt for vleff support.
20713         (vector_insn_info::compatible_p): Ditto.
20714         (vector_insn_info::update_fault_first_load_avl): New function.
20715         (pass_vsetvl::transfer_after): Adapt for vleff support.
20716         (pass_vsetvl::demand_fusion): Ditto.
20717         (pass_vsetvl::cleanup_insns): Ditto.
20718         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
20719         redundant condtions.
20720         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
20721         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
20722         * config/riscv/riscv.md: Adapt for vleff support.
20723         * config/riscv/t-riscv: Ditto.
20724         * config/riscv/vector-iterators.md: New iterator.
20725         * config/riscv/vector.md (read_vlsi): New pattern.
20726         (read_vldi_zero_extend): Ditto.
20727         (@pred_fault_load<mode>): Ditto.
20729 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20731         * config/riscv/riscv-vector-builtins.cc
20732         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
20733         (function_expander::use_widen_ternop_insn): Ditto.
20734         * optabs.cc (maybe_gen_insn): Extend nops handling.
20736 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20738         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
20739         patterns according to RVV ISA.
20740         * config/riscv/vector-iterators.md: New iterators.
20741         * config/riscv/vector.md
20742         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
20743         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
20744         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
20745         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
20746         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
20747         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
20748         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
20749         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
20750         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
20751         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
20752         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
20753         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
20754         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
20755         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
20757 2023-03-10  Michael Collison  <collison@rivosinc.com>
20759         * tree-vect-loop-manip.cc (vect_do_peeling): Use
20760         result of constant_lower_bound instead of vf for the lower
20761         bound of the epilog loop trip count.
20763 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
20765         * passes.cc (emergency_dump_function): Finish graph generation.
20767 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
20769         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
20770         and bottom bit only.
20772 2023-03-09  Andrew Pinski  <apinski@marvell.com>
20774         PR tree-optimization/108980
20775         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
20776         Reorgnize the call to warning for not strict flexible arrays
20777         to be before the check of warned.
20779 2023-03-09  Jason Merrill  <jason@redhat.com>
20781         * doc/extend.texi: Comment out __is_deducible docs.
20783 2023-03-09  Jason Merrill  <jason@redhat.com>
20785         PR c++/105841
20786         * doc/extend.texi (Type Traits):: Document __is_deducible.
20788 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
20790         PR driver/108865
20791         * config.host: add object for x86_64-*-mingw*.
20792         * config/i386/sym-mingw32.cc: dummy file to attach
20793         symbol.
20794         * config/i386/utf8-mingw32.rc: windres resource file.
20795         * config/i386/winnt-utf8.manifest: XML manifest to
20796         enable UTF-8.
20797         * config/i386/x-mingw32: reference to x-mingw32-utf8.
20798         * config/i386/x-mingw32-utf8: Makefile fragment to
20799         embed UTF-8 manifest.
20801 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
20803         * lra-constraints.cc (process_alt_operands): Use operand modes for
20804         clobbered regs instead of the biggest access mode.
20806 2023-03-09  Richard Biener  <rguenther@suse.de>
20808         PR middle-end/108995
20809         * fold-const.cc (extract_muldiv_1): Avoid folding
20810         (CST * b) / CST2 when sanitizing overflow and we rely on
20811         overflow being undefined.
20813 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
20814             Richard Biener  <rguenther@suse.de>
20816         PR tree-optimization/109008
20817         * range-op-float.cc (float_widen_lhs_range): New function.
20818         (foperator_plus::op1_range, foperator_minus::op1_range,
20819         foperator_minus::op2_range, foperator_mult::op1_range,
20820         foperator_div::op1_range, foperator_div::op2_range): Use it.
20822 2023-03-07  Jonathan Grant  <jg@jguk.org>
20824         PR sanitizer/81649
20825         * doc/invoke.texi (Instrumentation Options):  Clarify
20826         LeakSanitizer behavior.
20828 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
20830         * doc/install.texi (Prerequisites): Add link to gmplib.org.
20832 2023-03-07  Pan Li  <pan2.li@intel.com>
20833             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20835         PR target/108185
20836         PR target/108654
20837         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
20838         modes.
20839         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
20840         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
20841         * genmodes.cc (adj_precision): New.
20842         (ADJUST_PRECISION): New.
20843         (emit_mode_adjustments): Handle ADJUST_PRECISION.
20845 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
20847         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
20849 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
20851         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
20852         {s|u}{max|min} in QI, HI and DI modes.
20853         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
20854         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
20855         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
20856         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
20857         saved in SGPRs.
20859 2023-03-06  Richard Biener  <rguenther@suse.de>
20861         PR tree-optimization/109025
20862         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
20863         the inner LC PHI use is the inner loop PHI latch definition
20864         before classifying an outer PHI as double reduction.
20866 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
20868         PR target/108429
20869         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
20870         generic.
20871         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
20872         (X86_TUNE_USE_SCATTER): Likewise.
20874 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
20876         PR target/109000
20877         * config/loongarch/loongarch.h (FP_RETURN): Use
20878         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
20879         (UNITS_PER_FP_ARG): Likewise.
20881 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20883         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
20884         (pass_vsetvl::backward_demand_fusion): Ditto.
20886 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
20887             SiYu Wu  <siyu@isrc.iscas.ac.cn>
20889         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
20890         instructions.
20891         (riscv_sm3p1_<mode>): New.
20892         (riscv_sm4ed_<mode>): New.
20893         (riscv_sm4ks_<mode>): New.
20894         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
20895         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
20896         ZKSH's built-in functions.
20898 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
20899             SiYu Wu  <siyu@isrc.iscas.ac.cn>
20901         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
20902         (riscv_sha256sig1_<mode>): New.
20903         (riscv_sha256sum0_<mode>): New.
20904         (riscv_sha256sum1_<mode>): New.
20905         (riscv_sha512sig0h): New.
20906         (riscv_sha512sig0l): New.
20907         (riscv_sha512sig1h): New.
20908         (riscv_sha512sig1l): New.
20909         (riscv_sha512sum0r): New.
20910         (riscv_sha512sum1r): New.
20911         (riscv_sha512sig0): New.
20912         (riscv_sha512sig1): New.
20913         (riscv_sha512sum0): New.
20914         (riscv_sha512sum1): New.
20915         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
20916         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
20917         built-in functions.
20918         (DIRECT_BUILTIN): Add new.
20920 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
20921             SiYu Wu  <siyu@isrc.iscas.ac.cn>
20923         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
20924         (DsA): New.
20925         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
20926         (riscv_aes32dsmi): New.
20927         (riscv_aes64ds): New.
20928         (riscv_aes64dsm): New.
20929         (riscv_aes64im): New.
20930         (riscv_aes64ks1i): New.
20931         (riscv_aes64ks2): New.
20932         (riscv_aes32esi): New.
20933         (riscv_aes32esmi): New.
20934         (riscv_aes64es): New.
20935         (riscv_aes64esm): New.
20936         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
20937         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
20938         ZKNE's built-in functions.
20940 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
20941             SiYu Wu  <siyu@isrc.iscas.ac.cn>
20943         * config/riscv/bitmanip.md: Add ZBKB's instructions.
20944         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
20945         * config/riscv/riscv.md: Add new type for crypto instructions.
20946         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
20947         description file.
20948         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
20949         extension's built-in function file.
20951 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
20952             SiYu Wu  <siyu@isrc.iscas.ac.cn>
20954         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
20955         (RISCV_FTYPE_NAME3): New.
20956         (RISCV_ATYPE_QI): New.
20957         (RISCV_ATYPE_HI): New.
20958         (RISCV_FTYPE_ATYPES2): New.
20959         (RISCV_FTYPE_ATYPES3): New.
20960         * config/riscv/riscv-ftypes.def (2): New.
20961         (3): New.
20963 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
20965         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
20966         use exact_log2().
20968 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20969             kito-cheng  <kito.cheng@sifive.com>
20971         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
20972         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
20973         (riscv_register_pragmas): Add builtin function check call.
20974         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
20975         (check_builtin_call): New function.
20976         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
20977         (class vreinterpret): Ditto.
20978         (class vlmul_ext): Ditto.
20979         (class vlmul_trunc): Ditto.
20980         (class vset): Ditto.
20981         (class vget): Ditto.
20982         (BASE): Ditto.
20983         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20984         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
20985         (vluxei16): Ditto.
20986         (vluxei32): Ditto.
20987         (vluxei64): Ditto.
20988         (vloxei8): Ditto.
20989         (vloxei16): Ditto.
20990         (vloxei32): Ditto.
20991         (vloxei64): Ditto.
20992         (vsuxei8): Ditto.
20993         (vsuxei16): Ditto.
20994         (vsuxei32): Ditto.
20995         (vsuxei64): Ditto.
20996         (vsoxei8): Ditto.
20997         (vsoxei16): Ditto.
20998         (vsoxei32): Ditto.
20999         (vsoxei64): Ditto.
21000         (vundefined): Add new intrinsic.
21001         (vreinterpret): Ditto.
21002         (vlmul_ext): Ditto.
21003         (vlmul_trunc): Ditto.
21004         (vset): Ditto.
21005         (vget): Ditto.
21006         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
21007         (struct narrow_alu_def): Ditto.
21008         (struct reduc_alu_def): Ditto.
21009         (struct vundefined_def): Ditto.
21010         (struct misc_def): Ditto.
21011         (struct vset_def): Ditto.
21012         (struct vget_def): Ditto.
21013         (SHAPE): Ditto.
21014         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21015         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
21016         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
21017         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
21018         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
21019         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
21020         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
21021         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
21022         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
21023         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
21024         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
21025         (DEF_RVV_LMUL1_OPS): Ditto.
21026         (DEF_RVV_LMUL2_OPS): Ditto.
21027         (DEF_RVV_LMUL4_OPS): Ditto.
21028         (vint16mf4_t): Ditto.
21029         (vint16mf2_t): Ditto.
21030         (vint16m1_t): Ditto.
21031         (vint16m2_t): Ditto.
21032         (vint16m4_t): Ditto.
21033         (vint16m8_t): Ditto.
21034         (vint32mf2_t): Ditto.
21035         (vint32m1_t): Ditto.
21036         (vint32m2_t): Ditto.
21037         (vint32m4_t): Ditto.
21038         (vint32m8_t): Ditto.
21039         (vint64m1_t): Ditto.
21040         (vint64m2_t): Ditto.
21041         (vint64m4_t): Ditto.
21042         (vint64m8_t): Ditto.
21043         (vuint16mf4_t): Ditto.
21044         (vuint16mf2_t): Ditto.
21045         (vuint16m1_t): Ditto.
21046         (vuint16m2_t): Ditto.
21047         (vuint16m4_t): Ditto.
21048         (vuint16m8_t): Ditto.
21049         (vuint32mf2_t): Ditto.
21050         (vuint32m1_t): Ditto.
21051         (vuint32m2_t): Ditto.
21052         (vuint32m4_t): Ditto.
21053         (vuint32m8_t): Ditto.
21054         (vuint64m1_t): Ditto.
21055         (vuint64m2_t): Ditto.
21056         (vuint64m4_t): Ditto.
21057         (vuint64m8_t): Ditto.
21058         (vint8mf4_t): Ditto.
21059         (vint8mf2_t): Ditto.
21060         (vint8m1_t): Ditto.
21061         (vint8m2_t): Ditto.
21062         (vint8m4_t): Ditto.
21063         (vint8m8_t): Ditto.
21064         (vuint8mf4_t): Ditto.
21065         (vuint8mf2_t): Ditto.
21066         (vuint8m1_t): Ditto.
21067         (vuint8m2_t): Ditto.
21068         (vuint8m4_t): Ditto.
21069         (vuint8m8_t): Ditto.
21070         (vint8mf8_t): Ditto.
21071         (vuint8mf8_t): Ditto.
21072         (vfloat32mf2_t): Ditto.
21073         (vfloat32m1_t): Ditto.
21074         (vfloat32m2_t): Ditto.
21075         (vfloat32m4_t): Ditto.
21076         (vfloat64m1_t): Ditto.
21077         (vfloat64m2_t): Ditto.
21078         (vfloat64m4_t): Ditto.
21079         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
21080         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
21081         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
21082         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
21083         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
21084         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
21085         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
21086         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
21087         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
21088         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
21089         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
21090         (DEF_RVV_LMUL1_OPS): Ditto.
21091         (DEF_RVV_LMUL2_OPS): Ditto.
21092         (DEF_RVV_LMUL4_OPS): Ditto.
21093         (DEF_RVV_TYPE_INDEX): Ditto.
21094         (required_extensions_p): Adapt for new intrinsic support/
21095         (get_required_extensions): New function.
21096         (check_required_extensions): Ditto.
21097         (unsigned_base_type_p): Remove.
21098         (rvv_arg_type_info::get_scalar_ptr_type): New function.
21099         (get_mode_for_bitsize): Remove.
21100         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
21101         (rvv_arg_type_info::get_base_vector_type): Ditto.
21102         (rvv_arg_type_info::get_function_type_index): Ditto.
21103         (DEF_RVV_BASE_TYPE): New def.
21104         (function_builder::apply_predication): New class.
21105         (function_expander::mask_mode): Ditto.
21106         (function_checker::function_checker): Ditto.
21107         (function_checker::report_non_ice): Ditto.
21108         (function_checker::report_out_of_range): Ditto.
21109         (function_checker::require_immediate): Ditto.
21110         (function_checker::require_immediate_range): Ditto.
21111         (function_checker::check): Ditto.
21112         (check_builtin_call): Ditto.
21113         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
21114         (DEF_RVV_BASE_TYPE): Ditto.
21115         (DEF_RVV_TYPE_INDEX): Ditto.
21116         (vbool64_t): Ditto.
21117         (vbool32_t): Ditto.
21118         (vbool16_t): Ditto.
21119         (vbool8_t): Ditto.
21120         (vbool4_t): Ditto.
21121         (vbool2_t): Ditto.
21122         (vbool1_t): Ditto.
21123         (vuint8mf8_t): Ditto.
21124         (vuint8mf4_t): Ditto.
21125         (vuint8mf2_t): Ditto.
21126         (vuint8m1_t): Ditto.
21127         (vuint8m2_t): Ditto.
21128         (vint8m4_t): Ditto.
21129         (vuint8m4_t): Ditto.
21130         (vint8m8_t): Ditto.
21131         (vuint8m8_t): Ditto.
21132         (vint16mf4_t): Ditto.
21133         (vuint16mf2_t): Ditto.
21134         (vuint16m1_t): Ditto.
21135         (vuint16m2_t): Ditto.
21136         (vuint16m4_t): Ditto.
21137         (vuint16m8_t): Ditto.
21138         (vint32mf2_t): Ditto.
21139         (vuint32m1_t): Ditto.
21140         (vuint32m2_t): Ditto.
21141         (vuint32m4_t): Ditto.
21142         (vuint32m8_t): Ditto.
21143         (vuint64m1_t): Ditto.
21144         (vuint64m2_t): Ditto.
21145         (vuint64m4_t): Ditto.
21146         (vuint64m8_t): Ditto.
21147         (vfloat32mf2_t): Ditto.
21148         (vfloat32m1_t): Ditto.
21149         (vfloat32m2_t): Ditto.
21150         (vfloat32m4_t): Ditto.
21151         (vfloat32m8_t): Ditto.
21152         (vfloat64m1_t): Ditto.
21153         (vfloat64m4_t): Ditto.
21154         (vector): Move it def.
21155         (scalar): Ditto.
21156         (mask): Ditto.
21157         (signed_vector): Ditto.
21158         (unsigned_vector): Ditto.
21159         (unsigned_scalar): Ditto.
21160         (vector_ptr): Ditto.
21161         (scalar_ptr): Ditto.
21162         (scalar_const_ptr): Ditto.
21163         (void): Ditto.
21164         (size): Ditto.
21165         (ptrdiff): Ditto.
21166         (unsigned_long): Ditto.
21167         (long): Ditto.
21168         (eew8_index): Ditto.
21169         (eew16_index): Ditto.
21170         (eew32_index): Ditto.
21171         (eew64_index): Ditto.
21172         (shift_vector): Ditto.
21173         (double_trunc_vector): Ditto.
21174         (quad_trunc_vector): Ditto.
21175         (oct_trunc_vector): Ditto.
21176         (double_trunc_scalar): Ditto.
21177         (double_trunc_signed_vector): Ditto.
21178         (double_trunc_unsigned_vector): Ditto.
21179         (double_trunc_unsigned_scalar): Ditto.
21180         (double_trunc_float_vector): Ditto.
21181         (float_vector): Ditto.
21182         (lmul1_vector): Ditto.
21183         (widen_lmul1_vector): Ditto.
21184         (eew8_interpret): Ditto.
21185         (eew16_interpret): Ditto.
21186         (eew32_interpret): Ditto.
21187         (eew64_interpret): Ditto.
21188         (vlmul_ext_x2): Ditto.
21189         (vlmul_ext_x4): Ditto.
21190         (vlmul_ext_x8): Ditto.
21191         (vlmul_ext_x16): Ditto.
21192         (vlmul_ext_x32): Ditto.
21193         (vlmul_ext_x64): Ditto.
21194         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
21195         (struct function_type_info): New function.
21196         (struct rvv_arg_type_info): Ditto.
21197         (class function_checker): New class.
21198         (rvv_arg_type_info::get_scalar_type): New function.
21199         (rvv_arg_type_info::get_vector_type): Ditto.
21200         (function_expander::ret_mode): New function.
21201         (function_checker::arg_mode): Ditto.
21202         (function_checker::ret_mode): Ditto.
21203         * config/riscv/t-riscv: Add generator.
21204         * config/riscv/vector-iterators.md: New iterators.
21205         * config/riscv/vector.md (vundefined<mode>): New pattern.
21206         (@vundefined<mode>): Ditto.
21207         (@vreinterpret<mode>): Ditto.
21208         (@vlmul_extx2<mode>): Ditto.
21209         (@vlmul_extx4<mode>): Ditto.
21210         (@vlmul_extx8<mode>): Ditto.
21211         (@vlmul_extx16<mode>): Ditto.
21212         (@vlmul_extx32<mode>): Ditto.
21213         (@vlmul_extx64<mode>): Ditto.
21214         (*vlmul_extx2<mode>): Ditto.
21215         (*vlmul_extx4<mode>): Ditto.
21216         (*vlmul_extx8<mode>): Ditto.
21217         (*vlmul_extx16<mode>): Ditto.
21218         (*vlmul_extx32<mode>): Ditto.
21219         (*vlmul_extx64<mode>): Ditto.
21220         * config/riscv/genrvv-type-indexer.cc: New file.
21222 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21224         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
21225         (slide1_sew64_helper): New function.
21226         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
21227         (get_unknown_min_value): Ditto.
21228         (force_vector_length_operand): Ditto.
21229         (gen_no_side_effects_vsetvl_rtx): Ditto.
21230         (get_vl_x2_rtx): Ditto.
21231         (slide1_sew64_helper): Ditto.
21232         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
21233         (class vrgather): Ditto.
21234         (class vrgatherei16): Ditto.
21235         (class vcompress): Ditto.
21236         (BASE): Ditto.
21237         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21238         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
21239         (vslidedown): Ditto.
21240         (vslide1up): Ditto.
21241         (vslide1down): Ditto.
21242         (vfslide1up): Ditto.
21243         (vfslide1down): Ditto.
21244         (vrgather): Ditto.
21245         (vrgatherei16): Ditto.
21246         (vcompress): Ditto.
21247         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
21248         (vint8mf8_t): Ditto.
21249         (vint8mf4_t): Ditto.
21250         (vint8mf2_t): Ditto.
21251         (vint8m1_t): Ditto.
21252         (vint8m2_t): Ditto.
21253         (vint8m4_t): Ditto.
21254         (vint16mf4_t): Ditto.
21255         (vint16mf2_t): Ditto.
21256         (vint16m1_t): Ditto.
21257         (vint16m2_t): Ditto.
21258         (vint16m4_t): Ditto.
21259         (vint16m8_t): Ditto.
21260         (vint32mf2_t): Ditto.
21261         (vint32m1_t): Ditto.
21262         (vint32m2_t): Ditto.
21263         (vint32m4_t): Ditto.
21264         (vint32m8_t): Ditto.
21265         (vint64m1_t): Ditto.
21266         (vint64m2_t): Ditto.
21267         (vint64m4_t): Ditto.
21268         (vint64m8_t): Ditto.
21269         (vuint8mf8_t): Ditto.
21270         (vuint8mf4_t): Ditto.
21271         (vuint8mf2_t): Ditto.
21272         (vuint8m1_t): Ditto.
21273         (vuint8m2_t): Ditto.
21274         (vuint8m4_t): Ditto.
21275         (vuint16mf4_t): Ditto.
21276         (vuint16mf2_t): Ditto.
21277         (vuint16m1_t): Ditto.
21278         (vuint16m2_t): Ditto.
21279         (vuint16m4_t): Ditto.
21280         (vuint16m8_t): Ditto.
21281         (vuint32mf2_t): Ditto.
21282         (vuint32m1_t): Ditto.
21283         (vuint32m2_t): Ditto.
21284         (vuint32m4_t): Ditto.
21285         (vuint32m8_t): Ditto.
21286         (vuint64m1_t): Ditto.
21287         (vuint64m2_t): Ditto.
21288         (vuint64m4_t): Ditto.
21289         (vuint64m8_t): Ditto.
21290         (vfloat32mf2_t): Ditto.
21291         (vfloat32m1_t): Ditto.
21292         (vfloat32m2_t): Ditto.
21293         (vfloat32m4_t): Ditto.
21294         (vfloat32m8_t): Ditto.
21295         (vfloat64m1_t): Ditto.
21296         (vfloat64m2_t): Ditto.
21297         (vfloat64m4_t): Ditto.
21298         (vfloat64m8_t): Ditto.
21299         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
21300         * config/riscv/riscv.md: Adjust RVV instruction types.
21301         * config/riscv/vector-iterators.md (down): New iterator.
21302         (=vd,vr): New attribute.
21303         (UNSPEC_VSLIDE1UP): New unspec.
21304         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
21305         (*pred_slide<ud><mode>): Ditto.
21306         (*pred_slide<ud><mode>_extended): Ditto.
21307         (@pred_gather<mode>): Ditto.
21308         (@pred_gather<mode>_scalar): Ditto.
21309         (@pred_gatherei16<mode>): Ditto.
21310         (@pred_compress<mode>): Ditto.
21312 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21314         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
21316 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21318         * config/riscv/constraints.md (Wb1): New constraint.
21319         * config/riscv/predicates.md
21320         (vector_least_significant_set_mask_operand): New predicate.
21321         (vector_broadcast_mask_operand): Ditto.
21322         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
21323         (gen_scalar_move_mask): New function.
21324         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
21325         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
21326         (class vmv_s): Ditto.
21327         (BASE): Ditto.
21328         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21329         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
21330         (vmv_s): Ditto.
21331         (vfmv_f): Ditto.
21332         (vfmv_s): Ditto.
21333         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
21334         (SHAPE): Ditto.
21335         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21336         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
21337         (function_expander::use_exact_insn): New function.
21338         (function_expander::use_contiguous_load_insn): New function.
21339         (function_expander::use_contiguous_store_insn): New function.
21340         (function_expander::use_ternop_insn): New function.
21341         (function_expander::use_widen_ternop_insn): New function.
21342         (function_expander::use_scalar_move_insn): New function.
21343         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
21344         * config/riscv/riscv-vector-builtins.h
21345         (function_expander::add_scalar_move_mask_operand): New class.
21346         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
21347         (scalar_move_insn_p): Ditto.
21348         (has_vsetvl_killed_avl_p): Ditto.
21349         (anticipatable_occurrence_p): Ditto.
21350         (insert_vsetvl): Ditto.
21351         (get_vl_vtype_info): Ditto.
21352         (calculate_sew): Ditto.
21353         (calculate_vlmul): Ditto.
21354         (incompatible_avl_p): Ditto.
21355         (different_sew_p): Ditto.
21356         (different_lmul_p): Ditto.
21357         (different_ratio_p): Ditto.
21358         (different_tail_policy_p): Ditto.
21359         (different_mask_policy_p): Ditto.
21360         (possible_zero_avl_p): Ditto.
21361         (first_ratio_invalid_for_second_sew_p): Ditto.
21362         (first_ratio_invalid_for_second_lmul_p): Ditto.
21363         (second_ratio_invalid_for_first_sew_p): Ditto.
21364         (second_ratio_invalid_for_first_lmul_p): Ditto.
21365         (second_sew_less_than_first_sew_p): Ditto.
21366         (first_sew_less_than_second_sew_p): Ditto.
21367         (compare_lmul): Ditto.
21368         (second_lmul_less_than_first_lmul_p): Ditto.
21369         (first_lmul_less_than_second_lmul_p): Ditto.
21370         (first_ratio_less_than_second_ratio_p): Ditto.
21371         (second_ratio_less_than_first_ratio_p): Ditto.
21372         (DEF_INCOMPATIBLE_COND): Ditto.
21373         (greatest_sew): Ditto.
21374         (first_sew): Ditto.
21375         (second_sew): Ditto.
21376         (first_vlmul): Ditto.
21377         (second_vlmul): Ditto.
21378         (first_ratio): Ditto.
21379         (second_ratio): Ditto.
21380         (vlmul_for_first_sew_second_ratio): Ditto.
21381         (ratio_for_second_sew_first_vlmul): Ditto.
21382         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
21383         (always_unavailable): Ditto.
21384         (avl_unavailable_p): Ditto.
21385         (sew_unavailable_p): Ditto.
21386         (lmul_unavailable_p): Ditto.
21387         (ge_sew_unavailable_p): Ditto.
21388         (ge_sew_lmul_unavailable_p): Ditto.
21389         (ge_sew_ratio_unavailable_p): Ditto.
21390         (DEF_UNAVAILABLE_COND): Ditto.
21391         (same_sew_lmul_demand_p): Ditto.
21392         (propagate_avl_across_demands_p): Ditto.
21393         (reg_available_p): Ditto.
21394         (avl_info::has_non_zero_avl): Ditto.
21395         (vl_vtype_info::has_non_zero_avl): Ditto.
21396         (vector_insn_info::operator>=): Refactor.
21397         (vector_insn_info::parse_insn): Adjust for scalar move.
21398         (vector_insn_info::demand_vl_vtype): Remove.
21399         (vector_insn_info::compatible_p): New function.
21400         (vector_insn_info::compatible_avl_p): Ditto.
21401         (vector_insn_info::compatible_vtype_p): Ditto.
21402         (vector_insn_info::available_p): Ditto.
21403         (vector_insn_info::merge): Ditto.
21404         (vector_insn_info::fuse_avl): Ditto.
21405         (vector_insn_info::fuse_sew_lmul): Ditto.
21406         (vector_insn_info::fuse_tail_policy): Ditto.
21407         (vector_insn_info::fuse_mask_policy): Ditto.
21408         (vector_insn_info::dump): Ditto.
21409         (vector_infos_manager::release): Ditto.
21410         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
21411         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
21412         (pass_vsetvl::hard_empty_block_p): Ditto.
21413         (pass_vsetvl::backward_demand_fusion): Ditto.
21414         (pass_vsetvl::forward_demand_fusion): Ditto.
21415         (pass_vsetvl::refine_vsetvls): Ditto.
21416         (pass_vsetvl::cleanup_vsetvls): Ditto.
21417         (pass_vsetvl::commit_vsetvls): Ditto.
21418         (pass_vsetvl::propagate_avl): Ditto.
21419         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
21420         (struct demands_pair): Ditto.
21421         (struct demands_cond): Ditto.
21422         (struct demands_fuse_rule): Ditto.
21423         * config/riscv/vector-iterators.md: New iterator.
21424         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
21425         (*pred_broadcast<mode>): Ditto.
21426         (*pred_broadcast<mode>_extended_scalar): Ditto.
21427         (@pred_extract_first<mode>): Ditto.
21428         (*pred_extract_first<mode>): Ditto.
21429         (@pred_extract_first_trunc<mode>): Ditto.
21430         * config/riscv/riscv-vsetvl.def: New file.
21432 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
21434         * config/riscv/bitmanip.md: allow 0 constant in max/min
21435         pattern.
21437 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
21439         * config/riscv/bitmanip.md: Fix wrong index in the check.
21441 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
21443         PR middle-end/109006
21444         * vec.cc (test_auto_alias): Adjust comment for removal of
21445         m_vecdata.
21446         * read-rtl-function.cc (function_reader::parse_block): Likewise.
21447         * gdbhooks.py: Likewise.
21449 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
21451         PR testsuite/108973
21452         * selftest-diagnostic.cc
21453         (test_diagnostic_context::test_diagnostic_context): Set
21454         caret_max_width to 80.
21456 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
21458         * gimple-ssa-warn-access.cc
21459         (pass_waccess::check_dangling_stores): Skip non-stores.
21461 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
21463         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
21464         after vmsr and vmrs, and lower the case of P0.
21466 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
21468         PR middle-end/109006
21469         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
21471 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
21473         PR middle-end/109006
21474         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
21476 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
21478         PR c/108986
21479         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
21480         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
21481         suppressed on stmt.  For [static %E] warning, print access_nelts
21482         rather than access_size.  Fix up comment wording.
21484 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
21486         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
21487         arch14 instead of z16.
21489 2023-03-03  Anthony Green  <green@moxielogic.com>
21491         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
21493 2023-03-03  Anthony Green  <green@moxielogic.com>
21495         * config/moxie/constraints.md (A, B, W): Change
21496         define_constraint to define_memory_constraint.
21498 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
21500         * toplev.cc (process_options): Fix the spelling of
21501         "-fstack-clash-protection".
21503 2023-03-03  Richard Biener  <rguenther@suse.de>
21505         PR tree-optimization/109002
21506         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
21507         PHI-translate ANTIC_IN.
21509 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
21511         PR tree-optimization/108988
21512         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
21513         size_type_node before passing it as argument to fwrite.  Formatting
21514         fixes.
21516 2023-03-03  Richard Biener  <rguenther@suse.de>
21518         PR target/108738
21519         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
21520         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
21521         * config/i386/i386-features.h (scalar_chain::max_visits): New.
21522         (scalar_chain::build): Add bitmap parameter, return boolean.
21523         (scalar_chain::add_insn): Likewise.
21524         (scalar_chain::analyze_register_chain): Likewise.
21525         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
21526         Initialize max_visits.
21527         (scalar_chain::analyze_register_chain): When we exhaust
21528         max_visits, abort.  Also abort when running into any
21529         disallowed insn.
21530         (scalar_chain::add_insn): Propagate abort.
21531         (scalar_chain::build): Likewise.  When aborting amend
21532         the set of disallowed insn with the insns set.
21533         (convert_scalars_to_vector): Adjust.  Do not convert aborted
21534         chains.
21536 2023-03-03  Richard Biener  <rguenther@suse.de>
21538         PR debug/108772
21539         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
21540         generate a DIE for a function scope static.
21542 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
21544         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
21546 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
21548         PR target/108883
21549         * target.h (emit_support_tinfos_callback): New typedef.
21550         * targhooks.h (default_emit_support_tinfos): Declare.
21551         * targhooks.cc (default_emit_support_tinfos): New function.
21552         * target.def (emit_support_tinfos): New target hook.
21553         * doc/tm.texi.in (emit_support_tinfos): Document it.
21554         * doc/tm.texi: Regenerated.
21555         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
21556         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
21558 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
21560         * ira-costs.cc: Include print-rtl.h.
21561         (record_reg_classes, scan_one_insn): Add code to print debug info.
21562         (record_operand_costs): Find and use smaller cost for hard reg
21563         move.
21565 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
21566             Paul-Antoine Arras  <pa@codesourcery.com>
21568         * builtins.cc (mathfn_built_in_explicit): New.
21569         * config/gcn/gcn.cc: Include case-cfn-macros.h.
21570         (mathfn_built_in_explicit): Add prototype.
21571         (gcn_vectorize_builtin_vectorized_function): New.
21572         (gcn_libc_has_function): New.
21573         (TARGET_LIBC_HAS_FUNCTION): Define.
21574         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
21576 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
21578         PR tree-optimization/108979
21579         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
21580         operations on invariants.
21582 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
21584         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
21585         * config/s390/s390.cc (s390_option_override_internal): Make
21586         partial vector usage the default from z13 on.
21587         * config/s390/vector.md (len_load_v16qi): Add.
21588         (len_store_v16qi): Add.
21590 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21592         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
21593         of constant 0 offset.
21595 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
21597         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
21598         instead of long.
21599         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
21601 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
21603         * config.gcc: add -with-{no-}msa build option.
21604         * config/mips/mips.h: Likewise.
21605         * doc/install.texi: Likewise.
21607 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
21609         PR tree-optimization/108603
21610         * explow.cc (convert_memory_address_addr_space_1): Only wrap
21611         the result of a recursive call in a CONST if no instructions
21612         were emitted.
21614 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
21616         PR tree-optimization/108430
21617         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
21618         of inverted condition.
21620 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
21622         PR c++/108934
21623         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
21624         comparison copy the bytes from ptr to a temporary buffer and clearing
21625         padding bits in there.
21627 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
21629         PR middle-end/108545
21630         * gimplify.cc (struct tree_operand_hash_no_se): New.
21631         (omp_index_mapping_groups_1, omp_index_mapping_groups,
21632         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
21633         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
21634         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
21635         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
21636         of tree_operand_hash.
21638 2023-03-01  LIU Hao  <lh_mouse@126.com>
21640         PR pch/14940
21641         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
21642         Remove the size limit `pch_VA_max_size`
21644 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
21646         PR middle-end/108546
21647         * omp-low.cc (lower_omp_target): Remove optional handling
21648         on the receiver side, i.e. inside target (data), for
21649         use_device_ptr.
21651 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
21653         PR debug/108967
21654         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
21655         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
21657 2023-03-01  Richard Biener  <rguenther@suse.de>
21659         PR tree-optimization/108970
21660         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
21661         Check we can copy the BBs.
21662         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
21663         check.
21664         (vect_do_peeling): Streamline error handling.
21666 2023-03-01  Richard Biener  <rguenther@suse.de>
21668         PR tree-optimization/108950
21669         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
21670         Check oprnd0 is defined in the loop.
21671         * tree-vect-loop.cc (vectorizable_reduction): Record all
21672         operands vector types, compute that of invariants and
21673         properly update their SLP nodes.
21675 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
21677         PR target/108240
21678         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
21679         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
21681 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
21683         PR middle-end/107411
21684         PR middle-end/107411
21685         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
21686         xasprintf.
21687         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
21688         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
21690 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
21692         PR sanitizer/108894
21693         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
21694         comparison rather than index > bound.
21695         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
21696         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
21697         * doc/invoke.texi (-fsanitize=bounds): Document that whether
21698         flexible array member-like arrays are instrumented or not depends
21699         on -fstrict-flex-arrays* options of strict_flex_array attributes.
21700         (-fsanitize=bounds-strict): Document that flexible array members
21701         are not instrumented.
21703 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
21705         PR target/108922
21706         Revert:
21707         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
21708         (fmod<mode>3): Ditto.
21709         (fpremxf4_i387): Ditto.
21710         (reminderxf3): Ditto.
21711         (reminder<mode>3): Ditto.
21712         (fprem1xf4_i387): Ditto.
21714 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
21716         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
21717         generating FFS with mismatched operand and result modes, by using
21718         an explicit SIGN_EXTEND/ZERO_EXTEND.
21719         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
21720         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
21722 2023-02-27  Patrick Palka  <ppalka@redhat.com>
21724         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
21725         * lra-int.h (lra_change_class): Likewise.
21726         * recog.h (which_op_alt): Likewise.
21727         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
21728         instead of static.
21730 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21732         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
21733         New prototype.
21734         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
21735         New function.
21736         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
21737         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
21739 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
21741         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
21742         (xtensa_get_config_v3): New functions.
21744 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21746         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
21748 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
21750         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
21751         the macro to 0x1000000000.
21753 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
21755         PR modula2/108261
21756         * doc/gm2.texi (-fm2-pathname): New option documented.
21757         (-fm2-pathnameI): New option documented.
21758         (-fm2-prefix=): New option documented.
21759         (-fruntime-modules=): Update default module list.
21761 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
21763         PR target/108919
21764         * config/xtensa/xtensa-protos.h
21765         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
21766         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
21767         to xtensa_expand_call.
21768         (xtensa_expand_call): Emit the call and add a clobber expression
21769         for the static chain to it in case of windowed ABI.
21770         * config/xtensa/xtensa.md (call, call_value, sibcall)
21771         (sibcall_value): Call xtensa_expand_call and complete expansion
21772         right after that call.
21774 2023-02-24  Richard Biener  <rguenther@suse.de>
21776         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
21777         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
21778         changing alignment of vec<T, A, vl_embed> and simplifying
21779         address.
21780         (vec<T, A, vl_embed>::address): Compute as this + 1.
21781         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
21782         vector instead of the offset of the m_vecdata member.
21783         (auto_vec<T, N>::m_data): Turn storage into
21784         uninitialized unsigned char.
21785         (auto_vec<T, N>::auto_vec): Allow allocation of one
21786         stack member.  Initialize m_vec in a special way to
21787         avoid later stringop overflow diagnostics.
21788         * vec.cc (test_auto_alias): New.
21789         (vec_cc_tests): Call it.
21791 2023-02-24  Richard Biener  <rguenther@suse.de>
21793         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
21794         take a const reference to the object, use address to
21795         access data.
21796         (vec<T, A, vl_embed>::contains): Use address to access data.
21797         (vec<T, A, vl_embed>::operator[]): Use address instead of
21798         m_vecdata to access data.
21799         (vec<T, A, vl_embed>::iterate): Likewise.
21800         (vec<T, A, vl_embed>::copy): Likewise.
21801         (vec<T, A, vl_embed>::quick_push): Likewise.
21802         (vec<T, A, vl_embed>::pop): Likewise.
21803         (vec<T, A, vl_embed>::quick_insert): Likewise.
21804         (vec<T, A, vl_embed>::ordered_remove): Likewise.
21805         (vec<T, A, vl_embed>::unordered_remove): Likewise.
21806         (vec<T, A, vl_embed>::block_remove): Likewise.
21807         (vec<T, A, vl_heap>::address): Likewise.
21809 2023-02-24  Martin Liska  <mliska@suse.cz>
21811         PR sanitizer/108834
21812         * asan.cc (asan_add_global): Use proper TU name for normal
21813         global variables (and aux_base_name for the artificial one).
21815 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
21817         * config/i386/i386-builtin.def: Update description of BDESC
21818         and BDESC_FIRST in file comment to include mask2.
21820 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21822         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
21824 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
21826         PR middle-end/108854
21827         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
21828         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
21829         nodes and adjust their DECL_CONTEXT.
21831 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
21833         PR target/108881
21834         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
21835         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
21836         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
21837         __builtin_ia32_cvtne2ps2bf16_v8bf,
21838         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
21839         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
21840         __builtin_ia32_cvtneps2bf16_v8sf_mask,
21841         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
21842         __builtin_ia32_cvtneps2bf16_v4sf_mask,
21843         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
21844         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
21845         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
21846         __builtin_ia32_dpbf16ps_v4sf_mask,
21847         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
21848         OPTION_MASK_ISA_AVX512VL.
21850 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21852         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
21853         Add non-compact 32-bit multilibs.
21855 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
21857         * config/mips/mips.md (*clo<mode>2): New pattern.
21859 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
21861         * config/mips/mips.h (machine_function): New variable
21862         use_hazard_barrier_return_p.
21863         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
21864         (mips_hb_return_internal): New insn pattern.
21865         * config/mips/mips.cc (mips_attribute_table): Add attribute
21866         use_hazard_barrier_return.
21867         (mips_use_hazard_barrier_return_p): New static function.
21868         (mips_function_attr_inlinable_p): Likewise.
21869         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
21870         Emit error for unsupported architecture choice.
21871         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
21872         Return false for use_hazard_barrier_return.
21873         (mips_expand_epilogue): Emit hazard barrier return.
21874         * doc/extend.texi: Document use_hazard_barrier_return.
21876 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
21878         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
21879         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
21880         for the gcc-internal headers.
21882 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
21884         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
21885         and $(POSTCOMPILE) instead of manual dependency listing.
21886         * config/xtensa/xtensa-dynconfig.c: Rename to ...
21887         * config/xtensa/xtensa-dynconfig.cc: ... this.
21889 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
21891         * doc/cfg.texi: Reorder index entries around @items.
21892         * doc/cpp.texi: Ditto.
21893         * doc/cppenv.texi: Ditto.
21894         * doc/cppopts.texi: Ditto.
21895         * doc/generic.texi: Ditto.
21896         * doc/install.texi: Ditto.
21897         * doc/extend.texi: Ditto.
21898         * doc/invoke.texi: Ditto.
21899         * doc/md.texi: Ditto.
21900         * doc/rtl.texi: Ditto.
21901         * doc/tm.texi.in: Ditto.
21902         * doc/trouble.texi: Ditto.
21903         * doc/tm.texi: Regenerate.
21905 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21907         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
21908         the occurrence of general-purpose register used only once and for
21909         transferring intermediate value.
21911 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21913         * config/xtensa/xtensa.cc (machine_function): Add new member
21914         'eliminated_callee_saved_bmp'.
21915         (xtensa_can_eliminate_callee_saved_reg_p): New function to
21916         determine whether the register can be eliminated or not.
21917         (xtensa_expand_prologue): Add invoking the above function and
21918         elimination the use of callee-saved register by using its stack
21919         slot through the stack pointer (or the frame pointer if needed)
21920         directly.
21921         (xtensa_expand_prologue): Modify to not emit register restoration
21922         insn from its stack slot if the register is already eliminated.
21924 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
21926         PR translation/108890
21927         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
21928         around fatal_error format strings.
21930 2023-02-23  Richard Biener  <rguenther@suse.de>
21932         * tree-ssa-structalias.cc (handle_lhs_call): Do not
21933         re-create rhsc, only truncate it.
21935 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
21937         PR middle-end/106258
21938         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
21939         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
21941 2023-02-23  Richard Biener  <rguenther@suse.de>
21943         * tree-if-conv.cc (tree_if_conversion): Properly manage
21944         memory of refs and the contained data references.
21946 2023-02-23  Richard Biener  <rguenther@suse.de>
21948         PR tree-optimization/108888
21949         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
21950         calls to predicate.
21951         (predicate_statements): Only predicate calls with PLF_2.
21953 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21955         * config/xtensa/xtensa.md
21956         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
21957         Add missing "SI:" to PLUS RTXes.
21959 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
21961         PR target/108876
21962         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
21963         Emit (use (reg:SI A0_REG)) at the end in the sibling call
21964         (i.e. the same place as (return) in the normal call).
21966 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
21968         Revert:
21969         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
21971         PR target/108876
21972         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
21973         for A0_REG.
21974         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
21975         (sibcall_value, sibcall_value_internal): Add 'use' expression
21976         for A0_REG.
21978 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
21980         * doc/cppdiropts.texi: Reorder @opindex commands to precede
21981         @items they relate to.
21982         * doc/cppopts.texi: Ditto.
21983         * doc/cppwarnopts.texi: Ditto.
21984         * doc/invoke.texi: Ditto.
21985         * doc/lto.texi: Ditto.
21987 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
21989         * internal-fn.cc (expand_MASK_CALL): New.
21990         * internal-fn.def (MASK_CALL): New.
21991         * internal-fn.h (expand_MASK_CALL): New prototype.
21992         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
21993         for mask arguments also.
21994         * tree-if-conv.cc: Include cgraph.h.
21995         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
21996         (predicate_statements): Convert functions to IFN_MASK_CALL.
21997         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
21998         IFN_MASK_CALL as a SIMD function call.
21999         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
22000         IFN_MASK_CALL as an inbranch SIMD function call.
22001         Generate the mask vector arguments.
22003 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22005         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
22006         (class widen_reducop): Ditto.
22007         (class freducop): Ditto.
22008         (class widen_freducop): Ditto.
22009         (BASE): Ditto.
22010         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22011         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
22012         (vredmaxu): Ditto.
22013         (vredmax): Ditto.
22014         (vredminu): Ditto.
22015         (vredmin): Ditto.
22016         (vredand): Ditto.
22017         (vredor): Ditto.
22018         (vredxor): Ditto.
22019         (vwredsum): Ditto.
22020         (vwredsumu): Ditto.
22021         (vfredusum): Ditto.
22022         (vfredosum): Ditto.
22023         (vfredmax): Ditto.
22024         (vfredmin): Ditto.
22025         (vfwredosum): Ditto.
22026         (vfwredusum): Ditto.
22027         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
22028         (SHAPE): Ditto.
22029         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22030         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
22031         (DEF_RVV_WU_OPS): Ditto.
22032         (DEF_RVV_WF_OPS): Ditto.
22033         (vint8mf8_t): Ditto.
22034         (vint8mf4_t): Ditto.
22035         (vint8mf2_t): Ditto.
22036         (vint8m1_t): Ditto.
22037         (vint8m2_t): Ditto.
22038         (vint8m4_t): Ditto.
22039         (vint8m8_t): Ditto.
22040         (vint16mf4_t): Ditto.
22041         (vint16mf2_t): Ditto.
22042         (vint16m1_t): Ditto.
22043         (vint16m2_t): Ditto.
22044         (vint16m4_t): Ditto.
22045         (vint16m8_t): Ditto.
22046         (vint32mf2_t): Ditto.
22047         (vint32m1_t): Ditto.
22048         (vint32m2_t): Ditto.
22049         (vint32m4_t): Ditto.
22050         (vint32m8_t): Ditto.
22051         (vuint8mf8_t): Ditto.
22052         (vuint8mf4_t): Ditto.
22053         (vuint8mf2_t): Ditto.
22054         (vuint8m1_t): Ditto.
22055         (vuint8m2_t): Ditto.
22056         (vuint8m4_t): Ditto.
22057         (vuint8m8_t): Ditto.
22058         (vuint16mf4_t): Ditto.
22059         (vuint16mf2_t): Ditto.
22060         (vuint16m1_t): Ditto.
22061         (vuint16m2_t): Ditto.
22062         (vuint16m4_t): Ditto.
22063         (vuint16m8_t): Ditto.
22064         (vuint32mf2_t): Ditto.
22065         (vuint32m1_t): Ditto.
22066         (vuint32m2_t): Ditto.
22067         (vuint32m4_t): Ditto.
22068         (vuint32m8_t): Ditto.
22069         (vfloat32mf2_t): Ditto.
22070         (vfloat32m1_t): Ditto.
22071         (vfloat32m2_t): Ditto.
22072         (vfloat32m4_t): Ditto.
22073         (vfloat32m8_t): Ditto.
22074         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
22075         (DEF_RVV_WU_OPS): Ditto.
22076         (DEF_RVV_WF_OPS): Ditto.
22077         (required_extensions_p): Add reduction support.
22078         (rvv_arg_type_info::get_base_vector_type): Ditto.
22079         (rvv_arg_type_info::get_tree_type): Ditto.
22080         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
22081         * config/riscv/riscv.md: Ditto.
22082         * config/riscv/vector-iterators.md (minu): Ditto.
22083         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
22084         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
22085         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
22086         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
22087         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
22088         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
22089         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
22091 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22093         * config/riscv/iterators.md: New iterator.
22094         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
22095         (enum ternop_type): New enum.
22096         (class vmacc): New class.
22097         (class imac): Ditto.
22098         (class vnmsac): Ditto.
22099         (enum widen_ternop_type): New enum.
22100         (class vmadd): Ditto.
22101         (class vnmsub): Ditto.
22102         (class iwmac): Ditto.
22103         (class vwmacc): Ditto.
22104         (class vwmaccu): Ditto.
22105         (class vwmaccsu): Ditto.
22106         (class vwmaccus): Ditto.
22107         (class reverse_binop): Ditto.
22108         (class vfmacc): Ditto.
22109         (class vfnmsac): Ditto.
22110         (class vfmadd): Ditto.
22111         (class vfnmsub): Ditto.
22112         (class vfnmacc): Ditto.
22113         (class vfmsac): Ditto.
22114         (class vfnmadd): Ditto.
22115         (class vfmsub): Ditto.
22116         (class vfwmacc): Ditto.
22117         (class vfwnmacc): Ditto.
22118         (class vfwmsac): Ditto.
22119         (class vfwnmsac): Ditto.
22120         (class float_misc): Ditto.
22121         (class fcmp): Ditto.
22122         (class vfclass): Ditto.
22123         (class vfcvt_x): Ditto.
22124         (class vfcvt_rtz_x): Ditto.
22125         (class vfcvt_f): Ditto.
22126         (class vfwcvt_x): Ditto.
22127         (class vfwcvt_rtz_x): Ditto.
22128         (class vfwcvt_f): Ditto.
22129         (class vfncvt_x): Ditto.
22130         (class vfncvt_rtz_x): Ditto.
22131         (class vfncvt_f): Ditto.
22132         (class vfncvt_rod_f): Ditto.
22133         (BASE): Ditto.
22134         * config/riscv/riscv-vector-builtins-bases.h:
22135         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
22136         (vsext): Ditto.
22137         (vfadd): Ditto.
22138         (vfsub): Ditto.
22139         (vfrsub): Ditto.
22140         (vfwadd): Ditto.
22141         (vfwsub): Ditto.
22142         (vfmul): Ditto.
22143         (vfdiv): Ditto.
22144         (vfrdiv): Ditto.
22145         (vfwmul): Ditto.
22146         (vfmacc): Ditto.
22147         (vfnmsac): Ditto.
22148         (vfmadd): Ditto.
22149         (vfnmsub): Ditto.
22150         (vfnmacc): Ditto.
22151         (vfmsac): Ditto.
22152         (vfnmadd): Ditto.
22153         (vfmsub): Ditto.
22154         (vfwmacc): Ditto.
22155         (vfwnmacc): Ditto.
22156         (vfwmsac): Ditto.
22157         (vfwnmsac): Ditto.
22158         (vfsqrt): Ditto.
22159         (vfrsqrt7): Ditto.
22160         (vfrec7): Ditto.
22161         (vfmin): Ditto.
22162         (vfmax): Ditto.
22163         (vfsgnj): Ditto.
22164         (vfsgnjn): Ditto.
22165         (vfsgnjx): Ditto.
22166         (vfneg): Ditto.
22167         (vfabs): Ditto.
22168         (vmfeq): Ditto.
22169         (vmfne): Ditto.
22170         (vmflt): Ditto.
22171         (vmfle): Ditto.
22172         (vmfgt): Ditto.
22173         (vmfge): Ditto.
22174         (vfclass): Ditto.
22175         (vfmerge): Ditto.
22176         (vfmv_v): Ditto.
22177         (vfcvt_x): Ditto.
22178         (vfcvt_xu): Ditto.
22179         (vfcvt_rtz_x): Ditto.
22180         (vfcvt_rtz_xu): Ditto.
22181         (vfcvt_f): Ditto.
22182         (vfwcvt_x): Ditto.
22183         (vfwcvt_xu): Ditto.
22184         (vfwcvt_rtz_x): Ditto.
22185         (vfwcvt_rtz_xu): Ditto.
22186         (vfwcvt_f): Ditto.
22187         (vfncvt_x): Ditto.
22188         (vfncvt_xu): Ditto.
22189         (vfncvt_rtz_x): Ditto.
22190         (vfncvt_rtz_xu): Ditto.
22191         (vfncvt_f): Ditto.
22192         (vfncvt_rod_f): Ditto.
22193         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
22194         (struct move_def): Ditto.
22195         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
22196         (DEF_RVV_CONVERT_I_OPS): Ditto.
22197         (DEF_RVV_CONVERT_U_OPS): Ditto.
22198         (DEF_RVV_WCONVERT_I_OPS): Ditto.
22199         (DEF_RVV_WCONVERT_U_OPS): Ditto.
22200         (DEF_RVV_WCONVERT_F_OPS): Ditto.
22201         (vfloat64m1_t): Ditto.
22202         (vfloat64m2_t): Ditto.
22203         (vfloat64m4_t): Ditto.
22204         (vfloat64m8_t): Ditto.
22205         (vint32mf2_t): Ditto.
22206         (vint32m1_t): Ditto.
22207         (vint32m2_t): Ditto.
22208         (vint32m4_t): Ditto.
22209         (vint32m8_t): Ditto.
22210         (vint64m1_t): Ditto.
22211         (vint64m2_t): Ditto.
22212         (vint64m4_t): Ditto.
22213         (vint64m8_t): Ditto.
22214         (vuint32mf2_t): Ditto.
22215         (vuint32m1_t): Ditto.
22216         (vuint32m2_t): Ditto.
22217         (vuint32m4_t): Ditto.
22218         (vuint32m8_t): Ditto.
22219         (vuint64m1_t): Ditto.
22220         (vuint64m2_t): Ditto.
22221         (vuint64m4_t): Ditto.
22222         (vuint64m8_t): Ditto.
22223         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
22224         (DEF_RVV_CONVERT_U_OPS): Ditto.
22225         (DEF_RVV_WCONVERT_I_OPS): Ditto.
22226         (DEF_RVV_WCONVERT_U_OPS): Ditto.
22227         (DEF_RVV_WCONVERT_F_OPS): Ditto.
22228         (DEF_RVV_F_OPS): Ditto.
22229         (DEF_RVV_WEXTF_OPS): Ditto.
22230         (required_extensions_p): Adjust for floating-point support.
22231         (check_required_extensions): Ditto.
22232         (unsigned_base_type_p): Ditto.
22233         (get_mode_for_bitsize): Ditto.
22234         (rvv_arg_type_info::get_base_vector_type): Ditto.
22235         (rvv_arg_type_info::get_tree_type): Ditto.
22236         * config/riscv/riscv-vector-builtins.def (v_f): New define.
22237         (f): New define.
22238         (f_v): New define.
22239         (xu_v): New define.
22240         (f_w): New define.
22241         (xu_w): New define.
22242         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
22243         (function_expander::arg_mode): New function.
22244         * config/riscv/vector-iterators.md (sof): New iterator.
22245         (vfrecp): Ditto.
22246         (copysign): Ditto.
22247         (n): Ditto.
22248         (msac): Ditto.
22249         (msub): Ditto.
22250         (fixuns_trunc): Ditto.
22251         (floatuns): Ditto.
22252         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
22253         (@pred_<optab><mode>): Ditto.
22254         (@pred_<optab><mode>_scalar): Ditto.
22255         (@pred_<optab><mode>_reverse_scalar): Ditto.
22256         (@pred_<copysign><mode>): Ditto.
22257         (@pred_<copysign><mode>_scalar): Ditto.
22258         (@pred_mul_<optab><mode>): Ditto.
22259         (pred_mul_<optab><mode>_undef_merge): Ditto.
22260         (*pred_<madd_nmsub><mode>): Ditto.
22261         (*pred_<macc_nmsac><mode>): Ditto.
22262         (*pred_mul_<optab><mode>): Ditto.
22263         (@pred_mul_<optab><mode>_scalar): Ditto.
22264         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
22265         (*pred_<madd_nmsub><mode>_scalar): Ditto.
22266         (*pred_<macc_nmsac><mode>_scalar): Ditto.
22267         (*pred_mul_<optab><mode>_scalar): Ditto.
22268         (@pred_neg_mul_<optab><mode>): Ditto.
22269         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
22270         (*pred_<nmadd_msub><mode>): Ditto.
22271         (*pred_<nmacc_msac><mode>): Ditto.
22272         (*pred_neg_mul_<optab><mode>): Ditto.
22273         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
22274         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
22275         (*pred_<nmadd_msub><mode>_scalar): Ditto.
22276         (*pred_<nmacc_msac><mode>_scalar): Ditto.
22277         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
22278         (@pred_<misc_op><mode>): Ditto.
22279         (@pred_class<mode>): Ditto.
22280         (@pred_dual_widen_<optab><mode>): Ditto.
22281         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
22282         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
22283         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
22284         (@pred_widen_mul_<optab><mode>): Ditto.
22285         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
22286         (@pred_widen_neg_mul_<optab><mode>): Ditto.
22287         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
22288         (@pred_cmp<mode>): Ditto.
22289         (*pred_cmp<mode>): Ditto.
22290         (*pred_cmp<mode>_narrow): Ditto.
22291         (@pred_cmp<mode>_scalar): Ditto.
22292         (*pred_cmp<mode>_scalar): Ditto.
22293         (*pred_cmp<mode>_scalar_narrow): Ditto.
22294         (@pred_eqne<mode>_scalar): Ditto.
22295         (*pred_eqne<mode>_scalar): Ditto.
22296         (*pred_eqne<mode>_scalar_narrow): Ditto.
22297         (@pred_merge<mode>_scalar): Ditto.
22298         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
22299         (@pred_<fix_cvt><mode>): Ditto.
22300         (@pred_<float_cvt><mode>): Ditto.
22301         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
22302         (@pred_widen_<fix_cvt><mode>): Ditto.
22303         (@pred_widen_<float_cvt><mode>): Ditto.
22304         (@pred_extend<mode>): Ditto.
22305         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
22306         (@pred_narrow_<fix_cvt><mode>): Ditto.
22307         (@pred_narrow_<float_cvt><mode>): Ditto.
22308         (@pred_trunc<mode>): Ditto.
22309         (@pred_rod_trunc<mode>): Ditto.
22311 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
22313         PR middle-end/106258
22314         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
22315         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
22316         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
22317         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
22319 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
22321         * common.opt (-Wcomplain-wrong-lang): New.
22322         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
22323         * opts-common.cc (prune_options): Handle it.
22324         * opts-global.cc (complain_wrong_lang): Use it.
22326 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
22328         PR analyzer/108830
22329         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
22331 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
22333         PR target/108876
22334         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
22335         for A0_REG.
22336         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
22337         (sibcall_value, sibcall_value_internal): Add 'use' expression
22338         for A0_REG.
22340 2023-02-21  Richard Biener  <rguenther@suse.de>
22342         PR tree-optimization/108691
22343         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
22344         assert about calls_setjmp not becoming true when it was false.
22346 2023-02-21  Richard Biener  <rguenther@suse.de>
22348         PR tree-optimization/108793
22349         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
22350         Use convert operands to niter_type when computing num.
22352 2023-02-21  Richard Biener  <rguenther@suse.de>
22354         Revert:
22355         2023-02-13  Richard Biener  <rguenther@suse.de>
22357         PR tree-optimization/108691
22358         * tree-cfg.cc (notice_special_calls): When the CFG is built
22359         honor gimple_call_ctrl_altering_p.
22360         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
22361         temporarily if the call is not control-altering.
22362         * calls.cc (emit_call_1): Do not add REG_SETJMP if
22363         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
22365 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22367         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
22368         true if register A0 (return address register) when -Og is specified.
22370 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
22372         * config/i386/predicates.md
22373         (general_x64constmem_operand): New predicate.
22374         * config/i386/i386.md (*cmpqi_ext<mode>_1):
22375         Use nonimm_x64constmem_operand.
22376         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
22377         (*addqi_ext<mode>_1): Ditto.
22378         (*testqi_ext<mode>_1): Ditto.
22379         (*andqi_ext<mode>_1): Ditto.
22380         (*andqi_ext<mode>_1_cc): Ditto.
22381         (*<any_or:code>qi_ext<mode>_1): Ditto.
22382         (*xorqi_ext<mode>_1_cc): Ditto.
22384 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
22386         PR target/108862
22387         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
22388         gen_umadddi4_highpart{,_le}.
22390 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
22392         * config/riscv/riscv.md (prefetch): Use r instead of p for the
22393         address operand.
22394         (riscv_prefetchi_<mode>): Ditto.
22396 2023-02-20  Richard Biener  <rguenther@suse.de>
22398         PR tree-optimization/108816
22399         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
22400         versioning condition split prerequesite, assert required
22401         invariant.
22403 2023-02-20  Richard Biener  <rguenther@suse.de>
22405         PR tree-optimization/108825
22406         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
22407         loop-local verfication only verify there's no pending SSA
22408         update.
22410 2023-02-20  Richard Biener  <rguenther@suse.de>
22412         PR tree-optimization/108819
22413         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
22414         we have an SSA name as iv_2 as expected.
22416 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
22418         PR tree-optimization/108819
22419         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
22421 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
22423         PR target/108832
22424         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
22425         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
22426         function.
22427         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
22428         with ix86_replace_reg_with_reg.
22430 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
22432         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
22434 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
22436         * config.gcc (triplet_abi): Set its value based on $with_abi,
22437         instead of $target.
22438         (la_canonical_triplet): Set it after $triplet_abi is set
22439         correctly.
22440         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
22441         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
22442         "f64" suffix).
22444 2023-02-18  Andrew Pinski  <apinski@marvell.com>
22446         * match.pd: Remove #if GIMPLE around the
22447         "1 - a" pattern
22449 2023-02-18  Andrew Pinski  <apinski@marvell.com>
22451         * value-query.h (get_range_query): Return the global ranges
22452         for a nullptr func.
22454 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
22456         * doc/invoke.texi (@item -Wall): Fix typo in
22457         -Wuse-after-free.
22459 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
22461         PR target/108831
22462         * config/i386/predicates.md
22463         (nonimm_x64constmem_operand): New predicate.
22464         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
22465         (*subqi_ext<mode>_0): Ditto.
22466         (*andqi_ext<mode>_0): Ditto.
22467         (*<any_or:code>qi_ext<mode>_0): Ditto.
22469 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
22471         PR target/108805
22472         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
22473         int_outermode instead of GET_MODE (tem) to prevent
22474         VOIDmode from entering simplify_gen_subreg.
22476 2023-02-17  Richard Biener  <rguenther@suse.de>
22478         PR tree-optimization/108821
22479         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
22480         move volatile accesses.
22482 2023-02-17  Richard Biener  <rguenther@suse.de>
22484         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
22485         called on virtual operands.
22486         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
22487         ssa_undefined_value_p calls.
22488         (vn_phi_insert): Likewise.
22489         (set_ssa_val_to): Likewise.
22490         (visit_phi): Avoid extra work with equivalences for
22491         virtual operand PHIs.
22493 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22495         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
22496         class.
22497         (class mask_nlogic): Ditto.
22498         (class mask_notlogic): Ditto.
22499         (class vmmv): Ditto.
22500         (class vmclr): Ditto.
22501         (class vmset): Ditto.
22502         (class vmnot): Ditto.
22503         (class vcpop): Ditto.
22504         (class vfirst): Ditto.
22505         (class mask_misc): Ditto.
22506         (class viota): Ditto.
22507         (class vid): Ditto.
22508         (BASE): Ditto.
22509         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22510         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
22511         (vmnand): Ditto.
22512         (vmandn): Ditto.
22513         (vmxor): Ditto.
22514         (vmor): Ditto.
22515         (vmnor): Ditto.
22516         (vmorn): Ditto.
22517         (vmxnor): Ditto.
22518         (vmmv): Ditto.
22519         (vmclr): Ditto.
22520         (vmset): Ditto.
22521         (vmnot): Ditto.
22522         (vcpop): Ditto.
22523         (vfirst): Ditto.
22524         (vmsbf): Ditto.
22525         (vmsif): Ditto.
22526         (vmsof): Ditto.
22527         (viota): Ditto.
22528         (vid): Ditto.
22529         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
22530         (struct mask_alu_def): Ditto.
22531         (SHAPE): Ditto.
22532         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22533         * config/riscv/riscv-vector-builtins.cc: Ditto.
22534         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
22535         for dest it scalar RVV intrinsics.
22536         * config/riscv/vector-iterators.md (sof): New iterator.
22537         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
22538         (@pred_<optab>not<mode>): New pattern.
22539         (@pred_popcount<VB:mode><P:mode>): New pattern.
22540         (@pred_ffs<VB:mode><P:mode>): New pattern.
22541         (@pred_<misc_op><mode>): New pattern.
22542         (@pred_iota<mode>): New pattern.
22543         (@pred_series<mode>): New pattern.
22545 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22547         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
22548         (vsbc): Ditto.
22549         (vmerge): Ditto.
22550         (vmv_v): Ditto.
22551         * config/riscv/riscv-vector-builtins.cc: Ditto.
22553 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22554             kito-cheng  <kito.cheng@sifive.com>
22556         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
22557         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
22558         (sew64_scalar_helper): New function.
22559         * config/riscv/vector.md: Normalization.
22561 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22563         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
22564         (vsm): Ditto.
22565         (vsse): Ditto.
22566         (vsoxei64): Ditto.
22567         (vsub): Ditto.
22568         (vand): Ditto.
22569         (vor): Ditto.
22570         (vxor): Ditto.
22571         (vsll): Ditto.
22572         (vsra): Ditto.
22573         (vsrl): Ditto.
22574         (vmin): Ditto.
22575         (vmax): Ditto.
22576         (vminu): Ditto.
22577         (vmaxu): Ditto.
22578         (vmul): Ditto.
22579         (vmulh): Ditto.
22580         (vmulhu): Ditto.
22581         (vmulhsu): Ditto.
22582         (vdiv): Ditto.
22583         (vrem): Ditto.
22584         (vdivu): Ditto.
22585         (vremu): Ditto.
22586         (vnot): Ditto.
22587         (vsext): Ditto.
22588         (vzext): Ditto.
22589         (vwadd): Ditto.
22590         (vwsub): Ditto.
22591         (vwmul): Ditto.
22592         (vwmulu): Ditto.
22593         (vwmulsu): Ditto.
22594         (vwaddu): Ditto.
22595         (vwsubu): Ditto.
22596         (vsbc): Ditto.
22597         (vmsbc): Ditto.
22598         (vnsra): Ditto.
22599         (vmerge): Ditto.
22600         (vmv_v): Ditto.
22601         (vmsne): Ditto.
22602         (vmslt): Ditto.
22603         (vmsgt): Ditto.
22604         (vmsle): Ditto.
22605         (vmsge): Ditto.
22606         (vmsltu): Ditto.
22607         (vmsgtu): Ditto.
22608         (vmsleu): Ditto.
22609         (vmsgeu): Ditto.
22610         (vnmsac): Ditto.
22611         (vmadd): Ditto.
22612         (vnmsub): Ditto.
22613         (vwmacc): Ditto.
22614         (vsadd): Ditto.
22615         (vssub): Ditto.
22616         (vssubu): Ditto.
22617         (vaadd): Ditto.
22618         (vasub): Ditto.
22619         (vasubu): Ditto.
22620         (vsmul): Ditto.
22621         (vssra): Ditto.
22622         (vssrl): Ditto.
22623         (vnclip): Ditto.
22625 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22627         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
22628         (@pred_<optab><mode>_scalar): Ditto.
22629         (*pred_<optab><mode>_scalar): Ditto.
22630         (*pred_<optab><mode>_extended_scalar): Ditto.
22632 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22634         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
22635         (init_builtins): Ditto.
22636         (mangle_builtin_type): Ditto.
22637         (verify_type_context): Ditto.
22638         (handle_pragma_vector):  Ditto.
22639         (builtin_decl): Ditto.
22640         (expand_builtin): Ditto.
22641         (const_vec_all_same_in_range_p): Ditto.
22642         (legitimize_move): Ditto.
22643         (emit_vlmax_op): Ditto.
22644         (emit_nonvlmax_op): Ditto.
22645         (get_vlmul): Ditto.
22646         (get_ratio): Ditto.
22647         (get_ta): Ditto.
22648         (get_ma): Ditto.
22649         (get_avl_type): Ditto.
22650         (calculate_ratio): Ditto.
22651         (enum vlmul_type): Ditto.
22652         (simm5_p): Ditto.
22653         (neg_simm5_p): Ditto.
22654         (has_vi_variant_p): Ditto.
22656 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22658         * config/riscv/riscv-protos.h (simm32_p): Remove.
22659         * config/riscv/riscv-v.cc (simm32_p): Ditto.
22660         * config/riscv/vector.md: Use immediate_operand
22661         instead of riscv_vector::simm32_p.
22663 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
22665         * doc/invoke.texi (Optimize Options): Reword the explanation
22666         getting minimal, maximal and default values of a parameter.
22668 2023-02-16  Patrick Palka  <ppalka@redhat.com>
22670         * addresses.h: Mechanically drop 'static' from 'static inline'
22671         functions via s/^static inline/inline/g.
22672         * asan.h: Likewise.
22673         * attribs.h: Likewise.
22674         * basic-block.h: Likewise.
22675         * bitmap.h: Likewise.
22676         * cfghooks.h: Likewise.
22677         * cfgloop.h: Likewise.
22678         * cgraph.h: Likewise.
22679         * cselib.h: Likewise.
22680         * data-streamer.h: Likewise.
22681         * debug.h: Likewise.
22682         * df.h: Likewise.
22683         * diagnostic.h: Likewise.
22684         * dominance.h: Likewise.
22685         * dumpfile.h: Likewise.
22686         * emit-rtl.h: Likewise.
22687         * except.h: Likewise.
22688         * expmed.h: Likewise.
22689         * expr.h: Likewise.
22690         * fixed-value.h: Likewise.
22691         * gengtype.h: Likewise.
22692         * gimple-expr.h: Likewise.
22693         * gimple-iterator.h: Likewise.
22694         * gimple-predict.h: Likewise.
22695         * gimple-range-fold.h: Likewise.
22696         * gimple-ssa.h: Likewise.
22697         * gimple.h: Likewise.
22698         * graphite.h: Likewise.
22699         * hard-reg-set.h: Likewise.
22700         * hash-map.h: Likewise.
22701         * hash-set.h: Likewise.
22702         * hash-table.h: Likewise.
22703         * hwint.h: Likewise.
22704         * input.h: Likewise.
22705         * insn-addr.h: Likewise.
22706         * internal-fn.h: Likewise.
22707         * ipa-fnsummary.h: Likewise.
22708         * ipa-icf-gimple.h: Likewise.
22709         * ipa-inline.h: Likewise.
22710         * ipa-modref.h: Likewise.
22711         * ipa-prop.h: Likewise.
22712         * ira-int.h: Likewise.
22713         * ira.h: Likewise.
22714         * lra-int.h: Likewise.
22715         * lra.h: Likewise.
22716         * lto-streamer.h: Likewise.
22717         * memmodel.h: Likewise.
22718         * omp-general.h: Likewise.
22719         * optabs-query.h: Likewise.
22720         * optabs.h: Likewise.
22721         * plugin.h: Likewise.
22722         * pretty-print.h: Likewise.
22723         * range.h: Likewise.
22724         * read-md.h: Likewise.
22725         * recog.h: Likewise.
22726         * regs.h: Likewise.
22727         * rtl-iter.h: Likewise.
22728         * rtl.h: Likewise.
22729         * sbitmap.h: Likewise.
22730         * sched-int.h: Likewise.
22731         * sel-sched-ir.h: Likewise.
22732         * sese.h: Likewise.
22733         * sparseset.h: Likewise.
22734         * ssa-iterators.h: Likewise.
22735         * system.h: Likewise.
22736         * target-globals.h: Likewise.
22737         * target.h: Likewise.
22738         * timevar.h: Likewise.
22739         * tree-chrec.h: Likewise.
22740         * tree-data-ref.h: Likewise.
22741         * tree-iterator.h: Likewise.
22742         * tree-outof-ssa.h: Likewise.
22743         * tree-phinodes.h: Likewise.
22744         * tree-scalar-evolution.h: Likewise.
22745         * tree-sra.h: Likewise.
22746         * tree-ssa-alias.h: Likewise.
22747         * tree-ssa-live.h: Likewise.
22748         * tree-ssa-loop-manip.h: Likewise.
22749         * tree-ssa-loop.h: Likewise.
22750         * tree-ssa-operands.h: Likewise.
22751         * tree-ssa-propagate.h: Likewise.
22752         * tree-ssa-sccvn.h: Likewise.
22753         * tree-ssa.h: Likewise.
22754         * tree-ssanames.h: Likewise.
22755         * tree-streamer.h: Likewise.
22756         * tree-switch-conversion.h: Likewise.
22757         * tree-vectorizer.h: Likewise.
22758         * tree.h: Likewise.
22759         * wide-int.h: Likewise.
22761 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
22763         PR tree-optimization/108657
22764         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
22765         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
22766         is a call to internal or builtin function.
22768 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
22770         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
22771         using-declaration to unhide functions.
22773 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
22775         PR tree-optimization/108783
22776         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
22777         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
22778         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
22779         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
22781 2023-02-16  Richard Biener  <rguenther@suse.de>
22783         PR tree-optimization/108791
22784         * tree-ssa-forwprop.cc (optimize_vector_load): Build
22785         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
22786         type.
22788 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
22790         PR target/90458
22791         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
22792         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
22793         (ix86_expand_prologue): Likewise.
22795 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
22797         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
22799 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
22801         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
22802         int248_register_operand predicate in zero_extract sub-RTX.
22803         (*cmpqi_ext<mode>_2): Ditto.
22804         (*cmpqi_ext<mode>_3): Ditto.
22805         (*cmpqi_ext<mode>_4): Ditto.
22806         (*extzvqi_mem_rex64): Ditto.
22807         (*extzvqi): Ditto.
22808         (*insvqi_1_mem_rex64): Ditto.
22809         (@insv<mode>_1): Ditto.
22810         (*insvqi_1): Ditto.
22811         (*insvqi_2): Ditto.
22812         (*insvqi_3): Ditto.
22813         (*extendqi<SWI24:mode>_ext_1): Ditto.
22814         (*addqi_ext<mode>_1): Ditto.
22815         (*addqi_ext<mode>_2): Ditto.
22816         (*subqi_ext<mode>_2): Ditto.
22817         (*testqi_ext<mode>_1): Ditto.
22818         (*testqi_ext<mode>_2): Ditto.
22819         (*andqi_ext<mode>_1): Ditto.
22820         (*andqi_ext<mode>_1_cc): Ditto.
22821         (*andqi_ext<mode>_2): Ditto.
22822         (*<any_or:code>qi_ext<mode>_1): Ditto.
22823         (*<any_or:code>qi_ext<mode>_2): Ditto.
22824         (*xorqi_ext<mode>_1_cc): Ditto.
22825         (*negqi_ext<mode>_2): Ditto.
22826         (*ashlqi_ext<mode>_2): Ditto.
22827         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
22829 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
22831         * config/i386/predicates.md (int248_register_operand):
22832         Rename from extr_register_operand.
22833         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
22834         (*extzx<mode>): Ditto.
22835         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
22836         (*ashl<mode>3_mask): Ditto.
22837         (*<any_shiftrt:insn><mode>3_mask): Ditto.
22838         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
22839         (*<any_rotate:insn><mode>3_mask): Ditto.
22840         (*<btsc><mode>_mask): Ditto.
22841         (*btr<mode>_mask): Ditto.
22842         (*jcc_bt<mode>_mask_1): Ditto.
22844 2023-02-15  Richard Biener  <rguenther@suse.de>
22846         PR middle-end/26854
22847         * df-core.cc (df_worklist_propagate_forward): Put later
22848         blocks on worklist and only earlier blocks on pending.
22849         (df_worklist_propagate_backward): Likewise.
22850         (df_worklist_dataflow_doublequeue): Change the iteration
22851         to process new blocks in the same iteration if that
22852         maintains the iteration order.
22854 2023-02-15  Marek Polacek  <polacek@redhat.com>
22856         PR middle-end/106080
22857         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
22858         instead.
22860 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22862         * config/riscv/predicates.md: Refine codes.
22863         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
22864         * config/riscv/riscv-v.cc: Refine codes.
22865         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
22866         enum.
22867         (class imac): New class.
22868         (enum widen_ternop_type): New enum.
22869         (class iwmac): New class.
22870         (BASE): New class.
22871         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22872         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
22873         (vnmsac): Ditto.
22874         (vmadd): Ditto.
22875         (vnmsub): Ditto.
22876         (vwmacc): Ditto.
22877         (vwmaccu): Ditto.
22878         (vwmaccsu): Ditto.
22879         (vwmaccus): Ditto.
22880         * config/riscv/riscv-vector-builtins.cc
22881         (function_builder::apply_predication): Adjust for multiply-add support.
22882         (function_expander::add_vundef_operand): Refine codes.
22883         (function_expander::use_ternop_insn): New function.
22884         (function_expander::use_widen_ternop_insn): Ditto.
22885         * config/riscv/riscv-vector-builtins.h: New function.
22886         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
22887         (pred_mul_<optab><mode>_undef_merge): Ditto.
22888         (*pred_<madd_nmsub><mode>): Ditto.
22889         (*pred_<macc_nmsac><mode>): Ditto.
22890         (*pred_mul_<optab><mode>): Ditto.
22891         (@pred_mul_<optab><mode>_scalar): Ditto.
22892         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
22893         (*pred_<madd_nmsub><mode>_scalar): Ditto.
22894         (*pred_<macc_nmsac><mode>_scalar): Ditto.
22895         (*pred_mul_<optab><mode>_scalar): Ditto.
22896         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
22897         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
22898         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
22899         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
22900         (@pred_widen_mul_plus<su><mode>): Ditto.
22901         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
22902         (@pred_widen_mul_plussu<mode>): Ditto.
22903         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
22904         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
22906 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22908         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
22909         (vector_all_trues_mask_operand): New predicate.
22910         (vector_undef_operand): New predicate.
22911         (ltge_operator): New predicate.
22912         (comparison_except_ltge_operator): New predicate.
22913         (comparison_except_eqge_operator): New predicate.
22914         (ge_operator): New predicate.
22915         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
22916         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
22917         (BASE): Ditto.
22918         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22919         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
22920         (vmsne): Ditto.
22921         (vmslt): Ditto.
22922         (vmsgt): Ditto.
22923         (vmsle): Ditto.
22924         (vmsge): Ditto.
22925         (vmsltu): Ditto.
22926         (vmsgtu): Ditto.
22927         (vmsleu): Ditto.
22928         (vmsgeu): Ditto.
22929         * config/riscv/riscv-vector-builtins-shapes.cc
22930         (struct return_mask_def): Adjust for compare support.
22931         * config/riscv/riscv-vector-builtins.cc
22932         (function_expander::use_compare_insn): New function.
22933         * config/riscv/riscv-vector-builtins.h
22934         (function_expander::add_integer_operand): Ditto.
22935         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
22936         * config/riscv/riscv.md: Add vector min/max attributes.
22937         * config/riscv/vector-iterators.md (xnor): New iterator.
22938         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
22939         (*pred_cmp<mode>): Ditto.
22940         (*pred_cmp<mode>_narrow): Ditto.
22941         (@pred_ltge<mode>): Ditto.
22942         (*pred_ltge<mode>): Ditto.
22943         (*pred_ltge<mode>_narrow): Ditto.
22944         (@pred_cmp<mode>_scalar): Ditto.
22945         (*pred_cmp<mode>_scalar): Ditto.
22946         (*pred_cmp<mode>_scalar_narrow): Ditto.
22947         (@pred_eqne<mode>_scalar): Ditto.
22948         (*pred_eqne<mode>_scalar): Ditto.
22949         (*pred_eqne<mode>_scalar_narrow): Ditto.
22950         (*pred_cmp<mode>_extended_scalar): Ditto.
22951         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
22952         (*pred_eqne<mode>_extended_scalar): Ditto.
22953         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
22954         (@pred_ge<mode>_scalar): Ditto.
22955         (@pred_<optab><mode>): Ditto.
22956         (@pred_n<optab><mode>): Ditto.
22957         (@pred_<optab>n<mode>): Ditto.
22958         (@pred_not<mode>): Ditto.
22960 2023-02-15  Martin Jambor  <mjambor@suse.cz>
22962         PR ipa/108679
22963         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
22964         creation of non-scalar replacements even if IPA-CP knows their
22965         contents.
22967 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
22969         PR target/108787
22970         PR target/103109
22971         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
22972         expander, change operand 3 to be TImode, emit maddlddi4 and
22973         umadddi4_highpart{,_le} with its low half and finally add the high
22974         half to the result.
22976 2023-02-15  Martin Liska  <mliska@suse.cz>
22978         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
22980 2023-02-15  Richard Biener  <rguenther@suse.de>
22982         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
22983         for with_poison and alias worklist to it.
22984         (sanitize_asan_mark_poison): Likewise.
22986 2023-02-15  Richard Biener  <rguenther@suse.de>
22988         PR target/108738
22989         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
22990         Combine bitmap test and set.
22991         (scalar_chain::add_insn): Likewise.
22992         (scalar_chain::analyze_register_chain): Remove redundant
22993         attempt to add to queue and instead strengthen assert.
22994         Sink common attempts to mark the def dual-mode.
22995         (scalar_chain::add_to_queue): Remove redundant insn bitmap
22996         check.
22998 2023-02-15  Richard Biener  <rguenther@suse.de>
23000         PR target/108738
23001         * config/i386/i386-features.cc (convert_scalars_to_vector):
23002         Switch candidates bitmaps to tree view before building the chains.
23004 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
23006         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
23007         "failure trying to reload" call.
23009 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
23011         * gdbinit.in (phrs): New command.
23012         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
23013         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
23015 2023-02-14  David Faust  <david.faust@oracle.com>
23017         PR target/108790
23018         * config/bpf/constraints.md (q): New memory constraint.
23019         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
23020         (zero_extendqidi2): Likewise.
23021         (zero_extendsidi2): Likewise.
23022         (*mov<MM:mode>): Likewise.
23024 2023-02-14  Andrew Pinski  <apinski@marvell.com>
23026         PR tree-optimization/108355
23027         PR tree-optimization/96921
23028         * match.pd: Add pattern for "1 - bool_val".
23030 2023-02-14  Richard Biener  <rguenther@suse.de>
23032         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
23033         basic block index hashing on the availability of ->cclhs.
23034         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
23035         rely on ->cclhs availability.
23036         (vn_phi_lookup): Set ->cclhs only when we are eventually
23037         going to CSE the PHI.
23038         (vn_phi_insert): Likewise.
23040 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
23042         * gimplify.cc (gimplify_save_expr): Add missing guard.
23044 2023-02-14  Richard Biener  <rguenther@suse.de>
23046         PR tree-optimization/108782
23047         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
23048         Make sure we're not vectorizing an inner loop.
23050 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
23052         PR sanitizer/108777
23053         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
23054         * asan.h (asan_memfn_rtl): Declare.
23055         * asan.cc (asan_memfn_rtls): New variable.
23056         (asan_memfn_rtl): New function.
23057         * builtins.cc (expand_builtin): If
23058         param_asan_kernel_mem_intrinsic_prefix and function is
23059         kernel-{,hw}address sanitized, emit calls to
23060         __{,hw}asan_{memcpy,memmove,memset} rather than
23061         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
23062         instead of flag_sanitize & SANITIZE_ADDRESS to check if
23063         asan_intercepted_p functions shouldn't be expanded inline.
23065 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
23067         PR tree-optimization/96373
23068         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
23069         operations on the loop mask.  Reject partial vectors if this isn't
23070         possible.
23072 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
23074         PR rtl-optimization/108681
23075         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
23076         code to handle bare uses and clobbers.
23078 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
23080         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
23081         caller_save_p flag when clearing defined_p flag.
23082         (setup_reg_equiv): Ditto.
23083         * lra-constraints.cc (lra_constraints): Ditto.
23085 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
23087         PR target/108516
23088         * config/i386/predicates.md (extr_register_operand):
23089         New special predicate.
23090         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
23091         as operand 1 predicate.
23092         (*exzv<mode>): Ditto.
23093         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
23095 2023-02-13  Richard Biener  <rguenther@suse.de>
23097         PR tree-optimization/28614
23098         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
23099         walking all edges in most cases.
23100         (vn_nary_op_insert_pieces_predicated): Avoid repeated
23101         calls to can_track_predicate_on_edge unless checking is
23102         enabled.
23103         (process_bb): Instead call it once here for each edge
23104         we register possibly multiple predicates on.
23106 2023-02-13  Richard Biener  <rguenther@suse.de>
23108         PR tree-optimization/108691
23109         * tree-cfg.cc (notice_special_calls): When the CFG is built
23110         honor gimple_call_ctrl_altering_p.
23111         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
23112         temporarily if the call is not control-altering.
23113         * calls.cc (emit_call_1): Do not add REG_SETJMP if
23114         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
23116 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
23118         PR target/108102
23119         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
23120         (struct s390_sched_state): Initialise to zero.
23121         (s390_sched_variable_issue): For better debuggability also emit
23122         the current side.
23123         (s390_sched_init): Unconditionally reset scheduler state.
23125 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
23127         * ifcvt.h (noce_if_info::cond_inverted): New field.
23128         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
23129         values when cond_inverted is true.
23130         (noce_find_if_block): Allow the condition to be inverted when
23131         handling conditional moves.
23133 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
23135         * config/s390/predicates.md (execute_operation): Use
23136         constrain_operands instead of extract_constrain_insn in order to
23137         determine wheter there exists a valid alternative.
23139 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
23141         * common/config/arc/arc-common.cc (arc_option_optimization_table):
23142         Remove millicode from list.
23144 2023-02-13  Martin Liska  <mliska@suse.cz>
23146         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
23148 2023-02-13  Richard Biener  <rguenther@suse.de>
23150         PR tree-optimization/106722
23151         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
23152         whether we marked a stmt.
23153         (mark_control_dependent_edges_necessary): When
23154         mark_last_stmt_necessary didn't mark any stmt make sure
23155         to mark its control dependent edges.
23156         (propagate_necessity): Likewise.
23158 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
23160         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
23161         (DWARF_FRAME_REGISTERS): New.
23162         (DWARF_REG_TO_UNWIND_COLUMN): New.
23164 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
23166         * doc/sourcebuild.texi: Remove (broken) direct reference to
23167         "The GNU configure and build system".
23169 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
23171         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
23172         gen_add3_insn to gen_rtx_SET.
23173         (riscv_adjust_libcall_cfi_epilogue): Likewise.
23175 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23177         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
23178         (class vnclip): Ditto.
23179         (BASE): Ditto.
23180         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23181         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
23182         (vasub): Ditto.
23183         (vaaddu): Ditto.
23184         (vasubu): Ditto.
23185         (vsmul): Ditto.
23186         (vssra): Ditto.
23187         (vssrl): Ditto.
23188         (vnclipu): Ditto.
23189         (vnclip): Ditto.
23190         * config/riscv/vector-iterators.md (su): Add instruction.
23191         (aadd): Ditto.
23192         (vaalu): Ditto.
23193         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
23194         (@pred_<sat_op><mode>_scalar): Ditto.
23195         (*pred_<sat_op><mode>_scalar): Ditto.
23196         (*pred_<sat_op><mode>_extended_scalar): Ditto.
23197         (@pred_narrow_clip<v_su><mode>): Ditto.
23198         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
23200 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23202         * config/riscv/constraints.md (Wbr): Remove unused constraint.
23203         * config/riscv/predicates.md: Fix move operand predicate.
23204         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
23205         (class vncvt_x): Ditto.
23206         (class vmerge): Ditto.
23207         (class vmv_v): Ditto.
23208         (BASE): Ditto.
23209         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23210         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
23211         (vsrl): Ditto.
23212         (vnsrl): Ditto.
23213         (vnsra): Ditto.
23214         (vncvt_x): Ditto.
23215         (vmerge): Ditto.
23216         (vmv_v): Ditto.
23217         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
23218         (struct move_def): Ditto.
23219         (SHAPE): Ditto.
23220         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23221         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
23222         (DEF_RVV_WEXTU_OPS): Ditto
23223         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
23224         (v_v): Ditto.
23225         (v_x): Ditto.
23226         (x_w): Ditto.
23227         (x): Ditto.
23228         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
23229         * config/riscv/vector-iterators.md (nmsac):New iterator.
23230         (nmsub): New iterator.
23231         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
23232         (@pred_merge<mode>_scalar): New pattern.
23233         (*pred_merge<mode>_scalar): New pattern.
23234         (*pred_merge<mode>_extended_scalar): New pattern.
23235         (@pred_narrow_<optab><mode>): New pattern.
23236         (@pred_narrow_<optab><mode>_scalar): New pattern.
23237         (@pred_trunc<mode>): New pattern.
23239 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23241         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
23242         (class vmsbc): Ditto.
23243         (BASE): Define new class.
23244         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23245         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
23246         (vmsbc): Ditto.
23247         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
23248         New class.
23249         (SHAPE): Ditto.
23250         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23251         * config/riscv/riscv-vector-builtins.cc
23252         (function_expander::use_exact_insn): Adjust for new support
23253         * config/riscv/riscv-vector-builtins.h
23254         (function_base::has_merge_operand_p): New function.
23255         * config/riscv/vector-iterators.md: New iterator.
23256         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
23257         (@pred_msbc<mode>): Ditto.
23258         (@pred_madc<mode>_scalar): Ditto.
23259         (@pred_msbc<mode>_scalar): Ditto.
23260         (*pred_madc<mode>_scalar): Ditto.
23261         (*pred_madc<mode>_extended_scalar): Ditto.
23262         (*pred_msbc<mode>_scalar): Ditto.
23263         (*pred_msbc<mode>_extended_scalar): Ditto.
23264         (@pred_madc<mode>_overflow): Ditto.
23265         (@pred_msbc<mode>_overflow): Ditto.
23266         (@pred_madc<mode>_overflow_scalar): Ditto.
23267         (@pred_msbc<mode>_overflow_scalar): Ditto.
23268         (*pred_madc<mode>_overflow_scalar): Ditto.
23269         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
23270         (*pred_msbc<mode>_overflow_scalar): Ditto.
23271         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
23273 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23275         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
23276         * config/riscv/riscv-v.cc (simm32_p): Ditto.
23277         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
23278         (class vsbc): Ditto.
23279         (BASE): Ditto.
23280         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23281         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
23282         (vsbc): Ditto.
23283         * config/riscv/riscv-vector-builtins-shapes.cc
23284         (struct no_mask_policy_def): Ditto.
23285         (SHAPE): Ditto.
23286         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23287         * config/riscv/riscv-vector-builtins.cc
23288         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
23289         (rvv_arg_type_info::get_tree_type): Ditto.
23290         (function_expander::use_exact_insn): Ditto.
23291         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
23292         (function_base::use_mask_predication_p): New function.
23293         * config/riscv/vector-iterators.md: New iterator.
23294         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
23295         (@pred_sbc<mode>): Ditto.
23296         (@pred_adc<mode>_scalar): Ditto.
23297         (@pred_sbc<mode>_scalar): Ditto.
23298         (*pred_adc<mode>_scalar): Ditto.
23299         (*pred_adc<mode>_extended_scalar): Ditto.
23300         (*pred_sbc<mode>_scalar): Ditto.
23301         (*pred_sbc<mode>_extended_scalar): Ditto.
23303 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23305         * config/riscv/vector.md: use "zero" reg.
23307 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23309         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
23310         class.
23311         (class vwmulsu): Ditto.
23312         (class vwcvt): Ditto.
23313         (BASE): Add integer widening support.
23314         * config/riscv/riscv-vector-builtins-bases.h: Ditto
23315         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
23316         (vwsub): New class.
23317         (vwmul): New class.
23318         (vwmulu): New class.
23319         (vwmulsu): New class.
23320         (vwaddu): New class.
23321         (vwsubu): New class.
23322         (vwcvt_x): New class.
23323         (vwcvtu_x): New class.
23324         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
23325         class.
23326         (struct widen_alu_def): New class.
23327         (SHAPE): New class.
23328         * config/riscv/riscv-vector-builtins-shapes.h: New class.
23329         * config/riscv/riscv-vector-builtins.cc
23330         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
23331         (rvv_arg_type_info::get_tree_type): Ditto.
23332         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
23333         (x_v): Ditto.
23334         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
23335         widening support.
23336         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
23337         * config/riscv/riscv.h (X0_REGNUM): New constant.
23338         * config/riscv/vector-iterators.md: New iterators.
23339         * config/riscv/vector.md
23340         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
23341         pattern.
23342         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
23343         Ditto.
23344         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
23345         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
23346         Ditto.
23347         (@pred_widen_mulsu<mode>): Ditto.
23348         (@pred_widen_mulsu<mode>_scalar): Ditto.
23349         (@pred_<optab><mode>): Ditto.
23351 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23352             kito-cheng  <kito.cheng@sifive.com>
23354         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
23355         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
23356         (BASE): Ditto.
23357         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23358         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
23359         API support.
23360         (vmulhu): Ditto.
23361         (vmulhsu): Ditto.
23362         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
23363         New macro.
23364         (DEF_RVV_FULL_V_U_OPS): Ditto.
23365         (vint8mf8_t): Ditto.
23366         (vint8mf4_t): Ditto.
23367         (vint8mf2_t): Ditto.
23368         (vint8m1_t): Ditto.
23369         (vint8m2_t): Ditto.
23370         (vint8m4_t): Ditto.
23371         (vint8m8_t): Ditto.
23372         (vint16mf4_t): Ditto.
23373         (vint16mf2_t): Ditto.
23374         (vint16m1_t): Ditto.
23375         (vint16m2_t): Ditto.
23376         (vint16m4_t): Ditto.
23377         (vint16m8_t): Ditto.
23378         (vint32mf2_t): Ditto.
23379         (vint32m1_t): Ditto.
23380         (vint32m2_t): Ditto.
23381         (vint32m4_t): Ditto.
23382         (vint32m8_t): Ditto.
23383         (vint64m1_t): Ditto.
23384         (vint64m2_t): Ditto.
23385         (vint64m4_t): Ditto.
23386         (vint64m8_t): Ditto.
23387         (vuint8mf8_t): Ditto.
23388         (vuint8mf4_t): Ditto.
23389         (vuint8mf2_t): Ditto.
23390         (vuint8m1_t): Ditto.
23391         (vuint8m2_t): Ditto.
23392         (vuint8m4_t): Ditto.
23393         (vuint8m8_t): Ditto.
23394         (vuint16mf4_t): Ditto.
23395         (vuint16mf2_t): Ditto.
23396         (vuint16m1_t): Ditto.
23397         (vuint16m2_t): Ditto.
23398         (vuint16m4_t): Ditto.
23399         (vuint16m8_t): Ditto.
23400         (vuint32mf2_t): Ditto.
23401         (vuint32m1_t): Ditto.
23402         (vuint32m2_t): Ditto.
23403         (vuint32m4_t): Ditto.
23404         (vuint32m8_t): Ditto.
23405         (vuint64m1_t): Ditto.
23406         (vuint64m2_t): Ditto.
23407         (vuint64m4_t): Ditto.
23408         (vuint64m8_t): Ditto.
23409         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
23410         (DEF_RVV_FULL_V_U_OPS): Ditto.
23411         (check_required_extensions): Add vmulh support.
23412         (rvv_arg_type_info::get_tree_type): Ditto.
23413         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
23414         (enum rvv_base_type): Ditto.
23415         * config/riscv/riscv.opt: Add 'V' extension flag.
23416         * config/riscv/vector-iterators.md (su): New iterator.
23417         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
23418         (@pred_mulh<v_su><mode>_scalar): Ditto.
23419         (*pred_mulh<v_su><mode>_scalar): Ditto.
23420         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
23422 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23424         * config/riscv/iterators.md: Add sign_extend/zero_extend.
23425         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
23426         (BASE): Ditto.
23427         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
23428         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
23429         define.
23430         (vzext): Ditto.
23431         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
23432         for vsext/vzext support.
23433         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
23434         macro define.
23435         (DEF_RVV_QEXTI_OPS): Ditto.
23436         (DEF_RVV_OEXTI_OPS): Ditto.
23437         (DEF_RVV_WEXTU_OPS): Ditto.
23438         (DEF_RVV_QEXTU_OPS): Ditto.
23439         (DEF_RVV_OEXTU_OPS): Ditto.
23440         (vint16mf4_t): Ditto.
23441         (vint16mf2_t): Ditto.
23442         (vint16m1_t): Ditto.
23443         (vint16m2_t): Ditto.
23444         (vint16m4_t): Ditto.
23445         (vint16m8_t): Ditto.
23446         (vint32mf2_t): Ditto.
23447         (vint32m1_t): Ditto.
23448         (vint32m2_t): Ditto.
23449         (vint32m4_t): Ditto.
23450         (vint32m8_t): Ditto.
23451         (vint64m1_t): Ditto.
23452         (vint64m2_t): Ditto.
23453         (vint64m4_t): Ditto.
23454         (vint64m8_t): Ditto.
23455         (vuint16mf4_t): Ditto.
23456         (vuint16mf2_t): Ditto.
23457         (vuint16m1_t): Ditto.
23458         (vuint16m2_t): Ditto.
23459         (vuint16m4_t): Ditto.
23460         (vuint16m8_t): Ditto.
23461         (vuint32mf2_t): Ditto.
23462         (vuint32m1_t): Ditto.
23463         (vuint32m2_t): Ditto.
23464         (vuint32m4_t): Ditto.
23465         (vuint32m8_t): Ditto.
23466         (vuint64m1_t): Ditto.
23467         (vuint64m2_t): Ditto.
23468         (vuint64m4_t): Ditto.
23469         (vuint64m8_t): Ditto.
23470         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
23471         (DEF_RVV_QEXTI_OPS): Ditto.
23472         (DEF_RVV_OEXTI_OPS): Ditto.
23473         (DEF_RVV_WEXTU_OPS): Ditto.
23474         (DEF_RVV_QEXTU_OPS): Ditto.
23475         (DEF_RVV_OEXTU_OPS): Ditto.
23476         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
23477         support.
23478         (rvv_arg_type_info::get_tree_type): Ditto.
23479         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
23480         * config/riscv/vector-iterators.md (z): New attribute.
23481         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
23482         (@pred_<optab><mode>_vf4): Ditto.
23483         (@pred_<optab><mode>_vf8): Ditto.
23485 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23487         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
23488         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
23489         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
23490         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23491         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
23492         (vssub): Ditto.
23493         (vsaddu): Ditto.
23494         (vssubu): Ditto.
23495         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
23496         support.
23497         (sll.vv): Ditto.
23498         (%3,%v4): Ditto.
23499         (%3,%4): Ditto.
23500         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
23501         (@pred_<optab><mode>_scalar): New pattern.
23502         (*pred_<optab><mode>_scalar): New pattern.
23503         (*pred_<optab><mode>_extended_scalar): New pattern.
23505 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23507         * config/riscv/iterators.md: Add neg and not.
23508         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
23509         (BASE): Ditto.
23510         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23511         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
23512         into alu.
23513         (vsub): Ditto.
23514         (vand): Ditto.
23515         (vor): Ditto.
23516         (vxor): Ditto.
23517         (vsll): Ditto.
23518         (vsra): Ditto.
23519         (vsrl): Ditto.
23520         (vmin): Ditto.
23521         (vmax): Ditto.
23522         (vminu): Ditto.
23523         (vmaxu): Ditto.
23524         (vmul): Ditto.
23525         (vdiv): Ditto.
23526         (vrem): Ditto.
23527         (vdivu): Ditto.
23528         (vremu): Ditto.
23529         (vrsub): Ditto.
23530         (vneg): Ditto.
23531         (vnot): Ditto.
23532         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
23533         (struct alu_def): Ditto.
23534         (SHAPE): Ditto.
23535         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23536         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
23537         * config/riscv/vector-iterators.md: New iterator.
23538         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
23540 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23542         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
23544 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
23546         PR ipa/108605
23547         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
23548         item->offset bit position is too large to be representable as
23549         unsigned int byte position.
23551 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
23553         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
23555 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
23557         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
23558         valid_combine only when ira_use_lra_p is true.
23560 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
23562         * params.opt (ira-simple-lra-insn-threshold): Add new param.
23563         * ira.cc (ira): Use the param to switch on simple LRA.
23565 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
23567         PR tree-optimization/108687
23568         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
23569         back to RFD_NONE mode for calculations.
23570         (ranger_cache::propagate_cache): Call the internal edge range API
23571         with RFD_READ_ONLY instead of changing the external routine.
23573 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
23575         PR tree-optimization/108520
23576         * gimple-range-infer.cc (check_assume_func): Invoke
23577         gimple_range_global directly instead using global_range_query.
23578         * value-query.cc (get_range_global): Add function context and
23579         avoid calling nonnull_arg_p if not cfun.
23580         (gimple_range_global): Add function context pointer.
23581         * value-query.h (imple_range_global): Add function context.
23583 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23585         * config/riscv/constraints.md (Wdm): Adjust constraint.
23586         (Wbr): New constraint.
23587         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
23588         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
23589         (emit_vlmax_op): New function.
23590         (emit_nonvlmax_op): Ditto.
23591         (simm32_p): Ditto.
23592         (neg_simm5_p): Ditto.
23593         (has_vi_variant_p): Ditto.
23594         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
23595         (emit_vlmax_op): New function.
23596         (emit_nonvlmax_op): Ditto.
23597         (expand_const_vector): Adjust function.
23598         (legitimize_move): Ditto.
23599         (simm32_p): New function.
23600         (simm5_p): Ditto.
23601         (neg_simm5_p): Ditto.
23602         (has_vi_variant_p): Ditto.
23603         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
23604         (BASE): Ditto.
23605         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23606         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
23607         unsigned cases.
23608         (vmax): Ditto.
23609         (vminu): Remove signed cases.
23610         (vmaxu): Ditto.
23611         (vdiv): Remove unsigned cases.
23612         (vrem): Ditto.
23613         (vdivu): Remove signed cases.
23614         (vremu): Ditto.
23615         (vadd): Adjust.
23616         (vsub): Ditto.
23617         (vrsub): New class.
23618         (vand): Adjust.
23619         (vor): Ditto.
23620         (vxor): Ditto.
23621         (vmul): Ditto.
23622         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
23623         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
23624         * config/riscv/vector-iterators.md: New iterators.
23625         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
23626         support.
23627         (@pred_<optab><mode>_scalar): New pattern.
23628         (@pred_sub<mode>_reverse_scalar): Ditto.
23629         (*pred_<optab><mode>_scalar): Ditto.
23630         (*pred_<optab><mode>_extended_scalar): Ditto.
23631         (*pred_sub<mode>_reverse_scalar): Ditto.
23632         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
23634 2023-02-10  Richard Biener  <rguenther@suse.de>
23636         PR tree-optimization/108724
23637         * tree-vect-stmts.cc (vectorizable_operation): Avoid
23638         using word_mode vectors when vector lowering will
23639         decompose them to elementwise operations.
23641 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
23643         Revert:
23644         2023-02-09  Martin Liska  <mliska@suse.cz>
23646         PR target/100758
23647         * doc/extend.texi: Document that the function
23648         does not work correctly for old VIA processors.
23650 2023-02-10  Andrew Pinski  <apinski@marvell.com>
23651             Andrew Macleod   <amacleod@redhat.com>
23653         PR tree-optimization/108684
23654         * tree-ssa-dce.cc (simple_dce_from_worklist):
23655         Check all ssa names and not just non-vdef ones
23656         before accepting the inline-asm.
23657         Call unlink_stmt_vdef on the statement before
23658         removing it.
23660 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
23662         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
23663         * ira.cc (validate_equiv_mem): Check memref address variance.
23664         (no_equiv): Clear caller_save_p flag.
23665         (update_equiv_regs): Define caller save equivalence for
23666         valid_combine.
23667         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
23668         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
23669         call_save_p.  Use caller save equivalence depending on the arg.
23670         (split_reg): Adjust the call.
23672 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
23674         PR target/100758
23675         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
23676         (cpu_indicator_init): Call get_available_features for all CPUs with
23677         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
23678         fixes.
23680 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
23682         PR tree-optimization/108688
23683         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
23684         of BIT_INSERT_EXPR extracting exactly all inserted bits even
23685         when without mode precision.  Formatting fixes.
23687 2023-02-09  Andrew Pinski  <apinski@marvell.com>
23689         PR tree-optimization/108688
23690         * match.pd (bit_field_ref [bit_insert]): Avoid generating
23691         BIT_FIELD_REFs of non-mode-precision integral operands.
23693 2023-02-09  Martin Liska  <mliska@suse.cz>
23695         PR target/100758
23696         * doc/extend.texi: Document that the function
23697         does not work correctly for old VIA processors.
23699 2023-02-09  Andreas Schwab  <schwab@suse.de>
23701         * lto-wrapper.cc (merge_and_complain): Handle
23702         -funwind-tables and -fasynchronous-unwind-tables.
23703         (append_compiler_options): Likewise.
23705 2023-02-09  Richard Biener  <rguenther@suse.de>
23707         PR tree-optimization/26854
23708         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
23709         view around insert_updated_phi_nodes_for.
23710         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
23711         in tree view.
23712         (walk_aliased_vdefs_1): Likewise.
23714 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
23716         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
23718 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
23720         PR target/108505
23721         * config.gcc (tm_mlib_file): Define new variable.
23723 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
23725         PR tree-optimization/108692
23726         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
23727         widened_code which is different from code, don't call
23728         vect_look_through_possible_promotion but instead just check op is
23729         SSA_NAME with integral type for which vect_is_simple_use is true
23730         and call set_op on this_unprom.
23732 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
23734         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
23735         declaration.
23736         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
23737         definition.
23738         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
23739         to 'aarch_ra_sign_key'.
23740         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
23741         declaration.
23742         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
23743         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
23744         * config/arm/arm.opt: Define.
23746 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
23748         PR tree-optimization/108316
23749         * tree-vect-stmts.cc (get_load_store_type): When using
23750         internal functions for gather/scatter, make sure that the type
23751         of the offset argument is consistent with the offset vector type.
23753 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
23755         Revert:
23756         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
23758         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
23759         * ira.cc (validate_equiv_mem): Check memref address variance.
23760         (update_equiv_regs): Define caller save equivalence for
23761         valid_combine.
23762         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
23763         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
23764         call_save_p.  Use caller save equivalence depending on the arg.
23765         (split_reg): Adjust the call.
23767 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
23769         * tree.def (SAD_EXPR): Remove outdated comment about missing
23770         WIDEN_MINUS_EXPR.
23772 2023-02-07  Marek Polacek  <polacek@redhat.com>
23774         * doc/invoke.texi: Update -fchar8_t documentation.
23776 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
23778         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
23779         * ira.cc (validate_equiv_mem): Check memref address variance.
23780         (update_equiv_regs): Define caller save equivalence for
23781         valid_combine.
23782         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
23783         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
23784         call_save_p.  Use caller save equivalence depending on the arg.
23785         (split_reg): Adjust the call.
23787 2023-02-07  Richard Biener  <rguenther@suse.de>
23789         PR tree-optimization/26854
23790         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
23791         instead of immediate uses.
23793 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
23795         PR tree-optimization/106923
23796         * ipa-split.cc (execute_split_functions): Don't split returns_twice
23797         functions.
23799 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
23801         PR tree-optimization/106433
23802         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
23803         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
23805 2023-02-07  Jan Hubicka  <jh@suse.cz>
23807         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
23808         for znver4.
23810 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
23812         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
23813         (process_asm): Create a constructor for GCN_STACK_SIZE.
23814         (main): Parse the -mstack-size option.
23816 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
23818         PR target/104921
23819         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
23820         Use correct constraint for operand 3.
23822 2023-02-06  Martin Jambor  <mjambor@suse.cz>
23824         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
23826 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
23828         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
23829         New define_int_iterator.
23830         (bytepick_d_ashift_amount): Likewise.
23831         (bytepick_imm): New define_int_attr.
23832         (bytepick_w_lshiftrt_amount): Likewise.
23833         (bytepick_d_lshiftrt_amount): Likewise.
23834         (bytepick_w_<bytepick_imm>): New define_insn template.
23835         (bytepick_w_<bytepick_imm>_extend): Likewise.
23836         (bytepick_d_<bytepick_imm>): Likewise.
23837         (bytepick_w): Remove unused define_insn.
23838         (bytepick_d): Likewise.
23839         (UNSPEC_BYTEPICK_W): Remove unused unspec.
23840         (UNSPEC_BYTEPICK_D): Likewise.
23841         * config/loongarch/predicates.md (const_0_to_3_operand):
23842         Remove unused define_predicate.
23843         (const_0_to_7_operand): Likewise.
23845 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
23847         PR tree-optimization/108655
23848         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
23849         or -fsanitize=unreachable -fsanitize-trap=unreachable return
23850         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
23852 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
23854         * doc/install.texi (Specific): Remove PW32.
23856 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
23858         PR tree-optimization/108647
23859         * range-op.cc (operator_equal::op1_range,
23860         operator_not_equal::op1_range): Don't test op2 bound
23861         equality if op2.undefined_p (), instead set_varying.
23862         (operator_lt::op1_range, operator_le::op1_range,
23863         operator_gt::op1_range, operator_ge::op1_range): Return false if
23864         op2.undefined_p ().
23865         (operator_lt::op2_range, operator_le::op2_range,
23866         operator_gt::op2_range, operator_ge::op2_range): Return false if
23867         op1.undefined_p ().
23869 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
23871         PR tree-optimization/108639
23872         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
23873         widest_int.
23874         (irange::operator==): Same.
23876 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
23878         PR tree-optimization/108647
23879         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
23880         (foperator_lt::op2_range): Same.
23881         (foperator_le::op1_range): Same.
23882         (foperator_le::op2_range): Same.
23883         (foperator_gt::op1_range): Same.
23884         (foperator_gt::op2_range): Same.
23885         (foperator_ge::op1_range): Same.
23886         (foperator_ge::op2_range): Same.
23887         (foperator_unordered_lt::op1_range): Same.
23888         (foperator_unordered_lt::op2_range): Same.
23889         (foperator_unordered_le::op1_range): Same.
23890         (foperator_unordered_le::op2_range): Same.
23891         (foperator_unordered_gt::op1_range): Same.
23892         (foperator_unordered_gt::op2_range): Same.
23893         (foperator_unordered_ge::op1_range): Same.
23894         (foperator_unordered_ge::op2_range): Same.
23896 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
23898         PR tree-optimization/107570
23899         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
23901 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
23903         * doc/gm2.texi (Internals): Remove from menu.
23904         (Using): Comment out ifnohtml conditional.
23905         (Documentation): Use gcc url.
23906         (License): Node simplified.
23907         (Copying): New node.  Include gpl_v3_without_node.
23908         (Contributing): Node simplified.
23909         (Internals): Commented out.
23910         (Libraries): Node simplified.
23911         (Indices): Ditto.
23912         (Contents): Ditto.
23913         (Functions): Ditto.
23915 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
23917         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
23918         attribute.
23919         (mve_vqshluq_m_n_s<mode>): Likewise.
23920         (mve_vshlq_m_<supf><mode>): Likewise.
23921         (mve_vsriq_m_n_<supf><mode>): Likewise.
23922         (mve_vsubq_m_<supf><mode>): Likewise.
23924 2023-02-03  Martin Jambor  <mjambor@suse.cz>
23926         PR ipa/108384
23927         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
23928         when comparing to an IPA-CP value.
23929         (dump_list_of_param_indices): New function.
23930         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
23931         Dump removed candidates using dump_list_of_param_indices.
23932         * ipa-param-manipulation.cc
23933         (ipa_param_body_adjustments::modify_expression): Add assert checking
23934         sizes of a VIEW_CONVERT_EXPR will match.
23935         (ipa_param_body_adjustments::modify_assignment): Likewise.
23937 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
23939         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
23940         * config/riscv/riscv.cc: Ditto.
23942 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23944         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
23945         (sll.vv): Ditto.
23946         (%3,%4): Ditto.
23947         (%3,%v4): Ditto.
23948         * config/riscv/vector.md: Ditto.
23950 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23952         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
23953         * config/riscv/riscv-vector-builtins-bases.cc: New class.
23954         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
23955         (vsra): Ditto.
23956         (vsrl): Ditto.
23957         * config/riscv/riscv-vector-builtins.cc: Ditto.
23958         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
23960 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
23962         * toplev.cc (toplev::main): Only print the version information header
23963         from toplevel main().
23965 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
23967         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
23968         cond_{ashl|ashr|lshr}
23970 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
23972         PR rtl-optimization/108086
23973         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
23974         Adjust size-related commentary accordingly.
23976 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
23978         PR rtl-optimization/108508
23979         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
23980         the splay tree search gives the first clobber in the second group,
23981         make sure that the root of the first clobber group is updated
23982         correctly.  Enter the new clobber group into the definition splay
23983         tree.
23985 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
23987         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
23988         Fix finding best match score.
23990 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
23992         PR debug/106746
23993         PR rtl-optimization/108463
23994         PR target/108484
23995         * cselib.cc (cselib_current_insn): Move declaration earlier.
23996         (cselib_hasher::equal): For debug only locs, temporarily override
23997         cselib_current_insn to their l->setting_insn for the
23998         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
23999         promote some debug locs.
24000         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
24001         when using cselib call cselib_lookup_from_insn on the address but
24002         don't substitute it.
24004 2023-02-02  Richard Biener  <rguenther@suse.de>
24006         PR middle-end/108625
24007         * genmatch.cc (expr::gen_transform): Also disallow resimplification
24008         from pushing to lseq with force_leaf.
24009         (dt_simplify::gen_1): Likewise.
24011 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
24013         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
24014         (struct kernargs): Replace the common content with kernargs_abi.
24015         (struct heap): Delete.
24016         (main): Read GCN_STACK_SIZE envvar.
24017         Allocate space for the device stacks.
24018         Write the new kernargs fields.
24019         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
24020         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
24021         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
24022         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
24023         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
24024         Set up the stacks from the values in the kernargs, not private.
24025         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
24026         (gcn_hsa_declare_function_name): Turn off the private segment.
24027         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
24028         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
24029         * config/gcn/gcn.opt (mstack-size): Change the description.
24031 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24033         PR target/108443
24034         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
24035         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
24036         addressing MVE predicate modes.
24037         (mve_bool_vec_to_const): Change to represent correct MVE predicate
24038         format.
24039         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
24040         modes.
24041         (arm_vector_mode_supported_p): Likewise.
24042         (arm_mode_to_pred_mode): Add V2QI.
24043         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
24044         qualifier.
24045         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
24046         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
24047         (v2qi_UP): New macro.
24048         (v4bi_UP): New macro.
24049         (v8bi_UP): New macro.
24050         (v16bi_UP): New macro.
24051         (arm_expand_builtin_args): Make it able to expand the new predicate
24052         modes.
24053         * config/arm/arm-modes.def (V2QI): New mode.
24054         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
24055         Pred4x4_t): Remove unused predicate builtin types.
24056         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
24057         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
24058         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
24059         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
24060         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
24061         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
24062         of MODE_VECTOR_BOOL.
24063         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
24064         (MVE_VPRED): Likewise.
24065         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
24066         (MVE_vctp): New mode attribute.
24067         (mode1): Remove.
24068         (VCTPQ): Remove.
24069         (VCTPQ_M): Remove.
24070         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
24071         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
24072         attributes.
24073         (mve_vpnothi): Rename this...
24074         (mve_vpnotv16bi): ... to this.
24075         (mve_vctp<mode1>q_mhi): Rename this...
24076         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
24077         (mve_vldrdq_gather_base_z_<supf>v2di,
24078         mve_vldrdq_gather_offset_z_<supf>v2di,
24079         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
24080         mve_vstrdq_scatter_base_p_<supf>v2di,
24081         mve_vstrdq_scatter_offset_p_<supf>v2di,
24082         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
24083         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
24084         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
24085         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
24086         mve_vldrdq_gather_base_wb_z_<supf>v2di,
24087         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
24088         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
24089         predicates.
24090         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
24091         these...
24092         (VCTP): ... with this.
24093         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
24094         (VCTP_M): ... with this.
24095         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
24096         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
24098 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24100         PR target/107674
24101         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
24102         (arm_modes_tieable_p): Make MVE predicate modes tieable.
24103         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
24104         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
24105         simplify_subreg to simplify subregs where the outermode is not scalar.
24107 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24109         PR target/107674
24110         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
24111         new qualifiers parameter and use unsigned short type for MVE predicate.
24112         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
24113         parameter.
24114         (arm_init_crypto_builtins): Likewise.
24116 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
24118         PR ipa/107300
24119         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
24120         * internal-fn.def (TRAP): Remove.
24121         * internal-fn.cc (expand_TRAP): Remove.
24122         * tree.cc (build_common_builtin_nodes): Define
24123         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
24124         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
24125         instead of BUILT_IN_TRAP.
24126         * gimple.cc (gimple_build_builtin_unreachable): Remove
24127         emitting internal function for BUILT_IN_TRAP.
24128         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
24129         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
24130         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
24131         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
24132         BUILT_IN_UNREACHABLE_TRAP.
24133         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
24134         * tree-cfg.cc (verify_gimple_call,
24135         pass_warn_function_return::execute): Likewise.
24136         * attribs.cc (decl_attributes): Don't report exclusions on
24137         BUILT_IN_UNREACHABLE_TRAP either.
24139 2023-02-02  liuhongt  <hongtao.liu@intel.com>
24141         PR tree-optimization/108601
24142         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
24143         * tree-vect-loop.cc
24144         (vectorizable_nonlinear_induction): Remove
24145         vect_can_peel_nonlinear_iv_p.
24146         (vect_can_peel_nonlinear_iv_p): Don't peel
24147         nonlinear iv(mult or shift) for epilog when vf is not
24148         constant and moved the defination to ..
24149         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
24150         .. Here.
24152 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
24154         PR middle-end/108435
24155         * tree-nested.cc (convert_nonlocal_omp_clauses)
24156         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
24157         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
24158         before calling declare_vars.
24159         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
24160         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
24161         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
24162         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
24164 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
24166         * common/config/aarch64/aarch64-common.cc
24167         (struct aarch64_option_extension): Add native_detect and document struct
24168         a bit more.
24169         (all_extensions): Set new field native_detect.
24170         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
24171         unused struct.
24173 2023-02-01  Martin Liska  <mliska@suse.cz>
24175         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
24176         value if set.
24178 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
24180         PR tree-optimization/108356
24181         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
24182         do a search of the DOM tree for a range.
24184 2023-02-01  Martin Liska  <mliska@suse.cz>
24186         PR ipa/108509
24187         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
24188         ony non-null values.
24189         * ipa.cc (walk_polymorphic_call_targets): Likewise.
24191 2023-02-01  Martin Liska  <mliska@suse.cz>
24193         PR driver/108572
24194         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
24195         -gz=zstd.
24197 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
24199         PR debug/108573
24200         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
24201         subregs in DEBUG_INSNs.
24203 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
24205         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
24207 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
24209         * config/s390/s390.cc (s390_restore_gpr_p): New function.
24210         (s390_preserve_gpr_arg_in_range_p): New function.
24211         (s390_preserve_gpr_arg_p): New function.
24212         (s390_preserve_fpr_arg_p): New function.
24213         (s390_register_info_stdarg_fpr): Rename to ...
24214         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
24215         (s390_register_info_stdarg_gpr): Rename to ...
24216         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
24217         (s390_register_info): Use the renamed functions above.
24218         (s390_optimize_register_info): Likewise.
24219         (save_fpr): Generate CFI for -mpreserve-args.
24220         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
24221         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
24222         (s390_optimize_prologue): Likewise.
24223         * config/s390/s390.opt: New option -mpreserve-args
24225 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
24227         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
24228         (restore_gprs): Likewise.
24229         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
24230         frame pointer if a frame-pointer is used.
24231         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
24232         * config/s390/s390.md (stack_tie): Add a register operand and
24233         rename to ...
24234         (@stack_tie<mode>): ... this.
24236 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
24238         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
24239         EMIT_CFI parameter.
24240         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
24241         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
24243 2023-02-01  Richard Biener  <rguenther@suse.de>
24245         PR middle-end/108500
24246         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
24247         with tree traversal algorithm.
24249 2023-02-01  Jason Merrill  <jason@redhat.com>
24251         * doc/invoke.texi: Document -Wno-changes-meaning.
24253 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
24255         * doc/invoke.texi (Static Analyzer Options): Add notes about
24256         limitations of -fanalyzer.
24258 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24260         * config/riscv/constraints.md (vj): New.
24261         (vk): Ditto
24262         * config/riscv/iterators.md: Add more opcode.
24263         * config/riscv/predicates.md (vector_arith_operand): New.
24264         (vector_neg_arith_operand): New.
24265         (vector_shift_operand): New.
24266         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
24267         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
24268         (vsub): Ditto.
24269         (vand): Ditto.
24270         (vor): Ditto.
24271         (vxor): Ditto.
24272         (vsll): Ditto.
24273         (vsra): Ditto.
24274         (vsrl): Ditto.
24275         (vmin): Ditto.
24276         (vmax): Ditto.
24277         (vminu): Ditto.
24278         (vmaxu): Ditto.
24279         (vmul): Ditto.
24280         (vdiv): Ditto.
24281         (vrem): Ditto.
24282         (vdivu): Ditto.
24283         (vremu): Ditto.
24284         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
24285         (vsub): Ditto.
24286         (vand): Ditto.
24287         (vor): Ditto.
24288         (vxor): Ditto.
24289         (vsll): Ditto.
24290         (vsra): Ditto.
24291         (vsrl): Ditto.
24292         (vmin): Ditto.
24293         (vmax): Ditto.
24294         (vminu): Ditto.
24295         (vmaxu): Ditto.
24296         (vmul): Ditto.
24297         (vdiv): Ditto.
24298         (vrem): Ditto.
24299         (vdivu): Ditto.
24300         (vremu): Ditto.
24301         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
24302         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
24303         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
24304         (DEF_RVV_U_OPS): New.
24305         (rvv_arg_type_info::get_base_vector_type): Handle
24306         RVV_BASE_shift_vector.
24307         (rvv_arg_type_info::get_tree_type): Ditto.
24308         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
24309         RVV_BASE_shift_vector.
24310         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
24311         * config/riscv/vector-iterators.md: Handle more opcode.
24312         * config/riscv/vector.md (@pred_<optab><mode>): New.
24314 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
24316         PR target/108589
24317         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
24318         REG_P on SET_DEST.
24320 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
24322         PR tree-optimization/108608
24323         * tree-vect-loop.cc (vect_transform_reduction): Handle single
24324         def-use cycles that involve function calls rather than tree codes.
24326 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
24328         PR tree-optimization/108385
24329         * gimple-range-gori.cc (gori_compute::compute_operand_range):
24330         Allow VARYING computations to continue if there is a relation.
24331         * range-op.cc (pointer_plus_operator::op2_range): New.
24333 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
24335         PR tree-optimization/108359
24336         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
24337         (range_operator::fold_range): If op1 is equivalent to op2 then
24338         invoke new fold_in_parts_equiv to operate on sub-components.
24339         * range-op.h (wi_fold_in_parts_equiv): New prototype.
24341 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
24343         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
24344         not abort calculations if there is a valid relation available.
24345         (gori_compute::refine_using_relation): Pass correct relation trio.
24346         (gori_compute::compute_operand1_range): Create trio and use it.
24347         (gori_compute::compute_operand2_range): Ditto.
24348         * range-op.cc (operator_plus::op1_range): Use correct trio member.
24349         (operator_minus::op1_range): Use correct trio member.
24350         * value-relation.cc (value_relation::create_trio): New.
24351         * value-relation.h (value_relation::create_trio): New prototype.
24353 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
24355         PR target/108599
24356         * config/i386/i386-expand.cc
24357         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
24358         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
24359         equal to bitsize of mode.
24361 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
24363         PR rtl-optimization/108596
24364         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
24365         ends with asm goto and has a crossing fallthrough edge to the same bb
24366         that contains at least one of its labels by restoring EDGE_CROSSING
24367         flag even on possible edge from cur_bb to new_bb successor.
24369 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
24371         PR c++/105593
24372         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
24373         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
24374         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
24375         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
24376         uninitialized automatic variable __W.
24378 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
24380         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
24382 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24384         * config/riscv/riscv-protos.h (get_vector_mode): New function.
24385         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
24386         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
24387         (class loadstore): Adjust for indexed loads/stores support.
24388         (BASE): Ditto.
24389         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
24390         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
24391         (vluxei16): Ditto.
24392         (vluxei32): Ditto.
24393         (vluxei64): Ditto.
24394         (vloxei8): Ditto.
24395         (vloxei16): Ditto.
24396         (vloxei32): Ditto.
24397         (vloxei64): Ditto.
24398         (vsuxei8): Ditto.
24399         (vsuxei16): Ditto.
24400         (vsuxei32): Ditto.
24401         (vsuxei64): Ditto.
24402         (vsoxei8): Ditto.
24403         (vsoxei16): Ditto.
24404         (vsoxei32): Ditto.
24405         (vsoxei64): Ditto.
24406         * config/riscv/riscv-vector-builtins-shapes.cc
24407         (struct indexed_loadstore_def): New class.
24408         (SHAPE): Ditto.
24409         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24410         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
24411         for indexed loads/stores support.
24412         (check_required_extensions): Ditto.
24413         (rvv_arg_type_info::get_base_vector_type): New function.
24414         (rvv_arg_type_info::get_tree_type): Ditto.
24415         (function_builder::add_unique_function): Adjust for indexed loads/stores
24416         support.
24417         (function_expander::use_exact_insn): New function.
24418         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
24419         indexed loads/stores support.
24420         (struct rvv_arg_type_info): Ditto.
24421         (function_expander::index_mode): New function.
24422         (function_base::apply_tail_policy_p): Ditto.
24423         (function_base::apply_mask_policy_p): Ditto.
24424         * config/riscv/vector-iterators.md (unspec): New unspec.
24425         * config/riscv/vector.md (unspec): Ditto.
24426         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
24427         pattern.
24428         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
24429         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
24430         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
24431         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
24432         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
24433         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
24434         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
24435         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
24436         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
24437         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
24438         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
24439         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
24440         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
24442 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
24444         * config.gcc: Recognize x86_64-*-gnu* targets and include
24445         i386/gnu64.h.
24446         * config/i386/gnu64.h: Define configuration for new target
24447         including ld.so location.
24449 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
24451         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
24452         ampere1a to include SM4.
24454 2023-01-30  Andrew Pinski  <apinski@marvell.com>
24456         PR tree-optimization/108582
24457         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
24458         for middlebb to have no phi nodes.
24460 2023-01-30  Richard Biener  <rguenther@suse.de>
24462         PR tree-optimization/108574
24463         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
24464         sameval and def, ignore the equivalence if there's the
24465         danger of oscillating between two values.
24467 2023-01-30  Andreas Schwab  <schwab@suse.de>
24469         * common/config/riscv/riscv-common.cc
24470         (riscv_option_optimization_table)
24471         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
24472         -fasynchronous-unwind-tables and -funwind-tables.
24473         * config.gcc (riscv*-*-linux*): Define
24474         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
24476 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
24478         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
24479         value of includedir.
24481 2023-01-30  Richard Biener  <rguenther@suse.de>
24483         PR ipa/108511
24484         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
24485         assert.
24487 2023-01-30  liuhongt  <hongtao.liu@intel.com>
24489         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
24490         * doc/invoke.texi: Ditto.
24492 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
24494         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
24495         (stmt_may_terminate_function_p): If assuming return or EH
24496         volatile asm is safe.
24497         (find_always_executed_bbs): Fix handling of terminating BBS and
24498         infinite loops; add debug output.
24499         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
24501 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
24503         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
24504         off-by-one in checking the permissible shift-amount.
24506 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
24508         * doc/extend.texi (Named Address Spaces): Update link to the
24509         AVR-Libc manual.
24511 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
24513         * doc/standards.texi (Standards): Fix markup.
24515 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
24517         * doc/standards.texi (Standards): Update link to Objective-C book.
24519 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
24521         * doc/invoke.texi (Instrumentation Options): Update reference to
24522         AddressSanitizer.
24524 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
24526         * doc/standards.texi: Update Go1 link.
24528 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24530         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
24531         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
24532         Support vlse/vsse.
24533         (BASE): Ditto.
24534         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24535         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
24536         (vsse): New class.
24537         * config/riscv/riscv-vector-builtins.cc
24538         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
24539         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
24540         (@pred_strided_store<mode>): Ditto.
24542 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24544         * config/riscv/vector.md (tail_policy_op_idx): Remove.
24545         (mask_policy_op_idx): Remove.
24546         (avl_type_op_idx): Remove.
24548 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
24550         PR tree-optimization/96373
24551         * tree.h (sign_mask_for): Declare.
24552         * tree.cc (sign_mask_for): New function.
24553         (signed_or_unsigned_type_for): For vector types, try to use the
24554         related_int_vector_mode.
24555         * genmatch.cc (commutative_op): Handle conditional internal functions.
24556         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
24558 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
24560         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
24561         Use the likely minimum VF when bounding the denominators to
24562         the estimated number of iterations.
24564 2023-01-27  Richard Biener  <rguenther@suse.de>
24566         PR target/55522
24567         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
24568         and -Ofast FP environment side-effects.
24570 2023-01-27  Richard Biener  <rguenther@suse.de>
24572         PR target/55522
24573         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
24574         Don't add crtfastmath.o for -shared.
24576 2023-01-27  Richard Biener  <rguenther@suse.de>
24578         PR target/55522
24579         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
24580         for -shared.
24582 2023-01-27  Richard Biener  <rguenther@suse.de>
24584         PR target/55522
24585         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
24586         crtfastmath.o for -shared.
24588 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
24590         PR tree-optimization/108306
24591         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
24592         varying for shifts that are always out of void range.
24593         (operator_rshift::fold_range): Return [0, 0] not
24594         varying for shifts that are always out of void range.
24596 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
24598         PR tree-optimization/108447
24599         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
24600         Do not attempt to fold HONOR_NAN types.
24602 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24604         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
24605         Remove _m suffix for "vop_m" C++ overloaded API name.
24607 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24609         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
24610         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24611         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
24612         (vsm): Ditto.
24613         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
24614         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
24615         (vbool64_t): Ditto.
24616         (vbool32_t): Ditto.
24617         (vbool16_t): Ditto.
24618         (vbool8_t): Ditto.
24619         (vbool4_t): Ditto.
24620         (vbool2_t): Ditto.
24621         (vbool1_t): Ditto.
24622         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
24623         (rvv_arg_type_info::get_tree_type): Ditto.
24624         (function_expander::use_contiguous_load_insn): Ditto.
24625         * config/riscv/vector.md (@pred_store<mode>): Ditto.
24627 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24629         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
24630         (vsetvl_discard_result_insn_p): New function.
24631         (reg_killed_by_bb_p): rename to find_reg_killed_by.
24632         (find_reg_killed_by): New name.
24633         (get_vl): allow it to be called by more functions.
24634         (has_vsetvl_killed_avl_p): Add condition.
24635         (get_avl): allow it to be called by more functions.
24636         (insn_should_be_added_p): New function.
24637         (get_all_nonphi_defs): Refine function.
24638         (get_all_sets): Ditto.
24639         (get_same_bb_set): New function.
24640         (any_insn_in_bb_p): Ditto.
24641         (any_set_in_bb_p): Ditto.
24642         (get_vl_vtype_info): Add VLMAX forward optimization.
24643         (source_equal_p): Fix issues.
24644         (extract_single_source): Refine.
24645         (avl_info::multiple_source_equal_p): New function.
24646         (avl_info::operator==): Adjust for final version.
24647         (vl_vtype_info::operator==): Ditto.
24648         (vl_vtype_info::same_avl_p): Ditto.
24649         (vector_insn_info::parse_insn): Ditto.
24650         (vector_insn_info::available_p): New function.
24651         (vector_insn_info::merge): Adjust for final version.
24652         (vector_insn_info::dump): Add hard_empty.
24653         (pass_vsetvl::hard_empty_block_p): New function.
24654         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
24655         (pass_vsetvl::forward_demand_fusion): Ditto.
24656         (pass_vsetvl::demand_fusion): Ditto.
24657         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
24658         (pass_vsetvl::compute_local_properties): Adjust for final version.
24659         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
24660         (pass_vsetvl::refine_vsetvls): Ditto.
24661         (pass_vsetvl::commit_vsetvls): Ditto.
24662         (pass_vsetvl::propagate_avl): New function.
24663         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
24664         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
24666 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
24668         PR other/108560
24669         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
24670         from size_t to int.
24672 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
24674         PR ipa/106061
24675         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
24676         redirection of calls to __builtin_trap in addition to redirection
24677         to __builtin_unreachable.
24679 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24681         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
24683 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24685         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
24686         (emit_vsetvl_insn): Ditto.
24688 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24690         * config/riscv/vector.md: Fix constraints.
24692 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24694         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
24696 2023-01-27  Patrick Palka  <ppalka@redhat.com>
24697             Jakub Jelinek  <jakub@redhat.com>
24699         * tree-core.h (tree_code_type, tree_code_length): For
24700         C++17 and later, add inline keyword, otherwise don't define
24701         the arrays, but declare extern arrays.
24702         * tree.cc (tree_code_type, tree_code_length): Define these
24703         arrays for C++14 and older.
24705 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24707         * config/riscv/riscv-vsetvl.h: Change it into public.
24709 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24711         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
24712         pass.
24714 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24716         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
24718 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24720         * config/riscv/vector.md: Fix incorrect attributes.
24722 2023-01-27  Richard Biener  <rguenther@suse.de>
24724         PR target/55522
24725         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
24726         Don't add crtfastmath.o for -shared.
24728 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
24730         * doc/options.texi (option, RejectNegative): Mention that
24731         -g-started options are also implicitly negatable.
24733 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
24735         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
24736         Use get_typenode_from_name to get fixed-width integer type
24737         nodes.
24738         * config/riscv/riscv-vector-builtins.def: Update define with
24739         fixed-width integer type nodes.
24741 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24743         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
24744         (real_insn_and_same_bb_p): New function.
24745         (same_bb_and_after_or_equal_p): Remove it.
24746         (before_p): New function.
24747         (reg_killed_by_bb_p): Ditto.
24748         (has_vsetvl_killed_avl_p): Ditto.
24749         (get_vl): Move location so that we can call it.
24750         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
24751         (available_occurrence_p): Ditto.
24752         (dominate_probability_p): Remove it.
24753         (can_backward_propagate_p): Remove it.
24754         (get_all_nonphi_defs): New function.
24755         (get_all_predecessors): Ditto.
24756         (any_insn_in_bb_p): Ditto.
24757         (insert_vsetvl): Adjust AVL REG.
24758         (source_equal_p): New function.
24759         (extract_single_source): Ditto.
24760         (avl_info::single_source_equal_p): Ditto.
24761         (avl_info::operator==): Adjust for AVL=REG.
24762         (vl_vtype_info::same_avl_p): Ditto.
24763         (vector_insn_info::set_demand_info): Remove it.
24764         (vector_insn_info::compatible_p): Adjust for AVL=REG.
24765         (vector_insn_info::compatible_avl_p): New function.
24766         (vector_insn_info::merge): Adjust AVL=REG.
24767         (vector_insn_info::dump): Ditto.
24768         (pass_vsetvl::merge_successors): Remove it.
24769         (enum fusion_type): New enum.
24770         (pass_vsetvl::get_backward_fusion_type): New function.
24771         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
24772         (pass_vsetvl::forward_demand_fusion): Ditto.
24773         (pass_vsetvl::demand_fusion): Ditto.
24774         (pass_vsetvl::prune_expressions): Ditto.
24775         (pass_vsetvl::compute_local_properties): Ditto.
24776         (pass_vsetvl::cleanup_vsetvls): Ditto.
24777         (pass_vsetvl::commit_vsetvls): Ditto.
24778         (pass_vsetvl::init): Ditto.
24779         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
24780         (enum merge_type): New enum.
24782 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24784         * config/riscv/riscv-vsetvl.cc
24785         (vector_infos_manager::vector_infos_manager): Add probability.
24786         (vector_infos_manager::dump): Ditto.
24787         (pass_vsetvl::compute_probabilities): Ditto.
24788         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
24790 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24792         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
24793         (vector_insn_info::merge): Ditto.
24794         (vector_insn_info::dump): Ditto.
24795         (pass_vsetvl::merge_successors): Ditto.
24796         (pass_vsetvl::backward_demand_fusion): Ditto.
24797         (pass_vsetvl::forward_demand_fusion): Ditto.
24798         (pass_vsetvl::commit_vsetvls): Ditto.
24799         * config/riscv/riscv-vsetvl.h: Ditto.
24801 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24803         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
24804         rinsn.
24806 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24808         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
24810 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24812         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
24813         Add pre-check for redundant flow.
24815 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24817         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
24818         (vector_infos_manager::free_bitmap_vectors): Ditto.
24819         (pass_vsetvl::pre_vsetvl): Adjust codes.
24820         * config/riscv/riscv-vsetvl.h: New function declaration.
24822 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24824         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
24825         (vector_insn_info::set_demand_info): New function.
24826         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
24827         (pass_vsetvl::merge_successors): Ditto.
24828         (pass_vsetvl::compute_global_backward_infos): Ditto.
24829         (pass_vsetvl::backward_demand_fusion): Ditto.
24830         (pass_vsetvl::forward_demand_fusion): Ditto.
24831         (pass_vsetvl::demand_fusion): New function.
24832         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
24833         * config/riscv/riscv-vsetvl.h: New function declaration.
24835 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24837         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
24839 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24841         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
24842         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
24844 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24846         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
24847         (backward_propagate_worthwhile_p): Fix non-worthwhile.
24849 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24851         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
24853 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24855         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
24856         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
24857         (pass_vsetvl::commit_vsetvls): Ditto.
24858         * config/riscv/riscv-vsetvl.h: New function declaration.
24860 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24862         * config/riscv/vector.md:
24864 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24866         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
24867         pred_store for vse.
24868         * config/riscv/riscv-vector-builtins.cc
24869         (function_expander::add_mem_operand): Refine function.
24870         (function_expander::use_contiguous_load_insn): Adjust new
24871         implementation.
24872         (function_expander::use_contiguous_store_insn): Ditto.
24873         * config/riscv/riscv-vector-builtins.h: Refine function.
24874         * config/riscv/vector.md (@pred_store<mode>): New pattern.
24876 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24878         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
24880 2023-01-26  Marek Polacek  <polacek@redhat.com>
24882         PR middle-end/108543
24883         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
24884         if it was previously set.
24886 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
24888         PR tree-optimization/108540
24889         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
24890         are singletons, use range_true even if op1 != op2
24891         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
24892         even if intersection of the ranges is empty and one has
24893         zero low bound and another zero high bound, use range_true_and_false
24894         rather than range_false.
24895         (foperator_not_equal::fold_range): If both op1 and op2
24896         are singletons, use range_false even if op1 != op2
24897         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
24898         even if intersection of the ranges is empty and one has
24899         zero low bound and another zero high bound, use range_true_and_false
24900         rather than range_true.
24902 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
24904         * value-relation.cc (kind_string): Add const.
24905         (rr_negate_table, rr_swap_table, rr_intersect_table,
24906         rr_union_table, rr_transitive_table): Add static const, change
24907         element type from relation_kind to unsigned char.
24908         (relation_negate, relation_swap, relation_intersect, relation_union,
24909         relation_transitive): Cast rr_*_table element to relation_kind.
24910         (relation_to_code): Add static const.
24911         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
24913 2023-01-26  Richard Biener  <rguenther@suse.de>
24915         PR tree-optimization/108547
24916         * gimple-predicate-analysis.cc (value_sat_pred_p):
24917         Use widest_int.
24919 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
24921         PR tree-optimization/108522
24922         * tree-object-size.cc (compute_object_offset): Make EXPR
24923         argument non-const.  Call component_ref_field_offset.
24925 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24927         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
24928         FEATURE_STRING field.
24930 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
24932         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
24934 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
24936         PR modula2/102343
24937         PR modula2/108182
24938         * gcc.cc: Provide default specs for Modula-2 so that when the
24939         language is not built-in better diagnostics are emitted for
24940         attempts to use .mod or .m2i file extensions.
24942 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
24944         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
24946 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
24948         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
24950 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
24952         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
24953         Fix spacing.
24955 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
24957         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
24959 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
24961         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
24963 2023-01-25  Richard Biener  <rguenther@suse.de>
24965         PR tree-optimization/108523
24966         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
24967         backedge value for the result when using predication to
24968         prove equivalence.
24970 2023-01-25  Richard Biener  <rguenther@suse.de>
24972         * doc/lto.texi (Command line options): Reword and update reference
24973         to removed lto_read_all_file_options.
24975 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
24977         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
24978         tests.
24980 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
24982         * doc/contrib.texi: Add Jose E. Marchesi.
24984 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
24986         PR tree-optimization/108498
24987         * gimple-ssa-store-merging.cc (class store_operand_info):
24988         End coment with full stop rather than comma.
24989         (split_group): Likewise.
24990         (merged_store_group::apply_stores): Clear string_concatenation if
24991         start or end aren't on a byte boundary.
24993 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
24994             Jakub Jelinek  <jakub@redhat.com>
24996         PR tree-optimization/108522
24997         * tree-object-size.cc (compute_object_offset): Use
24998         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
25000 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25002         * config/xtensa/xtensa.md:
25003         Fix exit from loops detecting references before overwriting in the
25004         split pattern.
25006 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
25008         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
25009         do elimination but only for hard register.
25010         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
25011         calls of get_hard_regno.
25013 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
25015         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
25016         of CPU version.
25018 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25020         PR target/108177
25021         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
25022         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
25023         as input operand.
25025 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
25027         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
25028         and only include 'csky/t-csky-linux' when enable multilib.
25029         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
25030         define it when disable multilib.
25032 2023-01-24  Richard Biener  <rguenther@suse.de>
25034         PR tree-optimization/108500
25035         * dominance.h (calculate_dominance_info): Add parameter
25036         to indicate fast-query compute, defaulted to true.
25037         * dominance.cc (calculate_dominance_info): Honor
25038         fast-query compute parameter.
25039         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
25040         not compute the dominator fast-query DFS numbers.
25042 2023-01-24  Eric Biggers  <ebiggers@google.com>
25044         PR bootstrap/90543
25045         * optc-save-gen.awk: Fix copy-and-paste error.
25047 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
25049         PR c++/108474
25050         * cgraphbuild.cc: Include gimplify.h.
25051         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
25052         their corresponding DECL_VALUE_EXPR expressions after unsharing.
25054 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25056         PR target/108505
25057         * config.gcc (tm_file): Move the variable out of loop.
25059 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
25060             Yang Yujie  <yangyujie@loongson.cn>
25062         PR target/107731
25063         * config/loongarch/loongarch.cc (loongarch_classify_address):
25064         Add precessint for CONST_INT.
25065         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
25066         (loongarch_print_operand): Increase the processing of '%c'.
25067         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
25068         And port the public operand modifiers information to this document.
25070 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25072         * doc/invoke.texi (-mbranch-protection): Update documentation.
25074 2023-01-23  Richard Biener  <rguenther@suse.de>
25076         PR target/55522
25077         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
25078         for -shared.
25079         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
25080         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
25081         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
25082         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
25084 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25086         * config/arm/aout.h (ra_auth_code): Add entry in enum.
25087         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
25088         to dwarf frame expression.
25089         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
25090         (arm_expand_prologue): Update frame related information and reg notes
25091         for pac/pacbit insn.
25092         (arm_regno_class): Check for pac pseudo reigster.
25093         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
25094         (arm_init_machine_status): Set pacspval_needed to zero.
25095         (arm_debugger_regno): Check for PAC register.
25096         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
25097         register.
25098         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
25099         (arm_unwind_emit): Update REG_CFA_REGISTER case._
25100         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
25101         (DWARF_PAC_REGNUM): Define.
25102         (IS_PAC_REGNUM): Likewise.
25103         (enum reg_class): Add PAC_REG entry.
25104         (machine_function): Add pacbti_needed state to structure.
25105         * config/arm/arm.md (RA_AUTH_CODE): Define.
25107 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25109         * config.gcc ($tm_file): Update variable.
25110         * config/arm/arm-mlib.h: Create new header file.
25111         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
25112         multilib arch directory.
25113         (MULTILIB_REUSE): Add multilib reuse rules.
25114         (MULTILIB_MATCHES): Add multilib match rules.
25116 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25118         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
25119         * config/arm/arm-tables.opt: Regenerate.
25120         * config/arm/arm-tune.md: Likewise.
25121         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
25122         * (-mfix-cmse-cve-2021-35465): Likewise.
25124 2023-01-23  Richard Biener  <rguenther@suse.de>
25126         PR tree-optimization/108482
25127         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
25128         .LOOP_DIST_ALIAS calls.
25130 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25132         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
25133         * config/arm/arm-protos.h: Update.
25134         * config/arm/aarch-common-protos.h: Declare
25135         'aarch_bti_arch_check'.
25136         * config/arm/arm.cc (aarch_bti_enabled) Update.
25137         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
25138         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
25139         * config/arm/arm.md (bti_nop): New insn.
25140         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
25141         (aarch-bti-insert.o): New target.
25142         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
25143         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
25144         compatibility.
25145         (gate): Make use of 'aarch_bti_arch_check'.
25146         * config/arm/arm-passes.def: New file.
25147         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
25149 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25151         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
25152         'aarch-bti-insert.o'.
25153         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
25154         proto.
25155         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
25156         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
25157         (aarch64_output_mi_thunk)
25158         (aarch64_print_patchable_function_entry)
25159         (aarch64_file_end_indicate_exec_stack): Update renamed function
25160         calls to renamed functions.
25161         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
25162         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
25163         target.
25164         * config/aarch64/aarch64-bti-insert.cc: Delete.
25165         * config/arm/aarch-bti-insert.cc: New file including and
25166         generalizing code from aarch64-bti-insert.cc.
25167         * config/arm/aarch-common-protos.h: Update.
25169 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25171         * config/arm/arm.h (arm_arch8m_main): Declare it.
25172         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
25173         Declare it.
25174         * config/arm/arm.cc (arm_arch8m_main): Define it.
25175         (arm_option_reconfigure_globals): Set arm_arch8m_main.
25176         (arm_compute_frame_layout, arm_expand_prologue)
25177         (thumb2_expand_return, arm_expand_epilogue)
25178         (arm_conditional_register_usage): Update for pac codegen.
25179         (arm_current_function_pac_enabled_p): New function.
25180         (aarch_bti_enabled) New function.
25181         (use_return_insn): Return zero when pac is enabled.
25182         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
25183         Add new patterns.
25184         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
25185         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
25187 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25189         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
25190         mbranch-protection.
25192 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25193             Tejas Belagod   <tbelagod@arm.com>
25195         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
25196         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
25198 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25199             Tejas Belagod   <tbelagod@arm.com>
25200             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25202         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
25203         new pseudo register class _UVRSC_PAC.
25205 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25206             Tejas Belagod   <tbelagod@arm.com>
25208         * config/arm/arm-c.cc (arm_cpu_builtins): Define
25209         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
25210         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
25212 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25213             Tejas Belagod   <tbelagod@arm.com>
25215         * doc/sourcebuild.texi: Document arm_pacbti_hw.
25217 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25218             Tejas Belagod   <tbelagod@arm.com>
25219             Richard Earnshaw  <Richard.Earnshaw@arm.com>
25221         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
25222         -mbranch-protection option and initialize appropriate data structures.
25223         * config/arm/arm.opt (-mbranch-protection): New option.
25224         * doc/invoke.texi (Arm Options): Document it.
25226 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25227             Tejas Belagod   <tbelagod@arm.com>
25229         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
25230         * config/arm/arm-cpus.in (pacbti): New feature.
25231         * doc/invoke.texi (Arm Options): Document it.
25233 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
25234             Tejas Belagod   <tbelagod@arm.com>
25236         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
25237         (all_architectures): Fix comment.
25238         (aarch64_parse_extension): Rename return type, enum value names.
25239         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
25240         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
25241         Also rename corresponding enum values.
25242         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
25243         out aarch64_function_type and move it to common code as
25244         aarch_function_type in aarch-common.h.
25245         * config/aarch64/aarch64-protos.h: Include common types header,
25246         move out types aarch64_parse_opt_result and aarch64_key_type to
25247         aarch-common.h
25248         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
25249         and functions out into aarch-common.h and aarch-common.cc.  Fix up
25250         all the name changes resulting from the move.
25251         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
25252         and enum value.
25253         * config/aarch64/aarch64.opt: Include aarch-common.h to import
25254         type move.  Fix up name changes from factoring out common code and
25255         data.
25256         * config/arm/aarch-common-protos.h: Export factored out routines to both
25257         backends.
25258         * config/arm/aarch-common.cc: Include newly factored out types.
25259         Move all mbranch-protection code and data structures from
25260         aarch64.cc.
25261         * config/arm/aarch-common.h: New header that declares types shared
25262         between aarch32 and aarch64 backends.
25263         * config/arm/arm-protos.h: Declare types and variables that are
25264         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
25265         aarch_ra_sign_scope and aarch_enable_bti.
25266         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
25267         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
25268         * config/arm/arm.cc: Add missing includes.
25270 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
25272         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
25274 2023-01-23  Richard Biener  <rguenther@suse.de>
25276         PR tree-optimization/108449
25277         * cgraphunit.cc (check_global_declaration): Do not turn
25278         undefined statics into externs.
25280 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
25282         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
25283         and HI input modes.
25284         * config/pru/pru.md (clz): Fix generated code for QI and HI
25285         input modes.
25287 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
25289         * config/v850/v850.cc (v850_select_section): Put const volatile
25290         objects into read-only sections.
25292 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
25294         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
25295         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
25296         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
25298 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
25300         PR tree-optimization/108457
25301         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
25302         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
25303         argument instead of a temporary.  Formatting fixes.
25305 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
25307         PR tree-optimization/108447
25308         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
25309         (relation_tests): Add self-tests for relation_{intersect,union}
25310         commutativity.
25311         * selftest.h (relation_tests): Declare.
25312         * function-tests.cc (test_ranges): Call it.
25314 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
25316         PR target/108436
25317         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
25318         invalid third argument to __builtin_ia32_prefetch.
25320 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
25322         PR middle-end/108459
25323         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
25324         than fold_unary for NEGATE_EXPR.
25326 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
25328         PR target/108411
25329         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
25330         comment. Move assert about alignment a bit later.
25332 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
25334         PR tree-optimization/108440
25335         * tree-ssa-forwprop.cc: Include gimple-range.h.
25336         (simplify_rotate): For the forms with T2 wider than T and shift counts of
25337         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
25338         to B.  For the forms with T2 wider than T and shift counts of
25339         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
25340         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
25341         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
25342         pass specific ranger instead of get_global_range_query.
25343         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
25344         been created.
25346 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
25348         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
25349         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
25350         the pattern.
25351         (aarch64_simd_vec_copy_lane<mode>): Likewise.
25352         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
25354 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
25356         PR debug/106746
25357         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
25358         within debug insns.
25360 2023-01-18  Martin Jambor  <mjambor@suse.cz>
25362         PR ipa/107944
25363         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
25364         lcone_of chain also do not need the body.
25366 2023-01-18  Richard Biener  <rguenther@suse.de>
25368         Revert:
25369         2022-12-16  Richard Biener  <rguenther@suse.de>
25371         PR middle-end/108086
25372         * tree-inline.cc (remap_ssa_name): Do not unshare the
25373         result from the decl_map.
25375 2023-01-18  Murray Steele  <murray.steele@arm.com>
25377         PR target/108442
25378         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
25379         function.
25380         (__arm_vst1q_p_s8): Likewise.
25381         (__arm_vld1q_z_u8): Likewise.
25382         (__arm_vld1q_z_s8): Likewise.
25383         (__arm_vst1q_p_u16): Likewise.
25384         (__arm_vst1q_p_s16): Likewise.
25385         (__arm_vld1q_z_u16): Likewise.
25386         (__arm_vld1q_z_s16): Likewise.
25387         (__arm_vst1q_p_u32): Likewise.
25388         (__arm_vst1q_p_s32): Likewise.
25389         (__arm_vld1q_z_u32): Likewise.
25390         (__arm_vld1q_z_s32): Likewise.
25391         (__arm_vld1q_z_f16): Likewise.
25392         (__arm_vst1q_p_f16): Likewise.
25393         (__arm_vld1q_z_f32): Likewise.
25394         (__arm_vst1q_p_f32): Likewise.
25396 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25398         * config/xtensa/xtensa.md (xorsi3_internal):
25399         Rename from the original of "xorsi3".
25400         (xorsi3): New expansion pattern that emits addition rather than
25401         bitwise-XOR when the second source is a constant of -2147483648
25402         if TARGET_DENSITY.
25404 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
25405             Andrew Pinski  <apinski@marvell.com>
25407         PR target/108396
25408         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
25409         vec_vsubcuqP with vec_vsubcuq.
25411 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
25413         PR target/108348
25414         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
25415         support for invalid uses of MMA opaque type in function arguments.
25417 2023-01-18  liuhongt  <hongtao.liu@intel.com>
25419         PR target/55522
25420         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
25421         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
25422         -share or -mno-daz-ftz is specified.
25423         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
25424         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
25426 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
25428         * config/bpf/bpf.cc (bpf_option_override): Disable
25429         -fstack-protector.
25431 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
25433         PR tree-optimization/106523
25434         * tree-ssa-forwprop.cc (simplify_rotate): For the
25435         patterns with (-Y) & (B - 1) in one operand's shift
25436         count and Y in another, if T2 has wider precision than T,
25437         punt if Y could have a value in [B, B2 - 1] range.
25439 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
25441         PR target/105980
25442         * config/i386/i386.cc (x86_output_mi_thunk): Disable
25443         -mforce-indirect-call for PIC in 32-bit mode.
25445 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
25447         PR ipa/106077
25448         * ipa-modref.cc (modref_access_analysis::analyze): Use
25449         find_always_executed_bbs.
25450         * ipa-sra.cc (process_scan_results): Likewise.
25451         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
25452         (find_always_executed_bbs): New function.
25453         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
25454         (find_always_executed_bbs): Declare.
25456 2023-01-16  Jan Hubicka  <jh@suse.cz>
25458         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
25459         by TARGET_USE_SCATTER.
25460         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
25461         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
25462         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
25463         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
25464         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
25465         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
25467 2023-01-16  Richard Biener  <rguenther@suse.de>
25469         PR target/55522
25470         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
25472 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
25474         PR target/96795
25475         PR target/107515
25476         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
25477         (__ARM_mve_coerce3): Likewise.
25479 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
25481         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
25483 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
25485         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
25486         (number_of_iterations_bitcount): Add call to the above.
25487         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
25488         c[lt]z idiom recognition.
25490 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
25492         * doc/sourcebuild.texi: Add missing target attributes.
25494 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
25496         PR tree-optimization/94793
25497         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
25498         for c[lt]z optabs.
25499         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
25500         (number_of_iterations_cltz_complement): New.
25501         (number_of_iterations_bitcount): Add call to the above.
25503 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
25505         * doc/extend.texi (Common Function Attributes): Fix grammar.
25507 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
25509         PR other/108413
25510         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
25511         * config/riscv/riscv-vsetvl.cc: Likewise.
25513 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
25515         PR c++/105593
25516         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
25517         disable -Winit-self using pragma GCC diagnostic ignored.
25518         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
25519         Likewise.
25520         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
25521         _mm256_undefined_si256): Likewise.
25522         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
25523         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
25524         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
25525         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
25527 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
25529         PR target/108272
25530         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
25531         support for invalid uses in inline asm, factor out the checking and
25532         erroring to lambda function check_and_error_invalid_use.
25534 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
25536         PR tree-optimization/107608
25537         * range-op-float.cc (range_operator_float::fold_range): Avoid
25538         folding into INF when flag_trapping_math.
25539         * value-range.h (frange::known_isinf): Return false for possible NANs.
25541 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
25543         * config.gcc (csky-*-*): Support --with-float=softfp.
25545 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25547         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
25548         Rename to xtensa_adjust_reg_alloc_order.
25549         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
25550         Ditto.  And also remove code to reorder register numbers for
25551         leaf functions, rename the tables, and adjust the allocation
25552         order for the call0 ABI to use register A0 more.
25553         (xtensa_leaf_regs): Remove.
25554         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
25555         (order_regs_for_local_alloc): Rename as the above.
25556         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
25558 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
25560         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
25561         Change to define_insn_and_split to fold ldr+dup to ld1rq.
25562         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
25564 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
25566         * hash-table.h (is_deleted): Precheck !is_empty.
25567         (mark_deleted): Postcheck !is_empty.
25568         (copy constructor): Test is_empty before is_deleted.
25570 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
25572         PR target/40457
25573         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
25574         moves.
25576 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
25578         PR rtl-optimization/108274
25579         * function.cc (thread_prologue_and_epilogue_insns): Also update the
25580         DF information for calls in a few more cases.
25582 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
25584         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
25585         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
25586         define.
25587         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
25588         (MAX_SYNC_LIBFUNC_SIZE): Define.
25589         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
25590         enabled.
25591         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
25592         libcall when sync libcalls are disabled.
25593         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
25594         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
25595         are disabled on 32-bit target.
25596         * config/pa/pa.opt (matomic-libcalls): New option.
25597         * doc/invoke.texi (HPPA Options): Update.
25599 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
25601         PR rtl-optimization/108117
25602         PR rtl-optimization/108132
25603         * sched-deps.cc (deps_analyze_insn): Do not schedule across
25604         calls before reload.
25606 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25608         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
25609         options for -mlibarch.
25610         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
25611         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
25613 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
25615         * attribs.cc (strict_flex_array_level_of): Move this function to ...
25616         * attribs.h (strict_flex_array_level_of): Remove the declaration.
25617         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
25618         replace the referece to strict_flex_array_level_of with
25619         DECL_NOT_FLEXARRAY.
25620         * tree.cc (component_ref_size): Likewise.
25622 2023-01-13  Richard Biener  <rguenther@suse.de>
25624         PR target/55522
25625         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
25626         crtfastmath.o for -shared.
25627         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
25629 2023-01-13  Richard Biener  <rguenther@suse.de>
25631         PR target/55522
25632         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
25633         crtfastmath.o for -shared.
25634         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
25635         Likewise.
25636         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
25637         Likewise.
25639 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
25641         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
25642         function.
25643         (TARGET_DWARF_FRAME_REG_MODE): Define.
25645 2023-01-13  Richard Biener  <rguenther@suse.de>
25647         PR target/107209
25648         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
25649         update EH info on the fly.
25651 2023-01-13  Richard Biener  <rguenther@suse.de>
25653         PR tree-optimization/108387
25654         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
25655         value before inserting expression into the tables.
25657 2023-01-12  Andrew Pinski  <apinski@marvell.com>
25658             Roger Sayle  <roger@nextmovesoftware.com>
25660         PR tree-optimization/92342
25661         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
25662         Use tcc_comparison and :c for the multiply.
25663         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
25665 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
25666             Richard Sandiford  <richard.sandiford@arm.com>
25668         PR target/105549
25669         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
25670         Check DECL_PACKED for bitfield.
25671         (aarch64_layout_arg): Warn when parameter passing ABI changes.
25672         (aarch64_function_arg_boundary): Do not warn here.
25673         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
25674         changes.
25676 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
25677             Richard Sandiford  <richard.sandiford@arm.com>
25679         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
25680         comment.
25681         (aarch64_layout_arg): Factorize warning conditions.
25682         (aarch64_function_arg_boundary): Fix typo.
25683         * function.cc (currently_expanding_function_start): New variable.
25684         (expand_function_start): Handle
25685         currently_expanding_function_start.
25686         * function.h (currently_expanding_function_start): Declare.
25688 2023-01-12  Richard Biener  <rguenther@suse.de>
25690         PR tree-optimization/99412
25691         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
25692         (swap_ops_for_binary_stmt): Remove reduction handling.
25693         (rewrite_expr_tree_parallel): Adjust.
25694         (reassociate_bb): Likewise.
25695         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
25697 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25699         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
25700         Rearrange the emitting codes.
25702 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25704         * config/xtensa/xtensa.md (*btrue):
25705         Correct value of the attribute "length" that depends on
25706         TARGET_DENSITY and operands, and add '?' character to the register
25707         constraint of the compared operand.
25709 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
25711         * hash-table.h (expand): Check elements and deleted counts.
25712         (verify): Likewise.
25714 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
25716         PR tree-optimization/71343
25717         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
25718         the value number of the expression X << C the same as the value
25719         number for the multiplication X * (1<<C).
25721 2023-01-11  David Faust  <david.faust@oracle.com>
25723         PR target/108293
25724         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
25725         floating point modes.
25727 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
25729         PR tree-optimization/108199
25730         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
25731         for bit-field references.
25733 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
25735         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
25736         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
25737         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
25738         OPTION_MASK_P10_FUSION.
25740 2023-01-11  Richard Biener  <rguenther@suse.de>
25742         PR tree-optimization/107767
25743         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
25744         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
25745         * tree-switch-conversion.cc (switch_conversion::collect):
25746         Count unique non-default targets accounting for later
25747         merging opportunities.
25749 2023-01-11  Martin Liska  <mliska@suse.cz>
25751         PR middle-end/107976
25752         * params.opt: Limit JT params.
25753         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
25755 2023-01-11  Richard Biener  <rguenther@suse.de>
25757         PR tree-optimization/108352
25758         * tree-ssa-threadbackward.cc
25759         (back_threader_profitability::profitable_path_p): Adjust
25760         heuristic that allows non-multi-way branch threads creating
25761         irreducible loops.
25762         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
25763         (--param fsm-scale-path-stmts): Adjust.
25764         * params.opt (--param=fsm-scale-path-blocks=): Remove.
25765         (-param=fsm-scale-path-stmts=): Adjust description.
25767 2023-01-11  Richard Biener  <rguenther@suse.de>
25769         PR tree-optimization/108353
25770         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
25771         Remove.
25772         (add_ssa_edge): Simplify.
25773         (add_control_edge): Likewise.
25774         (ssa_prop_init): Likewise.
25775         (ssa_prop_fini): Likewise.
25776         (ssa_propagation_engine::ssa_propagate): Likewise.
25778 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
25780         * config/s390/s390.md (*not<mode>): New pattern.
25782 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25784         * config/xtensa/xtensa.cc (xtensa_insn_cost):
25785         Let insn cost for size be obtained by applying COSTS_N_INSNS()
25786         to instruction length and then dividing by 3.
25788 2023-01-10  Richard Biener  <rguenther@suse.de>
25790         PR tree-optimization/106293
25791         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
25792         process degenerate PHI defs.
25794 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
25796         PR rtl-optimization/106421
25797         * cprop.cc (bypass_block): Check that DEST is local to this
25798         function (non-NULL) before calling find_edge.
25800 2023-01-10  Martin Jambor  <mjambor@suse.cz>
25802         PR ipa/108110
25803         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
25804         sort_replacements, lookup_first_base_replacement and
25805         m_sorted_replacements_p.
25806         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
25807         (ipa_param_body_adjustments::register_replacement): Set
25808         m_sorted_replacements_p to false.
25809         (compare_param_body_replacement): New function.
25810         (ipa_param_body_adjustments::sort_replacements): Likewise.
25811         (ipa_param_body_adjustments::common_initialization): Call
25812         sort_replacements.
25813         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
25814         m_sorted_replacements_p.
25815         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
25816         std::lower_bound.
25817         (ipa_param_body_adjustments::lookup_first_base_replacement): New
25818         function.
25819         (ipa_param_body_adjustments::modify_call_stmt): Use
25820         lookup_first_base_replacement.
25821         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
25822         adjustments->sort_replacements.
25824 2023-01-10  Richard Biener  <rguenther@suse.de>
25826         PR tree-optimization/108314
25827         * tree-vect-stmts.cc (vectorizable_condition): Do not
25828         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
25830 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
25832         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
25834 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
25836         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
25838 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
25840         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
25841         defines for soft float abi.
25843 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
25845         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
25846         (smart_bclri): Likewise.
25847         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
25848         (fast_bclri): Likewise.
25849         (fast_cmpnesi_i): Likewise.
25850         (*fast_cmpltsi_i): Likewise.
25851         (*fast_cmpgeusi_i): Likewise.
25853 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
25855         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
25856         flag_fp_int_builtin_inexact || !flag_trapping_math.
25857         (<frm_pattern><mode>2): Likewise.
25859 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
25861         * config/s390/s390.cc (s390_register_info): Check call_used_regs
25862         instead of hard-coding the register numbers for call saved
25863         registers.
25864         (s390_optimize_register_info): Likewise.
25866 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
25868         * doc/gm2.texi (Overview): Fix @node markers.
25869         (Using): Likewise.  Remove subsections that were moved to Overview
25870         from the menu and move others around.
25872 2023-01-09  Richard Biener  <rguenther@suse.de>
25874         PR middle-end/108209
25875         * genmatch.cc (commutative_op): Fix return value for
25876         user-id with non-commutative first replacement.
25878 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
25880         PR target/107453
25881         * calls.cc (expand_call): For calls with
25882         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
25883         Formatting fix.
25885 2023-01-09  Richard Biener  <rguenther@suse.de>
25887         PR middle-end/69482
25888         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
25889         qualified accesses also force objects to memory.
25891 2023-01-09  Martin Liska  <mliska@suse.cz>
25893         PR lto/108330
25894         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
25895         NULL (deleleted value) to a hash_set.
25897 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25899         * config/xtensa/xtensa.md (*splice_bits):
25900         New insn_and_split pattern.
25902 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25904         * config/xtensa/xtensa.cc
25905         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
25906         New helper functions.
25907         (xtensa_set_return_address, xtensa_output_mi_thunk):
25908         Change to use the helper function.
25909         (xtensa_emit_adjust_stack_ptr): Ditto.
25910         And also change to try reusing the content of scratch register
25911         A9 if the register is not modified in the function body.
25913 2023-01-07  LIU Hao  <lh_mouse@126.com>
25915         PR middle-end/108300
25916         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
25917         before <windows.h>.
25918         * diagnostic-color.cc: Likewise.
25919         * plugin.cc: Likewise.
25920         * prefix.cc: Likewise.
25922 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
25924         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
25925         for handling real integer types.
25927 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
25929         Revert:
25930         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
25932         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
25933         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
25934         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
25935         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
25936         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
25937         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
25938         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
25939         (aarch64_simd_dupv2hf): New.
25940         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
25941         Add E_V2HFmode.
25942         * config/aarch64/iterators.md (VHSDF_P): New.
25943         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
25944         Vel, q, vp): Add V2HF.
25945         * config/arm/types.md (neon_fp_reduc_add_h): New.
25947 2023-01-06  Martin Liska  <mliska@suse.cz>
25949         PR middle-end/107966
25950         * doc/options.texi: Fix Var documentation in internal manual.
25952 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
25954         Revert:
25955         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
25957         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
25958         RTL expansion to allow condition (mask) to be shared/reused,
25959         by avoiding overwriting pseudos and adding REG_EQUAL notes.
25961 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
25963         * common.opt: Add -static-libgm2.
25964         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
25965         * doc/gm2.texi: Document static-libgm2.
25966         * gcc.cc (driver_handle_option): Allow static-libgm2.
25968 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
25970         * common/config/i386/i386-common.cc (processor_alias_table):
25971         Use CPU_ZNVER4 for znver4.
25972         * config/i386/i386.md: Add znver4.md.
25973         * config/i386/znver4.md: New.
25975 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
25977         PR tree-optimization/108253
25978         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
25979         types.
25981 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
25983         PR middle-end/108237
25984         * generic-match-head.cc: Include tree-pass.h.
25985         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
25986         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
25987         resp. PROP_gimple_lvec property set.
25989 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
25991         PR sanitizer/108256
25992         * convert.cc (do_narrow): Punt for MULT_EXPR if original
25993         type doesn't wrap around and -fsanitize=signed-integer-overflow
25994         is on.
25995         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
25997 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
25999         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
26000         * common/config/i386/i386-common.cc: Add Emeraldrapids.
26002 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
26004         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
26005         for meteorlake.
26007 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
26009         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
26010         default constructor to initialize it.
26011         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
26012         for last and iterate to handle recursive calls.  Delete leftover
26013         candidates at the end.
26014         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
26015         on local clones.
26016         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
26017         gc_candidate bit when a clone is used.
26019 2023-01-03  Florian Weimer  <fweimer@redhat.com>
26021         Revert:
26022         2023-01-02  Florian Weimer  <fweimer@redhat.com>
26024         * dwarf2cfi.cc (init_return_column_size): Remove.
26025         (init_one_dwarf_reg_size): Adjust.
26026         (generate_dwarf_reg_sizes): New function.  Extracted
26027         from expand_builtin_init_dwarf_reg_sizes.
26028         (expand_builtin_init_dwarf_reg_sizes): Call
26029         generate_dwarf_reg_sizes.
26030         * target.def (init_dwarf_reg_sizes_extra): Adjust
26031         hook signature.
26032         * config/msp430/msp430.cc
26033         (msp430_init_dwarf_reg_sizes_extra): Adjust.
26034         * config/rs6000/rs6000.cc
26035         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
26036         * doc/tm.texi: Update.
26038 2023-01-03  Florian Weimer  <fweimer@redhat.com>
26040         Revert:
26041         2023-01-02  Florian Weimer  <fweimer@redhat.com>
26043         * debug.h (dwarf_reg_sizes_constant): Declare.
26044         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
26046 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
26048         PR tree-optimization/105043
26049         * doc/extend.texi (Object Size Checking): Split out into two
26050         subsections and mention _FORTIFY_SOURCE.
26052 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
26054         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
26055         RTL expansion to allow condition (mask) to be shared/reused,
26056         by avoiding overwriting pseudos and adding REG_EQUAL notes.
26058 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
26060         PR target/108229
26061         * config/i386/i386-features.cc
26062         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
26063         the gain/cost of converting a MEM operand.
26065 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
26067         PR middle-end/108264
26068         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
26069         from source which doesn't have scalar integral mode first convert
26070         it to outer_mode.
26072 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
26074         PR rtl-optimization/108263
26075         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
26076         asm goto to EXIT.
26078 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
26080         PR target/87832
26081         * config/i386/lujiazui.md (lujiazui_div): New automaton.
26082         (lua_div): New unit.
26083         (lua_idiv_qi): Correct unit in the reservation.
26084         (lua_idiv_qi_load): Ditto.
26085         (lua_idiv_hi): Ditto.
26086         (lua_idiv_hi_load): Ditto.
26087         (lua_idiv_si): Ditto.
26088         (lua_idiv_si_load): Ditto.
26089         (lua_idiv_di): Ditto.
26090         (lua_idiv_di_load): Ditto.
26091         (lua_fdiv_SF): Ditto.
26092         (lua_fdiv_SF_load): Ditto.
26093         (lua_fdiv_DF): Ditto.
26094         (lua_fdiv_DF_load): Ditto.
26095         (lua_fdiv_XF): Ditto.
26096         (lua_fdiv_XF_load): Ditto.
26097         (lua_ssediv_SF): Ditto.
26098         (lua_ssediv_load_SF): Ditto.
26099         (lua_ssediv_V4SF): Ditto.
26100         (lua_ssediv_load_V4SF): Ditto.
26101         (lua_ssediv_V8SF): Ditto.
26102         (lua_ssediv_load_V8SF): Ditto.
26103         (lua_ssediv_SD): Ditto.
26104         (lua_ssediv_load_SD): Ditto.
26105         (lua_ssediv_V2DF): Ditto.
26106         (lua_ssediv_load_V2DF): Ditto.
26107         (lua_ssediv_V4DF): Ditto.
26108         (lua_ssediv_load_V4DF): Ditto.
26110 2023-01-02  Florian Weimer  <fweimer@redhat.com>
26112         * debug.h (dwarf_reg_sizes_constant): Declare.
26113         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
26115 2023-01-02  Florian Weimer  <fweimer@redhat.com>
26117         * dwarf2cfi.cc (init_return_column_size): Remove.
26118         (init_one_dwarf_reg_size): Adjust.
26119         (generate_dwarf_reg_sizes): New function.  Extracted
26120         from expand_builtin_init_dwarf_reg_sizes.
26121         (expand_builtin_init_dwarf_reg_sizes): Call
26122         generate_dwarf_reg_sizes.
26123         * target.def (init_dwarf_reg_sizes_extra): Adjust
26124         hook signature.
26125         * config/msp430/msp430.cc
26126         (msp430_init_dwarf_reg_sizes_extra): Adjust.
26127         * config/rs6000/rs6000.cc
26128         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
26129         * doc/tm.texi: Update.
26131 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
26133         * gcc.cc (process_command): Update copyright notice dates.
26134         * gcov-dump.cc (print_version): Ditto.
26135         * gcov.cc (print_version): Ditto.
26136         * gcov-tool.cc (print_version): Ditto.
26137         * gengtype.cc (create_file): Ditto.
26138         * doc/cpp.texi: Bump @copying's copyright year.
26139         * doc/cppinternals.texi: Ditto.
26140         * doc/gcc.texi: Ditto.
26141         * doc/gccint.texi: Ditto.
26142         * doc/gcov.texi: Ditto.
26143         * doc/install.texi: Ditto.
26144         * doc/invoke.texi: Ditto.
26146 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
26147             Uroš Bizjak  <ubizjak@gmail.com>
26149         * config/i386/i386.md (extendditi2): New define_insn.
26150         (define_split): Use DWIH mode iterator to treat new extendditi2
26151         identically to existing extendsidi2_1.
26152         (define_peephole2): Likewise.
26153         (define_peephole2): Likewise.
26154         (define_Split): Likewise.
26157 Copyright (C) 2023 Free Software Foundation, Inc.
26159 Copying and distribution of this file, with or without modification,
26160 are permitted in any medium without royalty provided the copyright
26161 notice and this notice are preserved.