Daily bump.
[official-gcc.git] / gcc / ChangeLog
blob39e2be3f8bcb2a1b9a91f0bac8a0ee33f70abbf3
1 2023-10-20  Roger Sayle  <roger@nextmovesoftware.com>
2             Uros Bizjak  <ubizjak@gmail.com>
4         PR middle-end/101955
5         PR tree-optimization/106245
6         * config/i386/i386.md (*extv<mode>_1_0): New define_insn_and_split.
8 2023-10-20  David Edelsohn  <dje.gcc@gmail.com>
10         * gimple-harden-control-flow.cc: Include memmodel.h.
12 2023-10-20  David Edelsohn  <dje.gcc@gmail.com>
14         * gimple-harden-control-flow.cc: Include tm_p.h.
16 2023-10-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
18         PR tree-optimization/111882
19         * tree-if-conv.cc (get_bitfield_rep): Return NULL_TREE for bitfields
20         with non-constant offsets.
22 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
24         PR tree-optimization/111866
25         * tree-vect-loop-manip.cc (vect_do_peeling): Pass null as vinfo to
26         vect_set_loop_condition during prolog peeling.
28 2023-10-20  Richard Biener  <rguenther@suse.de>
30         PR tree-optimization/111445
31         * tree-scalar-evolution.cc (simple_iv_with_niters):
32         Add missing check for a sign-conversion.
34 2023-10-20  Richard Biener  <rguenther@suse.de>
36         PR tree-optimization/110243
37         PR tree-optimization/111336
38         * tree-ssa-loop-ivopts.cc (strip_offset_1): Rewrite
39         operations with undefined behavior on overflow to
40         unsigned arithmetic.
42 2023-10-20  Richard Biener  <rguenther@suse.de>
44         PR tree-optimization/111891
45         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Fix
46         assert.
48 2023-10-20  Andrew Stubbs  <ams@codesourcery.com>
50         * config.gcc: Allow --with-arch=gfx1030.
51         * config/gcn/gcn-hsa.h (NO_XNACK): gfx1030 does not support xnack.
52         (ASM_SPEC): gfx1030 needs -mattr=+wavefrontsize64 set.
53         * config/gcn/gcn-opts.h (enum processor_type): Add PROCESSOR_GFX1030.
54         (TARGET_GFX1030): New.
55         (TARGET_RDNA2): New.
56         * config/gcn/gcn-valu.md (@dpp_move<mode>): Disable for RDNA2.
57         (addc<mode>3<exec_vcc>): Add RDNA2 syntax variant.
58         (subc<mode>3<exec_vcc>): Likewise.
59         (<convop><mode><vndi>2_exec): Add RDNA2 alternatives.
60         (vec_cmp<mode>di): Likewise.
61         (vec_cmp<u><mode>di): Likewise.
62         (vec_cmp<mode>di_exec): Likewise.
63         (vec_cmp<u><mode>di_exec): Likewise.
64         (vec_cmp<mode>di_dup): Likewise.
65         (vec_cmp<mode>di_dup_exec): Likewise.
66         (reduc_<reduc_op>_scal_<mode>): Disable for RDNA2.
67         (*<reduc_op>_dpp_shr_<mode>): Likewise.
68         (*plus_carry_dpp_shr_<mode>): Likewise.
69         (*plus_carry_in_dpp_shr_<mode>): Likewise.
70         * config/gcn/gcn.cc (gcn_option_override): Recognise gfx1030.
71         (gcn_global_address_p): RDNA2 only allows smaller offsets.
72         (gcn_addr_space_legitimate_address_p): Likewise.
73         (gcn_omp_device_kind_arch_isa): Recognise gfx1030.
74         (gcn_expand_epilogue): Use VGPRs instead of SGPRs.
75         (output_file_start): Configure gfx1030.
76         * config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __RDNA2__;
77         (ASSEMBLER_DIALECT): New.
78         * config/gcn/gcn.md (rdna): New define_attr.
79         (enabled): Use "rdna" attribute.
80         (gcn_return): Remove s_dcache_wb.
81         (addcsi3_scalar): Add RDNA2 syntax variant.
82         (addcsi3_scalar_zero): Likewise.
83         (addptrdi3): Likewise.
84         (mulsi3): v_mul_lo_i32 should be v_mul_lo_u32 on all ISA.
85         (*memory_barrier): Add RDNA2 syntax variant.
86         (atomic_load<mode>): Add RDNA2 cache control variants, and disable
87         scalar atomics for RDNA2.
88         (atomic_store<mode>): Likewise.
89         (atomic_exchange<mode>): Likewise.
90         * config/gcn/gcn.opt (gpu_type): Add gfx1030.
91         * config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX1030): New.
92         (main): Recognise -march=gfx1030.
93         * config/gcn/t-omp-device: Add gfx1030 isa.
95 2023-10-20  Richard Biener  <rguenther@suse.de>
97         PR tree-optimization/111000
98         * stor-layout.h (element_precision): Move ..
99         * tree.h (element_precision): .. here.
100         * tree-ssa-loop-im.cc (movement_possibility_1): Restrict
101         motion of shifts and rotates.
103 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
105         * tree-core.h (ECF_XTHROW): New macro.
106         * tree.cc (set_call_expr): Add expected_throw attribute when
107         ECF_XTHROW is set.
108         (build_common_builtin_node): Add ECF_XTHROW to
109         __cxa_end_cleanup and _Unwind_Resume or _Unwind_SjLj_Resume.
110         * calls.cc (flags_from_decl_or_type): Check for expected_throw
111         attribute to set ECF_XTHROW.
112         * gimple.cc (gimple_build_call_from_tree): Propagate
113         ECF_XTHROW from decl flags to gimple call...
114         (gimple_call_flags): ... and back.
115         * gimple.h (GF_CALL_XTHROW): New gf_mask flag.
116         (gimple_call_set_expected_throw): New.
117         (gimple_call_expected_throw_p): New.
118         * Makefile.in (OBJS): Add gimple-harden-control-flow.o.
119         * builtins.def (BUILT_IN___HARDCFR_CHECK): New.
120         * common.opt (fharden-control-flow-redundancy): New.
121         (-fhardcfr-check-returning-calls): New.
122         (-fhardcfr-check-exceptions): New.
123         (-fhardcfr-check-noreturn-calls=*): New.
124         (Enum hardcfr_check_noreturn_calls): New.
125         (fhardcfr-skip-leaf): New.
126         * doc/invoke.texi: Document them.
127         (hardcfr-max-blocks, hardcfr-max-inline-blocks): New params.
128         * flag-types.h (enum hardcfr_noret): New.
129         * gimple-harden-control-flow.cc: New.
130         * params.opt (-param=hardcfr-max-blocks=): New.
131         (-param=hradcfr-max-inline-blocks=): New.
132         * passes.def (pass_harden_control_flow_redundancy): Add.
133         * tree-pass.h (make_pass_harden_control_flow_redundancy):
134         Declare.
135         * doc/extend.texi: Document expected_throw attribute.
137 2023-10-20  Alex Coplan  <alex.coplan@arm.com>
139         * rtl-ssa/changes.cc (function_info::change_insns): Ensure we call
140         ::remove_insn on deleted insns.
142 2023-10-20  Richard Biener  <rguenther@suse.de>
144         * doc/generic.texi ({L,R}ROTATE_EXPR): Document.
146 2023-10-20  Oleg Endo  <olegendo@gcc.gnu.org>
148         PR target/101177
149         * config/sh/sh.md (unnamed split pattern): Fix comparison of
150         find_regno_note result.
152 2023-10-20  Richard Biener  <rguenther@suse.de>
154         * tree-vect-loop.cc (update_epilogue_loop_vinfo): Rewrite
155         both STMT_VINFO_GATHER_SCATTER_P and VMAT_GATHER_SCATTER
156         stmt refs.
158 2023-10-20  Richard Biener  <rguenther@suse.de>
160         * tree-vect-slp.cc (off_map, off_op0_map, off_arg2_map,
161         off_arg3_arg2_map): New.
162         (vect_get_operand_map): Get flag whether the stmt was
163         recognized as gather or scatter and use the above
164         accordingly.
165         (vect_get_and_check_slp_defs): Adjust.
166         (vect_build_slp_tree_2): Likewise.
168 2023-10-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
170         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Rename variables.
171         (pre_vsetvl::pre_global_vsetvl_info): Ditto.
172         (pre_vsetvl::emit_vsetvl): Ditto.
174 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
175              Andre Vieira  <andre.simoesdiasvieira@arm.com>
177         * tree-if-conv.cc (if_convertible_loop_p_1): Move check from here ...
178         (get_loop_body_if_conv_order): ... to here.
179         (if_convertible_loop_p): Remove single_exit check.
180         (tree_if_conversion): Move single_exit check to if-conversion part and
181         support multiple exits.
183 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
184              Andre Vieira  <andre.simoesdiasvieira@arm.com>
186         * tree-vect-patterns.cc (vect_init_pattern_stmt): Copy STMT_VINFO_TYPE
187         from original statement.
188         (vect_recog_bitfield_ref_pattern): Support bitfields in gcond.
190 2023-10-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
192         PR target/111848
193         * config/riscv/riscv-selftests.cc (run_const_vector_selftests): Adapt selftest.
194         * config/riscv/riscv-v.cc (expand_const_vector): Change it into vec_duplicate splitter.
196 2023-10-20  Lehua Ding  <lehua.ding@rivai.ai>
198         PR target/111037
199         PR target/111234
200         PR target/111725
201         * config/riscv/riscv-vsetvl.cc (bitmap_union_of_preds_with_entry): New.
202         (debug): Removed.
203         (compute_reaching_defintion): New.
204         (enum vsetvl_type): Moved.
205         (vlmax_avl_p): Moved.
206         (enum emit_type): Moved.
207         (vlmul_to_str): Moved.
208         (vlmax_avl_insn_p): Removed.
209         (policy_to_str): Moved.
210         (loop_basic_block_p): Removed.
211         (valid_sew_p): Removed.
212         (vsetvl_insn_p): Moved.
213         (vsetvl_vtype_change_only_p): Removed.
214         (after_or_same_p): Removed.
215         (before_p): Removed.
216         (anticipatable_occurrence_p): Removed.
217         (available_occurrence_p): Removed.
218         (insn_should_be_added_p): Removed.
219         (get_all_sets): Moved.
220         (get_same_bb_set): Moved.
221         (gen_vsetvl_pat): Removed.
222         (calculate_vlmul): Moved.
223         (get_max_int_sew): New.
224         (emit_vsetvl_insn): Removed.
225         (get_max_float_sew): New.
226         (eliminate_insn): Removed.
227         (insert_vsetvl): Removed.
228         (count_regno_occurrences): Moved.
229         (get_vl_vtype_info): Removed.
230         (enum def_type): Moved.
231         (validate_change_or_fail): Moved.
232         (change_insn): Removed.
233         (get_all_real_uses): Moved.
234         (get_forward_read_vl_insn): Removed.
235         (get_backward_fault_first_load_insn): Removed.
236         (change_vsetvl_insn): Removed.
237         (avl_source_has_vsetvl_p): Removed.
238         (source_equal_p): Moved.
239         (calculate_sew): Removed.
240         (same_equiv_note_p): Moved.
241         (get_expr_id): New.
242         (incompatible_avl_p): Removed.
243         (get_regno): New.
244         (different_sew_p): Removed.
245         (get_bb_index): New.
246         (different_lmul_p): Removed.
247         (has_no_uses): Moved.
248         (different_ratio_p): Removed.
249         (different_tail_policy_p): Removed.
250         (different_mask_policy_p): Removed.
251         (possible_zero_avl_p): Removed.
252         (enum demand_flags): New.
253         (second_ratio_invalid_for_first_sew_p): Removed.
254         (second_ratio_invalid_for_first_lmul_p): Removed.
255         (enum class): New.
256         (float_insn_valid_sew_p): Removed.
257         (second_sew_less_than_first_sew_p): Removed.
258         (first_sew_less_than_second_sew_p): Removed.
259         (class vsetvl_info): New.
260         (compare_lmul): Removed.
261         (second_lmul_less_than_first_lmul_p): Removed.
262         (second_ratio_less_than_first_ratio_p): Removed.
263         (DEF_INCOMPATIBLE_COND): Removed.
264         (greatest_sew): Removed.
265         (first_sew): Removed.
266         (second_sew): Removed.
267         (first_vlmul): Removed.
268         (second_vlmul): Removed.
269         (first_ratio): Removed.
270         (second_ratio): Removed.
271         (vlmul_for_first_sew_second_ratio): Removed.
272         (vlmul_for_greatest_sew_second_ratio): Removed.
273         (ratio_for_second_sew_first_vlmul): Removed.
274         (class vsetvl_block_info): New.
275         (DEF_SEW_LMUL_FUSE_RULE): New.
276         (always_unavailable): Removed.
277         (avl_unavailable_p): Removed.
278         (class demand_system): New.
279         (sew_unavailable_p): Removed.
280         (lmul_unavailable_p): Removed.
281         (ge_sew_unavailable_p): Removed.
282         (ge_sew_lmul_unavailable_p): Removed.
283         (ge_sew_ratio_unavailable_p): Removed.
284         (DEF_UNAVAILABLE_COND): Removed.
285         (same_sew_lmul_demand_p): Removed.
286         (propagate_avl_across_demands_p): Removed.
287         (reg_available_p): Removed.
288         (support_relaxed_compatible_p): Removed.
289         (demands_can_be_fused_p): Removed.
290         (earliest_pred_can_be_fused_p): Removed.
291         (vsetvl_dominated_by_p): Removed.
292         (avl_info::avl_info): Removed.
293         (avl_info::single_source_equal_p): Removed.
294         (avl_info::multiple_source_equal_p): Removed.
295         (DEF_SEW_LMUL_RULE): New.
296         (avl_info::operator=): Removed.
297         (avl_info::operator==): Removed.
298         (DEF_POLICY_RULE): New.
299         (avl_info::operator!=): Removed.
300         (avl_info::has_non_zero_avl): Removed.
301         (vl_vtype_info::vl_vtype_info): Removed.
302         (vl_vtype_info::operator==): Removed.
303         (DEF_AVL_RULE): New.
304         (vl_vtype_info::operator!=): Removed.
305         (vl_vtype_info::same_avl_p): Removed.
306         (vl_vtype_info::same_vtype_p): Removed.
307         (vl_vtype_info::same_vlmax_p): Removed.
308         (vector_insn_info::operator>=): Removed.
309         (vector_insn_info::operator==): Removed.
310         (class pre_vsetvl): New.
311         (vector_insn_info::parse_insn): Removed.
312         (vector_insn_info::compatible_p): Removed.
313         (vector_insn_info::skip_avl_compatible_p): Removed.
314         (vector_insn_info::compatible_avl_p): Removed.
315         (vector_insn_info::compatible_vtype_p): Removed.
316         (vector_insn_info::available_p): Removed.
317         (vector_insn_info::fuse_avl): Removed.
318         (vector_insn_info::fuse_sew_lmul): Removed.
319         (vector_insn_info::fuse_tail_policy): Removed.
320         (vector_insn_info::fuse_mask_policy): Removed.
321         (vector_insn_info::local_merge): Removed.
322         (vector_insn_info::global_merge): Removed.
323         (vector_insn_info::get_avl_or_vl_reg): Removed.
324         (vector_insn_info::update_fault_first_load_avl): Removed.
325         (vector_insn_info::dump): Removed.
326         (vector_infos_manager::vector_infos_manager): Removed.
327         (vector_infos_manager::create_expr): Removed.
328         (vector_infos_manager::get_expr_id): Removed.
329         (vector_infos_manager::all_same_ratio_p): Removed.
330         (vector_infos_manager::all_avail_in_compatible_p): Removed.
331         (vector_infos_manager::all_same_avl_p): Removed.
332         (vector_infos_manager::expr_set_num): Removed.
333         (vector_infos_manager::release): Removed.
334         (vector_infos_manager::create_bitmap_vectors): Removed.
335         (vector_infos_manager::free_bitmap_vectors): Removed.
336         (vector_infos_manager::dump): Removed.
337         (class pass_vsetvl): Adjust.
338         (pass_vsetvl::get_vector_info): Removed.
339         (pass_vsetvl::get_block_info): Removed.
340         (pass_vsetvl::update_vector_info): Removed.
341         (pass_vsetvl::update_block_info): Removed.
342         (pre_vsetvl::compute_avl_def_data): New.
343         (pass_vsetvl::simple_vsetvl): Removed.
344         (pass_vsetvl::compute_local_backward_infos): Removed.
345         (pass_vsetvl::need_vsetvl): Removed.
346         (pass_vsetvl::transfer_before): Removed.
347         (pass_vsetvl::transfer_after): Removed.
348         (pre_vsetvl::compute_vsetvl_def_data): New.
349         (pass_vsetvl::emit_local_forward_vsetvls): Removed.
350         (pass_vsetvl::prune_expressions): Removed.
351         (pass_vsetvl::compute_local_properties): Removed.
352         (pre_vsetvl::compute_lcm_local_properties): New.
353         (pass_vsetvl::earliest_fusion): Removed.
354         (pre_vsetvl::fuse_local_vsetvl_info): New.
355         (pass_vsetvl::vsetvl_fusion): Removed.
356         (pass_vsetvl::can_refine_vsetvl_p): Removed.
357         (pre_vsetvl::earliest_fuse_vsetvl_info): New.
358         (pass_vsetvl::refine_vsetvls): Removed.
359         (pass_vsetvl::cleanup_vsetvls): Removed.
360         (pass_vsetvl::commit_vsetvls): Removed.
361         (pass_vsetvl::pre_vsetvl): Removed.
362         (pass_vsetvl::get_vsetvl_at_end): Removed.
363         (local_avl_compatible_p): Removed.
364         (pass_vsetvl::local_eliminate_vsetvl_insn): Removed.
365         (pre_vsetvl::pre_global_vsetvl_info): New.
366         (get_first_vsetvl_before_rvv_insns): Removed.
367         (pass_vsetvl::global_eliminate_vsetvl_insn): Removed.
368         (pre_vsetvl::emit_vsetvl): New.
369         (pass_vsetvl::ssa_post_optimization): Removed.
370         (pre_vsetvl::cleaup): New.
371         (pre_vsetvl::remove_avl_operand): New.
372         (pass_vsetvl::df_post_optimization): Removed.
373         (pre_vsetvl::remove_unused_dest_operand): New.
374         (pass_vsetvl::init): Removed.
375         (pass_vsetvl::done): Removed.
376         (pass_vsetvl::compute_probabilities): Removed.
377         (pass_vsetvl::lazy_vsetvl): Adjust.
378         (pass_vsetvl::execute): Adjust.
379         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Removed.
380         (DEF_SEW_LMUL_RULE): New.
381         (DEF_SEW_LMUL_FUSE_RULE): Removed.
382         (DEF_POLICY_RULE): New.
383         (DEF_UNAVAILABLE_COND): Removed
384         (DEF_AVL_RULE): New demand type.
385         (sew_lmul): New demand type.
386         (ratio_only): New demand type.
387         (sew_only): New demand type.
388         (ge_sew): New demand type.
389         (ratio_and_ge_sew): New demand type.
390         (tail_mask_policy): New demand type.
391         (tail_policy_only): New demand type.
392         (mask_policy_only): New demand type.
393         (ignore_policy): New demand type.
394         (avl): New demand type.
395         (non_zero_avl): New demand type.
396         (ignore_avl): New demand type.
397         * config/riscv/t-riscv: Removed riscv-vsetvl.h
398         * config/riscv/riscv-vsetvl.h: Removed.
400 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
402         * tree-eh.cc (make_eh_edges): Return the new edge.
403         * tree-eh.h (make_eh_edges): Likewise.
405 2023-10-19  Marek Polacek  <polacek@redhat.com>
407         * doc/contrib.texi: Add entry for Patrick Palka.
409 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
411         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Make function
412         compatible with mask parameters in clone.
413         * tree-vect-stmts.cc (vect_build_all_ones_mask): Allow vector boolean
414         typed masks.
415         (vectorizable_simd_clone_call): Enable the use of masked clones in
416         fully masked loops.
418 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
420         PR tree-optimization/110485
421         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Disable partial
422         vectors usage if a notinbranch simdclone has been selected.
424 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
426         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Special case
427         simd clone calls and only use types that are mapped to vectors.
428         (simd_clone_call_p): New helper function.
430 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
432         * tree-parloops.cc (try_transform_to_exit_first_loop_alt): Accept
433         poly NIT and ALT_BOUND.
435 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
437         * tree-parloops.cc (create_loop_fn): Copy specific target and
438         optimization options to clone.
440 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
442         * omp-simd-clone.cc (simd_clone_subparts): Remove.
443         (simd_clone_init_simd_arrays): Replace simd_clone_supbarts with
444         TYPE_VECTOR_SUBPARTS.
445         (ipa_simd_modify_function_body): Likewise.
446         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Likewise.
447         (simd_clone_subparts): Remove.
449 2023-10-19  Jason Merrill  <jason@redhat.com>
451         * ABOUT-GCC-NLS: Add usage guidance.
453 2023-10-19  Jason Merrill  <jason@redhat.com>
455         * diagnostic-core.h (permerror): Rename new overloads...
456         (permerror_opt): To this.
457         * diagnostic.cc: Likewise.
459 2023-10-19  Tamar Christina  <tamar.christina@arm.com>
461         PR tree-optimization/111860
462         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
463         Remove PHI nodes that dominate loop.
465 2023-10-19  Richard Biener  <rguenther@suse.de>
467         PR tree-optimization/111131
468         * tree-vect-loop.cc (update_epilogue_loop_vinfo): Make
469         sure to update all gather/scatter stmt DRs, not only those
470         that eventually got VMAT_GATHER_SCATTER set.
471         * tree-vect-slp.cc (_slp_oprnd_info::first_gs_info): Add.
472         (vect_get_and_check_slp_defs): Handle gathers/scatters,
473         adding the offset as SLP operand and comparing base and scale.
474         (vect_build_slp_tree_1): Handle gathers.
475         (vect_build_slp_tree_2): Likewise.
477 2023-10-19  Richard Biener  <rguenther@suse.de>
479         * tree-vect-stmts.cc (vect_build_gather_load_calls): Rename
480         to ...
481         (vect_build_one_gather_load_call): ... this.  Refactor,
482         inline widening/narrowing support ...
483         (vectorizable_load): ... here, do gather vectorization
484         with builtin decls along other gather vectorization.
486 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
488         * config/aarch64/aarch64.md (load_pair_dw_tftf): Rename to ...
489         (load_pair_dw_<TX:mode><TX2:mode>): ... this.
490         (store_pair_dw_tftf): Rename to ...
491         (store_pair_dw_<TX:mode><TX2:mode>): ... this.
492         * config/aarch64/iterators.md (TX2): New.
494 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
496         * rtl-ssa/changes.cc (function_info::finalize_new_accesses): Add new
497         parameter to give final insn position, infer use of mem if it isn't
498         specified explicitly.
499         (function_info::change_insns): Pass down final insn position to
500         finalize_new_accesses.
501         * rtl-ssa/functions.h: Add parameter to finalize_new_accesses.
503 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
505         * rtl-ssa/accesses.cc (function_info::reparent_use): New.
506         * rtl-ssa/functions.h (function_info): Declare new member
507         function reparent_use.
509 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
511         * rtl-ssa/access-utils.h (drop_memory_access): New.
513 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
515         * rtl-ssa/insns.cc (function_info::add_insn_after): Ensure we
516         update the prev pointer on the following nondebug insn in the
517         case that !insn->is_debug_insn () && next->is_debug_insn ().
519 2023-10-19  Haochen Jiang  <haochen.jiang@intel.com>
521         * config/i386/i386.h: Correct the ISA enabled for Arrow Lake.
522         Also make Clearwater Forest depends on Sierra Forest.
523         * config/i386/i386-options.cc: Revise the order of the macro
524         definition to avoid confusion.
525         * doc/extend.texi: Revise documentation.
526         * doc/invoke.texi: Correct documentation.
528 2023-10-19  Andrew Stubbs  <ams@codesourcery.com>
530         * config.gcc (amdgcn): Switch default to --with-arch=gfx900.
531         Implement support for --with-multilib-list.
532         * config/gcn/t-gcn-hsa: Likewise.
533         * doc/install.texi: Likewise.
534         * doc/invoke.texi: Mark Fiji deprecated.
536 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
538         * config/loongarch/loongarch.cc (loongarch_vector_costs): Inherit from
539         vector_costs.  Add a constructor.
540         (loongarch_vector_costs::add_stmt_cost): Use adjust_cost_for_freq to
541         adjust the cost for inner loops.
542         (loongarch_vector_costs::count_operations): New function.
543         (loongarch_vector_costs::determine_suggested_unroll_factor): Ditto.
544         (loongarch_vector_costs::finish_cost): Ditto.
545         (loongarch_builtin_vectorization_cost): Adjust.
546         * config/loongarch/loongarch.opt (loongarch-vect-unroll-limit): New parameter.
547         (loongarcg-vect-issue-info): Ditto.
548         (mmemvec-cost): Delete.
549         * config/loongarch/genopts/loongarch.opt.in
550         (loongarch-vect-unroll-limit): Ditto.
551         (loongarcg-vect-issue-info): Ditto.
552         (mmemvec-cost): Delete.
553         * doc/invoke.texi (loongarcg-vect-unroll-limit): Document new option.
555 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
557         * config/loongarch/lasx.md
558         (vec_widen_<su>mult_even_v8si): New patterns.
559         (vec_widen_<su>add_hi_<mode>): Ditto.
560         (vec_widen_<su>add_lo_<mode>): Ditto.
561         (vec_widen_<su>sub_hi_<mode>): Ditto.
562         (vec_widen_<su>sub_lo_<mode>): Ditto.
563         (vec_widen_<su>mult_hi_<mode>): Ditto.
564         (vec_widen_<su>mult_lo_<mode>): Ditto.
565         * config/loongarch/loongarch.md (u_bool): New iterator.
566         * config/loongarch/loongarch-protos.h
567         (loongarch_expand_vec_widen_hilo): New prototype.
568         * config/loongarch/loongarch.cc
569         (loongarch_expand_vec_interleave): New function.
570         (loongarch_expand_vec_widen_hilo): New function.
572 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
574         * config/loongarch/lasx.md
575         (avg<mode>3_ceil): New patterns.
576         (uavg<mode>3_ceil): Ditto.
577         (avg<mode>3_floor): Ditto.
578         (uavg<mode>3_floor): Ditto.
579         (usadv32qi): Ditto.
580         (ssadv32qi): Ditto.
581         * config/loongarch/lsx.md
582         (avg<mode>3_ceil): New patterns.
583         (uavg<mode>3_ceil): Ditto.
584         (avg<mode>3_floor): Ditto.
585         (uavg<mode>3_floor): Ditto.
586         (usadv16qi): Ditto.
587         (ssadv16qi): Ditto.
589 2023-10-18  Andrew Pinski  <pinskia@gmail.com>
591         PR middle-end/111863
592         * expr.cc (do_store_flag): Don't over write arg0
593         when stripping off `& POW2`.
595 2023-10-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
597         PR tree-optimization/111648
598         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): If a1
599         chooses base element from arg, ensure that it's a natural stepped
600         sequence.
601         (build_vec_cst_rand): New param natural_stepped and use it to
602         construct a naturally stepped sequence.
603         (test_nunits_min_2): Add new unit tests Case 6 and Case 7.
605 2023-10-18  Dimitar Dimitrov  <dimitar@dinux.eu>
607         * config/pru/pru.cc (pru_insn_cost): New function.
608         (TARGET_INSN_COST): Define for PRU.
610 2023-10-18  Andrew Carlotti  <andrew.carlotti@arm.com>
612         * config/aarch64/aarch64.cc (aarch64_test_fractional_cost):
613         Test <= instead of testing < twice.
615 2023-10-18  Jakub Jelinek  <jakub@redhat.com>
617         PR bootstrap/111852
618         * cse.cc (cse_insn): Add workaround for GCC 4.8-4.9, instead of
619         using rtx_def type for memory_extend_buf, use unsigned char
620         arrayy with size of rtx_def and its alignment.
622 2023-10-18  Jason Merrill  <jason@redhat.com>
624         * doc/invoke.texi: Move -fpermissive to Warning Options.
625         * diagnostic.cc (update_effective_level_from_pragmas): Remove
626         redundant system header check.
627         (diagnostic_report_diagnostic): Move down syshdr/-w check.
628         (diagnostic_impl): Handle DK_PERMERROR with an option number.
629         (permerror): Add new overloads.
630         * diagnostic-core.h (permerror): Declare them.
632 2023-10-18  Tobias Burnus  <tobias@codesourcery.com>
634         * gimplify.cc (gimplify_bind_expr): Remove "omp allocate" attribute
635         to avoid that auxillary statement list reaches LTO.
637 2023-10-18  Jakub Jelinek  <jakub@redhat.com>
639         PR tree-optimization/111845
640         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember temporary
641         statements for the 4 operand addition or subtraction of 3 operands
642         from 1 operand cases and remove them when successful.  Look for
643         nested additions even from rhs[2], not just rhs[1].
645 2023-10-18  Tobias Burnus  <tobias@codesourcery.com>
647         PR target/111093
648         * config/nvptx/nvptx.cc (nvptx_option_override): Issue fatal error
649         instead of an assert ICE when no -march= has been specified.
651 2023-10-18  Iain Sandoe  <iain@sandoe.co.uk>
653         * config.in: Regenerate.
654         * config/darwin.cc (darwin_file_start): Add assembler directives
655         for the target OS version, where these are supported by the
656         assembler.
657         (darwin_override_options): Check for building >= macOS 10.14.
658         * configure: Regenerate.
659         * configure.ac: Check for assembler support of .build_version
660         directives.
662 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
664         PR tree-optimization/109154
665         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
666         (typedef struct ifcvt_arg_entry): New.
667         (cmp_arg_entry): New.
668         (gen_phi_arg_condition, gen_phi_nest_statement,
669         predicate_scalar_phi): Use them.
671 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
673         PR tree-optimization/109154
674         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
675         Rewrite to new syntax.
676         (*aarch64_simd_mov<VQMOV:mode): Rewrite to new syntax and merge in
677         splits.
679 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
681         PR tree-optimization/109154
682         * tree-if-conv.cc (if_convertible_stmt_p): Allow any const IFN.
684 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
686         PR tree-optimization/109154
687         * match.pd: Add new cond_op rule.
689 2023-10-18  Xi Ruoyao  <xry111@xry111.site>
691         * config/loongarch/loongarch.md (movfcc): Use fcmp.caf.s for
692         zeroing a fcc.
694 2023-10-18  Richard Biener  <rguenther@suse.de>
696         * tree-vect-stmts.cc (vectorizable_simd_clone_call):
697         Relax check to again allow passing integer mode masks
698         as traditional vectors.
700 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
702         * tree-loop-distribution.cc (copy_loop_before): Request no LCSSA.
703         * tree-vect-loop-manip.cc (adjust_phi_and_debug_stmts): Add additional
704         asserts.
705         (slpeel_tree_duplicate_loop_to_edge_cfg): Keep LCSSA during peeling.
706         (find_guard_arg): Look value up through explicit edge and original defs.
707         (vect_do_peeling): Use it.
708         (slpeel_update_phi_nodes_for_guard2): Take explicit exit edge.
709         (slpeel_update_phi_nodes_for_lcssa, slpeel_update_phi_nodes_for_loops):
710         Remove.
711         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Initialize phi.
712         * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg): Add
713         optional param to turn off LCSSA mode.
715 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
717         * tree-if-conv.cc (tree_if_conversion): Record exits in aux.
718         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Use
719         it.
720         * tree-vect-loop.cc (vect_get_loop_niters): Determine main exit.
721         (vec_init_loop_exit_info): Extend analysis when multiple exits.
722         (vect_analyze_loop_form): Record conds and determine main cond.
723         (vect_create_loop_vinfo): Extend bookkeeping of conds.
724         (vect_analyze_loop): Release conds.
725         * tree-vectorizer.h (LOOP_VINFO_LOOP_CONDS,
726         LOOP_VINFO_LOOP_IV_COND):  New.
727         (struct vect_loop_form_info): Add conds, alt_loop_conds;
728         (struct loop_vec_info): Add conds, loop_iv_cond.
730 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
732         * tree-loop-distribution.cc (copy_loop_before): Pass exit explicitly.
733         (loop_distribution::distribute_loop): Bail out of not single exit.
734         * tree-scalar-evolution.cc (get_loop_exit_condition): New.
735         * tree-scalar-evolution.h (get_loop_exit_condition): New.
736         * tree-vect-data-refs.cc (vect_enhance_data_refs_alignment): Pass exit
737         explicitly.
738         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors,
739         vect_set_loop_condition_partial_vectors_avx512,
740         vect_set_loop_condition_normal, vect_set_loop_condition): Explicitly
741         take exit.
742         (slpeel_tree_duplicate_loop_to_edge_cfg): Explicitly take exit and
743         return new peeled corresponding peeled exit.
744         (slpeel_can_duplicate_loop_p): Explicitly take exit.
745         (find_loop_location): Handle not knowing an explicit exit.
746         (vect_update_ivs_after_vectorizer, vect_gen_vector_loop_niters_mult_vf,
747         find_guard_arg, slpeel_update_phi_nodes_for_loops,
748         slpeel_update_phi_nodes_for_guard2): Use new exits.
749         (vect_do_peeling): Update bookkeeping to keep track of exits.
750         * tree-vect-loop.cc (vect_get_loop_niters): Explicitly take exit to
751         analyze.
752         (vec_init_loop_exit_info): New.
753         (_loop_vec_info::_loop_vec_info): Initialize vec_loop_iv,
754         vec_epilogue_loop_iv, scalar_loop_iv.
755         (vect_analyze_loop_form): Initialize exits.
756         (vect_create_loop_vinfo): Set main exit.
757         (vect_create_epilog_for_reduction, vectorizable_live_operation,
758         vect_transform_loop): Use it.
759         (scale_profile_for_vect_loop): Explicitly take exit to scale.
760         * tree-vectorizer.cc (set_uid_loop_bbs): Initialize loop exit.
761         * tree-vectorizer.h (LOOP_VINFO_IV_EXIT, LOOP_VINFO_EPILOGUE_IV_EXIT,
762         LOOP_VINFO_SCALAR_IV_EXIT): New.
763         (struct loop_vec_info): Add vec_loop_iv, vec_epilogue_loop_iv,
764         scalar_loop_iv.
765         (vect_set_loop_condition, slpeel_can_duplicate_loop_p,
766         slpeel_tree_duplicate_loop_to_edge_cfg): Take explicit exits.
767         (vec_init_loop_exit_info): New.
768         (struct vect_loop_form_info): Add loop_exit.
770 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
772         * tree-vect-stmts.cc (vectorizable_comparison): Refactor, splitting body
773         to ...
774         (vectorizable_comparison_1): ...This.
776 2023-10-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
778         * config/riscv/riscv-v.cc (shuffle_consecutive_patterns): New function.
779         (expand_vec_perm_const_1): Add consecutive pattern recognition.
781 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
783         * common/config/i386/cpuinfo.h (get_intel_cpu): Add Panther
784         Lake.
785         * common/config/i386/i386-common.cc (processor_name):
786         Ditto.
787         (processor_alias_table): Ditto.
788         * common/config/i386/i386-cpuinfo.h (enum processor_types):
789         Add INTEL_PANTHERLAKE.
790         * config.gcc: Add -march=pantherlake.
791         * config/i386/driver-i386.cc (host_detect_local_cpu): Refactor
792         the if clause. Handle pantherlake.
793         * config/i386/i386-c.cc (ix86_target_macros_internal):
794         Handle pantherlake.
795         * config/i386/i386-options.cc (processor_cost_table): Ditto.
796         (m_PANTHERLAKE): New.
797         (m_CORE_HYBRID): Add pantherlake.
798         * config/i386/i386.h (enum processor_type): Ditto.
799         * doc/extend.texi: Ditto.
800         * doc/invoke.texi: Ditto.
802 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
804         * config/i386/i386-options.cc (m_CORE_HYBRID): New.
805         * config/i386/x86-tune.def: Replace hybrid client tune to
806         m_CORE_HYBRID.
808 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
810         * common/config/i386/cpuinfo.h
811         (get_intel_cpu): Handle Clearwater Forest.
812         * common/config/i386/i386-common.cc (processor_name):
813         Add Clearwater Forest.
814         (processor_alias_table): Ditto.
815         * common/config/i386/i386-cpuinfo.h (enum processor_types):
816         Add INTEL_CLEARWATERFOREST.
817         * config.gcc: Add -march=clearwaterforest.
818         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
819         clearwaterforest.
820         * config/i386/i386-c.cc (ix86_target_macros_internal): Ditto.
821         * config/i386/i386-options.cc (processor_cost_table): Ditto.
822         (m_CLEARWATERFOREST): New.
823         (m_CORE_ATOM): Add clearwaterforest.
824         * config/i386/i386.h (enum processor_type): Ditto.
825         * doc/extend.texi: Ditto.
826         * doc/invoke.texi: Ditto.
828 2023-10-18  liuhongt  <hongtao.liu@intel.com>
830         * config/i386/mmx.md (fma<mode>4): New expander.
831         (fms<mode>4): Ditto.
832         (fnma<mode>4): Ditto.
833         (fnms<mode>4): Ditto.
834         (vec_fmaddsubv4hf4): Ditto.
835         (vec_fmsubaddv4hf4): Ditto.
837 2023-10-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
839         PR target/111832
840         * config/riscv/riscv-vector-costs.cc (get_biggest_mode): New function.
842 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
844         * config/aarch64/aarch64.cc (aarch64_layout_frame): Don't make
845         the position of the LR save slot dependent on stack clash
846         protection unless shadow call stacks are enabled.
848 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
850         * config/aarch64/aarch64.h (aarch64_frame): Add vectors that
851         store the list saved GPRs, FPRs and predicate registers.
852         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize
853         the lists of saved registers.  Use them to choose push candidates.
854         Invalidate pop candidates if we're not going to do a pop.
855         (aarch64_next_callee_save): Delete.
856         (aarch64_save_callee_saves): Take a list of registers,
857         rather than a range.  Make !skip_wb select only write-back
858         candidates.
859         (aarch64_expand_prologue): Update calls accordingly.
860         (aarch64_restore_callee_saves): Take a list of registers,
861         rather than a range.  Always skip pop candidates.  Also skip
862         LR if shadow call stacks are enabled.
863         (aarch64_expand_epilogue): Update calls accordingly.
865 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
867         * cfgbuild.h (find_sub_basic_blocks): Declare.
868         * cfgbuild.cc (update_profile_for_new_sub_basic_block): New function,
869         split out from...
870         (find_many_sub_basic_blocks): ...here.
871         (find_sub_basic_blocks): New function.
872         * function.cc (thread_prologue_and_epilogue_insns): Handle
873         epilogues that contain jumps.
875 2023-10-17  Andrew Pinski  <apinski@marvell.com>
877         PR tree-optimization/110817
878         * tree-ssanames.cc (ssa_name_has_boolean_range): Remove the
879         check for boolean type as they don't have "[0,1]" range.
881 2023-10-17  Andrew Pinski  <pinskia@gmail.com>
883         PR tree-optimization/111432
884         * match.pd (`a & (x | CST)`): New pattern.
886 2023-10-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
888         * tree-cfg.cc (move_sese_region_to_fn): Initialize profile_count for
889         new basic block.
891 2023-10-17  Richard Biener  <rguenther@suse.de>
893         PR tree-optimization/111846
894         * tree-vectorizer.h (_slp_tree::simd_clone_info): Add.
895         (SLP_TREE_SIMD_CLONE_INFO): New.
896         * tree-vect-slp.cc (_slp_tree::_slp_tree): Initialize
897         SLP_TREE_SIMD_CLONE_INFO.
898         (_slp_tree::~_slp_tree): Release it.
899         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Use
900         SLP_TREE_SIMD_CLONE_INFO or STMT_VINFO_SIMD_CLONE_INFO
901         dependent on if we're doing SLP.
903 2023-10-17  Jakub Jelinek  <jakub@redhat.com>
905         * wide-int-print.h (print_dec_buf_size): For length, divide number
906         of bits by 3 and add 3 instead of division by 4 and adding 4.
907         * wide-int-print.cc (print_decs): Remove superfluous ()s.  Don't call
908         print_hex, instead call print_decu on either negated value after
909         printing - or on wi itself.
910         (print_decu): Don't call print_hex, instead print even large numbers
911         decimally.
912         (pp_wide_int_large): Assume len from print_dec_buf_size is big enough
913         even if it returns false.
914         * pretty-print.h (pp_wide_int): Use print_dec_buf_size to check if
915         pp_wide_int_large should be used.
916         * tree-pretty-print.cc (dump_generic_node): Use print_hex_buf_size
917         to compute needed buffer size.
919 2023-10-17  Richard Biener  <rguenther@suse.de>
921         PR middle-end/111818
922         * tree-ssa.cc (maybe_optimize_var): When clearing
923         DECL_NOT_GIMPLE_REG_P always rewrite into SSA.
925 2023-10-17  Richard Biener  <rguenther@suse.de>
927         PR tree-optimization/111807
928         * tree-sra.cc (build_ref_for_model): Only call
929         build_reconstructed_reference when the offsets are the same.
931 2023-10-17  Vineet Gupta  <vineetg@rivosinc.com>
933         PR target/111466
934         * expr.cc (expand_expr_real_2): Do not clear SUBREG_PROMOTED_VAR_P.
936 2023-10-17  Chenghui Pan  <panchenghui@loongson.cn>
938         * config/loongarch/loongarch.cc (loongarch_expand_vector_group_init):
939         fix impl related to vec_initv32qiv16qi template to avoid ICE.
941 2023-10-17  Lulu Cheng  <chenglulu@loongson.cn>
942             Chenghua Xu  <xuchenghua@loongson.cn>
944         * config/loongarch/loongarch.h (ASM_OUTPUT_ALIGN_WITH_NOP):
945         Delete.
947 2023-10-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
949         * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Fix big LMUL issue.
950         (get_store_value): New function.
952 2023-10-16  Jeff Law  <jlaw@ventanamicro.com>
954         * explow.cc (probe_stack_range): Handle case when expand_binop
955         does not construct its result in the expected location.
957 2023-10-16  David Malcolm  <dmalcolm@redhat.com>
959         * diagnostic.cc (diagnostic_initialize): When LANG=C, update
960         default for -fdiagnostics-text-art-charset from emoji to ascii.
961         * doc/invoke.texi (fdiagnostics-text-art-charset): Document the above.
963 2023-10-16  David Malcolm  <dmalcolm@redhat.com>
965         * diagnostic.cc (diagnostic_initialize): Ensure
966         context->extra_output_kind is initialized.
968 2023-10-16  Uros Bizjak  <ubizjak@gmail.com>
970         * config/i386/i386.cc (ix86_can_inline_p):
971         Handle CM_LARGE and CM_LARGE_PIC.
972         (x86_elf_aligned_decl_common): Ditto.
973         (x86_output_aligned_bss): Ditto.
974         * config/i386/i386.opt: Update doc for -mlarge-data-threshold=.
975         * doc/invoke.texi: Update doc for -mlarge-data-threshold=.
977 2023-10-16  Christoph Müllner  <christoph.muellner@vrull.eu>
979         * config/riscv/riscv-protos.h (emit_block_move): Remove redundant
980         prototype.  Improve comment.
981         * config/riscv/riscv.cc (riscv_block_move_straight): Move from riscv.cc
982         into riscv-string.cc.
983         (riscv_adjust_block_mem, riscv_block_move_loop): Likewise.
984         (riscv_expand_block_move): Likewise.
985         * config/riscv/riscv-string.cc (riscv_block_move_straight): Add moved
986         function.
987         (riscv_adjust_block_mem, riscv_block_move_loop): Likewise.
988         (riscv_expand_block_move): Likewise.
990 2023-10-16  Manolis Tsamis  <manolis.tsamis@vrull.eu>
992         * Makefile.in: Add fold-mem-offsets.o.
993         * passes.def: Schedule a new pass.
994         * tree-pass.h (make_pass_fold_mem_offsets): Declare.
995         * common.opt: New options.
996         * doc/invoke.texi: Document new option.
997         * fold-mem-offsets.cc: New file.
999 2023-10-16  Andrew Pinski  <pinskia@gmail.com>
1001         PR tree-optimization/101541
1002         * match.pd (A CMP 0 ? A : -A): Improve
1003         using bitwise_equal_p.
1005 2023-10-16  Andrew Pinski  <pinskia@gmail.com>
1007         PR tree-optimization/31531
1008         * match.pd (~X op ~Y): Allow for an optional nop convert.
1009         (~X op C): Likewise.
1011 2023-10-16  Roger Sayle  <roger@nextmovesoftware.com>
1013         * config/arc/arc.md (*ashlsi3_1): New pre-reload splitter to
1014         use bset dst,0,src to implement 1<<x on !TARGET_BARREL_SHIFTER.
1016 2023-10-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
1018         * config/s390/vector.md (popcountv8hi2_vx): Sign extend each
1019         unsigned vector element.
1021 2023-10-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1023         * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Use VLS modes.
1025 2023-10-16  Jiufu Guo  <guojiufu@linux.ibm.com>
1027         * fold-const.cc (expr_not_equal_to): Replace get_global_range_query
1028         by get_range_query.
1029         * gimple-fold.cc (size_must_be_zero_p): Likewise.
1030         * gimple-range-fold.cc (fur_source::fur_source): Likewise.
1031         * gimple-ssa-warn-access.cc (check_nul_terminated_array): Likewise.
1032         * tree-dfa.cc (get_ref_base_and_extent): Likewise.
1034 2023-10-16  liuhongt  <hongtao.liu@intel.com>
1036         * config/i386/mmx.md (V2FI_32): New mode iterator
1037         (movd_v2hf_to_sse): Rename to ..
1038         (movd_<mode>_to_sse): .. this.
1039         (movd_v2hf_to_sse_reg): Rename to ..
1040         (movd_<mode>_to_sse_reg): .. this.
1041         (fix<fixunssuffix>_trunc<mode><mmxintvecmodelower>2): New
1042         expander.
1043         (fix<fixunssuffix>_truncv2hfv2si2): Ditto.
1044         (float<floatunssuffix><mmxintvecmodelower><mode>2): Ditto.
1045         (float<floatunssuffix>v2siv2hf2): Ditto.
1046         (extendv2hfv2sf2): Ditto.
1047         (truncv2sfv2hf2): Ditto.
1048         * config/i386/sse.md (*vec_concatv8hf_movss): Rename to ..
1049         (*vec_concat<mode>_movss): .. this.
1051 2023-10-16  liuhongt  <hongtao.liu@intel.com>
1053         * config/i386/i386-expand.cc (ix86_sse_copysign_to_positive):
1054         Handle HFmode.
1055         (ix86_expand_round_sse4): Ditto.
1056         * config/i386/i386.md (roundhf2): New expander.
1057         (lroundhf<mode>2): Ditto.
1058         (lrinthf<mode>2): Ditto.
1059         (l<rounding_insn>hf<mode>2): Ditto.
1060         * config/i386/mmx.md (sqrt<mode>2): Ditto.
1061         (btrunc<mode>2): Ditto.
1062         (nearbyint<mode>2): Ditto.
1063         (rint<mode>2): Ditto.
1064         (lrint<mode><mmxintvecmodelower>2): Ditto.
1065         (floor<mode>2): Ditto.
1066         (lfloor<mode><mmxintvecmodelower>2): Ditto.
1067         (ceil<mode>2): Ditto.
1068         (lceil<mode><mmxintvecmodelower>2): Ditto.
1069         (round<mode>2): Ditto.
1070         (lround<mode><mmxintvecmodelower>2): Ditto.
1071         * config/i386/sse.md (lrint<mode><sseintvecmodelower>2): Ditto.
1072         (lfloor<mode><sseintvecmodelower>2): Ditto.
1073         (lceil<mode><sseintvecmodelower>2): Ditto.
1074         (lround<mode><sseintvecmodelower>2): Ditto.
1075         (sse4_1_round<ssescalarmodesuffix>): Extend to V8HF.
1076         (round<mode>2): Extend to V8HF/V16HF/V32HF.
1078 2023-10-15  Tobias Burnus  <tobias@codesourcery.com>
1080         * doc/invoke.texi (-fopenacc, -fopenmp, -fopenmp-simd): Use @samp not
1081         @code; document more completely the supported Fortran sentinels.
1083 2023-10-15  Roger Sayle  <roger@nextmovesoftware.com>
1085         * optabs.cc (expand_subword_shift): Call simplify_expand_binop
1086         instead of expand_binop.  Optimize cases (i.e. avoid generating
1087         RTL) when CARRIES or INTO_INPUT is zero.  Use one_cmpl_optab
1088         (i.e. NOT) instead of xor_optab with ~0 to calculate ~OP1.
1090 2023-10-15  Jakub Jelinek  <jakub@redhat.com>
1092         PR tree-optimization/111800
1093         * wide-int-print.h (print_dec_buf_size, print_decs_buf_size,
1094         print_decu_buf_size, print_hex_buf_size): New inline functions.
1095         * wide-int.cc (assert_deceq): Use print_dec_buf_size.
1096         (assert_hexeq): Use print_hex_buf_size.
1097         * wide-int-print.cc (print_decs): Use print_decs_buf_size.
1098         (print_decu): Use print_decu_buf_size.
1099         (print_hex): Use print_hex_buf_size.
1100         (pp_wide_int_large): Use print_dec_buf_size.
1101         * value-range.cc (irange_bitmask::dump): Use print_hex_buf_size.
1102         * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks):
1103         Likewise.
1104         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use
1105         print_dec_buf_size.  Use TYPE_SIGN macro in print_dec call argument.
1107 2023-10-15  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
1109         * combine.cc (simplify_compare_const): Fix handling of unsigned
1110         constants.
1112 2023-10-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1114         * config/riscv/vector-iterators.md: Fix vsingle incorrect attribute for RVVM2x2QI.
1116 2023-10-14  Tobias Burnus  <tobias@codesourcery.com>
1118         * gimplify.cc (gimplify_bind_expr): Handle Fortran's
1119         'omp allocate' for stack variables.
1121 2023-10-14  Jakub Jelinek  <jakub@redhat.com>
1123         PR c/102989
1124         * tree-core.h (struct tree_base): Remove int_length.offset
1125         member, change type of int_length.unextended and int_length.extended
1126         from unsigned char to unsigned short.
1127         * tree.h (TREE_INT_CST_OFFSET_NUNITS): Remove.
1128         (wi::extended_tree <N>::get_len): Don't use TREE_INT_CST_OFFSET_NUNITS,
1129         instead compute it at runtime from TREE_INT_CST_EXT_NUNITS and
1130         TREE_INT_CST_NUNITS.
1131         * tree.cc (wide_int_to_tree_1): Don't assert
1132         TREE_INT_CST_OFFSET_NUNITS value.
1133         (make_int_cst): Don't initialize TREE_INT_CST_OFFSET_NUNITS.
1134         * wide-int.h (WIDE_INT_MAX_ELTS): Change from 255 to 1024.
1135         (WIDEST_INT_MAX_ELTS): Change from 510 to 2048, adjust comment.
1136         (trailing_wide_int_storage): Change m_len type from unsigned char *
1137         to unsigned short *.
1138         (trailing_wide_int_storage::trailing_wide_int_storage): Change second
1139         argument from unsigned char * to unsigned short *.
1140         (trailing_wide_ints): Change m_max_len type from unsigned char to
1141         unsigned short.  Change m_len element type from
1142         struct{unsigned char len;} to unsigned short.
1143         (trailing_wide_ints <N>::operator []): Remove .len from m_len
1144         accesses.
1145         * value-range-storage.h (irange_storage::lengths_address): Change
1146         return type from const unsigned char * to const unsigned short *.
1147         (irange_storage::write_lengths_address): Change return type from
1148         unsigned char * to unsigned short *.
1149         * value-range-storage.cc (irange_storage::write_lengths_address):
1150         Likewise.
1151         (irange_storage::lengths_address): Change return type from
1152         const unsigned char * to const unsigned short *.
1153         (write_wide_int): Change len argument type from unsigned char *&
1154         to unsigned short *&.
1155         (irange_storage::set_irange): Change len variable type from
1156         unsigned char * to unsigned short *.
1157         (read_wide_int): Change len argument type from unsigned char to
1158         unsigned short.  Use trailing_wide_int_storage <unsigned short>
1159         instead of trailing_wide_int_storage and
1160         trailing_wide_int <unsigned short> instead of trailing_wide_int.
1161         (irange_storage::get_irange): Change len variable type from
1162         unsigned char * to unsigned short *.
1163         (irange_storage::size): Multiply n by sizeof (unsigned short)
1164         in len_size variable initialization.
1165         (irange_storage::dump): Change len variable type from
1166         unsigned char * to unsigned short *.
1168 2023-10-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1170         * config/riscv/vector-iterators.md: Remove redundant iterators.
1172 2023-10-13  Andrew MacLeod  <amacleod@redhat.com>
1174         PR tree-optimization/111622
1175         * value-relation.cc (equiv_oracle::add_partial_equiv): Do not
1176         register a partial equivalence if an operand has no uses.
1178 2023-10-13  Richard Biener  <rguenther@suse.de>
1180         PR tree-optimization/111795
1181         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
1182         integer mode mask arguments.
1184 2023-10-13  Richard Biener  <rguenther@suse.de>
1186         * tree-vect-slp.cc (mask_call_maps): New.
1187         (vect_get_operand_map): Handle IFN_MASK_CALL.
1188         (vect_build_slp_tree_1): Likewise.
1189         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
1190         SLP.
1192 2023-10-13  Richard Biener  <rguenther@suse.de>
1194         PR tree-optimization/111779
1195         * tree-sra.cc (sra_handled_bf_read_p): New function.
1196         (build_access_from_expr_1): Handle some BIT_FIELD_REFs.
1197         (sra_modify_expr): Likewise.
1198         (make_fancy_name_1): Skip over BIT_FIELD_REF.
1200 2023-10-13  Richard Biener  <rguenther@suse.de>
1202         PR tree-optimization/111773
1203         * tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Do
1204         not elide noreturn calls that are reflected to the IL.
1206 2023-10-13  Kito Cheng  <kito.cheng@sifive.com>
1208         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Bump
1209         max_power to 64.
1210         * config/riscv/riscv.h (MAX_POLY_VARIANT): New.
1212 2023-10-13  Pan Li  <pan2.li@intel.com>
1214         * config/riscv/autovec.md (lfloor<mode><v_i_l_ll_convert>2): New
1215         pattern for lfloor/lfloorf.
1216         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
1217         (expand_vec_lfloor): New func decl for expanding lfloor.
1218         * config/riscv/riscv-v.cc (expand_vec_lfloor): New func impl
1219         for expanding lfloor.
1221 2023-10-13  Pan Li  <pan2.li@intel.com>
1223         * config/riscv/autovec.md (lceil<mode><v_i_l_ll_convert>2): New
1224         pattern] for lceil/lceilf.
1225         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
1226         (expand_vec_lceil): New func decl for expanding lceil.
1227         * config/riscv/riscv-v.cc (expand_vec_lceil): New func impl
1228         for expanding lceil.
1230 2023-10-12  Michael Meissner  <meissner@linux.ibm.com>
1232         PR target/111778
1233         * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): Protect
1234         code from shifts that are undefined.
1235         (can_be_built_by_li_lis_and_rldicr): Likewise.
1236         (can_be_built_by_li_and_rldic): Protect code from shifts that
1237         undefined.  Also replace uses of 1ULL with HOST_WIDE_INT_1U.
1239 2023-10-12  Alex Coplan  <alex.coplan@arm.com>
1241         * reg-notes.def (NOALIAS): Correct comment.
1243 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
1245         PR bootstrap/111787
1246         * tree.h (wi::int_traits <unextended_tree>::needs_write_val_arg): New
1247         static data member.
1248         (int_traits <extended_tree <N>>::needs_write_val_arg): Likewise.
1249         (wi::ints_for): Provide separate partial specializations for
1250         generic_wide_int <extended_tree <N>> and INL_CONST_PRECISION or that
1251         and CONST_PRECISION, rather than using
1252         int_traits <extended_tree <N> >::precision_type as the second template
1253         argument.
1254         * rtl.h (wi::int_traits <rtx_mode_t>::needs_write_val_arg): New
1255         static data member.
1256         * double-int.h (wi::int_traits <double_int>::needs_write_val_arg):
1257         Likewise.
1259 2023-10-12  Mary Bennett  <mary.bennett@embecosm.com>
1261         PR middle-end/111777
1262         * doc/extend.texi: Change subsubsection to subsection for
1263         CORE-V built-ins.
1265 2023-10-12  Tamar Christina  <tamar.christina@arm.com>
1267         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add undef.
1269 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
1271         * wide-int.h (widest_int_storage <N>::write_val): If l is small
1272         and there is space in u.val array, store a canary value at the
1273         end when checking.
1274         (widest_int_storage <N>::set_len): Check the canary hasn't been
1275         overwritten.
1277 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
1279         PR c/102989
1280         * wide-int.h: Adjust file comment.
1281         (WIDE_INT_MAX_INL_ELTS): Define to former value of WIDE_INT_MAX_ELTS.
1282         (WIDE_INT_MAX_INL_PRECISION): Define.
1283         (WIDE_INT_MAX_ELTS): Change to 255.  Assert that WIDE_INT_MAX_INL_ELTS
1284         is smaller than WIDE_INT_MAX_ELTS.
1285         (RWIDE_INT_MAX_ELTS, RWIDE_INT_MAX_PRECISION, WIDEST_INT_MAX_ELTS,
1286         WIDEST_INT_MAX_PRECISION): Define.
1287         (WI_BINARY_RESULT_VAR, WI_UNARY_RESULT_VAR): Change write_val callers
1288         to pass 0 as a new argument.
1289         (class widest_int_storage): Likewise.
1290         (widest_int, widest2_int): Change typedefs to use widest_int_storage
1291         rather than fixed_wide_int_storage.
1292         (enum wi::precision_type): Add INL_CONST_PRECISION enumerator.
1293         (struct binary_traits): Add partial specializations for
1294         INL_CONST_PRECISION.
1295         (generic_wide_int): Add needs_write_val_arg static data member.
1296         (int_traits): Likewise.
1297         (wide_int_storage): Replace val non-static data member with a union
1298         u of it and HOST_WIDE_INT *valp.  Declare copy constructor, copy
1299         assignment operator and destructor.  Add unsigned int argument to
1300         write_val.
1301         (wide_int_storage::wide_int_storage): Initialize precision to 0
1302         in the default ctor.  Remove unnecessary {}s around STATIC_ASSERTs.
1303         Assert in non-default ctor T's precision_type is not
1304         INL_CONST_PRECISION and allocate u.valp for large precision.  Add
1305         copy constructor.
1306         (wide_int_storage::~wide_int_storage): New.
1307         (wide_int_storage::operator=): Add copy assignment operator.  In
1308         assignment operator remove unnecessary {}s around STATIC_ASSERTs,
1309         assert ctor T's precision_type is not INL_CONST_PRECISION and
1310         if precision changes, deallocate and/or allocate u.valp.
1311         (wide_int_storage::get_val): Return u.valp rather than u.val for
1312         large precision.
1313         (wide_int_storage::write_val): Likewise.  Add an unused unsigned int
1314         argument.
1315         (wide_int_storage::set_len): Use write_val instead of writing val
1316         directly.
1317         (wide_int_storage::from, wide_int_storage::from_array): Adjust
1318         write_val callers.
1319         (wide_int_storage::create): Allocate u.valp for large precisions.
1320         (wi::int_traits <wide_int_storage>::get_binary_precision): New.
1321         (fixed_wide_int_storage::fixed_wide_int_storage): Make default
1322         ctor defaulted.
1323         (fixed_wide_int_storage::write_val): Add unused unsigned int argument.
1324         (fixed_wide_int_storage::from, fixed_wide_int_storage::from_array):
1325         Adjust write_val callers.
1326         (wi::int_traits <fixed_wide_int_storage>::get_binary_precision): New.
1327         (WIDEST_INT): Define.
1328         (widest_int_storage): New template class.
1329         (wi::int_traits <widest_int_storage>): New.
1330         (trailing_wide_int_storage::write_val): Add unused unsigned int
1331         argument.
1332         (wi::get_binary_precision): Use
1333         wi::int_traits <WI_BINARY_RESULT (T1, T2)>::get_binary_precision
1334         rather than get_precision on get_binary_result.
1335         (wi::copy): Adjust write_val callers.  Don't call set_len if
1336         needs_write_val_arg.
1337         (wi::bit_not): If result.needs_write_val_arg, call write_val
1338         again with upper bound estimate of len.
1339         (wi::sext, wi::zext, wi::set_bit): Likewise.
1340         (wi::bit_and, wi::bit_and_not, wi::bit_or, wi::bit_or_not,
1341         wi::bit_xor, wi::add, wi::sub, wi::mul, wi::mul_high, wi::div_trunc,
1342         wi::div_floor, wi::div_ceil, wi::div_round, wi::divmod_trunc,
1343         wi::mod_trunc, wi::mod_floor, wi::mod_ceil, wi::mod_round,
1344         wi::lshift, wi::lrshift, wi::arshift): Likewise.
1345         (wi::bswap, wi::bitreverse): Assert result.needs_write_val_arg
1346         is false.
1347         (gt_ggc_mx, gt_pch_nx): Remove generic template for all
1348         generic_wide_int, instead add functions and templates for each
1349         storage of generic_wide_int.  Make functions for
1350         generic_wide_int <wide_int_storage> and templates for
1351         generic_wide_int <widest_int_storage <N>> deleted.
1352         (wi::mask, wi::shifted_mask): Adjust write_val calls.
1353         * wide-int.cc (zeros): Decrease array size to 1.
1354         (BLOCKS_NEEDED): Use CEIL.
1355         (canonize): Use HOST_WIDE_INT_M1.
1356         (wi::from_buffer): Pass 0 to write_val.
1357         (wi::to_mpz): Use CEIL.
1358         (wi::from_mpz): Likewise.  Pass 0 to write_val.  Use
1359         WIDE_INT_MAX_INL_ELTS instead of WIDE_INT_MAX_ELTS.
1360         (wi::mul_internal): Use WIDE_INT_MAX_INL_PRECISION instead of
1361         MAX_BITSIZE_MODE_ANY_INT in automatic array sizes, for prec
1362         above WIDE_INT_MAX_INL_PRECISION estimate precision from
1363         lengths of operands.  Use XALLOCAVEC allocated buffers for
1364         prec above WIDE_INT_MAX_INL_PRECISION.
1365         (wi::divmod_internal): Likewise.
1366         (wi::lshift_large): For len > WIDE_INT_MAX_INL_ELTS estimate
1367         it from xlen and skip.
1368         (rshift_large_common): Remove xprecision argument, add len
1369         argument with len computed in caller.  Don't return anything.
1370         (wi::lrshift_large, wi::arshift_large): Compute len here
1371         and pass it to rshift_large_common, for lengths above
1372         WIDE_INT_MAX_INL_ELTS using estimations from xlen if possible.
1373         (assert_deceq, assert_hexeq): For lengths above
1374         WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer.
1375         (test_printing): Use WIDE_INT_MAX_INL_PRECISION instead of
1376         WIDE_INT_MAX_PRECISION.
1377         * wide-int-print.h (WIDE_INT_PRINT_BUFFER_SIZE): Use
1378         WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION.
1379         * wide-int-print.cc (print_decs, print_decu, print_hex): For
1380         lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer.
1381         * tree.h (wi::int_traits<extended_tree <N>>): Change precision_type
1382         to INL_CONST_PRECISION for N == ADDR_MAX_PRECISION.
1383         (widest_extended_tree): Use WIDEST_INT_MAX_PRECISION instead of
1384         WIDE_INT_MAX_PRECISION.
1385         (wi::ints_for): Use int_traits <extended_tree <N> >::precision_type
1386         instead of hard coded CONST_PRECISION.
1387         (widest2_int_cst): Use WIDEST_INT_MAX_PRECISION instead of
1388         WIDE_INT_MAX_PRECISION.
1389         (wi::extended_tree <N>::get_len): Use WIDEST_INT_MAX_PRECISION rather
1390         than WIDE_INT_MAX_PRECISION.
1391         (wi::ints_for::zero): Use
1392         wi::int_traits <wi::extended_tree <N> >::precision_type instead of
1393         wi::CONST_PRECISION.
1394         * tree.cc (build_replicated_int_cst): Formatting fix.  Use
1395         WIDE_INT_MAX_INL_ELTS rather than WIDE_INT_MAX_ELTS.
1396         * print-tree.cc (print_node): Don't print TREE_UNAVAILABLE on
1397         INTEGER_CSTs, TREE_VECs or SSA_NAMEs.
1398         * double-int.h (wi::int_traits <double_int>::precision_type): Change
1399         to INL_CONST_PRECISION from CONST_PRECISION.
1400         * poly-int.h (struct poly_coeff_traits): Add partial specialization
1401         for wi::INL_CONST_PRECISION.
1402         * cfgloop.h (bound_wide_int): New typedef.
1403         (struct nb_iter_bound): Change bound type from widest_int to
1404         bound_wide_int.
1405         (struct loop): Change nb_iterations_upper_bound,
1406         nb_iterations_likely_upper_bound and nb_iterations_estimate type from
1407         widest_int to bound_wide_int.
1408         * cfgloop.cc (record_niter_bound): Return early if wi::min_precision
1409         of i_bound is too large for bound_wide_int.  Adjustments for the
1410         widest_int to bound_wide_int type change in non-static data members.
1411         (get_estimated_loop_iterations, get_max_loop_iterations,
1412         get_likely_max_loop_iterations): Adjustments for the widest_int to
1413         bound_wide_int type change in non-static data members.
1414         * tree-vect-loop.cc (vect_transform_loop): Likewise.
1415         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use
1416         XALLOCAVEC allocated buffer for i_bound len above
1417         WIDE_INT_MAX_INL_ELTS.
1418         (record_estimate): Return early if wi::min_precision of i_bound is too
1419         large for bound_wide_int.  Adjustments for the widest_int to
1420         bound_wide_int type change in non-static data members.
1421         (wide_int_cmp): Use bound_wide_int instead of widest_int.
1422         (bound_index): Use bound_wide_int instead of widest_int.
1423         (discover_iteration_bound_by_body_walk): Likewise.  Use
1424         widest_int::from to convert it to widest_int when passed to
1425         record_niter_bound.
1426         (maybe_lower_iteration_bound): Use widest_int::from to convert it to
1427         widest_int when passed to record_niter_bound.
1428         (estimate_numbers_of_iteration): Don't record upper bound if
1429         loop->nb_iterations has too large precision for bound_wide_int.
1430         (n_of_executions_at_most): Use widest_int::from.
1431         * tree-ssa-loop-ivcanon.cc (remove_redundant_iv_tests): Adjust for
1432         the widest_int to bound_wide_int changes.
1433         * match.pd (fold_sign_changed_comparison simplification): Use
1434         wide_int::from on wi::to_wide instead of wi::to_widest.
1435         * value-range.h (irange::maybe_resize): Avoid using memcpy on
1436         non-trivially copyable elements.
1437         * value-range.cc (irange_bitmask::dump): Use XALLOCAVEC allocated
1438         buffer for mask or value len above WIDE_INT_PRINT_BUFFER_SIZE.
1439         * fold-const.cc (fold_convert_const_int_from_int, fold_unary_loc):
1440         Use wide_int::from on wi::to_wide instead of wi::to_widest.
1441         * tree-ssa-ccp.cc (bit_value_binop): Zero extend r1max from width
1442         before calling wi::udiv_trunc.
1443         * lto-streamer-out.cc (output_cfg): Adjustments for the widest_int to
1444         bound_wide_int type change in non-static data members.
1445         * lto-streamer-in.cc (input_cfg): Likewise.
1446         (lto_input_tree_1): Use WIDE_INT_MAX_INL_ELTS rather than
1447         WIDE_INT_MAX_ELTS.  For length above WIDE_INT_MAX_INL_ELTS use
1448         XALLOCAVEC allocated buffer.  Formatting fix.
1449         * data-streamer-in.cc (streamer_read_wide_int,
1450         streamer_read_widest_int): Likewise.
1451         * tree-affine.cc (aff_combination_expand): Use placement new to
1452         construct name_expansion.
1453         (free_name_expansion): Destruct name_expansion.
1454         * gimple-ssa-strength-reduction.cc (struct slsr_cand_d): Change
1455         index type from widest_int to offset_int.
1456         (class incr_info_d): Change incr type from widest_int to offset_int.
1457         (alloc_cand_and_find_basis, backtrace_base_for_ref,
1458         restructure_reference, slsr_process_ref, create_mul_ssa_cand,
1459         create_mul_imm_cand, create_add_ssa_cand, create_add_imm_cand,
1460         slsr_process_add, cand_abs_increment, replace_mult_candidate,
1461         replace_unconditional_candidate, incr_vec_index,
1462         create_add_on_incoming_edge, create_phi_basis_1,
1463         replace_conditional_candidate, record_increment,
1464         record_phi_increments_1, phi_incr_cost_1, phi_incr_cost,
1465         lowest_cost_path, total_savings, ncd_with_phi, ncd_of_cand_and_phis,
1466         nearest_common_dominator_for_cands, insert_initializers,
1467         all_phi_incrs_profitable_1, replace_one_candidate,
1468         replace_profitable_candidates): Use offset_int rather than widest_int
1469         and wi::to_offset rather than wi::to_widest.
1470         * real.cc (real_to_integer): Use WIDE_INT_MAX_INL_ELTS rather than
1471         2 * WIDE_INT_MAX_ELTS and for words above that use XALLOCAVEC
1472         allocated buffer.
1473         * tree-ssa-loop-ivopts.cc (niter_for_exit): Use placement new
1474         to construct tree_niter_desc and destruct it on failure.
1475         (free_tree_niter_desc): Destruct tree_niter_desc if value is non-NULL.
1476         * gengtype.cc (main): Remove widest_int handling.
1477         * graphite-isl-ast-to-gimple.cc (widest_int_from_isl_expr_int): Use
1478         WIDEST_INT_MAX_ELTS instead of WIDE_INT_MAX_ELTS.
1479         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Use
1480         WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION and
1481         assert get_len () fits into it.
1482         * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks):
1483         For mask or value lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC
1484         allocated buffer.
1485         * gimple-ssa-sprintf.cc (adjust_range_for_overflow): Use
1486         wide_int::from on wi::to_wide instead of wi::to_widest.
1487         * omp-general.cc (score_wide_int): New typedef.
1488         (omp_context_compute_score): Use score_wide_int instead of widest_int
1489         and adjust for those changes.
1490         (struct omp_declare_variant_entry): Change score and
1491         score_in_declare_simd_clone non-static data member type from widest_int
1492         to score_wide_int.
1493         (omp_resolve_late_declare_variant, omp_resolve_declare_variant): Use
1494         score_wide_int instead of widest_int and adjust for those changes.
1495         (omp_lto_output_declare_variant_alt): Likewise.
1496         (omp_lto_input_declare_variant_alt): Likewise.
1497         * godump.cc (go_output_typedef): Assert get_len () is smaller than
1498         WIDE_INT_MAX_INL_ELTS.
1500 2023-10-12  Pan Li  <pan2.li@intel.com>
1502         * config/riscv/autovec.md (lround<mode><v_i_l_ll_convert>2): New
1503         pattern for lround/lroundf.
1504         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
1505         (expand_vec_lround): New func decl for expanding lround.
1506         * config/riscv/riscv-v.cc (expand_vec_lround): New func impl
1507         for expanding lround.
1509 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
1511         * dwarf2out.h (wide_int_ptr): Remove.
1512         (dw_wide_int_ptr): New typedef.
1513         (struct dw_val_node): Change type of val_wide from wide_int_ptr
1514         to dw_wide_int_ptr.
1515         (struct dw_wide_int): New type.
1516         (dw_wide_int::elt): New method.
1517         (dw_wide_int::operator ==): Likewise.
1518         * dwarf2out.cc (get_full_len): Change argument type to
1519         const dw_wide_int & from const wide_int &.  Use CEIL.  Call
1520         get_precision method instead of calling wi::get_precision.
1521         (alloc_dw_wide_int): New function.
1522         (add_AT_wide): Change w argument type to const wide_int_ref &
1523         from const wide_int &.  Use alloc_dw_wide_int.
1524         (mem_loc_descriptor, loc_descriptor): Use alloc_dw_wide_int.
1525         (insert_wide_int): Change val argument type to const wide_int_ref &
1526         from const wide_int &.
1527         (add_const_value_attribute): Pass rtx_mode_t temporary directly to
1528         add_AT_wide instead of using a temporary variable.
1530 2023-10-12  Richard Biener  <rguenther@suse.de>
1532         PR tree-optimization/111764
1533         * tree-vect-loop.cc (check_reduction_path): Remove the attempt
1534         to allow x + x via special-casing of assigns.
1536 2023-10-12  Hu, Lin1  <lin1.hu@intel.com>
1538         * common/config/i386/cpuinfo.h (get_available_features):
1539         Detect USER_MSR.
1540         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_USER_MSR_SET): New.
1541         (OPTION_MASK_ISA2_USER_MSR_UNSET): Ditto.
1542         (ix86_handle_option): Handle -musermsr.
1543         * common/config/i386/i386-cpuinfo.h (enum processor_features):
1544         Add FEATURE_USER_MSR.
1545         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for usermsr.
1546         * config.gcc: Add usermsrintrin.h
1547         * config/i386/cpuid.h (bit_USER_MSR): New.
1548         * config/i386/i386-builtin-types.def:
1549         Add DEF_FUNCTION_TYPE (VOID, UINT64, UINT64).
1550         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
1551         Add __builtin_urdmsr and __builtin_uwrmsr.
1552         * config/i386/i386-builtins.h (ix86_builtins):
1553         Add IX86_BUILTIN_URDMSR and IX86_BUILTIN_UWRMSR.
1554         * config/i386/i386-c.cc (ix86_target_macros_internal):
1555         Define __USER_MSR__.
1556         * config/i386/i386-expand.cc (ix86_expand_builtin):
1557         Handle new builtins.
1558         * config/i386/i386-isa.def (USER_MSR): Add DEF_PTA(USER_MSR).
1559         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
1560         Handle usermsr.
1561         * config/i386/i386.md (urdmsr): New define_insn.
1562         (uwrmsr): Ditto.
1563         * config/i386/i386.opt: Add option -musermsr.
1564         * config/i386/x86gprintrin.h: Include usermsrintrin.h
1565         * doc/extend.texi: Document usermsr.
1566         * doc/invoke.texi: Document -musermsr.
1567         * doc/sourcebuild.texi: Document target usermsr.
1568         * config/i386/usermsrintrin.h: New file.
1570 2023-10-12  Yang Yujie  <yangyujie@loongson.cn>
1572         * config.gcc: Add loongarch-driver.h to tm_files.
1573         * config/loongarch/loongarch.h: Do not include loongarch-driver.h.
1574         * config/loongarch/t-loongarch: Append loongarch-multilib.h to $(GTM_H)
1575         instead of $(TM_H) for building generator programs.
1577 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1579         PR target/111367
1580         * config/rs6000/rs6000.md (stack_protect_setsi): Support prefixed
1581         instruction emission and incorporate to stack_protect_set<mode>.
1582         (stack_protect_setdi): Rename to ...
1583         (stack_protect_set<mode>): ... this, adjust constraint.
1584         (stack_protect_testsi): Support prefixed instruction emission and
1585         incorporate to stack_protect_test<mode>.
1586         (stack_protect_testdi): Rename to ...
1587         (stack_protect_test<mode>): ... this, adjust constraint.
1589 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1591         * tree-vect-stmts.cc (vectorizable_store): Consider generated
1592         VEC_PERM_EXPR stmt for VMAT_CONTIGUOUS_REVERSE in costing as
1593         vec_perm.
1595 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1597         * tree-vect-stmts.cc (vect_model_store_cost): Remove.
1598         (vectorizable_store): Adjust the costing for the remaining memory
1599         access types VMAT_CONTIGUOUS{, _DOWN, _REVERSE}.
1601 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1603         * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never
1604         get VMAT_CONTIGUOUS_PERMUTE and remove VMAT_CONTIGUOUS_PERMUTE related
1605         handlings.
1606         (vectorizable_store): Adjust the cost handling on
1607         VMAT_CONTIGUOUS_PERMUTE without calling vect_model_store_cost.
1609 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1611         * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never
1612         get VMAT_LOAD_STORE_LANES.
1613         (vectorizable_store): Adjust the cost handling on VMAT_LOAD_STORE_LANES
1614         without calling vect_model_store_cost.  Factor out new lambda function
1615         update_prologue_cost.
1617 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1619         * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get
1620         VMAT_ELEMENTWISE and VMAT_STRIDED_SLP any more, and remove their
1621         related handlings.
1622         (vectorizable_store): Adjust the cost handling on VMAT_ELEMENTWISE
1623         and VMAT_STRIDED_SLP without calling vect_model_store_cost.
1625 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1627         * tree-vect-stmts.cc (vectorizable_store): Adjust costing on
1628         vectorizable_scan_store without calling vect_model_store_cost
1629         any more.
1631 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1633         * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get
1634         VMAT_GATHER_SCATTER any more, remove VMAT_GATHER_SCATTER related
1635         handlings and the related parameter gs_info.
1636         (vect_build_scatter_store_calls): Add the handlings on costing with
1637         one more argument cost_vec.
1638         (vectorizable_store): Adjust the cost handling on VMAT_GATHER_SCATTER
1639         without calling vect_model_store_cost any more.
1641 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1643         * tree-vect-stmts.cc (vectorizable_store): Move and duplicate the call
1644         to vect_model_store_cost down to some different transform paths
1645         according to the handlings of different vect_memory_access_types
1646         or some special handling need.
1648 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
1650         * tree-vect-stmts.cc (vectorizable_store): Ensure the generated
1651         vector store for some case of VMAT_ELEMENTWISE is supported.
1653 2023-10-12  Mo, Zewei  <zewei.mo@intel.com>
1654             Hu Lin1  <lin1.hu@intel.com>
1655             Hongyu Wang  <hongyu.wang@intel.com>
1657         * config/i386/i386.cc (gen_push2): New function to emit push2
1658         and adjust cfa offset.
1659         (ix86_pro_and_epilogue_can_use_push2_pop2): New function to
1660         determine whether push2/pop2 can be used.
1661         (ix86_compute_frame_layout): Adjust preferred stack boundary
1662         and stack alignment needed for push2/pop2.
1663         (ix86_emit_save_regs): Emit push2 when available.
1664         (ix86_emit_restore_reg_using_pop2): New function to emit pop2
1665         and adjust cfa info.
1666         (ix86_emit_restore_regs_using_pop2): New function to loop
1667         through the saved regs and call above.
1668         (ix86_expand_epilogue): Call ix86_emit_restore_regs_using_pop2
1669         when push2pop2 available.
1670         * config/i386/i386.md (push2_di): New pattern for push2.
1671         (pop2_di): Likewise for pop2.
1673 2023-10-12  Pan Li  <pan2.li@intel.com>
1675         * config/riscv/autovec.md (lrint<mode><vlconvert>2): Rename from.
1676         (lrint<mode><v_i_l_ll_convert>2): Rename to.
1677         * config/riscv/vector-iterators.md: Rename and remove TARGET_64BIT.
1679 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
1681         * config/riscv/riscv-opts.h (TARGET_MIN_VLEN_OPTS): New.
1683 2023-10-11  Jeff Law  <jlaw@ventanamicro.com>
1685         * config/riscv/riscv.md (jump): Adjust sequence to use a "jump"
1686         pseudo op instead of a "call" pseudo op.
1688 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
1690         * config/riscv/riscv-subset.h (riscv_subset_list::parse_single_std_ext):
1691         New.
1692         (riscv_subset_list::parse_single_multiletter_ext): Ditto.
1693         (riscv_subset_list::clone): Ditto.
1694         (riscv_subset_list::parse_single_ext): Ditto.
1695         (riscv_subset_list::set_loc): Ditto.
1696         (riscv_set_arch_by_subset_list): Ditto.
1697         * common/config/riscv/riscv-common.cc
1698         (riscv_subset_list::parse_single_std_ext): New.
1699         (riscv_subset_list::parse_single_multiletter_ext): Ditto.
1700         (riscv_subset_list::clone): Ditto.
1701         (riscv_subset_list::parse_single_ext): Ditto.
1702         (riscv_subset_list::set_loc): Ditto.
1703         (riscv_set_arch_by_subset_list): Ditto.
1705 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
1707         * config/riscv/riscv.cc (riscv_convert_vector_bits): Get setting
1708         from argument rather than get setting from global setting.
1709         (riscv_override_options_internal): New, splited from
1710         riscv_override_options, also take a gcc_options argument.
1711         (riscv_option_override): Splited most part to
1712         riscv_override_options_internal.
1714 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
1716         * doc/options.texi (Mask): Document TARGET_<NAME>_P and
1717         TARGET_<NAME>_OPTS_P.
1718         (InverseMask): Ditto.
1719         * opth-gen.awk (Mask): Generate TARGET_<NAME>_P and
1720         TARGET_<NAME>_OPTS_P macro.
1721         (InverseMask): Ditto.
1723 2023-10-11  Andrew Pinski  <pinskia@gmail.com>
1725         PR tree-optimization/111282
1726         * match.pd (`a & ~(a ^ b)`, `a & (a == b)`,
1727         `a & ((~a) ^ b)`): New patterns.
1729 2023-10-11  Mary Bennett  <mary.bennett@embecosm.com>
1731         * common/config/riscv/riscv-common.cc: Add the XCValu
1732         extension.
1733         * config/riscv/constraints.md: Add builtins for the XCValu
1734         extension.
1735         * config/riscv/predicates.md (immediate_register_operand):
1736         Likewise.
1737         * config/riscv/corev.def: Likewise.
1738         * config/riscv/corev.md: Likewise.
1739         * config/riscv/riscv-builtins.cc (AVAIL): Likewise.
1740         (RISCV_ATYPE_UHI): Likewise.
1741         * config/riscv/riscv-ftypes.def: Likewise.
1742         * config/riscv/riscv.opt: Likewise.
1743         * config/riscv/riscv.cc (riscv_print_operand): Likewise.
1744         * doc/extend.texi: Add XCValu documentation.
1745         * doc/sourcebuild.texi: Likewise.
1747 2023-10-11  Mary Bennett  <mary.bennett@embecosm.com>
1749         * common/config/riscv/riscv-common.cc: Add XCVmac.
1750         * config/riscv/riscv-ftypes.def: Add XCVmac builtins.
1751         * config/riscv/riscv-builtins.cc: Likewise.
1752         * config/riscv/riscv.md: Likewise.
1753         * config/riscv/riscv.opt: Likewise.
1754         * doc/extend.texi: Add XCVmac builtin documentation.
1755         * doc/sourcebuild.texi: Likewise.
1756         * config/riscv/corev.def: New file.
1757         * config/riscv/corev.md: New file.
1759 2023-10-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1761         * config/riscv/autovec.md: Fix index bug.
1762         * config/riscv/riscv-protos.h (gather_scatter_valid_offset_mode_p): New function.
1763         * config/riscv/riscv-v.cc (expand_gather_scatter): Fix index bug.
1764         (gather_scatter_valid_offset_mode_p): New function.
1766 2023-10-11  Pan Li  <pan2.li@intel.com>
1768         * config/riscv/autovec.md (lrint<mode><vlconvert>2): New pattern
1769         for lrint/lintf.
1770         * config/riscv/riscv-protos.h (expand_vec_lrint): New func decl
1771         for expanding lint.
1772         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): New helper func impl
1773         for vfcvt.x.f.v.
1774         (expand_vec_lrint): New function impl for expanding lint.
1775         * config/riscv/vector-iterators.md: New mode attr and iterator.
1777 2023-10-11  Richard Biener  <rguenther@suse.de>
1778             Jakub Jelinek  <jakub@redhat.com>
1780         PR tree-optimization/111519
1781         * tree-ssa-strlen.cc (strlen_pass::count_nonzero_bytes): Add vuse
1782         argument and pass it through to recursive calls and
1783         count_nonzero_bytes_addr calls.  Don't shadow the stmt argument, but
1784         change stmt for gimple_assign_single_p statements for which we don't
1785         immediately punt.
1786         (strlen_pass::count_nonzero_bytes_addr): Add vuse argument and pass
1787         it through to recursive calls and count_nonzero_bytes calls.  Don't
1788         use get_strinfo if gimple_vuse (stmt) is different from vuse.  Don't
1789         shadow the stmt argument.
1791 2023-10-11  Roger Sayle  <roger@nextmovesoftware.com>
1793         PR middle-end/101955
1794         PR tree-optimization/106245
1795         * simplify-rtx.cc (simplify_relational_operation_1): Simplify
1796         the RTL (ne:SI (subreg:QI (ashift:SI x 7) 0) 0) to (and:SI x 1).
1798 2023-10-11  liuhongt  <hongtao.liu@intel.com>
1800         PR target/111745
1801         * config/i386/mmx.md (divv4hf3): Refine predicate of
1802         operands[2] with register_operand.
1804 2023-10-10  Andrew Waterman  <andrew@sifive.com>
1805             Philipp Tomsich  <philipp.tomsich@vrull.eu>
1806             Jeff Law  <jlaw@ventanamicro.com>
1808         * config/riscv/riscv.cc (struct machine_function): Track if a
1809         far-branch/jump is used within a function (and $ra needs to be
1810         saved).
1811         (riscv_print_operand): Implement 'N' (inverse integer branch).
1812         (riscv_far_jump_used_p): Implement.
1813         (riscv_save_return_addr_reg_p): New function.
1814         (riscv_save_reg_p): Use riscv_save_return_addr_reg_p.
1815         * config/riscv/riscv.h (FIXED_REGISTERS): Update $ra.
1816         (CALL_USED_REGISTERS): Update $ra.
1817         * config/riscv/riscv.md: Add new types "ret" and "jalr".
1818         (length attribute): Handle long conditional and unconditional
1819         branches.
1820         (conditional branch pattern): Handle case where jump can not
1821         reach the intended target.
1822         (indirect_jump, tablejump): Use new "jalr" type.
1823         (simple_return): Use new "ret" type.
1824         (simple_return_internal, eh_return_internal): Likewise.
1825         (gpr_restore_return, riscv_mret): Likewise.
1826         (riscv_uret, riscv_sret): Likewise.
1827         * config/riscv/generic.md (generic_branch): Also recognize jalr & ret
1828         types.
1829         * config/riscv/sifive-7.md (sifive_7_jump): Likewise.
1831 2023-10-10  Andrew Pinski  <pinskia@gmail.com>
1833         PR tree-optimization/111679
1834         * match.pd (`a | ((~a) ^ b)`): New pattern.
1836 2023-10-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1838         PR target/111751
1839         * config/riscv/autovec.md: Add VLS BOOL modes.
1841 2023-10-10  Richard Biener  <rguenther@suse.de>
1843         PR tree-optimization/111751
1844         * fold-const.cc (fold_view_convert_expr): Up the buffer size
1845         to 128 bytes.
1846         * tree-ssa-sccvn.cc (visit_reference_op_load): Special case
1847         constants, giving up when re-interpretation to the target type
1848         fails.
1850 2023-10-10  Richard Biener  <rguenther@suse.de>
1852         PR tree-optimization/111751
1853         * tree-ssa-sccvn.cc (visit_reference_op_load): Exempt
1854         BLKmode result from the padding bits check.
1856 2023-10-10  Claudiu Zissulescu  <claziss@gmail.com>
1858         * config/arc/arc.cc (arc_select_cc_mode): Match NEG code with
1859         the first operand.
1860         * config/arc/arc.md (addsi_compare): Make pattern canonical.
1861         (addsi_compare_2): Fix identation, constraint letters.
1862         (addsi_compare_3): Likewise.
1864 2023-10-09  Eugene Rozenfeld  <erozen@microsoft.com>
1866         * auto-profile.cc (afdo_calculate_branch_prob): Fix count comparisons
1867         * tree-vect-loop-manip.cc (vect_do_peeling): Guard against zero count
1868         when scaling loop profile
1870 2023-10-09  Andrew MacLeod  <amacleod@redhat.com>
1872         PR tree-optimization/111694
1873         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Adjust
1874         equivalence range.
1875         * value-relation.cc (adjust_equivalence_range): New.
1876         * value-relation.h (adjust_equivalence_range): New prototype.
1878 2023-10-09  Andrew MacLeod  <amacleod@redhat.com>
1880         * gimple-range-gori.cc (gori_compute::compute_operand1_range): Do
1881         not call get_identity_relation.
1882         (gori_compute::compute_operand2_range): Ditto.
1883         * value-relation.cc (get_identity_relation): Remove.
1884         * value-relation.h (get_identity_relation): Remove protyotype.
1886 2023-10-09  Robin Dapp  <rdapp@ventanamicro.com>
1888         * config/riscv/riscv-cores.def (RISCV_TUNE): Add parameter.
1889         * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type):
1890         Add generic_ooo.
1891         * config/riscv/riscv.cc (riscv_sched_adjust_cost): Implement
1892         scheduler hook.
1893         (TARGET_SCHED_ADJUST_COST): Define.
1894         * config/riscv/riscv.md (no,yes"): Include generic-ooo.md
1895         * config/riscv/riscv.opt: Add -madjust-lmul-cost.
1896         * config/riscv/generic-ooo.md: New file.
1897         * config/riscv/vector.md: Add vsetvl_pre.
1899 2023-10-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1901         * config/riscv/riscv-opts.h (TARGET_VECTOR_MISALIGN_SUPPORTED): New macro.
1902         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Depend on movmisalign pattern.
1903         * config/riscv/vector.md (movmisalign<mode>): New pattern.
1905 2023-10-09  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
1907         * config/riscv/thead.cc (th_mempair_save_regs): Fix missing CFI
1908         directives for store-pair instruction.
1910 2023-10-09  Richard Biener  <rguenther@suse.de>
1912         PR tree-optimization/111715
1913         * alias.cc (reference_alias_ptr_type_1): When we have
1914         a type-punning ref at the base search for the access
1915         path part that's still semantically valid.
1917 2023-10-09  Pan Li  <pan2.li@intel.com>
1919         * config/riscv/riscv-v.cc (shuffle_bswap_pattern): New func impl
1920         for shuffle bswap.
1921         (expand_vec_perm_const_1): Add handling for shuffle bswap pattern.
1923 2023-10-09  Roger Sayle  <roger@nextmovesoftware.com>
1925         * config/i386/i386-expand.cc (ix86_split_ashr): Split shifts by
1926         one into ashr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR
1927         or -Oz.
1928         (ix86_split_lshr): Likewise, split shifts by one bit into
1929         lshr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR or -Oz.
1930         * config/i386/i386.h (TARGET_USE_RCR): New backend macro.
1931         * config/i386/i386.md (rcrsi2): New define_insn for rcrl.
1932         (rcrdi2): New define_insn for rcrq.
1933         (<anyshiftrt><mode>3_carry): New define_insn for right shifts that
1934         set the carry flag from the least significant bit, modelled using
1935         UNSPEC_CC_NE.
1936         * config/i386/x86-tune.def (X86_TUNE_USE_RCR): New tuning parameter
1937         controlling use of rcr 1 vs. shrd, which is significantly faster on
1938         AMD processors.
1940 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
1942         * config/i386/i386.opt: Allow -mno-evex512.
1944 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
1945             Hu, Lin1  <lin1.hu@intel.com>
1947         * config/i386/sse.md (V48H_AVX512VL): Add TARGET_EVEX512.
1948         (VFH): Ditto.
1949         (VF2H): Ditto.
1950         (VFH_AVX512VL): Ditto.
1951         (VHFBF): Ditto.
1952         (VHF_AVX512VL): Ditto.
1953         (VI2H_AVX512VL): Ditto.
1954         (VI2F_256_512): Ditto.
1955         (VF48_I1248): Remove unused iterator.
1956         (VF48H_AVX512VL): Add TARGET_EVEX512.
1957         (VF_AVX512): Remove unused iterator.
1958         (REDUC_PLUS_MODE): Add TARGET_EVEX512.
1959         (REDUC_SMINMAX_MODE): Ditto.
1960         (FMAMODEM): Ditto.
1961         (VFH_SF_AVX512VL): Ditto.
1962         (VEC_PERM_AVX2): Ditto.
1964 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
1965             Hu, Lin1  <lin1.hu@intel.com>
1967         * config/i386/sse.md (VI1_AVX512VL): Add TARGET_EVEX512.
1968         (VI8_FVL): Ditto.
1969         (VI1_AVX512F): Ditto.
1970         (VI1_AVX512VNNI): Ditto.
1971         (VI1_AVX512VL_F): Ditto.
1972         (VI12_VI48F_AVX512VL): Ditto.
1973         (*avx512f_permvar_truncv32hiv32qi_1): Ditto.
1974         (sdot_prod<mode>): Ditto.
1975         (VEC_PERM_AVX2): Ditto.
1976         (VPERMI2): Ditto.
1977         (VPERMI2I): Ditto.
1978         (vpmadd52<vpmadd52type>v8di): Ditto.
1979         (usdot_prod<mode>): Ditto.
1980         (vpdpbusd_v16si): Ditto.
1981         (vpdpbusds_v16si): Ditto.
1982         (vpdpwssd_v16si): Ditto.
1983         (vpdpwssds_v16si): Ditto.
1984         (VI48_AVX512VP2VL): Ditto.
1985         (avx512vp2intersect_2intersectv16si): Ditto.
1986         (VF_AVX512BF16VL): Ditto.
1987         (VF1_AVX512_256): Ditto.
1989 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
1991         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
1992         Make sure there is EVEX512 enabled.
1993         (ix86_expand_vecop_qihi2): Refuse V32QI->V32HI when no EVEX512.
1994         * config/i386/i386.cc (ix86_hard_regno_mode_ok): Disable 64 bit mask
1995         when !TARGET_EVEX512.
1996         * config/i386/i386.md (avx512bw_512): New.
1997         (SWI1248_AVX512BWDQ_64): Add TARGET_EVEX512.
1998         (*zero_extendsidi2): Change isa to avx512bw_512.
1999         (kmov_isa): Ditto.
2000         (*anddi_1): Ditto.
2001         (*andn<mode>_1): Change isa to kmov_isa.
2002         (*<code><mode>_1): Ditto.
2003         (*notxor<mode>_1): Ditto.
2004         (*one_cmpl<mode>2_1): Ditto.
2005         (*one_cmplsi2_1_zext): Change isa to avx512bw_512.
2006         (*ashl<mode>3_1): Change isa to kmov_isa.
2007         (*lshr<mode>3_1): Ditto.
2008         * config/i386/sse.md (VI12HFBF_AVX512VL): Add TARGET_EVEX512.
2009         (VI1248_AVX512VLBW): Ditto.
2010         (VHFBF_AVX512VL): Ditto.
2011         (VI): Ditto.
2012         (VIHFBF): Ditto.
2013         (VI_AVX2): Ditto.
2014         (VI1_AVX512): Ditto.
2015         (VI12_256_512_AVX512VL): Ditto.
2016         (VI2_AVX2_AVX512BW): Ditto.
2017         (VI2_AVX512VNNIBW): Ditto.
2018         (VI2_AVX512VL): Ditto.
2019         (VI2HFBF_AVX512VL): Ditto.
2020         (VI8_AVX2_AVX512BW): Ditto.
2021         (VIMAX_AVX2_AVX512BW): Ditto.
2022         (VIMAX_AVX512VL): Ditto.
2023         (VI12_AVX2_AVX512BW): Ditto.
2024         (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto.
2025         (VI248_AVX512VL): Ditto.
2026         (VI248_AVX512VLBW): Ditto.
2027         (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto.
2028         (VI248_AVX512BW): Ditto.
2029         (VI248_AVX512BW_AVX512VL): Ditto.
2030         (VI248_512): Ditto.
2031         (VI124_256_AVX512F_AVX512BW): Ditto.
2032         (VI_AVX512BW): Ditto.
2033         (VIHFBF_AVX512BW): Ditto.
2034         (SWI1248_AVX512BWDQ): Ditto.
2035         (SWI1248_AVX512BW): Ditto.
2036         (SWI1248_AVX512BWDQ2): Ditto.
2037         (*knotsi_1_zext): Ditto.
2038         (define_split for zero_extend + not): Ditto.
2039         (kunpckdi): Ditto.
2040         (REDUC_SMINMAX_MODE): Ditto.
2041         (VEC_EXTRACT_MODE): Ditto.
2042         (*avx512bw_permvar_truncv16siv16hi_1): Ditto.
2043         (*avx512bw_permvar_truncv16siv16hi_1_hf): Ditto.
2044         (truncv32hiv32qi2): Ditto.
2045         (avx512bw_<code>v32hiv32qi2): Ditto.
2046         (avx512bw_<code>v32hiv32qi2_mask): Ditto.
2047         (avx512bw_<code>v32hiv32qi2_mask_store): Ditto.
2048         (usadv64qi): Ditto.
2049         (VEC_PERM_AVX2): Ditto.
2050         (AVX512ZEXTMASK): Ditto.
2051         (SWI24_MASK): New.
2052         (vec_pack_trunc_<mode>): Change iterator to SWI24_MASK.
2053         (avx512bw_packsswb<mask_name>): Add TARGET_EVEX512.
2054         (avx512bw_packssdw<mask_name>): Ditto.
2055         (avx512bw_interleave_highv64qi<mask_name>): Ditto.
2056         (avx512bw_interleave_lowv64qi<mask_name>): Ditto.
2057         (<mask_codefor>avx512bw_pshuflwv32hi<mask_name>): Ditto.
2058         (<mask_codefor>avx512bw_pshufhwv32hi<mask_name>): Ditto.
2059         (vec_unpacks_lo_di): Ditto.
2060         (SWI48x_MASK): New.
2061         (vec_unpacks_hi_<mode>): Change iterator to SWI48x_MASK.
2062         (avx512bw_umulhrswv32hi3<mask_name>): Add TARGET_EVEX512.
2063         (VI1248_AVX512VL_AVX512BW): Ditto.
2064         (avx512bw_<code>v32qiv32hi2<mask_name>): Ditto.
2065         (*avx512bw_zero_extendv32qiv32hi2_1): Ditto.
2066         (*avx512bw_zero_extendv32qiv32hi2_2): Ditto.
2067         (<insn>v32qiv32hi2): Ditto.
2068         (pbroadcast_evex_isa): Change isa attribute to avx512bw_512.
2069         (VPERMI2): Add TARGET_EVEX512.
2070         (VPERMI2I): Ditto.
2072 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2074         * config/i386/i386-expand.cc (ix86_expand_sse2_mulvxdi3):
2075         Add TARGET_EVEX512 for 512 bit usage.
2076         * config/i386/i386.cc (standard_sse_constant_opcode): Ditto.
2077         * config/i386/sse.md (VF1_VF2_AVX512DQ): Ditto.
2078         (VF1_128_256VL): Ditto.
2079         (VF2_AVX512VL): Ditto.
2080         (VI8_256_512): Ditto.
2081         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
2082         Ditto.
2083         (AVX512_VEC): Ditto.
2084         (AVX512_VEC_2): Ditto.
2085         (VI4F_BRCST32x2): Ditto.
2086         (VI8F_BRCST64x2): Ditto.
2088 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2090         * config/i386/i386-builtins.cc
2091         (ix86_vectorize_builtin_gather): Disable 512 bit gather
2092         when !TARGET_EVEX512.
2093         * config/i386/i386-expand.cc (ix86_valid_mask_cmp_mode):
2094         Add TARGET_EVEX512.
2095         (ix86_expand_int_sse_cmp): Ditto.
2096         (ix86_expand_vector_init_one_nonzero): Disable subroutine
2097         when !TARGET_EVEX512.
2098         (ix86_emit_swsqrtsf): Add TARGET_EVEX512.
2099         (ix86_vectorize_vec_perm_const): Disable subroutine when
2100         !TARGET_EVEX512.
2101         * config/i386/i386.cc
2102         (standard_sse_constant_p): Add TARGET_EVEX512.
2103         (standard_sse_constant_opcode): Ditto.
2104         (ix86_get_ssemov): Ditto.
2105         (ix86_legitimate_constant_p): Ditto.
2106         (ix86_vectorize_builtin_scatter): Diable 512 bit scatter
2107         when !TARGET_EVEX512.
2108         * config/i386/i386.md (avx512f_512): New.
2109         (movxi): Add TARGET_EVEX512.
2110         (*movxi_internal_avx512f): Ditto.
2111         (*movdi_internal): Change alternative 12 to ?Yv. Adjust mode
2112         for alternative 13.
2113         (*movsi_internal): Change alternative 8 to ?Yv. Adjust mode for
2114         alternative 9.
2115         (*movhi_internal): Change alternative 11 to *Yv.
2116         (*movdf_internal): Change alternative 12 to Yv.
2117         (*movsf_internal): Change alternative 5 to Yv. Adjust mode for
2118         alternative 5 and 6.
2119         (*mov<mode>_internal): Change alternative 4 to Yv.
2120         (define_split for convert SF to DF): Add TARGET_EVEX512.
2121         (extendbfsf2_1): Ditto.
2122         * config/i386/predicates.md (bcst_mem_operand): Disable predicate
2123         for 512 bit when !TARGET_EVEX512.
2124         * config/i386/sse.md (VMOVE): Add TARGET_EVEX512.
2125         (V48_AVX512VL): Ditto.
2126         (V48_256_512_AVX512VL): Ditto.
2127         (V48H_AVX512VL): Ditto.
2128         (VI12_AVX512VL): Ditto.
2129         (V): Ditto.
2130         (V_512): Ditto.
2131         (V_256_512): Ditto.
2132         (VF): Ditto.
2133         (VF1_VF2_AVX512DQ): Ditto.
2134         (VFH): Ditto.
2135         (VFB): Ditto.
2136         (VF1): Ditto.
2137         (VF1_AVX2): Ditto.
2138         (VF2): Ditto.
2139         (VF2H): Ditto.
2140         (VF2_512_256): Ditto.
2141         (VF2_512_256VL): Ditto.
2142         (VF_512): Ditto.
2143         (VFB_512): Ditto.
2144         (VI48_AVX512VL): Ditto.
2145         (VI1248_AVX512VLBW): Ditto.
2146         (VF_AVX512VL): Ditto.
2147         (VFH_AVX512VL): Ditto.
2148         (VF1_AVX512VL): Ditto.
2149         (VI): Ditto.
2150         (VIHFBF): Ditto.
2151         (VI_AVX2): Ditto.
2152         (VI8): Ditto.
2153         (VI8_AVX512VL): Ditto.
2154         (VI2_AVX512F): Ditto.
2155         (VI4_AVX512F): Ditto.
2156         (VI4_AVX512VL): Ditto.
2157         (VI48_AVX512F_AVX512VL): Ditto.
2158         (VI8_AVX2_AVX512F): Ditto.
2159         (VI8_AVX_AVX512F): Ditto.
2160         (V8FI): Ditto.
2161         (V16FI): Ditto.
2162         (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto.
2163         (VI248_AVX512VLBW): Ditto.
2164         (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto.
2165         (VI248_AVX512BW): Ditto.
2166         (VI248_AVX512BW_AVX512VL): Ditto.
2167         (VI48_AVX512F): Ditto.
2168         (VI48_AVX_AVX512F): Ditto.
2169         (VI12_AVX_AVX512F): Ditto.
2170         (VI148_512): Ditto.
2171         (VI124_256_AVX512F_AVX512BW): Ditto.
2172         (VI48_512): Ditto.
2173         (VI_AVX512BW): Ditto.
2174         (VIHFBF_AVX512BW): Ditto.
2175         (VI4F_256_512): Ditto.
2176         (VI48F_256_512): Ditto.
2177         (VI48F): Ditto.
2178         (VI12_VI48F_AVX512VL): Ditto.
2179         (V32_512): Ditto.
2180         (AVX512MODE2P): Ditto.
2181         (STORENT_MODE): Ditto.
2182         (REDUC_PLUS_MODE): Ditto.
2183         (REDUC_SMINMAX_MODE): Ditto.
2184         (*andnot<mode>3): Change isa attribute to avx512f_512.
2185         (*andnot<mode>3): Ditto.
2186         (<code><mode>3): Ditto.
2187         (<code>tf3): Ditto.
2188         (FMAMODEM): Add TARGET_EVEX512.
2189         (FMAMODE_AVX512): Ditto.
2190         (VFH_SF_AVX512VL): Ditto.
2191         (avx512f_fix_notruncv16sfv16si<mask_name><round_name>): Ditto.
2192         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):
2193         Ditto.
2194         (avx512f_cvtdq2pd512_2): Ditto.
2195         (avx512f_cvtpd2dq512<mask_name><round_name>): Ditto.
2196         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
2197         Ditto.
2198         (<mask_codefor>avx512f_cvtpd2ps512<mask_name><round_name>): Ditto.
2199         (vec_unpacks_lo_v16sf): Ditto.
2200         (vec_unpacks_hi_v16sf): Ditto.
2201         (vec_unpacks_float_hi_v16si): Ditto.
2202         (vec_unpacks_float_lo_v16si): Ditto.
2203         (vec_unpacku_float_hi_v16si): Ditto.
2204         (vec_unpacku_float_lo_v16si): Ditto.
2205         (vec_pack_sfix_trunc_v8df): Ditto.
2206         (avx512f_vec_pack_sfix_v8df): Ditto.
2207         (<mask_codefor>avx512f_unpckhps512<mask_name>): Ditto.
2208         (<mask_codefor>avx512f_unpcklps512<mask_name>): Ditto.
2209         (<mask_codefor>avx512f_movshdup512<mask_name>): Ditto.
2210         (<mask_codefor>avx512f_movsldup512<mask_name>): Ditto.
2211         (AVX512_VEC): Ditto.
2212         (AVX512_VEC_2): Ditto.
2213         (vec_extract_lo_v64qi): Ditto.
2214         (vec_extract_hi_v64qi): Ditto.
2215         (VEC_EXTRACT_MODE): Ditto.
2216         (<mask_codefor>avx512f_unpckhpd512<mask_name>): Ditto.
2217         (avx512f_movddup512<mask_name>): Ditto.
2218         (avx512f_unpcklpd512<mask_name>): Ditto.
2219         (*<avx512>_vternlog<mode>_all): Ditto.
2220         (*<avx512>_vpternlog<mode>_1): Ditto.
2221         (*<avx512>_vpternlog<mode>_2): Ditto.
2222         (*<avx512>_vpternlog<mode>_3): Ditto.
2223         (avx512f_shufps512_mask): Ditto.
2224         (avx512f_shufps512_1<mask_name>): Ditto.
2225         (avx512f_shufpd512_mask): Ditto.
2226         (avx512f_shufpd512_1<mask_name>): Ditto.
2227         (<mask_codefor>avx512f_interleave_highv8di<mask_name>): Ditto.
2228         (<mask_codefor>avx512f_interleave_lowv8di<mask_name>): Ditto.
2229         (vec_dupv2df<mask_name>): Ditto.
2230         (trunc<pmov_src_lower><mode>2): Ditto.
2231         (*avx512f_<code><pmov_src_lower><mode>2): Ditto.
2232         (*avx512f_vpermvar_truncv8div8si_1): Ditto.
2233         (avx512f_<code><pmov_src_lower><mode>2_mask): Ditto.
2234         (avx512f_<code><pmov_src_lower><mode>2_mask_store): Ditto.
2235         (truncv8div8qi2): Ditto.
2236         (avx512f_<code>v8div16qi2): Ditto.
2237         (*avx512f_<code>v8div16qi2_store_1): Ditto.
2238         (*avx512f_<code>v8div16qi2_store_2): Ditto.
2239         (avx512f_<code>v8div16qi2_mask): Ditto.
2240         (*avx512f_<code>v8div16qi2_mask_1): Ditto.
2241         (*avx512f_<code>v8div16qi2_mask_store_1): Ditto.
2242         (avx512f_<code>v8div16qi2_mask_store_2): Ditto.
2243         (vec_widen_umult_even_v16si<mask_name>): Ditto.
2244         (*vec_widen_umult_even_v16si<mask_name>): Ditto.
2245         (vec_widen_smult_even_v16si<mask_name>): Ditto.
2246         (*vec_widen_smult_even_v16si<mask_name>): Ditto.
2247         (VEC_PERM_AVX2): Ditto.
2248         (one_cmpl<mode>2): Ditto.
2249         (<mask_codefor>one_cmpl<mode>2<mask_name>): Ditto.
2250         (*one_cmpl<mode>2_pternlog_false_dep): Ditto.
2251         (define_split to xor): Ditto.
2252         (*andnot<mode>3): Ditto.
2253         (define_split for ior): Ditto.
2254         (*iornot<mode>3): Ditto.
2255         (*xnor<mode>3): Ditto.
2256         (*<nlogic><mode>3): Ditto.
2257         (<mask_codefor>avx512f_interleave_highv16si<mask_name>): Ditto.
2258         (<mask_codefor>avx512f_interleave_lowv16si<mask_name>): Ditto.
2259         (avx512f_pshufdv3_mask): Ditto.
2260         (avx512f_pshufd_1<mask_name>): Ditto.
2261         (*vec_extractv4ti): Ditto.
2262         (VEXTRACTI128_MODE): Ditto.
2263         (define_split to vec_extract): Ditto.
2264         (VI1248_AVX512VL_AVX512BW): Ditto.
2265         (<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Ditto.
2266         (<insn>v16qiv16si2): Ditto.
2267         (avx512f_<code>v16hiv16si2<mask_name>): Ditto.
2268         (<insn>v16hiv16si2): Ditto.
2269         (avx512f_zero_extendv16hiv16si2_1): Ditto.
2270         (avx512f_<code>v8qiv8di2<mask_name>): Ditto.
2271         (*avx512f_<code>v8qiv8di2<mask_name>_1): Ditto.
2272         (*avx512f_<code>v8qiv8di2<mask_name>_2): Ditto.
2273         (<insn>v8qiv8di2): Ditto.
2274         (avx512f_<code>v8hiv8di2<mask_name>): Ditto.
2275         (<insn>v8hiv8di2): Ditto.
2276         (avx512f_<code>v8siv8di2<mask_name>): Ditto.
2277         (*avx512f_zero_extendv8siv8di2_1): Ditto.
2278         (*avx512f_zero_extendv8siv8di2_2): Ditto.
2279         (<insn>v8siv8di2): Ditto.
2280         (avx512f_roundps512_sfix): Ditto.
2281         (vashrv8di3): Ditto.
2282         (vashrv16si3): Ditto.
2283         (pbroadcast_evex_isa): Change isa attribute to avx512f_512.
2284         (vec_dupv4sf): Add TARGET_EVEX512.
2285         (*vec_dupv4si): Ditto.
2286         (*vec_dupv2di): Ditto.
2287         (vec_dup<mode>): Change isa attribute to avx512f_512.
2288         (VPERMI2): Add TARGET_EVEX512.
2289         (VPERMI2I): Ditto.
2290         (VEC_INIT_MODE): Ditto.
2291         (VEC_INIT_HALF_MODE): Ditto.
2292         (<mask_codefor>avx512f_vcvtph2ps512<mask_name><round_saeonly_name>):
2293         Ditto.
2294         (avx512f_vcvtps2ph512_mask_sae): Ditto.
2295         (<mask_codefor>avx512f_vcvtps2ph512<mask_name><round_saeonly_name>):
2296         Ditto.
2297         (*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
2298         (INT_BROADCAST_MODE): Ditto.
2300 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2302         * config/i386/i386-expand.cc (ix86_broadcast_from_constant):
2303         Disable zmm broadcast for !TARGET_EVEX512.
2304         * config/i386/i386-options.cc (ix86_option_override_internal):
2305         Do not use PVW_512 when no-evex512.
2306         (ix86_simd_clone_adjust): Add evex512 target into string.
2307         * config/i386/i386.cc (type_natural_mode): Report ABI warning
2308         when using zmm register w/o evex512.
2309         (ix86_return_in_memory): Do not allow zmm when !TARGET_EVEX512.
2310         (ix86_hard_regno_mode_ok): Ditto.
2311         (ix86_set_reg_reg_cost): Ditto.
2312         (ix86_rtx_costs): Ditto.
2313         (ix86_vector_mode_supported_p): Ditto.
2314         (ix86_preferred_simd_mode): Ditto.
2315         (ix86_get_mask_mode): Ditto.
2316         (ix86_simd_clone_compute_vecsize_and_simdlen): Disable 512 bit
2317         libmvec call when !TARGET_EVEX512.
2318         (ix86_simd_clone_usable): Ditto.
2319         * config/i386/i386.h (BIGGEST_ALIGNMENT): Disable 512 alignment
2320         when !TARGET_EVEX512
2321         (MOVE_MAX): Do not use PVW_512 when !TARGET_EVEX512.
2322         (STORE_MAX_PIECES): Ditto.
2324 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2326         * config/i386/i386-builtin.def (BDESC): Add
2327         OPTION_MASK_ISA2_EVEX512.
2329 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2331         * config/i386/i386-builtin.def (BDESC): Add
2332         OPTION_MASK_ISA2_EVEX512.
2334 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2336         * config/i386/i386-builtin.def (BDESC): Add
2337         OPTION_MASK_ISA2_EVEX512.
2339 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2341         * config/i386/i386-builtin.def (BDESC): Add
2342         OPTION_MASK_ISA2_EVEX512.
2344 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2346         * config/i386/i386-builtin.def (BDESC): Add
2347         OPTION_MASK_ISA2_EVEX512.
2348         * config/i386/i386-builtins.cc
2349         (ix86_init_mmx_sse_builtins): Ditto.
2351 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2352             Hu, Lin1  <lin1.hu@intel.com>
2354         * config/i386/avx512fp16intrin.h: Add evex512 target for 512 bit
2355         intrins.
2357 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2359         * config.gcc: Add avx512bitalgvlintrin.h.
2360         * config/i386/avx5124fmapsintrin.h: Add evex512 target for 512 bit
2361         intrins.
2362         * config/i386/avx5124vnniwintrin.h: Ditto.
2363         * config/i386/avx512bf16intrin.h: Ditto.
2364         * config/i386/avx512bitalgintrin.h: Add evex512 target for 512 bit
2365         intrins. Split 128/256 bit intrins to avx512bitalgvlintrin.h.
2366         * config/i386/avx512erintrin.h: Add evex512 target for 512 bit
2367         intrins
2368         * config/i386/avx512ifmaintrin.h: Ditto
2369         * config/i386/avx512pfintrin.h: Ditto
2370         * config/i386/avx512vbmi2intrin.h: Ditto.
2371         * config/i386/avx512vbmiintrin.h: Ditto.
2372         * config/i386/avx512vnniintrin.h: Ditto.
2373         * config/i386/avx512vp2intersectintrin.h: Ditto.
2374         * config/i386/avx512vpopcntdqintrin.h: Ditto.
2375         * config/i386/gfniintrin.h: Ditto.
2376         * config/i386/immintrin.h: Add avx512bitalgvlintrin.h.
2377         * config/i386/vaesintrin.h: Add evex512 target for 512 bit intrins.
2378         * config/i386/vpclmulqdqintrin.h: Ditto.
2379         * config/i386/avx512bitalgvlintrin.h: New.
2381 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2383         * config/i386/avx512bwintrin.h: Add evex512 target for 512 bit
2384         intrins.
2386 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2388         * config/i386/avx512dqintrin.h: Add evex512 target for 512 bit
2389         intrins.
2391 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2393         * config/i386/avx512fintrin.h: Add evex512 target for 512 bit intrins.
2395 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
2397         * common/config/i386/i386-common.cc
2398         (OPTION_MASK_ISA2_EVEX512_SET): New.
2399         (OPTION_MASK_ISA2_EVEX512_UNSET): Ditto.
2400         (ix86_handle_option): Handle EVEX512.
2401         * config/i386/i386-c.cc
2402         (ix86_target_macros_internal): Handle EVEX512. Add __EVEX256__
2403         when AVX512VL is set.
2404         * config/i386/i386-options.cc: (isa2_opts): Handle EVEX512.
2405         (ix86_valid_target_attribute_inner_p): Ditto.
2406         (ix86_option_override_internal): Set EVEX512 target if it is not
2407         explicitly set when AVX512 is enabled. Disable
2408         AVX512{PF,ER,4VNNIW,4FAMPS} for -mno-evex512.
2409         * config/i386/i386.opt: Add mevex512. Temporaily RejectNegative.
2411 2023-10-09  Haochen Gui  <guihaoc@gcc.gnu.org>
2413         PR target/88558
2414         * config/rs6000/rs6000.md (lrint<mode>di2): Remove TARGET_FPRND
2415         from insn condition.
2416         (lrint<mode>si2): New insn pattern for 32bit lrint.
2418 2023-10-09  Haochen Gui  <guihaoc@gcc.gnu.org>
2420         PR target/88558
2421         * config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached):
2422         Enable SImode on FP registers for P7.
2423         * config/rs6000/rs6000.md (*movsi_internal1): Add fmr for SImode
2424         move between FP registers.  Set attribute isa of stfiwx to "*"
2425         and attribute of stxsiwx to "p7".
2427 2023-10-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
2429         * config/s390/s390.md: Make use of new copysign RTL.
2431 2023-10-09  Hongyu Wang  <hongyu.wang@intel.com>
2433         * config/i386/sse.md (vec_concatv2di): Replace constraint "m"
2434         with "jm" for alternative 0 and 1 of operand 2.
2435         (sse4_1_<code><mode>3<mask_name>): Replace constraint "Bm" with
2436         "ja" for alternative 0 and 1 of operand2.
2438 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
2440         PR analyzer/111155
2441         * text-art/table.cc (table::maybe_set_cell_span): New.
2442         (table::add_other_table): New.
2443         * text-art/table.h (class table::cell_placement): Add class table
2444         as a friend.
2445         (table::add_rows): New.
2446         (table::add_row): Reimplement in terms of add_rows.
2447         (table::maybe_set_cell_span): New decl.
2448         (table::add_other_table): New decl.
2449         * text-art/types.h (operator+): New operator for rect + coord.
2451 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
2453         * genmatch.cc (main): Update for "m_" prefix of some fields of
2454         line_maps.
2455         * input.cc (make_location): Update for removal of
2456         COMBINE_LOCATION_DATA.
2457         (dump_line_table_statistics): Update for "m_" prefix of some
2458         fields of line_maps.
2459         (location_with_discriminator): Update for removal of
2460         COMBINE_LOCATION_DATA.
2461         (line_table_test::line_table_test): Update for "m_" prefix of some
2462         fields of line_maps.
2463         * toplev.cc (general_init): Likewise.
2464         * tree.cc (set_block): Update for removal of
2465         COMBINE_LOCATION_DATA.
2466         (set_source_range): Likewise.
2468 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
2470         * input.cc (make_location): Move implementation to
2471         line_maps::make_location.
2473 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
2475         PR driver/111700
2476         * input.cc (file_cache::add_file): Update leading comment to
2477         clarify that it can fail.
2478         (file_cache::lookup_or_add_file): Likewise.
2479         (file_cache::get_source_file_content): Gracefully handle
2480         lookup_or_add_file failing.
2482 2023-10-08  liuhongt  <hongtao.liu@intel.com>
2484         * config/i386/i386.cc (ix86_build_const_vector): Handle V2HF
2485         and V4HFmode.
2486         (ix86_build_signbit_mask): Ditto.
2487         * config/i386/mmx.md (mmxintvecmode): Ditto.
2488         (<code><mode>2): New define_expand.
2489         (*mmx_<code><mode>): New define_insn_and_split.
2490         (*mmx_nabs<mode>2): Ditto.
2491         (*mmx_andnot<mode>3): New define_insn.
2492         (<code><mode>3): Ditto.
2493         (copysign<mode>3): New define_expand.
2494         (xorsign<mode>3): Ditto.
2495         (signbit<mode>2): Ditto.
2497 2023-10-08  liuhongt  <hongtao.liu@intel.com>
2499         * config/i386/mmx.md (VHF_32_64): New mode iterator.
2500         (<insn><mode>3): New define_expand, merged from ..
2501         (<insn>v4hf3): .. this and
2502         (<insn>v2hf3): .. this.
2503         (movd_v2hf_to_sse_reg): New define_expand, splitted from ..
2504         (movd_v2hf_to_sse): .. this.
2505         (<code><mode>3): New define_expand.
2507 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
2509         * config/rs6000/rs6000.cc (can_be_built_by_li_and_rldic): New function.
2510         (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rldic.
2512 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
2514         * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): New
2515         function.
2516         (can_be_built_by_li_lis_and_rldicr): New function.
2517         (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rldicr and
2518         can_be_built_by_li_lis_and_rldicl.
2520 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
2522         * config/rs6000/rs6000.cc (can_be_rotated_to_negative_lis): New
2523         function.
2524         (can_be_built_by_li_and_rotldi): Rename to ...
2525         (can_be_built_by_li_lis_and_rotldi): ... this function.
2526         (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rotldi.
2528 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
2530         * config/rs6000/rs6000.cc (can_be_built_by_li_and_rotldi): New function.
2531         (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rotldi.
2533 2023-10-08  Yanzhang Wang  <yanzhang.wang@intel.com>
2535         * config/riscv/linux.h: Pass the static-pie specific options to
2536         the linker.
2538 2023-10-07  Saurabh Jha  <saurabh.jha@arm.com>
2540         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add support for
2541         cortex-x4 core.
2542         * config/aarch64/aarch64-tune.md: Regenerated.
2543         * doc/invoke.texi: Add command-line option for cortex-x4 core.
2545 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2546             Hongyu Wang  <hongyu.wang@intel.com>
2547             Hongtao Liu  <hongtao.liu@intel.com>
2549         * config/i386/constraints.md (jb): New constraint for vsib memory
2550         that does not allow gpr32.
2551         * config/i386/i386.md: (setcc_<mode>_sse): Replace m to jm for avx
2552         alternative and set attr_gpr32 to 0.
2553         (movmsk_df): Split avx/noavx alternatives and  replace "r" to "jr" for
2554         avx alternative.
2555         (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace
2556         "m/Bm" to "jm/ja" for avx alternative, set its gpr32 attr to 0.
2557         (*rsqrtsf2_sse): Likewise.
2558         * config/i386/mmx.md (mmx_pmovmskb): Split alternative 1 to
2559         avx/noavx and assign jr/r constraint to dest.
2560         * config/i386/sse.md (<sse>_movmsk<ssemodesuffix><avxsizesuffix>):
2561         Split avx/noavx alternatives and replace "r" to "jr" for avx alternative.
2562         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): Likewise.
2563         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_lt): Likewise.
2564         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): Likewise.
2565         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_shift): Likewise.
2566         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): Likewise.
2567         (<sse2_avx2>_pmovmskb): Likewise.
2568         (*<sse2_avx2>_pmovmskb_zext): Likewise.
2569         (*sse2_pmovmskb_ext): Likewise.
2570         (*<sse2_avx2>_pmovmskb_lt): Likewise.
2571         (*<sse2_avx2>_pmovmskb_zext_lt): Likewise.
2572         (*sse2_pmovmskb_ext_lt): Likewise.
2573         (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace
2574         "m/Bm" to "jm/ja" for avx alternative, set its attr_gpr32 to 0.
2575         (sse_vmrcpv4sf2): Likewise.
2576         (*sse_vmrcpv4sf2): Likewise.
2577         (rsqrt<mode>2): Likewise.
2578         (sse_vmrsqrtv4sf2): Likewise.
2579         (*sse_vmrsqrtv4sf2): Likewise.
2580         (avx_h<insn>v4df3): Likewise.
2581         (sse3_hsubv2df3): Likewise.
2582         (avx_h<insn>v8sf3): Likewise.
2583         (sse3_h<insn>v4sf3): Likewise.
2584         (<sse3>_lddqu<avxsizesuffix>): Likewise.
2585         (avx_cmp<mode>3): Likewise.
2586         (avx_vmcmp<mode>3): Likewise.
2587         (*sse2_gt<mode>3): Likewise.
2588         (sse_ldmxcsr): Likewise.
2589         (sse_stmxcsr): Likewise.
2590         (avx_vtest<ssemodesuffix><avxsizesuffix>): Replace m to jm for
2591         avx alternative and set attr_gpr32 to 0.
2592         (avx2_permv2ti): Likewise.
2593         (*avx_vperm2f128<mode>_full): Likewise.
2594         (*avx_vperm2f128<mode>_nozero): Likewise.
2595         (vec_set_lo_v32qi): Likewise.
2596         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Likewise.
2597         (<avx_avx2>_maskstore<ssemodesuffix><avxsi)zesuffix>: Likewise.
2598         (avx_cmp<mode>3): Likewise.
2599         (avx_vmcmp<mode>3): Likewise.
2600         (*<sse>_maskcmp<mode>3_comm): Likewise.
2601         (*avx2_gathersi<VEC_GATHER_MODE:mode>): Replace Tv to jb and set
2602         attr_gpr32 to 0.
2603         (*avx2_gathersi<VEC_GATHER_MODE:mode>_2): Likewise.
2604         (*avx2_gatherdi<VEC_GATHER_MODE:mode>): Likewise.
2605         (*avx2_gatherdi<VEC_GATHER_MODE:mode>_2): Likewise.
2606         (*avx2_gatherdi<VI4F_256:mode>_3): Likewise.
2607         (*avx2_gatherdi<VI4F_256:mode>_4): Likewise.
2608         (avx_vbroadcastf128_<mode>): Restrict non-egpr alternative to
2609         noavx512vl, set its constraint to jm and set attr_gpr32 to 0.
2610         (vec_set_lo_<mode><mask_name>): Likewise.
2611         (vec_set_lo_<mode><mask_name>): Likewise for SF/SI modes.
2612         (vec_set_hi_<mode><mask_name>): Likewise.
2613         (vec_set_hi_<mode><mask_name>): Likewise for SF/SI modes.
2614         (vec_set_hi_<mode>): Likewise.
2615         (vec_set_lo_<mode>): Likewise.
2616         (avx2_set_hi_v32qi): Likewise.
2618 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2619             Hongyu Wang  <hongyu.wang@intel.com>
2620             Hongtao Liu  <hongtao.liu@intel.com>
2622         * config/i386/i386.md (*movhi_internal): Split out non-gpr
2623         supported pextrw with mem constraint to avx/noavx alternatives,
2624         set jm and attr gpr32 0 to the noavx alternative.
2625         (*mov<mode>_internal): Likewise.
2626         * config/i386/mmx.md (mmx_pshufbv8qi3): Change "r/m/Bm" to
2627         "jr/jm/ja" and set_attr gpr32 0 for noavx alternative.
2628         (mmx_pshufbv4qi3): Likewise.
2629         (*mmx_pinsrd): Likewise.
2630         (*mmx_pinsrb): Likewise.
2631         (*pinsrb): Likewise.
2632         (mmx_pshufbv8qi3): Likewise.
2633         (mmx_pshufbv4qi3): Likewise.
2634         (@sse4_1_insertps_<mode>): Likewise.
2635         (*mmx_pextrw): Split altrenatives and map non-EGPR
2636         constraints, attr_gpr32 and attr_isa to noavx mnemonics.
2637         (*movv2qi_internal): Likewise.
2638         (*pextrw): Likewise.
2639         (*mmx_pextrb): Likewise.
2640         (*mmx_pextrb_zext): Likewise.
2641         (*pextrb): Likewise.
2642         (*pextrb_zext): Likewise.
2643         (vec_extractv2si_1): Likewise.
2644         (vec_extractv2si_1_zext): Likewise.
2645         * config/i386/sse.md: (vi128_h_r): New mode attr for
2646         pinsr{bw}/pextr{bw} with reg operand.
2647         (*abs<mode>2): Split altrenatives and %v in mnemonics, map
2648         non-EGPR constraints, gpr32 and isa attrs to noavx mnemonics.
2649         (*vec_extract<mode>): Likewise.
2650         (*vec_extract<mode>): Likewise for HFBF pattern.
2651         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
2652         (*vec_extractv4si_1): Likewise.
2653         (*vec_extractv4si_zext): Likewise.
2654         (*vec_extractv2di_1): Likewise.
2655         (*vec_concatv2si_sse4_1): Likewise.
2656         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
2657         (vec_concatv2di): Likewise.
2658         (*sse4_1_<code>v2qiv2di2<mask_name>_1): Likewise.
2659         (ssse3_avx2>_pshufb<mode>3<mask_name>): Change "r/m/Bm" to
2660         "jr/jm/ja" and set_attr gpr32 0 for noavx alternative, split
2661         %v for avx/noavx alternatives if necessary.
2662         (*vec_concatv2sf_sse4_1): Likewise.
2663         (*sse4_1_extractps): Likewise.
2664         (vec_set<mode>_0): Likewise for VI4F_128.
2665         (*vec_setv4sf_sse4_1): Likewise.
2666         (@sse4_1_insertps<mode>): Likewise.
2667         (ssse3_pmaddubsw128): Likewise.
2668         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
2669         (<sse4_1_avx2>_packusdw<mask_name>): Likewise.
2670         (<ssse3_avx2>_palignr<mode>): Likewise.
2671         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
2672         (<sse4_1_avx2>_mpsadbw): Likewise.
2673         (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
2674         (*<sse4_1_avx2>_mul<mode>3<mask_name>): Likewise.
2675         (*sse4_1_<code><mode>3<mask_name>): Likewise.
2676         (*<code>v8hi3): Likewise.
2677         (*<code>v16qi3): Likewise.
2678         (*sse4_1_<code>v8qiv8hi2<mask_name>_1): Likewise.
2679         (*sse4_1_zero_extendv8qiv8hi2_3): Likewise.
2680         (*sse4_1_zero_extendv8qiv8hi2_4): Likewise.
2681         (*sse4_1_<code>v4qiv4si2<mask_name>_1): Likewise.
2682         (*sse4_1_<code>v4hiv4si2<mask_name>_1): Likewise.
2683         (*sse4_1_zero_extendv4hiv4si2_3): Likewise.
2684         (*sse4_1_zero_extendv4hiv4si2_4): Likewise.
2685         (*sse4_1_<code>v2hiv2di2<mask_name>_1): Likewise.
2686         (*sse4_1_<code>v2siv2di2<mask_name>_1): Likewise.
2687         (*sse4_1_zero_extendv2siv2di2_3): Likewise.
2688         (*sse4_1_zero_extendv2siv2di2_4): Likewise.
2689         (aesdec): Likewise.
2690         (aesdeclast): Likewise.
2691         (aesenc): Likewise.
2692         (aesenclast): Likewise.
2693         (pclmulqdq): Likewise.
2694         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
2695         (vgf2p8affineqb_<mode><mask_name>): Likewise.
2696         (vgf2p8mulb_<mode><mask_name>): Likewise.
2698 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2699             Hongyu Wang  <hongyu.wang@intel.com>
2700             Hongtao Liu  <hongtao.liu@intel.com>
2702         * config/i386/i386-protos.h (x86_evex_reg_mentioned_p): New
2703         prototype.
2704         * config/i386/i386.cc (x86_evex_reg_mentioned_p): New
2705         function.
2706         * config/i386/i386.md (sse4_1_round<mode>2): Set attr gpr32 0
2707         and constraint jm to all non-evex alternatives, adjust
2708         alternative outputs if evex reg is mentioned.
2709         * config/i386/sse.md (<sse4_1>_ptest<mode>): Set attr gpr32 0
2710         and constraint jm/ja to all non-evex alternatives.
2711         (ptesttf2): Likewise.
2712         (<sse4_1>_round<ssemodesuffix><avxsizesuffix): Likewise.
2713         (sse4_1_round<ssescalarmodesuffix>): Likewise.
2714         (sse4_2_pcmpestri): Likewise.
2715         (sse4_2_pcmpestrm): Likewise.
2716         (sse4_2_pcmpestr_cconly): Likewise.
2717         (sse4_2_pcmpistr): Likewise.
2718         (sse4_2_pcmpistri): Likewise.
2719         (sse4_2_pcmpistrm): Likewise.
2720         (sse4_2_pcmpistr_cconly): Likewise.
2721         (aesimc): Likewise.
2722         (aeskeygenassist): Likewise.
2724 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2725             Hongyu Wang  <hongyu.wang@intel.com>
2726             Hongtao Liu  <hongtao.liu@intel.com>
2728         * config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3): Set
2729         attr gpr32 0 and constraint jm/ja to all mem alternatives.
2730         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
2731         (ssse3_ph<plusminus_mnemonic>wv4hi3): Likewise.
2732         (avx2_ph<plusminus_mnemonic>dv8si3): Likewise.
2733         (ssse3_ph<plusminus_mnemonic>dv4si3): Likewise.
2734         (ssse3_ph<plusminus_mnemonic>dv2si3): Likewise.
2735         (<ssse3_avx2>_psign<mode>3): Likewise.
2736         (ssse3_psign<mode>3): Likewise.
2737         (<sse4_1>_blend<ssemodesuffix><avxsizesuffix): Likewise.
2738         (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix): Likewise.
2739         (*<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>_lt): Likewise.
2740         (*<sse4_1>_blendv<ssefltmodesuff)ix><avxsizesuffix>_not_ltint: Likewise.
2741         (<sse4_1>_dp<ssemodesuffix><avxsizesuffix>): Likewise.
2742         (<sse4_1_avx2>_mpsadbw): Likewise.
2743         (<sse4_1_avx2>_pblendvb): Likewise.
2744         (*<sse4_1_avx2>_pblendvb_lt): Likewise.
2745         (sse4_1_pblend<ssemodesuffix>): Likewise.
2746         (*avx2_pblend<ssemodesuffix>): Likewise.
2747         (avx2_permv2ti): Likewise.
2748         (*avx_vperm2f128<mode>_nozero): Likewise.
2749         (*avx2_eq<mode>3): Likewise.
2750         (*sse4_1_eqv2di3): Likewise.
2751         (sse4_2_gtv2di3): Likewise.
2752         (avx2_gt<mode>3): Likewise.
2754 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2755             Hongyu Wang  <hongyu.wang@intel.com>
2756             Hongtao Liu  <hongtao.liu@intel.com>
2758         * config/i386/i386.md (<xsave>): Set attr gpr32 0 and constraint
2759         jm.
2760         (<xsave>_rex64): Likewise.
2761         (<xrstor>_rex64): Likewise.
2762         (<xrstor>64): Likewise.
2763         (fxsave64): Likewise.
2764         (fxstore64): Likewise.
2766 2023-10-07  Hongyu Wang  <hongyu.wang@intel.com>
2767             Kong Lingling  <lingling.kong@intel.com>
2768             Hongtao Liu  <hongtao.liu@intel.com>
2770         * config/i386/i386.cc (ix86_get_ssemov): Check if egpr is used,
2771         adjust mnemonic for vmovduq/vmovdqa.
2772         * config/i386/sse.md (*<extract_type>_vinsert<shuffletype><extract_suf>_0):
2773         Check if egpr is used, adjust mnemonic for vmovdqu/vmovdqa.
2774         (avx_vec_concat<mode>): Likewise, and separate alternative 0 to
2775         avx_noavx512f.
2777 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2778             Hongyu Wang  <hongyu.wang@intel.com>
2779             Hongtao Liu  <hongtao.liu@intel.com>
2781         * config/i386/i386.cc (map_egpr_constraints): New funciton to
2782         map common constraints to EGPR prohibited constraints.
2783         (ix86_md_asm_adjust): Calls map_egpr_constraints.
2784         * config/i386/i386.opt: Add option mapx-inline-asm-use-gpr32.
2786 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2787             Hongyu Wang  <hongyu.wang@intel.com>
2788             Hongtao Liu  <hongtao.liu@intel.com>
2790         * config/i386/i386-protos.h (ix86_insn_base_reg_class): New
2791         prototype.
2792         (ix86_regno_ok_for_insn_base_p): Likewise.
2793         (ix86_insn_index_reg_class): Likewise.
2794         * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p):
2795         New helper function to scan the insn.
2796         (ix86_insn_base_reg_class): New function to choose BASE_REG_CLASS.
2797         (ix86_regno_ok_for_insn_base_p): Likewise for base regno.
2798         (ix86_insn_index_reg_class): Likewise for INDEX_REG_CLASS.
2799         * config/i386/i386.h (INSN_BASE_REG_CLASS): Define.
2800         (REGNO_OK_FOR_INSN_BASE_P): Likewise.
2801         (INSN_INDEX_REG_CLASS): Likewise.
2802         (enum reg_class): Add INDEX_GPR16.
2803         (GENERAL_GPR16_REGNO_P): Define.
2804         * config/i386/i386.md (gpr32): New attribute.
2806 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2807             Hongyu Wang  <hongyu.wang@intel.com>
2808             Hongtao Liu  <hongtao.liu@intel.com>
2810         * config/i386/constraints.md (jr): New register constraint
2811         that prohibits EGPR.
2812         (jR): Constraint that force usage of EGPR.
2813         (jm): New memory constraint that prohibits EGPR.
2814         (ja): Likewise for Bm constraint.
2815         (jb): Likewise for Tv constraint.
2816         (j<): New auto-dec memory constraint that prohibits EGPR.
2817         (j>): Likewise for ">" constraint.
2818         (jo): Likewise for "o" constraint.
2819         (jv): Likewise for "V" constraint.
2820         (jp): Likewise for "p" constraint.
2821         * config/i386/i386.h (enum reg_class): Add new reg class
2822         GENERAL_GPR16.
2824 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2825             Hongyu Wang  <hongyu.wang@intel.com>
2826             Hongtao Liu  <hongtao.liu@intel.com>
2828         * config/i386/i386-protos.h (x86_extended_rex2reg_mentioned_p):
2829         New function prototype.
2830         * config/i386/i386.cc (regclass_map): Add mapping for 16 new
2831         general registers.
2832         (debugger64_register_map): Likewise.
2833         (ix86_conditional_register_usage): Clear REX2 register when APX
2834         disabled.
2835         (ix86_code_end): Add handling for REX2 reg.
2836         (print_reg): Likewise.
2837         (ix86_output_jmp_thunk_or_indirect): Likewise.
2838         (ix86_output_indirect_branch_via_reg): Likewise.
2839         (ix86_attr_length_vex_default): Likewise.
2840         (ix86_emit_save_regs): Adjust to allow saving r31.
2841         (ix86_register_priority): Set REX2 reg priority same as REX.
2842         (x86_extended_reg_mentioned_p): Add check for REX2 regs.
2843         (x86_extended_rex2reg_mentioned_p): New function.
2844         * config/i386/i386.h (CALL_USED_REGISTERS): Add new extended
2845         registers.
2846         (REG_ALLOC_ORDER): Likewise.
2847         (FIRST_REX2_INT_REG): Define.
2848         (LAST_REX2_INT_REG): Ditto.
2849         (GENERAL_REGS): Add 16 new registers.
2850         (INT_SSE_REGS): Likewise.
2851         (FLOAT_INT_REGS): Likewise.
2852         (FLOAT_INT_SSE_REGS): Likewise.
2853         (INT_MASK_REGS): Likewise.
2854         (ALL_REGS):Likewise.
2855         (REX2_INT_REG_P): Define.
2856         (REX2_INT_REGNO_P): Ditto.
2857         (GENERAL_REGNO_P): Add REX2_INT_REGNO_P.
2858         (REGNO_OK_FOR_INDEX_P): Ditto.
2859         (REG_OK_FOR_INDEX_NONSTRICT_P): Add new extended registers.
2860         * config/i386/i386.md: Add 16 new integer general
2861         registers.
2863 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2864             Hongyu Wang  <hongyu.wang@intel.com>
2865             Hongtao Liu  <hongtao.liu@intel.com>
2867         * common/config/i386/cpuinfo.h (XSTATE_APX_F): New macro.
2868         (XCR_APX_F_ENABLED_MASK): Likewise.
2869         (get_available_features): Detect APX_F under
2870         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_APX_F_SET): New.
2871         (OPTION_MASK_ISA2_APX_F_UNSET): Likewise.
2872         (ix86_handle_option): Handle -mapxf.
2873         * common/config/i386/i386-cpuinfo.h (FEATURE_APX_F): New.
2874         * common/config/i386/i386-isas.h: Add entry for APX_F.
2875         * config/i386/cpuid.h (bit_APX_F): New.
2876         * config/i386/i386.h (bit_APX_F): (TARGET_APX_EGPR,
2877         TARGET_APX_PUSH2POP2, TARGET_APX_NDD): New define.
2878         * config/i386/i386-opts.h (enum apx_features): New enum.
2879         * config/i386/i386-isa.def (APX_F): New DEF_PTA.
2880         * config/i386/i386-options.cc (ix86_function_specific_save):
2881         Save ix86_apx_features.
2882         (ix86_function_specific_restore): Restore it.
2883         (ix86_valid_target_attribute_inner_p): Add mapxf.
2884         (ix86_option_override_internal): Set ix86_apx_features for PTA
2885         and TARGET_APX_F. Also reports error when APX_F is set but not
2886         having TARGET_64BIT.
2887         * config/i386/i386.opt: (-mapxf): New ISA flag option.
2888         (-mapx=): New enumeration option.
2889         (apx_features): New enum type.
2890         (apx_none): New enum value.
2891         (apx_egpr): Likewise.
2892         (apx_push2pop2): Likewise.
2893         (apx_ndd): Likewise.
2894         (apx_all): Likewise.
2895         * doc/invoke.texi: Document mapxf.
2897 2023-10-07  Hongyu Wang  <hongyu.wang@intel.com>
2898             Kong Lingling  <lingling.kong@intel.com>
2899             Hongtao Liu  <hongtao.liu@intel.com>
2901         * addresses.h (index_reg_class): New wrapper function like
2902         base_reg_class.
2903         * doc/tm.texi: Document INSN_INDEX_REG_CLASS.
2904         * doc/tm.texi.in: Ditto.
2905         * lra-constraints.cc (index_part_to_reg): Pass index_class.
2906         (process_address_1): Calls index_reg_class with curr_insn and
2907         replace INDEX_REG_CLASS with its return value index_cl.
2908         * reload.cc (find_reloads_address): Likewise.
2909         (find_reloads_address_1): Likewise.
2911 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
2912             Hongyu Wang  <hongyu.wang@intel.com>
2913             Hongtao Liu  <hongtao.liu@intel.com>
2915         * addresses.h (base_reg_class): Add insn argument and new macro
2916         INSN_BASE_REG_CLASS.
2917         (regno_ok_for_base_p_1): Add insn argument and new macro
2918         REGNO_OK_FOR_INSN_BASE_P.
2919         (regno_ok_for_base_p): Add insn argument and parse to ok_for_base_p_1.
2920         * doc/tm.texi: Document INSN_BASE_REG_CLASS and
2921         REGNO_OK_FOR_INSN_BASE_P.
2922         * doc/tm.texi.in: Ditto.
2923         * lra-constraints.cc (process_address_1): Pass insn to
2924         base_reg_class.
2925         (curr_insn_transform): Ditto.
2926         * reload.cc (find_reloads): Ditto.
2927         (find_reloads_address): Ditto.
2928         (find_reloads_address_1): Ditto.
2929         (find_reloads_subreg_address): Ditto.
2930         * reload1.cc (maybe_fix_stack_asms): Ditto.
2932 2023-10-07  Jiufu Guo  <guojiufu@linux.ibm.com>
2934         PR target/108338
2935         * config/rs6000/rs6000.md (movsf_from_si): Update to generate mtvsrws
2936         for P9.
2938 2023-10-07  Jiufu Guo  <guojiufu@linux.ibm.com>
2940         PR target/108338
2941         * config/rs6000/predicates.md (lowpart_subreg_operator): New
2942         define_predicate.
2943         * config/rs6000/rs6000.md (any_rshift): New code_iterator.
2944         (movsf_from_si2): Rename to ...
2945         (movsf_from_si2_<code>): ... this.
2947 2023-10-07  Pan Li  <pan2.li@intel.com>
2949         PR target/111634
2950         * config/riscv/riscv.cc (riscv_legitimize_address): Ensure
2951         object is a REG before extracting its' REGNO.
2953 2023-10-06  Roger Sayle  <roger@nextmovesoftware.com>
2955         * config/i386/i386-expand.cc (ix86_split_ashl): Split shifts by
2956         one into add3_cc_overflow_1 followed by add3_carry.
2957         * config/i386/i386.md (@add<mode>3_cc_overflow_1): Renamed from
2958         "*add<mode>3_cc_overflow_1" to provide generator function.
2960 2023-10-06  Roger Sayle  <roger@nextmovesoftware.com>
2961             Uros Bizjak  <ubizjak@gmail.com>
2963         * config/i386/i386.cc (ix86_avoid_lea_for_addr): Split LEAs used
2964         to perform left shifts into shorter instructions with -Oz.
2966 2023-10-06  Vineet Gupta  <vineetg@rivosinc.com>
2968         * config/riscv/riscv.md (mvconst_internal): Add !ira_in_progress.
2970 2023-10-06  Sandra Loosemore  <sandra@codesourcery.com>
2972         * doc/extend.texi (Function Attributes): Mention standard attribute
2973         syntax.
2974         (Variable Attributes): Likewise.
2975         (Type Attributes): Likewise.
2976         (Attribute Syntax): Likewise.
2978 2023-10-06  Andrew Stubbs  <ams@codesourcery.com>
2980         * config/gcn/gcn-valu.md (*mov<mode>): Convert to compact syntax.
2981         (mov<mode>_exec): Likewise.
2982         (mov<mode>_sgprbase): Likewise.
2983         * config/gcn/gcn.md (*mov<mode>_insn): Likewise.
2984         (*movti_insn): Likewise.
2986 2023-10-06  Andrew Stubbs  <ams@codesourcery.com>
2988         * config/gcn/gcn.cc (print_operand): Adjust xcode type to fix warning.
2990 2023-10-06  Andrew Pinski  <pinskia@gmail.com>
2992         PR middle-end/111699
2993         * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e),
2994         (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Enable only for GIMPLE.
2996 2023-10-06  Jakub Jelinek  <jakub@redhat.com>
2998         * ipa-prop.h (ipa_bits): Remove.
2999         (struct ipa_jump_func): Remove bits member.
3000         (struct ipcp_transformation): Remove bits member, adjust
3001         ctor and dtor.
3002         (ipa_get_ipa_bits_for_value): Remove.
3003         * ipa-prop.cc (struct ipa_bit_ggc_hash_traits): Remove.
3004         (ipa_bits_hash_table): Remove.
3005         (ipa_print_node_jump_functions_for_edge): Don't print bits.
3006         (ipa_get_ipa_bits_for_value): Remove.
3007         (ipa_set_jfunc_bits): Remove.
3008         (ipa_compute_jump_functions_for_edge): For pointers query
3009         pointer alignment before ipa_set_jfunc_vr and update_bitmask
3010         in there.  For integral types, just rely on bitmask already
3011         being handled in value ranges.
3012         (ipa_check_create_edge_args): Don't create ipa_bits_hash_table.
3013         (ipcp_transformation_initialize): Neither here.
3014         (ipcp_transformation_t::duplicate): Don't copy bits vector.
3015         (ipa_write_jump_function): Don't stream bits here.
3016         (ipa_read_jump_function): Neither here.
3017         (useful_ipcp_transformation_info_p): Don't test bits vec.
3018         (write_ipcp_transformation_info): Don't stream bits here.
3019         (read_ipcp_transformation_info): Neither here.
3020         (ipcp_get_parm_bits): Get mask and value from m_vr rather
3021         than bits.
3022         (ipcp_update_bits): Remove.
3023         (ipcp_update_vr): For pointers, set_ptr_info_alignment from
3024         bitmask stored in value range.
3025         (ipcp_transform_function): Don't test bits vector, don't call
3026         ipcp_update_bits.
3027         * ipa-cp.cc (propagate_bits_across_jump_function): Don't use
3028         jfunc->bits, instead get mask and value from jfunc->m_vr.
3029         (ipcp_store_bits_results): Remove.
3030         (ipcp_store_vr_results): Incorporate parts of
3031         ipcp_store_bits_results here, merge the bitmasks with value
3032         range if both are supplied.
3033         (ipcp_driver): Don't call ipcp_store_bits_results.
3034         * ipa-sra.cc (zap_useless_ipcp_results): Remove *ts->bits
3035         clearing.
3037 2023-10-06  Pan Li  <pan2.li@intel.com>
3039         * config/riscv/autovec.md: Update comments.
3041 2023-10-05  John David Anglin  <danglin@gcc.gnu.org>
3043         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Delete.
3045 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
3047         * timevar.def (TV_TREE_FAST_VRP): New.
3048         * tree-pass.h (make_pass_fast_vrp): New prototype.
3049         * tree-vrp.cc (class fvrp_folder): New.
3050         (fvrp_folder::fvrp_folder): New.
3051         (fvrp_folder::~fvrp_folder): New.
3052         (fvrp_folder::value_of_expr): New.
3053         (fvrp_folder::value_on_edge): New.
3054         (fvrp_folder::value_of_stmt): New.
3055         (fvrp_folder::pre_fold_bb): New.
3056         (fvrp_folder::post_fold_bb): New.
3057         (fvrp_folder::pre_fold_stmt): New.
3058         (fvrp_folder::fold_stmt): New.
3059         (execute_fast_vrp): New.
3060         (pass_data_fast_vrp): New.
3061         (pass_vrp:execute): Check for fast VRP pass.
3062         (make_pass_fast_vrp): New.
3064 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
3066         * gimple-range.cc (dom_ranger::dom_ranger): New.
3067         (dom_ranger::~dom_ranger): New.
3068         (dom_ranger::range_of_expr): New.
3069         (dom_ranger::edge_range): New.
3070         (dom_ranger::range_on_edge): New.
3071         (dom_ranger::range_in_bb): New.
3072         (dom_ranger::range_of_stmt): New.
3073         (dom_ranger::maybe_push_edge): New.
3074         (dom_ranger::pre_bb): New.
3075         (dom_ranger::post_bb): New.
3076         * gimple-range.h (class dom_ranger): New.
3078 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
3080         * gimple-range-gori.cc (gori_stmt_info::gori_stmt_info): New.
3081         (gori_calc_operands): New.
3082         (gori_on_edge): New.
3083         (gori_name_helper): New.
3084         (gori_name_on_edge): New.
3085         * gimple-range-gori.h (gori_on_edge): New prototype.
3086         (gori_name_on_edge): New prototype.
3088 2023-10-05  Sergei Trofimovich  <siarheit@google.com>
3090         PR ipa/111283
3091         PR gcov-profile/111559
3092         * ipa-utils.cc (ipa_merge_profiles): Avoid producing
3093         uninitialized probabilities when merging counters with zero
3094         denominators.
3096 2023-10-05  Uros Bizjak  <ubizjak@gmail.com>
3098         PR target/111657
3099         * config/i386/i386-expand.cc (alg_usable_p): Reject libcall
3100         strategy for non-default address spaces.
3101         (decide_alg): Use loop strategy as a fallback strategy for
3102         non-default address spaces.
3104 2023-10-05  Jakub Jelinek  <jakub@redhat.com>
3106         * sreal.cc (verify_aritmetics): Rename to ...
3107         (verify_arithmetics): ... this.
3108         (sreal_verify_arithmetics): Adjust caller.
3110 2023-10-05  Martin Jambor  <mjambor@suse.cz>
3112         Revert:
3113         2023-10-03  Martin Jambor  <mjambor@suse.cz>
3115         PR ipa/108007
3116         * cgraph.h (cgraph_edge): Add a parameter to
3117         redirect_call_stmt_to_callee.
3118         * ipa-param-manipulation.h (ipa_param_adjustments): Add a
3119         parameter to modify_call.
3120         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
3121         parameter killed_ssas, pass it to padjs->modify_call.
3122         * ipa-param-manipulation.cc (purge_transitive_uses): New function.
3123         (ipa_param_adjustments::modify_call): New parameter killed_ssas.
3124         Instead of substituting uses, invoke purge_transitive_uses.  If
3125         hash of killed SSAs has not been provided, create a temporary one
3126         and release SSAs that have been added to it.
3127         * tree-inline.cc (redirect_all_calls): Create
3128         id->killed_new_ssa_names earlier, pass it to edge redirection,
3129         adjust a comment.
3130         (copy_body): Release SSAs in id->killed_new_ssa_names.
3132 2023-10-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3134         * config/riscv/autovec.md (@vec_series<mode>): Remove @.
3135         (vec_series<mode>): Ditto.
3136         * config/riscv/riscv-v.cc (expand_const_vector): Ditto.
3137         (shuffle_decompress_patterns): Ditto.
3139 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
3141         * config/arc/arc-passes.def: Remove arc_ifcvt pass.
3142         * config/arc/arc-protos.h (arc_ccfsm_branch_deleted_p): Remove.
3143         (arc_ccfsm_record_branch_deleted): Likewise.
3144         (arc_ccfsm_cond_exec_p): Likewise.
3145         (arc_ccfsm): Likewise.
3146         (arc_ccfsm_record_condition): Likewise.
3147         (make_pass_arc_ifcvt): Likewise.
3148         * config/arc/arc.cc (arc_ccfsm): Remove.
3149         (arc_ccfsm_current): Likewise.
3150         (ARC_CCFSM_BRANCH_DELETED_P): Likewise.
3151         (ARC_CCFSM_RECORD_BRANCH_DELETED): Likewise.
3152         (ARC_CCFSM_COND_EXEC_P): Likewise.
3153         (CCFSM_ISCOMPACT): Likewise.
3154         (CCFSM_DBR_ISCOMPACT): Likewise.
3155         (machine_function): Remove ccfsm related fields.
3156         (arc_ifcvt): Remove pass.
3157         (arc_print_operand): Remove `#` punct operand and other ccfsm
3158         related code.
3159         (arc_ccfsm_advance): Remove.
3160         (arc_ccfsm_at_label): Likewise.
3161         (arc_ccfsm_record_condition): Likewise.
3162         (arc_ccfsm_post_advance): Likewise.
3163         (arc_ccfsm_branch_deleted_p): Likewise.
3164         (arc_ccfsm_record_branch_deleted): Likewise.
3165         (arc_ccfsm_cond_exec_p): Likewise.
3166         (arc_get_ccfsm_cond): Likewise.
3167         (arc_final_prescan_insn): Remove ccfsm references.
3168         (arc_internal_label): Likewise.
3169         (arc_reorg): Likewise.
3170         (arc_output_libcall): Likewise.
3171         * config/arc/arc.md: Remove ccfsm references and update related
3172         instruction patterns.
3174 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
3176         * config/arc/arc.cc (arc_init): Remove '^' punct char.
3177         (arc_print_operand): Remove related code.
3178         * config/arc/arc.md: Update patterns which uses '%&'.
3180 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
3182         * config/arc/arc-protos.h (arc_clear_unalign): Remove.
3183         (arc_toggle_unalign): Likewise.
3184         * config/arc/arc.cc (machine_function) Remove unalign.
3185         (arc_init): Remove `&` punct character.
3186         (arc_print_operand): Remove `&` related functions.
3187         (arc_verify_short): Update function's number of parameters.
3188         (output_short_suffix): Update function.
3189         (arc_short_long): Likewise.
3190         (arc_clear_unalign): Remove.
3191         (arc_toggle_unalign): Likewise.
3192         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Remove.
3193         (ASM_OUTPUT_ALIGN): Update.
3194         * config/arc/arc.md: Remove all `%&` references.
3195         * config/arc/arc.opt (mannotate-align): Ignore option.
3196         * doc/invoke.texi (mannotate-align): Update description.
3198 2023-10-05  Richard Biener  <rguenther@suse.de>
3200         * tree-vect-slp.cc (vect_build_slp_tree_1): Do not
3201         ask for internal_fn_p (CFN_LAST).
3203 2023-10-05  Richard Biener  <rguenther@suse.de>
3205         * tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Not
3206         visited value numbers are available itself.
3208 2023-10-05  Richard Biener  <rguenther@suse.de>
3210         PR ipa/111643
3211         * doc/extend.texi (attribute flatten): Clarify.
3213 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
3215         * config/arc/arc-protos.h (emit_shift): Delete prototype.
3216         (arc_pre_reload_split): New function prototype.
3217         * config/arc/arc.cc (emit_shift): Delete function.
3218         (arc_pre_reload_split): New predicate function, copied from i386,
3219         to schedule define_insn_and_split splitters to the split1 pass.
3220         * config/arc/arc.md (ashlsi3): Expand RTL template unconditionally.
3221         (ashrsi3): Likewise.
3222         (lshrsi3): Likewise.
3223         (shift_si3): Move after other shift patterns, and disable when
3224         operands[2] is one (which is handled by its own define_insn).
3225         Use shiftr4_operator, instead of shift4_operator, as this is no
3226         longer used for left shifts.
3227         (shift_si3_loop): Likewise.  Additionally remove match_scratch.
3228         (*ashlsi3_nobs): New pre-reload define_insn_and_split.
3229         (*ashrsi3_nobs): Likewise.
3230         (*lshrsi3_nobs): Likewise.
3231         (rotrsi3_cnt1): Rename define_insn from *rotrsi3_cnt1.
3232         (add_shift): Rename define_insn from *add_shift.
3233         * config/arc/predicates.md (shiftl4_operator): Delete.
3234         (shift4_operator): Delete.
3236 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
3238         * config/arc/arc.md (ashlsi3_cnt1): Rename define_insn *ashlsi2_cnt1.
3239         Change type attribute to "unary", as this doesn't have operands[2].
3240         Change length attribute to "*,4" to allow compact representation.
3241         (lshrsi3_cnt1): Rename define_insn from *lshrsi3_cnt1.  Change
3242         insn type attribute to "unary", as this doesn't have operands[2].
3243         (ashrsi3_cnt1): Rename define_insn from *ashrsi3_cnt1.  Change
3244         insn type attribute to "unary", as this doesn't have operands[2].
3246 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
3248         PR rtl-optimization/110701
3249         * combine.cc (record_dead_and_set_regs_1): Split comment into
3250         pieces placed before the relevant clauses.  When the SET_DEST
3251         is a partial_subreg_p, mark the bits outside of the updated
3252         portion of the destination as undefined.
3254 2023-10-04  Kito Cheng  <kito.cheng@sifive.com>
3256         PR bootstrap/111664
3257         * opt-read.awk: Drop multidimensional arrays.
3258         * opth-gen.awk: Ditto.
3260 2023-10-04  Xi Ruoyao  <xry111@xry111.site>
3262         * config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): Delete.
3263         (copysign<mode>3): Use copysign RTL instead of UNSPEC.
3265 2023-10-04  Jakub Jelinek  <jakub@redhat.com>
3267         PR middle-end/111369
3268         * match.pd (x == cstN ? cst4 : cst3): Use
3269         build_nonstandard_integer_type only if type1 is BOOLEAN_TYPE.
3270         Fix comment typo.  Formatting fix.
3271         (a?~t:t -> (-(a))^t): Always convert to type rather
3272         than using build_nonstandard_integer_type.  Perform negation
3273         only if type has precision > 1 and is not signed BOOLEAN_TYPE.
3275 2023-10-04  Jakub Jelinek  <jakub@redhat.com>
3277         PR tree-optimization/111668
3278         * match.pd (a ? CST1 : CST2): Handle the a ? -1 : 0 and
3279         a ? 0 : -1 cases before the powerof2cst cases and differentiate
3280         between 1-bit precision types, larger precision boolean types
3281         and other integral types.  Fix comment pastos and formatting.
3283 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
3285         * tree-ssanames.cc (set_range_info): Use get_ptr_info for
3286         pointers rather than range_info_get_range.
3288 2023-10-03  Martin Jambor  <mjambor@suse.cz>
3290         * ipa-modref.h (modref_summary::dump): Make const.
3291         * ipa-modref.cc (modref_summary::dump): Likewise.
3292         (dump_lto_records): Dump to out instead of dump_file.
3294 2023-10-03  Martin Jambor  <mjambor@suse.cz>
3296         PR ipa/110378
3297         * ipa-param-manipulation.cc
3298         (ipa_param_body_adjustments::mark_dead_statements): Verify that any
3299         return uses of PARAM will be removed.
3300         (ipa_param_body_adjustments::mark_clobbers_dead): Likewise.
3301         * ipa-sra.cc (isra_param_desc): New fields
3302         remove_only_when_retval_removed and split_only_when_retval_removed.
3303         (struct gensum_param_desc): Likewise.  Fix comment long line.
3304         (ipa_sra_function_summaries::duplicate): Copy the new flags.
3305         (dump_gensum_param_descriptor): Dump the new flags.
3306         (dump_isra_param_descriptor): Likewise.
3307         (isra_track_scalar_value_uses): New parameter desc.  Set its flag
3308         remove_only_when_retval_removed when encountering a simple return.
3309         (isra_track_scalar_param_local_uses): Replace parameter call_uses_p
3310         with desc.  Pass it to isra_track_scalar_value_uses and set its
3311         call_uses.
3312         (ptr_parm_has_nonarg_uses): Accept parameter descriptor as a
3313         parameter.  If there is a direct return use, mark any..
3314         (create_parameter_descriptors): Pass the whole parameter descriptor to
3315         isra_track_scalar_param_local_uses and ptr_parm_has_nonarg_uses.
3316         (process_scan_results): Copy the new flags.
3317         (isra_write_node_summary): Stream the new flags.
3318         (isra_read_node_info): Likewise.
3319         (adjust_parameter_descriptions): Check that transformations
3320         requring return removal only happen when return value is removed.
3321         Restructure main loop.  Adjust dump message.
3323 2023-10-03  Martin Jambor  <mjambor@suse.cz>
3325         PR ipa/108007
3326         * cgraph.h (cgraph_edge): Add a parameter to
3327         redirect_call_stmt_to_callee.
3328         * ipa-param-manipulation.h (ipa_param_adjustments): Add a
3329         parameter to modify_call.
3330         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
3331         parameter killed_ssas, pass it to padjs->modify_call.
3332         * ipa-param-manipulation.cc (purge_transitive_uses): New function.
3333         (ipa_param_adjustments::modify_call): New parameter killed_ssas.
3334         Instead of substituting uses, invoke purge_transitive_uses.  If
3335         hash of killed SSAs has not been provided, create a temporary one
3336         and release SSAs that have been added to it.
3337         * tree-inline.cc (redirect_all_calls): Create
3338         id->killed_new_ssa_names earlier, pass it to edge redirection,
3339         adjust a comment.
3340         (copy_body): Release SSAs in id->killed_new_ssa_names.
3342 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
3344         * passes.def (pass_vrp): Pass "final pass" flag as parameter.
3345         * tree-vrp.cc (vrp_pass_num): Remove.
3346         (pass_vrp::my_pass): Remove.
3347         (pass_vrp::pass_vrp): Add warn_p as a parameter.
3348         (pass_vrp::final_p): New.
3349         (pass_vrp::set_pass_param): Set final_p param.
3350         (pass_vrp::execute): Call execute_range_vrp with no conditions.
3351         (make_pass_vrp): Pass additional parameter.
3352         (make_pass_early_vrp): Ditto.
3354 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
3356         * tree-ssanames.cc (set_range_info): Return true only if the
3357         current value changes.
3359 2023-10-03  David Malcolm  <dmalcolm@redhat.com>
3361         * diagnostic.cc (diagnostic_set_info_translated): Update for "m_"
3362         prefixes to text_info fields.
3363         (diagnostic_report_diagnostic): Likewise.
3364         (verbatim): Use text_info ctor.
3365         (simple_diagnostic_path::add_event): Likewise.
3366         (simple_diagnostic_path::add_thread_event): Likewise.
3367         * dumpfile.cc (dump_pretty_printer::decode_format): Update for
3368         "m_" prefixes to text_info fields.
3369         (dump_context::dump_printf_va): Use text_info ctor.
3370         * graphviz.cc (graphviz_out::graphviz_out): Use text_info ctor.
3371         (graphviz_out::print): Likewise.
3372         * opt-problem.cc (opt_problem::opt_problem): Likewise.
3373         * pretty-print.cc (pp_format): Update for "m_" prefixes to
3374         text_info fields.
3375         (pp_printf): Use text_info ctor.
3376         (pp_verbatim): Likewise.
3377         (assert_pp_format_va): Likewise.
3378         * pretty-print.h (struct text_info): Add ctors.  Add "m_" prefix
3379         to all fields.
3380         * text-art/styled-string.cc (styled_string::from_fmt_va): Use
3381         text_info ctor.
3382         * tree-diagnostic.cc (default_tree_printer): Update for "m_"
3383         prefixes to text_info fields.
3384         * tree-pretty-print.h (pp_ti_abstract_origin): Likewise.
3386 2023-10-03  Roger Sayle  <roger@nextmovesoftware.com>
3388         * config/arc/arc.md (CC_ltu): New mode iterator for CC and CC_C.
3389         (scc_ltu_<mode>): New define_insn to handle LTU form of scc_insn.
3390         (*scc_insn): Don't split to a conditional move sequence for LTU.
3392 2023-10-03  Andrea Corallo  <andrea.corallo@arm.com>
3394         * config/aarch64/aarch64.md (@ccmp<CC_ONLY:mode><GPI:mode>)
3395         (@ccmp<CC_ONLY:mode><GPI:mode>_rev, *call_insn, *call_value_insn)
3396         (*mov<mode>_aarch64, load_pair_sw_<SX:mode><SX2:mode>)
3397         (load_pair_dw_<DX:mode><DX2:mode>)
3398         (store_pair_sw_<SX:mode><SX2:mode>)
3399         (store_pair_dw_<DX:mode><DX2:mode>, *extendsidi2_aarch64)
3400         (*zero_extendsidi2_aarch64, *load_pair_zero_extendsidi2_aarch64)
3401         (*extend<SHORT:mode><GPI:mode>2_aarch64)
3402         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64)
3403         (*extendqihi2_aarch64, *zero_extendqihi2_aarch64)
3404         (*add<mode>3_aarch64, *addsi3_aarch64_uxtw, *add<mode>3_poly_1)
3405         (add<mode>3_compare0, *addsi3_compare0_uxtw)
3406         (*add<mode>3_compareC_cconly, add<mode>3_compareC)
3407         (*add<mode>3_compareV_cconly_imm, add<mode>3_compareV_imm)
3408         (*add<mode>3nr_compare0, subdi3, subv<GPI:mode>_imm)
3409         (*cmpv<GPI:mode>_insn, sub<mode>3_compare1_imm, neg<mode>2)
3410         (cmp<mode>, fcmp<mode>, fcmpe<mode>, *cmov<mode>_insn)
3411         (*cmovsi_insn_uxtw, <optab><mode>3, *<optab>si3_uxtw)
3412         (*and<mode>3_compare0, *andsi3_compare0_uxtw, one_cmpl<mode>2)
3413         (*<NLOGICAL:optab>_one_cmpl<mode>3, *and<mode>3nr_compare0)
3414         (*aarch64_ashl_sisd_or_int_<mode>3)
3415         (*aarch64_lshr_sisd_or_int_<mode>3)
3416         (*aarch64_ashr_sisd_or_int_<mode>3, *ror<mode>3_insn)
3417         (*<optab>si3_insn_uxtw, <optab>_trunc<fcvt_target><GPI:mode>2)
3418         (<optab><fcvt_target><GPF:mode>2)
3419         (<FCVT_F2FIXED:fcvt_fixed_insn><GPF:mode>3)
3420         (<FCVT_FIXED2F:fcvt_fixed_insn><GPI:mode>3)
3421         (*aarch64_<optab><mode>3_cssc, copysign<GPF:mode>3_insn): Update
3422         to new syntax.
3423         * config/aarch64/aarch64-sve2.md (@aarch64_scatter_stnt<mode>)
3424         (@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
3425         (*aarch64_mul_unpredicated_<mode>)
3426         (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>_2)
3427         (*cond_<sve_int_op><mode>_3, *cond_<sve_int_op><mode>_any)
3428         (*cond_<sve_int_op><mode>_z, @aarch64_pred_<sve_int_op><mode>)
3429         (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_3)
3430         (*cond_<sve_int_op><mode>_any, @aarch64_sve_<sve_int_op><mode>)
3431         (@aarch64_sve_<sve_int_op>_lane_<mode>)
3432         (@aarch64_sve_add_mul_lane_<mode>)
3433         (@aarch64_sve_sub_mul_lane_<mode>, @aarch64_sve2_xar<mode>)
3434         (*aarch64_sve2_bcax<mode>, @aarch64_sve2_eor3<mode>)
3435         (*aarch64_sve2_nor<mode>, *aarch64_sve2_nand<mode>)
3436         (*aarch64_sve2_bsl<mode>, *aarch64_sve2_nbsl<mode>)
3437         (*aarch64_sve2_bsl1n<mode>, *aarch64_sve2_bsl2n<mode>)
3438         (*aarch64_sve2_sra<mode>, @aarch64_sve_add_<sve_int_op><mode>)
3439         (*aarch64_sve2_<su>aba<mode>, @aarch64_sve_add_<sve_int_op><mode>)
3440         (@aarch64_sve_add_<sve_int_op>_lane_<mode>)
3441         (@aarch64_sve_qadd_<sve_int_op><mode>)
3442         (@aarch64_sve_qadd_<sve_int_op>_lane_<mode>)
3443         (@aarch64_sve_sub_<sve_int_op><mode>)
3444         (@aarch64_sve_sub_<sve_int_op>_lane_<mode>)
3445         (@aarch64_sve_qsub_<sve_int_op><mode>)
3446         (@aarch64_sve_qsub_<sve_int_op>_lane_<mode>)
3447         (@aarch64_sve_<sve_fp_op><mode>, @aarch64_<sve_fp_op>_lane_<mode>)
3448         (@aarch64_pred_<sve_int_op><mode>)
3449         (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_int_op><mode>_2)
3450         (*cond_<sve_int_op><mode>_z, @aarch64_sve_<optab><mode>)
3451         (@aarch64_<optab>_lane_<mode>, @aarch64_sve_<optab><mode>)
3452         (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<sve_fp_op><mode>)
3453         (*cond_<sve_fp_op><mode>_any_relaxed)
3454         (*cond_<sve_fp_op><mode>_any_strict)
3455         (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>)
3456         (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_fp_op><mode>)
3457         (*cond_<sve_fp_op><mode>_strict): Update to new syntax.
3458         * config/aarch64/aarch64-sve.md (*aarch64_sve_mov<mode>_ldr_str)
3459         (*aarch64_sve_mov<mode>_no_ldr_str, @aarch64_pred_mov<mode>)
3460         (*aarch64_sve_mov<mode>, aarch64_wrffr)
3461         (mask_scatter_store<mode><v_int_container>)
3462         (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked)
3463         (*mask_scatter_store<mode><v_int_container>_sxtw)
3464         (*mask_scatter_store<mode><v_int_container>_uxtw)
3465         (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
3466         (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
3467         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
3468         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw)
3469         (*vec_duplicate<mode>_reg, vec_shl_insert_<mode>)
3470         (vec_series<mode>, @extract_<last_op>_<mode>)
3471         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2)
3472         (*cond_<optab><mode>_any, @aarch64_pred_<optab><mode>)
3473         (@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>)
3474         (@cond_<optab><mode>)
3475         (*<optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2)
3476         (@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>)
3477         (@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>)
3478         (*cond_uxt<mode>_2, *cond_uxt<mode>_any, *cnot<mode>)
3479         (*cond_cnot<mode>_2, *cond_cnot<mode>_any)
3480         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed)
3481         (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed)
3482         (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>)
3483         (*cond_<optab><mode>_2, *cond_<optab><mode>_3)
3484         (*cond_<optab><mode>_any, add<mode>3, sub<mode>3)
3485         (@aarch64_pred_<su>abd<mode>, *aarch64_cond_<su>abd<mode>_2)
3486         (*aarch64_cond_<su>abd<mode>_3, *aarch64_cond_<su>abd<mode>_any)
3487         (@aarch64_sve_<optab><mode>, @aarch64_pred_<optab><mode>)
3488         (*cond_<optab><mode>_2, *cond_<optab><mode>_z)
3489         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2)
3490         (*cond_<optab><mode>_3, *cond_<optab><mode>_any, <optab><mode>3)
3491         (*cond_bic<mode>_2, *cond_bic<mode>_any)
3492         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_const)
3493         (*cond_<optab><mode>_any_const, *cond_<sve_int_op><mode>_m)
3494         (*cond_<sve_int_op><mode>_z, *sdiv_pow2<mode>3)
3495         (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_any)
3496         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed)
3497         (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed)
3498         (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>)
3499         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
3500         (*cond_<optab><mode>_2_const_relaxed)
3501         (*cond_<optab><mode>_2_const_strict)
3502         (*cond_<optab><mode>_3_relaxed, *cond_<optab><mode>_3_strict)
3503         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
3504         (*cond_<optab><mode>_any_const_relaxed)
3505         (*cond_<optab><mode>_any_const_strict)
3506         (@aarch64_pred_<optab><mode>, *cond_add<mode>_2_const_relaxed)
3507         (*cond_add<mode>_2_const_strict)
3508         (*cond_add<mode>_any_const_relaxed)
3509         (*cond_add<mode>_any_const_strict, @aarch64_pred_<optab><mode>)
3510         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
3511         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
3512         (@aarch64_pred_<optab><mode>, *cond_sub<mode>_3_const_relaxed)
3513         (*cond_sub<mode>_3_const_strict, *cond_sub<mode>_const_relaxed)
3514         (*cond_sub<mode>_const_strict, *aarch64_pred_abd<mode>_relaxed)
3515         (*aarch64_pred_abd<mode>_strict)
3516         (*aarch64_cond_abd<mode>_2_relaxed)
3517         (*aarch64_cond_abd<mode>_2_strict)
3518         (*aarch64_cond_abd<mode>_3_relaxed)
3519         (*aarch64_cond_abd<mode>_3_strict)
3520         (*aarch64_cond_abd<mode>_any_relaxed)
3521         (*aarch64_cond_abd<mode>_any_strict, @aarch64_pred_<optab><mode>)
3522         (@aarch64_pred_fma<mode>, *cond_fma<mode>_2, *cond_fma<mode>_4)
3523         (*cond_fma<mode>_any, @aarch64_pred_fnma<mode>)
3524         (*cond_fnma<mode>_2, *cond_fnma<mode>_4, *cond_fnma<mode>_any)
3525         (<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>)
3526         (@<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>)
3527         (@aarch64_sve_add_<optab><vsi2qi>, @aarch64_pred_<optab><mode>)
3528         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
3529         (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict)
3530         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
3531         (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<optab><mode>)
3532         (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict)
3533         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
3534         (@aarch64_<optab>_lane_<mode>, @aarch64_sve_tmad<mode>)
3535         (@aarch64_sve_<sve_fp_op>vnx4sf)
3536         (@aarch64_sve_<sve_fp_op>_lanevnx4sf)
3537         (@aarch64_sve_<sve_fp_op><mode>, *vcond_mask_<mode><vpred>)
3538         (@aarch64_sel_dup<mode>, @aarch64_pred_cmp<cmp_op><mode>)
3539         (*cmp<cmp_op><mode>_cc, *cmp<cmp_op><mode>_ptest)
3540         (@aarch64_pred_fcm<cmp_op><mode>, @fold_extract_<last_op>_<mode>)
3541         (@aarch64_fold_extract_vector_<last_op>_<mode>)
3542         (@aarch64_sve_splice<mode>)
3543         (@aarch64_sve_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>)
3544         (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>)
3545         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed)
3546         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict)
3547         (*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>)
3548         (@aarch64_sve_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>)
3549         (@aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>)
3550         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed)
3551         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict)
3552         (*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>)
3553         (@aarch64_sve_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>)
3554         (*cond_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>)
3555         (@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
3556         (*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
3557         (@aarch64_sve_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>)
3558         (*cond_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>)
3559         (@aarch64_brk<brk_op>, *aarch64_sve_<inc_dec><mode>_cntp): Update
3560         to new syntax.
3561         * config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>)
3562         (load_pair<DREG:mode><DREG2:mode>)
3563         (vec_store_pair<DREG:mode><DREG2:mode>, aarch64_simd_stp<mode>)
3564         (aarch64_simd_mov_from_<mode>low)
3565         (aarch64_simd_mov_from_<mode>high, and<mode>3<vczle><vczbe>)
3566         (ior<mode>3<vczle><vczbe>, aarch64_simd_ashr<mode><vczle><vczbe>)
3567         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>)
3568         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>)
3569         (aarch64_simd_bsldi_internal, aarch64_simd_bsldi_alt)
3570         (store_pair_lanes<mode>, *aarch64_combine_internal<mode>)
3571         (*aarch64_combine_internal_be<mode>, *aarch64_combinez<mode>)
3572         (*aarch64_combinez_be<mode>)
3573         (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_cm<optab>di)
3574         (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_mov<mode>)
3575         (*aarch64_be_mov<mode>, *aarch64_be_movoi): Update to new syntax.
3577 2023-10-03  Andrea Corallo  <andrea.corallo@arm.com>
3579         * gensupport.cc (convert_syntax): Skip spaces before "cons:"
3580         in new compact pattern syntax.
3582 2023-10-03  Richard Sandiford  <richard.sandiford@arm.com>
3584         * gensupport.cc (convert_syntax): Updated to support unordered
3585         constraints in compact syntax.
3587 2023-10-02  Michael Meissner  <meissner@linux.ibm.com>
3589         * config/rs6000/rs6000.md (UNSPEC_COPYSIGN): Delete.
3590         (copysign<mode>3_fcpsg): Use copysign RTL instead of UNSPEC.
3591         (copysign<mode>3_hard): Likewise.
3592         (copysign<mode>3_soft): Likewise.
3593         * config/rs6000/vector.md (vector_copysign<mode>3): Use copysign RTL
3594         instead of UNSPEC.
3595         * config/rs6000/vsx.md (vsx_copysign<mode>3): Use copysign RTL instead
3596         of UNSPEC.
3598 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
3600         * diagnostic-format-json.cc (toplevel_array): Remove global in
3601         favor of json_output_format::m_top_level_array.
3602         (cur_group): Likewise, for json_output_format::m_cur_group.
3603         (cur_children_array): Likewise, for
3604         json_output_format::m_cur_children_array.
3605         (class json_output_format): New.
3606         (json_begin_diagnostic): Remove, in favor of
3607         json_output_format::on_begin_diagnostic.
3608         (json_end_diagnostic): Convert to...
3609         (json_output_format::on_end_diagnostic): ...this.
3610         (json_begin_group): Remove, in favor of
3611         json_output_format::on_begin_group.
3612         (json_end_group): Remove, in favor of
3613         json_output_format::on_end_group.
3614         (json_flush_to_file): Remove, in favor of
3615         json_output_format::flush_to_file.
3616         (json_stderr_final_cb): Remove, in favor of json_output_format
3617         dtor.
3618         (json_output_base_file_name): Remove global.
3619         (class json_stderr_output_format): New.
3620         (json_file_final_cb): Remove.
3621         (class json_file_output_format): New.
3622         (json_emit_diagram): Remove.
3623         (diagnostic_output_format_init_json): Update.
3624         (diagnostic_output_format_init_json_file): Update.
3625         * diagnostic-format-sarif.cc (the_builder): Remove this global,
3626         moving to a field of the sarif_output_format.
3627         (sarif_builder::maybe_make_artifact_content_object): Use the
3628         context's m_file_cache.
3629         (get_source_lines): Convert to...
3630         (sarif_builder::get_source_lines): ...this, using context's
3631         m_file_cache.
3632         (sarif_begin_diagnostic): Remove, in favor of
3633         sarif_output_format::on_begin_diagnostic.
3634         (sarif_end_diagnostic): Remove, in favor of
3635         sarif_output_format::on_end_diagnostic.
3636         (sarif_begin_group): Remove, in favor of
3637         sarif_output_format::on_begin_group.
3638         (sarif_end_group): Remove, in favor of
3639         sarif_output_format::on_end_group.
3640         (sarif_flush_to_file): Delete.
3641         (sarif_stderr_final_cb): Delete.
3642         (sarif_output_base_file_name): Delete.
3643         (sarif_file_final_cb): Delete.
3644         (class sarif_output_format): New.
3645         (sarif_emit_diagram): Delete.
3646         (class sarif_stream_output_format): New.
3647         (class sarif_file_output_format): New.
3648         (diagnostic_output_format_init_sarif): Update.
3649         (diagnostic_output_format_init_sarif_stderr): Update.
3650         (diagnostic_output_format_init_sarif_file): Update.
3651         (diagnostic_output_format_init_sarif_stream): Update.
3652         * diagnostic-show-locus.cc (diagnostic_show_locus): Update.
3653         * diagnostic.cc (default_diagnostic_final_cb): Delete, moving to
3654         diagnostic_text_output_format's dtor.
3655         (diagnostic_initialize): Update, making a new instance of
3656         diagnostic_text_output_format.
3657         (diagnostic_finish): Delete m_output_format, rather than calling
3658         final_cb.
3659         (diagnostic_report_diagnostic): Assert that m_output_format is
3660         non-NULL.  Replace call to begin_group_cb with call to
3661         m_output_format->on_begin_group.  Replace call to
3662         diagnostic_starter with call to
3663         m_output_format->on_begin_diagnostic.  Replace call to
3664         diagnostic_finalizer with call to
3665         m_output_format->on_end_diagnostic.
3666         (diagnostic_emit_diagram): Replace both optional call to
3667         m_diagrams.m_emission_cb and default implementation with call to
3668         m_output_format->on_diagram.  Move default implementation to
3669         diagnostic_text_output_format::on_diagram.
3670         (auto_diagnostic_group::~auto_diagnostic_group): Replace call to
3671         end_group_cb with call to m_output_format->on_end_group.
3672         (diagnostic_text_output_format::~diagnostic_text_output_format):
3673         New, based on default_diagnostic_final_cb.
3674         (diagnostic_text_output_format::on_begin_diagnostic): New, based
3675         on code from diagnostic_report_diagnostic.
3676         (diagnostic_text_output_format::on_end_diagnostic): Likewise.
3677         (diagnostic_text_output_format::on_diagram): New, based on code
3678         from diagnostic_emit_diagram.
3679         * diagnostic.h (class diagnostic_output_format): New.
3680         (class diagnostic_text_output_format): New.
3681         (diagnostic_context::begin_diagnostic): Move to...
3682         (diagnostic_context::m_text_callbacks::begin_diagnostic): ...here.
3683         (diagnostic_context::start_span): Move to...
3684         (diagnostic_context::m_text_callbacks::start_span): ...here.
3685         (diagnostic_context::end_diagnostic): Move to...
3686         (diagnostic_context::m_text_callbacks::end_diagnostic): ...here.
3687         (diagnostic_context::begin_group_cb): Remove, in favor of
3688         m_output_format->on_begin_group.
3689         (diagnostic_context::end_group_cb): Remove, in favor of
3690         m_output_format->on_end_group.
3691         (diagnostic_context::final_cb): Remove, in favor of
3692         m_output_format's dtor.
3693         (diagnostic_context::m_output_format): New field.
3694         (diagnostic_context::m_diagrams.m_emission_cb): Remove, in favor
3695         of m_output_format->on_diagram.
3696         (diagnostic_starter): Update.
3697         (diagnostic_finalizer): Update.
3698         (diagnostic_output_format_init_sarif_stream): New.
3699         * input.cc (location_get_source_line): Move implementation apart from
3700         call to diagnostic_file_cache_init to...
3701         (file_cache::get_source_line): ...this new function...
3702         (location_get_source_line): ...and reintroduce, rewritten in terms of
3703         file_cache::get_source_line.
3704         (get_source_file_content): Likewise, refactor into...
3705         (file_cache::get_source_file_content): ...this new function.
3706         * input.h (file_cache::get_source_line): New decl.
3707         (file_cache::get_source_file_content): New decl.
3708         * selftest-diagnostic.cc
3709         (test_diagnostic_context::test_diagnostic_context): Update.
3710         * tree-diagnostic-path.cc (event_range::print): Update for
3711         change to diagnostic_context's start_span callback.
3713 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
3715         * diagnostic-show-locus.cc: Update for reorganization of
3716         source-printing fields of diagnostic_context.
3717         * diagnostic.cc (diagnostic_set_caret_max_width): Likewise.
3718         (diagnostic_initialize): Likewise.
3719         * diagnostic.h (diagnostic_context::show_caret): Move to...
3720         (diagnostic_context::m_source_printing::enabled): ...here.
3721         (diagnostic_context::caret_max_width): Move to...
3722         (diagnostic_context::m_source_printing::max_width): ...here.
3723         (diagnostic_context::caret_chars): Move to...
3724         (diagnostic_context::m_source_printing::caret_chars): ...here.
3725         (diagnostic_context::colorize_source_p): Move to...
3726         (diagnostic_context::m_source_printing::colorize_source_p): ...here.
3727         (diagnostic_context::show_labels_p): Move to...
3728         (diagnostic_context::m_source_printing::show_labels_p): ...here.
3729         (diagnostic_context::show_line_numbers_p): Move to...
3730         (diagnostic_context::m_source_printing::show_line_numbers_p): ...here.
3731         (diagnostic_context::min_margin_width): Move to...
3732         (diagnostic_context::m_source_printing::min_margin_width): ...here.
3733         (diagnostic_context::show_ruler_p): Move to...
3734         (diagnostic_context::m_source_printing::show_ruler_p): ...here.
3735         (diagnostic_same_line): Update for above changes.
3736         * opts.cc (common_handle_option): Update for reorganization of
3737         source-printing fields of diagnostic_context.
3738         * selftest-diagnostic.cc
3739         (test_diagnostic_context::test_diagnostic_context): Likewise.
3740         * toplev.cc (general_init): Likewise.
3741         * tree-diagnostic-path.cc (struct event_range): Likewise.
3743 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
3745         * diagnostic.cc (diagnostic_initialize): Initialize
3746         set_locations_cb to nullptr.
3748 2023-10-02  Wilco Dijkstra  <wilco.dijkstra@arm.com>
3750         PR target/111235
3751         * config/arm/constraints.md: Remove Pf constraint.
3752         * config/arm/sync.md (arm_atomic_load<mode>): Add new pattern.
3753         (arm_atomic_load_acquire<mode>): Likewise.
3754         (arm_atomic_store<mode>): Likewise.
3755         (arm_atomic_store_release<mode>): Likewise.
3756         (atomic_load<mode>): Switch patterns to define_expand.
3757         (atomic_store<mode>): Likewise.
3758         (arm_atomic_loaddi2_ldrd): Remove predication.
3759         (arm_load_exclusive<mode>): Likewise.
3760         (arm_load_acquire_exclusive<mode>): Likewise.
3761         (arm_load_exclusivesi): Likewise.
3762         (arm_load_acquire_exclusivesi): Likewise.
3763         (arm_load_exclusivedi): Likewise.
3764         (arm_load_acquire_exclusivedi): Likewise.
3765         (arm_store_exclusive<mode>): Likewise.
3766         (arm_store_release_exclusivedi): Likewise.
3767         (arm_store_release_exclusive<mode>): Likewise.
3768         * config/arm/unspecs.md: Add VUNSPEC_LDR and VUNSPEC_STR.
3770 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
3772         Revert:
3773         2023-10-02  Tamar Christina  <tamar.christina@arm.com>
3775         PR tree-optimization/109154
3776         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
3777         (cmp_arg_entry): New.
3778         (predicate_scalar_phi): Use it.
3780 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
3782         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Renamed to..
3783         (@xorsign<mode>3): ...This.
3784         * config/aarch64/aarch64.md (xorsign<mode>3): Renamed to...
3785         (@xorsign<mode>3): ..This and emit vectors directly
3786         * config/aarch64/iterators.md (VCONQ): Add SF and DF.
3788 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
3790         * emit-rtl.cc (validate_subreg): Relax subreg rule.
3792 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
3794         PR tree-optimization/109154
3795         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
3796         (cmp_arg_entry): New.
3797         (predicate_scalar_phi): Use it.
3799 2023-10-02  Richard Sandiford  <richard.sandiford@arm.com>
3801         PR bootstrap/111642
3802         * rtl-tests.cc (const_poly_int_tests<N>::run): Use a local
3803         poly_int64 typedef.
3804         * simplify-rtx.cc (simplify_const_poly_int_tests<N>::run): Likewise.
3806 2023-10-02  Joern Rennecke  <joern.rennecke@embecosm.com>
3807             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3809         * config/riscv/riscv-protos.h (riscv_vector::expand_block_move):
3810         Declare.
3811         * config/riscv/riscv-v.cc (riscv_vector::expand_block_move):
3812         New function.
3813         * config/riscv/riscv.md (cpymemsi): Use riscv_vector::expand_block_move.
3814         Change to ..
3815         (cpymem<P:mode>) .. this.
3817 2023-10-01  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
3819         * combine.cc (simplify_compare_const): Properly handle unsigned
3820         constants while narrowing comparison of memory and constants.
3822 2023-10-01  Feng Wang  <wangfeng@eswincomputing.com>
3824         * config/riscv/riscv-opts.h (MASK_ZICSR): Delete.
3825         (MASK_ZIFENCEI): Delete;
3826         (MASK_ZIHINTNTL): Ditto.
3827         (MASK_ZIHINTPAUSE): Ditto.
3828         (TARGET_ZICSR): Ditto.
3829         (TARGET_ZIFENCEI): Ditto.
3830         (TARGET_ZIHINTNTL): Ditto.
3831         (TARGET_ZIHINTPAUSE): Ditto.
3832         (MASK_ZAWRS): Ditto.
3833         (TARGET_ZAWRS): Ditto.
3834         (MASK_ZBA): Ditto.
3835         (MASK_ZBB): Ditto.
3836         (MASK_ZBC): Ditto.
3837         (MASK_ZBS): Ditto.
3838         (TARGET_ZBA): Ditto.
3839         (TARGET_ZBB): Ditto.
3840         (TARGET_ZBC): Ditto.
3841         (TARGET_ZBS): Ditto.
3842         (MASK_ZFINX): Ditto.
3843         (MASK_ZDINX): Ditto.
3844         (MASK_ZHINX): Ditto.
3845         (MASK_ZHINXMIN): Ditto.
3846         (TARGET_ZFINX): Ditto.
3847         (TARGET_ZDINX): Ditto.
3848         (TARGET_ZHINX): Ditto.
3849         (TARGET_ZHINXMIN): Ditto.
3850         (MASK_ZBKB): Ditto.
3851         (MASK_ZBKC): Ditto.
3852         (MASK_ZBKX): Ditto.
3853         (MASK_ZKNE): Ditto.
3854         (MASK_ZKND): Ditto.
3855         (MASK_ZKNH): Ditto.
3856         (MASK_ZKR): Ditto.
3857         (MASK_ZKSED): Ditto.
3858         (MASK_ZKSH): Ditto.
3859         (MASK_ZKT): Ditto.
3860         (TARGET_ZBKB): Ditto.
3861         (TARGET_ZBKC): Ditto.
3862         (TARGET_ZBKX): Ditto.
3863         (TARGET_ZKNE): Ditto.
3864         (TARGET_ZKND): Ditto.
3865         (TARGET_ZKNH): Ditto.
3866         (TARGET_ZKR): Ditto.
3867         (TARGET_ZKSED): Ditto.
3868         (TARGET_ZKSH): Ditto.
3869         (TARGET_ZKT): Ditto.
3870         (MASK_ZTSO): Ditto.
3871         (TARGET_ZTSO): Ditto.
3872         (MASK_VECTOR_ELEN_32): Ditto.
3873         (MASK_VECTOR_ELEN_64): Ditto.
3874         (MASK_VECTOR_ELEN_FP_32): Ditto.
3875         (MASK_VECTOR_ELEN_FP_64): Ditto.
3876         (MASK_VECTOR_ELEN_FP_16): Ditto.
3877         (TARGET_VECTOR_ELEN_32): Ditto.
3878         (TARGET_VECTOR_ELEN_64): Ditto.
3879         (TARGET_VECTOR_ELEN_FP_32): Ditto.
3880         (TARGET_VECTOR_ELEN_FP_64): Ditto.
3881         (TARGET_VECTOR_ELEN_FP_16): Ditto.
3882         (MASK_ZVBB): Ditto.
3883         (MASK_ZVBC): Ditto.
3884         (TARGET_ZVBB): Ditto.
3885         (TARGET_ZVBC): Ditto.
3886         (MASK_ZVKG): Ditto.
3887         (MASK_ZVKNED): Ditto.
3888         (MASK_ZVKNHA): Ditto.
3889         (MASK_ZVKNHB): Ditto.
3890         (MASK_ZVKSED): Ditto.
3891         (MASK_ZVKSH): Ditto.
3892         (MASK_ZVKN): Ditto.
3893         (MASK_ZVKNC): Ditto.
3894         (MASK_ZVKNG): Ditto.
3895         (MASK_ZVKS): Ditto.
3896         (MASK_ZVKSC): Ditto.
3897         (MASK_ZVKSG): Ditto.
3898         (MASK_ZVKT): Ditto.
3899         (TARGET_ZVKG): Ditto.
3900         (TARGET_ZVKNED): Ditto.
3901         (TARGET_ZVKNHA): Ditto.
3902         (TARGET_ZVKNHB): Ditto.
3903         (TARGET_ZVKSED): Ditto.
3904         (TARGET_ZVKSH): Ditto.
3905         (TARGET_ZVKN): Ditto.
3906         (TARGET_ZVKNC): Ditto.
3907         (TARGET_ZVKNG): Ditto.
3908         (TARGET_ZVKS): Ditto.
3909         (TARGET_ZVKSC): Ditto.
3910         (TARGET_ZVKSG): Ditto.
3911         (TARGET_ZVKT): Ditto.
3912         (MASK_ZVL32B): Ditto.
3913         (MASK_ZVL64B): Ditto.
3914         (MASK_ZVL128B): Ditto.
3915         (MASK_ZVL256B): Ditto.
3916         (MASK_ZVL512B): Ditto.
3917         (MASK_ZVL1024B): Ditto.
3918         (MASK_ZVL2048B): Ditto.
3919         (MASK_ZVL4096B): Ditto.
3920         (MASK_ZVL8192B): Ditto.
3921         (MASK_ZVL16384B): Ditto.
3922         (MASK_ZVL32768B): Ditto.
3923         (MASK_ZVL65536B): Ditto.
3924         (TARGET_ZVL32B): Ditto.
3925         (TARGET_ZVL64B): Ditto.
3926         (TARGET_ZVL128B): Ditto.
3927         (TARGET_ZVL256B): Ditto.
3928         (TARGET_ZVL512B): Ditto.
3929         (TARGET_ZVL1024B): Ditto.
3930         (TARGET_ZVL2048B): Ditto.
3931         (TARGET_ZVL4096B): Ditto.
3932         (TARGET_ZVL8192B): Ditto.
3933         (TARGET_ZVL16384B): Ditto.
3934         (TARGET_ZVL32768B): Ditto.
3935         (TARGET_ZVL65536B): Ditto.
3936         (MASK_ZICBOZ): Ditto.
3937         (MASK_ZICBOM): Ditto.
3938         (MASK_ZICBOP): Ditto.
3939         (TARGET_ZICBOZ): Ditto.
3940         (TARGET_ZICBOM): Ditto.
3941         (TARGET_ZICBOP): Ditto.
3942         (MASK_ZICOND): Ditto.
3943         (TARGET_ZICOND): Ditto.
3944         (MASK_ZFA): Ditto.
3945         (TARGET_ZFA): Ditto.
3946         (MASK_ZFHMIN): Ditto.
3947         (MASK_ZFH): Ditto.
3948         (MASK_ZVFHMIN): Ditto.
3949         (MASK_ZVFH): Ditto.
3950         (TARGET_ZFHMIN): Ditto.
3951         (TARGET_ZFH): Ditto.
3952         (TARGET_ZVFHMIN): Ditto.
3953         (TARGET_ZVFH): Ditto.
3954         (MASK_ZMMUL): Ditto.
3955         (TARGET_ZMMUL): Ditto.
3956         (MASK_ZCA): Ditto.
3957         (MASK_ZCB): Ditto.
3958         (MASK_ZCE): Ditto.
3959         (MASK_ZCF): Ditto.
3960         (MASK_ZCD): Ditto.
3961         (MASK_ZCMP): Ditto.
3962         (MASK_ZCMT): Ditto.
3963         (TARGET_ZCA): Ditto.
3964         (TARGET_ZCB): Ditto.
3965         (TARGET_ZCE): Ditto.
3966         (TARGET_ZCF): Ditto.
3967         (TARGET_ZCD): Ditto.
3968         (TARGET_ZCMP): Ditto.
3969         (TARGET_ZCMT): Ditto.
3970         (MASK_SVINVAL): Ditto.
3971         (MASK_SVNAPOT): Ditto.
3972         (TARGET_SVINVAL): Ditto.
3973         (TARGET_SVNAPOT): Ditto.
3974         (MASK_XTHEADBA): Ditto.
3975         (MASK_XTHEADBB): Ditto.
3976         (MASK_XTHEADBS): Ditto.
3977         (MASK_XTHEADCMO): Ditto.
3978         (MASK_XTHEADCONDMOV): Ditto.
3979         (MASK_XTHEADFMEMIDX): Ditto.
3980         (MASK_XTHEADFMV): Ditto.
3981         (MASK_XTHEADINT): Ditto.
3982         (MASK_XTHEADMAC): Ditto.
3983         (MASK_XTHEADMEMIDX): Ditto.
3984         (MASK_XTHEADMEMPAIR): Ditto.
3985         (MASK_XTHEADSYNC): Ditto.
3986         (TARGET_XTHEADBA): Ditto.
3987         (TARGET_XTHEADBB): Ditto.
3988         (TARGET_XTHEADBS): Ditto.
3989         (TARGET_XTHEADCMO): Ditto.
3990         (TARGET_XTHEADCONDMOV): Ditto.
3991         (TARGET_XTHEADFMEMIDX): Ditto.
3992         (TARGET_XTHEADFMV): Ditto.
3993         (TARGET_XTHEADINT): Ditto.
3994         (TARGET_XTHEADMAC): Ditto.
3995         (TARGET_XTHEADMEMIDX): Ditto.
3996         (TARGET_XTHEADMEMPAIR): Ditto.
3997         (TARGET_XTHEADSYNC): Ditto.
3998         (MASK_XVENTANACONDOPS): Ditto.
3999         (TARGET_XVENTANACONDOPS): Ditto.
4000         * config/riscv/riscv.opt: Add new Mask defination.
4001         * doc/options.texi: Add explanation for this new usage.
4002         * opt-functions.awk: Add new function to find the index
4003         of target variable from extra_target_vars.
4004         * opt-read.awk: Add new function to store the Mask flags.
4005         * opth-gen.awk: Add new function to output the defination of
4006         Mask Macro and Target Macro.
4008 2023-10-01  Joern Rennecke  <joern.rennecke@embecosm.com>
4009             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4010             Juzhe-Zhong   <juzhe.zhong@rivai.ai>
4012         PR target/111566
4013         * config/riscv/riscv-protos.h (riscv_vector::legitimize_move):
4014         Change second parameter to rtx *.
4015         * config/riscv/riscv-v.cc (risv_vector::legitimize_move): Likewise.
4016         * config/riscv/vector.md: Changed callers of
4017         riscv_vector::legitimize_move.
4018         (*mov<mode>_mem_to_mem): Remove.
4020 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
4022         PR target/111649
4023         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::vector_infos_manager):
4024         Replace safe_grow with safe_grow_cleared.
4026 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
4028         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Fix a pasto
4029         in function comment.
4031 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
4033         PR middle-end/111625
4034         PR middle-end/111637
4035         * gimple-lower-bitint.cc (range_to_prec): Use prec or -prec if
4036         r.undefined_p ().
4037         (bitint_large_huge::handle_operand_addr): For uninitialized operands
4038         use limb_prec or -limb_prec precision.
4040 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
4042         * vec.h (quick_grow): Uncomment static_assert.
4044 2023-09-30  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
4046         * config/riscv/bitmanip.md (*<optab>_not_const<mode>): Added type attribute
4048 2023-09-29  Xiao Zeng  <zengxiao@eswincomputing.com>
4050         * config/riscv/riscv.cc (riscv_rtx_costs): Better handle costing
4051         SETs when the outer code is INSN.
4053 2023-09-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
4055         * config/riscv/bitmanip.md (*<optab>_not_const<mode>): New split
4056         pattern.
4058 2023-09-29  Richard Sandiford  <richard.sandiford@arm.com>
4060         * poly-int.h (poly_int_pod): Delete.
4061         (poly_coeff_traits::init_cast): New type.
4062         (poly_int_full, poly_int_hungry, poly_int_fullness): New structures.
4063         (poly_int): Replace constructors that take 1 and 2 coefficients with
4064         a general one that takes an arbitrary number of coefficients.
4065         Delegate initialization to two new private constructors, one of
4066         which uses the coefficients as-is and one of which adds an extra
4067         zero of the appropriate type (and precision, where applicable).
4068         (gt_ggc_mx, gt_pch_nx): Operate on poly_ints rather than poly_int_pods.
4069         * poly-int-types.h (poly_uint16_pod, poly_int64_pod, poly_uint64_pod)
4070         (poly_offset_int_pod, poly_wide_int_pod, poly_widest_int_pod): Delete.
4071         * gengtype.cc (main): Don't register poly_int64_pod.
4072         * calls.cc (initialize_argument_information): Use poly_int rather
4073         than poly_int_pod.
4074         (combine_pending_stack_adjustment_and_call): Likewise.
4075         * config/aarch64/aarch64.cc (pure_scalable_type_info): Likewise.
4076         * data-streamer.h (bp_unpack_poly_value): Likewise.
4077         * dwarf2cfi.cc (struct dw_trace_info): Likewise.
4078         (struct queued_reg_save): Likewise.
4079         * dwarf2out.h (struct dw_cfa_location): Likewise.
4080         * emit-rtl.h (struct incoming_args): Likewise.
4081         (struct rtl_data): Likewise.
4082         * expr.cc (get_bit_range): Likewise.
4083         (get_inner_reference): Likewise.
4084         * expr.h (get_bit_range): Likewise.
4085         * fold-const.cc (split_address_to_core_and_offset): Likewise.
4086         (ptr_difference_const): Likewise.
4087         * fold-const.h (ptr_difference_const): Likewise.
4088         * function.cc (try_fit_stack_local): Likewise.
4089         (instantiate_new_reg): Likewise.
4090         * function.h (struct expr_status): Likewise.
4091         (struct args_size): Likewise.
4092         * genmodes.cc (ZERO_COEFFS): Likewise.
4093         (mode_size_inline): Likewise.
4094         (mode_nunits_inline): Likewise.
4095         (emit_mode_precision): Likewise.
4096         (emit_mode_size): Likewise.
4097         (emit_mode_nunits): Likewise.
4098         * gimple-fold.cc (get_base_constructor): Likewise.
4099         * gimple-ssa-store-merging.cc (struct symbolic_number): Likewise.
4100         * inchash.h (class hash): Likewise.
4101         * ipa-modref-tree.cc (modref_access_node::dump): Likewise.
4102         * ipa-modref.cc (modref_access_analysis::merge_call_side_effects):
4103         Likewise.
4104         * ira-int.h (ira_spilled_reg_stack_slot): Likewise.
4105         * lra-eliminations.cc (self_elim_offsets): Likewise.
4106         * machmode.h (mode_size, mode_precision, mode_nunits): Likewise.
4107         * omp-low.cc (omplow_simd_context): Likewise.
4108         * pretty-print.cc (pp_wide_integer): Likewise.
4109         * pretty-print.h (pp_wide_integer): Likewise.
4110         * reload.cc (struct decomposition): Likewise.
4111         * reload.h (struct reload): Likewise.
4112         * reload1.cc (spill_stack_slot_width): Likewise.
4113         (struct elim_table): Likewise.
4114         (offsets_at): Likewise.
4115         (init_eliminable_invariants): Likewise.
4116         * rtl.h (union rtunion): Likewise.
4117         (poly_int_rtx_p): Likewise.
4118         (strip_offset): Likewise.
4119         (strip_offset_and_add): Likewise.
4120         * rtlanal.cc (strip_offset): Likewise.
4121         * tree-dfa.cc (get_ref_base_and_extent): Likewise.
4122         (get_addr_base_and_unit_offset_1): Likewise.
4123         (get_addr_base_and_unit_offset): Likewise.
4124         * tree-dfa.h (get_ref_base_and_extent): Likewise.
4125         (get_addr_base_and_unit_offset_1): Likewise.
4126         (get_addr_base_and_unit_offset): Likewise.
4127         * tree-ssa-loop-ivopts.cc (struct iv_use): Likewise.
4128         (strip_offset): Likewise.
4129         * tree-ssa-sccvn.h (struct vn_reference_op_struct): Likewise.
4130         * tree.cc (ptrdiff_tree_p): Likewise.
4131         * tree.h (poly_int_tree_p): Likewise.
4132         (ptrdiff_tree_p): Likewise.
4133         (get_inner_reference): Likewise.
4135 2023-09-29  John David Anglin  <danglin@gcc.gnu.org>
4137         * config/pa/pa.md (memory_barrier): Revise comment.
4138         (memory_barrier_64, memory_barrier_32): Use ldcw,co on PA 2.0.
4139         * config/pa/pa.opt (coherent-ldcw): Change default to disabled.
4141 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
4143         * vec.h (quick_insert, ordered_remove, unordered_remove,
4144         block_remove, qsort, sort, stablesort, quick_grow): Guard
4145         std::is_trivially_{copyable,default_constructible} and
4146         vec_detail::is_trivially_copyable_or_pair static assertions
4147         with GCC_VERSION >= 5000.
4148         (vec_detail::is_trivially_copyable_or_pair): Guard definition
4149         with GCC_VERSION >= 5000.
4151 2023-09-29  Manos Anagnostakis  <manos.anagnostakis@vrull.eu>
4153         * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): Removed.
4154         (enum aarch64_ldp_stp_policy): Merged enums aarch64_ldp_policy
4155         and aarch64_stp_policy to aarch64_ldp_stp_policy.
4156         (enum aarch64_stp_policy): Removed.
4157         * config/aarch64/aarch64-protos.h (struct tune_params): Removed
4158         aarch64_ldp_policy_model and aarch64_stp_policy_model enum types
4159         and left only the definitions to the aarch64-opts one.
4160         * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): Removed.
4161         (aarch64_parse_stp_policy): Removed.
4162         (aarch64_override_options_internal): Removed calls to parsing
4163         functions and added obvious direct assignments.
4164         (aarch64_mem_ok_with_ldpstp_policy_model): Improved
4165         code quality based on the new changes.
4166         * config/aarch64/aarch64.opt: Use single enum type
4167         aarch64_ldp_stp_policy for both ldp and stp options.
4169 2023-09-29  Richard Biener  <rguenther@suse.de>
4171         PR tree-optimization/111583
4172         * tree-loop-distribution.cc (find_single_drs): Ensure the
4173         load/store are always executed.
4175 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
4177         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Use
4178         quick_grow_cleared method on unprom rather than quick_grow.
4180 2023-09-29  Sergei Trofimovich  <siarheit@google.com>
4182         PR middle-end/111505
4183         * ggc-common.cc (ggc_zero_out_root_pointers, ggc_common_finalize):
4184         Add new helper. Use helper instead of memset() to wipe out pointers.
4186 2023-09-29  Richard Sandiford  <richard.sandiford@arm.com>
4188         * builtins.h (c_readstr): Take a fixed_size_mode rather than a
4189         scalar_int_mode.
4190         * builtins.cc (c_readstr): Likewise.  Build a local array of
4191         bytes and use native_decode_rtx to get the rtx image.
4192         (builtin_memcpy_read_str): Simplify accordingly.
4193         (builtin_strncpy_read_str): Likewise.
4194         (builtin_memset_read_str): Likewise.
4195         (builtin_memset_gen_str): Likewise.
4196         * expr.cc (string_cst_read_str): Likewise.
4198 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
4200         * tree-ssa-loop-im.cc (tree_ssa_lim_initialize): Use quick_grow_cleared
4201         instead of quick_grow on vec<bitmap_head> members.
4202         * cfganal.cc (control_dependences::control_dependences): Likewise.
4203         * rtl-ssa/blocks.cc (function_info::build_info::build_info): Likewise.
4204         (function_info::place_phis): Use safe_grow_cleared instead of safe_grow
4205         on auto_vec<bitmap_head> vars.
4206         * tree-ssa-live.cc (compute_live_vars): Use quick_grow_cleared instead
4207         of quick_grow on vec<bitmap_head> var.
4209 2023-09-28  Vladimir N. Makarov  <vmakarov@redhat.com>
4211         Revert:
4212         2023-09-14  Vladimir N. Makarov  <vmakarov@redhat.com>
4214         * ira-costs.cc (find_costs_and_classes): Decrease memory cost
4215         by equiv savings.
4217 2023-09-28  Wilco Dijkstra  <wilco.dijkstra@arm.com>
4219         PR target/111121
4220         * config/aarch64/aarch64.md (aarch64_movmemdi): Add new expander.
4221         (movmemdi): Call aarch64_expand_cpymem_mops for correct expansion.
4222         * config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Add support
4223         for memmove.
4224         * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem_mops): Add new
4225         function.
4227 2023-09-28  Pan Li  <pan2.li@intel.com>
4229         PR target/111506
4230         * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2):
4231         New pattern.
4232         * config/riscv/vector-iterators.md: New iterator.
4234 2023-09-28  Vladimir N. Makarov  <vmakarov@redhat.com>
4236         * rtl.h (lra_in_progress): Change type to bool.
4237         (ira_in_progress): Add new extern.
4238         * ira.cc (ira_in_progress): New global.
4239         (pass_ira::execute): Set up ira_in_progress.
4240         * lra.cc: (lra_in_progress): Change type to bool and initialize.
4241         (lra): Use bool values for lra_in_progress.
4242         * lra-eliminations.cc (init_elim_table): Ditto.
4244 2023-09-28  Richard Biener  <rguenther@suse.de>
4246         PR target/111600
4247         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
4248         Use a heap allocated worklist for CFG traversal instead of
4249         recursion.
4251 2023-09-28  Jakub Jelinek  <jakub@redhat.com>
4252             Jonathan Wakely  <jwakely@redhat.com>
4254         * vec.h: Mention in file comment limited support for non-POD types
4255         in some operations.
4256         (vec_destruct): New function template.
4257         (release): Use it for non-trivially destructible T.
4258         (truncate): Likewise.
4259         (quick_push): Perform a placement new into slot
4260         instead of assignment.
4261         (pop): For non-trivially destructible T return void
4262         rather than T & and destruct the popped element.
4263         (quick_insert, ordered_remove): Note that they aren't suitable
4264         for non-trivially copyable types.  Add static_asserts for that.
4265         (block_remove): Assert T is trivially copyable.
4266         (vec_detail::is_trivially_copyable_or_pair): New trait.
4267         (qsort, sort, stablesort): Assert T is trivially copyable or
4268         std::pair with both trivally copyable types.
4269         (quick_grow): Add assert T is trivially default constructible,
4270         for now commented out.
4271         (quick_grow_cleared): Don't call quick_grow, instead inline it
4272         by hand except for the new static_assert.
4273         (gt_ggc_mx): Assert T is trivially destructable.
4274         (auto_vec::operator=): Formatting fixes.
4275         (auto_vec::auto_vec): Likewise.
4276         (vec_safe_grow_cleared): Don't call vec_safe_grow, instead inline
4277         it manually and call quick_grow_cleared method rather than quick_grow.
4278         (safe_grow_cleared): Likewise.
4279         * edit-context.cc (class line_event): Move definition earlier.
4280         * tree-ssa-loop-im.cc (seq_entry::seq_entry): Make default ctor
4281         defaulted.
4282         * ipa-fnsummary.cc (evaluate_properties_for_edge): Use
4283         safe_grow_cleared instead of safe_grow followed by placement new
4284         constructing the elements.
4286 2023-09-28  Richard Sandiford  <richard.sandiford@arm.com>
4288         * dwarf2out.cc (mem_loc_descriptor): Remove unused variables.
4289         * tree-affine.cc (expr_to_aff_combination): Likewise.
4291 2023-09-28  Richard Biener  <rguenther@suse.de>
4293         PR tree-optimization/111614
4294         * tree-ssa-reassoc.cc (undistribute_bitref_for_vector): Properly
4295         convert the first vector when required.
4297 2023-09-28  xuli  <xuli1@eswincomputing.com>
4299         PR target/111533
4300         * config/riscv/riscv-v.cc (expand_const_vector): Fix bug.
4301         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix bug.
4303 2023-09-27  Sandra Loosemore  <sandra@codesourcery.com>
4305         * gimple.cc (gimple_copy): Add case GIMPLE_OMP_STRUCTURED_BLOCK.
4307 2023-09-27  Iain Sandoe  <iain@sandoe.co.uk>
4309         PR target/111610
4310         * configure: Regenerate.
4311         * configure.ac: Rename the missing dsymutil case to "DET_UNKNOWN".
4313 2023-09-27  Manos Anagnostakis  <manos.anagnostakis@vrull.eu>
4314             Philipp Tomsich  <philipp.tomsich@vrull.eu>
4315             Manolis Tsamis  <manolis.tsamis@vrull.eu>
4317         * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): New
4318         enum type.
4319         (enum aarch64_stp_policy): New enum type.
4320         * config/aarch64/aarch64-protos.h (struct tune_params): Add
4321         appropriate enums for the policies.
4322         (aarch64_mem_ok_with_ldpstp_policy_model): New declaration.
4323         * config/aarch64/aarch64-tuning-flags.def
4324         (AARCH64_EXTRA_TUNING_OPTION): Remove superseded tuning
4325         options.
4326         * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): New
4327         function to parse ldp-policy parameter.
4328         (aarch64_parse_stp_policy): New function to parse stp-policy parameter.
4329         (aarch64_override_options_internal): Call parsing functions.
4330         (aarch64_mem_ok_with_ldpstp_policy_model): New function.
4331         (aarch64_operands_ok_for_ldpstp): Add call to
4332         aarch64_mem_ok_with_ldpstp_policy_model for parameter-value
4333         check and alignment check and remove superseded ones.
4334         (aarch64_operands_adjust_ok_for_ldpstp): Add call to
4335         aarch64_mem_ok_with_ldpstp_policy_model for parameter-value
4336         check and alignment check and remove superseded ones.
4337         * config/aarch64/aarch64.opt (aarch64-ldp-policy): New param.
4338         (aarch64-stp-policy): New param.
4339         * doc/invoke.texi: Document the parameters accordingly.
4341 2023-09-27  Andre Vieira  <andre.simoesdiasvieira@arm.com>
4343         * tree-data-ref.cc (include calls.h): Add new include.
4344         (get_references_in_stmt): Correctly handle IFN_MASK_CALL.
4346 2023-09-27  Richard Biener  <rguenther@suse.de>
4348         * match.pd (abs (copysign (x, y)) -> abs (x)): New pattern.
4350 2023-09-27  Jakub Jelinek  <jakub@redhat.com>
4352         PR c++/105606
4353         * system.h (BROKEN_VALUE_INITIALIZATION): Don't define.
4354         * vec.h (vec_default_construct): Remove BROKEN_VALUE_INITIALIZATION
4355         workaround.
4356         * function.cc (assign_parm_find_data_types): Likewise.
4358 2023-09-27  Pan Li  <pan2.li@intel.com>
4360         * config/riscv/autovec.md (roundeven<mode>2): New pattern.
4361         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
4362         (enum insn_type): Ditto.
4363         (expand_vec_roundeven): New func decl.
4364         * config/riscv/riscv-v.cc (expand_vec_roundeven): New func impl.
4366 2023-09-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4368         PR target/111590
4369         * dse.cc (find_shift_sequence): Check the mode with access_size exist on the target.
4371 2023-09-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4373         * tree-if-conv.cc (is_cond_scalar_reduction): Fix comments.
4375 2023-09-27  Pan Li  <pan2.li@intel.com>
4377         * config/riscv/autovec.md (btrunc<mode>2): New pattern.
4378         * config/riscv/riscv-protos.h (expand_vec_trunc): New func decl.
4379         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): New func impl.
4380         (expand_vec_trunc): Ditto.
4382 2023-09-26  Hans-Peter Nilsson  <hp@axis.com>
4384         PR target/107567
4385         PR target/109166
4386         * builtins.cc (expand_builtin) <case BUILT_IN_ATOMIC_TEST_AND_SET>:
4387         Handle failure from expand_builtin_atomic_test_and_set.
4388         * optabs.cc (expand_atomic_test_and_set): When all attempts fail to
4389         generate atomic code through target support, return NULL
4390         instead of emitting non-atomic code.  Also, for code handling
4391         targetm.atomic_test_and_set_trueval != 1, gcc_assert result
4392         from calling emit_store_flag_force instead of returning NULL.
4394 2023-09-26  Andrew MacLeod  <amacleod@redhat.com>
4396         PR tree-optimization/111599
4397         * value-relation.cc (relation_oracle::valid_equivs): Ensure
4398         ssa_name is valid.
4400 2023-09-26  Andrew Pinski  <apinski@marvell.com>
4402         PR tree-optimization/106164
4403         PR tree-optimization/111456
4404         * match.pd (`(A ==/!= B) & (A CMP C)`):
4405         Support an optional cast on the second A.
4406         (`(A ==/!= B) | (A CMP C)`): Likewise.
4408 2023-09-26  Andrew Pinski  <apinski@marvell.com>
4410         PR tree-optimization/111469
4411         * tree-ssa-phiopt.cc (minmax_replacement): Fix
4412         the assumption for the `non-diamond` handling cases
4413         of diamond code.
4415 2023-09-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4417         * match.pd: Optimize COND_ADD reduction pattern.
4419 2023-09-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4421         PR tree-optimization/111594
4422         PR tree-optimization/110660
4423         * match.pd: Optimize COND_LEN_ADD reduction.
4425 2023-09-26  Pan Li  <pan2.li@intel.com>
4427         * config/riscv/autovec.md (round<mode>2): New pattern.
4428         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
4429         (enum insn_type): Ditto.
4430         (expand_vec_round): New function decl.
4431         * config/riscv/riscv-v.cc (expand_vec_round): New function impl.
4433 2023-09-26  Iain Sandoe  <iain@sandoe.co.uk>
4435         * config/darwin.h (DARWIN_CC1_SPEC): Remove -dynamiclib.
4437 2023-09-26  Tobias Burnus  <tobias@codesourcery.com>
4439         PR middle-end/111547
4440         * doc/invoke.texi (-fopenmp): Mention C++11 [[omp::decl(...)]] syntax.
4441         (-fopenmp-simd): Likewise. Clarify 'loop' directive semantic.
4443 2023-09-26  Pan Li  <pan2.li@intel.com>
4445         * config/riscv/autovec.md (rint<mode>2): New pattern.
4446         * config/riscv/riscv-protos.h (expand_vec_rint): New function decl.
4447         * config/riscv/riscv-v.cc (expand_vec_rint): New function impl.
4449 2023-09-26  Pan Li  <pan2.li@intel.com>
4451         * config/riscv/autovec.md (nearbyint<mode>2): New pattern.
4452         * config/riscv/riscv-protos.h (enum insn_type): New enum.
4453         (expand_vec_nearbyint): New function decl.
4454         * config/riscv/riscv-v.cc (expand_vec_nearbyint): New func impl.
4456 2023-09-26  Pan Li  <pan2.li@intel.com>
4458         * config/riscv/riscv-v.cc (gen_ceil_const_fp): Remove.
4459         (get_fp_rounding_coefficient): Rename.
4460         (gen_floor_const_fp): Remove.
4461         (expand_vec_ceil): Take renamed func.
4462         (expand_vec_floor): Ditto.
4464 2023-09-25  Vladimir N. Makarov  <vmakarov@redhat.com>
4466         PR middle-end/111497
4467         * lra-constraints.cc (lra_constraints): Copy substituted
4468         equivalence.
4469         * lra.cc (lra): Change comment for calling unshare_all_rtl_again.
4471 2023-09-25  Eric Botcazou  <ebotcazou@adacore.com>
4473         * gimple-range-gori.cc (gori_compute::logical_combine): Add missing
4474         return statement in the varying case.
4476 2023-09-25  Xi Ruoyao  <xry111@xry111.site>
4478         * doc/invoke.texi: Update -m[no-]explicit-relocs for r14-4160.
4480 2023-09-25  Andrew Pinski  <apinski@marvell.com>
4482         PR tree-optimization/110386
4483         * gimple-ssa-backprop.cc (strip_sign_op_1): Remove ABSU_EXPR.
4485 2023-09-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4487         PR target/111548
4488         * config/riscv/riscv-vsetvl.cc (earliest_pred_can_be_fused_p): Bugfix
4490 2023-09-25  Kewen Lin  <linkw@linux.ibm.com>
4492         PR target/111366
4493         * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Skip
4494         empty inline asm.
4496 2023-09-25  Kewen Lin  <linkw@linux.ibm.com>
4498         PR target/111380
4499         * config/rs6000/rs6000.cc (rs6000_can_inline_p): Adopt
4500         target_option_default_node when the callee has no option
4501         attributes, also simplify the existing code accordingly.
4503 2023-09-25  Guo Jie  <guojie@loongson.cn>
4505         * config/loongarch/lasx.md (lasx_vecinit_merge_<LASX:mode>): New
4506         pattern for vector construction.
4507         (vec_set<mode>_internal): Ditto.
4508         (lasx_xvinsgr2vr_<mode256_i_half>_internal): Ditto.
4509         (lasx_xvilvl_<lasxfmt_f>_internal): Ditto.
4510         * config/loongarch/loongarch.cc (loongarch_expand_vector_init):
4511         Optimized the implementation of vector construction.
4512         (loongarch_expand_vector_init_same): New function.
4513         * config/loongarch/lsx.md (lsx_vilvl_<lsxfmt_f>_internal): New
4514         pattern for vector construction.
4515         (lsx_vreplvei_mirror_<lsxfmt_f>): New pattern for vector
4516         construction.
4517         (vec_concatv2df): Ditto.
4518         (vec_concatv4sf): Ditto.
4520 2023-09-24  Pan Li  <pan2.li@intel.com>
4522         PR target/111546
4523         * config/riscv/riscv-v.cc
4524         (expand_vector_init_merge_repeating_sequence): Bugfix
4526 2023-09-24  Andrew Pinski  <apinski@marvell.com>
4528         PR tree-optimization/111543
4529         * match.pd (`(X & ~Y) & Y`, `(X | ~Y) | Y`): New patterns.
4531 2023-09-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4533         * config/riscv/autovec-opt.md: Extend VLS modes
4534         * config/riscv/vector-iterators.md: Ditto.
4536 2023-09-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4538         * config/riscv/autovec-opt.md: Add VLS modes for conditional ABS/SQRT.
4540 2023-09-23  Pan Li  <pan2.li@intel.com>
4542         * config/riscv/autovec.md (floor<mode>2): New pattern.
4543         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
4544         (enum insn_type): Ditto.
4545         (expand_vec_floor): New function decl.
4546         * config/riscv/riscv-v.cc (gen_floor_const_fp): New function impl.
4547         (expand_vec_floor): Ditto.
4549 2023-09-22  Pan Li  <pan2.li@intel.com>
4551         * config/riscv/riscv-v.cc (expand_vec_float_cmp_mask): Refactor.
4552         (emit_vec_float_cmp_mask): Rename.
4553         (expand_vec_copysign): Ditto.
4554         (emit_vec_copysign): Ditto.
4555         (emit_vec_abs): New function impl.
4556         (emit_vec_cvt_x_f): Ditto.
4557         (emit_vec_cvt_f_x): Ditto.
4558         (expand_vec_ceil): Ditto.
4560 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4562         * config/riscv/vector-iterators.md: Extend VLS modes.
4564 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4566         * config/riscv/riscv-v.cc (gen_const_vector_dup): Use global expand function.
4567         * config/riscv/vector.md (@vec_duplicate<mode>): Remove @.
4568         (vec_duplicate<mode>): Ditto.
4570 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4572         * config/riscv/autovec.md: Add VLS conditional patterns.
4573         * config/riscv/riscv-protos.h (expand_cond_unop): Ditto.
4574         (expand_cond_binop): Ditto.
4575         (expand_cond_ternop): Ditto.
4576         * config/riscv/riscv-v.cc (expand_cond_unop): Ditto.
4577         (expand_cond_binop): Ditto.
4578         (expand_cond_ternop): Ditto.
4580 2023-09-22  xuli  <xuli1@eswincomputing.com>
4582         PR target/111451
4583         * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Optimization of vrgather.vv
4584                                                         into vrgatherei16.vv.
4586 2023-09-22  Lehua Ding  <lehua.ding@rivai.ai>
4588         * config/riscv/autovec-opt.md (*cond_widen_reduc_plus_scal_<mode>):
4589         New combine patterns.
4590         * config/riscv/riscv-protos.h (enum insn_type): New insn_type.
4592 2023-09-22  Lehua Ding  <lehua.ding@rivai.ai>
4594         * config/riscv/riscv-protos.h (enum avl_type): New VLS avl_type.
4595         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Move comments.
4597 2023-09-22  Pan Li  <pan2.li@intel.com>
4599         * config/riscv/autovec.md (ceil<mode>2): New pattern.
4600         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
4601         (enum insn_type): Ditto.
4602         (expand_vec_ceil): New function decl.
4603         * config/riscv/riscv-v.cc (gen_ceil_const_fp): New function impl.
4604         (expand_vec_float_cmp_mask): Ditto.
4605         (expand_vec_copysign): Ditto.
4606         (expand_vec_ceil): Ditto.
4607         * config/riscv/vector.md: Add VLS mode support.
4609 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4611         * config/riscv/autovec.md: Extend VLS modes.
4613 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4615         * config/riscv/vector-iterators.md: Extend VLS modes.
4617 2023-09-21  Lehua Ding  <lehua.ding@rivai.ai>
4618             Robin Dapp  <rdapp.gcc@gmail.com>
4620         * config/riscv/riscv-v.cc (emit_vlmax_insn): Adjust comments.
4621         (emit_nonvlmax_insn): Adjust comments.
4622         (emit_vlmax_insn_lra): Adjust comments.
4624 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4626         * config.gcc (*linux*): Set rust target_objs, and
4627         target_has_targetrustm,
4628         * config/t-linux (linux-rust.o): New rule.
4629         * config/linux-rust.cc: New file.
4631 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4633         * config.gcc (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
4634         rust_target_objs and target_has_targetrustm.
4635         * config/t-winnt (winnt-rust.o): New rule.
4636         * config/winnt-rust.cc: New file.
4638 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4640         * config.gcc (*-*-fuchsia): Set tmake_rule, rust_target_objs,
4641         and target_has_targetrustm.
4642         * config/fuchsia-rust.cc: New file.
4643         * config/t-fuchsia: New file.
4645 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4647         * config.gcc (*-*-vxworks*): Set rust_target_objs and
4648         target_has_targetrustm.
4649         * config/t-vxworks (vxworks-rust.o): New rule.
4650         * config/vxworks-rust.cc: New file.
4652 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4654         * config.gcc (*-*-dragonfly*): Set rust_target_objs and
4655         target_has_targetrustm.
4656         * config/t-dragonfly (dragonfly-rust.o): New rule.
4657         * config/dragonfly-rust.cc: New file.
4659 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4661         * config.gcc (*-*-solaris2*): Set rust_target_objs and
4662         target_has_targetrustm.
4663         * config/t-sol2 (sol2-rust.o): New rule.
4664         * config/sol2-rust.cc: New file.
4666 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4668         * config.gcc (*-*-openbsd*): Set rust_target_objs and
4669         target_has_targetrustm.
4670         * config/t-openbsd (openbsd-rust.o): New rule.
4671         * config/openbsd-rust.cc: New file.
4673 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4675         * config.gcc (*-*-netbsd*): Set rust_target_objs and
4676         target_has_targetrustm.
4677         * config/t-netbsd (netbsd-rust.o): New rule.
4678         * config/netbsd-rust.cc: New file.
4680 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4682         * config.gcc (*-*-freebsd*): Set rust_target_objs and
4683         target_has_targetrustm.
4684         * config/t-freebsd (freebsd-rust.o): New rule.
4685         * config/freebsd-rust.cc: New file.
4687 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4689         * config.gcc (*-*-darwin*): Set rust_target_objs and
4690         target_has_targetrustm.
4691         * config/t-darwin (darwin-rust.o): New rule.
4692         * config/darwin-rust.cc: New file.
4694 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4696         * config/i386/t-i386 (i386-rust.o): New rule.
4697         * config/i386/i386-rust.cc: New file.
4698         * config/i386/i386-rust.h: New file.
4700 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4702         * doc/tm.texi: Regenerate.
4703         * doc/tm.texi.in: Document TARGET_RUST_OS_INFO.
4705 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4707         * doc/tm.texi: Regenerate.
4708         * doc/tm.texi.in: Add @node for Rust language and ABI, and document
4709         TARGET_RUST_CPU_INFO.
4711 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
4713         * Makefile.in (tm_rust_file_list, tm_rust_include_list, TM_RUST_H,
4714         RUST_TARGET_DEF, RUST_TARGET_H, RUST_TARGET_OBJS): New variables.
4715         (tm_rust.h, cs-tm_rust.h, default-rust.o,
4716         rust/rust-target-hooks-def.h, s-rust-target-hooks-def-h): New rules.
4717         (s-tm-texi): Also check timestamp on rust-target.def.
4718         (generated_files): Add TM_RUST_H and rust-target-hooks-def.h.
4719         (build/genhooks.o): Also depend on RUST_TARGET_DEF.
4720         * config.gcc (tm_rust_file, rust_target_objs, target_has_targetrustm):
4721         New variables.
4722         * configure: Regenerate.
4723         * configure.ac (tm_rust_file_list, tm_rust_include_list,
4724         rust_target_objs): Add substitutes.
4725         * doc/tm.texi: Regenerate.
4726         * doc/tm.texi.in (targetrustm): Document.
4727         (target_has_targetrustm): Document.
4728         * genhooks.cc: Include rust/rust-target.def.
4729         * config/default-rust.cc: New file.
4731 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4733         PR target/110751
4734         * config/riscv/autovec.md: Enable scratch rtx in ELSE operand.
4735         * config/riscv/predicates.md (autovec_else_operand): New predicate.
4736         * config/riscv/riscv-v.cc (get_else_operand): New function.
4737         (expand_cond_len_unop): Adapt ELSE value.
4738         (expand_cond_len_binop): Ditto.
4739         (expand_cond_len_ternop): Ditto.
4740         * config/riscv/riscv.cc (riscv_preferred_else_value): New function.
4741         (TARGET_PREFERRED_ELSE_VALUE): New targethook.
4743 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4745         PR target/111486
4746         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug.
4748 2023-09-21  Jiufu Guo  <guojiufu@linux.ibm.com>
4750         PR tree-optimization/111355
4751         * match.pd ((X + C) / N): Update pattern.
4753 2023-09-21  Jiufu Guo  <guojiufu@linux.ibm.com>
4755         * match.pd ((t * 2) / 2): Update to use overflow_free_p.
4757 2023-09-21  xuli  <xuli1@eswincomputing.com>
4759         PR target/111450
4760         * config/riscv/constraints.md (c01): const_int 1.
4761         (c02): const_int 2.
4762         (c04): const_int 4.
4763         (c08): const_int 8.
4764         * config/riscv/predicates.md (vector_eew8_stride_operand): New predicate for stride operand.
4765         (vector_eew16_stride_operand): Ditto.
4766         (vector_eew32_stride_operand): Ditto.
4767         (vector_eew64_stride_operand): Ditto.
4768         * config/riscv/vector-iterators.md: New iterator for stride operand.
4769         * config/riscv/vector.md: Add stride = element width constraint.
4771 2023-09-21  Lehua Ding  <lehua.ding@rivai.ai>
4773         * config/riscv/predicates.md (const_1_or_2_operand): Rename.
4774         (const_1_or_4_operand): Ditto.
4775         (vector_gs_scale_operand_16): Ditto.
4776         (vector_gs_scale_operand_32): Ditto.
4777         * config/riscv/vector-iterators.md: Adjust.
4779 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4781         * config/riscv/autovec.md: Extend VLS modes.
4782         * config/riscv/vector-iterators.md: Ditto.
4783         * config/riscv/vector.md: Ditto.
4785 2023-09-20  Andrew MacLeod  <amacleod@redhat.com>
4787         * gimple-range-cache.cc (ssa_cache::merge_range): Change meaning
4788         of the return value.
4789         (ssa_cache::dump): Don't print GLOBAL RANGE header.
4790         (ssa_lazy_cache::merge_range): Adjust return value meaning.
4791         (ranger_cache::dump): Print GLOBAL RANGE header.
4793 2023-09-20  Aldy Hernandez  <aldyh@redhat.com>
4795         * range-op-float.cc (foperator_unordered_ge::fold_range): Remove
4796         special casing.
4797         (foperator_unordered_gt::fold_range): Same.
4798         (foperator_unordered_lt::fold_range): Same.
4799         (foperator_unordered_le::fold_range): Same.
4801 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
4803         * builtins.h (type_to_class): Declare.
4804         * builtins.cc (type_to_class): No longer static.  Return
4805         int rather than enum.
4806         * doc/extend.texi (__builtin_classify_type): Document.
4808 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4810         PR target/110751
4811         * internal-fn.cc (expand_fn_using_insn): Support undefined rtx value.
4812         * optabs.cc (maybe_legitimize_operand): Ditto.
4813         (can_reuse_operands_p): Ditto.
4814         * optabs.h (enum expand_operand_type): Ditto.
4815         (create_undefined_input_operand): Ditto.
4817 2023-09-20  Tobias Burnus  <tobias@codesourcery.com>
4819         * gimplify.cc (gimplify_bind_expr): Call GOMP_alloc/free for
4820         'omp allocate' variables; move stack cleanup after other
4821         cleanup.
4822         (omp_notice_variable): Process original decl when decl
4823         of the value-expression for a 'omp allocate' variable is passed.
4824         * omp-low.cc (scan_omp_1_op): Handle 'omp allocate' variables
4826 2023-09-20  Yanzhang Wang  <yanzhang.wang@intel.com>
4828         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
4829         support simplifying vector int not only scalar int.
4831 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4833         * config/riscv/vector-iterators.md: Extend VLS floating-point.
4835 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4837         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Fix bug.
4839 2023-09-20  Iain Sandoe  <iain@sandoe.co.uk>
4841         * config/darwin.h:
4842         (SUBTARGET_DRIVER_SELF_SPECS): Move handling of 'shared' into the same
4843         specs as 'dynamiclib'. (STARTFILE_SPEC): Handle 'shared'.
4845 2023-09-20  Richard Biener  <rguenther@suse.de>
4847         PR tree-optimization/111489
4848         * params.opt (-param uninit-max-chain-len=): Raise default to 8.
4850 2023-09-20  Richard Biener  <rguenther@suse.de>
4852         PR tree-optimization/111489
4853         * doc/invoke.texi (--param uninit-max-chain-len): Document.
4854         (--param uninit-max-num-chains): Likewise.
4855         * params.opt (-param=uninit-max-chain-len=): New.
4856         (-param=uninit-max-num-chains=): Likewise.
4857         * gimple-predicate-analysis.cc (MAX_NUM_CHAINS): Define to
4858         param_uninit_max_num_chains.
4859         (MAX_CHAIN_LEN): Define to param_uninit_max_chain_len.
4860         (uninit_analysis::init_use_preds): Avoid VLA.
4861         (uninit_analysis::init_from_phi_def): Likewise.
4862         (compute_control_dep_chain): Avoid using MAX_CHAIN_LEN in
4863         template parameter.
4865 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
4867         * match.pd ((x << c) >> c): Use MAX_FIXED_MODE_SIZE instead of
4868         GET_MODE_PRECISION of TImode or DImode depending on whether
4869         TImode is supported scalar mode.
4870         * gimple-lower-bitint.cc (bitint_precision_kind): Likewise.
4871         * expr.cc (expand_expr_real_1): Likewise.
4872         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
4873         * ubsan.cc (ubsan_encode_value, ubsan_type_descriptor): Likewise.
4875 2023-09-20  Lehua Ding  <lehua.ding@rivai.ai>
4877         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move and rename.
4878         (*n<optab><mode>): Ditto.
4879         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): Ditto.
4880         (*<any_shiftrt:optab>trunc<mode>): Ditto.
4881         (*narrow_<any_shiftrt:optab><any_extend:optab><mode>): Ditto.
4882         (*narrow_<any_shiftrt:optab><mode>_scalar): Ditto.
4883         (*single_widen_mult<any_extend:su><mode>): Ditto.
4884         (*single_widen_mul<any_extend:su><mode>): Ditto.
4885         (*single_widen_mult<mode>): Ditto.
4886         (*single_widen_mul<mode>): Ditto.
4887         (*dual_widen_fma<mode>): Ditto.
4888         (*dual_widen_fma<su><mode>): Ditto.
4889         (*single_widen_fma<mode>): Ditto.
4890         (*single_widen_fma<su><mode>): Ditto.
4891         (*dual_fma<mode>): Ditto.
4892         (*single_fma<mode>): Ditto.
4893         (*dual_fnma<mode>): Ditto.
4894         (*dual_widen_fnma<mode>): Ditto.
4895         (*single_fnma<mode>): Ditto.
4896         (*single_widen_fnma<mode>): Ditto.
4897         (*dual_fms<mode>): Ditto.
4898         (*dual_widen_fms<mode>): Ditto.
4899         (*single_fms<mode>): Ditto.
4900         (*single_widen_fms<mode>): Ditto.
4901         (*dual_fnms<mode>): Ditto.
4902         (*dual_widen_fnms<mode>): Ditto.
4903         (*single_fnms<mode>): Ditto.
4904         (*single_widen_fnms<mode>): Ditto.
4906 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
4908         PR c++/111392
4909         * attribs.cc (decl_attributes): Don't warn on omp::directive attribute
4910         on vars or function decls if -fopenmp or -fopenmp-simd.
4912 2023-09-20  Lehua Ding  <lehua.ding@rivai.ai>
4914         PR target/111488
4915         * config/riscv/autovec-opt.md: Add missed operand.
4917 2023-09-20  Omar Sandoval  <osandov@osandov.com>
4919         PR debug/111409
4920         * dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if
4921         dwarf_split_debug_info.
4923 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4925         * config/riscv/riscv-v.cc (can_find_related_mode_p): New function.
4926         (vectorize_related_mode): Add VLS related modes.
4927         * config/riscv/vector-iterators.md: Extend VLS modes.
4929 2023-09-20  Surya Kumari Jangala  <jskumari@linux.ibm.com>
4931         PR rtl-optimization/110071
4932         * ira-color.cc (improve_allocation): Consider cost of callee
4933         save registers.
4935 2023-09-20  mengqinggang  <mengqinggang@loongson.cn>
4936             Xi Ruoyao  <xry111@xry111.site>
4938         * configure: Regenerate.
4939         * configure.ac: Checking assembler for -mno-relax support.
4940         Disable relaxation when probing leb128 support.
4942 2023-09-20  Lulu Cheng  <chenglulu@loongson.cn>
4944         * config.in: Regenerate.
4945         * config/loongarch/genopts/loongarch.opt.in: Add compilation option
4946         mrelax. And set the initial value of explicit-relocs according to the
4947         detection status.
4948         * config/loongarch/gnu-user.h: When compiling with -mno-relax, pass the
4949         --no-relax option to the linker.
4950         * config/loongarch/loongarch-driver.h (ASM_SPEC): When compiling with
4951         -mno-relax, pass the -mno-relax option to the assembler.
4952         * config/loongarch/loongarch-opts.h (HAVE_AS_MRELAX_OPTION): Define macro.
4953         * config/loongarch/loongarch.opt: Regenerate.
4954         * configure: Regenerate.
4955         * configure.ac: Add detection of support for binutils relax function.
4957 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
4959         * doc/invoke.texi: Document -fdeps-format=, -fdeps-file=, and
4960         -fdeps-target= flags.
4961         * gcc.cc: add defaults for -fdeps-target= and -fdeps-file= when
4962         only -fdeps-format= is specified.
4963         * json.h: Add a TODO item to refactor out to share with
4964         `libcpp/mkdeps.cc`.
4966 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
4967             Jason Merrill  <jason@redhat.com>
4969         * gcc.cc (join_spec_func): Add a spec function to join all
4970         arguments.
4972 2023-09-19  Patrick O'Neill  <patrick@rivosinc.com>
4974         * config/riscv/riscv.cc (riscv_legitimize_const_move): Eliminate
4975         src_op_0 var to avoid rtl check error.
4977 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
4979         * range-op-float.cc (frelop_early_resolve): Clean-up and remove
4980         special casing.
4981         (operator_not_equal::fold_range): Handle VREL_EQ.
4982         (operator_lt::fold_range): Remove special casing for VREL_EQ.
4983         (operator_gt::fold_range): Same.
4984         (foperator_unordered_equal::fold_range): Same.
4986 2023-09-19  Javier Martinez  <javier.martinez.bugzilla@gmail.com>
4988         * doc/extend.texi: Document attributes hot, cold on C++ types.
4990 2023-09-19  Pat Haugen  <pthaugen@linux.ibm.com>
4992         * config/rs6000/rs6000.cc (rs6000_rtx_costs): Check whether the
4993         modulo instruction is disabled.
4994         * config/rs6000/rs6000.h (RS6000_DISABLE_SCALAR_MODULO): New.
4995         * config/rs6000/rs6000.md (mod<mode>3, *mod<mode>3): Check it.
4996         (define_expand umod<mode>3): New.
4997         (define_insn umod<mode>3): Rename to *umod<mode>3 and check if the modulo
4998         instruction is disabled.
4999         (umodti3, modti3): Check if the modulo instruction is disabled.
5001 2023-09-19  Gaius Mulley  <gaiusmod2@gmail.com>
5003         * doc/gm2.texi (fdebug-builtins): Correct description.
5005 2023-09-19  Jeff Law  <jlaw@ventanamicro.com>
5007         * config/iq2000/predicates.md (uns_arith_constant): New predicate.
5008         * config/iq2000/iq2000.md (rotrsi3): Use it.
5010 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
5012         * range-op-float.cc (operator_lt::op1_range): Remove known_isnan check.
5013         (operator_lt::op2_range): Same.
5014         (operator_le::op1_range): Same.
5015         (operator_le::op2_range): Same.
5016         (operator_gt::op1_range): Same.
5017         (operator_gt::op2_range): Same.
5018         (operator_ge::op1_range): Same.
5019         (operator_ge::op2_range): Same.
5020         (foperator_unordered_lt::op1_range): Same.
5021         (foperator_unordered_lt::op2_range): Same.
5022         (foperator_unordered_le::op1_range): Same.
5023         (foperator_unordered_le::op2_range): Same.
5024         (foperator_unordered_gt::op1_range): Same.
5025         (foperator_unordered_gt::op2_range): Same.
5026         (foperator_unordered_ge::op1_range): Same.
5027         (foperator_unordered_ge::op2_range): Same.
5029 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
5031         * value-range.h (frange::update_nan): New.
5033 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
5035         * range-op-float.cc (operator_not_equal::op2_range): New.
5036         * range-op-mixed.h: Add operator_not_equal::op2_range.
5038 2023-09-19  Andrew MacLeod  <amacleod@redhat.com>
5040         PR tree-optimization/110080
5041         PR tree-optimization/110249
5042         * tree-vrp.cc (remove_unreachable::final_p): New.
5043         (remove_unreachable::maybe_register): Rename from
5044         maybe_register_block and call early or final routine.
5045         (fully_replaceable): New.
5046         (remove_unreachable::handle_early): New.
5047         (remove_unreachable::remove_and_update_globals): Remove
5048         non-final processing.
5049         (rvrp_folder::rvrp_folder): Add final flag to constructor.
5050         (rvrp_folder::post_fold_bb): Remove unreachable registration.
5051         (rvrp_folder::pre_fold_stmt): Move unreachable processing to here.
5052         (execute_ranger_vrp): Adjust some call parameters.
5054 2023-09-19  Richard Biener  <rguenther@suse.de>
5056         PR c/111468
5057         * tree-pretty-print.h (op_symbol_code): Add defaulted flags
5058         argument.
5059         * tree-pretty-print.cc (op_symbol): Likewise.
5060         (op_symbol_code): Print TDF_GIMPLE variant if requested.
5061         * gimple-pretty-print.cc (dump_binary_rhs): Pass flags to
5062         op_symbol_code.
5063         (dump_gimple_cond): Likewise.
5065 2023-09-19  Thomas Schwinge  <thomas@codesourcery.com>
5066             Pan Li  <pan2.li@intel.com>
5068         * tree-streamer.h (bp_unpack_machine_mode): If
5069         'ib->file_data->mode_table' not available, apply 1-to-1 mapping.
5071 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5073         * config/riscv/riscv.cc (riscv_can_change_mode_class): Block unordered VLA and VLS modes.
5075 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5077         * config/riscv/autovec.md: Extend VLS modes.
5078         * config/riscv/vector.md: Ditto.
5080 2023-09-19  Richard Biener  <rguenther@suse.de>
5082         PR tree-optimization/111465
5083         * tree-ssa-threadupdate.cc (fwd_jt_path_registry::thread_block_1):
5084         Cancel the path when a EDGE_NO_COPY_SRC_BLOCK became non-empty.
5086 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5088         * config/riscv/autovec.md: Extend VLS floating-point modes.
5089         * config/riscv/vector.md: Ditto.
5091 2023-09-19  Jakub Jelinek  <jakub@redhat.com>
5093         * match.pd ((x << c) >> c): Don't call build_nonstandard_integer_type
5094         nor check type_has_mode_precision_p for width larger than [TD]Imode
5095         precision.
5096         (a ? CST1 : CST2): Don't use build_nonstandard_type, just convert
5097         to type.  Use boolean_true_node instead of
5098         constant_boolean_node (true, boolean_type_node).  Formatting fixes.
5100 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5102         * config/riscv/autovec.md: Add VLS modes.
5103         * config/riscv/vector.md: Ditto.
5105 2023-09-19  Jakub Jelinek  <jakub@redhat.com>
5107         * tree.cc (build_bitint_type): Assert precision is not 0, or
5108         for signed types 1.
5109         (signed_or_unsigned_type_for): Return INTEGER_TYPE for signed variant
5110         of unsigned _BitInt(1).
5112 2023-09-19  Lehua Ding  <lehua.ding@rivai.ai>
5114         * config/riscv/autovec-opt.md (*<optab>_fma<mode>):
5115         Removed old combine patterns.
5116         (*single_<optab>mult_plus<mode>): Ditto.
5117         (*double_<optab>mult_plus<mode>): Ditto.
5118         (*sign_zero_extend_fma): Ditto.
5119         (*zero_sign_extend_fma): Ditto.
5120         (*double_widen_fma<mode>): Ditto.
5121         (*single_widen_fma<mode>): Ditto.
5122         (*double_widen_fnma<mode>): Ditto.
5123         (*single_widen_fnma<mode>): Ditto.
5124         (*double_widen_fms<mode>): Ditto.
5125         (*single_widen_fms<mode>): Ditto.
5126         (*double_widen_fnms<mode>): Ditto.
5127         (*single_widen_fnms<mode>): Ditto.
5128         (*reduc_plus_scal_<mode>): Adjust name.
5129         (*widen_reduc_plus_scal_<mode>): Adjust name.
5130         (*dual_widen_fma<mode>): New combine pattern.
5131         (*dual_widen_fmasu<mode>): Ditto.
5132         (*dual_widen_fmaus<mode>): Ditto.
5133         (*dual_fma<mode>): Ditto.
5134         (*single_fma<mode>): Ditto.
5135         (*dual_fnma<mode>): Ditto.
5136         (*single_fnma<mode>): Ditto.
5137         (*dual_fms<mode>): Ditto.
5138         (*single_fms<mode>): Ditto.
5139         (*dual_fnms<mode>): Ditto.
5140         (*single_fnms<mode>): Ditto.
5141         * config/riscv/autovec.md (fma<mode>4):
5142         Reafctor fma pattern.
5143         (*fma<VI:mode><P:mode>): Removed.
5144         (fnma<mode>4): Reafctor.
5145         (*fnma<VI:mode><P:mode>): Removed.
5146         (*fma<VF:mode><P:mode>):  Removed.
5147         (*fnma<VF:mode><P:mode>):  Removed.
5148         (fms<mode>4):  Reafctor.
5149         (*fms<VF:mode><P:mode>):  Removed.
5150         (fnms<mode>4): Reafctor.
5151         (*fnms<VF:mode><P:mode>): Removed.
5152         * config/riscv/riscv-protos.h (prepare_ternary_operands):
5153         Adjust prototype.
5154         * config/riscv/riscv-v.cc (prepare_ternary_operands): Refactor.
5155         * config/riscv/vector.md (*pred_mul_plus<mode>_undef): New pattern.
5156         (*pred_mul_plus<mode>): Removed.
5157         (*pred_mul_plus<mode>_scalar): Removed.
5158         (*pred_mul_plus<mode>_extended_scalar): Removed.
5159         (*pred_minus_mul<mode>_undef):  New pattern.
5160         (*pred_minus_mul<mode>): Removed.
5161         (*pred_minus_mul<mode>_scalar): Removed.
5162         (*pred_minus_mul<mode>_extended_scalar): Removed.
5163         (*pred_mul_<optab><mode>_undef):  New pattern.
5164         (*pred_mul_<optab><mode>): Removed.
5165         (*pred_mul_<optab><mode>_scalar): Removed.
5166         (*pred_mul_neg_<optab><mode>_undef):  New pattern.
5167         (*pred_mul_neg_<optab><mode>): Removed.
5168         (*pred_mul_neg_<optab><mode>_scalar): Removed.
5170 2023-09-19  Tsukasa OI  <research_trasio@irq.a4lg.com>
5172         * config/riscv/riscv-vector-builtins.cc
5173         (builtin_decl, expand_builtin): Replace SVE with RVV.
5175 2023-09-19  Tsukasa OI  <research_trasio@irq.a4lg.com>
5177         * config/riscv/t-riscv: Add dependencies for riscv-builtins.cc,
5178         riscv-cmo.def and riscv-scalar-crypto.def.
5180 2023-09-18  Pan Li  <pan2.li@intel.com>
5182         * config/riscv/autovec.md: Extend to vls mode.
5184 2023-09-18  Pan Li  <pan2.li@intel.com>
5186         * config/riscv/autovec.md: Bugfix.
5187         * config/riscv/riscv-protos.h (SCALAR_MOVE_MERGED_OP): New enum.
5189 2023-09-18  Andrew Pinski  <apinski@marvell.com>
5191         PR tree-optimization/111442
5192         * match.pd (zero_one_valued_p): Have the bit_and match not be
5193         recursive.
5195 2023-09-18  Andrew Pinski  <apinski@marvell.com>
5197         PR tree-optimization/111435
5198         * match.pd (zero_one_valued_p): Don't do recursion
5199         on converts.
5201 2023-09-18  Iain Sandoe  <iain@sandoe.co.uk>
5203         * config/darwin-protos.h (enum darwin_external_toolchain): New.
5204         * config/darwin.cc (DSYMUTIL_VERSION): New.
5205         (darwin_override_options): Choose the default debug DWARF version
5206         depending on the configured dsymutil version.
5208 2023-09-18  Iain Sandoe  <iain@sandoe.co.uk>
5210         * configure: Regenerate.
5211         * configure.ac: Handle explict disable of stdlib option, set
5212         defaults for Darwin.
5214 2023-09-18  Andrew Pinski  <apinski@marvell.com>
5216         PR tree-optimization/111431
5217         * match.pd (`(a == CST) & a`): New pattern.
5219 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5221         * config/riscv/riscv-selftests.cc (run_broadcast_selftests): Adapt selftests.
5222         * config/riscv/vector.md (@vec_duplicate<mode>): Remove.
5224 2023-09-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>
5226         PR target/105928
5227         * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
5228         Add support for immediates using shifted ORR/BIC.
5229         (aarch64_split_dimode_const_store): Apply if we save one instruction.
5230         * config/aarch64/aarch64.md (<LOGICAL:optab>_<SHIFT:optab><mode>3):
5231         Make pattern global.
5233 2023-09-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>
5235         * config/aarch64/aarch64-cores.def (neoverse-n1): Place before ares.
5236         (neoverse-v1): Place before zeus.
5237         (neoverse-v2): Place before demeter.
5238         * config/aarch64/aarch64-tune.md: Regenerate.
5240 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5242         * config/riscv/autovec.md: Add VLS modes.
5243         * config/riscv/vector-iterators.md: Ditto.
5244         * config/riscv/vector.md: Ditto.
5246 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5248         * config/riscv/riscv-vsetvl.cc (vlmul_for_greatest_sew_second_ratio): New function.
5249         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Fix bug.
5251 2023-09-18  Richard Biener  <rguenther@suse.de>
5253         PR tree-optimization/111294
5254         * tree-ssa-threadbackward.cc (back_threader_profitability::m_name):
5255         Remove
5256         (back_threader::find_paths_to_names): Adjust.
5257         (back_threader::maybe_thread_block): Likewise.
5258         (back_threader_profitability::possibly_profitable_path_p): Remove
5259         code applying extra costs to copies PHIs.
5261 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5263         * config/riscv/autovec.md: Extend VLS modes.
5264         * config/riscv/vector.md: Ditto.
5266 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5268         * config/riscv/vector.md (mov<mode>): New pattern.
5269         (*mov<mode>_mem_to_mem): Ditto.
5270         (*mov<mode>): Ditto.
5271         (@mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto.
5272         (*mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto.
5273         (*mov<mode>_vls): Ditto.
5274         (movmisalign<mode>): Ditto.
5275         (@vec_duplicate<mode>): Ditto.
5276         * config/riscv/autovec-vls.md: Removed.
5278 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5280         PR target/111153
5281         * config/riscv/autovec.md: Add VLS modes.
5283 2023-09-18  Jason Merrill  <jason@redhat.com>
5285         * doc/gty.texi: Add discussion of cache vs. deletable.
5287 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5289         * config/riscv/autovec-vls.md (<optab><mode>3): Deleted.
5290         (copysign<mode>3): Ditto.
5291         (xorsign<mode>3): Ditto.
5292         (<optab><mode>2): Ditto.
5293         * config/riscv/autovec.md: Extend VLS modes.
5295 2023-09-18  Jiufu Guo  <guojiufu@linux.ibm.com>
5297         PR middle-end/111303
5298         * match.pd ((t * 2) / 2): Update pattern.
5300 2023-09-17  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
5302         * config/rs6000/vsx.md (*vctzlsbb_zext_<mode>): New define_insn.
5304 2023-09-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5306         PR target/111391
5307         * config/riscv/autovec.md (@vec_extract<mode><vel>): Remove @.
5308         (vec_extract<mode><vel>): Ditto.
5309         * config/riscv/riscv-vsetvl.cc (emit_vsetvl_insn): Fix bug.
5310         (pass_vsetvl::local_eliminate_vsetvl_insn): Fix bug.
5311         * config/riscv/riscv.cc (riscv_legitimize_move): Expand VLS mode to scalar mode move.
5313 2023-09-16  Tsukasa OI  <research_trasio@irq.a4lg.com>
5315         * config/riscv/crypto.md (riscv_sha256sig0_<mode>,
5316         riscv_sha256sig1_<mode>, riscv_sha256sum0_<mode>,
5317         riscv_sha256sum1_<mode>, riscv_sm3p0_<mode>, riscv_sm3p1_<mode>,
5318         riscv_sm4ed_<mode>, riscv_sm4ks_<mode>): Remove and replace with
5319         new insn/expansions.
5320         (SHA256_OP, SM3_OP, SM4_OP): New iterators.
5321         (sha256_op, sm3_op, sm4_op): New attributes for iteration.
5322         (*riscv_<sha256_op>_si): New raw instruction for RV32.
5323         (*riscv_<sm3_op>_si): Ditto.
5324         (*riscv_<sm4_op>_si): Ditto.
5325         (riscv_<sha256_op>_di_extended): New base instruction for RV64.
5326         (riscv_<sm3_op>_di_extended): Ditto.
5327         (riscv_<sm4_op>_di_extended): Ditto.
5328         (riscv_<sha256_op>_si): New common instruction expansion.
5329         (riscv_<sm3_op>_si): Ditto.
5330         (riscv_<sm4_op>_si): Ditto.
5331         * config/riscv/riscv-builtins.cc: Add availability "crypto_zknh",
5332         "crypto_zksh" and "crypto_zksed".  Remove availability
5333         "crypto_zksh{32,64}" and "crypto_zksed{32,64}".
5334         * config/riscv/riscv-ftypes.def: Remove unused function type.
5335         * config/riscv/riscv-scalar-crypto.def: Make SHA-256, SM3 and SM4
5336         intrinsics to operate on uint32_t.
5338 2023-09-16  Tsukasa OI  <research_trasio@irq.a4lg.com>
5340         * config/riscv/riscv-builtins.cc (RISCV_ATYPE_UQI): New for
5341         uint8_t.  (RISCV_ATYPE_UHI): New for uint16_t.
5342         (RISCV_ATYPE_QI, RISCV_ATYPE_HI, RISCV_ATYPE_SI, RISCV_ATYPE_DI):
5343         Removed as no longer used.
5344         (RISCV_ATYPE_UDI): New for uint64_t.
5345         * config/riscv/riscv-cmo.def: Make types unsigned for not working
5346         "zicbop_cbo_prefetchi" and working bit manipulation clmul builtin
5347         argument/return types.
5348         * config/riscv/riscv-ftypes.def: Make bit manipulation, round
5349         number and shift amount types unsigned.
5350         * config/riscv/riscv-scalar-crypto.def: Ditto.
5352 2023-09-16  Pan Li  <pan2.li@intel.com>
5354         * config/riscv/autovec-vls.md (xorsign<mode>3): New pattern.
5356 2023-09-15  Fei Gao  <gaofei@eswincomputing.com>
5358         * config/riscv/predicates.md: Restrict predicate
5359         to allow 'reg' only.
5361 2023-09-15  Andrew Pinski  <apinski@marvell.com>
5363         * match.pd (zero_one_valued_p): Match a cast from a zero_one_valued_p.
5364         Also match `a & zero_one_valued_p` too.
5366 2023-09-15  Andrew Pinski  <apinski@marvell.com>
5368         PR tree-optimization/111414
5369         * match.pd (`(1 >> X) != 0`): Check to see if
5370         the integer_onep was an integral type (not a vector type).
5372 2023-09-15  Andrew MacLeod  <amacleod@redhat.com>
5374         * gimple-range-fold.cc (fold_using_range::range_of_phi): Always
5375         run phi analysis, and do it before loop analysis.
5377 2023-09-15  Andrew MacLeod  <amacleod@redhat.com>
5379         * gimple-range-fold.cc (fold_using_range::range_of_phi): Fix
5380         indentation.
5382 2023-09-15  Qing Zhao  <qing.zhao@oracle.com>
5384         PR tree-optimization/111407
5385         * tree-ssa-math-opts.cc (convert_mult_to_widen): Avoid the transform
5386         when one of the operands is subject to abnormal coalescing.
5388 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
5390         * config/riscv/riscv-protos.h (enum insn_flags): Change name.
5391         (enum insn_type): Ditto.
5392         * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): Removed.
5393         (emit_vlmax_insn): Adjust.
5394         (emit_nonvlmax_insn): Adjust.
5395         (emit_vlmax_insn_lra): Adjust.
5397 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
5399         * config/riscv/autovec-opt.md: Adjust.
5400         * config/riscv/autovec.md: Ditto.
5401         * config/riscv/riscv-protos.h (enum class): Delete enum reduction_type.
5402         (expand_reduction): Adjust expand_reduction prototype.
5403         * config/riscv/riscv-v.cc (need_mask_operand_p): New helper function.
5404         (expand_reduction): Refactor expand_reduction.
5406 2023-09-15  Richard Sandiford  <richard.sandiford@arm.com>
5408         PR target/111411
5409         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp): Require
5410         the lower memory access to a mem-pair operand.
5412 2023-09-15  Yang Yujie  <yangyujie@loongson.cn>
5414         * config.gcc: Pass the default ABI via TM_MULTILIB_CONFIG.
5415         * config/loongarch/loongarch-driver.h: Invoke MLIB_SELF_SPECS
5416         before the driver canonicalization routines.
5417         * config/loongarch/loongarch.h: Move definitions of CC1_SPEC etc.
5418         to loongarch-driver.h
5419         * config/loongarch/t-linux: Move multilib-related definitions to
5420         t-multilib.
5421         * config/loongarch/t-multilib: New file.  Inject library build
5422         options obtained from --with-multilib-list.
5423         * config/loongarch/t-loongarch: Same.
5425 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
5427         PR target/111381
5428         * config/riscv/autovec-opt.md (*reduc_plus_scal_<mode>):
5429         New combine pattern.
5430         (*fold_left_widen_plus_<mode>): Ditto.
5431         (*mask_len_fold_left_widen_plus_<mode>): Ditto.
5432         * config/riscv/autovec.md (reduc_plus_scal_<mode>):
5433         Change from define_expand to define_insn_and_split.
5434         (fold_left_plus_<mode>): Ditto.
5435         (mask_len_fold_left_plus_<mode>): Ditto.
5436         * config/riscv/riscv-v.cc (expand_reduction):
5437         Support widen reduction.
5438         * config/riscv/vector-iterators.md (UNSPEC_WREDUC_SUM):
5439         Add new iterators and attrs.
5441 2023-09-14  David Malcolm  <dmalcolm@redhat.com>
5443         * diagnostic-event-id.h (diagnostic_thread_id_t): New typedef.
5444         * diagnostic-format-sarif.cc (class sarif_thread_flow): New.
5445         (sarif_thread_flow::sarif_thread_flow): New.
5446         (sarif_builder::make_code_flow_object): Reimplement, creating
5447         per-thread threadFlow objects, populating them with the relevant
5448         events.
5449         (sarif_builder::make_thread_flow_object): Delete, moving the
5450         code into sarif_builder::make_code_flow_object.
5451         (sarif_builder::make_thread_flow_location_object): Add
5452         "path_event_idx" param.  Use it to set "executionOrder"
5453         property.
5454         * diagnostic-path.h (diagnostic_event::get_thread_id): New
5455         pure-virtual vfunc.
5456         (class diagnostic_thread): New.
5457         (diagnostic_path::num_threads): New pure-virtual vfunc.
5458         (diagnostic_path::get_thread):  New pure-virtual vfunc.
5459         (diagnostic_path::multithreaded_p): New decl.
5460         (simple_diagnostic_event::simple_diagnostic_event): Add optional
5461         thread_id param.
5462         (simple_diagnostic_event::get_thread_id): New accessor.
5463         (simple_diagnostic_event::m_thread_id): New.
5464         (class simple_diagnostic_thread): New.
5465         (simple_diagnostic_path::simple_diagnostic_path): Move definition
5466         to diagnostic.cc.
5467         (simple_diagnostic_path::num_threads): New.
5468         (simple_diagnostic_path::get_thread): New.
5469         (simple_diagnostic_path::add_thread): New.
5470         (simple_diagnostic_path::add_thread_event): New.
5471         (simple_diagnostic_path::m_threads): New.
5472         * diagnostic-show-locus.cc (layout::layout): Add pretty_printer
5473         param for overriding the context's printer.
5474         (diagnostic_show_locus): Likwise.
5475         * diagnostic.cc (simple_diagnostic_path::simple_diagnostic_path):
5476         Move here from diagnostic-path.h.  Add main thread.
5477         (simple_diagnostic_path::num_threads): New.
5478         (simple_diagnostic_path::get_thread): New.
5479         (simple_diagnostic_path::add_thread): New.
5480         (simple_diagnostic_path::add_thread_event): New.
5481         (simple_diagnostic_event::simple_diagnostic_event): Add thread_id
5482         param and use it to initialize m_thread_id.  Reformat.
5483         * diagnostic.h: Add pretty_printer param for overriding the
5484         context's printer.
5485         * tree-diagnostic-path.cc: Add #define INCLUDE_VECTOR.
5486         (can_consolidate_events): Compare thread ids.
5487         (class per_thread_summary): New.
5488         (event_range::event_range): Add per_thread_summary arg.
5489         (event_range::print): Add "pp" param and use it rather than dc's
5490         printer.
5491         (event_range::m_thread_id): New field.
5492         (event_range::m_per_thread_summary): New field.
5493         (path_summary::multithreaded_p): New.
5494         (path_summary::get_events_for_thread_id): New.
5495         (path_summary::m_per_thread_summary): New field.
5496         (path_summary::m_thread_id_to_events): New field.
5497         (path_summary::get_or_create_events_for_thread_id): New.
5498         (path_summary::path_summary): Create per_thread_summary instances
5499         as needed and associate the event_range instances with them.
5500         (base_indent): Move here from print_path_summary_as_text.
5501         (per_frame_indent): Likewise.
5502         (class thread_event_printer): New, adapted from parts of
5503         print_path_summary_as_text.
5504         (print_path_summary_as_text): Make static.  Reimplement to
5505         moving most of existing code to class thread_event_printer,
5506         capturing state as per-thread as appropriate.
5507         (default_tree_diagnostic_path_printer): Add missing 'break' on
5508         final case.
5510 2023-09-14  David Malcolm  <dmalcolm@redhat.com>
5512         * dwarf2cfi.cc (dwarf2cfi_cc_finalize): New.
5513         * dwarf2out.h (dwarf2cfi_cc_finalize): New decl.
5514         * ggc-common.cc (ggc_mark_roots): Multiply by rti->nelt when
5515         clearing the deletable gcc_root_tab_t.
5516         (ggc_common_finalize): New.
5517         * ggc.h (ggc_common_finalize): New decl.
5518         * toplev.cc (toplev::finalize): Call dwarf2cfi_cc_finalize and
5519         ggc_common_finalize.
5521 2023-09-14  Max Filippov  <jcmvbkbc@gmail.com>
5523         * config/xtensa/predicates.md (xtensa_cstoresi_operator): Add
5524         unsigned comparisons.
5525         * config/xtensa/xtensa.cc (xtensa_expand_scc): Add code
5526         generation of salt/saltu instructions.
5527         * config/xtensa/xtensa.h (TARGET_SALT): New macro.
5528         * config/xtensa/xtensa.md (salt, saltu): New instruction
5529         patterns.
5531 2023-09-14  Vladimir N. Makarov  <vmakarov@redhat.com>
5533         * ira-costs.cc (find_costs_and_classes): Decrease memory cost
5534         by equiv savings.
5536 2023-09-14  Lehua Ding  <lehua.ding@rivai.ai>
5538         * config/riscv/autovec.md: Change rtx code to unspec.
5539         * config/riscv/riscv-protos.h (expand_reduction): Change prototype.
5540         * config/riscv/riscv-v.cc (expand_reduction): Change prototype.
5541         * config/riscv/riscv-vector-builtins-bases.cc (class widen_reducop):
5542         Removed.
5543         (class widen_freducop): Removed.
5544         * config/riscv/vector-iterators.md (minu): Add reduc unspec, iterators, attrs.
5545         * config/riscv/vector.md (@pred_reduc_<reduc><mode>): Change name.
5546         (@pred_<reduc_op><mode>): New name.
5547         (@pred_widen_reduc_plus<v_su><mode>): Change name.
5548         (@pred_reduc_plus<order><mode>): Change name.
5549         (@pred_widen_reduc_plus<order><mode>): Change name.
5551 2023-09-14  Lehua Ding  <lehua.ding@rivai.ai>
5553         * config/riscv/riscv-v.cc (expand_reduction): Adjust call.
5554         * config/riscv/riscv-vector-builtins-bases.cc: Adjust call.
5555         * config/riscv/vector-iterators.md: New iterators and attrs.
5556         * config/riscv/vector.md (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>):
5557         Removed.
5558         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Removed.
5559         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Removed.
5560         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Removed.
5561         (@pred_reduc_<reduc><mode>): Added.
5562         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): Removed.
5563         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Removed.
5564         (@pred_widen_reduc_plus<v_su><mode>): Added.
5565         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Removed.
5566         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): Removed.
5567         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Removed.
5568         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Removed.
5569         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Removed.
5570         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Removed.
5571         (@pred_reduc_plus<order><mode>): Added.
5572         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Removed.
5573         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Removed.
5574         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Removed.
5575         (@pred_widen_reduc_plus<order><mode>): Added.
5577 2023-09-14  Richard Sandiford  <richard.sandiford@arm.com>
5579         * config/aarch64/aarch64.cc (aarch64_vector_costs::analyze_loop_info):
5580         Move WHILELO handling to...
5581         (aarch64_vector_costs::finish_cost): ...here.  Check whether the
5582         vectorizer has decided to use a predicated loop.
5584 2023-09-14  Andrew Pinski  <apinski@marvell.com>
5586         PR tree-optimization/106164
5587         * match.pd (`(X CMP1 CST1) AND/IOR (X CMP2 CST2)`):
5588         Expand to support constants that are off by one.
5590 2023-09-14  Andrew Pinski  <apinski@marvell.com>
5592         * genmatch.cc (parser::parse_result): For an else clause
5593         of an if statement inside a switch, error out explictly.
5595 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5597         * config/riscv/autovec-opt.md: Add VLS mask modes.
5598         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Remove @.
5599         (vcond_mask_<mode><vm>): Add VLS mask modes.
5600         * config/riscv/vector.md: Ditto.
5602 2023-09-14  Richard Biener  <rguenther@suse.de>
5604         PR tree-optimization/111294
5605         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
5606         operands that eventually become dead and use simple_dce_from_worklist
5607         to remove their definitions if they did so.
5609 2023-09-14  Richard Sandiford  <richard.sandiford@arm.com>
5611         * config/aarch64/aarch64-sve.md (@aarch64_vec_duplicate_vq<mode>_le):
5612         Accept all nonimmediate_operands, but keep the existing constraints.
5613         If the instruction is split before RA, load invalid addresses into
5614         a temporary register.
5615         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): Delete.
5617 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5619         PR target/111395
5620         * config/riscv/riscv-vsetvl.cc (avl_info::operator==): Fix ICE.
5621         (vector_insn_info::global_merge): Ditto.
5622         (vector_insn_info::get_avl_or_vl_reg): Ditto.
5624 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5626         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn): Format it.
5628 2023-09-14  Lulu Cheng  <chenglulu@loongson.cn>
5630         * config/loongarch/loongarch-def.c: Modify the default value of
5631         branch_cost.
5633 2023-09-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
5635         * config/xtensa/xtensa.cc (xtensa_expand_scc):
5636         Revert the changes from the last patch, as the work in the RTL
5637         expansion pass is too far to determine the physical registers.
5638         * config/xtensa/xtensa.md (*eqne_INT_MIN): Ditto.
5639         (eq_zero_NSA, eqne_zero, *eqne_zero_masked_bits): New patterns.
5641 2023-09-14  Lulu Cheng  <chenglulu@loongson.cn>
5643         PR target/111334
5644         * config/loongarch/loongarch.md: Fix bug of '<optab>di3_fake'.
5646 2023-09-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5648         * config/riscv/autovec.md (vec_extract<mode><vel>): Add VLS modes.
5649         (@vec_extract<mode><vel>): Ditto.
5650         * config/riscv/vector.md: Ditto
5652 2023-09-13  Andrew Pinski  <apinski@marvell.com>
5654         * match.pd (`X <= MAX(X, Y)`):
5655         Move before `MIN (X, C1) < C2` pattern.
5657 2023-09-13  Andrew Pinski  <apinski@marvell.com>
5659         PR tree-optimization/111364
5660         * match.pd (`MIN (X, Y) == X`): Extend
5661         to min/lt, min/ge, max/gt, max/le.
5663 2023-09-13  Andrew Pinski  <apinski@marvell.com>
5665         PR tree-optimization/111345
5666         * match.pd (`Y > (X % Y)`): Merge
5667         into ...
5668         (`(X % Y) < Y`): Pattern by adding `:c`
5669         on the comparison.
5671 2023-09-13  Richard Biener  <rguenther@suse.de>
5673         PR tree-optimization/111387
5674         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Check
5675         EDGE_DFS_BACK when doing BB vectorization.
5676         (vect_slp_function): Use rev_post_order_and_mark_dfs_back_seme
5677         to compute RPO and mark backedges.
5679 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
5681         * config/riscv/autovec-opt.md (*cond_<mulh_table><mode>3_highpart):
5682         New combine pattern.
5683         * config/riscv/autovec.md (smul<mode>3_highpart): Mrege smul and umul.
5684         (<mulh_table><mode>3_highpart): Merged pattern.
5685         (umul<mode>3_highpart): Mrege smul and umul.
5686         * config/riscv/vector-iterators.md (umul): New iterators.
5687         (UNSPEC_VMULHU): New iterators.
5689 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
5691         * config/riscv/autovec-opt.md (*cond_v<any_shiftrt:optab><any_extend:optab>trunc<mode>):
5692         New combine pattern.
5693         (*cond_<any_shiftrt:optab>trunc<mode>): Ditto.
5695 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
5697         * config/riscv/autovec-opt.md (*copysign<mode>_neg): Move.
5698         (*cond_copysign<mode>): New combine pattern.
5699         * config/riscv/riscv-v.cc (needs_fp_rounding): Extend.
5701 2023-09-13  Richard Biener  <rguenther@suse.de>
5703         PR tree-optimization/111397
5704         * tree-ssa-propagate.cc (may_propagate_copy): Change optional
5705         argument to specify whether the PHI destination doesn't flow in
5706         from an abnormal PHI.
5707         (propagate_value): Adjust.
5708         * tree-ssa-forwprop.cc (pass_forwprop::execute): Indicate abnormal
5709         PHI dest.
5710         * tree-ssa-sccvn.cc (eliminate_dom_walker::before_dom_children):
5711         Likewise.
5712         (process_bb): Likewise.
5714 2023-09-13  Pan Li  <pan2.li@intel.com>
5716         PR target/111362
5717         * config/riscv/riscv.cc (riscv_emit_frm_mode_set): Bugfix.
5719 2023-09-13  Jiufu Guo  <guojiufu@linux.ibm.com>
5721         PR tree-optimization/111303
5722         * match.pd ((X - N * M) / N): Add undefined_p checking.
5723         ((X + N * M) / N): Likewise.
5724         ((X + C) div_rshift N): Likewise.
5726 2023-09-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5728         PR target/111337
5729         * config/riscv/autovec.md (vcond_mask_<mode><mode>): New pattern.
5731 2023-09-12  Martin Jambor  <mjambor@suse.cz>
5733         * dbgcnt.def (form_fma): New.
5734         * tree-ssa-math-opts.cc: Include dbgcnt.h.
5735         (convert_mult_to_fma): Bail out if the debug counter say so.
5737 2023-09-12  Edwin Lu  <ewlu@rivosinc.com>
5739         * config/riscv/autovec-opt.md: Update type
5740         * config/riscv/riscv.cc (riscv_sched_variable_issue): Enable assert
5742 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5744         * config/aarch64/aarch64.cc (aarch64_save_regs_above_locals_p):
5745         New function.
5746         (aarch64_layout_frame): Use it to decide whether locals should
5747         go above or below the saved registers.
5748         (aarch64_expand_prologue): Update stack layout comment.
5749         Emit a stack tie after the final adjustment.
5751 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5753         * config/aarch64/aarch64.h (aarch64_frame::saved_regs_size)
5754         (aarch64_frame::below_hard_fp_saved_regs_size): Delete.
5755         * config/aarch64/aarch64.cc (aarch64_layout_frame): Update accordingly.
5757 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5759         * config/aarch64/aarch64.h (aarch64_frame::sve_save_and_probe)
5760         (aarch64_frame::hard_fp_save_and_probe): New fields.
5761         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize them.
5762         Rather than asserting that a leaf function saves LR, instead assert
5763         that a leaf function saves something.
5764         (aarch64_get_separate_components): Prevent the chosen probe
5765         registers from being individually shrink-wrapped.
5766         (aarch64_allocate_and_probe_stack_space): Remove workaround for
5767         probe registers that aren't at the bottom of the previous allocation.
5769 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5771         * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space):
5772         Always probe the residual allocation at offset 1024, asserting
5773         that that is in range.
5775 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5777         * config/aarch64/aarch64.cc (aarch64_layout_frame): Ensure that
5778         the LR save slot is in the first 16 bytes of the register save area.
5779         Only form STP/LDP push/pop candidates if both registers are valid.
5780         (aarch64_allocate_and_probe_stack_space): Remove workaround for
5781         when LR was not in the first 16 bytes.
5783 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5785         * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space):
5786         Don't probe final allocations that are exactly 1KiB in size (after
5787         unprobed space above the final allocation has been deducted).
5789 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5791         * config/aarch64/aarch64.cc (aarch64_layout_frame): Tweak
5792         calculation of initial_adjust for frames in which all saves
5793         are SVE saves.
5795 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5797         * config/aarch64/aarch64.cc (aarch64_layout_frame): Simplify
5798         the allocation of the top of the frame.
5800 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5802         * config/aarch64/aarch64.h (aarch64_frame): Add comment above
5803         reg_offset.
5804         * config/aarch64/aarch64.cc (aarch64_layout_frame): Walk offsets
5805         from the bottom of the frame, rather than the bottom of the saved
5806         register area.  Measure reg_offset from the bottom of the frame
5807         rather than the bottom of the saved register area.
5808         (aarch64_save_callee_saves): Update accordingly.
5809         (aarch64_restore_callee_saves): Likewise.
5810         (aarch64_get_separate_components): Likewise.
5811         (aarch64_process_components): Likewise.
5813 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5815         * config/aarch64/aarch64.h (aarch64_frame::frame_size): Tweak comment.
5817 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5819         * config/aarch64/aarch64.h (aarch64_frame::hard_fp_offset): Rename
5820         to...
5821         (aarch64_frame::bytes_above_hard_fp): ...this.
5822         * config/aarch64/aarch64.cc (aarch64_layout_frame)
5823         (aarch64_expand_prologue): Update accordingly.
5824         (aarch64_initial_elimination_offset): Likewise.
5826 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5828         * config/aarch64/aarch64.h (aarch64_frame::locals_offset): Rename to...
5829         (aarch64_frame::bytes_above_locals): ...this.
5830         * config/aarch64/aarch64.cc (aarch64_layout_frame)
5831         (aarch64_initial_elimination_offset): Update accordingly.
5833 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5835         * config/aarch64/aarch64.cc (aarch64_expand_prologue): Move the
5836         calculation of chain_offset into the emit_frame_chain block.
5838 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5840         * config/aarch64/aarch64.h (aarch64_frame::callee_offset): Delete.
5841         * config/aarch64/aarch64.cc (aarch64_layout_frame): Remove
5842         callee_offset handling.
5843         (aarch64_save_callee_saves): Replace the start_offset parameter
5844         with a bytes_below_sp parameter.
5845         (aarch64_restore_callee_saves): Likewise.
5846         (aarch64_expand_prologue): Update accordingly.
5847         (aarch64_expand_epilogue): Likewise.
5849 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5851         * config/aarch64/aarch64.h (aarch64_frame::bytes_below_hard_fp): New
5852         field.
5853         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it.
5854         (aarch64_expand_epilogue): Use it instead of
5855         below_hard_fp_saved_regs_size.
5857 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5859         * config/aarch64/aarch64.h (aarch64_frame::bytes_below_saved_regs): New
5860         field.
5861         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it,
5862         and use it instead of crtl->outgoing_args_size.
5863         (aarch64_get_separate_components): Use bytes_below_saved_regs instead
5864         of outgoing_args_size.
5865         (aarch64_process_components): Likewise.
5867 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5869         * config/aarch64/aarch64.cc (aarch64_layout_frame): Explicitly
5870         allocate the frame in one go if there are no saved registers.
5872 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5874         * config/aarch64/aarch64.cc (aarch64_expand_prologue): Use
5875         chain_offset rather than callee_offset.
5877 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
5879         * config/aarch64/aarch64.cc (aarch64_save_callee_saves): Use
5880         a local shorthand for cfun->machine->frame.
5881         (aarch64_restore_callee_saves, aarch64_get_separate_components):
5882         (aarch64_process_components): Likewise.
5883         (aarch64_allocate_and_probe_stack_space): Likewise.
5884         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
5885         (aarch64_layout_frame): Use existing shorthand for one more case.
5887 2023-09-12  Andrew Pinski  <apinski@marvell.com>
5889         PR tree-optimization/107881
5890         * match.pd (`(a CMP1 b) ^ (a CMP2 b)`): New pattern.
5891         (`(a CMP1 b) == (a CMP2 b)`): New pattern.
5893 2023-09-12  Pan Li  <pan2.li@intel.com>
5895         * config/riscv/riscv-vector-costs.h (struct range): Removed.
5897 2023-09-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5899         * config/riscv/riscv-vector-costs.cc (get_last_live_range): New function.
5900         (compute_nregs_for_mode): Ditto.
5901         (live_range_conflict_p): Ditto.
5902         (max_number_of_live_regs): Ditto.
5903         (compute_lmul): Ditto.
5904         (costs::prefer_new_lmul_p): Ditto.
5905         (costs::better_main_loop_than_p): Ditto.
5906         * config/riscv/riscv-vector-costs.h (struct stmt_point): New struct.
5907         (struct var_live_range): Ditto.
5908         (struct autovec_info): Ditto.
5909         * config/riscv/t-riscv: Update makefile for COST model.
5911 2023-09-12  Jakub Jelinek  <jakub@redhat.com>
5913         * fold-const.cc (range_check_type): Handle BITINT_TYPE like
5914         OFFSET_TYPE.
5916 2023-09-12  Jakub Jelinek  <jakub@redhat.com>
5918         PR middle-end/111338
5919         * tree-ssa-sccvn.cc (struct vn_walk_cb_data): Add bufsize non-static
5920         data member.
5921         (vn_walk_cb_data::push_partial_def): Remove bufsize variable.
5922         (visit_nary_op): Avoid the BIT_AND_EXPR with constant rhs2
5923         optimization if type's precision is too large for
5924         vn_walk_cb_data::bufsize.
5926 2023-09-12  Gaius Mulley  <gaiusmod2@gmail.com>
5928         * doc/gm2.texi (Compiler options): Document new option
5929         -Wcase-enum.
5931 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
5933         * doc/sourcebuild.texi (stack_size): Update.
5935 2023-09-12  Christoph Müllner  <christoph.muellner@vrull.eu>
5937         * config/riscv/bitmanip.md (*<optab>_not<mode>): Export INSN name.
5938         (<optab>_not<mode>3): Likewise.
5939         * config/riscv/riscv-protos.h (riscv_expand_strcmp): New
5940         prototype.
5941         * config/riscv/riscv-string.cc (GEN_EMIT_HELPER3): New helper
5942         macros.
5943         (GEN_EMIT_HELPER2): Likewise.
5944         (emit_strcmp_scalar_compare_byte): New function.
5945         (emit_strcmp_scalar_compare_subword): Likewise.
5946         (emit_strcmp_scalar_compare_word): Likewise.
5947         (emit_strcmp_scalar_load_and_compare): Likewise.
5948         (emit_strcmp_scalar_call_to_libc): Likewise.
5949         (emit_strcmp_scalar_result_calculation_nonul): Likewise.
5950         (emit_strcmp_scalar_result_calculation): Likewise.
5951         (riscv_expand_strcmp_scalar): Likewise.
5952         (riscv_expand_strcmp): Likewise.
5953         * config/riscv/riscv.md (*slt<u>_<X:mode><GPR:mode>): Export
5954         INSN name.
5955         (@slt<u>_<X:mode><GPR:mode>3): Likewise.
5956         (cmpstrnsi): Invoke expansion function for str(n)cmp.
5957         (cmpstrsi): Likewise.
5958         * config/riscv/riscv.opt: Add new parameter
5959         '-mstring-compare-inline-limit'.
5960         * doc/invoke.texi: Document new parameter
5961         '-mstring-compare-inline-limit'.
5963 2023-09-12  Christoph Müllner  <christoph.muellner@vrull.eu>
5965         * config.gcc: Add new object riscv-string.o.
5966         riscv-string.cc.
5967         * config/riscv/riscv-protos.h (riscv_expand_strlen):
5968         New function.
5969         * config/riscv/riscv.md (strlen<mode>): New expand INSN.
5970         * config/riscv/riscv.opt: New flag 'minline-strlen'.
5971         * config/riscv/t-riscv: Add new object riscv-string.o.
5972         * config/riscv/thead.md (th_rev<mode>2): Export INSN name.
5973         (th_rev<mode>2): Likewise.
5974         (th_tstnbz<mode>2): New INSN.
5975         * doc/invoke.texi: Document '-minline-strlen'.
5976         * emit-rtl.cc (emit_likely_jump_insn): New helper function.
5977         (emit_unlikely_jump_insn): Likewise.
5978         * rtl.h (emit_likely_jump_insn): New prototype.
5979         (emit_unlikely_jump_insn): Likewise.
5980         * config/riscv/riscv-string.cc: New file.
5982 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
5984         * config/nvptx/nvptx.h (TARGET_USE_LOCAL_THUNK_ALIAS_P)
5985         (TARGET_SUPPORTS_ALIASES): Define.
5987 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
5989         * doc/sourcebuild.texi (check-function-bodies): Update.
5991 2023-09-12  Tobias Burnus  <tobias@codesourcery.com>
5993         * gimplify.cc (gimplify_bind_expr): Check for
5994         insertion after variable cleanup.  Convert 'omp allocate'
5995         var-decl attribute to GOMP_alloc/GOMP_free calls.
5997 2023-09-12  xuli  <xuli1@eswincomputing.com>
5999         * config/riscv/riscv-vector-builtins-bases.cc: remove unused
6000                 parameter e and replace NULL_RTX with gcc_unreachable.
6002 2023-09-12  xuli  <xuli1@eswincomputing.com>
6004         * config/riscv/riscv-vector-builtins-bases.cc (class vcreate): New class.
6005         (BASE): Ditto.
6006         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
6007         * config/riscv/riscv-vector-builtins-functions.def (vcreate): Add vcreate support.
6008         * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto.
6009         (SHAPE): Ditto.
6010         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
6011         * config/riscv/riscv-vector-builtins.cc: Add args type.
6013 2023-09-12  Fei Gao  <gaofei@eswincomputing.com>
6015         * config/riscv/riscv.cc
6016         (riscv_avoid_shrink_wrapping_separate): wrap the condition check in
6017         riscv_avoid_shrink_wrapping_separate.
6018         (riscv_avoid_multi_push):avoid multi push if shrink_wrapping_separate
6019         is active.
6020         (riscv_get_separate_components):call riscv_avoid_shrink_wrapping_separate
6022 2023-09-12  Fei Gao  <gaofei@eswincomputing.com>
6024         * shrink-wrap.cc (try_shrink_wrapping_separate):call
6025         use_shrink_wrapping_separate.
6026         (use_shrink_wrapping_separate): wrap the condition
6027         check in use_shrink_wrapping_separate.
6028         * shrink-wrap.h (use_shrink_wrapping_separate): add to extern
6030 2023-09-11  Andrew Pinski  <apinski@marvell.com>
6032         PR tree-optimization/111348
6033         * match.pd (`(a CMP b) ? minmax<a, c> : minmax<b, c>`): Add :c on
6034         the cmp part of the pattern.
6036 2023-09-11  Uros Bizjak  <ubizjak@gmail.com>
6038         PR target/111340
6039         * config/i386/i386.cc (output_pic_addr_const): Handle CONST_WIDE_INT.
6040         Call output_addr_const for CASE_CONST_SCALAR_INT.
6042 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
6044         * config/riscv/thead.md: Update types
6046 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
6048         * config/riscv/riscv.md: Update types
6050 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
6052         * config/riscv/riscv.md: Add "zicond" type
6053         * config/riscv/zicond.md: Update types
6055 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
6057         * config/riscv/riscv.md: Add "pushpop" and "mvpair" types
6058         * config/riscv/zc.md: Update types
6060 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
6062         * config/riscv/autovec-opt.md: Update types
6063         * config/riscv/autovec.md: likewise
6065 2023-09-11  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6067         * config/s390/s390-builtins.def (s390_vec_signed_flt): Fix
6068         builtin flag.
6069         (s390_vec_unsigned_flt): Ditto.
6070         (s390_vec_revb_flt): Ditto.
6071         (s390_vec_reve_flt): Ditto.
6072         (s390_vclfnhs): Fix operand flags.
6073         (s390_vclfnls): Ditto.
6074         (s390_vcrnfs): Ditto.
6075         (s390_vcfn): Ditto.
6076         (s390_vcnf): Ditto.
6078 2023-09-11  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6080         * config/s390/s390-builtins.def (O_U64): New.
6081         (O1_U64): Ditto.
6082         (O2_U64): Ditto.
6083         (O3_U64): Ditto.
6084         (O4_U64): Ditto.
6085         (O_M12): Change bit position.
6086         (O_S2): Ditto.
6087         (O_S3): Ditto.
6088         (O_S4): Ditto.
6089         (O_S5): Ditto.
6090         (O_S8): Ditto.
6091         (O_S12): Ditto.
6092         (O_S16): Ditto.
6093         (O_S32): Ditto.
6094         (O_ELEM): Ditto.
6095         (O_LIT): Ditto.
6096         (OB_DEF_VAR): Add operand constraints.
6097         (B_DEF): Ditto.
6098         * config/s390/s390.cc (s390_const_operand_ok): Honour 64 bit
6099         operands.
6101 2023-09-11  Andrew Pinski  <apinski@marvell.com>
6103         PR tree-optimization/111349
6104         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): Add :c on
6105         the cmp part of the pattern.
6107 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6109         PR target/111311
6110         * config/riscv/riscv.opt: Set default as scalable vectorization.
6112 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6114         * config/riscv/riscv-protos.h (get_all_predecessors): Remove.
6115         (get_all_successors): Ditto.
6116         * config/riscv/riscv-v.cc (get_all_predecessors): Ditto.
6117         (get_all_successors): Ditto.
6119 2023-09-11  Jakub Jelinek  <jakub@redhat.com>
6121         PR middle-end/111329
6122         * pretty-print.h (pp_wide_int): Rewrite from macro into inline
6123         function.  For printing values which don't fit into digit_buffer
6124         use out-of-line function.
6125         * wide-int-print.h (pp_wide_int_large): Declare.
6126         * wide-int-print.cc: Include pretty-print.h.
6127         (pp_wide_int_large): Define.
6129 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6131         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn):
6132         Use dominance analysis.
6133         (pass_vsetvl::init): Ditto.
6134         (pass_vsetvl::done): Ditto.
6136 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6138         PR target/111311
6139         * config/riscv/autovec.md: Add VLS modes.
6140         * config/riscv/riscv-protos.h (cmp_lmul_le_one): New function.
6141         (cmp_lmul_gt_one): Ditto.
6142         * config/riscv/riscv-v.cc (cmp_lmul_le_one): Ditto.
6143         (cmp_lmul_gt_one): Ditto.
6144         * config/riscv/riscv.cc (riscv_print_operand): Add VLS modes.
6145         (riscv_vectorize_vec_perm_const): Ditto.
6146         * config/riscv/vector-iterators.md: Ditto.
6147         * config/riscv/vector.md: Ditto.
6149 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6151         * config/riscv/autovec-vls.md (*mov<mode>_vls): New pattern.
6152         * config/riscv/vector-iterators.md: New iterator
6154 2023-09-11  Andrew Pinski  <apinski@marvell.com>
6156         PR tree-optimization/111346
6157         * match.pd (`X CMP MINMAX`): Add `:c` on the cmp part
6158         of the pattern
6160 2023-09-11  liuhongt  <hongtao.liu@intel.com>
6162         PR target/111306
6163         PR target/111335
6164         * config/i386/sse.md (int_comm): New int_attr.
6165         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>):
6166         Remove % for Complex conjugate operations since they're not
6167         commutative.
6168         (fma_<complexpairopname>_<mode>_pair): Ditto.
6169         (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto.
6170         (cmul<conj_op><mode>3): Ditto.
6172 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6174         * config/riscv/riscv-v.cc (shuffle_generic_patterns): Expand
6175         fixed-vlmax/vls vector permutation.
6177 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6179         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Avoid unnecessary slideup.
6181 2023-09-10  Andrew Pinski  <apinski@marvell.com>
6183         PR tree-optimization/111331
6184         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`):
6185         Fix the LE/GE comparison to the correct value.
6186         * tree-ssa-phiopt.cc (minmax_replacement):
6187         Fix the LE/GE comparison for the
6188         `(a CMP CST1) ? max<a,CST2> : a` optimization.
6190 2023-09-10  Iain Sandoe  <iain@sandoe.co.uk>
6192         * config/darwin.cc (darwin_function_section): Place unlikely
6193         executed global init code into the standard cold section.
6195 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6197         PR target/111311
6198         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::vsetvl_fusion): Add TDF_DETAILS.
6199         (pass_vsetvl::pre_vsetvl): Ditto.
6200         (pass_vsetvl::init): Ditto.
6201         (pass_vsetvl::lazy_vsetvl): Ditto.
6203 2023-09-09  Lulu Cheng  <chenglulu@loongson.cn>
6205         * config/loongarch/loongarch.md (mulsidi3_64bit):
6206         Field unsigned extension support.
6207         (<u>muldi3_highpart): Modify template name.
6208         (<u>mulsi3_highpart): Likewise.
6209         (<u>mulsidi3_64bit): Field unsigned extension support.
6210         (<su>muldi3_highpart): Modify muldi3_highpart to
6211         smuldi3_highpart.
6212         (<su>mulsi3_highpart): Modify mulsi3_highpart to
6213         smulsi3_highpart.
6215 2023-09-09  Xi Ruoyao  <xry111@xry111.site>
6217         * config/loongarch/loongarch.cc (loongarch_block_move_straight):
6218         Check precondition (delta must be a power of 2) and use
6219         popcount_hwi instead of a homebrew loop.
6221 2023-09-09  Xi Ruoyao  <xry111@xry111.site>
6223         * config/loongarch/loongarch.h (LARCH_MAX_MOVE_PER_INSN):
6224         Define to the maximum amount of bytes able to be loaded or
6225         stored with one machine instruction.
6226         * config/loongarch/loongarch.cc (loongarch_mode_for_move_size):
6227         New static function.
6228         (loongarch_block_move_straight): Call
6229         loongarch_mode_for_move_size for machine_mode to be moved.
6230         (loongarch_expand_block_move): Use LARCH_MAX_MOVE_PER_INSN
6231         instead of UNITS_PER_WORD.
6233 2023-09-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6235         * config/riscv/vector-iterators.md: Fix floating-point operations predicate.
6237 2023-09-09  Lehua Ding  <lehua.ding@rivai.ai>
6239         * fold-const.cc (can_min_p): New function.
6240         (poly_int_binop): Try fold MIN_EXPR.
6242 2023-09-08  Aldy Hernandez  <aldyh@redhat.com>
6244         * range-op-float.cc (foperator_ltgt::fold_range): Do not special
6245         case VREL_EQ nor call frelop_early_resolve.
6247 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
6249         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
6250         Remove broken INSN.
6251         (*extendhi<SUPERQI:mode>2_th_ext): New INSN.
6252         (*extendqi<SUPERQI:mode>2_th_ext): New INSN.
6254 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
6256         * config/riscv/thead.md: Use more appropriate mode attributes
6257         for extensions.
6259 2023-09-08  Guo Jie  <guojie@loongson.cn>
6261         * common/config/loongarch/loongarch-common.cc:
6262         (default_options loongarch_option_optimization_table):
6263         Default to -fsched-pressure.
6265 2023-09-08  Yang Yujie  <yangyujie@loongson.cn>
6267         * config.gcc: remove non-POSIX syntax "<<<".
6269 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
6271         * config/riscv/bitmanip.md (*extend<SHORT:mode><SUPERQI:mode>2_zbb):
6272         Rename postfix to _bitmanip.
6273         (*extend<SHORT:mode><SUPERQI:mode>2_bitmanip): Renamed pattern.
6274         (*zero_extendhi<GPR:mode>2_zbb): Remove duplicated pattern.
6276 2023-09-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6278         * config/riscv/riscv.cc (riscv_pass_in_vector_p): Only allow RVV type.
6280 2023-09-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6282         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Fix bug.
6284 2023-09-07  liuhongt  <hongtao.liu@intel.com>
6286         * config/i386/sse.md
6287         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): New define_insn.
6288         (VHFBF_AVX512VL): New mode iterator.
6289         (VI2HFBF_AVX512VL): New mode iterator.
6291 2023-09-07  Aldy Hernandez  <aldyh@redhat.com>
6293         * value-range.h (contains_zero_p): Return false for undefined ranges.
6294         * range-op-float.cc (operator_gt::op1_op2_relation): Adjust for
6295         contains_zero_p change above.
6296         (operator_ge::op1_op2_relation): Same.
6297         (operator_equal::op1_op2_relation): Same.
6298         (operator_not_equal::op1_op2_relation): Same.
6299         (operator_lt::op1_op2_relation): Same.
6300         (operator_le::op1_op2_relation): Same.
6301         (operator_ge::op1_op2_relation): Same.
6302         * range-op.cc (operator_equal::op1_op2_relation): Same.
6303         (operator_not_equal::op1_op2_relation): Same.
6304         (operator_lt::op1_op2_relation): Same.
6305         (operator_le::op1_op2_relation): Same.
6306         (operator_cast::op1_range): Same.
6307         (set_nonzero_range_from_mask): Same.
6308         (operator_bitwise_xor::op1_range): Same.
6309         (operator_addr_expr::fold_range): Same.
6310         (operator_addr_expr::op1_range): Same.
6312 2023-09-07  Andrew MacLeod  <amacleod@redhat.com>
6314         PR tree-optimization/110875
6315         * gimple-range.cc (gimple_ranger::prefill_name): Only invoke
6316         cache-prefilling routine when the ssa-name has no global value.
6318 2023-09-07  Vladimir N. Makarov  <vmakarov@redhat.com>
6320         PR target/111225
6321         * lra-constraints.cc (goal_reuse_alt_p): New global flag.
6322         (process_alt_operands): Set up the flag.  Clear flag for chosen
6323         alternative with special memory constraints.
6324         (process_alt_operands): Set up used insn alternative depending on the flag.
6326 2023-09-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6328         * config/riscv/autovec-vls.md: Add VLS mask modes mov patterns.
6329         * config/riscv/riscv.md: Ditto.
6330         * config/riscv/vector-iterators.md: Ditto.
6331         * config/riscv/vector.md: Ditto.
6333 2023-09-07  David Malcolm  <dmalcolm@redhat.com>
6335         * diagnostic-core.h (error_meta): New decl.
6336         * diagnostic.cc (error_meta): New.
6338 2023-09-07  Jakub Jelinek  <jakub@redhat.com>
6340         PR c/102989
6341         * expr.cc (expand_expr_real_1): Don't call targetm.c.bitint_type_info
6342         inside gcc_assert, as later code relies on it filling info variable.
6343         * gimple-fold.cc (clear_padding_bitint_needs_padding_p,
6344         clear_padding_type): Likewise.
6345         * varasm.cc (output_constant): Likewise.
6346         * fold-const.cc (native_encode_int, native_interpret_int): Likewise.
6347         * stor-layout.cc (finish_bitfield_representative, layout_type):
6348         Likewise.
6349         * gimple-lower-bitint.cc (bitint_precision_kind): Likewise.
6351 2023-09-07  Xi Ruoyao  <xry111@xry111.site>
6353         PR target/111252
6354         * config/loongarch/loongarch-protos.h
6355         (loongarch_pre_reload_split): Declare new function.
6356         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
6357         * config/loongarch/loongarch.cc
6358         (loongarch_pre_reload_split): Implement.
6359         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
6360         * config/loongarch/predicates.md (ins_zero_bitmask_operand):
6361         New predicate.
6362         * config/loongarch/loongarch.md (bstrins_<mode>_for_mask):
6363         New define_insn_and_split.
6364         (bstrins_<mode>_for_ior_mask): Likewise.
6365         (define_peephole2): Further optimize code sequence produced by
6366         bstrins_<mode>_for_ior_mask if possible.
6368 2023-09-07  Richard Sandiford  <richard.sandiford@arm.com>
6370         * lra-eliminations.cc (lra_eliminate_regs_1): Use simplify_gen_binary
6371         rather than gen_rtx_PLUS.
6373 2023-09-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6375         PR target/111313
6376         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_earliest_vsetvls): Remove.
6377         (pass_vsetvl::df_post_optimization): Remove incorrect function.
6379 2023-09-07  Tsukasa OI  <research_trasio@irq.a4lg.com>
6381         * common/config/riscv/riscv-common.cc (riscv_ext_flag_table):
6382         Parse 'XVentanaCondOps' extension.
6383         * config/riscv/riscv-opts.h (MASK_XVENTANACONDOPS): New.
6384         (TARGET_XVENTANACONDOPS): Ditto.
6385         (TARGET_ZICOND_LIKE): New to represent targets with conditional
6386         moves like 'Zicond'.  It includes RV64 + 'XVentanaCondOps'.
6387         * config/riscv/riscv.cc (riscv_rtx_costs): Replace TARGET_ZICOND
6388         with TARGET_ZICOND_LIKE.
6389         (riscv_expand_conditional_move): Ditto.
6390         * config/riscv/riscv.md (mov<mode>cc): Replace TARGET_ZICOND with
6391         TARGET_ZICOND_LIKE.
6392         * config/riscv/riscv.opt: Add new riscv_xventana_subext.
6393         * config/riscv/zicond.md: Modify description.
6394         (eqz_ventana): New to match corresponding czero instructions.
6395         (nez_ventana): Ditto.
6396         (*czero.<eqz>.<GPR><X>): Emit a 'XVentanaCondOps' instruction if
6397         'Zicond' is not available but 'XVentanaCondOps' + RV64 is.
6398         (*czero.<eqz>.<GPR><X>): Ditto.
6399         (*czero.eqz.<GPR><X>.opt1): Ditto.
6400         (*czero.nez.<GPR><X>.opt2): Ditto.
6402 2023-09-06  Ian Lance Taylor  <iant@golang.org>
6404         PR go/111310
6405         * godump.cc (go_format_type): Handle BITINT_TYPE.
6407 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
6409         PR c/102989
6410         * tree.cc (build_one_cst, build_minus_one_cst): Handle BITINT_TYPE
6411         like INTEGER_TYPE.
6413 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
6415         PR c/102989
6416         * gimple-lower-bitint.cc (bitint_large_huge::if_then_else,
6417         bitint_large_huge::if_then_if_then_else): Use make_single_succ_edge
6418         rather than make_edge, initialize bb->count.
6420 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
6422         PR c/102989
6423         * doc/libgcc.texi (Bit-precise integer arithmetic functions):
6424         Document general rules for _BitInt support library functions
6425         and document __mulbitint3 and __divmodbitint4.
6426         (Conversion functions): Document __fix{s,d,x,t}fbitint,
6427         __floatbitint{s,d,x,t,h,b}f, __bid_fix{s,d,t}dbitint and
6428         __bid_floatbitint{s,d,t}d.
6430 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
6432         PR c/102989
6433         * glimits.h (BITINT_MAXWIDTH): Define if __BITINT_MAXWIDTH__ is
6434         predefined.
6436 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
6438         PR c/102989
6439         * internal-fn.cc (expand_ubsan_result_store): Add LHS, MODE and
6440         DO_ERROR arguments.  For non-mode precision BITINT_TYPE results
6441         check if all padding bits up to mode precision are zeros or sign
6442         bit copies and if not, jump to DO_ERROR.
6443         (expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow):
6444         Adjust expand_ubsan_result_store callers.
6445         * ubsan.cc: Include target.h and langhooks.h.
6446         (ubsan_encode_value): Pass BITINT_TYPE values which fit into pointer
6447         size converted to pointer sized integer, pass BITINT_TYPE values
6448         which fit into TImode (if supported) or DImode as those integer types
6449         or otherwise for now punt (pass 0).
6450         (ubsan_type_descriptor): Handle BITINT_TYPE.  For pstyle of
6451         UBSAN_PRINT_FORCE_INT use TK_Integer (0x0000) mode with a
6452         TImode/DImode precision rather than TK_Unknown used otherwise for
6453         large/huge BITINT_TYPEs.
6454         (instrument_si_overflow): Instrument BITINT_TYPE operations even when
6455         they don't have mode precision.
6456         * ubsan.h (enum ubsan_print_style): New enumerator.
6458 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
6460         PR c/102989
6461         * config/i386/i386.cc (classify_argument): Handle BITINT_TYPE.
6462         (ix86_bitint_type_info): New function.
6463         (TARGET_C_BITINT_TYPE_INFO): Redefine.
6465 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
6467         PR c/102989
6468         * Makefile.in (OBJS): Add gimple-lower-bitint.o.
6469         * passes.def: Add pass_lower_bitint after pass_lower_complex and
6470         pass_lower_bitint_O0 after pass_lower_complex_O0.
6471         * tree-pass.h (PROP_gimple_lbitint): Define.
6472         (make_pass_lower_bitint_O0, make_pass_lower_bitint): Declare.
6473         * gimple-lower-bitint.h: New file.
6474         * tree-ssa-live.h (struct _var_map): Add bitint member.
6475         (init_var_map): Adjust declaration.
6476         (region_contains_p): Handle map->bitint like map->outofssa_p.
6477         * tree-ssa-live.cc (init_var_map): Add BITINT argument, initialize
6478         map->bitint and set map->outofssa_p to false if it is non-NULL.
6479         * tree-ssa-coalesce.cc: Include gimple-lower-bitint.h.
6480         (build_ssa_conflict_graph): Call build_bitint_stmt_ssa_conflicts if
6481         map->bitint.
6482         (create_coalesce_list_for_region): For map->bitint ignore SSA_NAMEs
6483         not in that bitmap, and allow res without default def.
6484         (compute_optimized_partition_bases): In map->bitint mode try hard to
6485         coalesce any SSA_NAMEs with the same size.
6486         (coalesce_bitint): New function.
6487         (coalesce_ssa_name): In map->bitint mode, or map->bitmap into
6488         used_in_copies and call coalesce_bitint.
6489         * gimple-lower-bitint.cc: New file.
6491 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
6493         PR c/102989
6494         * tree.def (BITINT_TYPE): New type.
6495         * tree.h (TREE_CHECK6, TREE_NOT_CHECK6): Define.
6496         (NUMERICAL_TYPE_CHECK, INTEGRAL_TYPE_P): Include
6497         BITINT_TYPE.
6498         (BITINT_TYPE_P): Define.
6499         (CONSTRUCTOR_BITFIELD_P): Return true even for BLKmode bit-fields if
6500         they have BITINT_TYPE type.
6501         (tree_check6, tree_not_check6): New inline functions.
6502         (any_integral_type_check): Include BITINT_TYPE.
6503         (build_bitint_type): Declare.
6504         * tree.cc (tree_code_size, wide_int_to_tree_1, cache_integer_cst,
6505         build_zero_cst, type_hash_canon_hash, type_cache_hasher::equal,
6506         type_hash_canon): Handle BITINT_TYPE.
6507         (bitint_type_cache): New variable.
6508         (build_bitint_type): New function.
6509         (signed_or_unsigned_type_for, verify_type_variant, verify_type):
6510         Handle BITINT_TYPE.
6511         (tree_cc_finalize): Free bitint_type_cache.
6512         * builtins.cc (type_to_class): Handle BITINT_TYPE.
6513         (fold_builtin_unordered_cmp): Handle BITINT_TYPE like INTEGER_TYPE.
6514         * cfgexpand.cc (expand_debug_expr): Punt on BLKmode BITINT_TYPE
6515         INTEGER_CSTs.
6516         * convert.cc (convert_to_pointer_1, convert_to_real_1,
6517         convert_to_complex_1): Handle BITINT_TYPE like INTEGER_TYPE.
6518         (convert_to_integer_1): Likewise.  For BITINT_TYPE don't check
6519         GET_MODE_PRECISION (TYPE_MODE (type)).
6520         * doc/generic.texi (BITINT_TYPE): Document.
6521         * doc/tm.texi.in (TARGET_C_BITINT_TYPE_INFO): New.
6522         * doc/tm.texi: Regenerated.
6523         * dwarf2out.cc (base_type_die, is_base_type, modified_type_die,
6524         gen_type_die_with_usage): Handle BITINT_TYPE.
6525         (rtl_for_decl_init): Punt on BLKmode BITINT_TYPE INTEGER_CSTs or
6526         handle those which fit into shwi.
6527         * expr.cc (expand_expr_real_1): Define EXTEND_BITINT macro, reduce
6528         to bitfield precision reads from BITINT_TYPE vars, parameters or
6529         memory locations.  Expand large/huge BITINT_TYPE INTEGER_CSTs into
6530         memory.
6531         * fold-const.cc (fold_convert_loc, make_range_step): Handle
6532         BITINT_TYPE.
6533         (extract_muldiv_1): For BITINT_TYPE use TYPE_PRECISION rather than
6534         GET_MODE_SIZE (SCALAR_INT_TYPE_MODE).
6535         (native_encode_int, native_interpret_int, native_interpret_expr):
6536         Handle BITINT_TYPE.
6537         * gimple-expr.cc (useless_type_conversion_p): Make BITINT_TYPE
6538         to some other integral type or vice versa conversions non-useless.
6539         * gimple-fold.cc (gimple_fold_builtin_memset): Punt for BITINT_TYPE.
6540         (clear_padding_unit): Mention in comment that _BitInt types don't need
6541         to fit either.
6542         (clear_padding_bitint_needs_padding_p): New function.
6543         (clear_padding_type_may_have_padding_p): Handle BITINT_TYPE.
6544         (clear_padding_type): Likewise.
6545         * internal-fn.cc (expand_mul_overflow): For unsigned non-mode
6546         precision operands force pos_neg? to 1.
6547         (expand_MULBITINT, expand_DIVMODBITINT, expand_FLOATTOBITINT,
6548         expand_BITINTTOFLOAT): New functions.
6549         * internal-fn.def (MULBITINT, DIVMODBITINT, FLOATTOBITINT,
6550         BITINTTOFLOAT): New internal functions.
6551         * internal-fn.h (expand_MULBITINT, expand_DIVMODBITINT,
6552         expand_FLOATTOBITINT, expand_BITINTTOFLOAT): Declare.
6553         * match.pd (non-equality compare simplifications from fold_binary):
6554         Punt if TYPE_MODE (arg1_type) is BLKmode.
6555         * pretty-print.h (pp_wide_int): Handle printing of large precision
6556         wide_ints which would buffer overflow digit_buffer.
6557         * stor-layout.cc (finish_bitfield_representative): For bit-fields
6558         with BITINT_TYPE, prefer representatives with precisions in
6559         multiple of limb precision.
6560         (layout_type): Handle BITINT_TYPE.  Handle COMPLEX_TYPE with BLKmode
6561         element type and assert it is BITINT_TYPE.
6562         * target.def (bitint_type_info): New C target hook.
6563         * target.h (struct bitint_info): New type.
6564         * targhooks.cc (default_bitint_type_info): New function.
6565         * targhooks.h (default_bitint_type_info): Declare.
6566         * tree-pretty-print.cc (dump_generic_node): Handle BITINT_TYPE.
6567         Handle printing large wide_ints which would buffer overflow
6568         digit_buffer.
6569         * tree-ssa-sccvn.cc: Include target.h.
6570         (eliminate_dom_walker::eliminate_stmt): Punt for large/huge
6571         BITINT_TYPE.
6572         * tree-switch-conversion.cc (jump_table_cluster::emit): For more than
6573         64-bit BITINT_TYPE subtract low bound from expression and cast to
6574         64-bit integer type both the controlling expression and case labels.
6575         * typeclass.h (enum type_class): Add bitint_type_class enumerator.
6576         * varasm.cc (output_constant): Handle BITINT_TYPE INTEGER_CSTs.
6577         * vr-values.cc (check_for_binary_op_overflow): Use widest2_int rather
6578         than widest_int.
6579         (simplify_using_ranges::simplify_internal_call_using_ranges): Use
6580         unsigned_type_for rather than build_nonstandard_integer_type.
6582 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6584         PR target/111296
6585         * config/riscv/riscv.cc (riscv_modes_tieable_p): Fix incorrect mode
6586         tieable for RVV modes.
6588 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6590         PR target/111295
6591         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Bug fix.
6593 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6595         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Remove TARGET_64BIT
6597 2023-09-06  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
6599         * config/xtensa/xtensa.cc (xtensa_expand_scc):
6600         Add code for particular constants (only 0 and INT_MIN for now)
6601         for EQ/NE boolean evaluation in SImode.
6602         * config/xtensa/xtensa.md (*eqne_INT_MIN): Remove because its
6603         implementation has been integrated into the above.
6605 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
6607         PR target/111232
6608         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>):
6609         Delete.
6610         (*pred_widen_mulsu<mode>): Delete.
6611         (*pred_single_widen_mul<mode>): Delete.
6612         (*dual_widen_<any_widen_binop:optab><any_extend:su><mode>):
6613         Add new combine patterns.
6614         (*single_widen_sub<any_extend:su><mode>): Ditto.
6615         (*single_widen_add<any_extend:su><mode>): Ditto.
6616         (*single_widen_mult<any_extend:su><mode>): Ditto.
6617         (*dual_widen_mulsu<mode>): Ditto.
6618         (*dual_widen_mulus<mode>): Ditto.
6619         (*dual_widen_<optab><mode>): Ditto.
6620         (*single_widen_add<mode>): Ditto.
6621         (*single_widen_sub<mode>): Ditto.
6622         (*single_widen_mult<mode>): Ditto.
6623         * config/riscv/autovec.md (<optab><mode>3):
6624         Change define_expand to define_insn_and_split.
6625         (<optab><mode>2): Ditto.
6626         (abs<mode>2): Ditto.
6627         (smul<mode>3_highpart): Ditto.
6628         (umul<mode>3_highpart): Ditto.
6630 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
6632         * config/riscv/riscv-protos.h (riscv_declare_function_name): Add protos.
6633         (riscv_asm_output_alias): Ditto.
6634         (riscv_asm_output_external): Ditto.
6635         * config/riscv/riscv.cc (riscv_asm_output_variant_cc):
6636         Output .variant_cc directive for vector function.
6637         (riscv_declare_function_name): Ditto.
6638         (riscv_asm_output_alias): Ditto.
6639         (riscv_asm_output_external): Ditto.
6640         * config/riscv/riscv.h (ASM_DECLARE_FUNCTION_NAME):
6641         Implement ASM_DECLARE_FUNCTION_NAME.
6642         (ASM_OUTPUT_DEF_FROM_DECLS): Implement ASM_OUTPUT_DEF_FROM_DECLS.
6643         (ASM_OUTPUT_EXTERNAL): Implement ASM_OUTPUT_EXTERNAL.
6645 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
6647         * config/riscv/riscv-sr.cc (riscv_remove_unneeded_save_restore_calls): Pass riscv_cc.
6648         * config/riscv/riscv.cc (struct riscv_frame_info): Add new fileds.
6649         (riscv_frame_info::reset): Reset new fileds.
6650         (riscv_call_tls_get_addr): Pass riscv_cc.
6651         (riscv_function_arg): Return riscv_cc for call patterm.
6652         (get_riscv_cc): New function return riscv_cc from rtl call_insn.
6653         (riscv_insn_callee_abi): Implement TARGET_INSN_CALLEE_ABI.
6654         (riscv_save_reg_p): Add vector callee-saved check.
6655         (riscv_stack_align): Add vector save area comment.
6656         (riscv_compute_frame_info): Ditto.
6657         (riscv_restore_reg): Update for type change.
6658         (riscv_for_each_saved_v_reg): New function save vector registers.
6659         (riscv_first_stack_step): Handle funciton with vector callee-saved registers.
6660         (riscv_expand_prologue): Ditto.
6661         (riscv_expand_epilogue): Ditto.
6662         (riscv_output_mi_thunk): Pass riscv_cc.
6663         (TARGET_INSN_CALLEE_ABI): Implement TARGET_INSN_CALLEE_ABI.
6664         * config/riscv/riscv.h (get_riscv_cc): Export get_riscv_cc function.
6665         * config/riscv/riscv.md: Add CALLEE_CC operand for call pattern.
6667 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
6669         * config/riscv/riscv-protos.h (builtin_type_p): New function for checking vector type.
6670         * config/riscv/riscv-vector-builtins.cc (builtin_type_p): Ditto.
6671         * config/riscv/riscv.cc (struct riscv_arg_info): New fields.
6672         (riscv_init_cumulative_args): Setup variant_cc field.
6673         (riscv_vector_type_p): New function for checking vector type.
6674         (riscv_hard_regno_nregs): Hoist declare.
6675         (riscv_get_vector_arg): Subroutine of riscv_get_arg_info.
6676         (riscv_get_arg_info): Support vector cc.
6677         (riscv_function_arg_advance): Update cum.
6678         (riscv_pass_by_reference): Handle vector args.
6679         (riscv_v_abi): New function return vector abi.
6680         (riscv_return_value_is_vector_type_p): New function for check vector arguments.
6681         (riscv_arguments_is_vector_type_p): New function for check vector returns.
6682         (riscv_fntype_abi): Implement TARGET_FNTYPE_ABI.
6683         (TARGET_FNTYPE_ABI): Implement TARGET_FNTYPE_ABI.
6684         * config/riscv/riscv.h (GCC_RISCV_H): Define macros for vector abi.
6685         (MAX_ARGS_IN_VECTOR_REGISTERS): Ditto.
6686         (MAX_ARGS_IN_MASK_REGISTERS): Ditto.
6687         (V_ARG_FIRST): Ditto.
6688         (V_ARG_LAST): Ditto.
6689         (enum riscv_cc): Define all RISCV_CC variants.
6690         * config/riscv/riscv.opt: Add --param=riscv-vector-abi.
6692 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
6694         * config/riscv/autovec-opt.md (*cond_<optab><mode>):
6695         Add sqrt + vcond_mask combine pattern.
6696         * config/riscv/autovec.md (<optab><mode>2):
6697         Change define_expand to define_insn_and_split.
6699 2023-09-06  Jason Merrill  <jason@redhat.com>
6701         * common.opt: Update -fabi-version=19.
6703 2023-09-06  Tsukasa OI  <research_trasio@irq.a4lg.com>
6705         * config/riscv/zicond.md: Add closing parent to a comment.
6707 2023-09-06  Tsukasa OI  <research_trasio@irq.a4lg.com>
6709         * config/riscv/riscv.cc (riscv_expand_conditional_move): Force
6710         large constant cons/alt into a register.
6712 2023-09-05  Christoph Müllner  <christoph.muellner@vrull.eu>
6714         * config/riscv/riscv.cc (riscv_build_integer_1): Don't
6715         require one zero bit in the upper 32 bits for LI+RORI synthesis.
6717 2023-09-05  Jeff Law  <jlaw@ventanamicro.com>
6719         * config/riscv/bitmanip.md (bswapsi2): Expose for TARGET_64BIT.
6721 2023-09-05  Andrew Pinski  <apinski@marvell.com>
6723         PR tree-optimization/98710
6724         * match.pd (`(x | c) & ~(y | c)`, `(x & c) | ~(y & c)`): New pattern.
6725         (`x & ~(y | x)`, `x | ~(y & x)`): New patterns.
6727 2023-09-05  Andrew Pinski  <apinski@marvell.com>
6729         PR tree-optimization/103536
6730         * match.pd (`(x | y) & (x & z)`,
6731         `(x & y) | (x | z)`): New patterns.
6733 2023-09-05  Andrew Pinski  <apinski@marvell.com>
6735         PR tree-optimization/107137
6736         * match.pd (`(nop_convert)-(convert)a`): New pattern.
6738 2023-09-05  Andrew Pinski  <apinski@marvell.com>
6740         PR tree-optimization/96694
6741         * match.pd (`~MAX(~X, Y)`, `~MIN(~X, Y)`): New patterns.
6743 2023-09-05  Andrew Pinski  <apinski@marvell.com>
6745         PR tree-optimization/105832
6746         * match.pd (`(1 >> X) != 0`): New pattern
6748 2023-09-05  Edwin Lu  <ewlu@rivosinc.com>
6750         * config/riscv/riscv.md: Update/Add types
6752 2023-09-05  Edwin Lu  <ewlu@rivosinc.com>
6754         * config/riscv/pic.md: Update types
6756 2023-09-05  Christoph Müllner  <christoph.muellner@vrull.eu>
6758         * config/riscv/riscv.cc (riscv_build_integer_1): Enable constant
6759         synthesis with rotate-right for XTheadBb.
6761 2023-09-05  Vineet Gupta  <vineetg@rivosinc.com>
6763         * config/riscv/zicond.md: Fix op2 pattern.
6765 2023-09-05  Szabolcs Nagy  <szabolcs.nagy@arm.com>
6767         * config/aarch64/aarch64.h (AARCH64_ISA_RCPC): Remove dup.
6769 2023-09-05  Xi Ruoyao  <xry111@xry111.site>
6771         * config/loongarch/loongarch-opts.h (HAVE_AS_EXPLICIT_RELOCS):
6772         Define to 0 if not defined yet.
6774 2023-09-05  Kito Cheng  <kito.cheng@sifive.com>
6776         * config/riscv/linux.h (TARGET_ASM_FILE_END): Move ...
6777         * config/riscv/riscv.cc (TARGET_ASM_FILE_END): to here.
6779 2023-09-05  Pan Li  <pan2.li@intel.com>
6781         * config/riscv/autovec-vls.md (copysign<mode>3): New pattern.
6782         * config/riscv/vector.md: Extend iterator for VLS.
6784 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
6786         * config.gcc: Export the header file lasxintrin.h.
6787         * config/loongarch/loongarch-builtins.cc (enum loongarch_builtin_type):
6788         Add Loongson ASX builtin functions support.
6789         (AVAIL_ALL): Ditto.
6790         (LASX_BUILTIN): Ditto.
6791         (LASX_NO_TARGET_BUILTIN): Ditto.
6792         (LASX_BUILTIN_TEST_BRANCH): Ditto.
6793         (CODE_FOR_lasx_xvsadd_b): Ditto.
6794         (CODE_FOR_lasx_xvsadd_h): Ditto.
6795         (CODE_FOR_lasx_xvsadd_w): Ditto.
6796         (CODE_FOR_lasx_xvsadd_d): Ditto.
6797         (CODE_FOR_lasx_xvsadd_bu): Ditto.
6798         (CODE_FOR_lasx_xvsadd_hu): Ditto.
6799         (CODE_FOR_lasx_xvsadd_wu): Ditto.
6800         (CODE_FOR_lasx_xvsadd_du): Ditto.
6801         (CODE_FOR_lasx_xvadd_b): Ditto.
6802         (CODE_FOR_lasx_xvadd_h): Ditto.
6803         (CODE_FOR_lasx_xvadd_w): Ditto.
6804         (CODE_FOR_lasx_xvadd_d): Ditto.
6805         (CODE_FOR_lasx_xvaddi_bu): Ditto.
6806         (CODE_FOR_lasx_xvaddi_hu): Ditto.
6807         (CODE_FOR_lasx_xvaddi_wu): Ditto.
6808         (CODE_FOR_lasx_xvaddi_du): Ditto.
6809         (CODE_FOR_lasx_xvand_v): Ditto.
6810         (CODE_FOR_lasx_xvandi_b): Ditto.
6811         (CODE_FOR_lasx_xvbitsel_v): Ditto.
6812         (CODE_FOR_lasx_xvseqi_b): Ditto.
6813         (CODE_FOR_lasx_xvseqi_h): Ditto.
6814         (CODE_FOR_lasx_xvseqi_w): Ditto.
6815         (CODE_FOR_lasx_xvseqi_d): Ditto.
6816         (CODE_FOR_lasx_xvslti_b): Ditto.
6817         (CODE_FOR_lasx_xvslti_h): Ditto.
6818         (CODE_FOR_lasx_xvslti_w): Ditto.
6819         (CODE_FOR_lasx_xvslti_d): Ditto.
6820         (CODE_FOR_lasx_xvslti_bu): Ditto.
6821         (CODE_FOR_lasx_xvslti_hu): Ditto.
6822         (CODE_FOR_lasx_xvslti_wu): Ditto.
6823         (CODE_FOR_lasx_xvslti_du): Ditto.
6824         (CODE_FOR_lasx_xvslei_b): Ditto.
6825         (CODE_FOR_lasx_xvslei_h): Ditto.
6826         (CODE_FOR_lasx_xvslei_w): Ditto.
6827         (CODE_FOR_lasx_xvslei_d): Ditto.
6828         (CODE_FOR_lasx_xvslei_bu): Ditto.
6829         (CODE_FOR_lasx_xvslei_hu): Ditto.
6830         (CODE_FOR_lasx_xvslei_wu): Ditto.
6831         (CODE_FOR_lasx_xvslei_du): Ditto.
6832         (CODE_FOR_lasx_xvdiv_b): Ditto.
6833         (CODE_FOR_lasx_xvdiv_h): Ditto.
6834         (CODE_FOR_lasx_xvdiv_w): Ditto.
6835         (CODE_FOR_lasx_xvdiv_d): Ditto.
6836         (CODE_FOR_lasx_xvdiv_bu): Ditto.
6837         (CODE_FOR_lasx_xvdiv_hu): Ditto.
6838         (CODE_FOR_lasx_xvdiv_wu): Ditto.
6839         (CODE_FOR_lasx_xvdiv_du): Ditto.
6840         (CODE_FOR_lasx_xvfadd_s): Ditto.
6841         (CODE_FOR_lasx_xvfadd_d): Ditto.
6842         (CODE_FOR_lasx_xvftintrz_w_s): Ditto.
6843         (CODE_FOR_lasx_xvftintrz_l_d): Ditto.
6844         (CODE_FOR_lasx_xvftintrz_wu_s): Ditto.
6845         (CODE_FOR_lasx_xvftintrz_lu_d): Ditto.
6846         (CODE_FOR_lasx_xvffint_s_w): Ditto.
6847         (CODE_FOR_lasx_xvffint_d_l): Ditto.
6848         (CODE_FOR_lasx_xvffint_s_wu): Ditto.
6849         (CODE_FOR_lasx_xvffint_d_lu): Ditto.
6850         (CODE_FOR_lasx_xvfsub_s): Ditto.
6851         (CODE_FOR_lasx_xvfsub_d): Ditto.
6852         (CODE_FOR_lasx_xvfmul_s): Ditto.
6853         (CODE_FOR_lasx_xvfmul_d): Ditto.
6854         (CODE_FOR_lasx_xvfdiv_s): Ditto.
6855         (CODE_FOR_lasx_xvfdiv_d): Ditto.
6856         (CODE_FOR_lasx_xvfmax_s): Ditto.
6857         (CODE_FOR_lasx_xvfmax_d): Ditto.
6858         (CODE_FOR_lasx_xvfmin_s): Ditto.
6859         (CODE_FOR_lasx_xvfmin_d): Ditto.
6860         (CODE_FOR_lasx_xvfsqrt_s): Ditto.
6861         (CODE_FOR_lasx_xvfsqrt_d): Ditto.
6862         (CODE_FOR_lasx_xvflogb_s): Ditto.
6863         (CODE_FOR_lasx_xvflogb_d): Ditto.
6864         (CODE_FOR_lasx_xvmax_b): Ditto.
6865         (CODE_FOR_lasx_xvmax_h): Ditto.
6866         (CODE_FOR_lasx_xvmax_w): Ditto.
6867         (CODE_FOR_lasx_xvmax_d): Ditto.
6868         (CODE_FOR_lasx_xvmaxi_b): Ditto.
6869         (CODE_FOR_lasx_xvmaxi_h): Ditto.
6870         (CODE_FOR_lasx_xvmaxi_w): Ditto.
6871         (CODE_FOR_lasx_xvmaxi_d): Ditto.
6872         (CODE_FOR_lasx_xvmax_bu): Ditto.
6873         (CODE_FOR_lasx_xvmax_hu): Ditto.
6874         (CODE_FOR_lasx_xvmax_wu): Ditto.
6875         (CODE_FOR_lasx_xvmax_du): Ditto.
6876         (CODE_FOR_lasx_xvmaxi_bu): Ditto.
6877         (CODE_FOR_lasx_xvmaxi_hu): Ditto.
6878         (CODE_FOR_lasx_xvmaxi_wu): Ditto.
6879         (CODE_FOR_lasx_xvmaxi_du): Ditto.
6880         (CODE_FOR_lasx_xvmin_b): Ditto.
6881         (CODE_FOR_lasx_xvmin_h): Ditto.
6882         (CODE_FOR_lasx_xvmin_w): Ditto.
6883         (CODE_FOR_lasx_xvmin_d): Ditto.
6884         (CODE_FOR_lasx_xvmini_b): Ditto.
6885         (CODE_FOR_lasx_xvmini_h): Ditto.
6886         (CODE_FOR_lasx_xvmini_w): Ditto.
6887         (CODE_FOR_lasx_xvmini_d): Ditto.
6888         (CODE_FOR_lasx_xvmin_bu): Ditto.
6889         (CODE_FOR_lasx_xvmin_hu): Ditto.
6890         (CODE_FOR_lasx_xvmin_wu): Ditto.
6891         (CODE_FOR_lasx_xvmin_du): Ditto.
6892         (CODE_FOR_lasx_xvmini_bu): Ditto.
6893         (CODE_FOR_lasx_xvmini_hu): Ditto.
6894         (CODE_FOR_lasx_xvmini_wu): Ditto.
6895         (CODE_FOR_lasx_xvmini_du): Ditto.
6896         (CODE_FOR_lasx_xvmod_b): Ditto.
6897         (CODE_FOR_lasx_xvmod_h): Ditto.
6898         (CODE_FOR_lasx_xvmod_w): Ditto.
6899         (CODE_FOR_lasx_xvmod_d): Ditto.
6900         (CODE_FOR_lasx_xvmod_bu): Ditto.
6901         (CODE_FOR_lasx_xvmod_hu): Ditto.
6902         (CODE_FOR_lasx_xvmod_wu): Ditto.
6903         (CODE_FOR_lasx_xvmod_du): Ditto.
6904         (CODE_FOR_lasx_xvmul_b): Ditto.
6905         (CODE_FOR_lasx_xvmul_h): Ditto.
6906         (CODE_FOR_lasx_xvmul_w): Ditto.
6907         (CODE_FOR_lasx_xvmul_d): Ditto.
6908         (CODE_FOR_lasx_xvclz_b): Ditto.
6909         (CODE_FOR_lasx_xvclz_h): Ditto.
6910         (CODE_FOR_lasx_xvclz_w): Ditto.
6911         (CODE_FOR_lasx_xvclz_d): Ditto.
6912         (CODE_FOR_lasx_xvnor_v): Ditto.
6913         (CODE_FOR_lasx_xvor_v): Ditto.
6914         (CODE_FOR_lasx_xvori_b): Ditto.
6915         (CODE_FOR_lasx_xvnori_b): Ditto.
6916         (CODE_FOR_lasx_xvpcnt_b): Ditto.
6917         (CODE_FOR_lasx_xvpcnt_h): Ditto.
6918         (CODE_FOR_lasx_xvpcnt_w): Ditto.
6919         (CODE_FOR_lasx_xvpcnt_d): Ditto.
6920         (CODE_FOR_lasx_xvxor_v): Ditto.
6921         (CODE_FOR_lasx_xvxori_b): Ditto.
6922         (CODE_FOR_lasx_xvsll_b): Ditto.
6923         (CODE_FOR_lasx_xvsll_h): Ditto.
6924         (CODE_FOR_lasx_xvsll_w): Ditto.
6925         (CODE_FOR_lasx_xvsll_d): Ditto.
6926         (CODE_FOR_lasx_xvslli_b): Ditto.
6927         (CODE_FOR_lasx_xvslli_h): Ditto.
6928         (CODE_FOR_lasx_xvslli_w): Ditto.
6929         (CODE_FOR_lasx_xvslli_d): Ditto.
6930         (CODE_FOR_lasx_xvsra_b): Ditto.
6931         (CODE_FOR_lasx_xvsra_h): Ditto.
6932         (CODE_FOR_lasx_xvsra_w): Ditto.
6933         (CODE_FOR_lasx_xvsra_d): Ditto.
6934         (CODE_FOR_lasx_xvsrai_b): Ditto.
6935         (CODE_FOR_lasx_xvsrai_h): Ditto.
6936         (CODE_FOR_lasx_xvsrai_w): Ditto.
6937         (CODE_FOR_lasx_xvsrai_d): Ditto.
6938         (CODE_FOR_lasx_xvsrl_b): Ditto.
6939         (CODE_FOR_lasx_xvsrl_h): Ditto.
6940         (CODE_FOR_lasx_xvsrl_w): Ditto.
6941         (CODE_FOR_lasx_xvsrl_d): Ditto.
6942         (CODE_FOR_lasx_xvsrli_b): Ditto.
6943         (CODE_FOR_lasx_xvsrli_h): Ditto.
6944         (CODE_FOR_lasx_xvsrli_w): Ditto.
6945         (CODE_FOR_lasx_xvsrli_d): Ditto.
6946         (CODE_FOR_lasx_xvsub_b): Ditto.
6947         (CODE_FOR_lasx_xvsub_h): Ditto.
6948         (CODE_FOR_lasx_xvsub_w): Ditto.
6949         (CODE_FOR_lasx_xvsub_d): Ditto.
6950         (CODE_FOR_lasx_xvsubi_bu): Ditto.
6951         (CODE_FOR_lasx_xvsubi_hu): Ditto.
6952         (CODE_FOR_lasx_xvsubi_wu): Ditto.
6953         (CODE_FOR_lasx_xvsubi_du): Ditto.
6954         (CODE_FOR_lasx_xvpackod_d): Ditto.
6955         (CODE_FOR_lasx_xvpackev_d): Ditto.
6956         (CODE_FOR_lasx_xvpickod_d): Ditto.
6957         (CODE_FOR_lasx_xvpickev_d): Ditto.
6958         (CODE_FOR_lasx_xvrepli_b): Ditto.
6959         (CODE_FOR_lasx_xvrepli_h): Ditto.
6960         (CODE_FOR_lasx_xvrepli_w): Ditto.
6961         (CODE_FOR_lasx_xvrepli_d): Ditto.
6962         (CODE_FOR_lasx_xvandn_v): Ditto.
6963         (CODE_FOR_lasx_xvorn_v): Ditto.
6964         (CODE_FOR_lasx_xvneg_b): Ditto.
6965         (CODE_FOR_lasx_xvneg_h): Ditto.
6966         (CODE_FOR_lasx_xvneg_w): Ditto.
6967         (CODE_FOR_lasx_xvneg_d): Ditto.
6968         (CODE_FOR_lasx_xvbsrl_v): Ditto.
6969         (CODE_FOR_lasx_xvbsll_v): Ditto.
6970         (CODE_FOR_lasx_xvfmadd_s): Ditto.
6971         (CODE_FOR_lasx_xvfmadd_d): Ditto.
6972         (CODE_FOR_lasx_xvfmsub_s): Ditto.
6973         (CODE_FOR_lasx_xvfmsub_d): Ditto.
6974         (CODE_FOR_lasx_xvfnmadd_s): Ditto.
6975         (CODE_FOR_lasx_xvfnmadd_d): Ditto.
6976         (CODE_FOR_lasx_xvfnmsub_s): Ditto.
6977         (CODE_FOR_lasx_xvfnmsub_d): Ditto.
6978         (CODE_FOR_lasx_xvpermi_q): Ditto.
6979         (CODE_FOR_lasx_xvpermi_d): Ditto.
6980         (CODE_FOR_lasx_xbnz_v): Ditto.
6981         (CODE_FOR_lasx_xbz_v): Ditto.
6982         (CODE_FOR_lasx_xvssub_b): Ditto.
6983         (CODE_FOR_lasx_xvssub_h): Ditto.
6984         (CODE_FOR_lasx_xvssub_w): Ditto.
6985         (CODE_FOR_lasx_xvssub_d): Ditto.
6986         (CODE_FOR_lasx_xvssub_bu): Ditto.
6987         (CODE_FOR_lasx_xvssub_hu): Ditto.
6988         (CODE_FOR_lasx_xvssub_wu): Ditto.
6989         (CODE_FOR_lasx_xvssub_du): Ditto.
6990         (CODE_FOR_lasx_xvabsd_b): Ditto.
6991         (CODE_FOR_lasx_xvabsd_h): Ditto.
6992         (CODE_FOR_lasx_xvabsd_w): Ditto.
6993         (CODE_FOR_lasx_xvabsd_d): Ditto.
6994         (CODE_FOR_lasx_xvabsd_bu): Ditto.
6995         (CODE_FOR_lasx_xvabsd_hu): Ditto.
6996         (CODE_FOR_lasx_xvabsd_wu): Ditto.
6997         (CODE_FOR_lasx_xvabsd_du): Ditto.
6998         (CODE_FOR_lasx_xvavg_b): Ditto.
6999         (CODE_FOR_lasx_xvavg_h): Ditto.
7000         (CODE_FOR_lasx_xvavg_w): Ditto.
7001         (CODE_FOR_lasx_xvavg_d): Ditto.
7002         (CODE_FOR_lasx_xvavg_bu): Ditto.
7003         (CODE_FOR_lasx_xvavg_hu): Ditto.
7004         (CODE_FOR_lasx_xvavg_wu): Ditto.
7005         (CODE_FOR_lasx_xvavg_du): Ditto.
7006         (CODE_FOR_lasx_xvavgr_b): Ditto.
7007         (CODE_FOR_lasx_xvavgr_h): Ditto.
7008         (CODE_FOR_lasx_xvavgr_w): Ditto.
7009         (CODE_FOR_lasx_xvavgr_d): Ditto.
7010         (CODE_FOR_lasx_xvavgr_bu): Ditto.
7011         (CODE_FOR_lasx_xvavgr_hu): Ditto.
7012         (CODE_FOR_lasx_xvavgr_wu): Ditto.
7013         (CODE_FOR_lasx_xvavgr_du): Ditto.
7014         (CODE_FOR_lasx_xvmuh_b): Ditto.
7015         (CODE_FOR_lasx_xvmuh_h): Ditto.
7016         (CODE_FOR_lasx_xvmuh_w): Ditto.
7017         (CODE_FOR_lasx_xvmuh_d): Ditto.
7018         (CODE_FOR_lasx_xvmuh_bu): Ditto.
7019         (CODE_FOR_lasx_xvmuh_hu): Ditto.
7020         (CODE_FOR_lasx_xvmuh_wu): Ditto.
7021         (CODE_FOR_lasx_xvmuh_du): Ditto.
7022         (CODE_FOR_lasx_xvssran_b_h): Ditto.
7023         (CODE_FOR_lasx_xvssran_h_w): Ditto.
7024         (CODE_FOR_lasx_xvssran_w_d): Ditto.
7025         (CODE_FOR_lasx_xvssran_bu_h): Ditto.
7026         (CODE_FOR_lasx_xvssran_hu_w): Ditto.
7027         (CODE_FOR_lasx_xvssran_wu_d): Ditto.
7028         (CODE_FOR_lasx_xvssrarn_b_h): Ditto.
7029         (CODE_FOR_lasx_xvssrarn_h_w): Ditto.
7030         (CODE_FOR_lasx_xvssrarn_w_d): Ditto.
7031         (CODE_FOR_lasx_xvssrarn_bu_h): Ditto.
7032         (CODE_FOR_lasx_xvssrarn_hu_w): Ditto.
7033         (CODE_FOR_lasx_xvssrarn_wu_d): Ditto.
7034         (CODE_FOR_lasx_xvssrln_bu_h): Ditto.
7035         (CODE_FOR_lasx_xvssrln_hu_w): Ditto.
7036         (CODE_FOR_lasx_xvssrln_wu_d): Ditto.
7037         (CODE_FOR_lasx_xvssrlrn_bu_h): Ditto.
7038         (CODE_FOR_lasx_xvssrlrn_hu_w): Ditto.
7039         (CODE_FOR_lasx_xvssrlrn_wu_d): Ditto.
7040         (CODE_FOR_lasx_xvftint_w_s): Ditto.
7041         (CODE_FOR_lasx_xvftint_l_d): Ditto.
7042         (CODE_FOR_lasx_xvftint_wu_s): Ditto.
7043         (CODE_FOR_lasx_xvftint_lu_d): Ditto.
7044         (CODE_FOR_lasx_xvsllwil_h_b): Ditto.
7045         (CODE_FOR_lasx_xvsllwil_w_h): Ditto.
7046         (CODE_FOR_lasx_xvsllwil_d_w): Ditto.
7047         (CODE_FOR_lasx_xvsllwil_hu_bu): Ditto.
7048         (CODE_FOR_lasx_xvsllwil_wu_hu): Ditto.
7049         (CODE_FOR_lasx_xvsllwil_du_wu): Ditto.
7050         (CODE_FOR_lasx_xvsat_b): Ditto.
7051         (CODE_FOR_lasx_xvsat_h): Ditto.
7052         (CODE_FOR_lasx_xvsat_w): Ditto.
7053         (CODE_FOR_lasx_xvsat_d): Ditto.
7054         (CODE_FOR_lasx_xvsat_bu): Ditto.
7055         (CODE_FOR_lasx_xvsat_hu): Ditto.
7056         (CODE_FOR_lasx_xvsat_wu): Ditto.
7057         (CODE_FOR_lasx_xvsat_du): Ditto.
7058         (loongarch_builtin_vectorized_function): Ditto.
7059         (loongarch_expand_builtin_insn): Ditto.
7060         (loongarch_expand_builtin): Ditto.
7061         * config/loongarch/loongarch-ftypes.def (1): Ditto.
7062         (2): Ditto.
7063         (3): Ditto.
7064         (4): Ditto.
7065         * config/loongarch/lasxintrin.h: New file.
7067 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
7069         * config/loongarch/loongarch-modes.def
7070         (VECTOR_MODES): Add Loongson ASX instruction support.
7071         * config/loongarch/loongarch-protos.h (loongarch_split_256bit_move): Ditto.
7072         (loongarch_split_256bit_move_p): Ditto.
7073         (loongarch_expand_vector_group_init): Ditto.
7074         (loongarch_expand_vec_perm_1): Ditto.
7075         * config/loongarch/loongarch.cc (loongarch_symbol_insns): Ditto.
7076         (loongarch_valid_offset_p): Ditto.
7077         (loongarch_address_insns): Ditto.
7078         (loongarch_const_insns): Ditto.
7079         (loongarch_legitimize_move): Ditto.
7080         (loongarch_builtin_vectorization_cost): Ditto.
7081         (loongarch_split_move_p): Ditto.
7082         (loongarch_split_move): Ditto.
7083         (loongarch_output_move_index_float): Ditto.
7084         (loongarch_split_256bit_move_p): Ditto.
7085         (loongarch_split_256bit_move): Ditto.
7086         (loongarch_output_move): Ditto.
7087         (loongarch_print_operand_reloc): Ditto.
7088         (loongarch_print_operand): Ditto.
7089         (loongarch_hard_regno_mode_ok_uncached): Ditto.
7090         (loongarch_hard_regno_nregs): Ditto.
7091         (loongarch_class_max_nregs): Ditto.
7092         (loongarch_can_change_mode_class): Ditto.
7093         (loongarch_mode_ok_for_mov_fmt_p): Ditto.
7094         (loongarch_vector_mode_supported_p): Ditto.
7095         (loongarch_preferred_simd_mode): Ditto.
7096         (loongarch_autovectorize_vector_modes): Ditto.
7097         (loongarch_lsx_output_division): Ditto.
7098         (loongarch_expand_lsx_shuffle): Ditto.
7099         (loongarch_expand_vec_perm): Ditto.
7100         (loongarch_expand_vec_perm_interleave): Ditto.
7101         (loongarch_try_expand_lsx_vshuf_const): Ditto.
7102         (loongarch_expand_vec_perm_even_odd_1): Ditto.
7103         (loongarch_expand_vec_perm_even_odd): Ditto.
7104         (loongarch_expand_vec_perm_1): Ditto.
7105         (loongarch_expand_vec_perm_const_2): Ditto.
7106         (loongarch_is_quad_duplicate): Ditto.
7107         (loongarch_is_double_duplicate): Ditto.
7108         (loongarch_is_odd_extraction): Ditto.
7109         (loongarch_is_even_extraction): Ditto.
7110         (loongarch_is_extraction_permutation): Ditto.
7111         (loongarch_is_center_extraction): Ditto.
7112         (loongarch_is_reversing_permutation): Ditto.
7113         (loongarch_is_di_misalign_extract): Ditto.
7114         (loongarch_is_si_misalign_extract): Ditto.
7115         (loongarch_is_lasx_lowpart_interleave): Ditto.
7116         (loongarch_is_lasx_lowpart_interleave_2): Ditto.
7117         (COMPARE_SELECTOR): Ditto.
7118         (loongarch_is_lasx_lowpart_extract): Ditto.
7119         (loongarch_is_lasx_highpart_interleave): Ditto.
7120         (loongarch_is_lasx_highpart_interleave_2): Ditto.
7121         (loongarch_is_elem_duplicate): Ditto.
7122         (loongarch_is_op_reverse_perm): Ditto.
7123         (loongarch_is_single_op_perm): Ditto.
7124         (loongarch_is_divisible_perm): Ditto.
7125         (loongarch_is_triple_stride_extract): Ditto.
7126         (loongarch_vectorize_vec_perm_const): Ditto.
7127         (loongarch_cpu_sched_reassociation_width): Ditto.
7128         (loongarch_expand_vector_extract): Ditto.
7129         (emit_reduc_half): Ditto.
7130         (loongarch_expand_vec_unpack): Ditto.
7131         (loongarch_expand_vector_group_init): Ditto.
7132         (loongarch_expand_vector_init): Ditto.
7133         (loongarch_expand_lsx_cmp): Ditto.
7134         (loongarch_builtin_support_vector_misalignment): Ditto.
7135         * config/loongarch/loongarch.h (UNITS_PER_LASX_REG): Ditto.
7136         (BITS_PER_LASX_REG): Ditto.
7137         (STRUCTURE_SIZE_BOUNDARY): Ditto.
7138         (LASX_REG_FIRST): Ditto.
7139         (LASX_REG_LAST): Ditto.
7140         (LASX_REG_NUM): Ditto.
7141         (LASX_REG_P): Ditto.
7142         (LASX_REG_RTX_P): Ditto.
7143         (LASX_SUPPORTED_MODE_P): Ditto.
7144         * config/loongarch/loongarch.md: Ditto.
7145         * config/loongarch/lasx.md: New file.
7147 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
7149         * config.gcc: Export the header file lsxintrin.h.
7150         * config/loongarch/loongarch-builtins.cc (LARCH_FTYPE_NAME4): Add builtin function support.
7151         (enum loongarch_builtin_type): Ditto.
7152         (AVAIL_ALL): Ditto.
7153         (LARCH_BUILTIN): Ditto.
7154         (LSX_BUILTIN): Ditto.
7155         (LSX_BUILTIN_TEST_BRANCH): Ditto.
7156         (LSX_NO_TARGET_BUILTIN): Ditto.
7157         (CODE_FOR_lsx_vsadd_b): Ditto.
7158         (CODE_FOR_lsx_vsadd_h): Ditto.
7159         (CODE_FOR_lsx_vsadd_w): Ditto.
7160         (CODE_FOR_lsx_vsadd_d): Ditto.
7161         (CODE_FOR_lsx_vsadd_bu): Ditto.
7162         (CODE_FOR_lsx_vsadd_hu): Ditto.
7163         (CODE_FOR_lsx_vsadd_wu): Ditto.
7164         (CODE_FOR_lsx_vsadd_du): Ditto.
7165         (CODE_FOR_lsx_vadd_b): Ditto.
7166         (CODE_FOR_lsx_vadd_h): Ditto.
7167         (CODE_FOR_lsx_vadd_w): Ditto.
7168         (CODE_FOR_lsx_vadd_d): Ditto.
7169         (CODE_FOR_lsx_vaddi_bu): Ditto.
7170         (CODE_FOR_lsx_vaddi_hu): Ditto.
7171         (CODE_FOR_lsx_vaddi_wu): Ditto.
7172         (CODE_FOR_lsx_vaddi_du): Ditto.
7173         (CODE_FOR_lsx_vand_v): Ditto.
7174         (CODE_FOR_lsx_vandi_b): Ditto.
7175         (CODE_FOR_lsx_bnz_v): Ditto.
7176         (CODE_FOR_lsx_bz_v): Ditto.
7177         (CODE_FOR_lsx_vbitsel_v): Ditto.
7178         (CODE_FOR_lsx_vseqi_b): Ditto.
7179         (CODE_FOR_lsx_vseqi_h): Ditto.
7180         (CODE_FOR_lsx_vseqi_w): Ditto.
7181         (CODE_FOR_lsx_vseqi_d): Ditto.
7182         (CODE_FOR_lsx_vslti_b): Ditto.
7183         (CODE_FOR_lsx_vslti_h): Ditto.
7184         (CODE_FOR_lsx_vslti_w): Ditto.
7185         (CODE_FOR_lsx_vslti_d): Ditto.
7186         (CODE_FOR_lsx_vslti_bu): Ditto.
7187         (CODE_FOR_lsx_vslti_hu): Ditto.
7188         (CODE_FOR_lsx_vslti_wu): Ditto.
7189         (CODE_FOR_lsx_vslti_du): Ditto.
7190         (CODE_FOR_lsx_vslei_b): Ditto.
7191         (CODE_FOR_lsx_vslei_h): Ditto.
7192         (CODE_FOR_lsx_vslei_w): Ditto.
7193         (CODE_FOR_lsx_vslei_d): Ditto.
7194         (CODE_FOR_lsx_vslei_bu): Ditto.
7195         (CODE_FOR_lsx_vslei_hu): Ditto.
7196         (CODE_FOR_lsx_vslei_wu): Ditto.
7197         (CODE_FOR_lsx_vslei_du): Ditto.
7198         (CODE_FOR_lsx_vdiv_b): Ditto.
7199         (CODE_FOR_lsx_vdiv_h): Ditto.
7200         (CODE_FOR_lsx_vdiv_w): Ditto.
7201         (CODE_FOR_lsx_vdiv_d): Ditto.
7202         (CODE_FOR_lsx_vdiv_bu): Ditto.
7203         (CODE_FOR_lsx_vdiv_hu): Ditto.
7204         (CODE_FOR_lsx_vdiv_wu): Ditto.
7205         (CODE_FOR_lsx_vdiv_du): Ditto.
7206         (CODE_FOR_lsx_vfadd_s): Ditto.
7207         (CODE_FOR_lsx_vfadd_d): Ditto.
7208         (CODE_FOR_lsx_vftintrz_w_s): Ditto.
7209         (CODE_FOR_lsx_vftintrz_l_d): Ditto.
7210         (CODE_FOR_lsx_vftintrz_wu_s): Ditto.
7211         (CODE_FOR_lsx_vftintrz_lu_d): Ditto.
7212         (CODE_FOR_lsx_vffint_s_w): Ditto.
7213         (CODE_FOR_lsx_vffint_d_l): Ditto.
7214         (CODE_FOR_lsx_vffint_s_wu): Ditto.
7215         (CODE_FOR_lsx_vffint_d_lu): Ditto.
7216         (CODE_FOR_lsx_vfsub_s): Ditto.
7217         (CODE_FOR_lsx_vfsub_d): Ditto.
7218         (CODE_FOR_lsx_vfmul_s): Ditto.
7219         (CODE_FOR_lsx_vfmul_d): Ditto.
7220         (CODE_FOR_lsx_vfdiv_s): Ditto.
7221         (CODE_FOR_lsx_vfdiv_d): Ditto.
7222         (CODE_FOR_lsx_vfmax_s): Ditto.
7223         (CODE_FOR_lsx_vfmax_d): Ditto.
7224         (CODE_FOR_lsx_vfmin_s): Ditto.
7225         (CODE_FOR_lsx_vfmin_d): Ditto.
7226         (CODE_FOR_lsx_vfsqrt_s): Ditto.
7227         (CODE_FOR_lsx_vfsqrt_d): Ditto.
7228         (CODE_FOR_lsx_vflogb_s): Ditto.
7229         (CODE_FOR_lsx_vflogb_d): Ditto.
7230         (CODE_FOR_lsx_vmax_b): Ditto.
7231         (CODE_FOR_lsx_vmax_h): Ditto.
7232         (CODE_FOR_lsx_vmax_w): Ditto.
7233         (CODE_FOR_lsx_vmax_d): Ditto.
7234         (CODE_FOR_lsx_vmaxi_b): Ditto.
7235         (CODE_FOR_lsx_vmaxi_h): Ditto.
7236         (CODE_FOR_lsx_vmaxi_w): Ditto.
7237         (CODE_FOR_lsx_vmaxi_d): Ditto.
7238         (CODE_FOR_lsx_vmax_bu): Ditto.
7239         (CODE_FOR_lsx_vmax_hu): Ditto.
7240         (CODE_FOR_lsx_vmax_wu): Ditto.
7241         (CODE_FOR_lsx_vmax_du): Ditto.
7242         (CODE_FOR_lsx_vmaxi_bu): Ditto.
7243         (CODE_FOR_lsx_vmaxi_hu): Ditto.
7244         (CODE_FOR_lsx_vmaxi_wu): Ditto.
7245         (CODE_FOR_lsx_vmaxi_du): Ditto.
7246         (CODE_FOR_lsx_vmin_b): Ditto.
7247         (CODE_FOR_lsx_vmin_h): Ditto.
7248         (CODE_FOR_lsx_vmin_w): Ditto.
7249         (CODE_FOR_lsx_vmin_d): Ditto.
7250         (CODE_FOR_lsx_vmini_b): Ditto.
7251         (CODE_FOR_lsx_vmini_h): Ditto.
7252         (CODE_FOR_lsx_vmini_w): Ditto.
7253         (CODE_FOR_lsx_vmini_d): Ditto.
7254         (CODE_FOR_lsx_vmin_bu): Ditto.
7255         (CODE_FOR_lsx_vmin_hu): Ditto.
7256         (CODE_FOR_lsx_vmin_wu): Ditto.
7257         (CODE_FOR_lsx_vmin_du): Ditto.
7258         (CODE_FOR_lsx_vmini_bu): Ditto.
7259         (CODE_FOR_lsx_vmini_hu): Ditto.
7260         (CODE_FOR_lsx_vmini_wu): Ditto.
7261         (CODE_FOR_lsx_vmini_du): Ditto.
7262         (CODE_FOR_lsx_vmod_b): Ditto.
7263         (CODE_FOR_lsx_vmod_h): Ditto.
7264         (CODE_FOR_lsx_vmod_w): Ditto.
7265         (CODE_FOR_lsx_vmod_d): Ditto.
7266         (CODE_FOR_lsx_vmod_bu): Ditto.
7267         (CODE_FOR_lsx_vmod_hu): Ditto.
7268         (CODE_FOR_lsx_vmod_wu): Ditto.
7269         (CODE_FOR_lsx_vmod_du): Ditto.
7270         (CODE_FOR_lsx_vmul_b): Ditto.
7271         (CODE_FOR_lsx_vmul_h): Ditto.
7272         (CODE_FOR_lsx_vmul_w): Ditto.
7273         (CODE_FOR_lsx_vmul_d): Ditto.
7274         (CODE_FOR_lsx_vclz_b): Ditto.
7275         (CODE_FOR_lsx_vclz_h): Ditto.
7276         (CODE_FOR_lsx_vclz_w): Ditto.
7277         (CODE_FOR_lsx_vclz_d): Ditto.
7278         (CODE_FOR_lsx_vnor_v): Ditto.
7279         (CODE_FOR_lsx_vor_v): Ditto.
7280         (CODE_FOR_lsx_vori_b): Ditto.
7281         (CODE_FOR_lsx_vnori_b): Ditto.
7282         (CODE_FOR_lsx_vpcnt_b): Ditto.
7283         (CODE_FOR_lsx_vpcnt_h): Ditto.
7284         (CODE_FOR_lsx_vpcnt_w): Ditto.
7285         (CODE_FOR_lsx_vpcnt_d): Ditto.
7286         (CODE_FOR_lsx_vxor_v): Ditto.
7287         (CODE_FOR_lsx_vxori_b): Ditto.
7288         (CODE_FOR_lsx_vsll_b): Ditto.
7289         (CODE_FOR_lsx_vsll_h): Ditto.
7290         (CODE_FOR_lsx_vsll_w): Ditto.
7291         (CODE_FOR_lsx_vsll_d): Ditto.
7292         (CODE_FOR_lsx_vslli_b): Ditto.
7293         (CODE_FOR_lsx_vslli_h): Ditto.
7294         (CODE_FOR_lsx_vslli_w): Ditto.
7295         (CODE_FOR_lsx_vslli_d): Ditto.
7296         (CODE_FOR_lsx_vsra_b): Ditto.
7297         (CODE_FOR_lsx_vsra_h): Ditto.
7298         (CODE_FOR_lsx_vsra_w): Ditto.
7299         (CODE_FOR_lsx_vsra_d): Ditto.
7300         (CODE_FOR_lsx_vsrai_b): Ditto.
7301         (CODE_FOR_lsx_vsrai_h): Ditto.
7302         (CODE_FOR_lsx_vsrai_w): Ditto.
7303         (CODE_FOR_lsx_vsrai_d): Ditto.
7304         (CODE_FOR_lsx_vsrl_b): Ditto.
7305         (CODE_FOR_lsx_vsrl_h): Ditto.
7306         (CODE_FOR_lsx_vsrl_w): Ditto.
7307         (CODE_FOR_lsx_vsrl_d): Ditto.
7308         (CODE_FOR_lsx_vsrli_b): Ditto.
7309         (CODE_FOR_lsx_vsrli_h): Ditto.
7310         (CODE_FOR_lsx_vsrli_w): Ditto.
7311         (CODE_FOR_lsx_vsrli_d): Ditto.
7312         (CODE_FOR_lsx_vsub_b): Ditto.
7313         (CODE_FOR_lsx_vsub_h): Ditto.
7314         (CODE_FOR_lsx_vsub_w): Ditto.
7315         (CODE_FOR_lsx_vsub_d): Ditto.
7316         (CODE_FOR_lsx_vsubi_bu): Ditto.
7317         (CODE_FOR_lsx_vsubi_hu): Ditto.
7318         (CODE_FOR_lsx_vsubi_wu): Ditto.
7319         (CODE_FOR_lsx_vsubi_du): Ditto.
7320         (CODE_FOR_lsx_vpackod_d): Ditto.
7321         (CODE_FOR_lsx_vpackev_d): Ditto.
7322         (CODE_FOR_lsx_vpickod_d): Ditto.
7323         (CODE_FOR_lsx_vpickev_d): Ditto.
7324         (CODE_FOR_lsx_vrepli_b): Ditto.
7325         (CODE_FOR_lsx_vrepli_h): Ditto.
7326         (CODE_FOR_lsx_vrepli_w): Ditto.
7327         (CODE_FOR_lsx_vrepli_d): Ditto.
7328         (CODE_FOR_lsx_vsat_b): Ditto.
7329         (CODE_FOR_lsx_vsat_h): Ditto.
7330         (CODE_FOR_lsx_vsat_w): Ditto.
7331         (CODE_FOR_lsx_vsat_d): Ditto.
7332         (CODE_FOR_lsx_vsat_bu): Ditto.
7333         (CODE_FOR_lsx_vsat_hu): Ditto.
7334         (CODE_FOR_lsx_vsat_wu): Ditto.
7335         (CODE_FOR_lsx_vsat_du): Ditto.
7336         (CODE_FOR_lsx_vavg_b): Ditto.
7337         (CODE_FOR_lsx_vavg_h): Ditto.
7338         (CODE_FOR_lsx_vavg_w): Ditto.
7339         (CODE_FOR_lsx_vavg_d): Ditto.
7340         (CODE_FOR_lsx_vavg_bu): Ditto.
7341         (CODE_FOR_lsx_vavg_hu): Ditto.
7342         (CODE_FOR_lsx_vavg_wu): Ditto.
7343         (CODE_FOR_lsx_vavg_du): Ditto.
7344         (CODE_FOR_lsx_vavgr_b): Ditto.
7345         (CODE_FOR_lsx_vavgr_h): Ditto.
7346         (CODE_FOR_lsx_vavgr_w): Ditto.
7347         (CODE_FOR_lsx_vavgr_d): Ditto.
7348         (CODE_FOR_lsx_vavgr_bu): Ditto.
7349         (CODE_FOR_lsx_vavgr_hu): Ditto.
7350         (CODE_FOR_lsx_vavgr_wu): Ditto.
7351         (CODE_FOR_lsx_vavgr_du): Ditto.
7352         (CODE_FOR_lsx_vssub_b): Ditto.
7353         (CODE_FOR_lsx_vssub_h): Ditto.
7354         (CODE_FOR_lsx_vssub_w): Ditto.
7355         (CODE_FOR_lsx_vssub_d): Ditto.
7356         (CODE_FOR_lsx_vssub_bu): Ditto.
7357         (CODE_FOR_lsx_vssub_hu): Ditto.
7358         (CODE_FOR_lsx_vssub_wu): Ditto.
7359         (CODE_FOR_lsx_vssub_du): Ditto.
7360         (CODE_FOR_lsx_vabsd_b): Ditto.
7361         (CODE_FOR_lsx_vabsd_h): Ditto.
7362         (CODE_FOR_lsx_vabsd_w): Ditto.
7363         (CODE_FOR_lsx_vabsd_d): Ditto.
7364         (CODE_FOR_lsx_vabsd_bu): Ditto.
7365         (CODE_FOR_lsx_vabsd_hu): Ditto.
7366         (CODE_FOR_lsx_vabsd_wu): Ditto.
7367         (CODE_FOR_lsx_vabsd_du): Ditto.
7368         (CODE_FOR_lsx_vftint_w_s): Ditto.
7369         (CODE_FOR_lsx_vftint_l_d): Ditto.
7370         (CODE_FOR_lsx_vftint_wu_s): Ditto.
7371         (CODE_FOR_lsx_vftint_lu_d): Ditto.
7372         (CODE_FOR_lsx_vandn_v): Ditto.
7373         (CODE_FOR_lsx_vorn_v): Ditto.
7374         (CODE_FOR_lsx_vneg_b): Ditto.
7375         (CODE_FOR_lsx_vneg_h): Ditto.
7376         (CODE_FOR_lsx_vneg_w): Ditto.
7377         (CODE_FOR_lsx_vneg_d): Ditto.
7378         (CODE_FOR_lsx_vshuf4i_d): Ditto.
7379         (CODE_FOR_lsx_vbsrl_v): Ditto.
7380         (CODE_FOR_lsx_vbsll_v): Ditto.
7381         (CODE_FOR_lsx_vfmadd_s): Ditto.
7382         (CODE_FOR_lsx_vfmadd_d): Ditto.
7383         (CODE_FOR_lsx_vfmsub_s): Ditto.
7384         (CODE_FOR_lsx_vfmsub_d): Ditto.
7385         (CODE_FOR_lsx_vfnmadd_s): Ditto.
7386         (CODE_FOR_lsx_vfnmadd_d): Ditto.
7387         (CODE_FOR_lsx_vfnmsub_s): Ditto.
7388         (CODE_FOR_lsx_vfnmsub_d): Ditto.
7389         (CODE_FOR_lsx_vmuh_b): Ditto.
7390         (CODE_FOR_lsx_vmuh_h): Ditto.
7391         (CODE_FOR_lsx_vmuh_w): Ditto.
7392         (CODE_FOR_lsx_vmuh_d): Ditto.
7393         (CODE_FOR_lsx_vmuh_bu): Ditto.
7394         (CODE_FOR_lsx_vmuh_hu): Ditto.
7395         (CODE_FOR_lsx_vmuh_wu): Ditto.
7396         (CODE_FOR_lsx_vmuh_du): Ditto.
7397         (CODE_FOR_lsx_vsllwil_h_b): Ditto.
7398         (CODE_FOR_lsx_vsllwil_w_h): Ditto.
7399         (CODE_FOR_lsx_vsllwil_d_w): Ditto.
7400         (CODE_FOR_lsx_vsllwil_hu_bu): Ditto.
7401         (CODE_FOR_lsx_vsllwil_wu_hu): Ditto.
7402         (CODE_FOR_lsx_vsllwil_du_wu): Ditto.
7403         (CODE_FOR_lsx_vssran_b_h): Ditto.
7404         (CODE_FOR_lsx_vssran_h_w): Ditto.
7405         (CODE_FOR_lsx_vssran_w_d): Ditto.
7406         (CODE_FOR_lsx_vssran_bu_h): Ditto.
7407         (CODE_FOR_lsx_vssran_hu_w): Ditto.
7408         (CODE_FOR_lsx_vssran_wu_d): Ditto.
7409         (CODE_FOR_lsx_vssrarn_b_h): Ditto.
7410         (CODE_FOR_lsx_vssrarn_h_w): Ditto.
7411         (CODE_FOR_lsx_vssrarn_w_d): Ditto.
7412         (CODE_FOR_lsx_vssrarn_bu_h): Ditto.
7413         (CODE_FOR_lsx_vssrarn_hu_w): Ditto.
7414         (CODE_FOR_lsx_vssrarn_wu_d): Ditto.
7415         (CODE_FOR_lsx_vssrln_bu_h): Ditto.
7416         (CODE_FOR_lsx_vssrln_hu_w): Ditto.
7417         (CODE_FOR_lsx_vssrln_wu_d): Ditto.
7418         (CODE_FOR_lsx_vssrlrn_bu_h): Ditto.
7419         (CODE_FOR_lsx_vssrlrn_hu_w): Ditto.
7420         (CODE_FOR_lsx_vssrlrn_wu_d): Ditto.
7421         (loongarch_builtin_vector_type): Ditto.
7422         (loongarch_build_cvpointer_type): Ditto.
7423         (LARCH_ATYPE_CVPOINTER): Ditto.
7424         (LARCH_ATYPE_BOOLEAN): Ditto.
7425         (LARCH_ATYPE_V2SF): Ditto.
7426         (LARCH_ATYPE_V2HI): Ditto.
7427         (LARCH_ATYPE_V2SI): Ditto.
7428         (LARCH_ATYPE_V4QI): Ditto.
7429         (LARCH_ATYPE_V4HI): Ditto.
7430         (LARCH_ATYPE_V8QI): Ditto.
7431         (LARCH_ATYPE_V2DI): Ditto.
7432         (LARCH_ATYPE_V4SI): Ditto.
7433         (LARCH_ATYPE_V8HI): Ditto.
7434         (LARCH_ATYPE_V16QI): Ditto.
7435         (LARCH_ATYPE_V2DF): Ditto.
7436         (LARCH_ATYPE_V4SF): Ditto.
7437         (LARCH_ATYPE_V4DI): Ditto.
7438         (LARCH_ATYPE_V8SI): Ditto.
7439         (LARCH_ATYPE_V16HI): Ditto.
7440         (LARCH_ATYPE_V32QI): Ditto.
7441         (LARCH_ATYPE_V4DF): Ditto.
7442         (LARCH_ATYPE_V8SF): Ditto.
7443         (LARCH_ATYPE_UV2DI): Ditto.
7444         (LARCH_ATYPE_UV4SI): Ditto.
7445         (LARCH_ATYPE_UV8HI): Ditto.
7446         (LARCH_ATYPE_UV16QI): Ditto.
7447         (LARCH_ATYPE_UV4DI): Ditto.
7448         (LARCH_ATYPE_UV8SI): Ditto.
7449         (LARCH_ATYPE_UV16HI): Ditto.
7450         (LARCH_ATYPE_UV32QI): Ditto.
7451         (LARCH_ATYPE_UV2SI): Ditto.
7452         (LARCH_ATYPE_UV4HI): Ditto.
7453         (LARCH_ATYPE_UV8QI): Ditto.
7454         (loongarch_builtin_vectorized_function): Ditto.
7455         (LARCH_GET_BUILTIN): Ditto.
7456         (loongarch_expand_builtin_insn): Ditto.
7457         (loongarch_expand_builtin_lsx_test_branch): Ditto.
7458         (loongarch_expand_builtin): Ditto.
7459         * config/loongarch/loongarch-ftypes.def (1): Ditto.
7460         (2): Ditto.
7461         (3): Ditto.
7462         (4): Ditto.
7463         * config/loongarch/lsxintrin.h: New file.
7465 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
7467         * config/loongarch/constraints.md (M): Add Loongson LSX base instruction support.
7468         (N): Ditto.
7469         (O): Ditto.
7470         (P): Ditto.
7471         (R): Ditto.
7472         (S): Ditto.
7473         (YG): Ditto.
7474         (YA): Ditto.
7475         (YB): Ditto.
7476         (Yb): Ditto.
7477         (Yh): Ditto.
7478         (Yw): Ditto.
7479         (YI): Ditto.
7480         (YC): Ditto.
7481         (YZ): Ditto.
7482         (Unv5): Ditto.
7483         (Uuv5): Ditto.
7484         (Usv5): Ditto.
7485         (Uuv6): Ditto.
7486         (Urv8): Ditto.
7487         * config/loongarch/genopts/loongarch.opt.in: Ditto.
7488         * config/loongarch/loongarch-builtins.cc (loongarch_gen_const_int_vector): Ditto.
7489         * config/loongarch/loongarch-modes.def (VECTOR_MODES): Ditto.
7490         (VECTOR_MODE): Ditto.
7491         (INT_MODE): Ditto.
7492         * config/loongarch/loongarch-protos.h (loongarch_split_move_insn_p): Ditto.
7493         (loongarch_split_move_insn): Ditto.
7494         (loongarch_split_128bit_move): Ditto.
7495         (loongarch_split_128bit_move_p): Ditto.
7496         (loongarch_split_lsx_copy_d): Ditto.
7497         (loongarch_split_lsx_insert_d): Ditto.
7498         (loongarch_split_lsx_fill_d): Ditto.
7499         (loongarch_expand_vec_cmp): Ditto.
7500         (loongarch_const_vector_same_val_p): Ditto.
7501         (loongarch_const_vector_same_bytes_p): Ditto.
7502         (loongarch_const_vector_same_int_p): Ditto.
7503         (loongarch_const_vector_shuffle_set_p): Ditto.
7504         (loongarch_const_vector_bitimm_set_p): Ditto.
7505         (loongarch_const_vector_bitimm_clr_p): Ditto.
7506         (loongarch_lsx_vec_parallel_const_half): Ditto.
7507         (loongarch_gen_const_int_vector): Ditto.
7508         (loongarch_lsx_output_division): Ditto.
7509         (loongarch_expand_vector_init): Ditto.
7510         (loongarch_expand_vec_unpack): Ditto.
7511         (loongarch_expand_vec_perm): Ditto.
7512         (loongarch_expand_vector_extract): Ditto.
7513         (loongarch_expand_vector_reduc): Ditto.
7514         (loongarch_ldst_scaled_shift): Ditto.
7515         (loongarch_expand_vec_cond_expr): Ditto.
7516         (loongarch_expand_vec_cond_mask_expr): Ditto.
7517         (loongarch_builtin_vectorized_function): Ditto.
7518         (loongarch_gen_const_int_vector_shuffle): Ditto.
7519         (loongarch_build_signbit_mask): Ditto.
7520         * config/loongarch/loongarch.cc (loongarch_pass_aggregate_num_fpr): Ditto.
7521         (loongarch_setup_incoming_varargs): Ditto.
7522         (loongarch_emit_move): Ditto.
7523         (loongarch_const_vector_bitimm_set_p): Ditto.
7524         (loongarch_const_vector_bitimm_clr_p): Ditto.
7525         (loongarch_const_vector_same_val_p): Ditto.
7526         (loongarch_const_vector_same_bytes_p): Ditto.
7527         (loongarch_const_vector_same_int_p): Ditto.
7528         (loongarch_const_vector_shuffle_set_p): Ditto.
7529         (loongarch_symbol_insns): Ditto.
7530         (loongarch_cannot_force_const_mem): Ditto.
7531         (loongarch_valid_offset_p): Ditto.
7532         (loongarch_valid_index_p): Ditto.
7533         (loongarch_classify_address): Ditto.
7534         (loongarch_address_insns): Ditto.
7535         (loongarch_ldst_scaled_shift): Ditto.
7536         (loongarch_const_insns): Ditto.
7537         (loongarch_split_move_insn_p): Ditto.
7538         (loongarch_subword_at_byte): Ditto.
7539         (loongarch_legitimize_move): Ditto.
7540         (loongarch_builtin_vectorization_cost): Ditto.
7541         (loongarch_split_move_p): Ditto.
7542         (loongarch_split_move): Ditto.
7543         (loongarch_split_move_insn): Ditto.
7544         (loongarch_output_move_index_float): Ditto.
7545         (loongarch_split_128bit_move_p): Ditto.
7546         (loongarch_split_128bit_move): Ditto.
7547         (loongarch_split_lsx_copy_d): Ditto.
7548         (loongarch_split_lsx_insert_d): Ditto.
7549         (loongarch_split_lsx_fill_d): Ditto.
7550         (loongarch_output_move): Ditto.
7551         (loongarch_extend_comparands): Ditto.
7552         (loongarch_print_operand_reloc): Ditto.
7553         (loongarch_print_operand): Ditto.
7554         (loongarch_hard_regno_mode_ok_uncached): Ditto.
7555         (loongarch_hard_regno_call_part_clobbered): Ditto.
7556         (loongarch_hard_regno_nregs): Ditto.
7557         (loongarch_class_max_nregs): Ditto.
7558         (loongarch_can_change_mode_class): Ditto.
7559         (loongarch_mode_ok_for_mov_fmt_p): Ditto.
7560         (loongarch_secondary_reload): Ditto.
7561         (loongarch_vector_mode_supported_p): Ditto.
7562         (loongarch_preferred_simd_mode): Ditto.
7563         (loongarch_autovectorize_vector_modes): Ditto.
7564         (loongarch_lsx_output_division): Ditto.
7565         (loongarch_option_override_internal): Ditto.
7566         (loongarch_hard_regno_caller_save_mode): Ditto.
7567         (MAX_VECT_LEN): Ditto.
7568         (loongarch_spill_class): Ditto.
7569         (struct expand_vec_perm_d): Ditto.
7570         (loongarch_promote_function_mode): Ditto.
7571         (loongarch_expand_vselect): Ditto.
7572         (loongarch_starting_frame_offset): Ditto.
7573         (loongarch_expand_vselect_vconcat): Ditto.
7574         (TARGET_ASM_ALIGNED_DI_OP): Ditto.
7575         (TARGET_OPTION_OVERRIDE): Ditto.
7576         (TARGET_LEGITIMIZE_ADDRESS): Ditto.
7577         (TARGET_ASM_SELECT_RTX_SECTION): Ditto.
7578         (TARGET_ASM_FUNCTION_RODATA_SECTION): Ditto.
7579         (loongarch_expand_lsx_shuffle): Ditto.
7580         (TARGET_SCHED_INIT): Ditto.
7581         (TARGET_SCHED_REORDER): Ditto.
7582         (TARGET_SCHED_REORDER2): Ditto.
7583         (TARGET_SCHED_VARIABLE_ISSUE): Ditto.
7584         (TARGET_SCHED_ADJUST_COST): Ditto.
7585         (TARGET_SCHED_ISSUE_RATE): Ditto.
7586         (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Ditto.
7587         (TARGET_FUNCTION_OK_FOR_SIBCALL): Ditto.
7588         (TARGET_VALID_POINTER_MODE): Ditto.
7589         (TARGET_REGISTER_MOVE_COST): Ditto.
7590         (TARGET_MEMORY_MOVE_COST): Ditto.
7591         (TARGET_RTX_COSTS): Ditto.
7592         (TARGET_ADDRESS_COST): Ditto.
7593         (TARGET_IN_SMALL_DATA_P): Ditto.
7594         (TARGET_PREFERRED_RELOAD_CLASS): Ditto.
7595         (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Ditto.
7596         (TARGET_EXPAND_BUILTIN_VA_START): Ditto.
7597         (loongarch_expand_vec_perm): Ditto.
7598         (TARGET_PROMOTE_FUNCTION_MODE): Ditto.
7599         (TARGET_RETURN_IN_MEMORY): Ditto.
7600         (TARGET_FUNCTION_VALUE): Ditto.
7601         (TARGET_LIBCALL_VALUE): Ditto.
7602         (loongarch_try_expand_lsx_vshuf_const): Ditto.
7603         (TARGET_ASM_OUTPUT_MI_THUNK): Ditto.
7604         (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Ditto.
7605         (TARGET_PRINT_OPERAND): Ditto.
7606         (TARGET_PRINT_OPERAND_ADDRESS): Ditto.
7607         (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Ditto.
7608         (TARGET_SETUP_INCOMING_VARARGS): Ditto.
7609         (TARGET_STRICT_ARGUMENT_NAMING): Ditto.
7610         (TARGET_MUST_PASS_IN_STACK): Ditto.
7611         (TARGET_PASS_BY_REFERENCE): Ditto.
7612         (TARGET_ARG_PARTIAL_BYTES): Ditto.
7613         (TARGET_FUNCTION_ARG): Ditto.
7614         (TARGET_FUNCTION_ARG_ADVANCE): Ditto.
7615         (TARGET_FUNCTION_ARG_BOUNDARY): Ditto.
7616         (TARGET_SCALAR_MODE_SUPPORTED_P): Ditto.
7617         (TARGET_INIT_BUILTINS): Ditto.
7618         (loongarch_expand_vec_perm_const_1): Ditto.
7619         (loongarch_expand_vec_perm_const_2): Ditto.
7620         (loongarch_vectorize_vec_perm_const): Ditto.
7621         (loongarch_cpu_sched_reassociation_width): Ditto.
7622         (loongarch_sched_reassociation_width): Ditto.
7623         (loongarch_expand_vector_extract): Ditto.
7624         (emit_reduc_half): Ditto.
7625         (loongarch_expand_vector_reduc): Ditto.
7626         (loongarch_expand_vec_unpack): Ditto.
7627         (loongarch_lsx_vec_parallel_const_half): Ditto.
7628         (loongarch_constant_elt_p): Ditto.
7629         (loongarch_gen_const_int_vector_shuffle): Ditto.
7630         (loongarch_expand_vector_init): Ditto.
7631         (loongarch_expand_lsx_cmp): Ditto.
7632         (loongarch_expand_vec_cond_expr): Ditto.
7633         (loongarch_expand_vec_cond_mask_expr): Ditto.
7634         (loongarch_expand_vec_cmp): Ditto.
7635         (loongarch_case_values_threshold): Ditto.
7636         (loongarch_build_const_vector): Ditto.
7637         (loongarch_build_signbit_mask): Ditto.
7638         (loongarch_builtin_support_vector_misalignment): Ditto.
7639         (TARGET_ASM_ALIGNED_HI_OP): Ditto.
7640         (TARGET_ASM_ALIGNED_SI_OP): Ditto.
7641         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Ditto.
7642         (TARGET_VECTOR_MODE_SUPPORTED_P): Ditto.
7643         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Ditto.
7644         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Ditto.
7645         (TARGET_VECTORIZE_VEC_PERM_CONST): Ditto.
7646         (TARGET_SCHED_REASSOCIATION_WIDTH): Ditto.
7647         (TARGET_CASE_VALUES_THRESHOLD): Ditto.
7648         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Ditto.
7649         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
7650         * config/loongarch/loongarch.h (TARGET_SUPPORTS_WIDE_INT): Ditto.
7651         (UNITS_PER_LSX_REG): Ditto.
7652         (BITS_PER_LSX_REG): Ditto.
7653         (BIGGEST_ALIGNMENT): Ditto.
7654         (LSX_REG_FIRST): Ditto.
7655         (LSX_REG_LAST): Ditto.
7656         (LSX_REG_NUM): Ditto.
7657         (LSX_REG_P): Ditto.
7658         (LSX_REG_RTX_P): Ditto.
7659         (IMM13_OPERAND): Ditto.
7660         (LSX_SUPPORTED_MODE_P): Ditto.
7661         * config/loongarch/loongarch.md (unknown,add,sub,not,nor,and,or,xor): Ditto.
7662         (unknown,add,sub,not,nor,and,or,xor,simd_add): Ditto.
7663         (unknown,none,QI,HI,SI,DI,TI,SF,DF,TF,FCC): Ditto.
7664         (mode" ): Ditto.
7665         (DF): Ditto.
7666         (SF): Ditto.
7667         (sf): Ditto.
7668         (DI): Ditto.
7669         (SI): Ditto.
7670         * config/loongarch/loongarch.opt: Ditto.
7671         * config/loongarch/predicates.md (const_lsx_branch_operand): Ditto.
7672         (const_uimm3_operand): Ditto.
7673         (const_8_to_11_operand): Ditto.
7674         (const_12_to_15_operand): Ditto.
7675         (const_uimm4_operand): Ditto.
7676         (const_uimm6_operand): Ditto.
7677         (const_uimm7_operand): Ditto.
7678         (const_uimm8_operand): Ditto.
7679         (const_imm5_operand): Ditto.
7680         (const_imm10_operand): Ditto.
7681         (const_imm13_operand): Ditto.
7682         (reg_imm10_operand): Ditto.
7683         (aq8b_operand): Ditto.
7684         (aq8h_operand): Ditto.
7685         (aq8w_operand): Ditto.
7686         (aq8d_operand): Ditto.
7687         (aq10b_operand): Ditto.
7688         (aq10h_operand): Ditto.
7689         (aq10w_operand): Ditto.
7690         (aq10d_operand): Ditto.
7691         (aq12b_operand): Ditto.
7692         (aq12h_operand): Ditto.
7693         (aq12w_operand): Ditto.
7694         (aq12d_operand): Ditto.
7695         (const_m1_operand): Ditto.
7696         (reg_or_m1_operand): Ditto.
7697         (const_exp_2_operand): Ditto.
7698         (const_exp_4_operand): Ditto.
7699         (const_exp_8_operand): Ditto.
7700         (const_exp_16_operand): Ditto.
7701         (const_exp_32_operand): Ditto.
7702         (const_0_or_1_operand): Ditto.
7703         (const_0_to_3_operand): Ditto.
7704         (const_0_to_7_operand): Ditto.
7705         (const_2_or_3_operand): Ditto.
7706         (const_4_to_7_operand): Ditto.
7707         (const_8_to_15_operand): Ditto.
7708         (const_16_to_31_operand): Ditto.
7709         (qi_mask_operand): Ditto.
7710         (hi_mask_operand): Ditto.
7711         (si_mask_operand): Ditto.
7712         (d_operand): Ditto.
7713         (db4_operand): Ditto.
7714         (db7_operand): Ditto.
7715         (db8_operand): Ditto.
7716         (ib3_operand): Ditto.
7717         (sb4_operand): Ditto.
7718         (sb5_operand): Ditto.
7719         (sb8_operand): Ditto.
7720         (sd8_operand): Ditto.
7721         (ub4_operand): Ditto.
7722         (ub8_operand): Ditto.
7723         (uh4_operand): Ditto.
7724         (uw4_operand): Ditto.
7725         (uw5_operand): Ditto.
7726         (uw6_operand): Ditto.
7727         (uw8_operand): Ditto.
7728         (addiur2_operand): Ditto.
7729         (addiusp_operand): Ditto.
7730         (andi16_operand): Ditto.
7731         (movep_src_register): Ditto.
7732         (movep_src_operand): Ditto.
7733         (fcc_reload_operand): Ditto.
7734         (muldiv_target_operand): Ditto.
7735         (const_vector_same_val_operand): Ditto.
7736         (const_vector_same_simm5_operand): Ditto.
7737         (const_vector_same_uimm5_operand): Ditto.
7738         (const_vector_same_ximm5_operand): Ditto.
7739         (const_vector_same_uimm6_operand): Ditto.
7740         (par_const_vector_shf_set_operand): Ditto.
7741         (reg_or_vector_same_val_operand): Ditto.
7742         (reg_or_vector_same_simm5_operand): Ditto.
7743         (reg_or_vector_same_uimm5_operand): Ditto.
7744         (reg_or_vector_same_ximm5_operand): Ditto.
7745         (reg_or_vector_same_uimm6_operand): Ditto.
7746         * doc/md.texi: Ditto.
7747         * config/loongarch/lsx.md: New file.
7749 2023-09-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7751         * config/riscv/riscv-protos.h (lookup_vector_type_attribute): Export global.
7752         (get_all_predecessors): New function.
7753         (get_all_successors): Ditto.
7754         * config/riscv/riscv-v.cc (get_all_predecessors): Ditto.
7755         (get_all_successors): Ditto.
7756         * config/riscv/riscv-vector-builtins.cc (sizeless_type_p): Export global.
7757         * config/riscv/riscv-vsetvl.cc (get_all_predecessors): Remove it.
7759 2023-09-05  Claudiu Zissulescu  <claziss@gmail.com>
7761         * config/arc/arc-protos.h (arc_output_addsi): Remove declaration.
7762         (split_addsi): Likewise.
7763         * config/arc/arc.cc (arc_print_operand): Add/repurpose 's', 'S',
7764         'N', 'x', and 'J' code letters.
7765         (arc_output_addsi): Make it static.
7766         (split_addsi): Remove it.
7767         * config/arc/arc.h (UNSIGNED_INT*): New defines.
7768         (SINNED_INT*): Likewise.
7769         * config/arc/arc.md (type): Add add, sub, bxor types.
7770         (tst_movb): Change code letter from 's' to 'x'.
7771         (andsi3_i): Likewise.
7772         (addsi3_mixed): Refurbish the pattern.
7773         (call_i): Change code letter from 'S' to 'J'.
7774         * config/arc/arc700.md: Add newly introduced types.
7775         * config/arc/arcHS.md: Likewsie.
7776         * config/arc/arcHS4x.md: Likewise.
7777         * config/arc/constraints.md (Cca, CL2, Csp, C2a): Remove it.
7778         (CM4): Update description.
7779         (CP4, C6u, C6n, CIs, C4p): New constraint.
7781 2023-09-05  Claudiu Zissulescu  <claziss@gmail.com>
7783         * common/config/arc/arc-common.cc (arc_option_optimization_table):
7784         Remove mbbit_peephole.
7785         * config/arc/arc.md (UNSPEC_ARC_DIRECT): Remove.
7786         (store_direct): Likewise.
7787         (BBIT peephole2): Likewise.
7788         * config/arc/arc.opt (mbbit-peephole): Ignore option.
7789         * doc/invoke.texi (mbbit-peephole): Update document.
7791 2023-09-05  Jakub Jelinek  <jakub@redhat.com>
7793         * tree-ssa-tail-merge.cc (replace_block_by): Fix a comment typo:
7794         avreage -> average.
7796 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
7798         * config/loongarch/loongarch.h (CC1_SPEC): Mark normalized
7799         options passed from driver to gnat1 as explicit for multilib.
7801 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
7803         * config.gcc: add loongarch*-elf target.
7804         * config/loongarch/elf.h: New file.
7805         Link against newlib by default.
7807 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
7809         * config.gcc: use -mstrict-align for building libraries
7810         if --with-strict-align-lib is given.
7811         * doc/install.texi: likewise.
7813 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
7815         * config/loongarch/loongarch-c.cc: Export macros
7816         "__loongarch_{arch,tune}" in the preprocessor.
7818 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
7820         * config.gcc: Make --with-abi= obsolete, decide the default ABI
7821         with target triplet.  Allow specifying multilib library build
7822         options with --with-multilib-list and --with-multilib-default.
7823         * config/loongarch/t-linux: Likewise.
7824         * config/loongarch/genopts/loongarch-strings: Likewise.
7825         * config/loongarch/loongarch-str.h: Likewise.
7826         * doc/install.texi: Likewise.
7827         * config/loongarch/genopts/loongarch.opt.in: Introduce
7828         -m[no-]l[a]sx options.  Only process -m*-float and
7829         -m[no-]l[a]sx in the GCC driver.
7830         * config/loongarch/loongarch.opt: Likewise.
7831         * config/loongarch/la464.md: Likewise.
7832         * config/loongarch/loongarch-c.cc: Likewise.
7833         * config/loongarch/loongarch-cpu.cc: Likewise.
7834         * config/loongarch/loongarch-cpu.h: Likewise.
7835         * config/loongarch/loongarch-def.c: Likewise.
7836         * config/loongarch/loongarch-def.h: Likewise.
7837         * config/loongarch/loongarch-driver.cc: Likewise.
7838         * config/loongarch/loongarch-driver.h: Likewise.
7839         * config/loongarch/loongarch-opts.cc: Likewise.
7840         * config/loongarch/loongarch-opts.h: Likewise.
7841         * config/loongarch/loongarch.cc: Likewise.
7842         * doc/invoke.texi: Likewise.
7844 2023-09-05  liuhongt  <hongtao.liu@intel.com>
7846         * config/i386/sse.md: (V8BFH_128): Renamed to ..
7847         (VHFBF_128): .. this.
7848         (V16BFH_256): Renamed to ..
7849         (VHFBF_256): .. this.
7850         (avx512f_mov<mode>): Extend to V_128.
7851         (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_128.
7852         (vcvtneo<bf16_ph>2ps_<mode>): Ditto.
7853         (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_256.
7854         (vcvtneo<bf16_ph>2ps_<mode>): Ditto.
7855         * config/i386/i386-expand.cc (expand_vec_perm_blend):
7856         Canonicalize vec_merge.
7858 2023-09-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7860         * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Fix Dynamic status.
7861         * config/riscv/riscv-v.cc (preferred_simd_mode): Ditto.
7862         (autovectorize_vector_modes): Ditto.
7863         (vectorize_related_mode): Ditto.
7865 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
7867         * config/rs6000/darwin.h (LIB_SPEC): Include libSystemStubs for
7868         all 32b Darwin PowerPC cases.
7870 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
7872         * config/darwin-sections.def (static_init_section): Add the
7873         __TEXT,__StaticInit section.
7874         * config/darwin.cc (darwin_function_section): Use the static init
7875         section for global initializers, to match other platform toolchains.
7877 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
7879         * config/darwin-sections.def (darwin_exception_section): Move to
7880         the __TEXT segment.
7881         * config/darwin.cc (darwin_emit_except_table_label): Align before
7882         the exception table label.
7883         * config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use indirect PC-
7884         relative 4byte relocs.
7886 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
7888         * config/darwin.cc (dump_machopic_symref_flags): New.
7889         (debug_machopic_symref_flags): New.
7891 2023-09-04  Pan Li  <pan2.li@intel.com>
7893         * config/riscv/riscv-vector-builtins-types.def
7894         (vfloat16mf4_t): Add FP16 intrinsic def.
7895         (vfloat16mf2_t): Ditto.
7896         (vfloat16m1_t): Ditto.
7897         (vfloat16m2_t): Ditto.
7898         (vfloat16m4_t): Ditto.
7899         (vfloat16m8_t): Ditto.
7901 2023-09-04  Jiufu Guo  <guojiufu@linux.ibm.com>
7903         PR tree-optimization/108757
7904         * match.pd ((X - N * M) / N): New pattern.
7905         ((X + N * M) / N): New pattern.
7906         ((X + C) div_rshift N): New pattern.
7908 2023-09-04  Guo Jie  <guojie@loongson.cn>
7910         * config/loongarch/loongarch.md: Support 'G' -> 'k' in
7911         movsf_hardfloat and movdf_hardfloat.
7913 2023-09-04  Lulu Cheng  <chenglulu@loongson.cn>
7915         * config/loongarch/loongarch.cc (loongarch_extend_comparands):
7916         In unsigned QImode test, check for sign extended subreg and/or
7917         constant operands, and do a sign extension in that case.
7918         * config/loongarch/loongarch.md (TARGET_64BIT): Define
7919         template cbranchqi4.
7921 2023-09-04  Lulu Cheng  <chenglulu@loongson.cn>
7923         * config/loongarch/loongarch.md: Allows fixed-point values to be loaded
7924         from memory into floating-point registers.
7926 2023-09-03  Pan Li  <pan2.li@intel.com>
7928         * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for
7929         fmax/fmin
7930         * config/riscv/vector.md: Add VLS modes to vfmax/vfmin.
7932 2023-09-02  Mikael Morin  <mikael@gcc.gnu.org>
7934         * tree-diagnostic.cc (tree_diagnostics_defaults): Delete allocated
7935         pointer before overwriting it.
7937 2023-09-02  chenxiaolong  <chenxiaolong@loongson.cn>
7939         * config/loongarch/loongarch-builtins.cc (loongarch_init_builtins):
7940         Associate the __float128 type to float128_type_node so that it can
7941         be recognized by the compiler.
7942         * config/loongarch/loongarch-c.cc (loongarch_cpu_cpp_builtins):
7943         Add the flag "FLOAT128_TYPE" to gcc and associate a function
7944         with the suffix "q" to "f128".
7945         * doc/extend.texi:Added support for 128-bit floating-point functions on
7946         the LoongArch architecture.
7948 2023-09-01  Jakub Jelinek  <jakub@redhat.com>
7950         PR c++/111069
7951         * common.opt (fabi-version=): Document version 19.
7952         * doc/invoke.texi (-fabi-version=): Likewise.
7954 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
7956         * config/riscv/autovec-opt.md (*cond_<optab><mode><vconvert>):
7957         New combine pattern.
7958         (*cond_<float_cvt><vconvert><mode>): Ditto.
7959         (*cond_<optab><vnconvert><mode>): Ditto.
7960         (*cond_<float_cvt><vnconvert><mode>): Ditto.
7961         (*cond_<optab><mode><vnconvert>): Ditto.
7962         (*cond_<float_cvt><mode><vnconvert>2): Ditto.
7963         * config/riscv/autovec.md (<optab><mode><vconvert>2): Adjust.
7964         (<float_cvt><vconvert><mode>2): Adjust.
7965         (<optab><vnconvert><mode>2): Adjust.
7966         (<float_cvt><vnconvert><mode>2): Adjust.
7967         (<optab><mode><vnconvert>2): Adjust.
7968         (<float_cvt><mode><vnconvert>2): Adjust.
7969         * config/riscv/riscv-v.cc (needs_fp_rounding): Add INT->FP extend.
7971 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
7973         * config/riscv/autovec-opt.md (*cond_extend<v_double_trunc><mode>):
7974         New combine pattern.
7975         (*cond_trunc<mode><v_double_trunc>): Ditto.
7976         * config/riscv/autovec.md: Adjust.
7977         * config/riscv/riscv-v.cc (needs_fp_rounding): Add FP extend.
7979 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
7981         * config/riscv/autovec-opt.md (*cond_<optab><v_double_trunc><mode>):
7982         New combine pattern.
7983         (*cond_<optab><v_quad_trunc><mode>): Ditto.
7984         (*cond_<optab><v_oct_trunc><mode>): Ditto.
7985         (*cond_trunc<mode><v_double_trunc>): Ditto.
7986         * config/riscv/autovec.md (<optab><v_quad_trunc><mode>2): Adjust.
7987         (<optab><v_oct_trunc><mode>2): Ditto.
7989 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
7991         * config/riscv/autovec.md: Adjust.
7992         * config/riscv/riscv-protos.h (expand_cond_len_unop): Ditto.
7993         (expand_cond_len_binop): Ditto.
7994         * config/riscv/riscv-v.cc (needs_fp_rounding): Ditto.
7995         (expand_cond_len_op): Ditto.
7996         (expand_cond_len_unop): Ditto.
7997         (expand_cond_len_binop): Ditto.
7998         (expand_cond_len_ternop): Ditto.
8000 2023-09-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8002         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Enable
8003         VECT_COMPARE_COSTS by default.
8005 2023-09-01  Robin Dapp  <rdapp@ventanamicro.com>
8007         * config/riscv/autovec.md (vec_extract<mode>qi): New expander.
8009 2023-09-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8011         * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Add
8012         dynamic enum.
8013         * config/riscv/riscv.opt: Add dynamic compile option.
8015 2023-09-01  Pan Li  <pan2.li@intel.com>
8017         * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for
8018         vls floating-point autovec.
8019         * config/riscv/vector-iterators.md: New iterator for
8020         floating-point V and VLS.
8021         * config/riscv/vector.md: Add VLS to floating-point binop.
8023 2023-09-01  Andrew Pinski  <apinski@marvell.com>
8025         PR tree-optimization/19832
8026         * match.pd: Add pattern to optimize
8027         `(a != b) ? a OP b : c`.
8029 2023-09-01  Lulu Cheng  <chenglulu@loongson.cn>
8030             Guo Jie  <guojie@loongson.cn>
8032         PR target/110484
8033         * config/loongarch/loongarch.cc (loongarch_emit_stack_tie): Use the
8034         frame_pointer_needed to determine whether to use the $fp register.
8036 2023-08-31  Andrew Pinski  <apinski@marvell.com>
8038         PR tree-optimization/110915
8039         * match.pd (min_value, max_value): Extend to vector constants.
8041 2023-08-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8043         * config.in: Regenerate.
8044         * config/darwin-c.cc: Change spelling to macOS.
8045         * config/darwin-driver.cc: Likewise.
8046         * config/darwin.h: Likewise.
8047         * configure.ac: Likewise.
8048         * doc/contrib.texi: Likewise.
8049         * doc/extend.texi: Likewise.
8050         * doc/invoke.texi: Likewise.
8051         * doc/plugins.texi: Likewise.
8052         * doc/tm.texi: Regenerate.
8053         * doc/tm.texi.in: Change spelling to macOS.
8054         * plugin.cc: Likewise.
8056 2023-08-31  Pan Li  <pan2.li@intel.com>
8058         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmadd/vfnmacc.
8059         * config/riscv/autovec.md: Ditto.
8061 2023-08-31  Pan Li  <pan2.li@intel.com>
8063         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmsac/vfnmsub
8064         * config/riscv/autovec.md: Ditto.
8066 2023-08-31  Richard Sandiford  <richard.sandiford@arm.com>
8068         * config/aarch64/aarch64.md (untyped_call): Emit a call_value
8069         rather than a call.  List each possible destination register
8070         in the call pattern.
8072 2023-08-31  Pan Li  <pan2.li@intel.com>
8074         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmsac/vfmsub
8075         * config/riscv/autovec.md: Ditto.
8077 2023-08-31  Pan Li  <pan2.li@intel.com>
8078             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8080         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmadd/vfmacc.
8081         * config/riscv/autovec.md: Ditto.
8082         * config/riscv/vector-iterators.md: Add UNSPEC_VFFMA.
8084 2023-08-31  Palmer Dabbelt  <palmer@rivosinc.com>
8086         * config/riscv/autovec.md (shifts): Use
8087         vector_scalar_shift_operand.
8088         * config/riscv/predicates.md (vector_scalar_shift_operand): New
8089         predicate.
8091 2023-08-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8093         * config.gcc: Add vector cost model framework for RVV.
8094         * config/riscv/riscv.cc (riscv_vectorize_create_costs): Ditto.
8095         (TARGET_VECTORIZE_CREATE_COSTS): Ditto.
8096         * config/riscv/t-riscv: Ditto.
8097         * config/riscv/riscv-vector-costs.cc: New file.
8098         * config/riscv/riscv-vector-costs.h: New file.
8100 2023-08-31  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
8102         PR target/110411
8103         * config/rs6000/mma.md (define_insn_and_split movoo): Disallow
8104         AltiVec address operands.
8105         (define_insn_and_split movxo): Likewise.
8106         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand): Remove
8107         redundant mode size check.
8109 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
8111         * config/riscv/riscv-protos.h (IS_AGNOSTIC): Move to here.
8112         * config/riscv/riscv-v.cc (gen_no_side_effects_vsetvl_rtx):
8113         Change to default policy.
8114         * config/riscv/riscv-vector-builtins-bases.cc: Change to default policy.
8115         * config/riscv/riscv-vsetvl.h (IS_AGNOSTIC): Delete.
8116         * config/riscv/riscv.cc (riscv_print_operand): Use IS_AGNOSTIC to test.
8118 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
8120         * config/riscv/autovec-opt.md: Adjust.
8121         * config/riscv/autovec-vls.md: Ditto.
8122         * config/riscv/autovec.md: Ditto.
8123         * config/riscv/riscv-protos.h (enum insn_type): Add insn_type.
8124         (enum insn_flags): Add insn flags.
8125         (emit_vlmax_insn): Adjust.
8126         (emit_vlmax_fp_insn): Delete.
8127         (emit_vlmax_ternary_insn): Delete.
8128         (emit_vlmax_fp_ternary_insn): Delete.
8129         (emit_nonvlmax_insn): Adjust.
8130         (emit_vlmax_slide_insn): Delete.
8131         (emit_nonvlmax_slide_tu_insn): Delete.
8132         (emit_vlmax_merge_insn): Delete.
8133         (emit_vlmax_cmp_insn): Delete.
8134         (emit_vlmax_cmp_mu_insn): Delete.
8135         (emit_vlmax_masked_mu_insn): Delete.
8136         (emit_scalar_move_insn): Delete.
8137         (emit_nonvlmax_integer_move_insn): Delete.
8138         (emit_vlmax_insn_lra): Add.
8139         * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): New.
8140         (emit_vlmax_insn): Adjust.
8141         (emit_nonvlmax_insn): Adjust.
8142         (emit_vlmax_insn_lra): Add.
8143         (emit_vlmax_fp_insn): Delete.
8144         (emit_vlmax_ternary_insn): Delete.
8145         (emit_vlmax_fp_ternary_insn): Delete.
8146         (emit_vlmax_slide_insn): Delete.
8147         (emit_nonvlmax_slide_tu_insn): Delete.
8148         (emit_nonvlmax_slide_insn): Delete.
8149         (emit_vlmax_merge_insn): Delete.
8150         (emit_vlmax_cmp_insn): Delete.
8151         (emit_vlmax_cmp_mu_insn): Delete.
8152         (emit_vlmax_masked_insn): Delete.
8153         (emit_nonvlmax_masked_insn): Delete.
8154         (emit_vlmax_masked_store_insn): Delete.
8155         (emit_nonvlmax_masked_store_insn): Delete.
8156         (emit_vlmax_masked_mu_insn): Delete.
8157         (emit_vlmax_masked_fp_mu_insn): Delete.
8158         (emit_nonvlmax_tu_insn): Delete.
8159         (emit_nonvlmax_fp_tu_insn): Delete.
8160         (emit_nonvlmax_tumu_insn): Delete.
8161         (emit_nonvlmax_fp_tumu_insn): Delete.
8162         (emit_scalar_move_insn): Delete.
8163         (emit_cpop_insn): Delete.
8164         (emit_vlmax_integer_move_insn): Delete.
8165         (emit_nonvlmax_integer_move_insn): Delete.
8166         (emit_vlmax_gather_insn): Delete.
8167         (emit_vlmax_masked_gather_mu_insn): Delete.
8168         (emit_vlmax_compress_insn): Delete.
8169         (emit_nonvlmax_compress_insn): Delete.
8170         (emit_vlmax_reduction_insn): Delete.
8171         (emit_vlmax_fp_reduction_insn): Delete.
8172         (emit_nonvlmax_fp_reduction_insn): Delete.
8173         (expand_vec_series): Adjust.
8174         (expand_const_vector): Adjust.
8175         (legitimize_move): Adjust.
8176         (sew64_scalar_helper): Adjust.
8177         (expand_tuple_move): Adjust.
8178         (expand_vector_init_insert_elems): Adjust.
8179         (expand_vector_init_merge_repeating_sequence): Adjust.
8180         (expand_vec_cmp): Adjust.
8181         (expand_vec_cmp_float): Adjust.
8182         (expand_vec_perm): Adjust.
8183         (shuffle_merge_patterns): Adjust.
8184         (shuffle_compress_patterns): Adjust.
8185         (shuffle_decompress_patterns): Adjust.
8186         (expand_load_store): Adjust.
8187         (expand_cond_len_op): Adjust.
8188         (expand_cond_len_unop): Adjust.
8189         (expand_cond_len_binop): Adjust.
8190         (expand_gather_scatter): Adjust.
8191         (expand_cond_len_ternop): Adjust.
8192         (expand_reduction): Adjust.
8193         (expand_lanes_load_store): Adjust.
8194         (expand_fold_extract_last): Adjust.
8195         * config/riscv/riscv.cc (vector_zero_call_used_regs): Adjust.
8196         * config/riscv/vector.md: Adjust.
8198 2023-08-31  Haochen Gui  <guihaoc@gcc.gnu.org>
8200         PR target/96762
8201         * config/rs6000/rs6000-string.cc (expand_block_move): Call vector
8202         load/store with length only on 64-bit Power10.
8204 2023-08-31  Claudiu Zissulescu  <claziss@gmail.com>
8206         * config/arc/arc.cc (arc_split_mov_const): Use LSL16 only when
8207         SWAP option is enabled.
8208         * config/arc/arc.md (ashlsi2_cnt16): Likewise.
8210 2023-08-31  Stamatis Markianos-Wright  <stam.markianos-wright@arm.com>
8212         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90, vcaddq_rot270):
8213         Use common insn for signed and unsigned front-end definitions.
8214         * config/arm/arm_mve_builtins.def
8215         (vcaddq_rot90_m_u, vcaddq_rot270_m_u): Make common.
8216         (vcaddq_rot90_m_s, vcaddq_rot270_m_s): Remove.
8217         * config/arm/iterators.md (mve_insn): Merge signed and unsigned defs.
8218         (isu): Likewise.
8219         (rot): Likewise.
8220         (mve_rot): Likewise.
8221         (supf): Likewise.
8222         (VxCADDQ_M): Likewise.
8223         * config/arm/unspecs.md (unspec): Likewise.
8224         * config/arm/mve.md: Fix minor typo.
8226 2023-08-31  liuhongt  <hongtao.liu@intel.com>
8228         * config/i386/sse.md (<avx512>_blendm<mode>): Merge
8229         VF_AVX512HFBFVL into VI12HFBF_AVX512VL.
8230         (VF_AVX512HFBF16): Renamed to VHFBF.
8231         (VF_AVX512FP16VL): Renamed to VHF_AVX512VL.
8232         (VF_AVX512FP16): Removed.
8233         (div<mode>3): Adjust VF_AVX512FP16VL to VHF_AVX512VL.
8234         (avx512fp16_rcp<mode>2<mask_name>): Ditto.
8235         (rsqrt<mode>2): Ditto.
8236         (<sse>_rsqrt<mode>2<mask_name>): Ditto.
8237         (vcond<mode><code>): Ditto.
8238         (vcond<sseintvecmodelower><mode>): Ditto.
8239         (<avx512>_fmaddc_<mode>_mask1<round_expand_name>): Ditto.
8240         (<avx512>_fmaddc_<mode>_maskz<round_expand_name>): Ditto.
8241         (<avx512>_fcmaddc_<mode>_mask1<round_expand_name>): Ditto.
8242         (<avx512>_fcmaddc_<mode>_maskz<round_expand_name>): Ditto.
8243         (cmla<conj_op><mode>4): Ditto.
8244         (fma_<mode>_fadd_fmul): Ditto.
8245         (fma_<mode>_fadd_fcmul): Ditto.
8246         (fma_<complexopname>_<mode>_fma_zero): Ditto.
8247         (fma_<mode>_fmaddc_bcst): Ditto.
8248         (fma_<mode>_fcmaddc_bcst): Ditto.
8249         (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto.
8250         (cmul<conj_op><mode>3): Ditto.
8251         (<avx512>_<complexopname>_<mode><maskc_name><round_name>):
8252         Ditto.
8253         (vec_unpacks_lo_<mode>): Ditto.
8254         (vec_unpacks_hi_<mode>): Ditto.
8255         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
8256         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
8257         (*vec_extract<mode>_0): Ditto.
8258         (*<avx512>_cmp<mode>3): Extend to V48H_AVX512VL.
8260 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
8262         PR target/111234
8263         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Remove condition.
8265 2023-08-31  Jiufu Guo  <guojiufu@linux.ibm.com>
8267         * range-op-mixed.h (operator_plus::overflow_free_p): New declare.
8268         (operator_minus::overflow_free_p): New declare.
8269         (operator_mult::overflow_free_p): New declare.
8270         * range-op.cc (range_op_handler::overflow_free_p): New function.
8271         (range_operator::overflow_free_p): New default function.
8272         (operator_plus::overflow_free_p): New function.
8273         (operator_minus::overflow_free_p): New function.
8274         (operator_mult::overflow_free_p): New function.
8275         * range-op.h (range_op_handler::overflow_free_p): New declare.
8276         (range_operator::overflow_free_p): New declare.
8277         * value-range.cc (irange::nonnegative_p): New function.
8278         (irange::nonpositive_p): New function.
8279         * value-range.h (irange::nonnegative_p): New declare.
8280         (irange::nonpositive_p): New declare.
8282 2023-08-30  Dimitar Dimitrov  <dimitar@dinux.eu>
8284         PR target/106562
8285         * config/pru/predicates.md (const_0_operand): New predicate.
8286         (pru_cstore_comparison_operator): Ditto.
8287         * config/pru/pru.md (cstore<mode>4): New pattern.
8288         (cstoredi4): Ditto.
8290 2023-08-30  Richard Biener  <rguenther@suse.de>
8292         PR tree-optimization/111228
8293         * match.pd ((vec_perm (vec_perm ..) @5 ..) -> (vec_perm @x @5 ..)):
8294         New simplifications.
8296 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8298         * config/riscv/autovec.md (movmisalign<mode>): Delete.
8300 2023-08-30  Die Li  <lidie@eswincomputing.com>
8301             Fei Gao  <gaofei@eswincomputing.com>
8303         * config/riscv/peephole.md: New pattern.
8304         * config/riscv/predicates.md (a0a1_reg_operand): New predicate.
8305         (zcmp_mv_sreg_operand): New predicate.
8306         * config/riscv/riscv.md: New predicate.
8307         * config/riscv/zc.md (*mva01s<X:mode>): New pattern.
8308         (*mvsa01<X:mode>): New pattern.
8310 2023-08-30  Fei Gao  <gaofei@eswincomputing.com>
8312         * config/riscv/riscv.cc
8313         (riscv_zcmp_can_use_popretz): true if popretz can be used
8314         (riscv_gen_multi_pop_insn): interface to generate cm.pop[ret][z]
8315         (riscv_expand_epilogue): expand cm.pop[ret][z] in epilogue
8316         * config/riscv/riscv.md: define A0_REGNUM
8317         * config/riscv/zc.md
8318         (@gpr_multi_popretz_up_to_ra_<mode>): md for popretz ra
8319         (@gpr_multi_popretz_up_to_s0_<mode>): md for popretz ra, s0
8320         (@gpr_multi_popretz_up_to_s1_<mode>): likewise
8321         (@gpr_multi_popretz_up_to_s2_<mode>): likewise
8322         (@gpr_multi_popretz_up_to_s3_<mode>): likewise
8323         (@gpr_multi_popretz_up_to_s4_<mode>): likewise
8324         (@gpr_multi_popretz_up_to_s5_<mode>): likewise
8325         (@gpr_multi_popretz_up_to_s6_<mode>): likewise
8326         (@gpr_multi_popretz_up_to_s7_<mode>): likewise
8327         (@gpr_multi_popretz_up_to_s8_<mode>): likewise
8328         (@gpr_multi_popretz_up_to_s9_<mode>): likewise
8329         (@gpr_multi_popretz_up_to_s11_<mode>): likewise
8331 2023-08-30  Fei Gao  <gaofei@eswincomputing.com>
8333         * config/riscv/iterators.md
8334         (slot0_offset): slot 0 offset in stack GPRs area in bytes
8335         (slot1_offset): slot 1 offset in stack GPRs area in bytes
8336         (slot2_offset): likewise
8337         (slot3_offset): likewise
8338         (slot4_offset): likewise
8339         (slot5_offset): likewise
8340         (slot6_offset): likewise
8341         (slot7_offset): likewise
8342         (slot8_offset): likewise
8343         (slot9_offset): likewise
8344         (slot10_offset): likewise
8345         (slot11_offset): likewise
8346         (slot12_offset): likewise
8347         * config/riscv/predicates.md
8348         (stack_push_up_to_ra_operand): predicates of stack adjust pushing ra
8349         (stack_push_up_to_s0_operand): predicates of stack adjust pushing ra, s0
8350         (stack_push_up_to_s1_operand): likewise
8351         (stack_push_up_to_s2_operand): likewise
8352         (stack_push_up_to_s3_operand): likewise
8353         (stack_push_up_to_s4_operand): likewise
8354         (stack_push_up_to_s5_operand): likewise
8355         (stack_push_up_to_s6_operand): likewise
8356         (stack_push_up_to_s7_operand): likewise
8357         (stack_push_up_to_s8_operand): likewise
8358         (stack_push_up_to_s9_operand): likewise
8359         (stack_push_up_to_s11_operand): likewise
8360         (stack_pop_up_to_ra_operand): predicates of stack adjust poping ra
8361         (stack_pop_up_to_s0_operand): predicates of stack adjust poping ra, s0
8362         (stack_pop_up_to_s1_operand): likewise
8363         (stack_pop_up_to_s2_operand): likewise
8364         (stack_pop_up_to_s3_operand): likewise
8365         (stack_pop_up_to_s4_operand): likewise
8366         (stack_pop_up_to_s5_operand): likewise
8367         (stack_pop_up_to_s6_operand): likewise
8368         (stack_pop_up_to_s7_operand): likewise
8369         (stack_pop_up_to_s8_operand): likewise
8370         (stack_pop_up_to_s9_operand): likewise
8371         (stack_pop_up_to_s11_operand): likewise
8372         * config/riscv/riscv-protos.h
8373         (riscv_zcmp_valid_stack_adj_bytes_p):declaration
8374         * config/riscv/riscv.cc (struct riscv_frame_info): comment change
8375         (riscv_avoid_multi_push): helper function of riscv_use_multi_push
8376         (riscv_use_multi_push): true if multi push is used
8377         (riscv_multi_push_sregs_count): num of sregs in multi-push
8378         (riscv_multi_push_regs_count): num of regs in multi-push
8379         (riscv_16bytes_align): align to 16 bytes
8380         (riscv_stack_align): moved to a better place
8381         (riscv_save_libcall_count): no functional change
8382         (riscv_compute_frame_info): add zcmp frame info
8383         (riscv_for_each_saved_reg): save or restore fprs in specified slot for zcmp
8384         (riscv_adjust_multi_push_cfi_prologue): adjust cfi for cm.push
8385         (riscv_gen_multi_push_pop_insn): gen function for multi push and pop
8386         (get_multi_push_fpr_mask): get mask for the fprs pushed by cm.push
8387         (riscv_expand_prologue): allocate stack by cm.push
8388         (riscv_adjust_multi_pop_cfi_epilogue): adjust cfi for cm.pop[ret]
8389         (riscv_expand_epilogue): allocate stack by cm.pop[ret]
8390         (zcmp_base_adj): calculate stack adjustment base size
8391         (zcmp_additional_adj): calculate stack adjustment additional size
8392         (riscv_zcmp_valid_stack_adj_bytes_p): check if stack adjustment valid
8393         * config/riscv/riscv.h (RETURN_ADDR_MASK): mask of ra
8394         (S0_MASK): likewise
8395         (S1_MASK): likewise
8396         (S2_MASK): likewise
8397         (S3_MASK): likewise
8398         (S4_MASK): likewise
8399         (S5_MASK): likewise
8400         (S6_MASK): likewise
8401         (S7_MASK): likewise
8402         (S8_MASK): likewise
8403         (S9_MASK): likewise
8404         (S10_MASK): likewise
8405         (S11_MASK): likewise
8406         (MULTI_PUSH_GPR_MASK): GPR_MASK that cm.push can cover at most
8407         (ZCMP_MAX_SPIMM): max spimm value
8408         (ZCMP_SP_INC_STEP): zcmp sp increment step
8409         (ZCMP_INVALID_S0S10_SREGS_COUNTS): num of s0-s10
8410         (ZCMP_S0S11_SREGS_COUNTS): num of s0-s11
8411         (ZCMP_MAX_GRP_SLOTS): max slots of pushing and poping in zcmp
8412         (CALLEE_SAVED_FREG_NUMBER): get x of fsx(fs0 ~ fs11)
8413         * config/riscv/riscv.md: include zc.md
8414         * config/riscv/zc.md: New file. machine description for zcmp
8416 2023-08-30  Jakub Jelinek  <jakub@redhat.com>
8418         PR tree-optimization/110914
8419         * tree-ssa-strlen.cc (strlen_pass::handle_builtin_memcpy): Don't call
8420         adjust_last_stmt unless len is known constant.
8422 2023-08-30  Jakub Jelinek  <jakub@redhat.com>
8424         PR tree-optimization/111015
8425         * gimple-ssa-store-merging.cc
8426         (imm_store_chain_info::output_merged_store): Use wi::mask and
8427         wide_int_to_tree instead of unsigned HOST_WIDE_INT shift and
8428         build_int_cst to build BIT_AND_EXPR mask.
8430 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8432         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Add MASK_LEN_ variant.
8433         (call_may_clobber_ref_p_1): Ditto.
8434         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
8435         (get_alias_ptr_type_for_ptr_address): Ditto.
8437 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8439         * config/riscv/riscv-vsetvl.cc
8440         (vector_insn_info::get_avl_or_vl_reg): Fix bug.
8442 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8444         * config/riscv/autovec-vls.md (movmisalign<mode>): New pattern.
8445         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Support
8446         VLS misalign.
8448 2023-08-29  Philipp Tomsich  <philipp.tomsich@vrull.eu>
8450         * config/riscv/zicond.md: New splitters to rewrite single bit
8451         sign extension as the condition to a czero in the desired form.
8453 2023-08-29  David Malcolm  <dmalcolm@redhat.com>
8455         PR analyzer/99860
8456         * doc/invoke.texi: Add -Wanalyzer-overlapping-buffers.
8458 2023-08-29  David Malcolm  <dmalcolm@redhat.com>
8460         PR analyzer/99860
8461         * Makefile.in (ANALYZER_OBJS): Add analyzer/ranges.o.
8463 2023-08-29  Jin Ma  <jinma@linux.alibaba.com>
8465         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli):
8466         zvfh can generate zfa extended instruction fli.h, just like zfh.
8468 2023-08-29  Edwin Lu  <ewlu@rivosinc.com>
8469             Vineet Gupta  <vineetg@rivosinc.com>
8471         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Generate
8472         __riscv_unaligned_avoid with value 1 or
8473         __riscv_unaligned_slow with value 1 or
8474         __riscv_unaligned_fast with value 1
8475         * config/riscv/riscv.cc (riscv_option_override): Define
8476         riscv_user_wants_strict_align. Set
8477         riscv_user_wants_strict_align to TARGET_STRICT_ALIGN
8478         * config/riscv/riscv.h: Declare riscv_user_wants_strict_align
8480 2023-08-29  Edwin Lu  <ewlu@rivosinc.com>
8482         * config/riscv/autovec-vls.md: Update types
8483         * config/riscv/riscv.md: Add vector placeholder type
8484         * config/riscv/vector.md: Update types
8486 2023-08-29  Carl Love  <cel@us.ibm.com>
8488         * config/rs6000/dfp.md (UNSPEC_DQUAN): New unspec.
8489         (dfp_dqua_<mode>, dfp_dquai_<mode>): New define_insn.
8490         * config/rs6000/rs6000-builtins.def (__builtin_dfp_dqua,
8491         __builtin_dfp_dquai, __builtin_dfp_dquaq, __builtin_dfp_dquaqi):
8492         New buit-in definitions.
8493         * config/rs6000/rs6000-overload.def (__builtin_dfp_quantize): New
8494         overloaded definition.
8495         * doc/extend.texi: Add documentation for __builtin_dfp_quantize.
8497 2023-08-29  Pan Li  <pan2.li@intel.com>
8498             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8500         * config/riscv/riscv.cc (riscv_legitimize_poly_move): New declaration.
8501         (riscv_legitimize_const_move): Handle ref plus const poly.
8503 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
8505         * common/config/riscv/riscv-common.cc
8506         (riscv_implied_info): Add implications from unprivileged extensions.
8507         (riscv_ext_version_table): Add stub support for all unprivileged
8508         extensions supported by Binutils as well as 'Zce', 'Zcmp', 'Zcmt'.
8510 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
8512         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
8513         Add stub support for all vendor extensions supported by Binutils.
8515 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
8517         * common/config/riscv/riscv-common.cc
8518         (riscv_implied_info): Add implications from privileged extensions.
8519         (riscv_ext_version_table): Add stub support for all privileged
8520         extensions supported by Binutils.
8522 2023-08-29  Lehua Ding  <lehua.ding@rivai.ai>
8524         * config/riscv/autovec.md: Adjust
8525         * config/riscv/riscv-protos.h (RVV_VUNDEF): Clean.
8526         (get_vlmax_rtx): Exported.
8527         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Deleted.
8528         (emit_vlmax_masked_gather_mu_insn): Adjust.
8529         (get_vlmax_rtx): New func.
8530         (expand_load_store): Adjust.
8531         (expand_cond_len_unop): Call expand_cond_len_op.
8532         (expand_cond_len_op): New subroutine.
8533         (expand_cond_len_binop): Call expand_cond_len_op.
8534         (expand_cond_len_ternop): Call expand_cond_len_op.
8535         (expand_lanes_load_store): Adjust.
8537 2023-08-29  Jakub Jelinek  <jakub@redhat.com>
8539         PR middle-end/79173
8540         PR middle-end/111209
8541         * tree-ssa-math-opts.cc (match_uaddc_usubc): Match also
8542         just 2 limb uaddc/usubc with 0 carry-in on lower limb and ignored
8543         carry-out on higher limb.  Don't match it though if it could be
8544         matched later on 4 argument addition/subtraction.
8546 2023-08-29  Andrew Pinski  <apinski@marvell.com>
8548         PR tree-optimization/111147
8549         * match.pd (`(x | y) & (~x ^ y)`) Use bitwise_inverted_equal_p
8550         instead of matching bit_not.
8552 2023-08-29  Christophe Lyon  <christophe.lyon@linaro.org>
8554         * config/arm/arm-mve-builtins.cc (type_suffixes): Add missing
8555         initializer.
8557 2023-08-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8559         * config/riscv/riscv-vsetvl.cc (vector_insn_info::get_avl_or_vl_reg): New function.
8560         (pass_vsetvl::compute_local_properties): Fix bug.
8561         (pass_vsetvl::commit_vsetvls): Ditto.
8562         * config/riscv/riscv-vsetvl.h: New function.
8564 2023-08-29  Lehua Ding  <lehua.ding@rivai.ai>
8566         PR target/110943
8567         * config/riscv/predicates.md (vector_const_int_or_double_0_operand):
8568         New predicate.
8569         * config/riscv/riscv-vector-builtins.cc (function_expander::function_expander):
8570         force_reg mem target operand.
8571         * config/riscv/vector.md (@pred_mov<mode>): Wrapper.
8572         (*pred_mov<mode>): Remove imm -> reg pattern.
8573         (*pred_broadcast<mode>_imm): Add imm -> reg pattern.
8575 2023-08-29  Lulu Cheng  <chenglulu@loongson.cn>
8577         * common/config/loongarch/loongarch-common.cc:
8578         Enable '-free' on O2 and above.
8579         * doc/invoke.texi: Modify the description information
8580         of the '-free' compilation option and add the LoongArch
8581         description.
8583 2023-08-28  Tsukasa OI  <research_trasio@irq.a4lg.com>
8585         * doc/extend.texi: Fix the description of __builtin_riscv_pause.
8587 2023-08-28  Tsukasa OI  <research_trasio@irq.a4lg.com>
8589         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
8590         Implement the 'Zihintpause' extension, version 2.0.
8591         (riscv_ext_flag_table) Add 'Zihintpause' handling.
8592         * config/riscv/riscv-builtins.cc: Remove availability predicate
8593         "always" and add "hint_pause".
8594         (riscv_builtins) : Add "pause" extension.
8595         * config/riscv/riscv-opts.h (MASK_ZIHINTPAUSE, TARGET_ZIHINTPAUSE): New.
8596         * config/riscv/riscv.md (riscv_pause): Adjust output based on
8597         TARGET_ZIHINTPAUSE.
8599 2023-08-28  Andrew Pinski  <apinski@marvell.com>
8601         * match.pd (`(X & ~Y) | (~X & Y)`): Use bitwise_inverted_equal_p
8602         instead of specifically checking for ~X.
8604 2023-08-28  Andrew Pinski  <apinski@marvell.com>
8606         PR tree-optimization/111146
8607         * match.pd (`(x | y) & ~x`, `(x & y) | ~x`): Remove
8608         redundant pattern.
8610 2023-08-28  Andrew Pinski  <apinski@marvell.com>
8612         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Add dump information
8613         when resimplify returns true.
8614         (match_simplify_replacement): Print only if accepted the match-and-simplify
8615         result rather than the full sequence.
8617 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8619         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Skip
8620         never probability.
8621         (pass_vsetvl::compute_probabilities): Fix unitialized probability.
8623 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8625         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Fix bug.
8627 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8629         * config/arm/arm-mve-builtins-base.cc (vmullbq_poly)
8630         (vmulltq_poly): New.
8631         * config/arm/arm-mve-builtins-base.def (vmullbq_poly)
8632         (vmulltq_poly): New.
8633         * config/arm/arm-mve-builtins-base.h (vmullbq_poly)
8634         (vmulltq_poly): New.
8635         * config/arm/arm_mve.h (vmulltq_poly): Remove.
8636         (vmullbq_poly): Remove.
8637         (vmullbq_poly_m): Remove.
8638         (vmulltq_poly_m): Remove.
8639         (vmullbq_poly_x): Remove.
8640         (vmulltq_poly_x): Remove.
8641         (vmulltq_poly_p8): Remove.
8642         (vmullbq_poly_p8): Remove.
8643         (vmulltq_poly_p16): Remove.
8644         (vmullbq_poly_p16): Remove.
8645         (vmullbq_poly_m_p8): Remove.
8646         (vmullbq_poly_m_p16): Remove.
8647         (vmulltq_poly_m_p8): Remove.
8648         (vmulltq_poly_m_p16): Remove.
8649         (vmullbq_poly_x_p8): Remove.
8650         (vmullbq_poly_x_p16): Remove.
8651         (vmulltq_poly_x_p8): Remove.
8652         (vmulltq_poly_x_p16): Remove.
8653         (__arm_vmulltq_poly_p8): Remove.
8654         (__arm_vmullbq_poly_p8): Remove.
8655         (__arm_vmulltq_poly_p16): Remove.
8656         (__arm_vmullbq_poly_p16): Remove.
8657         (__arm_vmullbq_poly_m_p8): Remove.
8658         (__arm_vmullbq_poly_m_p16): Remove.
8659         (__arm_vmulltq_poly_m_p8): Remove.
8660         (__arm_vmulltq_poly_m_p16): Remove.
8661         (__arm_vmullbq_poly_x_p8): Remove.
8662         (__arm_vmullbq_poly_x_p16): Remove.
8663         (__arm_vmulltq_poly_x_p8): Remove.
8664         (__arm_vmulltq_poly_x_p16): Remove.
8665         (__arm_vmulltq_poly): Remove.
8666         (__arm_vmullbq_poly): Remove.
8667         (__arm_vmullbq_poly_m): Remove.
8668         (__arm_vmulltq_poly_m): Remove.
8669         (__arm_vmullbq_poly_x): Remove.
8670         (__arm_vmulltq_poly_x): Remove.
8672 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8674         * config/arm/arm-mve-builtins-functions.h (class
8675         unspec_mve_function_exact_insn_vmull_poly): New.
8677 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8679         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_poly): New.
8680         * config/arm/arm-mve-builtins-shapes.h (binary_widen_poly): New.
8682 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8684         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): Add
8685         support for 'U' and 'p' format specifiers.
8687 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8689         * config/arm/arm-mve-builtins.cc (type_suffixes): Handle poly_p
8690         field..
8691         (TYPES_poly_8_16): New.
8692         (poly_8_16): New.
8693         * config/arm/arm-mve-builtins.def (p8): New type suffix.
8694         (p16): Likewise.
8695         * config/arm/arm-mve-builtins.h (enum type_class_index): Add
8696         TYPE_poly.
8697         (struct type_suffix_info): Add poly_p field.
8699 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8701         * config/arm/arm-mve-builtins-base.cc (vmullbq_int, vmulltq_int):
8702         New.
8703         * config/arm/arm-mve-builtins-base.def (vmullbq_int, vmulltq_int):
8704         New.
8705         * config/arm/arm-mve-builtins-base.h (vmullbq_int, vmulltq_int):
8706         New.
8707         * config/arm/arm_mve.h (vmulltq_int): Remove.
8708         (vmullbq_int): Remove.
8709         (vmullbq_int_m): Remove.
8710         (vmulltq_int_m): Remove.
8711         (vmullbq_int_x): Remove.
8712         (vmulltq_int_x): Remove.
8713         (vmulltq_int_u8): Remove.
8714         (vmullbq_int_u8): Remove.
8715         (vmulltq_int_s8): Remove.
8716         (vmullbq_int_s8): Remove.
8717         (vmulltq_int_u16): Remove.
8718         (vmullbq_int_u16): Remove.
8719         (vmulltq_int_s16): Remove.
8720         (vmullbq_int_s16): Remove.
8721         (vmulltq_int_u32): Remove.
8722         (vmullbq_int_u32): Remove.
8723         (vmulltq_int_s32): Remove.
8724         (vmullbq_int_s32): Remove.
8725         (vmullbq_int_m_s8): Remove.
8726         (vmullbq_int_m_s32): Remove.
8727         (vmullbq_int_m_s16): Remove.
8728         (vmullbq_int_m_u8): Remove.
8729         (vmullbq_int_m_u32): Remove.
8730         (vmullbq_int_m_u16): Remove.
8731         (vmulltq_int_m_s8): Remove.
8732         (vmulltq_int_m_s32): Remove.
8733         (vmulltq_int_m_s16): Remove.
8734         (vmulltq_int_m_u8): Remove.
8735         (vmulltq_int_m_u32): Remove.
8736         (vmulltq_int_m_u16): Remove.
8737         (vmullbq_int_x_s8): Remove.
8738         (vmullbq_int_x_s16): Remove.
8739         (vmullbq_int_x_s32): Remove.
8740         (vmullbq_int_x_u8): Remove.
8741         (vmullbq_int_x_u16): Remove.
8742         (vmullbq_int_x_u32): Remove.
8743         (vmulltq_int_x_s8): Remove.
8744         (vmulltq_int_x_s16): Remove.
8745         (vmulltq_int_x_s32): Remove.
8746         (vmulltq_int_x_u8): Remove.
8747         (vmulltq_int_x_u16): Remove.
8748         (vmulltq_int_x_u32): Remove.
8749         (__arm_vmulltq_int_u8): Remove.
8750         (__arm_vmullbq_int_u8): Remove.
8751         (__arm_vmulltq_int_s8): Remove.
8752         (__arm_vmullbq_int_s8): Remove.
8753         (__arm_vmulltq_int_u16): Remove.
8754         (__arm_vmullbq_int_u16): Remove.
8755         (__arm_vmulltq_int_s16): Remove.
8756         (__arm_vmullbq_int_s16): Remove.
8757         (__arm_vmulltq_int_u32): Remove.
8758         (__arm_vmullbq_int_u32): Remove.
8759         (__arm_vmulltq_int_s32): Remove.
8760         (__arm_vmullbq_int_s32): Remove.
8761         (__arm_vmullbq_int_m_s8): Remove.
8762         (__arm_vmullbq_int_m_s32): Remove.
8763         (__arm_vmullbq_int_m_s16): Remove.
8764         (__arm_vmullbq_int_m_u8): Remove.
8765         (__arm_vmullbq_int_m_u32): Remove.
8766         (__arm_vmullbq_int_m_u16): Remove.
8767         (__arm_vmulltq_int_m_s8): Remove.
8768         (__arm_vmulltq_int_m_s32): Remove.
8769         (__arm_vmulltq_int_m_s16): Remove.
8770         (__arm_vmulltq_int_m_u8): Remove.
8771         (__arm_vmulltq_int_m_u32): Remove.
8772         (__arm_vmulltq_int_m_u16): Remove.
8773         (__arm_vmullbq_int_x_s8): Remove.
8774         (__arm_vmullbq_int_x_s16): Remove.
8775         (__arm_vmullbq_int_x_s32): Remove.
8776         (__arm_vmullbq_int_x_u8): Remove.
8777         (__arm_vmullbq_int_x_u16): Remove.
8778         (__arm_vmullbq_int_x_u32): Remove.
8779         (__arm_vmulltq_int_x_s8): Remove.
8780         (__arm_vmulltq_int_x_s16): Remove.
8781         (__arm_vmulltq_int_x_s32): Remove.
8782         (__arm_vmulltq_int_x_u8): Remove.
8783         (__arm_vmulltq_int_x_u16): Remove.
8784         (__arm_vmulltq_int_x_u32): Remove.
8785         (__arm_vmulltq_int): Remove.
8786         (__arm_vmullbq_int): Remove.
8787         (__arm_vmullbq_int_m): Remove.
8788         (__arm_vmulltq_int_m): Remove.
8789         (__arm_vmullbq_int_x): Remove.
8790         (__arm_vmulltq_int_x): Remove.
8792 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8794         * config/arm/arm-mve-builtins-shapes.cc (binary_widen): New.
8795         * config/arm/arm-mve-builtins-shapes.h (binary_widen): New.
8797 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8799         * config/arm/arm-mve-builtins-functions.h (class
8800         unspec_mve_function_exact_insn_vmull): New.
8802 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8804         * config/arm/iterators.md (mve_insn): Add vmullb, vmullt.
8805         (isu): Add VMULLBQ_INT_S, VMULLBQ_INT_U, VMULLTQ_INT_S,
8806         VMULLTQ_INT_U.
8807         (supf): Add VMULLBQ_POLY_P, VMULLTQ_POLY_P, VMULLBQ_POLY_M_P,
8808         VMULLTQ_POLY_M_P.
8809         (VMULLBQ_INT, VMULLTQ_INT, VMULLBQ_INT_M, VMULLTQ_INT_M): Delete.
8810         (VMULLxQ_INT, VMULLxQ_POLY, VMULLxQ_INT_M, VMULLxQ_POLY_M): New.
8811         * config/arm/mve.md (mve_vmullbq_int_<supf><mode>)
8812         (mve_vmulltq_int_<supf><mode>): Merge into ...
8813         (@mve_<mve_insn>q_int_<supf><mode>) ... this.
8814         (mve_vmulltq_poly_p<mode>, mve_vmullbq_poly_p<mode>): Merge into ...
8815         (@mve_<mve_insn>q_poly_<supf><mode>): ... this.
8816         (mve_vmullbq_int_m_<supf><mode>, mve_vmulltq_int_m_<supf><mode>): Merge into ...
8817         (@mve_<mve_insn>q_int_m_<supf><mode>): ... this.
8818         (mve_vmullbq_poly_m_p<mode>, mve_vmulltq_poly_m_p<mode>): Merge into ...
8819         (@mve_<mve_insn>q_poly_m_<supf><mode>): ... this.
8821 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8823         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type):
8824         Remove dead check.
8826 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
8828         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): Fix loop bound.
8829         (binary_acca_int64): Likewise.
8831 2023-08-28  Aldy Hernandez  <aldyh@redhat.com>
8833         * range-op-float.cc (fold_range): Handle relations.
8835 2023-08-28  Lulu Cheng  <chenglulu@loongson.cn>
8837         * config/loongarch/loongarch.cc (loongarch_expand_conditional_move):
8838         Optimize the function implementation.
8840 2023-08-28  liuhongt  <hongtao.liu@intel.com>
8842         PR target/111119
8843         * config/i386/sse.md (V48_AVX2): Rename to ..
8844         (V48_128_256): .. this.
8845         (ssefltmodesuffix): Extend to V4SF/V8SF/V2DF/V4DF.
8846         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Change
8847         V48_AVX2 to V48_128_256, also generate vmaskmov{ps,pd} for
8848         integral modes when TARGET_AVX2 is not available.
8849         (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
8850         (maskload<mode><sseintvecmodelower>): Change V48_AVX2 to
8851         V48_128_256.
8852         (maskstore<mode><sseintvecmodelower>): Ditto.
8854 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8856         * config/riscv/riscv-vsetvl.cc (vsetvl_vtype_change_only_p):
8857         New function.
8858         (after_or_same_p): Ditto.
8859         (find_reg_killed_by): Delete.
8860         (has_vsetvl_killed_avl_p): Ditto.
8861         (anticipatable_occurrence_p): Refactor.
8862         (any_set_in_bb_p): Delete.
8863         (count_regno_occurrences): Ditto.
8864         (backward_propagate_worthwhile_p): Ditto.
8865         (demands_can_be_fused_p): Ditto.
8866         (earliest_pred_can_be_fused_p): New function.
8867         (vsetvl_dominated_by_p): Ditto.
8868         (vector_insn_info::parse_insn): Refactor.
8869         (vector_insn_info::merge): Refactor.
8870         (vector_insn_info::dump): Refactor.
8871         (vector_infos_manager::vector_infos_manager): Refactor.
8872         (vector_infos_manager::all_empty_predecessor_p): Delete.
8873         (vector_infos_manager::all_same_avl_p): Ditto.
8874         (vector_infos_manager::create_bitmap_vectors): Refactor.
8875         (vector_infos_manager::free_bitmap_vectors): Refactor.
8876         (vector_infos_manager::dump): Refactor.
8877         (pass_vsetvl::update_block_info): New function.
8878         (enum fusion_type): Ditto.
8879         (pass_vsetvl::get_backward_fusion_type): Delete.
8880         (pass_vsetvl::hard_empty_block_p): Ditto.
8881         (pass_vsetvl::backward_demand_fusion): Ditto.
8882         (pass_vsetvl::forward_demand_fusion): Ditto.
8883         (pass_vsetvl::demand_fusion): Ditto.
8884         (pass_vsetvl::cleanup_illegal_dirty_blocks): Ditto.
8885         (pass_vsetvl::compute_local_properties): Ditto.
8886         (pass_vsetvl::earliest_fusion): New function.
8887         (pass_vsetvl::vsetvl_fusion): Ditto.
8888         (pass_vsetvl::commit_vsetvls): Refactor.
8889         (get_first_vsetvl_before_rvv_insns): Ditto.
8890         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
8891         (pass_vsetvl::cleanup_earliest_vsetvls): New function.
8892         (pass_vsetvl::df_post_optimization): Refactor.
8893         (pass_vsetvl::lazy_vsetvl): Ditto.
8894         * config/riscv/riscv-vsetvl.h: Ditto.
8896 2023-08-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8898         * config/riscv/autovec.md (len_fold_extract_last_<mode>): New pattern.
8899         * config/riscv/riscv-protos.h (enum insn_type): New enum.
8900         (expand_fold_extract_last): New function.
8901         * config/riscv/riscv-v.cc (emit_nonvlmax_slide_insn): Ditto.
8902         (emit_cpop_insn): Ditto.
8903         (emit_nonvlmax_compress_insn): Ditto.
8904         (expand_fold_extract_last): Ditto.
8905         * config/riscv/vector.md: Fix vcpop.m ratio demand.
8907 2023-08-25  Edwin Lu  <ewlu@rivosinc.com>
8909         * config/riscv/sync-rvwmo.md: updated types to "multi" or
8910                 "atomic" based on number of assembly lines generated
8911         * config/riscv/sync-ztso.md: likewise
8912         * config/riscv/sync.md: likewise
8914 2023-08-25  Jin Ma  <jinma@linux.alibaba.com>
8916         * common/config/riscv/riscv-common.cc: Add zfa extension version, which depends on
8917         the F extension.
8918         * config/riscv/constraints.md (zfli): Constrain the floating point number that the
8919         instructions FLI.H/S/D can load.
8920         * config/riscv/iterators.md (ceil): New.
8921         * config/riscv/riscv-opts.h (MASK_ZFA): New.
8922         (TARGET_ZFA): New.
8923         * config/riscv/riscv-protos.h (riscv_float_const_rtx_index_for_fli): New.
8924         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli): New.
8925         (riscv_cannot_force_const_mem): If instruction FLI.H/S/D can be used, memory is
8926         not applicable.
8927         (riscv_const_insns): Likewise.
8928         (riscv_legitimize_const_move): Likewise.
8929         (riscv_split_64bit_move_p): If instruction FLI.H/S/D can be used, no split is
8930         required.
8931         (riscv_split_doubleword_move): Likewise.
8932         (riscv_output_move): Output the mov instructions in zfa extension.
8933         (riscv_print_operand): Output the floating-point value of the FLI.H/S/D immediate
8934         in assembly.
8935         (riscv_secondary_memory_needed): Likewise.
8936         * config/riscv/riscv.md (fminm<mode>3): New.
8937         (fmaxm<mode>3): New.
8938         (movsidf2_low_rv32): New.
8939         (movsidf2_high_rv32): New.
8940         (movdfsisi3_rv32): New.
8941         (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_zfa): New.
8942         * config/riscv/riscv.opt: New.
8944 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
8946         * omp-api.h: New.
8947         * omp-general.cc (omp_runtime_api_procname): New.
8948         (omp_runtime_api_call): Moved here from omp-low.cc, and make
8949         non-static.
8950         * omp-general.h: Include omp-api.h.
8951         * omp-low.cc (omp_runtime_api_call): Delete this copy.
8953 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
8955         * doc/generic.texi (OpenMP): Document OMP_STRUCTURED_BLOCK.
8956         * doc/gimple.texi (GIMPLE instruction set): Add
8957         GIMPLE_OMP_STRUCTURED_BLOCK.
8958         (GIMPLE_OMP_STRUCTURED_BLOCK): New subsection.
8959         * gimple-low.cc (lower_stmt): Error on GIMPLE_OMP_STRUCTURED_BLOCK.
8960         * gimple-pretty-print.cc (dump_gimple_omp_block): Handle
8961         GIMPLE_OMP_STRUCTURED_BLOCK.
8962         (pp_gimple_stmt_1): Likewise.
8963         * gimple-walk.cc (walk_gimple_stmt): Likewise.
8964         * gimple.cc (gimple_build_omp_structured_block): New.
8965         * gimple.def (GIMPLE_OMP_STRUCTURED_BLOCK): New.
8966         * gimple.h (gimple_build_omp_structured_block): Declare.
8967         (gimple_has_substatements): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
8968         (CASE_GIMPLE_OMP): Likewise.
8969         * gimplify.cc (is_gimple_stmt): Handle OMP_STRUCTURED_BLOCK.
8970         (gimplify_expr): Likewise.
8971         * omp-expand.cc (GIMPLE_OMP_STRUCTURED_BLOCK): Error on
8972         GIMPLE_OMP_STRUCTURED_BLOCK.
8973         * omp-low.cc (scan_omp_1_stmt): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
8974         (lower_omp_1): Likewise.
8975         (diagnose_sb_1): Likewise.
8976         (diagnose_sb_2): Likewise.
8977         * tree-inline.cc (remap_gimple_stmt): Handle
8978         GIMPLE_OMP_STRUCTURED_BLOCK.
8979         (estimate_num_insns): Likewise.
8980         * tree-nested.cc (convert_nonlocal_reference_stmt): Likewise.
8981         (convert_local_reference_stmt): Likewise.
8982         (convert_gimple_call): Likewise.
8983         * tree-pretty-print.cc (dump_generic_node): Handle
8984         OMP_STRUCTURED_BLOCK.
8985         * tree.def (OMP_STRUCTURED_BLOCK): New.
8986         * tree.h (OMP_STRUCTURED_BLOCK_BODY): New.
8988 2023-08-25  Vineet Gupta  <vineetg@rivosinc.com>
8990         * config/riscv/riscv.cc (riscv_rtx_costs): Adjust const_int
8991         cost. Add some comments about different constants handling.
8993 2023-08-25  Andrew Pinski  <apinski@marvell.com>
8995         * match.pd (`a ? one_zero : one_zero`): Move
8996         below detection of minmax.
8998 2023-08-25  Andrew Pinski  <apinski@marvell.com>
9000         * match.pd (`a | C -> C`): New pattern.
9002 2023-08-25  Uros Bizjak  <ubizjak@gmail.com>
9004         * caller-save.cc (new_saved_hard_reg):
9005         Rename TRUE/FALSE to true/false.
9006         (setup_save_areas): Ditto.
9007         * gcc.cc (set_collect_gcc_options): Ditto.
9008         (driver::build_multilib_strings): Ditto.
9009         (print_multilib_info): Ditto.
9010         * genautomata.cc (gen_cpu_unit): Ditto.
9011         (gen_query_cpu_unit): Ditto.
9012         (gen_bypass): Ditto.
9013         (gen_excl_set): Ditto.
9014         (gen_presence_absence_set): Ditto.
9015         (gen_presence_set): Ditto.
9016         (gen_final_presence_set): Ditto.
9017         (gen_absence_set): Ditto.
9018         (gen_final_absence_set): Ditto.
9019         (gen_automaton): Ditto.
9020         (gen_regexp_repeat): Ditto.
9021         (gen_regexp_allof): Ditto.
9022         (gen_regexp_oneof): Ditto.
9023         (gen_regexp_sequence): Ditto.
9024         (process_decls): Ditto.
9025         (reserv_sets_are_intersected): Ditto.
9026         (initiate_excl_sets): Ditto.
9027         (form_reserv_sets_list): Ditto.
9028         (check_presence_pattern_sets): Ditto.
9029         (check_absence_pattern_sets): Ditto.
9030         (check_regexp_units_distribution): Ditto.
9031         (check_unit_distributions_to_automata): Ditto.
9032         (create_ainsns): Ditto.
9033         (output_insn_code_cases): Ditto.
9034         (output_internal_dead_lock_func): Ditto.
9035         (form_important_insn_automata_lists): Ditto.
9036         * gengtype-state.cc (read_state_files_list): Ditto.
9037         * gengtype.cc (main): Ditto.
9038         * gimple-array-bounds.cc (array_bounds_checker::check_array_bounds):
9039         Ditto.
9040         * gimple.cc (gimple_build_call_from_tree): Ditto.
9041         (preprocess_case_label_vec_for_gimple): Ditto.
9042         * gimplify.cc (gimplify_call_expr): Ditto.
9043         * ordered-hash-map-tests.cc (test_map_of_int_to_strings): Ditto.
9045 2023-08-25  Richard Biener  <rguenther@suse.de>
9047         PR tree-optimization/111137
9048         * tree-vect-data-refs.cc (vect_slp_analyze_load_dependences):
9049         Properly handle grouped stores from other SLP instances.
9051 2023-08-25  Richard Biener  <rguenther@suse.de>
9053         * tree-vect-data-refs.cc (vect_slp_analyze_store_dependences):
9054         Split out from vect_slp_analyze_node_dependences, remove
9055         dead code.
9056         (vect_slp_analyze_load_dependences): Split out from
9057         vect_slp_analyze_node_dependences, adjust comments.  Process
9058         queued stores before any disambiguation.
9059         (vect_slp_analyze_node_dependences): Remove.
9060         (vect_slp_analyze_instance_dependence): Adjust.
9062 2023-08-25  Aldy Hernandez  <aldyh@redhat.com>
9064         * range-op-float.cc (frelop_early_resolve): Rewrite for better NAN
9065         handling.
9066         (operator_not_equal::fold_range): Adjust for relations.
9067         (operator_lt::fold_range): Same.
9068         (operator_gt::fold_range): Same.
9069         (foperator_unordered_equal::fold_range): Same.
9070         (foperator_unordered_lt::fold_range): Same.
9071         (foperator_unordered_le::fold_range): Same.
9072         (foperator_unordered_gt::fold_range): Same.
9073         (foperator_unordered_ge::fold_range): Same.
9075 2023-08-25  Richard Biener  <rguenther@suse.de>
9077         PR tree-optimization/111136
9078         * tree-vect-loop.cc (vect_dissolve_slp_only_groups): For
9079         stores force STMT_VINFO_STRIDED_P and also duplicate that
9080         to all elements.
9082 2023-08-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9084         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_local_properties):
9085         Add early continue.
9087 2023-08-25  liuhongt  <hongtao.liu@intel.com>
9089         * config/i386/sse.md (vec_set<mode>): Removed.
9090         (V_128H): Merge into ..
9091         (V_128): .. this.
9092         (V_256H): Merge into ..
9093         (V_256): .. this.
9094         (V_512): Add V32HF, V32BF.
9095         (*ssse3_palignr<mode>_perm): Adjust mode iterator from V_128H
9096         to V_128.
9097         (vcond<mode><sseintvecmodelower>): Removed
9098         (vcondu<mode><sseintvecmodelower>): Removed.
9099         (avx_vbroadcastf128_<mode>): Refator from V_256H to V_256.
9101 2023-08-25  Hongyu Wang  <hongyu.wang@intel.com>
9103         PR target/111127
9104         * config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode>_maskz):
9105         Adjust paramter order.
9107 2023-08-24  Uros Bizjak  <ubizjak@gmail.com>
9109         PR target/94866
9110         * config/i386/sse.md (*sse2_movq128_<mode>_1): New insn pattern.
9112 2023-08-24  David Malcolm  <dmalcolm@redhat.com>
9114         PR analyzer/105899
9115         * doc/invoke.texi (Static Analyzer Options): Add "strcat" to the
9116         list of functions known to the analyzer.
9118 2023-08-24  Richard Biener  <rguenther@suse.de>
9120         PR tree-optimization/111123
9121         * tree-ssa-ccp.cc (pass_fold_builtins::execute): Do not
9122         remove indirect clobbers here ...
9123         * tree-outof-ssa.cc (rewrite_out_of_ssa): ... but here.
9124         (remove_indirect_clobbers): New function.
9126 2023-08-24  Jan Hubicka  <jh@suse.cz>
9128         * cfg.h (struct control_flow_graph): New field full_profile.
9129         * auto-profile.cc (afdo_annotate_cfg): Set full_profile to true.
9130         * cfg.cc (init_flow): Set full_profile to false.
9131         * graphite.cc (graphite_transform_loops): Set full_profile to false.
9132         * lto-streamer-in.cc (input_cfg): Initialize full_profile flag.
9133         * predict.cc (pass_profile::execute): Set full_profile to true.
9134         * symtab-thunks.cc (expand_thunk): Set full_profile to true.
9135         * tree-cfg.cc (gimple_verify_flow_info): Verify that profile is full
9136         if full_profile is set.
9137         * tree-inline.cc (initialize_cfun): Initialize full_profile.
9138         (expand_call_inline): Combine full_profile.
9140 2023-08-24  Richard Biener  <rguenther@suse.de>
9142         * tree-vect-slp.cc (vect_build_slp_tree_1): Rename
9143         load_p to ldst_p, fix mistakes and rely on
9144         STMT_VINFO_DATA_REF.
9146 2023-08-24  Jan Hubicka  <jh@suse.cz>
9148         * gimple-harden-conditionals.cc (insert_check_and_trap): Set count
9149         of newly build trap bb.
9151 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9153         * config/riscv/riscv.cc (riscv_preferred_else_value): Remove it since
9154         it forbid COND_LEN_FMS/COND_LEN_FNMS STMT fold.
9155         (TARGET_PREFERRED_ELSE_VALUE): Ditto.
9157 2023-08-24  Robin Dapp  <rdapp.gcc@gmail.com>
9159         * common/config/riscv/riscv-common.cc: Add -fsched-pressure.
9160         * config/riscv/riscv.cc (riscv_option_override): Set sched
9161         pressure algorithm.
9163 2023-08-24  Robin Dapp  <rdapp@ventanamicro.com>
9165         * config/riscv/riscv.cc (riscv_print_operand): Allow vk operand.
9167 2023-08-24  Richard Biener  <rguenther@suse.de>
9169         PR tree-optimization/111125
9170         * tree-vect-slp.cc (vect_slp_function): Split at novector
9171         loop entry, do not push blocks in novector loops.
9173 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
9175         * doc/extend.texi: Document the C [[__extension__ ...]] construct.
9177 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9179         * genmatch.cc (decision_tree::gen): Support
9180         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
9181         * gimple-match-exports.cc (gimple_simplify): Ditto.
9182         (gimple_resimplify6): New function.
9183         (gimple_resimplify7): New function.
9184         (gimple_match_op::resimplify): Support
9185         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
9186         (convert_conditional_op): Ditto.
9187         (build_call_internal): Ditto.
9188         (try_conditional_simplification): Ditto.
9189         (gimple_extract): Ditto.
9190         * gimple-match.h (gimple_match_cond::gimple_match_cond): Ditto.
9191         * internal-fn.cc (CASE): Ditto.
9193 2023-08-24  Richard Biener  <rguenther@suse.de>
9195         PR tree-optimization/111115
9196         * tree-vectorizer.h (vect_slp_child_index_for_operand): New.
9197         * tree-vect-data-refs.cc (can_group_stmts_p): Also group
9198         .MASK_STORE.
9199         * tree-vect-slp.cc (arg3_arg2_map): New.
9200         (vect_get_operand_map): Handle IFN_MASK_STORE.
9201         (vect_slp_child_index_for_operand): New function.
9202         (vect_build_slp_tree_1): Handle statements with no LHS,
9203         masked store ifns.
9204         (vect_remove_slp_scalar_calls): Likewise.
9205         * tree-vect-stmts.cc (vect_check_store_rhs): Lookup the
9206         SLP child corresponding to the ifn value index.
9207         (vectorizable_store): Likewise for the mask index.  Support
9208         masked stores.
9209         (vectorizable_load): Lookup the SLP child corresponding to the
9210         ifn mask index.
9212 2023-08-24  Richard Biener  <rguenther@suse.de>
9214         PR tree-optimization/111125
9215         * tree-vect-slp.cc (vectorizable_bb_reduc_epilogue): Account
9216         for the remain_defs processing.
9218 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
9220         * config/aarch64/aarch64.cc: Include ssa.h.
9221         (aarch64_multiply_add_p): Require the second operand of an
9222         Advanced SIMD subtraction to be a multiplication.  Assume that
9223         such an operation won't be fused if the second operand is used
9224         multiple times and if the first operand is also a multiplication.
9226 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9228         * tree-vect-loop.cc (vectorizable_reduction): Apply
9229         LEN_FOLD_EXTRACT_LAST.
9230         * tree-vect-stmts.cc (vectorizable_condition): Ditto.
9232 2023-08-24  Richard Biener  <rguenther@suse.de>
9234         PR tree-optimization/111128
9235         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
9236         Emit external shift operand inline if we promoted it with
9237         another pattern stmt.
9239 2023-08-24  Pan Li  <pan2.li@intel.com>
9241         * config/riscv/autovec.md: Fix typo.
9243 2023-08-24  Pan Li  <pan2.li@intel.com>
9245         * config/riscv/riscv-vector-builtins-bases.cc
9246         (class binop_frm): Removed.
9247         (class reverse_binop_frm): Ditto.
9248         (class widen_binop_frm): Ditto.
9249         (class vfmacc_frm): Ditto.
9250         (class vfnmacc_frm): Ditto.
9251         (class vfmsac_frm): Ditto.
9252         (class vfnmsac_frm): Ditto.
9253         (class vfmadd_frm): Ditto.
9254         (class vfnmadd_frm): Ditto.
9255         (class vfmsub_frm): Ditto.
9256         (class vfnmsub_frm): Ditto.
9257         (class vfwmacc_frm): Ditto.
9258         (class vfwnmacc_frm): Ditto.
9259         (class vfwmsac_frm): Ditto.
9260         (class vfwnmsac_frm): Ditto.
9261         (class unop_frm): Ditto.
9262         (class vfrec7_frm): Ditto.
9263         (class binop): Add frm_op_type template arg.
9264         (class unop): Ditto.
9265         (class widen_binop): Ditto.
9266         (class widen_binop_fp): Ditto.
9267         (class reverse_binop): Ditto.
9268         (class vfmacc): Ditto.
9269         (class vfnmsac): Ditto.
9270         (class vfmadd): Ditto.
9271         (class vfnmsub): Ditto.
9272         (class vfnmacc): Ditto.
9273         (class vfmsac): Ditto.
9274         (class vfnmadd): Ditto.
9275         (class vfmsub): Ditto.
9276         (class vfwmacc): Ditto.
9277         (class vfwnmacc): Ditto.
9278         (class vfwmsac): Ditto.
9279         (class vfwnmsac): Ditto.
9280         (class float_misc): Ditto.
9282 2023-08-24  Andrew Pinski  <apinski@marvell.com>
9284         PR tree-optimization/111109
9285         * match.pd (ior(cond,cond), ior(vec_cond,vec_cond)):
9286         Add check to make sure cmp and icmp are inverse.
9288 2023-08-24  Andrew Pinski  <apinski@marvell.com>
9290         PR tree-optimization/95929
9291         * match.pd (convert?(-a)): New pattern
9292         for 1bit integer types.
9294 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
9296         Revert:
9297         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
9299         * common/config/i386/cpuinfo.h (get_available_features):
9300         Add avx10_set and version and detect avx10.1.
9301         (cpu_indicator_init): Handle avx10.1-512.
9302         * common/config/i386/i386-common.cc
9303         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
9304         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
9305         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
9306         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
9307         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
9308         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
9309         -mavx10.1-512.
9310         * common/config/i386/i386-cpuinfo.h (enum processor_features):
9311         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
9312         FEATURE_AVX10_512BIT.
9313         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
9314         AVX10_512BIT, AVX10_1 and AVX10_1_512.
9315         * config/i386/constraints.md (Yk): Add AVX10_1.
9316         (Yv): Ditto.
9317         (k): Ditto.
9318         * config/i386/cpuid.h (bit_AVX10): New.
9319         (bit_AVX10_256): Ditto.
9320         (bit_AVX10_512): Ditto.
9321         * config/i386/i386-c.cc (ix86_target_macros_internal):
9322         Define AVX10_512BIT and AVX10_1.
9323         * config/i386/i386-isa.def
9324         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
9325         (AVX10_1): Add DEF_PTA(AVX10_1).
9326         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
9327         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
9328         and avx10.1-512.
9329         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
9330         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
9331         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
9332         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
9333         (ix86_conditional_register_usage): Ditto.
9334         (ix86_hard_regno_mode_ok): Ditto.
9335         (ix86_rtx_costs): Ditto.
9336         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
9337         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
9338         -mavx10.1-512.
9339         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
9340         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
9341         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
9342         and avx10.1-512.
9344 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
9346         Revert:
9347         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
9349         * common/config/i386/i386-common.cc
9350         (ix86_check_avx10): New function to check isa_flags and
9351         isa_flags_explicit to emit warning when AVX10 is enabled
9352         by "-m" option.
9353         (ix86_check_avx512):  New function to check isa_flags and
9354         isa_flags_explicit to emit warning when AVX512 is enabled
9355         by "-m" option.
9356         (ix86_handle_option): Do not change the flags when warning
9357         is emitted.
9358         * config/i386/driver-i386.cc (host_detect_local_cpu):
9359         Do not append -mno-avx10.1 for -march=native.
9361 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
9363         Revert:
9364         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
9366         * common/config/i386/i386-common.cc
9367         (ix86_check_avx10_vector_width): New function to check isa_flags
9368         to emit a warning when there is a conflict in AVX10 options for
9369         vector width.
9370         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
9371         * config/i386/driver-i386.cc (host_detect_local_cpu):
9372         Do not append -mno-avx10-max-512bit for -march=native.
9374 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
9376         Revert:
9377         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
9379         * config/i386/avx512vldqintrin.h: Remove target attribute.
9380         * config/i386/i386-builtin.def (BDESC):
9381         Add OPTION_MASK_ISA2_AVX10_1.
9382         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
9383         * config/i386/i386-expand.cc
9384         (ix86_check_builtin_isa_match): Ditto.
9385         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
9386         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
9387         and avx10_1_or_avx512vl.
9388         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
9389         (VF1_128_256VLDQ_AVX10_1): Ditto.
9390         (VI8_AVX512VLDQ_AVX10_1): Ditto.
9391         (<sse>_andnot<mode>3<mask_name>):
9392         Add TARGET_AVX10_1 and change isa attr from avx512dq to
9393         avx10_1_or_avx512dq.
9394         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
9395         avx512vl to avx10_1_or_avx512vl.
9396         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
9397         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
9398         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
9399         Ditto.
9400         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
9401         Ditto.
9402         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
9403         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
9404         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
9405         Add TARGET_AVX10_1.
9406         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
9407         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
9408         Remove target check.
9409         (avx512dq_mul<mode>3<mask_name>): Ditto.
9410         (*avx512dq_mul<mode>3<mask_name>): Ditto.
9411         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
9412         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
9413         Remove target check.
9414         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
9415         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
9416         Remove target check.
9417         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
9418         (mask_avx512vl_condition): Ditto.
9419         (mask): Ditto.
9421 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
9423         Revert:
9424         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
9426         * config/i386/avx512vldqintrin.h: Remove target attribute.
9427         * config/i386/i386-builtin.def (BDESC):
9428         Add OPTION_MASK_ISA2_AVX10_1.
9429         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
9430         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
9431         (VI48_AVX512VLDQ_AVX10_1): Ditto.
9432         (VF2_AVX512VL): Remove.
9433         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
9434         Add TARGET_AVX10_1.
9435         (*<code><mode>3<mask_name>): Change isa attribute to
9436         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
9437         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
9438         to avx10_1_or_avx512vl.
9439         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
9440         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
9441         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
9442         Add TARGET_AVX10_1.
9443         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
9444         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
9445         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
9446         Add TARGET_AVX10_1.
9447         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
9448         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
9449         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
9450         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
9451         (float<floatunssuffix>v4div4sf2<mask_name>):
9452         Add TARGET_AVX10_1.
9453         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
9454         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
9455         (float<floatunssuffix>v2div2sf2): Ditto.
9456         (float<floatunssuffix>v2div2sf2_mask): Ditto.
9457         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
9458         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
9459         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
9460         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
9461         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
9462         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
9463         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
9464         Change when constraint is enabled.
9466 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
9468         Revert:
9469         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
9471         * config/i386/avx512vldqintrin.h: Remove target attribute.
9472         * config/i386/i386-builtin.def (BDESC):
9473         Add OPTION_MASK_ISA2_AVX10_1.
9474         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
9475         (VFH_AVX512VLDQ_AVX10_1): Ditto.
9476         (VF1_AVX512VLDQ_AVX10_1): Ditto.
9477         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
9478         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
9479         (vec_pack<floatprefix>_float_<mode>): Change iterator to
9480         VI8_AVX512VLDQ_AVX10_1. Remove target check.
9481         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
9482         VF1_AVX512VLDQ_AVX10_1. Remove target check.
9483         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
9484         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
9485         (avx512vl_vextractf128<mode>): Change iterator to
9486         VI48F_256_DQVL_AVX10_1. Remove target check.
9487         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
9488         (vec_extract_hi_<mode>): Ditto.
9489         (avx512vl_vinsert<mode>): Ditto.
9490         (vec_set_lo_<mode><mask_name>): Ditto.
9491         (vec_set_hi_<mode><mask_name>): Ditto.
9492         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
9493         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
9494         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
9495         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
9496         * config/i386/subst.md (mask_avx512dq_condition): Add
9497         TARGET_AVX10_1.
9498         (mask_scalar_merge): Ditto.
9500 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
9502         Revert:
9503         2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
9505         PR target/111051
9506         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
9507         disabled.
9509 2023-08-24  Richard Biener  <rguenther@suse.de>
9511         PR debug/111080
9512         * dwarf2out.cc (prune_unused_types_walk): Handle
9513         DW_TAG_restrict_type, DW_TAG_shared_type, DW_TAG_atomic_type,
9514         DW_TAG_immutable_type, DW_TAG_coarray_type, DW_TAG_unspecified_type
9515         and DW_TAG_dynamic_type as to only output them when referenced.
9517 2023-08-24  liuhongt  <hongtao.liu@intel.com>
9519         * config/i386/i386.cc (ix86_invalid_conversion): Adjust GCC
9520         V13 to GCC 13.1.
9522 2023-08-24  liuhongt  <hongtao.liu@intel.com>
9524         * common/config/i386/i386-common.cc (processor_names): Add new
9525         member graniterapids-s and arrowlake-s.
9526         * config/i386/i386-options.cc (processor_alias_table): Update
9527         table with PROCESSOR_ARROWLAKE_S and
9528         PROCESSOR_GRANITERAPIDS_D.
9529         (m_GRANITERAPID_D): New macro.
9530         (m_ARROWLAKE_S): Ditto.
9531         (m_CORE_AVX512): Add m_GRANITERAPIDS_D.
9532         (processor_cost_table): Add icelake_cost for
9533         PROCESSOR_GRANITERAPIDS_D and alderlake_cost for
9534         PROCESSOR_ARROWLAKE_S.
9535         * config/i386/x86-tune.def: Hanlde m_ARROWLAKE_S same as
9536         m_ARROWLAKE.
9537         * config/i386/i386.h (enum processor_type): Add new member
9538         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S.
9539         * config/i386/i386-c.cc (ix86_target_macros_internal): Handle
9540         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S
9542 2023-08-23  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
9544         * lra-eliminations.cc (eliminate_regs_in_insn): Use equivalences to
9545         to help simplify code further.
9547 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
9549         * gimple-range-fold.cc (fold_using_range::range_of_phi): Tweak output.
9550         * gimple-range-phi.cc (phi_group::phi_group): Remove unused members.
9551         Initialize using a range instead of value and edge.
9552         (phi_group::calculate_using_modifier): Use initializer value and
9553         process for relations after trying for iteration convergence.
9554         (phi_group::refine_using_relation): Use initializer range.
9555         (phi_group::dump): Rework the dump output.
9556         (phi_analyzer::process_phi): Allow multiple constant initilizers.
9557         Dump groups immediately as created.
9558         (phi_analyzer::dump): Tweak output.
9559         * gimple-range-phi.h (phi_group::phi_group): Adjust prototype.
9560         (phi_group::initial_value): Delete.
9561         (phi_group::refine_using_relation): Adjust prototype.
9562         (phi_group::m_initial_value): Delete.
9563         (phi_group::m_initial_edge): Delete.
9564         (phi_group::m_vr): Use int_range_max.
9565         * tree-vrp.cc (execute_ranger_vrp): Don't dump phi groups.
9567 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
9569         * gimple-range-phi.cc (phi_analyzer::operator[]): Return NULL if
9570         no group was created.
9571         (phi_analyzer::process_phi): Do not create groups of one phi node.
9573 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
9575         * target.def (gen_ccmp_first, gen_ccmp_next): Use rtx_code for
9576         CODE, CMP_CODE and BIT_CODE arguments.
9577         * config/aarch64/aarch64.cc (aarch64_gen_ccmp_first): Likewise.
9578         (aarch64_gen_ccmp_next): Likewise.
9579         * doc/tm.texi: Regenerated.
9581 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
9583         * coretypes.h (rtx_code): Add forward declaration.
9584         * rtl.h (rtx_code): Make compatible with forward declaration.
9586 2023-08-23  Uros Bizjak  <ubizjak@gmail.com>
9588         PR target/111010
9589         * config/i386/i386.md (*concat<any_or_plus:mode><dwi>3_3):
9590         Merge pattern from *concatditi3_3 and *concatsidi3_3 using
9591         DWIH mode iterator.  Disable (=&r,m,m) alternative for
9592         32-bit targets.
9593         (*concat<any_or_plus:mode><dwi>3_3): Disable (=&r,m,m)
9594         alternative for 32-bit targets.
9596 2023-08-23  Zhangjin Liao  <liaozhangjin@eswincomputing.com>
9598         * config/riscv/bitmanip.md (*<bitmanip_optab>disi2_sext): Add a more
9599         appropriate type attribute.
9601 2023-08-23  Lehua Ding  <lehua.ding@rivai.ai>
9603         * config/riscv/autovec-opt.md (*cond_abs<mode>): New combine pattern.
9604         (*copysign<mode>_neg): Ditto.
9605         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Adjust.
9606         (<optab><mode>2): Ditto.
9607         (cond_<optab><mode>): New.
9608         (cond_len_<optab><mode>): Ditto.
9609         * config/riscv/riscv-protos.h (enum insn_type): New.
9610         (expand_cond_len_unop): New helper func.
9611         * config/riscv/riscv-v.cc (shuffle_merge_patterns): Adjust.
9612         (expand_cond_len_unop): New helper func.
9614 2023-08-23  Jan Hubicka  <jh@suse.cz>
9616         * tree-ssa-loop-ch.cc (enum ch_decision): Fix comment.
9617         (should_duplicate_loop_header_p): Fix return value for static exits.
9618         (ch_base::copy_headers): Improve handling of ch_possible_zero_cost.
9620 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
9622         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
9623         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
9624         and update the final nest accordingly.
9626 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
9628         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
9629         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
9630         and update the final nest accordingly.
9632 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
9634         * tree-vect-stmts.cc (vectorizable_store): Remove vec oprnds,
9635         adjust vec result_chain, vec_oprnd with auto_vec, and adjust
9636         gvec_oprnds with auto_delete_vec.
9638 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9640         * config/riscv/riscv-vsetvl.cc
9641         (pass_vsetvl::global_eliminate_vsetvl_insn): Fix potential ICE.
9643 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9645         * config/riscv/riscv-vsetvl.cc (ge_sew_ratio_unavailable_p):
9646         Fix fuse rule bug.
9647         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Ditto.
9649 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9651         * config/riscv/vector.md: Add attribute.
9653 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9655         * config/riscv/riscv-vsetvl.cc (change_insn): Clang format.
9656         (vector_infos_manager::all_same_ratio_p): Ditto.
9657         (vector_infos_manager::all_same_avl_p): Ditto.
9658         (pass_vsetvl::refine_vsetvls): Ditto.
9659         (pass_vsetvl::cleanup_vsetvls): Ditto.
9660         (pass_vsetvl::commit_vsetvls): Ditto.
9661         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
9662         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
9663         (pass_vsetvl::compute_probabilities): Ditto.
9665 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9667         * config/riscv/t-riscv: Add riscv-vsetvl.def
9669 2023-08-22  Vineet Gupta  <vineetg@rivosinc.com>
9671         * config/riscv/riscv.opt: Add --param names
9672         riscv-autovec-preference and riscv-autovec-lmul
9674 2023-08-22  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
9676         * config/riscv/t-linux: Add MULTIARCH_DIRNAME.
9678 2023-08-22  Tobias Burnus  <tobias@codesourcery.com>
9680         * tree-core.h (enum omp_clause_defaultmap_kind): Add
9681         OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALL.
9682         * gimplify.cc (gimplify_scan_omp_clauses): Handle it.
9683         * tree-pretty-print.cc (dump_omp_clause): Likewise.
9685 2023-08-22  Jakub Jelinek  <jakub@redhat.com>
9687         PR c++/106652
9688         * doc/extend.texi (_Float<n>): Drop obsolete sentence that the
9689         types aren't supported in C++.
9691 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9693         * doc/md.texi: Add LEN_FOLD_EXTRACT_LAST pattern.
9694         * internal-fn.cc (fold_len_extract_direct): Ditto.
9695         (expand_fold_len_extract_optab_fn): Ditto.
9696         (direct_fold_len_extract_optab_supported_p): Ditto.
9697         * internal-fn.def (LEN_FOLD_EXTRACT_LAST): Ditto.
9698         * optabs.def (OPTAB_D): Ditto.
9700 2023-08-22  Richard Biener  <rguenther@suse.de>
9702         * tree-vect-stmts.cc (vectorizable_store): Do not bump
9703         DR_GROUP_STORE_COUNT here.  Remove early out.
9704         (vect_transform_stmt): Only call vectorizable_store on
9705         the last element of an interleaving chain.
9707 2023-08-22  Richard Biener  <rguenther@suse.de>
9709         PR tree-optimization/94864
9710         PR tree-optimization/94865
9711         PR tree-optimization/93080
9712         * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..): New pattern
9713         for vector insertion from vector extraction.
9715 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9716             Kewen.Lin  <linkw@linux.ibm.com>
9718         * tree-vect-loop.cc (vect_verify_loop_lens): Add exists check.
9719         (vectorizable_live_operation): Add live vectorization for length loop
9720         control.
9722 2023-08-22  David Malcolm  <dmalcolm@redhat.com>
9724         PR analyzer/105899
9725         * doc/invoke.texi: Remove -Wanalyzer-unterminated-string.
9727 2023-08-22  Pan Li  <pan2.li@intel.com>
9729         * config/riscv/riscv-vector-builtins-bases.cc
9730         (vfwredusum_frm_obj): New declaration.
9731         (BASE): Ditto.
9732         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
9733         * config/riscv/riscv-vector-builtins-functions.def
9734         (vfwredusum_frm): New intrinsic function def.
9736 2023-08-21  David Faust  <david.faust@oracle.com>
9738         * config/bpf/bpf.md (neg): Second operand must be a register.
9740 2023-08-21  Edwin Lu  <ewlu@rivosinc.com>
9742         * config/riscv/bitmanip.md: Added bitmanip type to insns
9743         that are missing types.
9745 2023-08-21  Jeff Law  <jlaw@ventanamicro.com>
9747         * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Avoid extraenous
9748         newline.
9750 2023-08-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
9752         * config/aarch64/falkor-tag-collision-avoidance.cc (dump_insn_list):
9753         Fix format specifier.
9755 2023-08-21  Aldy Hernandez  <aldyh@redhat.com>
9757         * value-range.cc (frange::union_nans): Return false if nothing
9758         changed.
9759         (range_tests_floats): New test.
9761 2023-08-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
9763         PR tree-optimization/111048
9764         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): Set arg_npatterns
9765         correctly.
9766         (fold_vec_perm_cst): Remove workaround and again call
9767         valid_mask_fold_vec_perm_cst_p for both VLS and VLA vectors.
9768         (test_fold_vec_perm_cst::test_nunits_min_4): Add test-case.
9770 2023-08-21  Richard Biener  <rguenther@suse.de>
9772         PR tree-optimization/111082
9773         * tree-vect-slp.cc (vectorize_slp_instance_root_stmt): Only
9774         pun operations that can overflow.
9776 2023-08-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9778         * lcm.cc (compute_antinout_edge): Export as global use.
9779         (compute_earliest): Ditto.
9780         (compute_rev_insert_delete): Ditto.
9781         * lcm.h (compute_antinout_edge): Ditto.
9782         (compute_earliest): Ditto.
9784 2023-08-21  Richard Biener  <rguenther@suse.de>
9786         PR tree-optimization/111070
9787         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check we have
9788         an SSA name before checking SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
9790 2023-08-21  Andrew Pinski  <apinski@marvell.com>
9792         PR tree-optimization/111002
9793         * match.pd (view_convert(vec_cond(a,b,c))): New pattern.
9795 2023-08-21  liuhongt  <hongtao.liu@intel.com>
9797         * common/config/i386/cpuinfo.h (get_intel_cpu): Detect
9798         Alderlake-N.
9799         * common/config/i386/i386-common.cc (alias_table): Support
9800         -march=gracemont as an alias of -march=alderlake.
9802 2023-08-20  Uros Bizjak  <ubizjak@gmail.com>
9804         * config/i386/i386-expand.cc (ix86_expand_sse_extend): Use ops[1]
9805         instead of src in the call to ix86_expand_sse_cmp.
9806         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Do not
9807         force operands[1] to a register.
9808         (<any_extend:insn>v4hiv4si2): Ditto.
9809         (<any_extend:insn>v2siv2di2): Ditto.
9811 2023-08-20  Andrew Pinski  <apinski@marvell.com>
9813         PR tree-optimization/111006
9814         PR tree-optimization/110986
9815         * match.pd: (op(vec_cond(a,b,c))): Handle convert for op.
9817 2023-08-20  Eric Gallager  <egallager@gcc.gnu.org>
9819         PR target/90835
9820         * Makefile.in: improve error message when /usr/include is
9821         missing
9823 2023-08-19  Tobias Burnus  <tobias@codesourcery.com>
9825         PR middle-end/111017
9826         * omp-expand.cc (expand_omp_for_init_vars): Pass after=true
9827         to expand_omp_build_cond for 'factor != 0' condition, resulting
9828         in pre-r12-5295-g47de0b56ee455e code for the gimple insert.
9830 2023-08-19  Guo Jie  <guojie@loongson.cn>
9831             Lulu Cheng  <chenglulu@loongson.cn>
9833         * config/loongarch/t-loongarch: Add loongarch-driver.h into
9834         TM_H. Add loongarch-def.h and loongarch-tune.h into
9835         OPTIONS_H_EXTRA.
9837 2023-08-18  Uros Bizjak  <ubizjak@gmail.com>
9839         PR target/111023
9840         * config/i386/i386-expand.cc (ix86_split_mmx_punpck):
9841         Also handle V2QImode.
9842         (ix86_expand_sse_extend): New function.
9843         * config/i386/i386-protos.h (ix86_expand_sse_extend): New prototype.
9844         * config/i386/mmx.md (<any_extend:insn>v4qiv4hi2): Enable for
9845         TARGET_SSE2.  Expand through ix86_expand_sse_extend for !TARGET_SSE4_1.
9846         (<any_extend:insn>v2hiv2si2): Ditto.
9847         (<any_extend:insn>v2qiv2hi2): Ditto.
9848         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Ditto.
9849         (<any_extend:insn>v4hiv4si2): Ditto.
9850         (<any_extend:insn>v2siv2di2): Ditto.
9852 2023-08-18  Aldy Hernandez  <aldyh@redhat.com>
9854         PR ipa/110753
9855         * value-range.cc (irange::union_bitmask): Return FALSE if updated
9856         bitmask is semantically equivalent to the original mask.
9857         (irange::intersect_bitmask): Same.
9858         (irange::get_bitmask): Add comment.
9860 2023-08-18  Richard Biener  <rguenther@suse.de>
9862         PR tree-optimization/111019
9863         * tree-ssa-loop-im.cc (gather_mem_refs_stmt): When canonicalizing
9864         also scrap base and offset in case the ref is indirect.
9866 2023-08-18  Jose E. Marchesi  <jose.marchesi@oracle.com>
9868         * config/bpf/bpf.opt (mframe-limit): Set default to 32767.
9870 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
9872         PR bootstrap/111021
9873         * Makefile.in (TM_P_H): Add $(TREE_H) as dependence.
9875 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
9877         * tree-vect-stmts.cc (vect_build_scatter_store_calls): New, factor
9878         out from ...
9879         (vectorizable_store): ... here.
9881 2023-08-18  Richard Biener  <rguenther@suse.de>
9883         PR tree-optimization/111048
9884         * fold-const.cc (fold_vec_perm_cst): Check for non-VLA
9885         vectors first.
9887 2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
9889         PR target/111051
9890         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
9891         disabled.
9893 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
9895         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
9896         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
9897         and update the final nest accordingly.
9899 2023-08-18  Andrew Pinski  <apinski@marvell.com>
9901         * doc/md.texi (Standard patterns): Document cond_neg, cond_one_cmpl,
9902         cond_len_neg and cond_len_one_cmpl.
9904 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
9906         * config/riscv/iterators.md (TARGET_HARD_FLOAT || TARGET_ZFINX): New.
9907         * config/riscv/pic.md (*local_pic_load<ANYF:mode>): Change ANYF.
9908         (*local_pic_load<ANYLSF:mode>): To ANYLSF.
9909         (*local_pic_load_32d<ANYF:mode>): Ditto.
9910         (*local_pic_load_32d<ANYLSF:mode>): Ditto.
9911         (*local_pic_store<ANYF:mode>): Ditto.
9912         (*local_pic_store<ANYLSF:mode>): Ditto.
9913         (*local_pic_store_32d<ANYF:mode>): Ditto.
9914         (*local_pic_store_32d<ANYLSF:mode>): Ditto.
9916 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
9917             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
9919         * config/riscv/predicates.md (vector_const_0_operand): New.
9920         * config/riscv/vector.md (*pred_broadcast<mode>_zero): Ditto.
9922 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
9924         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion):
9925         Forbidden.
9927 2023-08-17  Andrew MacLeod  <amacleod@redhat.com>
9929         PR tree-optimization/111009
9930         * range-op.cc (operator_addr_expr::op1_range): Be more restrictive.
9932 2023-08-17  Vladimir N. Makarov  <vmakarov@redhat.com>
9934         * lra-spills.cc (assign_stack_slot_num_and_sort_pseudos): Moving
9935         slots_num initialization from here ...
9936         (lra_spill): ... to here before the 1st call of
9937         assign_stack_slot_num_and_sort_pseudos.  Add the 2nd call after
9938         fp->sp elimination.
9940 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
9942         PR c/106537
9943         * doc/invoke.texi (Option Summary): Mention
9944         -Wcompare-distinct-pointer-types under `Warning Options'.
9945         (Warning Options): Document -Wcompare-distinct-pointer-types.
9947 2023-08-17  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
9949         * recog.cc (memory_address_addr_space_p): Mark possibly unused
9950         argument as unused.
9952 2023-08-17  Richard Biener  <rguenther@suse.de>
9954         PR tree-optimization/111039
9955         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for
9956         SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
9958 2023-08-17  Alex Coplan  <alex.coplan@arm.com>
9960         * doc/rtl.texi: Fix up sample code for RTL-SSA insn changes.
9962 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
9964         PR target/111046
9965         * config/bpf/bpf.cc (bpf_attribute_table): Add entry for the
9966         `naked' function attribute.
9967         (bpf_warn_func_return): New function.
9968         (TARGET_WARN_FUNC_RETURN): Define.
9969         (bpf_expand_prologue): Add preventive comment.
9970         (bpf_expand_epilogue): Likewise.
9971         * doc/extend.texi (BPF Function Attributes): Document the `naked'
9972         function attribute.
9974 2023-08-17  Richard Biener  <rguenther@suse.de>
9976         * tree-vect-slp.cc (vect_slp_check_for_roots): Use
9977         !needs_fold_left_reduction_p to decide whether we can
9978         handle the reduction with association.
9979         (vectorize_slp_instance_root_stmt): For TYPE_OVERFLOW_UNDEFINED
9980         reductions perform all arithmetic in an unsigned type.
9982 2023-08-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9984         * configure.ac (gcc_cv_ld64_version): Allow for dyld in ld -v
9985         output.
9986         * configure: Regenerate.
9988 2023-08-17  Pan Li  <pan2.li@intel.com>
9990         * config/riscv/riscv-vector-builtins-bases.cc
9991         (widen_freducop): Add frm_opt_type template arg.
9992         (vfwredosum_frm_obj): New declaration.
9993         (BASE): Ditto.
9994         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
9995         * config/riscv/riscv-vector-builtins-functions.def
9996         (vfwredosum_frm): New intrinsic function def.
9998 2023-08-17  Pan Li  <pan2.li@intel.com>
10000         * config/riscv/riscv-vector-builtins-bases.cc
10001         (vfredosum_frm_obj): New declaration.
10002         (BASE): Ditto.
10003         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10004         * config/riscv/riscv-vector-builtins-functions.def
10005         (vfredosum_frm): New intrinsic function def.
10007 2023-08-17  Pan Li  <pan2.li@intel.com>
10009         * config/riscv/riscv-vector-builtins-bases.cc
10010         (class freducop): Add frm_op_type template arg.
10011         (vfredusum_frm_obj): New declaration.
10012         (BASE): Ditto.
10013         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10014         * config/riscv/riscv-vector-builtins-functions.def
10015         (vfredusum_frm): New intrinsic function def.
10016         * config/riscv/riscv-vector-builtins-shapes.cc
10017         (struct reduc_alu_frm_def): New class for frm shape.
10018         (SHAPE): New declaration.
10019         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
10021 2023-08-17  Pan Li  <pan2.li@intel.com>
10023         * config/riscv/riscv-vector-builtins-bases.cc
10024         (class vfncvt_f): Add frm_op_type template arg.
10025         (vfncvt_f_frm_obj): New declaration.
10026         (BASE): Ditto.
10027         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10028         * config/riscv/riscv-vector-builtins-functions.def
10029         (vfncvt_f_frm): New intrinsic function def.
10031 2023-08-17  Pan Li  <pan2.li@intel.com>
10033         * config/riscv/riscv-vector-builtins-bases.cc
10034         (vfncvt_xu_frm_obj): New declaration.
10035         (BASE): Ditto.
10036         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10037         * config/riscv/riscv-vector-builtins-functions.def
10038         (vfncvt_xu_frm): New intrinsic function def.
10040 2023-08-17  Pan Li  <pan2.li@intel.com>
10042         * config/riscv/riscv-vector-builtins-bases.cc
10043         (class vfncvt_x): Add frm_op_type template arg.
10044         (BASE): New declaration.
10045         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10046         * config/riscv/riscv-vector-builtins-functions.def
10047         (vfncvt_x_frm): New intrinsic function def.
10048         * config/riscv/riscv-vector-builtins-shapes.cc
10049         (struct narrow_alu_frm_def): New shape function for frm.
10050         (SHAPE): New declaration.
10051         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
10053 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
10055         * config/i386/avx512vldqintrin.h: Remove target attribute.
10056         * config/i386/i386-builtin.def (BDESC):
10057         Add OPTION_MASK_ISA2_AVX10_1.
10058         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
10059         (VFH_AVX512VLDQ_AVX10_1): Ditto.
10060         (VF1_AVX512VLDQ_AVX10_1): Ditto.
10061         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
10062         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
10063         (vec_pack<floatprefix>_float_<mode>): Change iterator to
10064         VI8_AVX512VLDQ_AVX10_1. Remove target check.
10065         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
10066         VF1_AVX512VLDQ_AVX10_1. Remove target check.
10067         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
10068         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
10069         (avx512vl_vextractf128<mode>): Change iterator to
10070         VI48F_256_DQVL_AVX10_1. Remove target check.
10071         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
10072         (vec_extract_hi_<mode>): Ditto.
10073         (avx512vl_vinsert<mode>): Ditto.
10074         (vec_set_lo_<mode><mask_name>): Ditto.
10075         (vec_set_hi_<mode><mask_name>): Ditto.
10076         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
10077         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
10078         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
10079         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
10080         * config/i386/subst.md (mask_avx512dq_condition): Add
10081         TARGET_AVX10_1.
10082         (mask_scalar_merge): Ditto.
10084 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
10086         * config/i386/avx512vldqintrin.h: Remove target attribute.
10087         * config/i386/i386-builtin.def (BDESC):
10088         Add OPTION_MASK_ISA2_AVX10_1.
10089         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
10090         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
10091         (VI48_AVX512VLDQ_AVX10_1): Ditto.
10092         (VF2_AVX512VL): Remove.
10093         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
10094         Add TARGET_AVX10_1.
10095         (*<code><mode>3<mask_name>): Change isa attribute to
10096         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
10097         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
10098         to avx10_1_or_avx512vl.
10099         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
10100         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
10101         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
10102         Add TARGET_AVX10_1.
10103         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
10104         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
10105         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
10106         Add TARGET_AVX10_1.
10107         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
10108         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
10109         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
10110         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
10111         (float<floatunssuffix>v4div4sf2<mask_name>):
10112         Add TARGET_AVX10_1.
10113         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
10114         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
10115         (float<floatunssuffix>v2div2sf2): Ditto.
10116         (float<floatunssuffix>v2div2sf2_mask): Ditto.
10117         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
10118         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
10119         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
10120         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
10121         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
10122         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
10123         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
10124         Change when constraint is enabled.
10126 2023-08-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10128         PR target/111037
10129         * config/riscv/riscv-vsetvl.cc (float_insn_valid_sew_p): New function.
10130         (second_sew_less_than_first_sew_p): Fix bug.
10131         (first_sew_less_than_second_sew_p): Ditto.
10133 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
10135         * config/i386/avx512vldqintrin.h: Remove target attribute.
10136         * config/i386/i386-builtin.def (BDESC):
10137         Add OPTION_MASK_ISA2_AVX10_1.
10138         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
10139         * config/i386/i386-expand.cc
10140         (ix86_check_builtin_isa_match): Ditto.
10141         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
10142         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
10143         and avx10_1_or_avx512vl.
10144         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
10145         (VF1_128_256VLDQ_AVX10_1): Ditto.
10146         (VI8_AVX512VLDQ_AVX10_1): Ditto.
10147         (<sse>_andnot<mode>3<mask_name>):
10148         Add TARGET_AVX10_1 and change isa attr from avx512dq to
10149         avx10_1_or_avx512dq.
10150         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
10151         avx512vl to avx10_1_or_avx512vl.
10152         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
10153         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
10154         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
10155         Ditto.
10156         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
10157         Ditto.
10158         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
10159         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
10160         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
10161         Add TARGET_AVX10_1.
10162         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
10163         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
10164         Remove target check.
10165         (avx512dq_mul<mode>3<mask_name>): Ditto.
10166         (*avx512dq_mul<mode>3<mask_name>): Ditto.
10167         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
10168         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
10169         Remove target check.
10170         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
10171         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
10172         Remove target check.
10173         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
10174         (mask_avx512vl_condition): Ditto.
10175         (mask): Ditto.
10177 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
10179         * common/config/i386/i386-common.cc
10180         (ix86_check_avx10_vector_width): New function to check isa_flags
10181         to emit a warning when there is a conflict in AVX10 options for
10182         vector width.
10183         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
10184         * config/i386/driver-i386.cc (host_detect_local_cpu):
10185         Do not append -mno-avx10-max-512bit for -march=native.
10187 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
10189         * common/config/i386/i386-common.cc
10190         (ix86_check_avx10): New function to check isa_flags and
10191         isa_flags_explicit to emit warning when AVX10 is enabled
10192         by "-m" option.
10193         (ix86_check_avx512):  New function to check isa_flags and
10194         isa_flags_explicit to emit warning when AVX512 is enabled
10195         by "-m" option.
10196         (ix86_handle_option): Do not change the flags when warning
10197         is emitted.
10198         * config/i386/driver-i386.cc (host_detect_local_cpu):
10199         Do not append -mno-avx10.1 for -march=native.
10201 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
10203         * common/config/i386/cpuinfo.h (get_available_features):
10204         Add avx10_set and version and detect avx10.1.
10205         (cpu_indicator_init): Handle avx10.1-512.
10206         * common/config/i386/i386-common.cc
10207         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
10208         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
10209         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
10210         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
10211         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
10212         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
10213         -mavx10.1-512.
10214         * common/config/i386/i386-cpuinfo.h (enum processor_features):
10215         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
10216         FEATURE_AVX10_512BIT.
10217         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
10218         AVX10_512BIT, AVX10_1 and AVX10_1_512.
10219         * config/i386/constraints.md (Yk): Add AVX10_1.
10220         (Yv): Ditto.
10221         (k): Ditto.
10222         * config/i386/cpuid.h (bit_AVX10): New.
10223         (bit_AVX10_256): Ditto.
10224         (bit_AVX10_512): Ditto.
10225         * config/i386/i386-c.cc (ix86_target_macros_internal):
10226         Define AVX10_512BIT and AVX10_1.
10227         * config/i386/i386-isa.def
10228         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
10229         (AVX10_1): Add DEF_PTA(AVX10_1).
10230         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
10231         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
10232         and avx10.1-512.
10233         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
10234         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
10235         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
10236         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
10237         (ix86_conditional_register_usage): Ditto.
10238         (ix86_hard_regno_mode_ok): Ditto.
10239         (ix86_rtx_costs): Ditto.
10240         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
10241         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
10242         -mavx10.1-512.
10243         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
10244         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
10245         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
10246         and avx10.1-512.
10248 2023-08-17  Sergei Trofimovich  <siarheit@google.com>
10250         * flag-types.h (vrp_mode): Remove unused.
10252 2023-08-17  Yanzhang Wang  <yanzhang.wang@intel.com>
10254         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Use
10255         CONSTM1_RTX.
10257 2023-08-17  Andrew Pinski  <apinski@marvell.com>
10259         * internal-fn.def (COND_NOT): New internal function.
10260         * match.pd (UNCOND_UNARY, COND_UNARY): Add bit_not/not
10261         to the lists.
10262         (`vec (a ? -1 : 0) ^ b`): New pattern to convert
10263         into conditional not.
10264         * optabs.def (cond_one_cmpl): New optab.
10265         (cond_len_one_cmpl): Likewise.
10267 2023-08-16  Surya Kumari Jangala  <jskumari@linux.ibm.com>
10269         PR rtl-optimization/110254
10270         * ira-color.cc (improve_allocation): Update array
10271         allocated_hard_reg_p.
10273 2023-08-16  Vladimir N. Makarov  <vmakarov@redhat.com>
10275         * lra-int.h (lra_update_fp2sp_elimination): Change the prototype.
10276         * lra-eliminations.cc (spill_pseudos): Record spilled pseudos.
10277         (lra_update_fp2sp_elimination): Ditto.
10278         (update_reg_eliminate): Adjust spill_pseudos call.
10279         * lra-spills.cc (lra_spill): Assign stack slots to pseudos spilled
10280         in lra_update_fp2sp_elimination.
10282 2023-08-16  Richard Ball  <richard.ball@arm.com>
10284         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A720 CPU.
10285         * config/aarch64/aarch64-tune.md: Regenerate.
10286         * doc/invoke.texi: Document Cortex-A720 CPU.
10288 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
10290         * config/riscv/autovec.md (<u>avg<v_double_trunc>3_floor):
10291         Implement expander.
10292         (<u>avg<v_double_trunc>3_ceil): Ditto.
10293         * config/riscv/vector-iterators.md (ashiftrt): New iterator.
10294         (ASHIFTRT): Ditto.
10296 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
10298         * internal-fn.cc (vec_extract_direct): Change type argument
10299         numbers.
10300         (expand_vec_extract_optab_fn): Call convert_optab_fn.
10301         (direct_vec_extract_optab_supported_p): Use
10302         convert_optab_supported_p.
10304 2023-08-16  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
10305             Richard Sandiford  <richard.sandiford@arm.com>
10307         * fold-const.cc (INCLUDE_ALGORITHM): Add Include.
10308         (valid_mask_for_fold_vec_perm_cst_p): New function.
10309         (fold_vec_perm_cst): Likewise.
10310         (fold_vec_perm): Adjust assert and call fold_vec_perm_cst.
10311         (test_fold_vec_perm_cst): New namespace.
10312         (test_fold_vec_perm_cst::build_vec_cst_rand): New function.
10313         (test_fold_vec_perm_cst::validate_res): Likewise.
10314         (test_fold_vec_perm_cst::validate_res_vls): Likewise.
10315         (test_fold_vec_perm_cst::builder_push_elems): Likewise.
10316         (test_fold_vec_perm_cst::test_vnx4si_v4si): Likewise.
10317         (test_fold_vec_perm_cst::test_v4si_vnx4si): Likewise.
10318         (test_fold_vec_perm_cst::test_all_nunits): Likewise.
10319         (test_fold_vec_perm_cst::test_nunits_min_2): Likewise.
10320         (test_fold_vec_perm_cst::test_nunits_min_4): Likewise.
10321         (test_fold_vec_perm_cst::test_nunits_min_8): Likewise.
10322         (test_fold_vec_perm_cst::test_nunits_max_4): Likewise.
10323         (test_fold_vec_perm_cst::is_simple_vla_size): Likewise.
10324         (test_fold_vec_perm_cst::test): Likewise.
10325         (fold_const_cc_tests): Call test_fold_vec_perm_cst::test.
10327 2023-08-16  Pan Li  <pan2.li@intel.com>
10329         * config/riscv/riscv-vector-builtins-bases.cc
10330         (BASE): New declaration.
10331         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10332         * config/riscv/riscv-vector-builtins-functions.def
10333         (vfwcvt_xu_frm): New intrinsic function def.
10335 2023-08-16  Pan Li  <pan2.li@intel.com>
10337         * config/riscv/riscv-vector-builtins-bases.cc: Use explicit argument.
10339 2023-08-16  Pan Li  <pan2.li@intel.com>
10341         * config/riscv/riscv-vector-builtins-bases.cc
10342         (BASE): New declaration.
10343         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10344         * config/riscv/riscv-vector-builtins-functions.def
10345         (vfwcvt_x_frm): New intrinsic function def.
10347 2023-08-16  Pan Li  <pan2.li@intel.com>
10349         * config/riscv/riscv-vector-builtins-bases.cc (BASE): New declaration.
10350         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10351         * config/riscv/riscv-vector-builtins-functions.def
10352         (vfcvt_f_frm): New intrinsic function def.
10354 2023-08-16  Pan Li  <pan2.li@intel.com>
10356         * config/riscv/riscv-vector-builtins-bases.cc
10357         (BASE): New declaration.
10358         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10359         * config/riscv/riscv-vector-builtins-functions.def
10360         (vfcvt_xu_frm): New intrinsic function def..
10362 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
10364         PR target/110429
10365         * config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Skip vector
10366         extract when the element is 7 on BE while 8 on LE for byte or 3 on
10367         BE while 4 on LE for halfword.
10369 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
10371         PR target/106769
10372         * config/rs6000/vsx.md (expand vsx_extract_<mode>): Set it only
10373         for V8HI and V16QI.
10374         (vsx_extract_v4si): New expand for V4SI extraction.
10375         (vsx_extract_v4si_w1): New insn pattern for V4SI extraction on
10376         word 1 from BE order.
10377         (*mfvsrwz): New insn pattern for mfvsrwz.
10378         (*vsx_extract_<mode>_di_p9): Assert that it won't be generated on
10379         word 1 from BE order.
10380         (*vsx_extract_si): Remove.
10381         (*vsx_extract_v4si_w023): New insn and split pattern on word 0, 2,
10382         3 from BE order.
10384 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10386         * config/riscv/autovec.md (vec_mask_len_load_lanes<mode><vsingle>):
10387         New pattern.
10388         (vec_mask_len_store_lanes<mode><vsingle>): Ditto.
10389         * config/riscv/riscv-protos.h (expand_lanes_load_store): New function.
10390         * config/riscv/riscv-v.cc (get_mask_mode): Add tuple mask mode.
10391         (expand_lanes_load_store): New function.
10392         * config/riscv/vector-iterators.md: New iterator.
10394 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10396         * internal-fn.cc (internal_load_fn_p): Apply
10397         MASK_LEN_{LOAD_LANES,STORE_LANES} into vectorizer.
10398         (internal_store_fn_p): Ditto.
10399         (internal_fn_len_index): Ditto.
10400         (internal_fn_mask_index): Ditto.
10401         (internal_fn_stored_value_index): Ditto.
10402         * tree-vect-data-refs.cc (vect_store_lanes_supported): Ditto.
10403         (vect_load_lanes_supported): Ditto.
10404         * tree-vect-loop.cc: Ditto.
10405         * tree-vect-slp.cc (vect_slp_prefer_store_lanes_p): Ditto.
10406         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
10407         (get_group_load_store_type): Ditto.
10408         (vectorizable_store): Ditto.
10409         (vectorizable_load): Ditto.
10410         * tree-vectorizer.h (vect_store_lanes_supported): Ditto.
10411         (vect_load_lanes_supported): Ditto.
10413 2023-08-16  Pan Li  <pan2.li@intel.com>
10415         * config/riscv/riscv-vector-builtins-bases.cc
10416         (enum frm_op_type): New type for frm.
10417         (BASE): New declaration.
10418         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10419         * config/riscv/riscv-vector-builtins-functions.def
10420         (vfcvt_x_frm): New intrinsic function def.
10422 2023-08-16  liuhongt  <hongtao.liu@intel.com>
10424         * config/i386/i386-builtins.cc
10425         (ix86_vectorize_builtin_gather): Adjust for use_gather_8parts.
10426         * config/i386/i386-options.cc (parse_mtune_ctrl_str):
10427         Set/Clear tune features use_{gather,scatter}_{2parts, 4parts,
10428         8parts} for -mtune-crtl={,^}{use_gather,use_scatter}.
10429         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Adjust
10430         for use_scatter_8parts
10431         * config/i386/i386.h (TARGET_USE_GATHER): Rename to ..
10432         (TARGET_USE_GATHER_8PARTS): .. this.
10433         (TARGET_USE_SCATTER): Rename to ..
10434         (TARGET_USE_SCATTER_8PARTS): .. this.
10435         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Rename to
10436         (X86_TUNE_USE_GATHER_8PARTS): .. this.
10437         (X86_TUNE_USE_SCATTER): Rename to
10438         (X86_TUNE_USE_SCATTER_8PARTS): .. this.
10439         * config/i386/i386.opt: Add new options mgather, mscatter.
10441 2023-08-16  liuhongt  <hongtao.liu@intel.com>
10443         * config/i386/i386-options.cc (m_GDS): New macro.
10444         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't
10445         enable for m_GDS.
10446         (X86_TUNE_USE_GATHER_4PARTS): Ditto.
10447         (X86_TUNE_USE_GATHER): Ditto.
10449 2023-08-16  liuhongt  <hongtao.liu@intel.com>
10451         * config/i386/i386.md (movdf_internal): Generate vmovapd instead of
10452         vmovsd when moving DFmode between SSE_REGS.
10453         (movhi_internal): Generate vmovdqa instead of vmovsh when
10454         moving HImode between SSE_REGS.
10455         (mov<mode>_internal): Use vmovaps instead of vmovsh when
10456         moving HF/BFmode between SSE_REGS.
10458 2023-08-15  David Faust  <david.faust@oracle.com>
10460         * config/bpf/bpf.md (extendsisi2): Delete useless define_insn.
10462 2023-08-15  David Faust  <david.faust@oracle.com>
10464         PR target/111029
10465         * config/bpf/bpf.cc (bpf_print_register): Print 'w' registers
10466         for any mode 32-bits or smaller, not just SImode.
10468 2023-08-15  Martin Jambor  <mjambor@suse.cz>
10470         PR ipa/68930
10471         PR ipa/92497
10472         * ipa-prop.h (ipcp_get_aggregate_const): Declare.
10473         * ipa-prop.cc (ipcp_get_aggregate_const): New function.
10474         (ipcp_transform_function): Do not deallocate transformation info.
10475         * tree-ssa-sccvn.cc: Include alloc-pool.h, symbol-summary.h and
10476         ipa-prop.h.
10477         (vn_reference_lookup_2): When hitting default-def vuse, query
10478         IPA-CP transformation info for any known constants.
10480 2023-08-15  Chung-Lin Tang  <cltang@codesourcery.com>
10481             Thomas Schwinge  <thomas@codesourcery.com>
10483         * gimplify.cc (oacc_region_type_name): New function.
10484         (oacc_default_clause): If no 'default' clause appears on this
10485         compute construct, see if one appears on a lexically containing
10486         'data' construct.
10487         (gimplify_scan_omp_clauses): Upon OMP_CLAUSE_DEFAULT case, set
10488         ctx->oacc_default_clause_ctx to current context.
10490 2023-08-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10492         PR target/110989
10493         * config/riscv/predicates.md: Fix predicate.
10495 2023-08-15  Richard Biener  <rguenther@suse.de>
10497         * tree-vect-slp.cc (vect_analyze_slp_instance): Remove
10498         slp_inst_kind_ctor handling.
10499         (vect_analyze_slp): Simplify.
10500         (vect_build_slp_instance): Dump when we analyze a CTOR.
10501         (vect_slp_check_for_constructors): Rename to ...
10502         (vect_slp_check_for_roots): ... this.  Register a
10503         slp_root for CONSTRUCTORs instead of shoving them to
10504         the set of grouped stores.
10505         (vect_slp_analyze_bb_1): Adjust.
10507 2023-08-15  Richard Biener  <rguenther@suse.de>
10509         * tree-vectorizer.h (_slp_instance::remain_stmts): Change
10510         to ...
10511         (_slp_instance::remain_defs): ... this.
10512         (SLP_INSTANCE_REMAIN_STMTS): Rename to ...
10513         (SLP_INSTANCE_REMAIN_DEFS): ... this.
10514         (slp_root::remain): New.
10515         (slp_root::slp_root): Adjust.
10516         * tree-vect-slp.cc (vect_free_slp_instance): Adjust.
10517         (vect_build_slp_instance): Get extra remain parameter,
10518         adjust former handling of a cut off stmt.
10519         (vect_analyze_slp_instance): Adjust.
10520         (vect_analyze_slp): Likewise.
10521         (_bb_vec_info::~_bb_vec_info): Likewise.
10522         (vectorizable_bb_reduc_epilogue): Dump something if we fail.
10523         (vect_slp_check_for_constructors): Handle non-internal
10524         defs as remain defs of a reduction.
10525         (vectorize_slp_instance_root_stmt): Adjust.
10527 2023-08-15  Richard Biener  <rguenther@suse.de>
10529         * tree-ssa-loop-ivcanon.cc: Include tree-vectorizer.h
10530         (canonicalize_loop_induction_variables): Use find_loop_location.
10532 2023-08-15  Hans-Peter Nilsson  <hp@axis.com>
10534         PR bootstrap/111021
10535         * config/cris/cris-protos.h: Revert recent change.
10536         * config/cris/cris.cc (cris_legitimate_address_p): Remove
10537         code_helper unused parameter.
10538         (cris_legitimate_address_p_hook): New wrapper function.
10539         (TARGET_LEGITIMATE_ADDRESS_P): Change to
10540         cris_legitimate_address_p_hook.
10542 2023-08-15  Richard Biener  <rguenther@suse.de>
10544         PR tree-optimization/110963
10545         * tree-ssa-pre.cc (do_pre_regular_insertion): Also insert
10546         a PHI node when the expression is available on all edges
10547         and we insert at most one copy from a constant.
10549 2023-08-15  Richard Biener  <rguenther@suse.de>
10551         PR tree-optimization/110991
10552         * tree-ssa-loop-ivcanon.cc (constant_after_peeling): Handle
10553         VIEW_CONVERT_EXPR <op>, handle more simple IV-like SSA cycles
10554         that will end up constant.
10556 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
10558         PR bootstrap/111021
10559         * Makefile.in (RECOG_H): Add $(TREE_H) as dependence.
10561 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
10563         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
10564         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
10565         and update the final nest accordingly.
10567 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
10569         * tree-vect-stmts.cc (vectorizable_load): Remove some useless checks
10570         on VMAT_INVARIANT.
10572 2023-08-15  Pan Li  <pan2.li@intel.com>
10574         * mode-switching.cc (create_pre_exit): Add SET insn check.
10576 2023-08-15  Pan Li  <pan2.li@intel.com>
10578         * config/riscv/riscv-vector-builtins-bases.cc
10579         (class vfrec7_frm): New class for frm.
10580         (vfrec7_frm_obj): New declaration.
10581         (BASE): Ditto.
10582         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10583         * config/riscv/riscv-vector-builtins-functions.def
10584         (vfrec7_frm): New intrinsic function definition.
10585         * config/riscv/vector-iterators.md
10586         (VFMISC): Remove VFREC7.
10587         (misc_op): Ditto.
10588         (float_insn_type): Ditto.
10589         (VFMISC_FRM): New int iterator.
10590         (misc_frm_op): New op for frm.
10591         (float_frm_insn_type): New type for frm.
10592         * config/riscv/vector.md (@pred_<misc_frm_op><mode>):
10593         New pattern for misc frm.
10595 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
10597         * lra-constraints.cc (curr_insn_transform): Process output stack
10598         pointer reloads before emitting reload insns.
10600 2023-08-14  benjamin priour  <vultkayn@gcc.gnu.org>
10602         PR analyzer/110543
10603         * doc/invoke.texi: Add documentation of
10604         fanalyzer-show-events-in-system-headers
10606 2023-08-14  Jan Hubicka  <jh@suse.cz>
10608         PR gcov-profile/110988
10609         * tree-cfg.cc (fold_loop_internal_call): Avoid division by zero.
10611 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
10613         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
10614         Enable compressed builtins when ZC* extensions enabled.
10615         * config/riscv/riscv-shorten-memrefs.cc:
10616         Enable shorten_memrefs pass when ZC* extensions enabled.
10617         * config/riscv/riscv.cc (riscv_compressed_reg_p):
10618         Enable compressible registers when ZC* extensions enabled.
10619         (riscv_rtx_costs): Allow adjusting rtx costs when ZC* extensions enabled.
10620         (riscv_address_cost): Allow adjusting address cost when ZC* extensions enabled.
10621         (riscv_first_stack_step): Allow compression of the register saves
10622         without adding extra instructions.
10623         * config/riscv/riscv.h (FUNCTION_BOUNDARY): Adjusts function boundary
10624         to 16 bits when ZC* extensions enabled.
10626 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
10628         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): New extensions.
10629         * config/riscv/riscv-opts.h (MASK_ZCA): New mask.
10630         (MASK_ZCB): Ditto.
10631         (MASK_ZCE): Ditto.
10632         (MASK_ZCF): Ditto.
10633         (MASK_ZCD): Ditto.
10634         (MASK_ZCMP): Ditto.
10635         (MASK_ZCMT): Ditto.
10636         (TARGET_ZCA): New target.
10637         (TARGET_ZCB): Ditto.
10638         (TARGET_ZCE): Ditto.
10639         (TARGET_ZCF): Ditto.
10640         (TARGET_ZCD): Ditto.
10641         (TARGET_ZCMP): Ditto.
10642         (TARGET_ZCMT): Ditto.
10643         * config/riscv/riscv.opt: New target variable.
10645 2023-08-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10647         Revert:
10648         2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
10650         * genrecog.cc (print_nonbool_test): Fix type error of
10651         switch (SUBREG_BYTE (op))'.
10653 2023-08-14  Richard Biener  <rguenther@suse.de>
10655         * tree-cfg.cc (print_loop_info): Dump to 'file', not 'dump_file'.
10657 2023-08-14  Pan Li  <pan2.li@intel.com>
10659         * config/riscv/riscv-vector-builtins-bases.cc
10660         (class unop_frm): New class for frm.
10661         (vfsqrt_frm_obj): New declaration.
10662         (BASE): Ditto.
10663         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10664         * config/riscv/riscv-vector-builtins-functions.def
10665         (vfsqrt_frm): New intrinsic function definition.
10667 2023-08-14  Pan Li  <pan2.li@intel.com>
10669         * config/riscv/riscv-vector-builtins-bases.cc
10670         (class vfwnmsac_frm): New class for frm.
10671         (vfwnmsac_frm_obj): New declaration.
10672         (BASE): Ditto.
10673         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10674         * config/riscv/riscv-vector-builtins-functions.def
10675         (vfwnmsac_frm): New intrinsic function definition.
10677 2023-08-14  Pan Li  <pan2.li@intel.com>
10679         * config/riscv/riscv-vector-builtins-bases.cc
10680         (class vfwmsac_frm): New class for frm.
10681         (vfwmsac_frm_obj): New declaration.
10682         (BASE): Ditto.
10683         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10684         * config/riscv/riscv-vector-builtins-functions.def
10685         (vfwmsac_frm): New intrinsic function definition.
10687 2023-08-14  Pan Li  <pan2.li@intel.com>
10689         * config/riscv/riscv-vector-builtins-bases.cc
10690         (class vfwnmacc_frm): New class for frm.
10691         (vfwnmacc_frm_obj): New declaration.
10692         (BASE): Ditto.
10693         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10694         * config/riscv/riscv-vector-builtins-functions.def
10695         (vfwnmacc_frm): New intrinsic function definition.
10697 2023-08-14  Cui, Lili  <lili.cui@intel.com>
10699         * common/config/i386/cpuinfo.h (get_intel_cpu): Add model value 0xba
10700         to Raptorlake.
10702 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
10704         * config/mmix/predicates.md (mmix_address_operand): Use
10705         lra_in_progress, not reload_in_progress.
10707 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
10709         * config/mmix/mmix.cc: Re-enable LRA.
10711 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
10713         * config/mmix/predicates.md (frame_pointer_operand): Handle FP+offset
10714         when lra_in_progress.
10716 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
10718         * config/mmix/mmix.cc: Disable LRA for MMIX.
10720 2023-08-14  Pan Li  <pan2.li@intel.com>
10722         * config/riscv/riscv-vector-builtins-bases.cc
10723         (class vfwmacc_frm): New class for vfwmacc frm.
10724         (vfwmacc_frm_obj): New declaration.
10725         (BASE): Ditto.
10726         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10727         * config/riscv/riscv-vector-builtins-functions.def
10728         (vfwmacc_frm): Function definition for vfwmacc.
10729         * config/riscv/riscv-vector-builtins.cc
10730         (function_expander::use_widen_ternop_insn): Add frm support.
10732 2023-08-14  Pan Li  <pan2.li@intel.com>
10734         * config/riscv/riscv-vector-builtins-bases.cc
10735         (class vfnmsub_frm): New class for vfnmsub frm.
10736         (vfnmsub_frm): New declaration.
10737         (BASE): Ditto.
10738         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10739         * config/riscv/riscv-vector-builtins-functions.def
10740         (vfnmsub_frm): New function declaration.
10742 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
10744         * lra-constraints.cc (curr_insn_transform): Set done_p up and
10745         check it on true after processing output stack pointer reload.
10747 2023-08-12  Jakub Jelinek  <jakub@redhat.com>
10749         * Makefile.in (USER_H): Add stdckdint.h.
10750         * ginclude/stdckdint.h: New file.
10752 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10754         PR target/110994
10755         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Add TARGET_VETOR.
10757 2023-08-12  Patrick Palka  <ppalka@redhat.com>
10759         * tree-pretty-print.cc (dump_generic_node) <case TREE_VEC>:
10760         Delimit output with braces.
10762 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10764         PR target/110985
10765         * config/riscv/riscv-v.cc (expand_vec_series): Refactor the expander.
10767 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10769         * config/riscv/autovec.md: Add VLS CONST_VECTOR.
10770         * config/riscv/riscv.cc (riscv_const_insns): Ditto.
10771         * config/riscv/vector.md: Ditto.
10773 2023-08-11  David Malcolm  <dmalcolm@redhat.com>
10775         PR analyzer/105899
10776         * doc/analyzer.texi (__analyzer_get_strlen): New.
10777         * doc/invoke.texi: Add -Wanalyzer-unterminated-string.
10779 2023-08-11  Jeff Law  <jlaw@ventanamicro.com>
10781         * config/rx/rx.md (subdi3): Fix test for borrow.
10783 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10785         PR middle-end/110989
10786         * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype.
10787         (vectorizable_load): Ditto.
10789 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
10791         * config/bpf/bpf.md (allocate_stack): Define.
10792         * config/bpf/bpf.h (FIRST_PSEUDO_REGISTER): Make room for fake
10793         stack pointer register.
10794         (FIXED_REGISTERS): Adjust accordingly.
10795         (CALL_USED_REGISTERS): Likewise.
10796         (REG_CLASS_CONTENTS): Likewise.
10797         (REGISTER_NAMES): Likewise.
10798         * config/bpf/bpf.cc (bpf_compute_frame_layout): Do not reserve
10799         space for callee-saved registers.
10800         (bpf_expand_prologue): Do not save callee-saved registers in xbpf.
10801         (bpf_expand_epilogue): Do not restore callee-saved registers in
10802         xbpf.
10804 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
10806         * config/bpf/bpf.cc (bpf_function_arg_advance): Do not complain
10807         about too many arguments if function is always inlined.
10809 2023-08-11  Patrick Palka  <ppalka@redhat.com>
10811         * tree-pretty-print.cc (dump_generic_node) <case COMPONENT_REF>:
10812         Don't call component_ref_field_offset if the RHS isn't a decl.
10814 2023-08-11  John David Anglin  <danglin@gcc.gnu.org>
10816         PR bootstrap/110646
10817         * gensupport.cc(class conlist): Use strtol instead of std::stoi.
10819 2023-08-11  Vladimir N. Makarov  <vmakarov@redhat.com>
10821         * lra-constraints.cc (goal_alt_out_sp_reload_p): New flag.
10822         (process_alt_operands): Set the flag.
10823         (curr_insn_transform): Modify stack pointer offsets if output
10824         stack pointer reload is generated.
10826 2023-08-11  Joseph Myers  <joseph@codesourcery.com>
10828         * configure: Regenerate.
10830 2023-08-11  Richard Biener  <rguenther@suse.de>
10832         PR tree-optimization/110979
10833         * tree-vect-loop.cc (vectorizable_reduction): For
10834         FOLD_LEFT_REDUCTION without target support make sure
10835         we don't need to honor signed zeros and sign dependent rounding.
10837 2023-08-11  Richard Biener  <rguenther@suse.de>
10839         * tree-vect-slp.cc (vect_slp_region): Provide opt-info for all SLP
10840         subgraph entries.  Dump the used vector size based on the
10841         SLP subgraph entry root vector type.
10843 2023-08-11  Pan Li  <pan2.li@intel.com>
10845         * config/riscv/riscv-vector-builtins-bases.cc
10846         (class vfmsub_frm): New class for vfmsub frm.
10847         (vfmsub_frm): New declaration.
10848         (BASE): Ditto.
10849         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10850         * config/riscv/riscv-vector-builtins-functions.def
10851         (vfmsub_frm): New function declaration.
10853 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10855         * doc/md.texi: Add vec_mask_len_{load_lanes,store_lanes} patterns.
10856         * internal-fn.cc (expand_partial_load_optab_fn): Ditto.
10857         (expand_partial_store_optab_fn): Ditto.
10858         * internal-fn.def (MASK_LEN_LOAD_LANES): Ditto.
10859         (MASK_LEN_STORE_LANES): Ditto.
10860         * optabs.def (OPTAB_CD): Ditto.
10862 2023-08-11  Pan Li  <pan2.li@intel.com>
10864         * config/riscv/riscv-vector-builtins-bases.cc
10865         (class vfnmadd_frm): New class for vfnmadd frm.
10866         (vfnmadd_frm): New declaration.
10867         (BASE): Ditto.
10868         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10869         * config/riscv/riscv-vector-builtins-functions.def
10870         (vfnmadd_frm): New function declaration.
10872 2023-08-11  Drew Ross  <drross@redhat.com>
10873             Jakub Jelinek  <jakub@redhat.com>
10875         PR tree-optimization/109938
10876         * match.pd (((x ^ y) & z) | x -> (z & y) | x): New simplification.
10878 2023-08-11  Pan Li  <pan2.li@intel.com>
10880         * config/riscv/riscv-vector-builtins-bases.cc
10881         (class vfmadd_frm): New class for vfmadd frm.
10882         (vfmadd_frm_obj): New declaration.
10883         (BASE): Ditto.
10884         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10885         * config/riscv/riscv-vector-builtins-functions.def
10886         (vfmadd_frm): New function definition.
10888 2023-08-11  Pan Li  <pan2.li@intel.com>
10890         * config/riscv/riscv-vector-builtins-bases.cc
10891         (class vfnmsac_frm): New class for vfnmsac frm.
10892         (vfnmsac_frm_obj): New declaration.
10893         (BASE): Ditto.
10894         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10895         * config/riscv/riscv-vector-builtins-functions.def
10896         (vfnmsac_frm): New function definition.
10898 2023-08-11  Jakub Jelinek  <jakub@redhat.com>
10900         * doc/extend.texi (Typeof): Document typeof_unqual
10901         and __typeof_unqual__.
10903 2023-08-11  Andrew Pinski  <apinski@marvell.com>
10905         PR tree-optimization/110954
10906         * generic-match-head.cc (bitwise_inverted_equal_p): Add
10907         wascmp argument and set it accordingly.
10908         * gimple-match-head.cc (bitwise_inverted_equal_p): Add
10909         wascmp argument to the macro.
10910         (gimple_bitwise_inverted_equal_p): Add
10911         wascmp argument and set it accordingly.
10912         * match.pd (`a & ~a`, `a ^| ~a`): Update call
10913         to bitwise_inverted_equal_p and handle wascmp case.
10914         (`(~x | y) & x`, `(~x | y) & x`, `a?~t:t`): Update
10915         call to bitwise_inverted_equal_p and check to see
10916         if was !wascmp or if precision was 1.
10918 2023-08-11  Martin Uecker  <uecker@tugraz.at>
10920         PR c/84510
10921         * doc/invoke.texi: Update.
10923 2023-08-11  Pan Li  <pan2.li@intel.com>
10925         * config/riscv/riscv-vector-builtins-bases.cc
10926         (class vfmsac_frm): New class for vfmsac frm.
10927         (vfmsac_frm_obj): New declaration.
10928         (BASE): Ditto.
10929         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10930         * config/riscv/riscv-vector-builtins-functions.def
10931         (vfmsac_frm): New function definition
10933 2023-08-10  Jan Hubicka  <jh@suse.cz>
10935         PR middle-end/110923
10936         * tree-ssa-loop-split.cc (split_loop): Watch for division by zero.
10938 2023-08-10  Patrick O'Neill  <patrick@rivosinc.com>
10940         * common/config/riscv/riscv-common.cc: Add Ztso and mark Ztso as
10941         dependent on 'a' extension.
10942         * config/riscv/riscv-opts.h (MASK_ZTSO): New mask.
10943         (TARGET_ZTSO): New target.
10944         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_acquire): Add
10945         Ztso case.
10946         (riscv_memmodel_needs_amo_release): Add Ztso case.
10947         (riscv_print_operand): Add Ztso case for LR/SC annotations.
10948         * config/riscv/riscv.md: Import sync-rvwmo.md and sync-ztso.md.
10949         * config/riscv/riscv.opt: Add Ztso target variable.
10950         * config/riscv/sync.md (mem_thread_fence_1): Expand to RVWMO or
10951         Ztso specific insn.
10952         (atomic_load<mode>): Expand to RVWMO or Ztso specific insn.
10953         (atomic_store<mode>): Expand to RVWMO or Ztso specific insn.
10954         * config/riscv/sync-rvwmo.md: New file. Seperate out RVWMO
10955         specific load/store/fence mappings.
10956         * config/riscv/sync-ztso.md: New file. Seperate out Ztso
10957         specific load/store/fence mappings.
10959 2023-08-10  Jan Hubicka  <jh@suse.cz>
10961         * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Special case loops with
10962         0 iteration count.
10964 2023-08-10  Jan Hubicka  <jh@suse.cz>
10966         * tree-ssa-threadupdate.cc (ssa_fix_duplicate_block_edges): Fix profile update.
10968 2023-08-10  Jan Hubicka  <jh@suse.cz>
10970         * profile-count.cc (profile_count::differs_from_p): Fix overflow and
10971         handling of undefined values.
10973 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
10975         PR c/102989
10976         * tree-ssa-phiopt.cc (single_non_singleton_phi_for_edges): Never
10977         return virtual phis and return NULL if there is a virtual phi
10978         where the arguments from E0 and E1 edges aren't equal.
10980 2023-08-10  Richard Biener  <rguenther@suse.de>
10982         * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK,
10983         VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW.
10985 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10987         PR target/110962
10988         * config/riscv/autovec.md (vec_duplicate<mode>): New pattern.
10990 2023-08-10  Pan Li  <pan2.li@intel.com>
10992         * config/riscv/riscv-vector-builtins-bases.cc
10993         (class vfnmacc_frm): New class for vfnmacc.
10994         (vfnmacc_frm_obj): New declaration.
10995         (BASE): Ditto.
10996         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
10997         * config/riscv/riscv-vector-builtins-functions.def
10998         (vfnmacc_frm): New function definition.
11000 2023-08-10  Pan Li  <pan2.li@intel.com>
11002         * config/riscv/riscv-vector-builtins-bases.cc
11003         (class vfmacc_frm): New class for vfmacc frm.
11004         (vfmacc_frm_obj): New declaration.
11005         (BASE): Ditto.
11006         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
11007         * config/riscv/riscv-vector-builtins-functions.def
11008         (vfmacc_frm): New function definition.
11010 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11012         PR target/110964
11013         * config/riscv/riscv-v.cc (expand_cond_len_ternop): Add integer ternary.
11015 2023-08-10  Richard Biener  <rguenther@suse.de>
11017         * tree-vectorizer.h (vectorizable_live_operation): Remove
11018         gimple_stmt_iterator * argument.
11019         * tree-vect-loop.cc (vectorizable_live_operation): Likewise.
11020         Adjust plumbing around vect_get_loop_mask.
11021         (vect_analyze_loop_operations): Adjust.
11022         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): Likewise.
11023         (vect_bb_slp_mark_live_stmts): Likewise.
11024         (vect_schedule_slp_node): Likewise.
11025         * tree-vect-stmts.cc (can_vectorize_live_stmts): Likewise.
11026         Remove gimple_stmt_iterator * argument.
11027         (vect_transform_stmt): Adjust.
11029 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11031         * config/riscv/vector-iterators.md: Add missing modes.
11033 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
11035         PR c/102989
11036         * lto-streamer-in.cc (lto_input_tree_1): Assert TYPE_PRECISION
11037         is up to WIDE_INT_MAX_PRECISION rather than MAX_BITSIZE_MODE_ANY_INT.
11039 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
11041         PR c/102989
11042         * expr.cc (expand_expr_real_1) <case MEM_REF>: Add an early return for
11043         EXPAND_WRITE or EXPAND_MEMORY modifiers to avoid testing it multiple
11044         times.
11046 2023-08-10  liuhongt  <hongtao.liu@intel.com>
11048         PR target/110832
11049         * config/i386/mmx.md: (movq_<mode>_to_sse): Also do not
11050         sanitize upper part of V4HFmode register with
11051         -fno-trapping-math.
11052         (<insn>v4hf3): Enable for ix86_partial_vec_fp_math.
11053         (<divv4hf3): Ditto.
11054         (<insn>v2hf3): Ditto.
11055         (divv2hf3): Ditto.
11056         (movd_v2hf_to_sse): Do not sanitize upper part of V2HFmode
11057         register with -fno-trapping-math.
11059 2023-08-10  Pan Li  <pan2.li@intel.com>
11060             Kito Cheng  <kito.cheng@sifive.com>
11062         * config/riscv/riscv-protos.h
11063         (enum floating_point_rounding_mode): Add NONE, DYN_EXIT and DYN_CALL.
11064         (get_frm_mode): New declaration.
11065         * config/riscv/riscv-v.cc (get_frm_mode): New function to get frm mode.
11066         * config/riscv/riscv-vector-builtins.cc
11067         (function_expander::use_ternop_insn): Take care of frm reg.
11068         * config/riscv/riscv.cc (riscv_static_frm_mode_p): Migrate to FRM_XXX.
11069         (riscv_emit_frm_mode_set): Ditto.
11070         (riscv_emit_mode_set): Ditto.
11071         (riscv_frm_adjust_mode_after_call): Ditto.
11072         (riscv_frm_mode_needed): Ditto.
11073         (riscv_frm_mode_after): Ditto.
11074         (riscv_mode_entry): Ditto.
11075         (riscv_mode_exit): Ditto.
11076         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
11077         * config/riscv/vector.md
11078         (rne,rtz,rdn,rup,rmm,dyn,dyn_exit,dyn_call,none): Removed
11079         (symbol_ref): * config/riscv/vector.md: Set frm_mode attr explicitly.
11081 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11083         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix
11084         incorrect anticipate info.
11086 2023-08-09  Tsukasa OI  <research_trasio@irq.a4lg.com>
11088         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
11089         Remove 'Zve32d' from the version list.
11091 2023-08-09  Jin Ma  <jinma@linux.alibaba.com>
11093         * config/riscv/riscv.cc (riscv_sched_variable_issue): New function.
11094         (TARGET_SCHED_VARIABLE_ISSUE): New macro.
11095         Co-authored-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
11096         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
11098 2023-08-09  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
11100         * config/riscv/riscv.cc (riscv_legitimize_address): Handle folding.
11101         (mem_shadd_or_shadd_rtx_p): New function.
11103 2023-08-09  Andrew Pinski  <apinski@marvell.com>
11105         PR tree-optimization/110937
11106         PR tree-optimization/100798
11107         * match.pd (`a ? ~b : b`): Handle this
11108         case.
11110 2023-08-09  Uros Bizjak  <ubizjak@gmail.com>
11112         * config/i386/i386.opt (mpartial-vector-fp-math): Add dot.
11114 2023-08-09  Richard Ball  <richard.ball@arm.com>
11116         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A520 CPU.
11117         * config/aarch64/aarch64-tune.md: Regenerate.
11118         * doc/invoke.texi: Document Cortex-A520 CPU.
11120 2023-08-09  Carl Love  <cel@us.ibm.com>
11122         * config/rs6000/rs6000-builtins.def (vcmpneb, vcmpneh, vcmpnew):
11123         Move definitions to Altivec stanza.
11124         * config/rs6000/altivec.md (vcmpneb, vcmpneh, vcmpnew): New
11125         define_expand.
11127 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11129         PR target/110950
11130         * config/riscv/riscv-v.cc (expand_const_vector): Add NPATTERNS = 1
11131         stepped vector support.
11133 2023-08-09  liuhongt  <hongtao.liu@intel.com>
11135         * common/config/i386/cpuinfo.h (get_available_features):
11136         Rename local variable subleaf_level to max_subleaf_level.
11138 2023-08-09  Richard Biener  <rguenther@suse.de>
11140         PR rtl-optimization/110587
11141         * lra-assigns.cc (find_hard_regno_for_1): Re-order checks.
11143 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
11145         PR tree-optimization/110248
11146         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Check if
11147         the given code is for ifn LEN_{LOAD,STORE}, if yes then make it not
11148         legitimate when outer code is PLUS.
11150 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
11152         PR tree-optimization/110248
11153         * recog.cc (memory_address_addr_space_p): Add one more argument ch of
11154         type code_helper and pass it to targetm.addr_space.legitimate_address_p
11155         instead of ERROR_MARK.
11156         (offsettable_address_addr_space_p): Update one function pointer with
11157         one more argument of type code_helper as its assignees
11158         memory_address_addr_space_p and strict_memory_address_addr_space_p
11159         have been adjusted, and adjust some call sites with ERROR_MARK.
11160         * recog.h (tree.h): New include header file for tree_code ERROR_MARK.
11161         (memory_address_addr_space_p): Adjust with one more unnamed argument
11162         of type code_helper with default ERROR_MARK.
11163         (strict_memory_address_addr_space_p): Likewise.
11164         * reload.cc (strict_memory_address_addr_space_p): Add one unnamed
11165         argument of type code_helper.
11166         * tree-ssa-address.cc (valid_mem_ref_p): Add one more argument ch of
11167         type code_helper and pass it to memory_address_addr_space_p.
11168         * tree-ssa-address.h (valid_mem_ref_p): Adjust the declaration with
11169         one more unnamed argument of type code_helper with default value
11170         ERROR_MARK.
11171         * tree-ssa-loop-ivopts.cc (get_address_cost): Use ERROR_MARK as code
11172         by default, change it with ifn code for USE_PTR_ADDRESS type use, and
11173         pass it to all valid_mem_ref_p calls.
11175 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
11177         PR tree-optimization/110248
11178         * coretypes.h (class code_helper): Add forward declaration.
11179         * doc/tm.texi: Regenerate.
11180         * lra-constraints.cc (valid_address_p): Call target hook
11181         targetm.addr_space.legitimate_address_p with an extra parameter
11182         ERROR_MARK as its prototype changes.
11183         * recog.cc (memory_address_addr_space_p): Likewise.
11184         * reload.cc (strict_memory_address_addr_space_p): Likewise.
11185         * target.def (legitimate_address_p, addr_space.legitimate_address_p):
11186         Extend with one more argument of type code_helper, update the
11187         documentation accordingly.
11188         * targhooks.cc (default_legitimate_address_p): Adjust for the
11189         new code_helper argument.
11190         (default_addr_space_legitimate_address_p): Likewise.
11191         * targhooks.h (default_legitimate_address_p): Likewise.
11192         (default_addr_space_legitimate_address_p): Likewise.
11193         * config/aarch64/aarch64.cc (aarch64_legitimate_address_hook_p): Adjust
11194         with extra unnamed code_helper argument with default ERROR_MARK.
11195         * config/alpha/alpha.cc (alpha_legitimate_address_p): Likewise.
11196         * config/arc/arc.cc (arc_legitimate_address_p): Likewise.
11197         * config/arm/arm-protos.h (arm_legitimate_address_p): Likewise.
11198         (tree.h): New include for tree_code ERROR_MARK.
11199         * config/arm/arm.cc (arm_legitimate_address_p): Adjust with extra
11200         unnamed code_helper argument with default ERROR_MARK.
11201         * config/avr/avr.cc (avr_addr_space_legitimate_address_p): Likewise.
11202         * config/bfin/bfin.cc (bfin_legitimate_address_p): Likewise.
11203         * config/bpf/bpf.cc (bpf_legitimate_address_p): Likewise.
11204         * config/c6x/c6x.cc (c6x_legitimate_address_p): Likewise.
11205         * config/cris/cris-protos.h (cris_legitimate_address_p): Likewise.
11206         (tree.h): New include for tree_code ERROR_MARK.
11207         * config/cris/cris.cc (cris_legitimate_address_p): Adjust with extra
11208         unnamed code_helper argument with default ERROR_MARK.
11209         * config/csky/csky.cc (csky_legitimate_address_p): Likewise.
11210         * config/epiphany/epiphany.cc (epiphany_legitimate_address_p):
11211         Likewise.
11212         * config/frv/frv.cc (frv_legitimate_address_p): Likewise.
11213         * config/ft32/ft32.cc (ft32_addr_space_legitimate_address_p): Likewise.
11214         * config/gcn/gcn.cc (gcn_addr_space_legitimate_address_p): Likewise.
11215         * config/h8300/h8300.cc (h8300_legitimate_address_p): Likewise.
11216         * config/i386/i386.cc (ix86_legitimate_address_p): Likewise.
11217         * config/ia64/ia64.cc (ia64_legitimate_address_p): Likewise.
11218         * config/iq2000/iq2000.cc (iq2000_legitimate_address_p): Likewise.
11219         * config/lm32/lm32.cc (lm32_legitimate_address_p): Likewise.
11220         * config/loongarch/loongarch.cc (loongarch_legitimate_address_p):
11221         Likewise.
11222         * config/m32c/m32c.cc (m32c_legitimate_address_p): Likewise.
11223         (m32c_addr_space_legitimate_address_p): Likewise.
11224         * config/m32r/m32r.cc (m32r_legitimate_address_p): Likewise.
11225         * config/m68k/m68k.cc (m68k_legitimate_address_p): Likewise.
11226         * config/mcore/mcore.cc (mcore_legitimate_address_p): Likewise.
11227         * config/microblaze/microblaze-protos.h (tree.h): New include for
11228         tree_code ERROR_MARK.
11229         (microblaze_legitimate_address_p): Adjust with extra unnamed
11230         code_helper argument with default ERROR_MARK.
11231         * config/microblaze/microblaze.cc (microblaze_legitimate_address_p):
11232         Likewise.
11233         * config/mips/mips.cc (mips_legitimate_address_p): Likewise.
11234         * config/mmix/mmix.cc (mmix_legitimate_address_p): Likewise.
11235         * config/mn10300/mn10300.cc (mn10300_legitimate_address_p): Likewise.
11236         * config/moxie/moxie.cc (moxie_legitimate_address_p): Likewise.
11237         * config/msp430/msp430.cc (msp430_legitimate_address_p): Likewise.
11238         (msp430_addr_space_legitimate_address_p): Adjust with extra code_helper
11239         argument with default ERROR_MARK and adjust the call to function
11240         msp430_legitimate_address_p.
11241         * config/nds32/nds32.cc (nds32_legitimate_address_p): Adjust with extra
11242         unnamed code_helper argument with default ERROR_MARK.
11243         * config/nios2/nios2.cc (nios2_legitimate_address_p): Likewise.
11244         * config/nvptx/nvptx.cc (nvptx_legitimate_address_p): Likewise.
11245         * config/or1k/or1k.cc (or1k_legitimate_address_p): Likewise.
11246         * config/pa/pa.cc (pa_legitimate_address_p): Likewise.
11247         * config/pdp11/pdp11.cc (pdp11_legitimate_address_p): Likewise.
11248         * config/pru/pru.cc (pru_addr_space_legitimate_address_p): Likewise.
11249         * config/riscv/riscv.cc (riscv_legitimate_address_p): Likewise.
11250         * config/rl78/rl78-protos.h (rl78_as_legitimate_address): Likewise.
11251         (tree.h): New include for tree_code ERROR_MARK.
11252         * config/rl78/rl78.cc (rl78_as_legitimate_address): Adjust with
11253         extra unnamed code_helper argument with default ERROR_MARK.
11254         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Likewise.
11255         (rs6000_debug_legitimate_address_p): Adjust with extra code_helper
11256         argument and adjust the call to function rs6000_legitimate_address_p.
11257         * config/rx/rx.cc (rx_is_legitimate_address): Adjust with extra
11258         unnamed code_helper argument with default ERROR_MARK.
11259         * config/s390/s390.cc (s390_legitimate_address_p): Likewise.
11260         * config/sh/sh.cc (sh_legitimate_address_p): Likewise.
11261         * config/sparc/sparc.cc (sparc_legitimate_address_p): Likewise.
11262         * config/v850/v850.cc (v850_legitimate_address_p): Likewise.
11263         * config/vax/vax.cc (vax_legitimate_address_p): Likewise.
11264         * config/visium/visium.cc (visium_legitimate_address_p): Likewise.
11265         * config/xtensa/xtensa.cc (xtensa_legitimate_address_p): Likewise.
11266         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
11267         Likewise.
11268         (tree.h): New include for tree_code ERROR_MARK.
11269         * config/stormy16/stormy16.cc (xstormy16_legitimate_address_p):
11270         Adjust with extra unnamed code_helper argument with default
11271         ERROR_MARK.
11273 2023-08-09  liuhongt  <hongtao.liu@intel.com>
11275         * common/config/i386/cpuinfo.h (get_available_features): Check
11276         EAX for valid subleaf before use CPUID.
11278 2023-08-08  Jeff Law  <jlaw@ventanamicro.com>
11280         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use word_mode
11281         for the temporary when canonicalizing the condition.
11283 2023-08-08  Cupertino Miranda  <cupertino.miranda@oracle.com>
11285         * config/bpf/core-builtins.cc: Cleaned include headers.
11286         (struct cr_builtins): Added GTY.
11287         (cr_builtins_ref): Created.
11288         (builtins_data) Changed to GC root.
11289         (allocate_builtin_data): Changed.
11290         Included gt-core-builtins.h.
11291         * config/bpf/coreout.cc: (bpf_core_extra) Added GTY.
11292         (bpf_core_extra_ref): Created.
11293         (bpf_comment_info): Changed to GC root.
11294         (bpf_core_reloc_add, output_btfext_header, btf_ext_init): Changed.
11296 2023-08-08  Uros Bizjak  <ubizjak@gmail.com>
11298         PR target/110832
11299         * config/i386/i386.opt (mpartial-vector-fp-math): New option.
11300         * config/i386/mmx.md (movq_<mode>_to_sse): Do not sanitize
11301         upper part of V2SFmode register with -fno-trapping-math.
11302         (<plusminusmult:insn>v2sf3): Enable for ix86_partial_vec_fp_math.
11303         (divv2sf3): Ditto.
11304         (<smaxmin:code>v2sf3): Ditto.
11305         (sqrtv2sf2): Ditto.
11306         (*mmx_haddv2sf3_low): Ditto.
11307         (*mmx_hsubv2sf3_low): Ditto.
11308         (vec_addsubv2sf3): Ditto.
11309         (vec_cmpv2sfv2si): Ditto.
11310         (vcond<V2FI:mode>v2sf): Ditto.
11311         (fmav2sf4): Ditto.
11312         (fmsv2sf4): Ditto.
11313         (fnmav2sf4): Ditto.
11314         (fnmsv2sf4): Ditto.
11315         (fix_truncv2sfv2si2): Ditto.
11316         (fixuns_truncv2sfv2si2): Ditto.
11317         (floatv2siv2sf2): Ditto.
11318         (floatunsv2siv2sf2): Ditto.
11319         (nearbyintv2sf2): Ditto.
11320         (rintv2sf2): Ditto.
11321         (lrintv2sfv2si2): Ditto.
11322         (ceilv2sf2): Ditto.
11323         (lceilv2sfv2si2): Ditto.
11324         (floorv2sf2): Ditto.
11325         (lfloorv2sfv2si2): Ditto.
11326         (btruncv2sf2): Ditto.
11327         (roundv2sf2): Ditto.
11328         (lroundv2sfv2si2): Ditto.
11329         * doc/invoke.texi (x86 Options): Document
11330         -mpartial-vector-fp-math option.
11332 2023-08-08  Andrew Pinski  <apinski@marvell.com>
11334         PR tree-optimization/103281
11335         PR tree-optimization/28794
11336         * vr-values.cc (simplify_using_ranges::simplify_cond_using_ranges_1): Split out
11337         majority to ...
11338         (simplify_using_ranges::simplify_compare_using_ranges_1): Here.
11339         (simplify_using_ranges::simplify_casted_cond): Rename to ...
11340         (simplify_using_ranges::simplify_casted_compare): This
11341         and change arguments to take op0 and op1.
11342         (simplify_using_ranges::simplify_compare_assign_using_ranges_1): New method.
11343         (simplify_using_ranges::simplify): For tcc_comparison assignments call
11344         simplify_compare_assign_using_ranges_1.
11345         * vr-values.h (simplify_using_ranges): Add
11346         new methods, simplify_compare_using_ranges_1 and simplify_compare_assign_using_ranges_1.
11347         Rename simplify_casted_cond and simplify_casted_compare and
11348         update argument types.
11350 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
11352         * genmatch.cc: Log line numbers indirectly.
11354 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
11356         * genmatch.cc: Make sinfo map ordered.
11357         * Makefile.in: Require the ordered map header for genmatch.o.
11359 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
11361         * ordered-hash-map.h: Add get_or_insert.
11362         * ordered-hash-map-tests.cc: Use get_or_insert in tests.
11364 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11366         * config/riscv/autovec.md (cond_<optab><mode>): New pattern.
11367         (cond_len_<optab><mode>): Ditto.
11368         (cond_fma<mode>): Ditto.
11369         (cond_len_fma<mode>): Ditto.
11370         (cond_fnma<mode>): Ditto.
11371         (cond_len_fnma<mode>): Ditto.
11372         (cond_fms<mode>): Ditto.
11373         (cond_len_fms<mode>): Ditto.
11374         (cond_fnms<mode>): Ditto.
11375         (cond_len_fnms<mode>): Ditto.
11376         * config/riscv/riscv-protos.h (riscv_get_v_regno_alignment): Export
11377         global.
11378         (enum insn_type): Add new enum type.
11379         (prepare_ternary_operands): New function.
11380         * config/riscv/riscv-v.cc (emit_vlmax_masked_fp_mu_insn): Ditto.
11381         (emit_nonvlmax_tumu_insn): Ditto.
11382         (emit_nonvlmax_fp_tumu_insn): Ditto.
11383         (expand_cond_len_binop): Add condtional operations.
11384         (expand_cond_len_ternop): Ditto.
11385         (prepare_ternary_operands): New function.
11386         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_release): Export
11387         riscv_get_v_regno_alignment as global scope.
11388         * config/riscv/vector.md: Fix ternary bugs.
11390 2023-08-08  Richard Biener  <rguenther@suse.de>
11392         PR tree-optimization/49955
11393         * tree-vectorizer.h (_slp_instance::remain_stmts): New.
11394         (SLP_INSTANCE_REMAIN_STMTS): Likewise.
11395         * tree-vect-slp.cc (vect_free_slp_instance): Release
11396         SLP_INSTANCE_REMAIN_STMTS.
11397         (vect_build_slp_instance): Make the number of lanes of
11398         a BB reduction even.
11399         (vectorize_slp_instance_root_stmt): Handle unvectorized
11400         defs of a BB reduction.
11402 2023-08-08  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
11404         * internal-fn.cc (get_len_internal_fn): New function.
11405         (DEF_INTERNAL_COND_FN): Ditto.
11406         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
11407         * internal-fn.h (get_len_internal_fn): Ditto.
11408         * tree-vect-stmts.cc (vectorizable_call): Add CALL auto-vectorization.
11410 2023-08-08  Richard Biener  <rguenther@suse.de>
11412         PR tree-optimization/110924
11413         * tree-ssa-live.h (virtual_operand_live): Update comment.
11414         * tree-ssa-live.cc (virtual_operand_live::get_live_in): Remove
11415         optimization, look at each predecessor.
11416         * tree-ssa-sink.cc (pass_sink_code::execute): Mark backedges.
11418 2023-08-08  yulong  <shiyulong@iscas.ac.cn>
11420         * config/riscv/riscv-v.cc (slide1_sew64_helper): Modify.
11422 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11424         * config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg.
11425         * config/riscv/vector.md: Ditto.
11427 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11429         * config/riscv/autovec.md: Add VLS shift.
11431 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11433         * config/riscv/autovec-vls.md (<optab><mode>3): Add VLS modes.
11434         * config/riscv/vector-iterators.md: Ditto.
11435         * config/riscv/vector.md: Ditto.
11437 2023-08-07  Jonathan Wakely  <jwakely@redhat.com>
11439         * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
11441 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
11443         * configure: Regenerate.
11445 2023-08-07  John Ericson  <git@JohnEricson.me>
11447         * configure: Regenerate.
11449 2023-08-07  Alan Modra  <amodra@gmail.com>
11451         * configure: Regenerate.
11453 2023-08-07  Alexander von Gluck IV  <kallisti5@unixzen.com>
11455         * configure: Regenerate.
11457 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
11459         * configure: Regenerate.
11461 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
11463         * configure: Regenerate.
11465 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
11467         * configure: Regenerate.
11469 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
11471         * configure: Regenerate.
11473 2023-08-07  Jeff Law  <jlaw@ventanamicro.com>
11475         * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
11476         VOIDmode operands to conditional before canonicalization.
11478 2023-08-07  Manolis Tsamis  <manolis.tsamis@vrull.eu>
11480         * regcprop.cc (maybe_copy_reg_attrs): Remove unnecessary function.
11481         (find_oldest_value_reg): Inline stack_pointer_rtx check.
11482         (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check.
11484 2023-08-07  Martin Jambor  <mjambor@suse.cz>
11486         PR ipa/110378
11487         * ipa-param-manipulation.h (class ipa_param_body_adjustments): New
11488         members get_ddef_if_exists_and_is_used and mark_clobbers_dead.
11489         * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers.
11490         (ptr_parm_has_nonarg_uses): Likewise.
11491         * ipa-param-manipulation.cc
11492         (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New.
11493         (ipa_param_body_adjustments::mark_dead_statements): Move initial
11494         checks to get_ddef_if_exists_and_is_used.
11495         (ipa_param_body_adjustments::mark_clobbers_dead): New.
11496         (ipa_param_body_adjustments::common_initialization): Call
11497         mark_clobbers_dead when splitting.
11499 2023-08-07  Raphael Zinsly  <rzinsly@ventanamicro.com>
11501         * config/riscv/riscv.cc (riscv_expand_int_scc): Add invert_ptr
11502         as an argument and pass it to riscv_emit_int_order_test.
11503         (riscv_expand_conditional_move): Handle cases where the condition
11504         is not EQ/NE or the second argument to the conditional is not
11505         (const_int 0).
11506         * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype.
11507         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
11509 2023-08-07  Andrew Pinski  <apinski@marvell.com>
11511         PR tree-optimization/109959
11512         * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
11513         New patterns.
11515 2023-08-07  Richard Biener  <rguenther@suse.de>
11517         * tree-ssa-sink.cc (pass_sink_code::execute): Do not
11518         calculate post-dominators.  Calculate RPO on the inverted
11519         graph and process blocks in that order.
11521 2023-08-07  liuhongt  <hongtao.liu@intel.com>
11523         PR target/110926
11524         * config/i386/i386-protos.h
11525         (vpternlog_redundant_operand_mask): Adjust parameter type.
11526         * config/i386/i386.cc (vpternlog_redundant_operand_mask): Use
11527         INTVAL instead of XINT, also adjust parameter type from rtx*
11528         to rtx since the function only needs operands[4] in vpternlog
11529         pattern.
11530         (substitute_vpternlog_operands): Pass operands[4] instead of
11531         operands to vpternlog_redundant_operand_mask.
11532         * config/i386/sse.md: Ditto.
11534 2023-08-07  Richard Biener  <rguenther@suse.de>
11536         * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
11537         around dumping code.
11539 2023-08-07  liuhongt  <hongtao.liu@intel.com>
11541         PR target/110762
11542         * config/i386/mmx.md (<insn><mode>3): Changed from define_insn
11543         to define_expand and break into ..
11544         (<insn>v4hf3): .. this.
11545         (divv4hf3): .. this.
11546         (<insn>v2hf3): .. this.
11547         (divv2hf3): .. this.
11548         (movd_v2hf_to_sse): New define_expand.
11549         (movq_<mode>_to_sse): Extend to V4HFmode.
11550         (mmxdoublevecmode): Ditto.
11551         (V2FI_V4HF): New mode iterator.
11552         * config/i386/sse.md (*vec_concatv4sf): Extend to hanlde V8HF
11553         by using mode iterator V4SF_V8HF, renamed to ..
11554         (*vec_concat<mode>): .. this.
11555         (*vec_concatv4sf_0): Extend to handle V8HF by using mode
11556         iterator V4SF_V8HF, renamed to ..
11557         (*vec_concat<mode>_0): .. this.
11558         (*vec_concatv8hf_movss): New define_insn.
11559         (V4SF_V8HF): New mode iterator.
11561 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11563         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
11565 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11567         * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16".
11568         (*mmx_pinsrb): Likewise.
11569         (*mmx_pextrb): Likewise.
11570         (*mmx_pextrb_zext): Likewise.
11571         (mmx_pshufbv8qi3): Likewise.
11572         (mmx_pshufbv4qi3): Likewise.
11573         (mmx_pswapdv2si2): Likewise.
11574         (*pinsrb): Likewise.
11575         (*pextrb): Likewise.
11576         (*pextrb_zext): Likewise.
11577         * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
11578         (*sse2_eq<mode>3): Likewise.
11579         (*sse2_gt<mode>3): Likewise.
11580         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
11581         (*vec_extract<mode>): Likewise.
11582         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
11583         (*vec_extractv16qi_zext): Likewise.
11584         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
11585         (ssse3_pmaddubsw128): Likewise.
11586         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
11587         (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise.
11588         (<ssse3_avx2>_psign<mode>3): Likewise.
11589         (<ssse3_avx2>_palignr<mode>): Likewise.
11590         (*abs<mode>2): Likewise.
11591         (sse4_2_pcmpestr): Likewise.
11592         (sse4_2_pcmpestri): Likewise.
11593         (sse4_2_pcmpestrm): Likewise.
11594         (sse4_2_pcmpestr_cconly): Likewise.
11595         (sse4_2_pcmpistr): Likewise.
11596         (sse4_2_pcmpistri): Likewise.
11597         (sse4_2_pcmpistrm): Likewise.
11598         (sse4_2_pcmpistr_cconly): Likewise.
11599         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
11600         (vgf2p8affineqb_<mode><mask_name>): Likewise.
11601         (vgf2p8mulb_<mode><mask_name>): Likewise.
11602         (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and
11603         "prefix_extra".
11604         (*<code>v16qi3 [umaxmin]): Likewise.
11606 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11608         * config/i386/i386.md (sse4_1_round<mode>2): Make
11609         "length_immediate" uniformly 1.
11610         * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise.
11611         (mmx_pblendvb_<mode>): Likewise.
11613 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11615         * config/i386/sse.md
11616         (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add
11617         "prefix" attribute.
11618         (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
11619         Likewise.
11621 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11623         * config/i386/sse.md (xop_phadd<u>bw): Add "prefix",
11624         "prefix_extra", and "mode" attributes.
11625         (xop_phadd<u>bd): Likewise.
11626         (xop_phadd<u>bq): Likewise.
11627         (xop_phadd<u>wd): Likewise.
11628         (xop_phadd<u>wq): Likewise.
11629         (xop_phadd<u>dq): Likewise.
11630         (xop_phsubbw): Likewise.
11631         (xop_phsubwd): Likewise.
11632         (xop_phsubdq): Likewise.
11633         (xop_rotl<mode>3): Add "prefix" and "prefix_extra" attributes.
11634         (xop_rotr<mode>3): Likewise.
11635         (xop_frcz<mode>2): Likewise.
11636         (*xop_vmfrcz<mode>2): Likewise.
11637         (xop_vrotl<mode>3): Add "prefix" attribute. Change
11638         "prefix_extra" to 1.
11639         (xop_sha<mode>3): Likewise.
11640         (xop_shl<mode>3): Likewise.
11642 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11644         * config/i386/sse.md
11645         (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop
11646         "prefix_extra".
11647         (avx512dq_vextract<shuffletype>64x2_1_mask): Likewise.
11648         (*avx512dq_vextract<shuffletype>64x2_1): Likewise.
11649         (avx512f_vextract<shuffletype>32x4_1_mask): Likewise.
11650         (*avx512f_vextract<shuffletype>32x4_1): Likewise.
11651         (vec_extract_lo_<mode>_mask [AVX512 forms]): Likewise.
11652         (vec_extract_lo_<mode> [AVX512 forms]): Likewise.
11653         (vec_extract_hi_<mode>_mask [AVX512 forms]): Likewise.
11654         (vec_extract_hi_<mode> [AVX512 forms]): Likewise.
11655         (@vec_extract_lo_<mode> [AVX512 forms]): Likewise.
11656         (@vec_extract_hi_<mode> [AVX512 forms]): Likewise.
11657         (vec_extract_lo_v64qi): Likewise.
11658         (vec_extract_hi_v64qi): Likewise.
11659         (*vec_widen_umult_even_v16si<mask_name>): Likewise.
11660         (*vec_widen_smult_even_v16si<mask_name>): Likewise.
11661         (*avx512f_<code><mode>3<mask_name>): Likewise.
11662         (*vec_extractv4ti): Likewise.
11663         (avx512bw_<code>v32qiv32hi2<mask_name>): Likewise.
11664         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Likewise.
11665         Add "length_immediate".
11667 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11669         * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop
11670         "prefix_extra".
11671         (@rdseed<mode>): Likewise.
11672         * config/i386/mmx.md (<code><mode>3 [smaxmin and umaxmin cases]):
11673         Adjust "prefix_extra".
11674         * config/i386/sse.md (@vec_set<mode>_0): Likewise.
11675         (*sse4_1_<code><mode>3<mask_name>): Likewise.
11676         (*avx2_eq<mode>3): Likewise.
11677         (avx2_gt<mode>3): Likewise.
11678         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
11679         (*vec_extract<mode>): Likewise.
11680         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
11682 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11684         * config/i386/i386.md (rd<fsgs>base<mode>): Add "prefix_0f" and
11685         "prefix_rep". Drop "prefix_extra".
11686         (wr<fsgs>base<mode>): Likewise.
11687         (ptwrite<mode>): Likewise.
11689 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11691         * config/i386/i386.md (isa): Move up.
11692         (length_immediate): Handle "fma4".
11693         (prefix): Handle "ssemuladd".
11694         * config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute.
11695         (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
11696         Likewise.
11697         (<avx512>_fmadd_<mode>_mask<round_name>): Likewise.
11698         (<avx512>_fmadd_<mode>_mask3<round_name>): Likewise.
11699         (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
11700         Likewise.
11701         (<avx512>_fmsub_<mode>_mask<round_name>): Likewise.
11702         (<avx512>_fmsub_<mode>_mask3<round_name>): Likewise.
11703         (*fma_fnmadd_<mode>): Likewise.
11704         (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
11705         Likewise.
11706         (<avx512>_fnmadd_<mode>_mask<round_name>): Likewise.
11707         (<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise.
11708         (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
11709         Likewise.
11710         (<avx512>_fnmsub_<mode>_mask<round_name>): Likewise.
11711         (<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise.
11712         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
11713         Likewise.
11714         (<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise.
11715         (<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise.
11716         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
11717         Likewise.
11718         (<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise.
11719         (<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise.
11720         (*fmai_fmadd_<mode>): Likewise.
11721         (*fmai_fmsub_<mode>): Likewise.
11722         (*fmai_fnmadd_<mode><round_name>): Likewise.
11723         (*fmai_fnmsub_<mode><round_name>): Likewise.
11724         (avx512f_vmfmadd_<mode>_mask<round_name>): Likewise.
11725         (avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise.
11726         (avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise.
11727         (*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise.
11728         (avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise.
11729         (*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise.
11730         (avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise.
11731         (avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise.
11732         (avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise.
11733         (*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise.
11734         (*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise.
11735         (*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise.
11736         (*fma4i_vmfmadd_<mode>): Likewise.
11737         (*fma4i_vmfmsub_<mode>): Likewise.
11738         (*fma4i_vmfnmadd_<mode>): Likewise.
11739         (*fma4i_vmfnmsub_<mode>): Likewise.
11740         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise.
11741         (<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise.
11742         (avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
11743         Likewise.
11744         (avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise.
11745         (xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise.
11746         (xop_p<macs>dql): Likewise.
11747         (xop_p<macs>dqh): Likewise.
11748         (xop_p<macs>wd): Likewise.
11749         (xop_p<madcs>wd): Likewise.
11750         (fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute.
11752 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11754         * config/i386/i386.md (length_immediate): Handle "sse4arg".
11755         (prefix): Likewise.
11756         (*xop_pcmov_<mode>): Add "mode" attribute.
11757         * config/i386/mmx.md (*xop_maskcmp<mode>3): Drop "prefix_data16",
11758         "prefix_rep", "prefix_extra", and "length_immediate" attributes.
11759         (*xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
11760         (*xop_pcmov_<mode>): Add "mode" attribute.
11761         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Add "mode"
11762         attribute.
11763         (xop_maskcmp<mode>3): Drop "prefix_data16", "prefix_rep",
11764         "prefix_extra", and "length_immediate" attributes.
11765         (xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
11766         (xop_maskcmp_uns2<mode>3): Drop "prefix_data16", "prefix_extra",
11767         and "length_immediate" attributes. Switch "type" to "sse4arg".
11768         (xop_pcom_tf<mode>3): Likewise.
11769         (xop_vpermil2<mode>3): Drop "length_immediate" attribute.
11771 2023-08-07  Jan Beulich  <jbeulich@suse.com>
11773         * config/i386/i386.md (prefix_extra): Correct comment. Fold
11774         cases yielding 2 into ones yielding 1.
11776 2023-08-07  Jan Hubicka  <jh@suse.cz>
11778         PR tree-optimization/106293
11779         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
11780         * tree-vect-loop.cc (vect_transform_loop): Likewise.
11782 2023-08-07  Andrew Pinski  <apinski@marvell.com>
11784         PR tree-optimization/96695
11785         * match.pd (min_value, max_value): Extend to
11786         pointer types too.
11788 2023-08-06  Jan Hubicka  <jh@suse.cz>
11790         * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
11791         __builtin_expect that CPU likely supports cpuid.
11793 2023-08-06  Jan Hubicka  <jh@suse.cz>
11795         * tree-loop-distribution.cc (loop_distribution::execute): Disable
11796         distribution for loops with estimated iterations 0.
11798 2023-08-06  Jan Hubicka  <jh@suse.cz>
11800         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
11802 2023-08-04  Xiao Zeng  <zengxiao@eswincomputing.com>
11804         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
11805         more Zicond patterns.  Fix whitespace typo.
11806         (riscv_rtx_costs): Remove accidental code duplication.
11807         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
11809 2023-08-04  Yan Simonaytes  <simonaytes.yan@ispras.ru>
11811         PR target/110202
11812         * config/i386/i386-protos.h
11813         (vpternlog_redundant_operand_mask): Declare.
11814         (substitute_vpternlog_operands): Declare.
11815         * config/i386/i386.cc
11816         (vpternlog_redundant_operand_mask): New helper.
11817         (substitute_vpternlog_operands): New function.  Use them...
11818         * config/i386/sse.md: ... here in new VPTERNLOG define_splits.
11820 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
11822         * expmed.cc (extract_bit_field_1): Document that an UNSIGNEDP
11823         value of -1 is equivalent to don't care.
11824         (extract_integral_bit_field): Indicate that we don't require
11825         the most significant word to be zero extended, if we're about
11826         to sign extend it.
11827         (extract_fixed_bit_field_1): Document that an UNSIGNEDP value
11828         of -1 is equivalent to don't care.  Don't clear the most
11829         significant bits with AND mask when UNSIGNEDP is -1.
11831 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
11833         * config/i386/sse.md (define_split): Convert highpart:DF extract
11834         from V2DFmode register into a sse2_storehpd instruction.
11835         (define_split): Likewise, convert lowpart:DF extract from V2DF
11836         register into a sse2_storelpd instruction.
11838 2023-08-04  Qing Zhao  <qing.zhao@oracle.com>
11840         * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
11841         new option.
11843 2023-08-04  Vladimir N. Makarov  <vmakarov@redhat.com>
11845         * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
11846         against early clobber hard regs.
11848 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
11850         * doc/extend.texi: Document it.
11852 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
11854         PR target/106346
11855         * config/aarch64/aarch64-simd.md (vec_widen_<sur>shiftl_lo_<mode>,
11856         vec_widen_<sur>shiftl_hi_<mode>): Remove.
11857         (aarch64_<sur>shll<mode>_internal): Renamed to...
11858         (aarch64_<su>shll<mode>): .. This.
11859         (aarch64_<sur>shll2<mode>_internal): Renamed to...
11860         (aarch64_<su>shll2<mode>): .. This.
11861         (aarch64_<sur>shll_n<mode>, aarch64_<sur>shll2_n<mode>): Re-use new
11862         optabs.
11863         * config/aarch64/constraints.md (D2, DL): New.
11864         * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New.
11866 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
11868         * gensupport.cc (conlist): Support length 0 attribute.
11870 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
11872         * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
11873         (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
11875 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
11877         * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling
11878         of constants.
11879         (aarch64_adjust_stmt_cost): Use it.
11880         (aarch64_vector_costs::count_ops): Likewise.
11881         (aarch64_vector_costs::add_stmt_cost): Pass vinfo to
11882         aarch64_adjust_stmt_cost.
11884 2023-08-04  Richard Biener  <rguenther@suse.de>
11886         PR tree-optimization/110838
11887         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
11888         Fix right-shift value sanitizing.  Properly emit external
11889         def mangling in the preheader rather than in the pattern
11890         def sequence where it will fail vectorizing.
11892 2023-08-04  Matthew Malcomson  <matthew.malcomson@arm.com>
11894         PR middle-end/110316
11895         PR middle-end/9903
11896         * timevar.cc (NANOSEC_PER_SEC, TICKS_TO_NANOSEC,
11897         CLOCKS_TO_NANOSEC, nanosec_to_floating_sec, percent_of): New.
11898         (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Remove these macros.
11899         (timer::validate_phases): Use integral arithmetic to check
11900         validity.
11901         (timer::print_row, timer::print): Convert from integral
11902         nanoseconds to floating point seconds before printing.
11903         (timer::all_zero): Change limit to nanosec count instead of
11904         fractional count of seconds.
11905         (make_json_for_timevar_time_def): Convert from integral
11906         nanoseconds to floating point seconds before recording.
11907         * timevar.h (struct timevar_time_def): Update all measurements
11908         to use uint64_t nanoseconds rather than seconds stored in a
11909         double.
11911 2023-08-04  Richard Biener  <rguenther@suse.de>
11913         PR tree-optimization/110838
11914         * match.pd (([rl]shift @0 out-of-bounds) -> zero): Restrict
11915         the arithmetic right-shift case to non-negative operands.
11917 2023-08-04  Pan Li  <pan2.li@intel.com>
11919         Revert:
11920         2023-08-04  Pan Li  <pan2.li@intel.com>
11922         * config/riscv/riscv-vector-builtins-bases.cc
11923         (class vfmacc_frm): New class for vfmacc frm.
11924         (vfmacc_frm_obj): New declaration.
11925         (BASE): Ditto.
11926         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
11927         * config/riscv/riscv-vector-builtins-functions.def
11928         (vfmacc_frm): New function definition.
11929         * config/riscv/riscv-vector-builtins.cc
11930         (function_expander::use_ternop_insn): Add frm operand support.
11931         * config/riscv/vector.md: Add vfmuladd to frm_mode.
11933 2023-08-04  Pan Li  <pan2.li@intel.com>
11935         Revert:
11936         2023-08-04  Pan Li  <pan2.li@intel.com>
11938         * config/riscv/riscv-vector-builtins-bases.cc
11939         (class vfnmacc_frm): New class for vfnmacc.
11940         (vfnmacc_frm_obj): New declaration.
11941         (BASE): Ditto.
11942         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
11943         * config/riscv/riscv-vector-builtins-functions.def
11944         (vfnmacc_frm): New function definition.
11946 2023-08-04  Pan Li  <pan2.li@intel.com>
11948         Revert:
11949         2023-08-04  Pan Li  <pan2.li@intel.com>
11951         * config/riscv/riscv-vector-builtins-bases.cc
11952         (class vfmsac_frm): New class for vfmsac frm.
11953         (vfmsac_frm_obj): New declaration.
11954         (BASE): Ditto.
11955         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
11956         * config/riscv/riscv-vector-builtins-functions.def
11957         (vfmsac_frm): New function definition.
11959 2023-08-04  Pan Li  <pan2.li@intel.com>
11961         Revert:
11962         2023-08-04  Pan Li  <pan2.li@intel.com>
11964         * config/riscv/riscv-vector-builtins-bases.cc
11965         (class vfnmsac_frm): New class for vfnmsac frm.
11966         (vfnmsac_frm_obj): New declaration.
11967         (BASE): Ditto.
11968         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
11969         * config/riscv/riscv-vector-builtins-functions.def
11970         (vfnmsac_frm): New function definition.
11972 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
11974         * config/avr/avr-mcus.def (avr64dd14, avr64dd20, avr64dd28, avr64dd32)
11975         (avr64ea28, avr64ea32, avr64ea48, attiny424, attiny426, attiny427)
11976         (attiny824, attiny826, attiny827, attiny1624, attiny1626, attiny1627)
11977         (attiny3224, attiny3226, attiny3227, avr16dd14, avr16dd20, avr16dd28)
11978         (avr16dd32, avr32dd14, avr32dd20, avr32dd28, avr32dd32)
11979         (attiny102, attiny104): New devices.
11980         * doc/avr-mmcu.texi: Regenerate.
11982 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
11984         * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
11985         and PM_OFFSET entries.
11987 2023-08-04  Andrew Pinski  <apinski@marvell.com>
11989         PR tree-optimization/110874
11990         * gimple-match-head.cc (gimple_bit_not_with_nop): New declaration.
11991         (gimple_maybe_cmp): Likewise.
11992         (gimple_bitwise_inverted_equal_p): Rewrite to use gimple_bit_not_with_nop
11993         and gimple_maybe_cmp instead of being recursive.
11994         * match.pd (bit_not_with_nop): New match pattern.
11995         (maybe_cmp): Likewise.
11997 2023-08-04  Drew Ross  <drross@redhat.com>
11999         PR middle-end/101955
12000         * match.pd ((signed x << c) >> c): New canonicalization.
12002 2023-08-04  Pan Li  <pan2.li@intel.com>
12004         * config/riscv/riscv-vector-builtins-bases.cc
12005         (class vfnmsac_frm): New class for vfnmsac frm.
12006         (vfnmsac_frm_obj): New declaration.
12007         (BASE): Ditto.
12008         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12009         * config/riscv/riscv-vector-builtins-functions.def
12010         (vfnmsac_frm): New function definition.
12012 2023-08-04  Pan Li  <pan2.li@intel.com>
12014         * config/riscv/riscv-vector-builtins-bases.cc
12015         (class vfmsac_frm): New class for vfmsac frm.
12016         (vfmsac_frm_obj): New declaration.
12017         (BASE): Ditto.
12018         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12019         * config/riscv/riscv-vector-builtins-functions.def
12020         (vfmsac_frm): New function definition.
12022 2023-08-04  Pan Li  <pan2.li@intel.com>
12024         * config/riscv/riscv-vector-builtins-bases.cc
12025         (class vfnmacc_frm): New class for vfnmacc.
12026         (vfnmacc_frm_obj): New declaration.
12027         (BASE): Ditto.
12028         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12029         * config/riscv/riscv-vector-builtins-functions.def
12030         (vfnmacc_frm): New function definition.
12032 2023-08-04  Hao Liu  <hliu@os.amperecomputing.com>
12034         PR target/110625
12035         * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check
12036         STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction.
12038 2023-08-04  Pan Li  <pan2.li@intel.com>
12040         * config/riscv/riscv-vector-builtins-bases.cc
12041         (class vfmacc_frm): New class for vfmacc frm.
12042         (vfmacc_frm_obj): New declaration.
12043         (BASE): Ditto.
12044         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
12045         * config/riscv/riscv-vector-builtins-functions.def
12046         (vfmacc_frm): New function definition.
12047         * config/riscv/riscv-vector-builtins.cc
12048         (function_expander::use_ternop_insn): Add frm operand support.
12049         * config/riscv/vector.md: Add vfmuladd to frm_mode.
12051 2023-08-04  Pan Li  <pan2.li@intel.com>
12053         * config/riscv/riscv-vector-builtins-bases.cc
12054         (vfwmul_frm_obj): New declaration.
12055         (vfwmul_frm): Ditto.
12056         * config/riscv/riscv-vector-builtins-bases.h:
12057         (vfwmul_frm): Ditto.
12058         * config/riscv/riscv-vector-builtins-functions.def
12059         (vfwmul_frm): New function definition.
12060         * config/riscv/vector.md: (frm_mode) Add vfwmul to frm_mode.
12062 2023-08-04  Pan Li  <pan2.li@intel.com>
12064         * config/riscv/riscv-vector-builtins-bases.cc
12065         (binop_frm): New declaration.
12066         (reverse_binop_frm): Likewise.
12067         (BASE): Likewise.
12068         * config/riscv/riscv-vector-builtins-bases.h:
12069         (vfdiv_frm): New extern declaration.
12070         (vfrdiv_frm): Likewise.
12071         * config/riscv/riscv-vector-builtins-functions.def
12072         (vfdiv_frm): New function definition.
12073         (vfrdiv_frm): Likewise.
12074         * config/riscv/vector.md: Add vfdiv to frm_mode.
12076 2023-08-03  Jan Hubicka  <jh@suse.cz>
12078         * tree-cfg.cc (print_loop_info): Print entry count.
12080 2023-08-03  Jan Hubicka  <jh@suse.cz>
12082         * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
12084 2023-08-03  Jan Hubicka  <jh@suse.cz>
12086         PR bootstrap/110857
12087         * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
12088         unadjusted_exit_count.
12090 2023-08-03  Aldy Hernandez  <aldyh@redhat.com>
12092         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
12093         value/mask.
12095 2023-08-03  Xiao Zeng  <zengxiao@eswincomputing.com>
12097         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
12098         various Zicond patterns.
12099         * config/riscv/riscv.md (mov<mode>cc): Allow TARGET_ZICOND.  Use
12100         sfb_alu_operand for both arms of the conditional move.
12101         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
12103 2023-08-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
12105         PR target/107844
12106         PR target/107479
12107         PR target/107480
12108         PR target/107481
12109         * config.gcc: Added core-builtins.cc and .o files.
12110         * config/bpf/bpf-passes.def: Removed file.
12111         * config/bpf/bpf-protos.h (bpf_add_core_reloc,
12112         bpf_replace_core_move_operands): New prototypes.
12113         * config/bpf/bpf.cc (enum bpf_builtins, is_attr_preserve_access,
12114         maybe_make_core_relo, bpf_core_field_info, bpf_core_compute,
12115         bpf_core_get_index, bpf_core_new_decl, bpf_core_walk,
12116         bpf_is_valid_preserve_field_info_arg, is_attr_preserve_access,
12117         handle_attr_preserve, pass_data_bpf_core_attr, pass_bpf_core_attr):
12118         Removed.
12119         (def_builtin, bpf_expand_builtin, bpf_resolve_overloaded_builtin): Changed.
12120         * config/bpf/bpf.md (define_expand mov<MM:mode>): Changed.
12121         (mov_reloc_core<mode>): Added.
12122         * config/bpf/core-builtins.cc (struct cr_builtin, enum
12123         cr_decision struct cr_local, struct cr_final, struct
12124         core_builtin_helpers, enum bpf_plugin_states): Added types.
12125         (builtins_data, core_builtin_helpers, core_builtin_type_defs):
12126         Added variables.
12127         (allocate_builtin_data, get_builtin-data, search_builtin_data,
12128         remove_parser_plugin, compare_same_kind, compare_same_ptr_expr,
12129         compare_same_ptr_type, is_attr_preserve_access, core_field_info,
12130         bpf_core_get_index, compute_field_expr,
12131         pack_field_expr_for_access_index, pack_field_expr_for_preserve_field,
12132         process_field_expr, pack_enum_value, process_enum_value, pack_type,
12133         process_type, bpf_require_core_support, make_core_relo, read_kind,
12134         kind_access_index, kind_preserve_field_info, kind_enum_value,
12135         kind_type_id, kind_preserve_type_info, get_core_builtin_fndecl_for_type,
12136         bpf_handle_plugin_finish_type, bpf_init_core_builtins,
12137         construct_builtin_core_reloc, bpf_resolve_overloaded_core_builtin,
12138         bpf_expand_core_builtin, bpf_add_core_reloc,
12139         bpf_replace_core_move_operands): Added functions.
12140         * config/bpf/core-builtins.h (enum bpf_builtins): Added.
12141         (bpf_init_core_builtins, bpf_expand_core_builtin,
12142         bpf_resolve_overloaded_core_builtin): Added functions.
12143         * config/bpf/coreout.cc (struct bpf_core_extra): Added.
12144         (bpf_core_reloc_add, output_asm_btfext_core_reloc): Changed.
12145         * config/bpf/coreout.h (bpf_core_reloc_add) Changed prototype.
12146         * config/bpf/t-bpf: Added core-builtins.o.
12147         * doc/extend.texi: Added documentation for new BPF builtins.
12149 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
12151         * gimple-range-fold.cc (fold_using_range::range_of_range_op): Add
12152         ranges to the call to relation_fold_and_or.
12153         (fold_using_range::relation_fold_and_or): Add op1 and op2 ranges.
12154         (fur_source::register_outgoing_edges): Add op1 and op2 ranges.
12155         * gimple-range-fold.h (relation_fold_and_or): Adjust params.
12156         * gimple-range-gori.cc (gori_compute::compute_operand_range): Add
12157         a varying op1 and op2 to call.
12158         * range-op-float.cc (range_operator::op1_op2_relation): New dafaults.
12159         (operator_equal::op1_op2_relation): New float version.
12160         (operator_not_equal::op1_op2_relation): Ditto.
12161         (operator_lt::op1_op2_relation): Ditto.
12162         (operator_le::op1_op2_relation): Ditto.
12163         (operator_gt::op1_op2_relation): Ditto.
12164         (operator_ge::op1_op2_relation) Ditto.
12165         * range-op-mixed.h (operator_equal::op1_op2_relation): New float
12166         prototype.
12167         (operator_not_equal::op1_op2_relation): Ditto.
12168         (operator_lt::op1_op2_relation): Ditto.
12169         (operator_le::op1_op2_relation): Ditto.
12170         (operator_gt::op1_op2_relation): Ditto.
12171         (operator_ge::op1_op2_relation): Ditto.
12172         * range-op.cc (range_op_handler::op1_op2_relation): Dispatch new
12173         variations.
12174         (range_operator::op1_op2_relation): Add extra params.
12175         (operator_equal::op1_op2_relation): Ditto.
12176         (operator_not_equal::op1_op2_relation): Ditto.
12177         (operator_lt::op1_op2_relation): Ditto.
12178         (operator_le::op1_op2_relation): Ditto.
12179         (operator_gt::op1_op2_relation): Ditto.
12180         (operator_ge::op1_op2_relation): Ditto.
12181         * range-op.h (range_operator): New prototypes.
12182         (range_op_handler): Ditto.
12184 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
12186         * gimple-range-gori.cc (gori_compute::compute_operand1_range):
12187         Use identity relation.
12188         (gori_compute::compute_operand2_range): Ditto.
12189         * value-relation.cc (get_identity_relation): New.
12190         * value-relation.h (get_identity_relation): New prototype.
12192 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
12194         * value-range.h (Value_Range::set_varying): Set the type.
12195         (Value_Range::set_zero): Ditto.
12196         (Value_Range::set_nonzero): Ditto.
12198 2023-08-03  Jeff Law  <jeffreyalaw@gmail.com>
12200         * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
12201         recent commit.
12203 2023-08-03  Pan Li  <pan2.li@intel.com>
12205         * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
12207 2023-08-03  Richard Sandiford  <richard.sandiford@arm.com>
12209         * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
12211 2023-08-03  Richard Biener  <rguenther@suse.de>
12213         PR tree-optimization/110838
12214         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
12215         Adjust the shift operand of RSHIFT_EXPRs.
12217 2023-08-03  Richard Biener  <rguenther@suse.de>
12219         PR tree-optimization/110702
12220         * tree-ssa-loop-ivopts.cc (rewrite_use_address): When
12221         we created a NULL pointer based access rewrite that to
12222         a LEA.
12224 2023-08-03  Richard Biener  <rguenther@suse.de>
12226         * tree-ssa-sink.cc: Include tree-ssa-live.h.
12227         (pass_sink_code::execute): Instantiate virtual_operand_live
12228         and pass it down.
12229         (sink_code_in_bb): Pass down virtual_operand_live.
12230         (statement_sink_location): Get virtual_operand_live and
12231         verify we are not sinking loads across stores by looking up
12232         the live virtual operand at the sink location.
12234 2023-08-03  Richard Biener  <rguenther@suse.de>
12236         * tree-ssa-live.h (class virtual_operand_live): New.
12237         * tree-ssa-live.cc (virtual_operand_live::init): New.
12238         (virtual_operand_live::get_live_in): Likewise.
12239         (virtual_operand_live::get_live_out): Likewise.
12241 2023-08-03  Richard Biener  <rguenther@suse.de>
12243         * passes.def: Exchange loop splitting and final value
12244         replacement passes.
12246 2023-08-03  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
12248         * config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
12249         New function which handles bswap patterns for vec_perm_const.
12250         (vectorize_vec_perm_const_1): Call new function.
12251         * config/s390/vector.md (*bswap<mode>): Fix operands in output
12252         template.
12253         (*vstbr<mode>): New insn.
12255 2023-08-03  Alexandre Oliva  <oliva@adacore.com>
12257         * config/vxworks-smp.opt: New.  Introduce -msmp.
12258         * config.gcc: Enable it on powerpc* vxworks prior to 7r*.
12259         * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose
12260         lib_smp when -msmp is present in the command line.
12261         * doc/invoke.texi: Document it.
12263 2023-08-03  Yanzhang Wang  <yanzhang.wang@intel.com>
12265         * config/riscv/riscv.cc (riscv_save_reg_p): Save ra for leaf
12266         when enabling -mno-omit-leaf-frame-pointer
12267         (riscv_option_override): Override omit-frame-pointer.
12268         (riscv_frame_pointer_required): Save s0 for non-leaf function
12269         (TARGET_FRAME_POINTER_REQUIRED): Override defination
12270         * config/riscv/riscv.opt: Add option support.
12272 2023-08-03  Roger Sayle  <roger@nextmovesoftware.com>
12274         PR target/110792
12275         * config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
12276         place operand in a register before gen_<insn>64ti2_doubleword.
12277         (<any_rotate>di3): Likewise, for rotations by 32 bits, place
12278         operand in a register before gen_<insn>32di2_doubleword.
12279         (<any_rotate>32di2_doubleword): Constrain operand to be in register.
12280         (<any_rotate>64ti2_doubleword): Likewise.
12282 2023-08-03  Pan Li  <pan2.li@intel.com>
12284         * config/riscv/riscv-vector-builtins-bases.cc
12285         (vfmul_frm_obj): New declaration.
12286         (Base): Likewise.
12287         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
12288         * config/riscv/riscv-vector-builtins-functions.def
12289         (vfmul_frm): New function definition.
12290         * config/riscv/vector.md: Add vfmul to frm_mode.
12292 2023-08-03  Andrew Pinski  <apinski@marvell.com>
12294         * match.pd (`~X & X`): Check that the types match.
12295         (`~x | x`, `~x ^ x`): Likewise.
12297 2023-08-03  Pan Li  <pan2.li@intel.com>
12299         * config/riscv/riscv-vector-builtins-bases.h: Remove
12300         redudant declaration.
12302 2023-08-03  Pan Li  <pan2.li@intel.com>
12304         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add
12305         vfwsub frm.
12306         * config/riscv/riscv-vector-builtins-bases.h: Add declaration.
12307         * config/riscv/riscv-vector-builtins-functions.def (vfwsub_frm):
12308         Add vfwsub function definitions.
12310 2023-08-02  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
12312         PR rtl-optimization/110867
12313         * combine.cc (simplify_compare_const): Try the optimization only
12314         in case the constant fits into the comparison mode.
12316 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
12318         * config/riscv/zicond.md: Remove incorrect zicond patterns and
12319         renumber/rename them.
12320         (zero.nez.<GPR:MODE><X:mode>.opt2): Fix output string.
12322 2023-08-02  Richard Biener  <rguenther@suse.de>
12324         * tree-phinodes.h (add_phi_node_to_bb): Remove.
12325         * tree-phinodes.cc  (add_phi_node_to_bb): Make static.
12327 2023-08-02  Jan Beulich  <jbeulich@suse.com>
12329         * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
12330         two of the alternatives.
12332 2023-08-02  Richard Biener  <rguenther@suse.de>
12334         PR tree-optimization/92335
12335         * tree-ssa-sink.cc (select_best_block): Before loop
12336         optimizations avoid sinking unconditional loads/stores
12337         in innermost loops to conditional executed places.
12339 2023-08-02  Andrew Pinski  <apinski@marvell.com>
12341         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
12342         the comparison operands before comparing them.
12344 2023-08-02  Andrew Pinski  <apinski@marvell.com>
12346         * match.pd (`~X & X`, `~X | X`): Move over to
12347         use bitwise_inverted_equal_p, removing :c as bitwise_inverted_equal_p
12348         handles that already.
12349         Remove range test simplifications to true/false as they
12350         are now handled by these patterns.
12352 2023-08-02  Andrew Pinski  <apinski@marvell.com>
12354         * tree-ssa-phiopt.cc (match_simplify_replacement): Mark's cond
12355         statement's lhs and rhs to check if trivial dead.
12356         Rename inserted_exprs to exprs_maybe_dce; also move it so
12357         bitmap is not allocated if not needed.
12359 2023-08-02  Pan Li  <pan2.li@intel.com>
12361         * config/riscv/riscv-vector-builtins-bases.cc
12362         (class widen_binop_frm): New class for binop frm.
12363         (BASE): Add vfwadd_frm.
12364         * config/riscv/riscv-vector-builtins-bases.h: New declaration.
12365         * config/riscv/riscv-vector-builtins-functions.def
12366         (vfwadd_frm): New function definition.
12367         * config/riscv/riscv-vector-builtins-shapes.cc
12368         (BASE_NAME_MAX_LEN): New macro.
12369         (struct alu_frm_def): Leverage new base class.
12370         (struct build_frm_base): New build base for frm.
12371         (struct widen_alu_frm_def): New struct for widen alu frm.
12372         (SHAPE): Add widen_alu_frm shape.
12373         * config/riscv/riscv-vector-builtins-shapes.h: New declaration.
12374         * config/riscv/vector.md (frm_mode): Add vfwalu type.
12376 2023-08-02  Jan Hubicka  <jh@suse.cz>
12378         * cfgloop.h (loop_count_in): Declare.
12379         * cfgloopanal.cc (expected_loop_iterations_by_profile): Use count_in.
12380         (loop_count_in): Move here from ...
12381         * cfgloopmanip.cc (loop_count_in): ... here.
12382         (scale_loop_profile): Improve dumping; cast iteration bound to sreal.
12384 2023-08-02  Jan Hubicka  <jh@suse.cz>
12386         * cfg.cc (scale_strictly_dominated_blocks): New function.
12387         * cfg.h (scale_strictly_dominated_blocks): Declare.
12388         * tree-cfg.cc (fold_loop_internal_call): Fixup CFG profile.
12390 2023-08-02  Richard Biener  <rguenther@suse.de>
12392         PR rtl-optimization/110587
12393         * lra-spills.cc (return_regno_p): Remove.
12394         (regno_in_use_p): Likewise.
12395         (lra_final_code_change): Do not remove noop moves
12396         between hard registers.
12398 2023-08-02  liuhongt  <hongtao.liu@intel.com>
12400         PR target/81904
12401         * config/i386/sse.md (vec_fmaddsub<mode>4): Extend to vector
12402         HFmode, use mode iterator VFH instead.
12403         (vec_fmsubadd<mode>4): Ditto.
12404         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
12405         Remove scalar mode from iterator, use VFH_AVX512VL instead.
12406         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
12407         Ditto.
12409 2023-08-02  liuhongt  <hongtao.liu@intel.com>
12411         * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
12412         pre_reload define_insn_and_split.
12414 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
12416         * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
12417         using Zicond to implement some conditional moves.
12419 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
12421         * config/riscv/zicond.md: Use the X iterator instead of ANYI
12422         on the comparison input operands.
12424 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
12426         * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add
12427         Zicond costing.
12428         (case SET): For INSNs that just set a REG, take the cost from the
12429         SET_SRC.
12430         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
12432 2023-08-02  Hu, Lin1  <lin1.hu@intel.com>
12434         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_INT8_SET):
12435         Change OPTION_MASK_ISA2_AMX_TILE to OPTION_MASK_ISA2_AMX_TILE_SET.
12436         (OPTION_MASK_ISA2_AMX_BF16_SET): Ditto
12437         (OPTION_MASK_ISA2_AMX_FP16_SET): Ditto
12438         (OPTION_MASK_ISA2_AMX_COMPLEX_SET): Ditto
12439         (OPTION_MASK_ISA_ABM_SET):
12440         Change OPTION_MASK_ISA_POPCNT to OPTION_MASK_ISA_POPCNT_SET.
12442 2023-08-01  Andreas Krebbel  <krebbel@linux.ibm.com>
12444         * config/s390/s390.cc (s390_encode_section_info): Assume external
12445         symbols without explicit alignment to be unaligned if
12446         -munaligned-symbols has been specified.
12447         * config/s390/s390.opt (-munaligned-symbols): New option.
12449 2023-08-01  Richard Ball  <richard.ball@arm.com>
12451         * gimple-fold.cc (fold_ctor_reference):
12452         Add support for poly_int.
12454 2023-08-01  Georg-Johann Lay  <avr@gjlay.de>
12456         PR target/110220
12457         * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
12458         LABEL_NUSES of new conditional branch instruction.
12460 2023-08-01  Jan Hubicka  <jh@suse.cz>
12462         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
12463         constant prologue peeling.
12465 2023-08-01  Christophe Lyon  <christophe.lyon@linaro.org>
12467         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
12469 2023-08-01  Pan Li  <pan2.li@intel.com>
12470             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12472         * config/riscv/riscv.cc (DYNAMIC_FRM_RTL): New macro.
12473         (STATIC_FRM_P): Ditto.
12474         (struct mode_switching_info): New struct for mode switching.
12475         (struct machine_function): Add new field mode switching.
12476         (riscv_emit_frm_mode_set): Add DYN_CALL emit.
12477         (riscv_frm_adjust_mode_after_call): New function for call mode.
12478         (riscv_frm_emit_after_call_in_bb_end): New function for emit
12479         insn when call as the end of bb.
12480         (riscv_frm_mode_needed): New function for frm mode needed.
12481         (frm_unknown_dynamic_p): Remove call check.
12482         (riscv_mode_needed): Extrac function for frm.
12483         (riscv_frm_mode_after): Add DYN_CALL after.
12484         (riscv_mode_entry): Remove backup rtl initialization.
12485         * config/riscv/vector.md (frm_mode): Add dyn_call.
12486         (fsrmsi_restore_exit): Rename to _volatile.
12487         (fsrmsi_restore_volatile): Likewise.
12489 2023-08-01  Pan Li  <pan2.li@intel.com>
12491         * config/riscv/riscv-vector-builtins-bases.cc
12492         (class reverse_binop_frm): Add new template for reversed frm.
12493         (vfsub_frm_obj): New obj.
12494         (vfrsub_frm_obj): Likewise.
12495         * config/riscv/riscv-vector-builtins-bases.h:
12496         (vfsub_frm): New declaration.
12497         (vfrsub_frm): Likewise.
12498         * config/riscv/riscv-vector-builtins-functions.def
12499         (vfsub_frm): New function define.
12500         (vfrsub_frm): Likewise.
12502 2023-08-01  Andrew Pinski  <apinski@marvell.com>
12504         PR tree-optimization/93044
12505         * match.pd (nested int casts): A truncation (to the same size or smaller)
12506         can always remove the inner cast.
12508 2023-07-31  Hamza Mahfooz  <someguy@effective-light.com>
12510         PR c/65213
12511         * doc/invoke.texi (-Wmissing-variable-declarations): Document
12512         new option.
12514 2023-07-31  Andrew Pinski  <apinski@marvell.com>
12516         PR tree-optimization/106164
12517         * match.pd (`a != b & a <= b`, `a != b & a >= b`,
12518         `a == b | a < b`, `a == b | a > b`): Handle these cases
12519         too.
12521 2023-07-31  Andrew Pinski  <apinski@marvell.com>
12523         PR tree-optimization/106164
12524         * match.pd: Extend the `(X CMP1 CST1) AND/IOR (X CMP2 CST2)`
12525         patterns to support `(X CMP1 Y) AND/IOR (X CMP2 Y)`.
12527 2023-07-31  Andrew Pinski  <apinski@marvell.com>
12529         PR tree-optimization/100864
12530         * generic-match-head.cc (bitwise_inverted_equal_p): New function.
12531         * gimple-match-head.cc (bitwise_inverted_equal_p): New macro.
12532         (gimple_bitwise_inverted_equal_p): New function.
12533         * match.pd ((~x | y) & x): Use bitwise_inverted_equal_p
12534         instead of direct matching bit_not.
12536 2023-07-31  Costas Argyris  <costas.argyris@gmail.com>
12538         PR driver/77576
12539         * gcc-ar.cc (main): Expand argv and use
12540         temporary response file to call ar if any
12541         expansions were made.
12543 2023-07-31  Andrew MacLeod  <amacleod@redhat.com>
12545         PR tree-optimization/110582
12546         * gimple-range-fold.cc (fur_list::get_operand): Do not use the
12547         range vector for non-ssa names.
12549 2023-07-31  David Malcolm  <dmalcolm@redhat.com>
12551         PR analyzer/109361
12552         * diagnostic-client-data-hooks.h (class sarif_object): New forward
12553         decl.
12554         (diagnostic_client_data_hooks::add_sarif_invocation_properties):
12555         New vfunc.
12556         * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h".
12557         (class sarif_invocation): Inherit from sarif_object rather than
12558         json::object.
12559         (class sarif_result): Likewise.
12560         (class sarif_ice_notification): Likewise.
12561         (sarif_object::get_or_create_properties): New.
12562         (sarif_invocation::prepare_to_flush): Add "context" param.  Use it
12563         to call the context's add_sarif_invocation_properties hook.
12564         (sarif_builder::flush_to_file): Pass m_context to
12565         sarif_invocation::prepare_to_flush.
12566         * diagnostic-format-sarif.h: New header.
12567         * doc/invoke.texi (Developer Options): Clarify that -ftime-report
12568         writes to stderr.  Document that if SARIF diagnostic output is
12569         requested then any timing information is written in JSON form as
12570         part of the SARIF output, rather than to stderr.
12571         * timevar.cc: Include "json.h".
12572         (timer::named_items::m_hash_map): Split out type into...
12573         (timer::named_items::hash_map_t): ...this new typedef.
12574         (timer::named_items::make_json): New function.
12575         (timevar_diff): New function.
12576         (make_json_for_timevar_time_def): New function.
12577         (timer::timevar_def::make_json): New function.
12578         (timer::make_json): New function.
12579         * timevar.h (class json::value): New forward decl.
12580         (timer::make_json): New decl.
12581         (timer::timevar_def::make_json): New decl.
12582         * tree-diagnostic-client-data-hooks.cc: Include
12583         "diagnostic-format-sarif.h" and "timevar.h".
12584         (compiler_data_hooks::add_sarif_invocation_properties): New vfunc
12585         implementation.
12587 2023-07-31  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
12589         * combine.cc (simplify_compare_const): Narrow comparison of
12590         memory and constant.
12591         (try_combine): Adapt new function signature.
12592         (simplify_comparison): Adapt new function signature.
12594 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
12596         * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
12597         variable.
12598         (expand_vector_init_insert_elems): Ditto.
12600 2023-07-31  Hao Liu  <hliu@os.amperecomputing.com>
12602         PR target/110625
12603         * config/aarch64/aarch64.cc (count_ops): Only '* count' for
12604         single_defuse_cycle while counting reduction_latency.
12606 2023-07-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
12608         * internal-fn.def (DEF_INTERNAL_COND_FN): New macro.
12609         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
12610         (COND_ADD): Remove.
12611         (COND_SUB): Ditto.
12612         (COND_MUL): Ditto.
12613         (COND_DIV): Ditto.
12614         (COND_MOD): Ditto.
12615         (COND_RDIV): Ditto.
12616         (COND_MIN): Ditto.
12617         (COND_MAX): Ditto.
12618         (COND_FMIN): Ditto.
12619         (COND_FMAX): Ditto.
12620         (COND_AND): Ditto.
12621         (COND_IOR): Ditto.
12622         (COND_XOR): Ditto.
12623         (COND_SHL): Ditto.
12624         (COND_SHR): Ditto.
12625         (COND_FMA): Ditto.
12626         (COND_FMS): Ditto.
12627         (COND_FNMA): Ditto.
12628         (COND_FNMS): Ditto.
12629         (COND_NEG): Ditto.
12630         (COND_LEN_ADD): Ditto.
12631         (COND_LEN_SUB): Ditto.
12632         (COND_LEN_MUL): Ditto.
12633         (COND_LEN_DIV): Ditto.
12634         (COND_LEN_MOD): Ditto.
12635         (COND_LEN_RDIV): Ditto.
12636         (COND_LEN_MIN): Ditto.
12637         (COND_LEN_MAX): Ditto.
12638         (COND_LEN_FMIN): Ditto.
12639         (COND_LEN_FMAX): Ditto.
12640         (COND_LEN_AND): Ditto.
12641         (COND_LEN_IOR): Ditto.
12642         (COND_LEN_XOR): Ditto.
12643         (COND_LEN_SHL): Ditto.
12644         (COND_LEN_SHR): Ditto.
12645         (COND_LEN_FMA): Ditto.
12646         (COND_LEN_FMS): Ditto.
12647         (COND_LEN_FNMA): Ditto.
12648         (COND_LEN_FNMS): Ditto.
12649         (COND_LEN_NEG): Ditto.
12650         (ADD): New macro define.
12651         (SUB): Ditto.
12652         (MUL): Ditto.
12653         (DIV): Ditto.
12654         (MOD): Ditto.
12655         (RDIV): Ditto.
12656         (MIN): Ditto.
12657         (MAX): Ditto.
12658         (FMIN): Ditto.
12659         (FMAX): Ditto.
12660         (AND): Ditto.
12661         (IOR): Ditto.
12662         (XOR): Ditto.
12663         (SHL): Ditto.
12664         (SHR): Ditto.
12665         (FMA): Ditto.
12666         (FMS): Ditto.
12667         (FNMA): Ditto.
12668         (FNMS): Ditto.
12669         (NEG): Ditto.
12671 2023-07-31  Roger Sayle  <roger@nextmovesoftware.com>
12673         PR target/110843
12674         * config/i386/i386-features.cc (compute_convert_gain): Check
12675         TARGET_AVX512VL (not TARGET_AVX512F) when considering V2DImode
12676         and V4SImode rotates in STV.
12677         (general_scalar_chain::convert_rotate): Likewise.
12679 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
12681         * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`.
12682         * config/riscv/riscv-protos.h (get_mask_mode): Update return
12683         type.
12684         * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove
12685         `.require ()`.
12686         (emit_vlmax_insn): Ditto.
12687         (emit_vlmax_fp_insn): Ditto.
12688         (emit_vlmax_ternary_insn): Ditto.
12689         (emit_vlmax_fp_ternary_insn): Ditto.
12690         (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
12691         (emit_nonvlmax_insn): Ditto.
12692         (emit_vlmax_slide_insn): Ditto.
12693         (emit_nonvlmax_slide_tu_insn): Ditto.
12694         (emit_vlmax_merge_insn): Ditto.
12695         (emit_vlmax_masked_insn): Ditto.
12696         (emit_nonvlmax_masked_insn): Ditto.
12697         (emit_vlmax_masked_store_insn): Ditto.
12698         (emit_nonvlmax_masked_store_insn): Ditto.
12699         (emit_vlmax_masked_mu_insn): Ditto.
12700         (emit_nonvlmax_tu_insn): Ditto.
12701         (emit_nonvlmax_fp_tu_insn): Ditto.
12702         (emit_scalar_move_insn): Ditto.
12703         (emit_vlmax_compress_insn): Ditto.
12704         (emit_vlmax_reduction_insn): Ditto.
12705         (emit_vlmax_fp_reduction_insn): Ditto.
12706         (emit_nonvlmax_fp_reduction_insn): Ditto.
12707         (expand_vec_series): Ditto.
12708         (expand_vector_init_merge_repeating_sequence): Ditto.
12709         (expand_vec_perm): Ditto.
12710         (shuffle_merge_patterns): Ditto.
12711         (shuffle_compress_patterns): Ditto.
12712         (shuffle_decompress_patterns): Ditto.
12713         (expand_reduction): Ditto.
12714         (get_mask_mode): Update return type.
12715         * config/riscv/riscv.cc (riscv_get_mask_mode): Check vector type
12716         is valid, and use new get_mask_mode interface.
12718 2023-07-31  Pan Li  <pan2.li@intel.com>
12720         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
12721         Move rm suffix before mask.
12723 2023-07-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12725         * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern.
12726         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec
12727         support.
12729 2023-07-29  Roger Sayle  <roger@nextmovesoftware.com>
12731         PR target/110790
12732         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
12733         (extzv<mode>): Likewise.
12734         (insv<mode>): Likewise.
12735         (*testqi_ext_3): Likewise.
12736         (*btr<mode>_2): Likewise.
12737         (define_split): Likewise.
12738         (*btsq_imm): Likewise.
12739         (*btrq_imm): Likewise.
12740         (*btcq_imm): Likewise.
12741         (define_peephole2 x3): Likewise.
12742         (*bt<mode>): Likewise
12743         (*bt<mode>_mask): New define_insn_and_split.
12744         (*jcc_bt<mode>): Use QImode for offsets.
12745         (*jcc_bt<mode>_1): Delete obsolete pattern.
12746         (*jcc_bt<mode>_mask): Use QImode offsets.
12747         (*jcc_bt<mode>_mask_1): Likewise.
12748         (define_split): Likewise.
12749         (*bt<mode>_setcqi): Likewise.
12750         (*bt<mode>_setncqi): Likewise.
12751         (*bt<mode>_setnc<mode>): Likewise.
12752         (*bt<mode>_setncqi_2): Likewise.
12753         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
12754         (bmi2_bzhi_<mode>3): Use QImode offsets.
12755         (*bmi2_bzhi_<mode>3): Likewise.
12756         (*bmi2_bzhi_<mode>3_1): Likewise.
12757         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
12758         (@tbm_bextri_<mode>): Likewise.
12760 2023-07-29  Jan Hubicka  <jh@suse.cz>
12762         * profile-count.cc (profile_probability::sqrt): New member function.
12763         (profile_probability::pow): Likewise.
12764         * profile-count.h: (profile_probability::sqrt): Declare
12765         (profile_probability::pow): Likewise.
12766         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
12768 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
12770         * gimple-range-cache.cc (ssa_cache::merge_range): New.
12771         (ssa_lazy_cache::merge_range): New.
12772         * gimple-range-cache.h (class ssa_cache): Adjust protoypes.
12773         (class ssa_lazy_cache): Ditto.
12774         * gimple-range.cc (assume_query::calculate_op): Use merge_range.
12776 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
12778         * tree-ssa-propagate.cc (substitute_and_fold_engine::value_on_edge):
12779         Move from value-query.cc.
12780         (substitute_and_fold_engine::value_of_stmt): Ditto.
12781         (substitute_and_fold_engine::range_of_expr): New.
12782         * tree-ssa-propagate.h (substitute_and_fold_engine): Inherit from
12783         range_query.  New prototypes.
12784         * value-query.cc (value_query::value_on_edge): Relocate.
12785         (value_query::value_of_stmt): Ditto.
12786         * value-query.h (class value_query): Remove.
12787         (class range_query): Remove base class.  Adjust prototypes.
12789 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
12791         PR tree-optimization/110205
12792         * gimple-range-cache.h (ranger_cache::m_estimate): Delete.
12793         * range-op-mixed.h (operator_bitwise_xor::op1_op2_relation_effect):
12794         Add final override.
12795         * range-op.cc (operator_lshift): Add missing final overrides.
12796         (operator_rshift): Ditto.
12798 2023-07-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
12800         * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
12801         optimizations in BPF target.
12803 2023-07-28  Honza  <jh@ryzen4.suse.cz>
12805         * cfgloopmanip.cc (loop_count_in): Break out from ...
12806         (loop_exit_for_scaling): Break out from ...
12807         (update_loop_exit_probability_scale_dom_bbs): Break out from ...;
12808         add more sanity check and debug info.
12809         (scale_loop_profile): ... here.
12810         (create_empty_loop_on_edge): Fix whitespac.
12811         * cfgloopmanip.h (update_loop_exit_probability_scale_dom_bbs): Declare.
12812         * loop-unroll.cc (unroll_loop_constant_iterations): Use
12813         update_loop_exit_probability_scale_dom_bbs.
12814         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Remove.
12815         (tree_transform_and_unroll_loop): Use
12816         update_loop_exit_probability_scale_dom_bbs.
12817         * tree-ssa-loop-split.cc (split_loop): Use
12818         update_loop_exit_probability_scale_dom_bbs.
12820 2023-07-28  Jan Hubicka  <jh@suse.cz>
12822         PR middle-end/77689
12823         * tree-ssa-loop-split.cc: Include value-query.h.
12824         (split_at_bb_p): Analyze cases where EQ/NE can be turned
12825         into LT/LE/GT/GE; return updated guard code.
12826         (split_loop): Use guard code.
12828 2023-07-28  Roger Sayle  <roger@nextmovesoftware.com>
12829             Richard Biener  <rguenther@suse.de>
12831         PR middle-end/28071
12832         PR rtl-optimization/110587
12833         * expr.cc (emit_group_load_1): Simplify logic for calling
12834         force_reg on ORIG_SRC, to avoid making a copy if the source
12835         is already in a pseudo register.
12837 2023-07-28  Jan Hubicka  <jh@suse.cz>
12839         PR middle-end/106923
12840         * tree-ssa-loop-split.cc (connect_loops): Change probability
12841         of the test preconditioning second loop to very_likely.
12842         (fix_loop_bb_probability): Handle correctly case where
12843         on of the arms of the conditional is empty.
12844         (split_loop): Fold the test guarding first condition to
12845         see if it is constant true; Set correct entry block
12846         probabilities of the split loops; determine correct loop
12847         eixt probabilities.
12849 2023-07-28  xuli  <xuli1@eswincomputing.com>
12851         * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
12852         vsadd[u] and vssub[u].
12853         * config/riscv/vector.md: Ditto.
12855 2023-07-28  Jan Hubicka  <jh@suse.cz>
12857         * tree-ssa-loop-split.cc (split_loop): Also support NE driven
12858         loops when IV test is not overflowing.
12860 2023-07-28  liuhongt  <hongtao.liu@intel.com>
12862         PR target/110788
12863         * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add
12864         UNSPEC_MASKOP.
12865         (avx512cd_maskw_vec_dup<mode>): Ditto.
12867 2023-07-27  David Faust  <david.faust@oracle.com>
12869         PR target/110782
12870         PR target/110784
12871         * config/bpf/bpf.opt (msmov): New option.
12872         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
12873         * config/bpf/bpf.md (*extendsidi2): New.
12874         (extendhidi2): New.
12875         (extendqidi2): New.
12876         (extendsisi2): New.
12877         (extendhisi2): New.
12878         (extendqisi2): New.
12879         * doc/invoke.texi (Option Summary): Add -msmov eBPF option.
12880         (eBPF Options): Add -m[no-]smov.  Document that -mcpu=v4
12881         also enables -msmov.
12883 2023-07-27  David Faust  <david.faust@oracle.com>
12885         * doc/invoke.texi (Option Summary): Remove -mkernel eBPF option.
12886         Add -mbswap and -msdiv eBPF options.
12887         (eBPF Options): Remove -mkernel.  Add -mno-{jmpext, jmp32,
12888         alu32, v3-atomics, bswap, sdiv}.  Document that -mcpu=v4 also
12889         enables -msdiv.
12891 2023-07-27  David Faust  <david.faust@oracle.com>
12893         * config/bpf/bpf.md (add<AM:mode>3): Use %w2 instead of %w1
12894         in pseudo-C dialect output template.
12895         (sub<AM:mode>3): Likewise.
12897 2023-07-27  Jan Hubicka  <jh@suse.cz>
12899         * tree-vect-loop.cc (optimize_mask_stores): Make store
12900         likely.
12902 2023-07-27  Jan Hubicka  <jh@suse.cz>
12904         * cfgloop.h (single_dom_exit): Declare.
12905         * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare.
12906         * cfgrtl.cc (struct cfg_hooks): Fix comment.
12907         * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge.
12908         * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here.
12909         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling):
12910         Break out from ...
12911         (tree_transform_and_unroll_loop): ... here;
12913 2023-07-27  Jan Hubicka  <jh@suse.cz>
12915         * cfgloopmanip.cc (scale_dominated_blocks_in_loop): Move here from
12916         tree-ssa-loop-manip.cc and avoid recursion.
12917         (scale_loop_profile): Use scale_dominated_blocks_in_loop.
12918         (duplicate_loop_body_to_header_edge): Add DLTHE_FLAG_FLAT_PROFILE
12919         flag.
12920         * cfgloopmanip.h (DLTHE_FLAG_FLAT_PROFILE): Define.
12921         (scale_dominated_blocks_in_loop): Declare.
12922         * predict.cc (dump_prediction): Do not ICE on uninitialized probability.
12923         (change_edge_frequency): Remove.
12924         * predict.h (change_edge_frequency): Remove.
12925         * tree-ssa-loop-manip.cc (scale_dominated_blocks_in_loop): Move to
12926         cfgloopmanip.cc.
12927         (niter_for_unrolled_loop): Remove.
12928         (tree_transform_and_unroll_loop): Fix profile update.
12930 2023-07-27  Jan Hubicka  <jh@suse.cz>
12932         * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
12933         to guessed; fix count of new_bb.
12935 2023-07-27  Jan Hubicka  <jh@suse.cz>
12937         * profile-count.h (profile_count::apply_probability): Fix
12938         handling of uninitialized probabilities, optimize scaling
12939         by probability 1.
12941 2023-07-27  Richard Biener  <rguenther@suse.de>
12943         PR tree-optimization/91838
12944         * gimple-match-head.cc: Include attribs.h and asan.h.
12945         * generic-match-head.cc: Likewise.
12946         * match.pd (([rl]shift @0 out-of-bounds) -> zero): New pattern.
12948 2023-07-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12950         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
12951         (ADJUST_ALIGNMENT): Ditto.
12952         (ADJUST_PRECISION): Ditto.
12953         (VLS_MODES): Ditto.
12954         (VECTOR_MODE_WITH_PREFIX): Ditto.
12955         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro.
12956         * config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function.
12957         * config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include.
12958         (legitimize_move): Enable basic VLS modes support.
12959         (get_vlmul): Ditto.
12960         (get_ratio): Ditto.
12961         (get_vector_mode): Ditto.
12962         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes.
12963         * config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function.
12964         (VLS_ENTRY): New macro.
12965         (riscv_v_ext_mode_p): Add vls modes.
12966         (riscv_get_v_regno_alignment): New function.
12967         (riscv_print_operand): Add vls modes.
12968         (riscv_hard_regno_nregs): Ditto.
12969         (riscv_hard_regno_mode_ok): Ditto.
12970         (riscv_regmode_natural_size): Ditto.
12971         (riscv_vectorize_preferred_vector_alignment): Ditto.
12972         * config/riscv/riscv.md: Ditto.
12973         * config/riscv/vector-iterators.md: Ditto.
12974         * config/riscv/vector.md: Ditto.
12975         * config/riscv/autovec-vls.md: New file.
12977 2023-07-27  Pan Li  <pan2.li@intel.com>
12979         * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
12980         (vread_csr): Ditto.
12981         (vwrite_csr): Ditto.
12983 2023-07-27  demin.han  <demin.han@starfivetech.com>
12985         * config/riscv/autovec.md: Delete which_alternative use in split
12987 2023-07-27  Richard Biener  <rguenther@suse.de>
12989         * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
12990         use a worklist ...
12991         (pass_sink_code::execute): ... in the caller.
12993 2023-07-27  Kewen Lin  <linkw@linux.ibm.com>
12994             Richard Biener  <rguenther@suse.de>
12996         PR tree-optimization/110776
12997         * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
12998         as scalar load.
13000 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
13002         * config/riscv/riscv.md: Include zicond.md
13003         * config/riscv/zicond.md: New file.
13005 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
13007         * common/config/riscv/riscv-common.cc: New extension.
13008         * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
13009         (TARGET_ZICOND): New target.
13011 2023-07-26  Carl Love  <cel@us.ibm.com>
13013         * config/rs6000/rs6000-c.cc (find_instance): Add new parameter that
13014         specifies the number of built-in arguments to check.
13015         (altivec_resolve_overloaded_builtin): Update calls to find_instance
13016         to pass the number of built-in arguments to be checked.
13018 2023-07-26  David Faust  <david.faust@oracle.com>
13020         * config/bpf/bpf.opt (mv3-atomics): New option.
13021         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
13022         * config/bpf/bpf.h (enum_reg_class): Add R0 class.
13023         (REG_CLASS_NAMES): Likewise.
13024         (REG_CLASS_CONTENTS): Likewise.
13025         (REGNO_REG_CLASS): Handle R0.
13026         * config/bpf/bpf.md (UNSPEC_XADD): Rename to UNSPEC_AADD.
13027         (UNSPEC_AAND): New unspec.
13028         (UNSPEC_AOR): Likewise.
13029         (UNSPEC_AXOR): Likewise.
13030         (UNSPEC_AFADD): Likewise.
13031         (UNSPEC_AFAND): Likewise.
13032         (UNSPEC_AFOR): Likewise.
13033         (UNSPEC_AFXOR): Likewise.
13034         (UNSPEC_AXCHG): Likewise.
13035         (UNSPEC_ACMPX): Likewise.
13036         (atomic_add<mode>): Use UNSPEC_AADD and atomic type attribute.
13037         Move to...
13038         * config/bpf/atomic.md: ...Here. New file.
13039         * config/bpf/constraints.md (t): New constraint for R0.
13040         * doc/invoke.texi (eBPF Options): Document -mv3-atomics.
13042 2023-07-26  Matthew Malcomson  <matthew.malcomson@arm.com>
13044         * tree-vect-stmts.cc (get_group_load_store_type): Reformat
13045         comment.
13047 2023-07-26  Carl Love  <cel@us.ibm.com>
13049         * config/rs6000/rs6000-builtins.def: Rename
13050         __builtin_altivec_vreplace_un_uv2di as __builtin_altivec_vreplace_un_udi
13051         __builtin_altivec_vreplace_un_uv4si as __builtin_altivec_vreplace_un_usi
13052         __builtin_altivec_vreplace_un_v2df as __builtin_altivec_vreplace_un_df
13053         __builtin_altivec_vreplace_un_v2di as __builtin_altivec_vreplace_un_di
13054         __builtin_altivec_vreplace_un_v4sf as __builtin_altivec_vreplace_un_sf
13055         __builtin_altivec_vreplace_un_v4si as __builtin_altivec_vreplace_un_si.
13056         Rename VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_UV4SI as
13057         VREPLACE_UN_USI, VREPLACE_UN_V2DF as VREPLACE_UN_DF,
13058         VREPLACE_UN_V2DI as VREPLACE_UN_DI, VREPLACE_UN_V4SF as
13059         VREPLACE_UN_SF, VREPLACE_UN_V4SI as VREPLACE_UN_SI.
13060         Rename vreplace_un_v2di as vreplace_un_di, vreplace_un_v4si as
13061         vreplace_un_si, vreplace_un_v2df as vreplace_un_df,
13062         vreplace_un_v2di as vreplace_un_di, vreplace_un_v4sf as
13063         vreplace_un_sf, vreplace_un_v4si as vreplace_un_si.
13064         * config/rs6000/rs6000-c.cc (find_instance): Add case
13065         RS6000_OVLD_VEC_REPLACE_UN.
13066         * config/rs6000/rs6000-overload.def (__builtin_vec_replace_un):
13067         Fix first argument type.  Rename VREPLACE_UN_UV4SI as
13068         VREPLACE_UN_USI, VREPLACE_UN_V4SI as VREPLACE_UN_SI,
13069         VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_V2DI as
13070         VREPLACE_UN_DI, VREPLACE_UN_V4SF as VREPLACE_UN_SF,
13071         VREPLACE_UN_V2DF as VREPLACE_UN_DF.
13072         * config/rs6000/vsx.md (REPLACE_ELT): Rename the mode_iterator
13073         REPLACE_ELT_V for vector modes.
13074         (REPLACE_ELT): New scalar mode iterator.
13075         (REPLACE_ELT_char): Add scalar attributes.
13076         (vreplace_un_<mode>): Change iterator and mode attribute.
13078 2023-07-26  David Malcolm  <dmalcolm@redhat.com>
13080         PR analyzer/104940
13081         * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
13083 2023-07-26  Richard Biener  <rguenther@suse.de>
13085         PR tree-optimization/106081
13086         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
13087         Assign layout -1 to splats.
13089 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
13091         * range-op-mixed.h (class operator_cast): Add update_bitmask.
13092         * range-op.cc (operator_cast::update_bitmask): New.
13093         (operator_cast::fold_range): Call update_bitmask.
13095 2023-07-26  Li Xu  <xuli1@eswincomputing.com>
13097         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Change
13098         scalar type to float16, eliminate warning.
13099         (vfloat16mf4x3_t): Ditto.
13100         (vfloat16mf4x4_t): Ditto.
13101         (vfloat16mf4x5_t): Ditto.
13102         (vfloat16mf4x6_t): Ditto.
13103         (vfloat16mf4x7_t): Ditto.
13104         (vfloat16mf4x8_t): Ditto.
13105         (vfloat16mf2x2_t): Ditto.
13106         (vfloat16mf2x3_t): Ditto.
13107         (vfloat16mf2x4_t): Ditto.
13108         (vfloat16mf2x5_t): Ditto.
13109         (vfloat16mf2x6_t): Ditto.
13110         (vfloat16mf2x7_t): Ditto.
13111         (vfloat16mf2x8_t): Ditto.
13112         (vfloat16m1x2_t): Ditto.
13113         (vfloat16m1x3_t): Ditto.
13114         (vfloat16m1x4_t): Ditto.
13115         (vfloat16m1x5_t): Ditto.
13116         (vfloat16m1x6_t): Ditto.
13117         (vfloat16m1x7_t): Ditto.
13118         (vfloat16m1x8_t): Ditto.
13119         (vfloat16m2x2_t): Ditto.
13120         (vfloat16m2x3_t): Ditto.
13121         (vfloat16m2x4_t): Ditto.
13122         (vfloat16m4x2_t): Ditto.
13123         * config/riscv/vector-iterators.md: add RVVM4x2DF in iterator V4T.
13124         * config/riscv/vector.md: add tuple mode in attr sew.
13126 2023-07-26  Uros Bizjak  <ubizjak@gmail.com>
13128         PR target/110762
13129         * config/i386/i386.md (plusminusmult): New code iterator.
13130         * config/i386/mmx.md (mmxdoublevecmode): New mode attribute.
13131         (movq_<mode>_to_sse): New expander.
13132         (<plusminusmult:insn>v2sf3): Macroize expander from addv2sf3,
13133         subv2sf3 and mulv2sf3 using plusminusmult code iterator.  Rewrite
13134         as a wrapper around V4SFmode operation.
13135         (mmx_addv2sf3): Change operand 1 and operand 2 predicates to
13136         nonimmediate_operand.
13137         (*mmx_addv2sf3): Remove SSE alternatives.  Change operand 1 and
13138         operand 2 predicates to nonimmediate_operand.
13139         (mmx_subv2sf3): Change operand 2 predicate to nonimmediate_operand.
13140         (mmx_subrv2sf3): Change operand 1 predicate to nonimmediate_operand.
13141         (*mmx_subv2sf3): Remove SSE alternatives.  Change operand 1 and
13142         operand 2 predicates to nonimmediate_operand.
13143         (mmx_mulv2sf3): Change operand 1 and operand 2 predicates to
13144         nonimmediate_operand.
13145         (*mmx_mulv2sf3): Remove SSE alternatives.  Change operand 1 and
13146         operand 2 predicates to nonimmediate_operand.
13147         (divv2sf3): Rewrite as a wrapper around V4SFmode operation.
13148         (<smaxmin:code>v2sf3): Ditto.
13149         (mmx_<smaxmin:code>v2sf3): Change operand 1 and operand 2
13150         predicates to nonimmediate_operand.
13151         (*mmx_<smaxmin:code>v2sf3): Remove SSE alternatives.  Change
13152         operand 1 and operand 2 predicates to nonimmediate_operand.
13153         (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
13154         (sqrtv2sf2): Rewrite as a wrapper around V4SFmode operation.
13155         (*mmx_haddv2sf3_low): Ditto.
13156         (*mmx_hsubv2sf3_low): Ditto.
13157         (vec_addsubv2sf3): Ditto.
13158         (*mmx_maskcmpv2sf3_comm): Remove.
13159         (*mmx_maskcmpv2sf3): Remove.
13160         (vec_cmpv2sfv2si): Rewrite as a wrapper around V4SFmode operation.
13161         (vcond<V2FI:mode>v2sf): Ditto.
13162         (fmav2sf4): Ditto.
13163         (fmsv2sf4): Ditto.
13164         (fnmav2sf4): Ditto.
13165         (fnmsv2sf4): Ditto.
13166         (fix_truncv2sfv2si2): Ditto.
13167         (fixuns_truncv2sfv2si2): Ditto.
13168         (mmx_fix_truncv2sfv2si2): Remove SSE alternatives.
13169         Change operand 1 predicate to nonimmediate_operand.
13170         (floatv2siv2sf2): Rewrite as a wrapper around V4SFmode operation.
13171         (floatunsv2siv2sf2): Ditto.
13172         (mmx_floatv2siv2sf2): Remove SSE alternatives.
13173         Change operand 1 predicate to nonimmediate_operand.
13174         (nearbyintv2sf2): Rewrite as a wrapper around V4SFmode operation.
13175         (rintv2sf2): Ditto.
13176         (lrintv2sfv2si2): Ditto.
13177         (ceilv2sf2): Ditto.
13178         (lceilv2sfv2si2): Ditto.
13179         (floorv2sf2): Ditto.
13180         (lfloorv2sfv2si2): Ditto.
13181         (btruncv2sf2): Ditto.
13182         (roundv2sf2): Ditto.
13183         (lroundv2sfv2si2): Ditto.
13184         (*mmx_roundv2sf2): Remove.
13186 2023-07-26  Jose E. Marchesi  <jose.marchesi@oracle.com>
13188         * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
13190 2023-07-26  Richard Biener  <rguenther@suse.de>
13192         PR tree-optimization/110799
13193         * tree-ssa-pre.cc (compute_avail): More thoroughly match
13194         up TBAA behavior of redundant loads.
13196 2023-07-26  Jakub Jelinek  <jakub@redhat.com>
13198         PR tree-optimization/110755
13199         * range-op-float.cc (frange_arithmetic): Change +0 result to -0
13200         for PLUS_EXPR or MINUS_EXPR if -frounding-math, inf is negative and
13201         it is exact op1 + (-op1) or op1 - op1.
13203 2023-07-26  Kewen Lin  <linkw@linux.ibm.com>
13205         PR target/110741
13206         * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
13207         operands output with "x".
13209 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
13211         * range-op.cc (class operator_absu): Add update_bitmask.
13212         (operator_absu::update_bitmask): New.
13214 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
13216         * range-op-mixed.h (class operator_abs): Add update_bitmask.
13217         * range-op.cc (operator_abs::update_bitmask): New.
13219 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
13221         * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
13222         * range-op.cc (operator_bitwise_not::update_bitmask): New.
13224 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
13226         * range-op.cc (update_known_bitmask): Handle unary operators.
13228 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
13230         * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
13232 2023-07-26  Jin Ma  <jinma@linux.alibaba.com>
13234         * config/riscv/riscv.md: Likewise.
13236 2023-07-26  Jan Hubicka  <jh@suse.cz>
13238         * profile-count.cc (profile_count::to_sreal_scale): Value is not know
13239         if we divide by zero.
13241 2023-07-25  David Faust  <david.faust@oracle.com>
13243         * config/bpf/bpf.cc (bpf_print_operand_address): Don't print
13244         enclosing parentheses for pseudo-C dialect.
13245         * config/bpf/bpf.md (zero_exdendhidi2): Add parentheses around
13246         operands of pseudo-C dialect output templates where needed.
13247         (zero_extendqidi2): Likewise.
13248         (zero_extendsidi2): Likewise.
13249         (*mov<MM:mode>): Likewise.
13251 2023-07-25  Aldy Hernandez  <aldyh@redhat.com>
13253         * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
13254         (bit_value_mult_const): Same.
13255         (get_individual_bits): Same.
13257 2023-07-25  Haochen Gui  <guihaoc@gcc.gnu.org>
13259         PR target/103605
13260         * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Gimple
13261         fold RS6000_BIF_XSMINDP and RS6000_BIF_XSMAXDP when fast-math is set.
13262         * config/rs6000/rs6000.md (FMINMAX): New int iterator.
13263         (minmax_op): New int attribute.
13264         (UNSPEC_FMAX, UNSPEC_FMIN): New unspecs.
13265         (f<minmax_op><mode>3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN.
13266         * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set
13267         pattern to fmaxdf3.
13268         (__builtin_vsx_xsmindp): Set pattern to fmindf3.
13270 2023-07-24  David Faust  <david.faust@oracle.com>
13272         * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
13274 2023-07-24  Drew Ross  <drross@redhat.com>
13275             Jakub Jelinek  <jakub@redhat.com>
13277         PR middle-end/109986
13278         * generic-match-head.cc (bitwise_equal_p): New macro.
13279         * gimple-match-head.cc (bitwise_equal_p): New macro.
13280         (gimple_nop_convert): Declare.
13281         (gimple_bitwise_equal_p): Helper for bitwise_equal_p.
13282         * match.pd ((~X | Y) ^ X -> ~(X & Y)): New simplification.
13284 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
13286         * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
13287         single quote rather than backquote in diagnostic.
13289 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
13291         PR target/110783
13292         * config/bpf/bpf.opt: New command-line option -msdiv.
13293         * config/bpf/bpf.md: Conditionalize sdiv/smod on bpf_has_sdiv.
13294         * config/bpf/bpf.cc (bpf_option_override): Initialize
13295         bpf_has_sdiv.
13296         * doc/invoke.texi (eBPF Options): Document -msdiv.
13298 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
13300         * config/riscv/riscv.cc (riscv_option_override): Spell out
13301         greater than and use cannot in diagnostic string.
13303 2023-07-24  Richard Biener  <rguenther@suse.de>
13305         * tree-vectorizer.h (_slp_tree::push_vec_def): Add.
13306         (_slp_tree::vec_stmts): Remove.
13307         (SLP_TREE_VEC_STMTS): Remove.
13308         * tree-vect-slp.cc (_slp_tree::push_vec_def): Define.
13309         (_slp_tree::_slp_tree): Adjust.
13310         (_slp_tree::~_slp_tree): Likewise.
13311         (vect_get_slp_vect_def): Simplify.
13312         (vect_get_slp_defs): Likewise.
13313         (vect_transform_slp_perm_load_1): Adjust.
13314         (vect_add_slp_permutation): Likewise.
13315         (vect_schedule_slp_node): Likewise.
13316         (vectorize_slp_instance_root_stmt): Likewise.
13317         (vect_schedule_scc): Likewise.
13318         * tree-vect-stmts.cc (vectorizable_bswap): Use push_vec_def.
13319         (vectorizable_call): Likewise.
13320         (vectorizable_call): Likewise.
13321         (vect_create_vectorized_demotion_stmts): Likewise.
13322         (vectorizable_conversion): Likewise.
13323         (vectorizable_assignment): Likewise.
13324         (vectorizable_shift): Likewise.
13325         (vectorizable_operation): Likewise.
13326         (vectorizable_load): Likewise.
13327         (vectorizable_condition): Likewise.
13328         (vectorizable_comparison): Likewise.
13329         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Adjust.
13330         (vectorize_fold_left_reduction): Use push_vec_def.
13331         (vect_transform_reduction): Likewise.
13332         (vect_transform_cycle_phi): Likewise.
13333         (vectorizable_lc_phi): Likewise.
13334         (vectorizable_phi): Likewise.
13335         (vectorizable_recurr): Likewise.
13336         (vectorizable_induction): Likewise.
13337         (vectorizable_live_operation): Likewise.
13339 2023-07-24  Richard Biener  <rguenther@suse.de>
13341         * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
13343 2023-07-24  Richard Biener  <rguenther@suse.de>
13345         * config/i386/i386-builtins.cc: Remove tree-vectorizer.h include.
13346         * config/i386/i386-expand.cc: Likewise.
13347         * config/i386/i386-features.cc: Likewise.
13348         * config/i386/i386-options.cc: Likewise.
13350 2023-07-24  Robin Dapp  <rdapp@ventanamicro.com>
13352         * tree-vect-stmts.cc (vectorizable_conversion): Handle
13353         more demotion/promotion for modifier == NONE.
13355 2023-07-24  Roger Sayle  <roger@nextmovesoftware.com>
13357         PR target/110787
13358         PR target/110790
13359         Revert patch.
13360         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
13361         (extzv<mode>): Likewise.
13362         (insv<mode>): Likewise.
13363         (*testqi_ext_3): Likewise.
13364         (*btr<mode>_2): Likewise.
13365         (define_split): Likewise.
13366         (*btsq_imm): Likewise.
13367         (*btrq_imm): Likewise.
13368         (*btcq_imm): Likewise.
13369         (define_peephole2 x3): Likewise.
13370         (*bt<mode>): Likewise
13371         (*bt<mode>_mask): New define_insn_and_split.
13372         (*jcc_bt<mode>): Use QImode for offsets.
13373         (*jcc_bt<mode>_1): Delete obsolete pattern.
13374         (*jcc_bt<mode>_mask): Use QImode offsets.
13375         (*jcc_bt<mode>_mask_1): Likewise.
13376         (define_split): Likewise.
13377         (*bt<mode>_setcqi): Likewise.
13378         (*bt<mode>_setncqi): Likewise.
13379         (*bt<mode>_setnc<mode>): Likewise.
13380         (*bt<mode>_setncqi_2): Likewise.
13381         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
13382         (bmi2_bzhi_<mode>3): Use QImode offsets.
13383         (*bmi2_bzhi_<mode>3): Likewise.
13384         (*bmi2_bzhi_<mode>3_1): Likewise.
13385         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
13386         (@tbm_bextri_<mode>): Likewise.
13388 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
13390         * config/bpf/bpf-opts.h (enum bpf_kernel_version): Remove enum.
13391         * config/bpf/bpf.opt (mkernel): Remove option.
13392         * config/bpf/bpf.cc (bpf_target_macros): Do not define
13393         BPF_KERNEL_VERSION_CODE.
13395 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
13397         PR target/110786
13398         * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default.
13399         (mbswap): New option.
13400         * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4.
13401         * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap.
13402         * config/bpf/bpf.md: Use bswap instructions if available for
13403         bswap* insn, and fix constraint.
13404         * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap.
13406 2023-07-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13408         * config/riscv/autovec.md (fold_left_plus_<mode>): New pattern.
13409         (mask_len_fold_left_plus_<mode>): Ditto.
13410         * config/riscv/riscv-protos.h (enum insn_type): New enum.
13411         (enum reduction_type): Ditto.
13412         (expand_reduction): Add in-order reduction.
13413         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_reduction_insn): New function.
13414         (expand_reduction): Add in-order reduction.
13416 2023-07-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13418         * tree-vect-loop.cc (get_masked_reduction_fn): Add mask_len_fold_left_plus.
13419         (vectorize_fold_left_reduction): Ditto.
13420         (vectorizable_reduction): Ditto.
13421         (vect_transform_reduction): Ditto.
13423 2023-07-24  Richard Biener  <rguenther@suse.de>
13425         PR tree-optimization/110777
13426         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
13427         Avoid propagating abnormals.
13429 2023-07-24  Richard Biener  <rguenther@suse.de>
13431         PR tree-optimization/110766
13432         * tree-scalar-evolution.cc
13433         (analyze_and_compute_bitwise_induction_effect): Check the PHI
13434         is defined in the loop header.
13436 2023-07-24  Kewen Lin  <linkw@linux.ibm.com>
13438         PR tree-optimization/110740
13439         * tree-vect-loop.cc (vect_analyze_loop_costing): Do not vectorize a
13440         loop with a single scalar iteration.
13442 2023-07-24  Pan Li  <pan2.li@intel.com>
13444         * config/riscv/riscv-vector-builtins-shapes.cc
13445         (struct alu_frm_def): Take range check.
13447 2023-07-22  Vineet Gupta  <vineetg@rivosinc.com>
13449         PR target/110748
13450         * config/riscv/predicates.md (const_0_operand): Add back
13451         const_double.
13453 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
13455         * config/i386/i386-expand.cc (ix86_expand_move): Disable the
13456         64-bit insertions into TImode optimizations with -O0, unless
13457         the function has the "naked" attribute (for PR target/110533).
13459 2023-07-22  Andrew Pinski  <apinski@marvell.com>
13461         PR target/110778
13462         * rtl.h (extended_count): Change last argument type
13463         to bool.
13465 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
13467         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
13468         (extzv<mode>): Likewise.
13469         (insv<mode>): Likewise.
13470         (*testqi_ext_3): Likewise.
13471         (*btr<mode>_2): Likewise.
13472         (define_split): Likewise.
13473         (*btsq_imm): Likewise.
13474         (*btrq_imm): Likewise.
13475         (*btcq_imm): Likewise.
13476         (define_peephole2 x3): Likewise.
13477         (*bt<mode>): Likewise
13478         (*bt<mode>_mask): New define_insn_and_split.
13479         (*jcc_bt<mode>): Use QImode for offsets.
13480         (*jcc_bt<mode>_1): Delete obsolete pattern.
13481         (*jcc_bt<mode>_mask): Use QImode offsets.
13482         (*jcc_bt<mode>_mask_1): Likewise.
13483         (define_split): Likewise.
13484         (*bt<mode>_setcqi): Likewise.
13485         (*bt<mode>_setncqi): Likewise.
13486         (*bt<mode>_setnc<mode>): Likewise.
13487         (*bt<mode>_setncqi_2): Likewise.
13488         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
13489         (bmi2_bzhi_<mode>3): Use QImode offsets.
13490         (*bmi2_bzhi_<mode>3): Likewise.
13491         (*bmi2_bzhi_<mode>3_1): Likewise.
13492         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
13493         (@tbm_bextri_<mode>): Likewise.
13495 2023-07-22  Jeff Law  <jlaw@ventanamicro.com>
13497         * config/bfin/bfin.md (ones): Fix length computation.
13499 2023-07-22  Vladimir N. Makarov  <vmakarov@redhat.com>
13501         * lra-eliminations.cc (update_reg_eliminate): Fix the assert.
13502         (lra_update_fp2sp_elimination): Use HARD_FRAME_POINTER_REGNUM
13503         instead of FRAME_POINTER_REGNUM to spill pseudos.
13505 2023-07-21  Roger Sayle  <roger@nextmovesoftware.com>
13506             Richard Biener  <rguenther@suse.de>
13508         PR c/110699
13509         * gimplify.cc (gimplify_compound_lval):  If the array's type
13510         is error_mark_node then return GS_ERROR.
13512 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
13514         PR target/110770
13515         * config/bpf/bpf.opt: Added option -masm=<dialect>.
13516         * config/bpf/bpf-opts.h (enum bpf_asm_dialect): New type.
13517         * config/bpf/bpf.cc (bpf_print_register): New function.
13518         (bpf_print_register): Support pseudo-c syntax for registers.
13519         (bpf_print_operand_address): Likewise.
13520         * config/bpf/bpf.h (ASM_SPEC): handle -msasm.
13521         (ASSEMBLER_DIALECT): Define.
13522         * config/bpf/bpf.md: Added pseudo-c templates.
13523         * doc/invoke.texi (-masm=): New eBPF option item.
13525 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
13527         * config/bpf/bpf.md: fixed template for neg instruction.
13529 2023-07-21  Jan Hubicka  <jh@suse.cz>
13531         PR target/110727
13532         * tree-vect-loop.cc (scale_profile_for_vect_loop): Avoid scaling flat
13533         profiles by vectorization factor.
13534         (vect_transform_loop): Check for flat profiles.
13536 2023-07-21  Jan Hubicka  <jh@suse.cz>
13538         * cfgloop.h (maybe_flat_loop_profile): Declare
13539         * cfgloopanal.cc (maybe_flat_loop_profile): New function.
13540         * tree-cfg.cc (print_loop_info): Print info about flat profiles.
13542 2023-07-21  Jan Hubicka  <jh@suse.cz>
13544         * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int
13545         * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise.
13546         * predict.cc (estimate_bb_frequencies): Likewise.
13547         * profile.cc (branch_prob): Likewise.
13548         * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise
13550 2023-07-21  Iain Sandoe  <iain@sandoe.co.uk>
13552         * config.in: Regenerate.
13553         * config/darwin.h (DARWIN_LD_DEMANGLE): New.
13554         (LINK_COMMAND_SPEC_A): Add demangle handling.
13555         * configure: Regenerate.
13556         * configure.ac: Detect linker support for '-demangle'.
13558 2023-07-21  Jan Hubicka  <jh@suse.cz>
13560         * sreal.cc (sreal::to_nearest_int): New.
13561         (sreal_verify_basics): Verify also to_nearest_int.
13562         (verify_aritmetics): Likewise.
13563         (sreal_verify_conversions): New.
13564         (sreal_cc_tests): Call sreal_verify_conversions.
13565         * sreal.h: (sreal::to_nearest_int): Declare
13567 2023-07-21  Jan Hubicka  <jh@suse.cz>
13569         * tree-ssa-loop-ch.cc (enum ch_decision): New enum.
13570         (should_duplicate_loop_header_p): Return info on profitability.
13571         (do_while_loop_p): Watch for constant conditionals.
13572         (update_profile_after_ch): Do not sanity check that all
13573         static exits are taken.
13574         (ch_base::copy_headers): Run on all loops.
13575         (pass_ch::process_loop_p): Improve heuristics by handling also
13576         do_while loop and duplicating shortest sequence containing all
13577         winning blocks.
13579 2023-07-21  Jan Hubicka  <jh@suse.cz>
13581         * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
13582         tests first; update finite_p flag.
13584 2023-07-21  Jan Hubicka  <jh@suse.cz>
13586         * cfgloop.cc (flow_loop_dump): Use print_loop_info.
13587         * cfgloop.h (print_loop_info): Declare.
13588         * tree-cfg.cc (print_loop_info): Break out from ...; add
13589         printing of missing fields and profile
13590         (print_loop): ... here.
13592 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13594         * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
13596 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13598         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
13599         (vectorizable_operation): Ditto.
13601 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13603         * config/riscv/autovec.md: Align order of mask and len.
13604         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
13605         (expand_gather_scatter): Ditto.
13606         * doc/md.texi: Ditto.
13607         * internal-fn.cc (add_len_and_mask_args): Ditto.
13608         (add_mask_and_len_args): Ditto.
13609         (expand_partial_load_optab_fn): Ditto.
13610         (expand_partial_store_optab_fn): Ditto.
13611         (expand_scatter_store_optab_fn): Ditto.
13612         (expand_gather_load_optab_fn): Ditto.
13613         (internal_fn_len_index): Ditto.
13614         (internal_fn_mask_index): Ditto.
13615         (internal_len_load_store_bias): Ditto.
13616         * tree-vect-stmts.cc (vectorizable_store): Ditto.
13617         (vectorizable_load): Ditto.
13619 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13621         * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN.
13622         (mask_len_load<mode><vm>): Ditto.
13623         (len_maskstore<mode><vm>): Ditto.
13624         (mask_len_store<mode><vm>): Ditto.
13625         (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
13626         (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
13627         (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
13628         (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
13629         (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
13630         (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
13631         (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
13632         (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
13633         (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
13634         (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
13635         (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
13636         (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
13637         (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
13638         (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
13639         (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
13640         (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
13641         (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
13642         (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
13643         (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
13644         (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
13645         (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
13646         (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
13647         (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
13648         (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
13649         (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
13650         (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
13651         (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
13652         (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
13653         * doc/md.texi: Ditto.
13654         * genopinit.cc (main): Ditto.
13655         (CMP_NAME): Ditto. Ditto.
13656         * gimple-fold.cc (arith_overflowed_p): Ditto.
13657         (gimple_fold_partial_load_store_mem_ref): Ditto.
13658         (gimple_fold_call): Ditto.
13659         * internal-fn.cc (len_maskload_direct): Ditto.
13660         (mask_len_load_direct): Ditto.
13661         (len_maskstore_direct): Ditto.
13662         (mask_len_store_direct): Ditto.
13663         (expand_call_mem_ref): Ditto.
13664         (expand_len_maskload_optab_fn): Ditto.
13665         (expand_mask_len_load_optab_fn): Ditto.
13666         (expand_len_maskstore_optab_fn): Ditto.
13667         (expand_mask_len_store_optab_fn): Ditto.
13668         (direct_len_maskload_optab_supported_p): Ditto.
13669         (direct_mask_len_load_optab_supported_p): Ditto.
13670         (direct_len_maskstore_optab_supported_p): Ditto.
13671         (direct_mask_len_store_optab_supported_p): Ditto.
13672         (internal_load_fn_p): Ditto.
13673         (internal_store_fn_p): Ditto.
13674         (internal_gather_scatter_fn_p): Ditto.
13675         (internal_fn_len_index): Ditto.
13676         (internal_fn_mask_index): Ditto.
13677         (internal_fn_stored_value_index): Ditto.
13678         (internal_len_load_store_bias): Ditto.
13679         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
13680         (MASK_LEN_GATHER_LOAD): Ditto.
13681         (LEN_MASK_LOAD): Ditto.
13682         (MASK_LEN_LOAD): Ditto.
13683         (LEN_MASK_SCATTER_STORE): Ditto.
13684         (MASK_LEN_SCATTER_STORE): Ditto.
13685         (LEN_MASK_STORE): Ditto.
13686         (MASK_LEN_STORE): Ditto.
13687         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
13688         (supports_vec_scatter_store_p): Ditto.
13689         * optabs-tree.cc (target_supports_mask_load_store_p): Ditto.
13690         (target_supports_len_load_store_p): Ditto.
13691         * optabs.def (OPTAB_CD): Ditto.
13692         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto.
13693         (call_may_clobber_ref_p_1): Ditto.
13694         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto.
13695         (dse_optimize_stmt): Ditto.
13696         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
13697         (get_alias_ptr_type_for_ptr_address): Ditto.
13698         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
13699         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
13700         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
13701         (vect_get_strided_load_store_ops): Ditto.
13702         (vectorizable_store): Ditto.
13703         (vectorizable_load): Ditto.
13705 2023-07-21  Haochen Jiang  <haochen.jiang@intel.com>
13707         * config/i386/i386.opt: Fix a typo.
13709 2023-07-21  Richard Biener  <rguenther@suse.de>
13711         PR tree-optimization/88540
13712         * tree-ssa-phiopt.cc (minmax_replacement): Do not give up
13713         with NaNs but handle the simple case by if-converting to a
13714         COND_EXPR.
13716 2023-07-21  Andrew Pinski  <apinski@marvell.com>
13718         * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
13719         transformation.
13721 2023-07-21  Richard Biener  <rguenther@suse.de>
13723         PR tree-optimization/110742
13724         * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout):
13725         Do not materialize an edge permutation in an external node with
13726         vector defs.
13727         (vect_slp_analyze_node_operations_1): Guard purely internal
13728         nodes better.
13730 2023-07-21  Jan Hubicka  <jh@suse.cz>
13732         * cfgloop.cc: Include sreal.h.
13733         (flow_loop_dump): Dump sreal iteration exsitmate.
13734         (get_estimated_loop_iterations): Update.
13735         * cfgloop.h (expected_loop_iterations_by_profile): Declare.
13736         * cfgloopanal.cc (expected_loop_iterations_by_profile): New function.
13737         (expected_loop_iterations_unbounded): Use new API.
13738         * cfgloopmanip.cc (scale_loop_profile): Use
13739         expected_loop_iterations_by_profile
13740         * predict.cc (pass_profile::execute): Likewise.
13741         * profile.cc (branch_prob): Likewise.
13742         * tree-ssa-loop-niter.cc: Include sreal.h.
13743         (estimate_numbers_of_iterations): Likewise
13745 2023-07-21  Kewen Lin  <linkw@linux.ibm.com>
13747         PR tree-optimization/110744
13748         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Correct the index of bias
13749         operand for ifn IFN_LEN_STORE.
13751 2023-07-21  liuhongt  <hongtao.liu@intel.com>
13753         PR target/89701
13754         * common.opt: (fcf-protection=): Add EnumSet attribute to
13755         support combination of params.
13757 2023-07-21  David Malcolm  <dmalcolm@redhat.com>
13759         PR middle-end/110612
13760         * text-art/table.cc (table_geometry::table_geometry): Drop m_table
13761         field.
13762         (table_geometry::table_x_to_canvas_x): Add cast to comparison.
13763         (table_geometry::table_y_to_canvas_y): Likewise.
13764         * text-art/table.h (table_geometry::m_table): Drop unused field.
13765         * text-art/widget.h (wrapper_widget::update_child_alloc_rects):
13766         Add "override".
13768 2023-07-20  Uros Bizjak  <ubizjak@gmail.com>
13770         PR target/110717
13771         * config/i386/i386-features.cc
13772         (general_scalar_chain::compute_convert_gain): Calculate gain
13773         for extend higpart case.
13774         (general_scalar_chain::convert_op): Handle
13775         ASHIFTRT/ASHIFT combined RTX.
13776         (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for
13777         SImode for SSE2 targets.  Handle ASHIFTRT/ASHIFT combined RTX.
13778         * config/i386/i386.md (*extend<dwi>2_doubleword_highpart):
13779         New define_insn_and_split pattern.
13780         (*extendv2di2_highpart_stv): Ditto.
13782 2023-07-20  Vladimir N. Makarov  <vmakarov@redhat.com>
13784         * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
13785         simplification.
13787 2023-07-20  Andrew Pinski  <apinski@marvell.com>
13789         * combine.cc (dump_combine_stats): Remove.
13790         (dump_combine_total_stats): Remove.
13791         (total_attempts, total_merges, total_extras,
13792         total_successes): Remove.
13793         (combine_instructions): Don't increment total stats
13794         instead use statistics_counter_event.
13795         * dumpfile.cc (print_combine_total_stats): Remove.
13796         * dumpfile.h (print_combine_total_stats): Remove.
13797         (dump_combine_total_stats): Remove.
13798         * passes.cc (finish_optimization_passes):
13799         Don't call print_combine_total_stats.
13800         * rtl.h (dump_combine_total_stats): Remove.
13801         (dump_combine_stats): Remove.
13803 2023-07-20  Jan Hubicka  <jh@suse.cz>
13805         * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
13806         logical ops.
13808 2023-07-20  Martin Jambor  <mjambor@suse.cz>
13810         * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New.
13811         (analyzer-text-art-ideal-canvas-width): Likewise.
13812         (analyzer-text-art-string-ellipsis-head-len): Likewise.
13813         (analyzer-text-art-string-ellipsis-tail-len): Likewise.
13815 2023-07-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13817         * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
13818         Refine code structure.
13820 2023-07-20  Jan Hubicka  <jh@suse.cz>
13822         * tree-ssa-loop-ch.cc (edge_range_query): Rename to ...
13823         (get_range_query): ... this one; do
13824         (static_loop_exit): Add query parametr, turn ranger to reference.
13825         (loop_static_stmt_p): New function.
13826         (loop_static_op_p): New function.
13827         (loop_iv_derived_p): Remove.
13828         (loop_combined_static_and_iv_p): New function.
13829         (should_duplicate_loop_header_p): Discover combined onditionals;
13830         do not track iv derived; improve dumps.
13831         (pass_ch::execute): Fix whitespace.
13833 2023-07-20  Richard Biener  <rguenther@suse.de>
13835         PR tree-optimization/110204
13836         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
13837         Look through copies generated by PRE.
13839 2023-07-20  Matthew Malcomson  <matthew.malcomson@arm.com>
13841         * tree-vect-stmts.cc (get_group_load_store_type): Account for
13842         `gap` when checking if need to peel twice.
13844 2023-07-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
13846         PR middle-end/77928
13847         * doc/extend.texi: Document iseqsig builtin.
13848         * builtins.cc (fold_builtin_iseqsig): New function.
13849         (fold_builtin_2): Handle BUILT_IN_ISEQSIG.
13850         (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG.
13851         * builtins.def (BUILT_IN_ISEQSIG): New built-in.
13853 2023-07-20  Pan Li  <pan2.li@intel.com>
13855         * config/riscv/vector.md: Fix incorrect match_operand.
13857 2023-07-20  Roger Sayle  <roger@nextmovesoftware.com>
13859         * config/i386/i386-expand.cc (ix86_expand_move): Don't call
13860         force_reg, to use SUBREG rather than create a new pseudo when
13861         inserting DFmode fields into TImode with insvti_{high,low}part.
13862         * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two
13863         define_insn_and_split...
13864         (*concatditi3_3): 64-bit implementation.  Provide alternative
13865         that allows register allocation to use SSE registers that is
13866         split into vec_concatv2di after reload.
13867         (*concatsidi3_3): 32-bit implementation.
13869 2023-07-20  Richard Biener  <rguenther@suse.de>
13871         PR middle-end/61747
13872         * internal-fn.cc (expand_vec_cond_optab_fn): When the
13873         value operands are equal to the original comparison operands
13874         preserve that equality by re-using the comparison expansion.
13875         * optabs.cc (emit_conditional_move): When the value operands
13876         are equal to the comparison operands and would be forced to
13877         a register by prepare_cmp_insn do so earlier, preserving the
13878         equality.
13880 2023-07-20  Pan Li  <pan2.li@intel.com>
13882         * config/riscv/vector.md: Align pattern format.
13884 2023-07-20  Haochen Jiang  <haochen.jiang@intel.com>
13886         * doc/invoke.texi: Remove AVX512VP2INTERSECT in
13887         Granite Rapids{, D} from documentation.
13889 2023-07-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13891         * config/riscv/autovec.md
13892         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>):
13893         Refactor RVV machine modes.
13894         (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
13895         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
13896         (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
13897         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
13898         (len_mask_gather_load<mode><mode>): Ditto.
13899         (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
13900         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
13901         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
13902         (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
13903         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
13904         (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
13905         (len_mask_scatter_store<mode><mode>): Ditto.
13906         (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
13907         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto.
13908         (ADJUST_NUNITS): Ditto.
13909         (ADJUST_ALIGNMENT): Ditto.
13910         (ADJUST_BYTESIZE): Ditto.
13911         (ADJUST_PRECISION): Ditto.
13912         (RVV_MODES): Ditto.
13913         (RVV_WHOLE_MODES): Ditto.
13914         (RVV_FRACT_MODE): Ditto.
13915         (RVV_NF8_MODES): Ditto.
13916         (RVV_NF4_MODES): Ditto.
13917         (VECTOR_MODES_WITH_PREFIX): Ditto.
13918         (VECTOR_MODE_WITH_PREFIX): Ditto.
13919         (RVV_TUPLE_MODES): Ditto.
13920         (RVV_NF2_MODES): Ditto.
13921         (RVV_TUPLE_PARTIAL_MODES): Ditto.
13922         * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto.
13923         (ENTRY): Ditto.
13924         (TUPLE_ENTRY): Ditto.
13925         (get_vlmul): Ditto.
13926         (get_nf): Ditto.
13927         (get_ratio): Ditto.
13928         (preferred_simd_mode): Ditto.
13929         (autovectorize_vector_modes): Ditto.
13930         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
13931         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
13932         (vbool64_t): Ditto.
13933         (vbool32_t): Ditto.
13934         (vbool16_t): Ditto.
13935         (vbool8_t): Ditto.
13936         (vbool4_t): Ditto.
13937         (vbool2_t): Ditto.
13938         (vbool1_t): Ditto.
13939         (vint8mf8_t): Ditto.
13940         (vuint8mf8_t): Ditto.
13941         (vint8mf4_t): Ditto.
13942         (vuint8mf4_t): Ditto.
13943         (vint8mf2_t): Ditto.
13944         (vuint8mf2_t): Ditto.
13945         (vint8m1_t): Ditto.
13946         (vuint8m1_t): Ditto.
13947         (vint8m2_t): Ditto.
13948         (vuint8m2_t): Ditto.
13949         (vint8m4_t): Ditto.
13950         (vuint8m4_t): Ditto.
13951         (vint8m8_t): Ditto.
13952         (vuint8m8_t): Ditto.
13953         (vint16mf4_t): Ditto.
13954         (vuint16mf4_t): Ditto.
13955         (vint16mf2_t): Ditto.
13956         (vuint16mf2_t): Ditto.
13957         (vint16m1_t): Ditto.
13958         (vuint16m1_t): Ditto.
13959         (vint16m2_t): Ditto.
13960         (vuint16m2_t): Ditto.
13961         (vint16m4_t): Ditto.
13962         (vuint16m4_t): Ditto.
13963         (vint16m8_t): Ditto.
13964         (vuint16m8_t): Ditto.
13965         (vint32mf2_t): Ditto.
13966         (vuint32mf2_t): Ditto.
13967         (vint32m1_t): Ditto.
13968         (vuint32m1_t): Ditto.
13969         (vint32m2_t): Ditto.
13970         (vuint32m2_t): Ditto.
13971         (vint32m4_t): Ditto.
13972         (vuint32m4_t): Ditto.
13973         (vint32m8_t): Ditto.
13974         (vuint32m8_t): Ditto.
13975         (vint64m1_t): Ditto.
13976         (vuint64m1_t): Ditto.
13977         (vint64m2_t): Ditto.
13978         (vuint64m2_t): Ditto.
13979         (vint64m4_t): Ditto.
13980         (vuint64m4_t): Ditto.
13981         (vint64m8_t): Ditto.
13982         (vuint64m8_t): Ditto.
13983         (vfloat16mf4_t): Ditto.
13984         (vfloat16mf2_t): Ditto.
13985         (vfloat16m1_t): Ditto.
13986         (vfloat16m2_t): Ditto.
13987         (vfloat16m4_t): Ditto.
13988         (vfloat16m8_t): Ditto.
13989         (vfloat32mf2_t): Ditto.
13990         (vfloat32m1_t): Ditto.
13991         (vfloat32m2_t): Ditto.
13992         (vfloat32m4_t): Ditto.
13993         (vfloat32m8_t): Ditto.
13994         (vfloat64m1_t): Ditto.
13995         (vfloat64m2_t): Ditto.
13996         (vfloat64m4_t): Ditto.
13997         (vfloat64m8_t): Ditto.
13998         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
13999         (TUPLE_ENTRY): Ditto.
14000         * config/riscv/riscv-vsetvl.cc (change_insn): Ditto.
14001         * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto.
14002         (riscv_v_adjust_nunits): Ditto.
14003         (riscv_v_adjust_bytesize): Ditto.
14004         (riscv_v_adjust_precision): Ditto.
14005         (riscv_convert_vector_bits): Ditto.
14006         * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto.
14007         * config/riscv/riscv.md: Ditto.
14008         * config/riscv/vector-iterators.md: Ditto.
14009         * config/riscv/vector.md
14010         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
14011         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
14012         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
14013         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
14014         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
14015         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
14016         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
14017         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
14018         (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto.
14019         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
14020         (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto.
14021         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
14022         (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto.
14023         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
14024         (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto.
14025         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
14026         (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto.
14027         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
14028         (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto.
14029         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
14030         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
14031         (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto.
14032         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
14033         (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto.
14034         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
14035         (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto.
14036         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
14037         (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto.
14038         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
14039         (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto.
14040         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
14041         (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto.
14042         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
14044 2023-07-19  Vladimir N. Makarov  <vmakarov@redhat.com>
14046         * lra-int.h (lra_update_fp2sp_elimination): New prototype.
14047         (lra_asm_insn_error): New prototype.
14048         * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
14049         existence.
14050         (lra_spill): Call lra_update_fp2sp_elimination.
14051         * lra-eliminations.cc: Remove trailing spaces.
14052         (elimination_fp2sp_occured_p): New static flag.
14053         (lra_eliminate_regs_1): Set the flag up.
14054         (update_reg_eliminate): Modify the assert for stack to frame
14055         pointer elimination.
14056         (lra_update_fp2sp_elimination): New function.
14057         (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
14059 2023-07-19  Andrew Carlotti  <andrew.carlotti@arm.com>
14061         * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
14062         dependency.
14063         * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
14064         dependencies from target pragmas.
14065         * config/aarch64/arm_fp16.h (target): Likewise.
14066         * config/aarch64/arm_neon.h (target): Likewise.
14068 2023-07-19  Andrew Pinski  <apinski@marvell.com>
14070         PR tree-optimization/110252
14071         * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
14072         (auto_flow_sensitive::auto_flow_sensitive): New constructor.
14073         (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
14074         (match_simplify_replacement): Temporarily
14075         remove the flow sensitive info on the two statements that might
14076         be moved.
14078 2023-07-19  Andrew Pinski  <apinski@marvell.com>
14080         * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
14081         with flow_sensitive_info_storage.
14082         (follow_outer_ssa_edges): Update how to save off the flow
14083         sensitive info.
14084         (maybe_fold_comparisons_from_match_pd): Update restoring
14085         of flow sensitive info.
14086         * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
14087         (flow_sensitive_info_storage::restore): New method.
14088         (flow_sensitive_info_storage::save_and_clear): New method.
14089         (flow_sensitive_info_storage::clear_storage): New method.
14090         * tree-ssanames.h (class flow_sensitive_info_storage): New class.
14092 2023-07-19  Andrew Pinski  <apinski@marvell.com>
14094         PR tree-optimization/110726
14095         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
14096         Add checks to make sure the type was one bit precision
14097         intergal type.
14099 2023-07-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
14101         * doc/md.texi: Add mask_len_fold_left_plus.
14102         * internal-fn.cc (mask_len_fold_left_direct): Ditto.
14103         (expand_mask_len_fold_left_optab_fn): Ditto.
14104         (direct_mask_len_fold_left_optab_supported_p): Ditto.
14105         * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
14106         * optabs.def (OPTAB_D): Ditto.
14108 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
14110         * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
14112 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
14114         PR tree-optimization/110731
14115         * wide-int.cc (wi::divmod_internal): Always unpack dividend and
14116         divisor as UNSIGNED regardless of sgn.
14118 2023-07-19  Lehua Ding  <lehua.ding@rivai.ai>
14120         * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
14121         (standard_extensions_p): Add check.
14122         (riscv_subset_list::add): Just return NULL if it failed before.
14123         (riscv_subset_list::parse_std_ext): Continue parse when find a error
14124         (riscv_subset_list::parse): Just return NULL if it failed before.
14125         * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
14127 2023-07-19  Jan Beulich  <jbeulich@suse.com>
14129         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
14130         Use gen_vec_set_0.
14131         (ix86_expand_vector_extract): Use gen_vec_extract_lo /
14132         gen_vec_extract_hi.
14133         (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
14134         gen_vec_interleave_low. Rename local variable.
14136 2023-07-19  Jan Beulich  <jbeulich@suse.com>
14138         * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
14139         alternative. Move AVX512VL part of condition to new "enabled"
14140         attribute.
14142 2023-07-19  liuhongt  <hongtao.liu@intel.com>
14144         PR target/109504
14145         * config/i386/i386-builtins.cc
14146         (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
14147         (ix86_register_bf16_builtin_type): Ditto.
14148         * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
14149         isn't available, undef the macros which are used to check the
14150         backend support of the _Float16/__bf16 types when building
14151         libstdc++ and libgcc.
14152         * config/i386/i386.cc (construct_container): Issue errors for
14153         HFmode/BFmode when TARGET_SSE2 is not available.
14154         (function_value_32): Ditto.
14155         (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
14156         (ix86_libgcc_floating_mode_supported_p): Ditto.
14157         (ix86_emit_support_tinfos): Adjust codes.
14158         (ix86_invalid_conversion): Return diagnostic message string
14159         when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
14160         (ix86_invalid_unary_op): New function.
14161         (ix86_invalid_binary_op): Ditto.
14162         (TARGET_INVALID_UNARY_OP): Define.
14163         (TARGET_INVALID_BINARY_OP): Define.
14164         * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
14165         related instrinsics header files.
14166         * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
14168 2023-07-18  Uros Bizjak  <ubizjak@gmail.com>
14170         * dwarf2asm.cc: Change FALSE to false.
14171         * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
14172         * dwarf2out.cc (matches_main_base): Change return type from
14173         int to bool.  Change "last_match" variable to bool.
14174         (dump_struct_debug): Change return type from int to bool.
14175         Change "matches" and "result" function arguments to bool.
14176         (is_pseudo_reg): Change return type from int to bool.
14177         (is_tagged_type): Ditto.
14178         (same_loc_p): Ditto.
14179         (same_dw_val_p): Change return type from int to bool and adjust
14180         function body accordingly.
14181         (same_attr_p): Ditto.
14182         (same_die_p): Ditto.
14183         (is_type_die): Ditto.
14184         (is_declaration_die): Ditto.
14185         (should_move_die_to_comdat): Ditto.
14186         (is_base_type): Ditto.
14187         (is_based_loc): Ditto.
14188         (local_scope_p): Ditto.
14189         (class_scope_p): Ditto.
14190         (class_or_namespace_scope_p): Ditto.
14191         (is_tagged_type): Ditto.
14192         (is_rust): Use void argument.
14193         (is_nested_in_subprogram): Change return type from int to bool.
14194         (contains_subprogram_definition): Ditto.
14195         (gen_struct_or_union_type_die): Change "nested", "complete"
14196         and "ns_decl" variables to bool.
14197         (is_naming_typedef_decl): Change FALSE to false.
14199 2023-07-18  Jan Hubicka  <jh@suse.cz>
14201         * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
14202         for queries not in headers.
14203         (static_loop_exit): Add basic blck parameter; update use of
14204         edge_range_query
14205         (should_duplicate_loop_header_p): Add ranger and static_exits
14206         parameter.  Do not account statements that will be optimized
14207         out after duplicaiton in overall size. Add ranger query to
14208         find static exits.
14209         (update_profile_after_ch):  Take static_exits has set instead of
14210         single eliminated_edge.
14211         (ch_base::copy_headers): Do all analysis in the first pass;
14212         remember invariant_exits and static_exits.
14214 2023-07-18  Jason Merrill  <jason@redhat.com>
14216         * fold-const.cc (native_interpret_aggregate): Skip empty fields.
14218 2023-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
14220         * doc/gm2.texi (Semantic checking): Change example testwithptr
14221         to testnew6.
14223 2023-07-18  Richard Biener  <rguenther@suse.de>
14225         PR middle-end/105715
14226         * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
14227         (pass_gimple_isel::execute): ... this.  Duplicate
14228         comparison defs of COND_EXPRs.
14230 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14232         * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
14233         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
14234         (riscv_convert_vector_bits): Ditto.
14236 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14238         * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
14239         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
14241 2023-07-18  Juergen Christ  <jchrist@linux.ibm.com>
14243         * config/s390/vx-builtins.md: New vsel pattern.
14245 2023-07-18  liuhongt  <hongtao.liu@intel.com>
14247         PR target/110438
14248         * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
14249         Remove # from assemble output.
14251 2023-07-18  liuhongt  <hongtao.liu@intel.com>
14253         PR target/110591
14254         * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
14255         to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
14256         3 define_peephole2 after the pattern.
14258 2023-07-18  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
14260         * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
14262 2023-07-18  Pan Li  <pan2.li@intel.com>
14263             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14265         * config/riscv/riscv.cc (struct machine_function): Add new field.
14266         (riscv_static_frm_mode_p): New function.
14267         (riscv_emit_frm_mode_set): New function for emit FRM.
14268         (riscv_emit_mode_set): Extract function for FRM.
14269         (riscv_mode_needed): Fix the TODO.
14270         (riscv_mode_entry): Initial dynamic frm RTL.
14271         (riscv_mode_exit): Return DYN_EXIT.
14272         * config/riscv/riscv.md: Add rdfrm.
14273         * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
14274         * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
14275         (fsrm): Removed.
14276         (fsrmsi_backup): New pattern for swap.
14277         (fsrmsi_restore): New pattern for restore.
14278         (fsrmsi_restore_exit): New pattern for restore exit.
14279         (frrmsi): New pattern for backup.
14281 2023-07-17  Arsen Arsenović  <arsen@aarsen.me>
14283         * doc/extend.texi: Add @cindex on __auto_type.
14285 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
14287         * combine-stack-adj.cc (stack_memref_p): Change return type from
14288         int to bool and adjust function body accordingly.
14289         (rest_of_handle_stack_adjustments): Change return type to void.
14291 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
14293         * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
14294         (cant_combine_insn_p): Change return type from int to bool and adjust
14295         function body accordingly.
14296         (can_combine_p): Ditto.
14297         (combinable_i3pat): Ditto.  Change "i1_not_in_src" and "i0_not_in_src"
14298         function arguments from int to bool.
14299         (contains_muldiv): Change return type from int to bool and adjust
14300         function body accordingly.
14301         (try_combine): Ditto. Change "new_direct_jump" pointer function
14302         argument from int to bool.  Change "substed_i2", "substed_i1",
14303         "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
14304         "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
14305         "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
14306         "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
14307         "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
14308         "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
14309         from int to bool.
14310         (subst): Change "in_dest", "in_cond" and "unique_copy" function
14311         arguments from int to bool.
14312         (combine_simplify_rtx): Change "in_dest" and "in_cond" function
14313         arguments from int to bool.
14314         (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
14315         function argument from int to bool.
14316         (force_int_to_mode): Change "just_select" function argument
14317         from int to bool.  Change "next_select" variable to bool.
14318         (rtx_equal_for_field_assignment_p): Change return type from
14319         int to bool and adjust function body accordingly.
14320         (merge_outer_ops): Ditto.  Change "pcomp_p" pointer function
14321         argument from int to bool.
14322         (get_last_value_validate): Change return type from int to bool
14323         and adjust function body accordingly.
14324         (reg_dead_at_p): Ditto.
14325         (reg_bitfield_target_p): Ditto.
14326         (combine_instructions): Ditto.  Change "new_direct_jump"
14327         variable to bool.
14328         (can_combine_p): Change return type from int to bool
14329         and adjust function body accordingly.
14330         (likely_spilled_retval_p): Ditto.
14331         (can_change_dest_mode): Change "added_sets" function argument
14332         from int to bool.
14333         (find_split_point): Change "unsignedp" variable to bool.
14334         (simplify_if_then_else): Change "comparison_p" and "swapped"
14335         variables to bool.
14336         (simplify_set): Change "other_changed" variable to bool.
14337         (expand_compound_operation): Change "unsignedp" variable to bool.
14338         (force_to_mode): Change "just_select" function argument
14339         from int to bool.  Change "next_select" variable to bool.
14340         (extended_count): Change "unsignedp" function argument to bool.
14341         (simplify_shift_const_1): Change "complement_p" variable to bool.
14342         (simplify_comparison): Change "changed" variable to bool.
14343         (rest_of_handle_combine): Change return type to void.
14345 2023-07-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
14347         PR plugins/110610
14348         * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
14350 2023-07-17  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
14352         * ira.cc (setup_reg_class_relations): Continue
14353         if regclass cl3 is hard_reg_set_empty_p.
14355 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14357         * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
14359 2023-07-17  Martin Jambor  <mjambor@suse.cz>
14361         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
14362         entry_count.
14364 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
14366         * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
14368 2023-07-17  Lehua Ding  <lehua.ding@rivai.ai>
14370         PR target/110696
14371         * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
14372         recur add all implied extensions.
14373         (riscv_subset_list::check_implied_ext): Add new method.
14374         (riscv_subset_list::parse): Call checker check_implied_ext.
14375         * config/riscv/riscv-subset.h: Add new method.
14377 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14379         * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
14380         (reduc_smax_scal_<mode>): Ditto.
14381         (reduc_umax_scal_<mode>): Ditto.
14382         (reduc_smin_scal_<mode>): Ditto.
14383         (reduc_umin_scal_<mode>): Ditto.
14384         (reduc_and_scal_<mode>): Ditto.
14385         (reduc_ior_scal_<mode>): Ditto.
14386         (reduc_xor_scal_<mode>): Ditto.
14387         * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
14388         (expand_reduction): New function.
14389         * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
14390         (emit_vlmax_fp_reduction_insn): Ditto.
14391         (get_m1_mode): Ditto.
14392         (expand_cond_len_binop): Fix name.
14393         (expand_reduction): New function
14394         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
14395         (validate_change_or_fail): New function.
14396         (change_insn): Fix VSETVL BUG.
14397         (change_vsetvl_insn): Ditto.
14398         (pass_vsetvl::backward_demand_fusion): Ditto.
14399         (pass_vsetvl::df_post_optimization): Ditto.
14401 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
14403         * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
14405 2023-07-17  Christoph Müllner  <christoph.muellner@vrull.eu>
14407         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
14408         Remove parameter name from declaration of unused parameter.
14410 2023-07-17  Kewen Lin  <linkw@linux.ibm.com>
14412         PR tree-optimization/110652
14413         * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
14414         NULL_TREE.
14416 2023-07-17  Richard Biener  <rguenther@suse.de>
14418         PR tree-optimization/110669
14419         * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
14420         Check we matched a header PHI.
14422 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
14424         * tree-ssanames.cc (set_bitmask): New.
14425         * tree-ssanames.h (set_bitmask): New.
14427 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
14429         * value-range.cc (irange_bitmask::verify_mask): Mask need not be
14430         normalized.
14431         * value-range.h (irange_bitmask::union_): Normalize beforehand.
14432         (irange_bitmask::intersect): Same.
14434 2023-07-17  Andrew Pinski  <apinski@marvell.com>
14436         PR tree-optimization/95923
14437         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
14439 2023-07-17  Roger Sayle  <roger@nextmovesoftware.com>
14441         * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
14442         to the std::sort comparison lambda function const.
14444 2023-07-17  Andrew Pinski  <apinski@marvell.com>
14446         PR tree-optimization/110666
14447         * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
14449 2023-07-17  Mo, Zewei  <zewei.mo@intel.com>
14451         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
14452         Arrow Lake and Arrow Lake S.
14453         * common/config/i386/i386-common.cc:
14454         (processor_name): Add arrowlake.
14455         (processor_alias_table): Add arrow lake, arrow lake s and lunar
14456         lake.
14457         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
14458         Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
14459         * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
14460         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
14461         arrowlake-s.
14462         * config/i386/i386-c.cc (ix86_target_macros_internal): Add
14463         arrowlake.
14464         * config/i386/i386-options.cc (m_ARROWLAKE): New.
14465         (processor_cost_table): Add arrowlake.
14466         * config/i386/i386.h (enum processor_type):
14467         Add PROCESSOR_ARROWLAKE.
14468         * config/i386/x86-tune.def: Add m_ARROWLAKE.
14469         * doc/extend.texi: Add arrowlake and arrowlake-s.
14470         * doc/invoke.texi: Ditto.
14472 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
14474         * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
14475         have the same iterator. Also renaming all the occurence to
14476         VI2_AVX2_AVX512BW.
14477         (usdot_prod<mode>): New define_expand.
14478         (udot_prod<mode>): Ditto.
14480 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
14482         * common/config/i386/cpuinfo.h (get_available_features):
14483         Detech SM4.
14484         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
14485         OPTION_MASK_ISA2_SM4_UNSET): New.
14486         (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
14487         (ix86_handle_option): Handle -msm4.
14488         * common/config/i386/i386-cpuinfo.h (enum processor_features):
14489         Add FEATURE_SM4.
14490         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
14491         sm4.
14492         * config.gcc: Add sm4intrin.h.
14493         * config/i386/cpuid.h (bit_SM4): New.
14494         * config/i386/i386-builtin.def (BDESC): Add new builtins.
14495         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
14496         __SM4__.
14497         * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
14498         * config/i386/i386-options.cc (isa2_opts): Add -msm4.
14499         (ix86_valid_target_attribute_inner_p): Handle sm4.
14500         * config/i386/i386.opt: Add option -msm4.
14501         * config/i386/immintrin.h: Include sm4intrin.h
14502         * config/i386/sse.md (vsm4key4_<mode>): New define insn.
14503         (vsm4rnds4_<mode>): Ditto.
14504         * doc/extend.texi: Document sm4.
14505         * doc/invoke.texi: Document -msm4.
14506         * doc/sourcebuild.texi: Document target sm4.
14507         * config/i386/sm4intrin.h: New file.
14509 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
14511         * common/config/i386/cpuinfo.h (get_available_features):
14512         Detect SHA512.
14513         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
14514         OPTION_MASK_ISA2_SHA512_UNSET): New.
14515         (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
14516         (ix86_handle_option): Handle -msha512.
14517         * common/config/i386/i386-cpuinfo.h (enum processor_features):
14518         Add FEATURE_SHA512.
14519         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
14520         sha512.
14521         * config.gcc: Add sha512intrin.h.
14522         * config/i386/cpuid.h (bit_SHA512): New.
14523         * config/i386/i386-builtin-types.def:
14524         Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
14525         * config/i386/i386-builtin.def (BDESC): Add new builtins.
14526         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
14527         __SHA512__.
14528         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
14529         V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
14530         * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
14531         * config/i386/i386-options.cc (isa2_opts): Add -msha512.
14532         (ix86_valid_target_attribute_inner_p): Handle sha512.
14533         * config/i386/i386.opt: Add option -msha512.
14534         * config/i386/immintrin.h: Include sha512intrin.h.
14535         * config/i386/sse.md (vsha512msg1): New define insn.
14536         (vsha512msg2): Ditto.
14537         (vsha512rnds2): Ditto.
14538         * doc/extend.texi: Document sha512.
14539         * doc/invoke.texi: Document -msha512.
14540         * doc/sourcebuild.texi: Document target sha512.
14541         * config/i386/sha512intrin.h: New file.
14543 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
14545         * common/config/i386/cpuinfo.h (get_available_features):
14546         Detect SM3.
14547         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
14548         OPTION_MASK_ISA2_SM3_UNSET): New.
14549         (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
14550         (ix86_handle_option): Handle -msm3.
14551         * common/config/i386/i386-cpuinfo.h (enum processor_features):
14552         Add FEATURE_SM3.
14553         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
14554         SM3.
14555         * config.gcc: Add sm3intrin.h
14556         * config/i386/cpuid.h (bit_SM3): New.
14557         * config/i386/i386-builtin-types.def:
14558         Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
14559         * config/i386/i386-builtin.def (BDESC): Add new builtins.
14560         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
14561         __SM3__.
14562         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
14563         V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
14564         * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
14565         * config/i386/i386-options.cc (isa2_opts): Add -msm3.
14566         (ix86_valid_target_attribute_inner_p): Handle sm3.
14567         * config/i386/i386.opt: Add option -msm3.
14568         * config/i386/immintrin.h: Include sm3intrin.h.
14569         * config/i386/sse.md (vsm3msg1): New define insn.
14570         (vsm3msg2): Ditto.
14571         (vsm3rnds2): Ditto.
14572         * doc/extend.texi: Document sm3.
14573         * doc/invoke.texi: Document -msm3.
14574         * doc/sourcebuild.texi: Document target sm3.
14575         * config/i386/sm3intrin.h: New file.
14577 2023-07-17  Kong Lingling  <lingling.kong@intel.com>
14578             Haochen Jiang  <haochen.jiang@intel.com>
14580         * common/config/i386/cpuinfo.h (get_available_features): Detect
14581         avxvnniint16.
14582         * common/config/i386/i386-common.cc
14583         (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
14584         (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
14585         (ix86_handle_option): Handle -mavxvnniint16.
14586         * common/config/i386/i386-cpuinfo.h (enum processor_features):
14587         Add FEATURE_AVXVNNIINT16.
14588         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
14589         avxvnniint16.
14590         * config.gcc: Add avxvnniint16.h.
14591         * config/i386/avxvnniint16intrin.h: New file.
14592         * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
14593         * config/i386/i386-builtin.def: Add new builtins.
14594         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
14595         __AVXVNNIINT16__.
14596         * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
14597         (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
14598         * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
14599         * config/i386/i386.opt: Add option -mavxvnniint16.
14600         * config/i386/immintrin.h: Include avxvnniint16.h.
14601         * config/i386/sse.md
14602         (vpdp<vpdpwprodtype>_<mode>): New define_insn.
14603         * doc/extend.texi: Document avxvnniint16.
14604         * doc/invoke.texi: Document -mavxvnniint16.
14605         * doc/sourcebuild.texi: Document target avxvnniint16.
14607 2023-07-16  Jan Hubicka  <jh@suse.cz>
14609         PR middle-end/110649
14610         * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
14611         (vect_transform_loop): Move scale_profile_for_vect_loop after
14612         upper bound updates.
14614 2023-07-16  Jan Hubicka  <jh@suse.cz>
14616         PR tree-optimization/110649
14617         * tree-vect-loop.cc (optimize_mask_stores): Set correctly
14618         probability of the if-then-else construct.
14620 2023-07-16  Jan Hubicka  <jh@suse.cz>
14622         PR middle-end/110649
14623         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
14625 2023-07-15  Andrew Pinski  <apinski@marvell.com>
14627         * doc/contrib.texi: Update my entry.
14629 2023-07-15  John David Anglin  <danglin@gcc.gnu.org>
14631         * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
14632         R27_REGNUM.
14633         (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
14634         (tld_load): Likewise.
14635         (tgd_load_pic): Change to expander.
14636         (tld_load_pic, tld_offset_load, tp_load): Likewise.
14637         (tie_load_pic, tle_load): Likewise.
14638         (tgd_load_picsi, tgd_load_picdi): New.
14639         (tld_load_picsi, tld_load_picdi): New.
14640         (tld_offset_load<P:mode>): New.
14641         (tp_load<P:mode>): New.
14642         (tie_load_picsi, tie_load_picdi): New.
14643         (tle_load<P:mode>): New.
14645 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
14647         * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
14648         (vcmlaq_rot180, vcmlaq_rot270): New.
14649         * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
14650         (vcmlaq_rot180, vcmlaq_rot270): New.
14651         * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
14652         (vcmlaq_rot180, vcmlaq_rot270): New.
14653         * config/arm/arm-mve-builtins.cc
14654         (function_instance::has_inactive_argument): Handle vcmlaq,
14655         vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
14656         * config/arm/arm_mve.h (vcmlaq): Delete.
14657         (vcmlaq_rot180): Delete.
14658         (vcmlaq_rot270): Delete.
14659         (vcmlaq_rot90): Delete.
14660         (vcmlaq_m): Delete.
14661         (vcmlaq_rot180_m): Delete.
14662         (vcmlaq_rot270_m): Delete.
14663         (vcmlaq_rot90_m): Delete.
14664         (vcmlaq_f16): Delete.
14665         (vcmlaq_rot180_f16): Delete.
14666         (vcmlaq_rot270_f16): Delete.
14667         (vcmlaq_rot90_f16): Delete.
14668         (vcmlaq_f32): Delete.
14669         (vcmlaq_rot180_f32): Delete.
14670         (vcmlaq_rot270_f32): Delete.
14671         (vcmlaq_rot90_f32): Delete.
14672         (vcmlaq_m_f32): Delete.
14673         (vcmlaq_m_f16): Delete.
14674         (vcmlaq_rot180_m_f32): Delete.
14675         (vcmlaq_rot180_m_f16): Delete.
14676         (vcmlaq_rot270_m_f32): Delete.
14677         (vcmlaq_rot270_m_f16): Delete.
14678         (vcmlaq_rot90_m_f32): Delete.
14679         (vcmlaq_rot90_m_f16): Delete.
14680         (__arm_vcmlaq_f16): Delete.
14681         (__arm_vcmlaq_rot180_f16): Delete.
14682         (__arm_vcmlaq_rot270_f16): Delete.
14683         (__arm_vcmlaq_rot90_f16): Delete.
14684         (__arm_vcmlaq_f32): Delete.
14685         (__arm_vcmlaq_rot180_f32): Delete.
14686         (__arm_vcmlaq_rot270_f32): Delete.
14687         (__arm_vcmlaq_rot90_f32): Delete.
14688         (__arm_vcmlaq_m_f32): Delete.
14689         (__arm_vcmlaq_m_f16): Delete.
14690         (__arm_vcmlaq_rot180_m_f32): Delete.
14691         (__arm_vcmlaq_rot180_m_f16): Delete.
14692         (__arm_vcmlaq_rot270_m_f32): Delete.
14693         (__arm_vcmlaq_rot270_m_f16): Delete.
14694         (__arm_vcmlaq_rot90_m_f32): Delete.
14695         (__arm_vcmlaq_rot90_m_f16): Delete.
14696         (__arm_vcmlaq): Delete.
14697         (__arm_vcmlaq_rot180): Delete.
14698         (__arm_vcmlaq_rot270): Delete.
14699         (__arm_vcmlaq_rot90): Delete.
14700         (__arm_vcmlaq_m): Delete.
14701         (__arm_vcmlaq_rot180_m): Delete.
14702         (__arm_vcmlaq_rot270_m): Delete.
14703         (__arm_vcmlaq_rot90_m): Delete.
14705 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
14707         * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
14708         (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
14709         * config/arm/iterators.md (MVE_VCMLAQ_M): New.
14710         (mve_insn): Add vcmla.
14711         (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
14712         VCMLAQ_ROT270_M_F.
14713         (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
14714         VCMLAQ_ROT270_M_F.
14715         * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
14716         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
14717         (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
14718         (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
14719         into ...
14720         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
14722 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
14724         * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
14725         (vcmulq_rot180, vcmulq_rot270): New.
14726         * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
14727         (vcmulq_rot180, vcmulq_rot270): New.
14728         * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
14729         (vcmulq_rot180, vcmulq_rot270): New.
14730         * config/arm/arm_mve.h (vcmulq_rot90): Delete.
14731         (vcmulq_rot270): Delete.
14732         (vcmulq_rot180): Delete.
14733         (vcmulq): Delete.
14734         (vcmulq_m): Delete.
14735         (vcmulq_rot180_m): Delete.
14736         (vcmulq_rot270_m): Delete.
14737         (vcmulq_rot90_m): Delete.
14738         (vcmulq_x): Delete.
14739         (vcmulq_rot90_x): Delete.
14740         (vcmulq_rot180_x): Delete.
14741         (vcmulq_rot270_x): Delete.
14742         (vcmulq_rot90_f16): Delete.
14743         (vcmulq_rot270_f16): Delete.
14744         (vcmulq_rot180_f16): Delete.
14745         (vcmulq_f16): Delete.
14746         (vcmulq_rot90_f32): Delete.
14747         (vcmulq_rot270_f32): Delete.
14748         (vcmulq_rot180_f32): Delete.
14749         (vcmulq_f32): Delete.
14750         (vcmulq_m_f32): Delete.
14751         (vcmulq_m_f16): Delete.
14752         (vcmulq_rot180_m_f32): Delete.
14753         (vcmulq_rot180_m_f16): Delete.
14754         (vcmulq_rot270_m_f32): Delete.
14755         (vcmulq_rot270_m_f16): Delete.
14756         (vcmulq_rot90_m_f32): Delete.
14757         (vcmulq_rot90_m_f16): Delete.
14758         (vcmulq_x_f16): Delete.
14759         (vcmulq_x_f32): Delete.
14760         (vcmulq_rot90_x_f16): Delete.
14761         (vcmulq_rot90_x_f32): Delete.
14762         (vcmulq_rot180_x_f16): Delete.
14763         (vcmulq_rot180_x_f32): Delete.
14764         (vcmulq_rot270_x_f16): Delete.
14765         (vcmulq_rot270_x_f32): Delete.
14766         (__arm_vcmulq_rot90_f16): Delete.
14767         (__arm_vcmulq_rot270_f16): Delete.
14768         (__arm_vcmulq_rot180_f16): Delete.
14769         (__arm_vcmulq_f16): Delete.
14770         (__arm_vcmulq_rot90_f32): Delete.
14771         (__arm_vcmulq_rot270_f32): Delete.
14772         (__arm_vcmulq_rot180_f32): Delete.
14773         (__arm_vcmulq_f32): Delete.
14774         (__arm_vcmulq_m_f32): Delete.
14775         (__arm_vcmulq_m_f16): Delete.
14776         (__arm_vcmulq_rot180_m_f32): Delete.
14777         (__arm_vcmulq_rot180_m_f16): Delete.
14778         (__arm_vcmulq_rot270_m_f32): Delete.
14779         (__arm_vcmulq_rot270_m_f16): Delete.
14780         (__arm_vcmulq_rot90_m_f32): Delete.
14781         (__arm_vcmulq_rot90_m_f16): Delete.
14782         (__arm_vcmulq_x_f16): Delete.
14783         (__arm_vcmulq_x_f32): Delete.
14784         (__arm_vcmulq_rot90_x_f16): Delete.
14785         (__arm_vcmulq_rot90_x_f32): Delete.
14786         (__arm_vcmulq_rot180_x_f16): Delete.
14787         (__arm_vcmulq_rot180_x_f32): Delete.
14788         (__arm_vcmulq_rot270_x_f16): Delete.
14789         (__arm_vcmulq_rot270_x_f32): Delete.
14790         (__arm_vcmulq_rot90): Delete.
14791         (__arm_vcmulq_rot270): Delete.
14792         (__arm_vcmulq_rot180): Delete.
14793         (__arm_vcmulq): Delete.
14794         (__arm_vcmulq_m): Delete.
14795         (__arm_vcmulq_rot180_m): Delete.
14796         (__arm_vcmulq_rot270_m): Delete.
14797         (__arm_vcmulq_rot90_m): Delete.
14798         (__arm_vcmulq_x): Delete.
14799         (__arm_vcmulq_rot90_x): Delete.
14800         (__arm_vcmulq_rot180_x): Delete.
14801         (__arm_vcmulq_rot270_x): Delete.
14803 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
14805         * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
14806         (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
14807         * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
14808         (MVE_VCADDQ_VCMULQ_M): New.
14809         (mve_insn): Add vcmul.
14810         (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
14811         VCMULQ_ROT270_M_F.
14812         (VCMUL): Delete.
14813         (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
14814         VCMULQ_ROT270_M_F.
14815         * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
14816         @mve_<mve_insn>q<mve_rot>_f<mode>.
14817         (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
14818         (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
14819         into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
14821 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
14823         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
14824         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
14825         * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
14826         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
14827         * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
14828         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
14829         * config/arm/arm-mve-builtins-functions.h (class
14830         unspec_mve_function_exact_insn_rot): New.
14831         * config/arm/arm_mve.h (vcaddq_rot90): Delete.
14832         (vcaddq_rot270): Delete.
14833         (vhcaddq_rot90): Delete.
14834         (vhcaddq_rot270): Delete.
14835         (vcaddq_rot270_m): Delete.
14836         (vcaddq_rot90_m): Delete.
14837         (vhcaddq_rot270_m): Delete.
14838         (vhcaddq_rot90_m): Delete.
14839         (vcaddq_rot90_x): Delete.
14840         (vcaddq_rot270_x): Delete.
14841         (vhcaddq_rot90_x): Delete.
14842         (vhcaddq_rot270_x): Delete.
14843         (vcaddq_rot90_u8): Delete.
14844         (vcaddq_rot270_u8): Delete.
14845         (vhcaddq_rot90_s8): Delete.
14846         (vhcaddq_rot270_s8): Delete.
14847         (vcaddq_rot90_s8): Delete.
14848         (vcaddq_rot270_s8): Delete.
14849         (vcaddq_rot90_u16): Delete.
14850         (vcaddq_rot270_u16): Delete.
14851         (vhcaddq_rot90_s16): Delete.
14852         (vhcaddq_rot270_s16): Delete.
14853         (vcaddq_rot90_s16): Delete.
14854         (vcaddq_rot270_s16): Delete.
14855         (vcaddq_rot90_u32): Delete.
14856         (vcaddq_rot270_u32): Delete.
14857         (vhcaddq_rot90_s32): Delete.
14858         (vhcaddq_rot270_s32): Delete.
14859         (vcaddq_rot90_s32): Delete.
14860         (vcaddq_rot270_s32): Delete.
14861         (vcaddq_rot90_f16): Delete.
14862         (vcaddq_rot270_f16): Delete.
14863         (vcaddq_rot90_f32): Delete.
14864         (vcaddq_rot270_f32): Delete.
14865         (vcaddq_rot270_m_s8): Delete.
14866         (vcaddq_rot270_m_s32): Delete.
14867         (vcaddq_rot270_m_s16): Delete.
14868         (vcaddq_rot270_m_u8): Delete.
14869         (vcaddq_rot270_m_u32): Delete.
14870         (vcaddq_rot270_m_u16): Delete.
14871         (vcaddq_rot90_m_s8): Delete.
14872         (vcaddq_rot90_m_s32): Delete.
14873         (vcaddq_rot90_m_s16): Delete.
14874         (vcaddq_rot90_m_u8): Delete.
14875         (vcaddq_rot90_m_u32): Delete.
14876         (vcaddq_rot90_m_u16): Delete.
14877         (vhcaddq_rot270_m_s8): Delete.
14878         (vhcaddq_rot270_m_s32): Delete.
14879         (vhcaddq_rot270_m_s16): Delete.
14880         (vhcaddq_rot90_m_s8): Delete.
14881         (vhcaddq_rot90_m_s32): Delete.
14882         (vhcaddq_rot90_m_s16): Delete.
14883         (vcaddq_rot270_m_f32): Delete.
14884         (vcaddq_rot270_m_f16): Delete.
14885         (vcaddq_rot90_m_f32): Delete.
14886         (vcaddq_rot90_m_f16): Delete.
14887         (vcaddq_rot90_x_s8): Delete.
14888         (vcaddq_rot90_x_s16): Delete.
14889         (vcaddq_rot90_x_s32): Delete.
14890         (vcaddq_rot90_x_u8): Delete.
14891         (vcaddq_rot90_x_u16): Delete.
14892         (vcaddq_rot90_x_u32): Delete.
14893         (vcaddq_rot270_x_s8): Delete.
14894         (vcaddq_rot270_x_s16): Delete.
14895         (vcaddq_rot270_x_s32): Delete.
14896         (vcaddq_rot270_x_u8): Delete.
14897         (vcaddq_rot270_x_u16): Delete.
14898         (vcaddq_rot270_x_u32): Delete.
14899         (vhcaddq_rot90_x_s8): Delete.
14900         (vhcaddq_rot90_x_s16): Delete.
14901         (vhcaddq_rot90_x_s32): Delete.
14902         (vhcaddq_rot270_x_s8): Delete.
14903         (vhcaddq_rot270_x_s16): Delete.
14904         (vhcaddq_rot270_x_s32): Delete.
14905         (vcaddq_rot90_x_f16): Delete.
14906         (vcaddq_rot90_x_f32): Delete.
14907         (vcaddq_rot270_x_f16): Delete.
14908         (vcaddq_rot270_x_f32): Delete.
14909         (__arm_vcaddq_rot90_u8): Delete.
14910         (__arm_vcaddq_rot270_u8): Delete.
14911         (__arm_vhcaddq_rot90_s8): Delete.
14912         (__arm_vhcaddq_rot270_s8): Delete.
14913         (__arm_vcaddq_rot90_s8): Delete.
14914         (__arm_vcaddq_rot270_s8): Delete.
14915         (__arm_vcaddq_rot90_u16): Delete.
14916         (__arm_vcaddq_rot270_u16): Delete.
14917         (__arm_vhcaddq_rot90_s16): Delete.
14918         (__arm_vhcaddq_rot270_s16): Delete.
14919         (__arm_vcaddq_rot90_s16): Delete.
14920         (__arm_vcaddq_rot270_s16): Delete.
14921         (__arm_vcaddq_rot90_u32): Delete.
14922         (__arm_vcaddq_rot270_u32): Delete.
14923         (__arm_vhcaddq_rot90_s32): Delete.
14924         (__arm_vhcaddq_rot270_s32): Delete.
14925         (__arm_vcaddq_rot90_s32): Delete.
14926         (__arm_vcaddq_rot270_s32): Delete.
14927         (__arm_vcaddq_rot270_m_s8): Delete.
14928         (__arm_vcaddq_rot270_m_s32): Delete.
14929         (__arm_vcaddq_rot270_m_s16): Delete.
14930         (__arm_vcaddq_rot270_m_u8): Delete.
14931         (__arm_vcaddq_rot270_m_u32): Delete.
14932         (__arm_vcaddq_rot270_m_u16): Delete.
14933         (__arm_vcaddq_rot90_m_s8): Delete.
14934         (__arm_vcaddq_rot90_m_s32): Delete.
14935         (__arm_vcaddq_rot90_m_s16): Delete.
14936         (__arm_vcaddq_rot90_m_u8): Delete.
14937         (__arm_vcaddq_rot90_m_u32): Delete.
14938         (__arm_vcaddq_rot90_m_u16): Delete.
14939         (__arm_vhcaddq_rot270_m_s8): Delete.
14940         (__arm_vhcaddq_rot270_m_s32): Delete.
14941         (__arm_vhcaddq_rot270_m_s16): Delete.
14942         (__arm_vhcaddq_rot90_m_s8): Delete.
14943         (__arm_vhcaddq_rot90_m_s32): Delete.
14944         (__arm_vhcaddq_rot90_m_s16): Delete.
14945         (__arm_vcaddq_rot90_x_s8): Delete.
14946         (__arm_vcaddq_rot90_x_s16): Delete.
14947         (__arm_vcaddq_rot90_x_s32): Delete.
14948         (__arm_vcaddq_rot90_x_u8): Delete.
14949         (__arm_vcaddq_rot90_x_u16): Delete.
14950         (__arm_vcaddq_rot90_x_u32): Delete.
14951         (__arm_vcaddq_rot270_x_s8): Delete.
14952         (__arm_vcaddq_rot270_x_s16): Delete.
14953         (__arm_vcaddq_rot270_x_s32): Delete.
14954         (__arm_vcaddq_rot270_x_u8): Delete.
14955         (__arm_vcaddq_rot270_x_u16): Delete.
14956         (__arm_vcaddq_rot270_x_u32): Delete.
14957         (__arm_vhcaddq_rot90_x_s8): Delete.
14958         (__arm_vhcaddq_rot90_x_s16): Delete.
14959         (__arm_vhcaddq_rot90_x_s32): Delete.
14960         (__arm_vhcaddq_rot270_x_s8): Delete.
14961         (__arm_vhcaddq_rot270_x_s16): Delete.
14962         (__arm_vhcaddq_rot270_x_s32): Delete.
14963         (__arm_vcaddq_rot90_f16): Delete.
14964         (__arm_vcaddq_rot270_f16): Delete.
14965         (__arm_vcaddq_rot90_f32): Delete.
14966         (__arm_vcaddq_rot270_f32): Delete.
14967         (__arm_vcaddq_rot270_m_f32): Delete.
14968         (__arm_vcaddq_rot270_m_f16): Delete.
14969         (__arm_vcaddq_rot90_m_f32): Delete.
14970         (__arm_vcaddq_rot90_m_f16): Delete.
14971         (__arm_vcaddq_rot90_x_f16): Delete.
14972         (__arm_vcaddq_rot90_x_f32): Delete.
14973         (__arm_vcaddq_rot270_x_f16): Delete.
14974         (__arm_vcaddq_rot270_x_f32): Delete.
14975         (__arm_vcaddq_rot90): Delete.
14976         (__arm_vcaddq_rot270): Delete.
14977         (__arm_vhcaddq_rot90): Delete.
14978         (__arm_vhcaddq_rot270): Delete.
14979         (__arm_vcaddq_rot270_m): Delete.
14980         (__arm_vcaddq_rot90_m): Delete.
14981         (__arm_vhcaddq_rot270_m): Delete.
14982         (__arm_vhcaddq_rot90_m): Delete.
14983         (__arm_vcaddq_rot90_x): Delete.
14984         (__arm_vcaddq_rot270_x): Delete.
14985         (__arm_vhcaddq_rot90_x): Delete.
14986         (__arm_vhcaddq_rot270_x): Delete.
14988 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
14990         * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
14991         (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
14992         * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
14993         (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
14994         VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
14995         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
14996         VHCADDQ_ROT270_S.
14997         (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
14998         VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
14999         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
15000         VHCADDQ_ROT270_M_S.
15001         (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
15002         VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
15003         VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
15004         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
15005         (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
15006         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
15007         UNSPEC_VCADD270.
15008         (VCADDQ_ROT270_M): Delete.
15009         (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
15010         (VCADDQ_ROT90_M): Delete.
15011         * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
15012         (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
15013         into ...
15014         (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
15015         (mve_vcaddq<mve_rot><mode>): Rename into ...
15016         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
15017         (mve_vcaddq_rot270_m_<supf><mode>)
15018         (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
15019         (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
15020         (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
15021         (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
15022         into ...
15023         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
15025 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
15027         PR target/110588
15028         * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
15029         preparation statement over braces for a single statement.
15030         (*bt<mode>_setncqi): Likewise.
15031         (*bt<mode>_setncqi_2): New define_insn_and_split.
15033 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
15035         * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
15036         case inserting of 64-bit values into a TImode register, to handle
15037         both DImode and DFmode using either *insvti_lowpart_1
15038         or *isnvti_highpart_1.
15040 2023-07-14  Uros Bizjak  <ubizjak@gmail.com>
15042         PR target/110206
15043         * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
15044         * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
15045         * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
15046         * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
15047         when the original source contains a paradoxical subreg.
15049 2023-07-14  Jan Hubicka  <jh@suse.cz>
15051         * passes.cc (execute_function_todo): Remove
15052         TODO_rebuild_frequencies
15053         * passes.def: Add rebuild_frequencies pass.
15054         * predict.cc (estimate_bb_frequencies): Drop
15055         force parameter.
15056         (tree_estimate_probability): Update call of
15057         estimate_bb_frequencies.
15058         (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
15059         first and do not rebuild if not necessary.
15060         (class pass_rebuild_frequencies): New.
15061         (make_pass_rebuild_frequencies): New.
15062         * profile-count.h: Add profile_count::very_large_p.
15063         * tree-inline.cc (optimize_inline_calls): Do not return
15064         TODO_rebuild_frequencies
15065         * tree-pass.h (TODO_rebuild_frequencies): Remove.
15066         (make_pass_rebuild_frequencies): Declare.
15068 2023-07-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15070         * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
15071         * config/riscv/riscv-protos.h (enum insn_type): New enum.
15072         (expand_cond_len_ternop): New function.
15073         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
15074         (expand_cond_len_ternop): Ditto.
15076 2023-07-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
15078         PR target/110657
15079         * config/bpf/bpf.md: Enable instruction scheduling.
15081 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
15083         PR tree-optimization/109154
15084         * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
15085         (struct bb_predicate): Add no_predicate_stmts.
15086         (set_bb_predicate): Increase predicate count.
15087         (set_bb_predicate_gimplified_stmts): Conditionally initialize
15088         no_predicate_stmts.
15089         (get_bb_num_predicate_stmts): New.
15090         (init_bb_predicate): Initialzie no_predicate_stmts.
15091         (release_bb_predicate): Cleanup no_predicate_stmts.
15092         (insert_gimplified_predicates): Preserve no_predicate_stmts.
15094 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
15096         PR tree-optimization/109154
15097         * tree-if-conv.cc (gen_simplified_condition,
15098         gen_phi_nest_statement): New.
15099         (gen_phi_arg_condition, predicate_scalar_phi): Use it.
15101 2023-07-14  Richard Biener  <rguenther@suse.de>
15103         * gimple.h (gimple_phi_arg): New const overload.
15104         (gimple_phi_arg_def): Make gimple arg const.
15105         (gimple_phi_arg_def_from_edge): New inline function.
15106         * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
15107         Likewise.
15108         * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
15109         new inline function.
15110         (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
15112 2023-07-14  Monk Chiang  <monk.chiang@sifive.com>
15114         * common/config/riscv/riscv-common.cc:
15115         (riscv_implied_info): Add zihintntl item.
15116         (riscv_ext_version_table): Ditto.
15117         (riscv_ext_flag_table): Ditto.
15118         * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
15119         (TARGET_ZIHINTNTL): Ditto.
15121 2023-07-14  Die Li  <lidie@eswincomputing.com>
15123         * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
15125 2023-07-14  Oleg Endo  <olegendo@gcc.gnu.org>
15127         PR target/101469
15128         * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
15129         used by the address of the following memory operand.
15131 2023-07-13  Mikael Pettersson  <mikpelinux@gmail.com>
15133         PR target/107841
15134         * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
15135         deallocate alloca-only frame.
15137 2023-07-13  Iain Sandoe  <iain@sandoe.co.uk>
15139         PR target/110624
15140         * config/darwin.h (DARWIN_PLATFORM_ID): New.
15141         (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
15142         and SDK data to the static linker.
15144 2023-07-13  Carl Love  <cel@us.ibm.com>
15146         * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
15147         built-in definition return type.
15148         * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
15149         define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
15150         * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
15151         argument to return FPSCR fields.
15152         * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
15153         the return value.  Add description for
15154         __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
15156 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
15158         PR target/106966
15159         * config/alpha/alpha.cc (alpha_emit_set_long_const):
15160         Always use DImode when constructing long const.
15162 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
15164         * haifa-sched.cc: Change TRUE/FALSE to true/false.
15165         * ira.cc: Ditto.
15166         * lra-assigns.cc: Ditto.
15167         * lra-constraints.cc: Ditto.
15168         * sel-sched.cc: Ditto.
15170 2023-07-13  Andrew Pinski  <apinski@marvell.com>
15172         PR tree-optimization/110293
15173         PR tree-optimization/110539
15174         * match.pd: Expand the `x != (typeof x)(x == 0)`
15175         pattern to handle where the inner and outer comparsions
15176         are either `!=` or `==` and handle other constants
15177         than 0.
15179 2023-07-13  Vladimir N. Makarov  <vmakarov@redhat.com>
15181         PR middle-end/109520
15182         * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
15183         (lra_asm_insn_error): New prototype.
15184         * lra.cc: Include rtl_error.h.
15185         (lra_set_insn_recog_data): Initialize asm_reloads_num.
15186         (lra_asm_insn_error): New func whose code is taken from ...
15187         * lra-assigns.cc (lra_split_hard_reg_for): ... here.  Use lra_asm_insn_error.
15188         * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
15190 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15192         * genmatch.cc (commutative_op): Add COND_LEN_*
15193         * internal-fn.cc (first_commutative_argument): Ditto.
15194         (CASE): Ditto.
15195         (get_unconditional_internal_fn): Ditto.
15196         (can_interpret_as_conditional_op_p): Ditto.
15197         (internal_fn_len_index): Ditto.
15198         * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
15199         * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
15200         (convert_mult_to_fma): Ditto.
15201         (math_opts_dom_walker::after_dom_children): Ditto.
15203 2023-07-13  Pan Li  <pan2.li@intel.com>
15205         * config/riscv/riscv.cc (vxrm_rtx): New static var.
15206         (frm_rtx): Ditto.
15207         (global_state_unknown_p): Removed.
15208         (riscv_entity_mode_after): Removed.
15209         (asm_insn_p): New function.
15210         (vxrm_unknown_p): New function for fixed-point.
15211         (riscv_vxrm_mode_after): Ditto.
15212         (frm_unknown_dynamic_p): New function for floating-point.
15213         (riscv_frm_mode_after): Ditto.
15214         (riscv_mode_after): Leverage new functions.
15216 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15218         * tree-vect-stmts.cc (vect_model_load_cost): Remove.
15219         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
15220         calling vect_model_load_cost.
15222 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15224         * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
15225         handle memory_access_type VMAT_CONTIGUOUS, remove some
15226         VMAT_CONTIGUOUS_PERMUTE related handlings.
15227         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
15228         without calling vect_model_load_cost.
15230 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15232         * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
15233         VMAT_CONTIGUOUS_REVERSE any more.
15234         (vectorizable_load): Adjust the costing handling on
15235         VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
15237 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15239         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
15240         VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
15241         (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
15242         assert it will never get VMAT_LOAD_STORE_LANES.
15244 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15246         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
15247         VMAT_GATHER_SCATTER without calling vect_model_load_cost.
15248         (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
15249         remove VMAT_GATHER_SCATTER related handlings and the related parameter
15250         gs_info.
15252 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15254         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
15255         on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
15256         vect_model_load_cost.
15257         (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
15258         VMAT_STRIDED_SLP any more, and remove their related handlings.
15260 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15262         * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
15263         (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
15264         hoisting decision and without calling vect_model_load_cost.
15265         (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
15266         and remove VMAT_INVARIANT related handlings.
15268 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15270         * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
15271         on costing with one extra argument cost_vec.
15272         (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
15273         (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
15274         gs_info.decl set any more.
15276 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15278         * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
15279         to vect_model_load_cost down to some different transform paths
15280         according to the handlings of different vect_memory_access_types.
15282 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
15284         * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
15286 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15288         * config/riscv/autovec.md
15289         (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
15290         (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
15291         (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
15292         (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
15293         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
15294         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
15295         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
15296         (len_mask_gather_load<mode><mode>): Ditto.
15297         (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
15298         (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
15299         (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
15300         (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
15301         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
15302         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
15303         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
15304         (len_mask_scatter_store<mode><mode>): Ditto.
15305         * config/riscv/predicates.md (const_1_operand): New predicate.
15306         (vector_gs_scale_operand_16): Ditto.
15307         (vector_gs_scale_operand_32): Ditto.
15308         (vector_gs_scale_operand_64): Ditto.
15309         (vector_gs_extension_operand): Ditto.
15310         (vector_gs_scale_operand_16_rv32): Ditto.
15311         (vector_gs_scale_operand_32_rv32): Ditto.
15312         * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
15313         (expand_gather_scatter): New function.
15314         * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
15315         (emit_vlmax_masked_store_insn): New function.
15316         (emit_nonvlmax_masked_store_insn): Ditto.
15317         (modulo_sel_indices): Ditto.
15318         (expand_vec_perm): Fix SLP for gather/scatter.
15319         (prepare_gather_scatter): New function.
15320         (expand_gather_scatter): Ditto.
15321         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
15322         (subreg:SI (DI CONST_POLY_INT)).
15323         * config/riscv/vector-iterators.md: Add gather/scatter.
15324         * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
15325         (@vec_duplicate<mode>): Ditto.
15326         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
15327         Fix name.
15328         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
15330 2023-07-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15332         * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
15333         * config/riscv/riscv-protos.h (enum insn_type): New enum.
15334         (expand_cond_len_binop): New function.
15335         * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
15336         (emit_nonvlmax_fp_tu_insn): Ditto.
15337         (need_fp_rounding_p): Ditto.
15338         (expand_cond_len_binop): Ditto.
15339         * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
15340         (TARGET_PREFERRED_ELSE_VALUE): New target hook.
15342 2023-07-12  Jan Hubicka  <jh@suse.cz>
15344         * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
15345         (gimple_duplicate_seme_region): ... this; break out profile updating
15346         code to ...
15347         * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
15348         (ch_base::copy_headers): Update.
15349         * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
15350         (gimple_duplicate_seme_region): ... this.
15352 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
15354         PR tree-optimization/107043
15355         * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
15357 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
15359         PR tree-optimization/107053
15360         * gimple-range-op.cc (cfn_popcount): Use known set bits.
15362 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
15364         * ira.cc (equiv_init_varies_p): Change return type from int to bool
15365         and adjust function body accordingly.
15366         (equiv_init_movable_p): Ditto.
15367         (memref_used_between_p): Ditto.
15368         * lra-constraints.cc (valid_address_p): Ditto.
15370 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
15372         * range-op.cc (irange_to_masked_value): Remove.
15373         (update_known_bitmask): Update irange value/mask pair instead of
15374         only updating nonzero bits.
15376 2023-07-12  Jan Hubicka  <jh@suse.cz>
15378         * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
15379         parameter and rewrite profile updating code to handle edges elimination.
15380         * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
15381         * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
15382         (loop_iv_derived_p): New function.
15383         (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
15384         of PHIs and propagation of IV derived variables.
15385         (ch_base::copy_headers): Pass around the invariant edges hash set.
15387 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
15389         * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
15390         (last_active_insn): Change "skip_use_p" function argument to bool.
15391         (noce_operand_ok): Change return type from int to bool.
15392         (find_cond_trap): Ditto.
15393         (block_jumps_and_fallthru_p): Change "fallthru_p" and
15394         "jump_p" variables to bool.
15395         (noce_find_if_block): Change return type from int to bool.
15396         (cond_exec_find_if_block): Ditto.
15397         (find_if_case_1): Ditto.
15398         (find_if_case_2): Ditto.
15399         (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
15400         (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
15401         (cond_exec_process_insns): Change return type from int to bool.
15402         Change "mod_ok" function arg to bool.
15403         (cond_exec_process_if_block): Change return type from int to bool.
15404         Change "do_multiple_p" function arg to bool.  Change "then_mod_ok"
15405         variable to bool.
15406         (noce_emit_store_flag): Change return type from int to bool.
15407         Change "reversep" function arg to bool.  Change "cond_complex"
15408         variable to bool.
15409         (noce_try_move): Change return type from int to bool.
15410         (noce_try_ifelse_collapse): Ditto.
15411         (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
15412         (noce_try_addcc): Change return type from int to bool.  Change
15413         "subtract" variable to bool.
15414         (noce_try_store_flag_constants): Change return type from int to bool.
15415         (noce_try_store_flag_mask): Ditto.  Change "reversep" variable to bool.
15416         (noce_try_cmove): Change return type from int to bool.
15417         (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
15418         (noce_try_minmax): Change return type from int to bool.  Change
15419         "unsignedp" variable to bool.
15420         (noce_try_abs): Change return type from int to bool.  Change
15421         "negate" variable to bool.
15422         (noce_try_sign_mask): Change return type from int to bool.
15423         (noce_try_move): Ditto.
15424         (noce_try_store_flag_constants): Ditto.
15425         (noce_try_cmove): Ditto.
15426         (noce_try_cmove_arith): Ditto.
15427         (noce_try_minmax): Ditto.  Change "unsignedp" variable to bool.
15428         (noce_try_bitop): Change return type from int to bool.
15429         (noce_operand_ok): Ditto.
15430         (noce_convert_multiple_sets): Ditto.
15431         (noce_convert_multiple_sets_1): Ditto.
15432         (noce_process_if_block): Ditto.
15433         (check_cond_move_block): Ditto.
15434         (cond_move_process_if_block): Ditto. Change "success_p"
15435         variable to bool.
15436         (rest_of_handle_if_conversion): Change return type to void.
15438 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15440         * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
15441         (CASE): Ditto.
15442         (get_conditional_len_internal_fn): New function.
15443         * internal-fn.h (get_conditional_len_internal_fn): Ditto.
15444         * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
15445         support.
15447 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
15449         PR target/91681
15450         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
15452 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
15454         PR target/91681
15455         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
15456         define_insn_and_split derived from *add<dwi>3_doubleword_concat
15457         and *add<dwi>3_doubleword_zext.
15459 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
15461         PR target/110598
15462         * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
15463         optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
15464         (peephole2): Simplify rega = 0; rega op= rega cases.
15466 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
15468         * config/i386/i386-expand.cc (ix86_expand_int_compare): If
15469         testing a TImode SUBREG of a 128-bit vector register against
15470         zero, use a PTEST instruction instead of first moving it to
15471         a pair of scalar registers.
15473 2023-07-12  Robin Dapp  <rdapp@ventanamicro.com>
15475         * genopinit.cc (main): Adjust maximal number of optabs and
15476         machine modes.
15477         * gensupport.cc (find_optab): Shift optab by 20 and mode by
15478         10 bits.
15479         * optabs-query.h (optab_handler): Ditto.
15480         (convert_optab_handler): Ditto.
15482 2023-07-12  Richard Biener  <rguenther@suse.de>
15484         PR tree-optimization/110630
15485         * tree-vect-slp.cc (vect_add_slp_permutation): New
15486         offset parameter, honor that for the extract code generation.
15487         (vectorizable_slp_permutation_1): Handle offsetted identities.
15489 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15491         * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
15492         (umul<mode>3_highpart): Ditto.
15494 2023-07-12  Jan Beulich  <jbeulich@suse.com>
15496         * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
15497         alternative. Adjust original last alternative's "prefix"
15498         attribute to maybe_evex.
15500 2023-07-12  Jan Beulich  <jbeulich@suse.com>
15502         * config/i386/sse.md (vec_dupv4sf): Make first alternative use
15503         vbroadcastss for AVX2. New AVX512F alternative.
15504         (*vec_dupv4si): New AVX2 and AVX512F alternatives using
15505         vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
15507 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15509         * config/riscv/peephole.md: Remove XThead* peephole passes.
15510         * config/riscv/thead.md: Include thead-peephole.md.
15511         * config/riscv/thead-peephole.md: New file.
15513 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15515         * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
15516         New prototype.
15517         (riscv_index_reg_class): Likewise.
15518         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
15519         (riscv_index_reg_class): New function.
15520         * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
15521         riscv_index_reg_class().
15522         (REGNO_OK_FOR_INDEX_P): Call new function
15523         riscv_regno_ok_for_index_p().
15525 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15527         * config/riscv/riscv-protos.h (enum riscv_address_type):
15528         New location of type definition.
15529         (struct riscv_address_info): Likewise.
15530         * config/riscv/riscv.cc (enum riscv_address_type):
15531         Old location of type definition.
15532         (struct riscv_address_info): Likewise.
15534 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15536         * config/riscv/riscv.h (Xmode): New macro.
15538 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15540         * config/riscv/riscv.cc (riscv_print_operand_address): Use
15541         output_addr_const rather than riscv_print_operand.
15543 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15545         * config/riscv/thead.md: Adjust constraints of th_addsl.
15547 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15549         * config/riscv/thead.cc (th_mempair_operands_p):
15550         Fix documentation of th_mempair_order_operands().
15552 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15554         * config/riscv/thead.cc (th_mempair_save_regs):
15555         Emit REG_FRAME_RELATED_EXPR notes in prologue.
15557 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
15559         * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
15560         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
15561         New XThead extension INSN.
15562         (*zero_extendsidi2_th_extu): New XThead extension INSN.
15563         (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
15565 2023-07-12  liuhongt  <hongtao.liu@intel.com>
15567         PR target/110438
15568         PR target/110202
15569         * config/i386/predicates.md
15570         (int_float_vector_all_ones_operand): New predicate.
15571         * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
15572         define_insn.
15573         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
15574         Ditto.
15575         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
15576         Ditto.
15577         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
15578         define_insn_and_split to avoid false dependence.
15579         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
15580         (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
15581         of operands 1 to '0' to avoid false dependence.
15582         (*andnot<mode>3): Ditto.
15583         (iornot<mode>3): Ditto.
15584         (*<nlogic><mode>3): Ditto.
15586 2023-07-12  Mo, Zewei  <zewei.mo@intel.com>
15588         * common/config/i386/cpuinfo.h
15589         (get_intel_cpu): Handle Granite Rapids D.
15590         * common/config/i386/i386-common.cc:
15591         (processor_alias_table): Add graniterapids-d.
15592         * common/config/i386/i386-cpuinfo.h
15593         (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
15594         * config.gcc: Add -march=graniterapids-d.
15595         * config/i386/driver-i386.cc (host_detect_local_cpu):
15596         Handle graniterapids-d.
15597         * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
15598         * doc/extend.texi: Add graniterapids-d.
15599         * doc/invoke.texi: Ditto.
15601 2023-07-12  Haochen Jiang  <haochen.jiang@intel.com>
15603         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
15604         Add OPTION_MASK_ISA_AVX512VL.
15605         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
15606         Ditto.
15608 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15610         * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
15611         * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
15612         (shuffle_compress_patterns): Ditto.
15613         (expand_vec_perm_const_1): Ditto.
15615 2023-07-11  Uros Bizjak  <ubizjak@gmail.com>
15617         * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
15618         * cfghooks.h (struct cfg_hooks): Change return type of
15619         verify_flow_info from integer to bool.
15620         * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
15621         (can_delete_label_p): Ditto.
15622         (rtl_verify_flow_info): Change return type from int to bool
15623         and adjust function body accordingly.  Change "err" variable to bool.
15624         (rtl_verify_flow_info_1): Ditto.
15625         (free_bb_for_insn): Change return type to void.
15626         (rtl_merge_blocks): Change "b_empty" variable to bool.
15627         (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
15628         (verify_hot_cold_block_grouping): Change return type from int to bool.
15629         Change "err" variable to bool.
15630         (rtl_verify_edges): Ditto.
15631         (rtl_verify_bb_insns): Ditto.
15632         (rtl_verify_bb_pointers): Ditto.
15633         (rtl_verify_bb_insn_chain): Ditto.
15634         (rtl_verify_fallthru): Ditto.
15635         (rtl_verify_bb_layout): Ditto.
15636         (purge_all_dead_edges): Change "purged" variable to bool.
15637         * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
15638         * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
15639         (load_killed_in_block_p): Change return type from int to bool
15640         and adjust function body accordingly.
15641         (oprs_unchanged_p): Return true/false.
15642         (rest_of_handle_gcse2): Change return type to void.
15643         * tree-cfg.cc (gimple_verify_flow_info): Change return type from
15644         int to bool.  Change "err" variable to bool.
15646 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
15648         * doc/gm2.texi (-Wuninit-variable-checking=) New item.
15650 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15652         * doc/md.texi: Add COND_LEN_* operations for loop control with length.
15653         * internal-fn.cc (cond_len_unary_direct): Ditto.
15654         (cond_len_binary_direct): Ditto.
15655         (cond_len_ternary_direct): Ditto.
15656         (expand_cond_len_unary_optab_fn): Ditto.
15657         (expand_cond_len_binary_optab_fn): Ditto.
15658         (expand_cond_len_ternary_optab_fn): Ditto.
15659         (direct_cond_len_unary_optab_supported_p): Ditto.
15660         (direct_cond_len_binary_optab_supported_p): Ditto.
15661         (direct_cond_len_ternary_optab_supported_p): Ditto.
15662         * internal-fn.def (COND_LEN_ADD): Ditto.
15663         (COND_LEN_SUB): Ditto.
15664         (COND_LEN_MUL): Ditto.
15665         (COND_LEN_DIV): Ditto.
15666         (COND_LEN_MOD): Ditto.
15667         (COND_LEN_RDIV): Ditto.
15668         (COND_LEN_MIN): Ditto.
15669         (COND_LEN_MAX): Ditto.
15670         (COND_LEN_FMIN): Ditto.
15671         (COND_LEN_FMAX): Ditto.
15672         (COND_LEN_AND): Ditto.
15673         (COND_LEN_IOR): Ditto.
15674         (COND_LEN_XOR): Ditto.
15675         (COND_LEN_SHL): Ditto.
15676         (COND_LEN_SHR): Ditto.
15677         (COND_LEN_FMA): Ditto.
15678         (COND_LEN_FMS): Ditto.
15679         (COND_LEN_FNMA): Ditto.
15680         (COND_LEN_FNMS): Ditto.
15681         (COND_LEN_NEG): Ditto.
15682         * optabs.def (OPTAB_D): Ditto.
15684 2023-07-11  Richard Biener  <rguenther@suse.de>
15686         PR tree-optimization/110614
15687         * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
15688         SLP splats are not suitable for re-align ops.
15690 2023-07-10  Peter Bergner  <bergner@linux.ibm.com>
15692         * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
15693         MEM_P usage.
15694         (vsx_quad_dform_memory_operand): Likewise.
15696 2023-07-10  Uros Bizjak  <ubizjak@gmail.com>
15698         * reorg.cc (stop_search_p): Change return type from int to bool
15699         and adjust function body accordingly.
15700         (resource_conflicts_p): Ditto.
15701         (insn_references_resource_p): Change return type from int to bool.
15702         (insn_sets_resource_p): Ditto.
15703         (redirect_with_delay_slots_safe_p): Ditto.
15704         (condition_dominates_p): Change return type from int to bool
15705         and adjust function body accordingly.
15706         (redirect_with_delay_list_safe_p): Ditto.
15707         (check_annul_list_true_false): Ditto.  Change "annul_true_p"
15708         function argument to bool.
15709         (steal_delay_list_from_target): Change "pannul_p" function
15710         argument to bool pointer.  Change "must_annul" and "used_annul"
15711         variables from int to bool.
15712         (steal_delay_list_from_fallthrough): Ditto.
15713         (own_thread_p): Change return type from int to bool and adjust
15714         function body accordingly.  Change "allow_fallthrough" function
15715         argument to bool.
15716         (reorg_redirect_jump): Change return type from int to bool.
15717         (fill_simple_delay_slots): Change "non_jumps_p" function
15718         argument from int to bool.  Change "maybe_never" varible to bool.
15719         (fill_slots_from_thread): Change "likely", "thread_if_true" and
15720         "own_thread" function arguments to bool.  Change "lose" and
15721         "must_annul" variables to bool.
15722         (delete_from_delay_slot): Change "had_barrier" variable to bool.
15723         (try_merge_delay_insns): Change "annul_p" variable to bool.
15724         (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
15725         variables to bool.
15726         (rest_of_handle_delay_slots): Change return type from int to void
15727         and adjust function body accordingly.
15729 2023-07-10  Kito Cheng  <kito.cheng@sifive.com>
15731         * doc/extend.texi (RISC-V Operand Modifiers): New.
15733 2023-07-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
15735         * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
15736         (insert_insn_end_basic_block): Ditto.
15737         (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
15738         * gcse.cc (insert_insn_end_basic_block):  Export as global function.
15739         * gcse.h (insert_insn_end_basic_block): Ditto.
15741 2023-07-10  Christophe Lyon   <christophe.lyon@linaro.org>
15743         PR target/110268
15744         * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
15745         (arm_builtin_decl): Hahndle MVE builtins.
15746         * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
15747         (add_unique_function): Fix handling of
15748         __ARM_MVE_PRESERVE_USER_NAMESPACE.
15749         (add_overloaded_function): Likewise.
15750         * config/arm/arm-protos.h (builtin_decl): New declaration.
15752 2023-07-10  Christophe Lyon  <christophe.lyon@linaro.org>
15754         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
15756 2023-07-10  Xi Ruoyao  <xry111@xry111.site>
15758         PR tree-optimization/110557
15759         * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
15760         Ensure the output sign-extended if necessary.
15762 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
15764         * config/i386/i386.md (peephole2): Transform xchg insn with a
15765         REG_UNUSED note to a (simple) move.
15766         (*insvti_lowpart_1): New define_insn_and_split.
15767         (*insvdi_lowpart_1): Likewise.
15769 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
15771         * config/i386/i386-features.cc (compute_convert_gain): Tweak
15772         gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
15773         (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
15774         avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
15776 2023-07-10  liuhongt  <hongtao.liu@intel.com>
15778         PR target/110170
15779         * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
15780         splitter to detect fp max pattern.
15781         (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
15783 2023-07-09  Jan Hubicka  <jh@suse.cz>
15785         * cfg.cc (check_bb_profile): Dump counts with relative frequency.
15786         (dump_edge_info): Likewise.
15787         (dump_bb_info): Likewise.
15788         * profile-count.cc (profile_count::dump): Add comma between quality and
15789         freq.
15791 2023-07-08  Jan Hubicka  <jh@suse.cz>
15793         PR tree-optimization/110600
15794         * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
15796 2023-07-08  Jan Hubicka  <jh@suse.cz>
15798         PR middle-end/110590
15799         * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
15800         inner loops and be more careful about inconsistent profiles.
15801         (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
15802         exit is followed by other exit.
15804 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
15806         * cprop.cc (reg_available_p): Change return type from int to bool.
15807         (reg_not_set_p): Ditto.
15808         (try_replace_reg): Ditto.  Change "success" variable to bool.
15809         (cprop_jump): Change return type from int to void
15810         and adjust function body accordingly.
15811         (constprop_register): Ditto.
15812         (cprop_insn): Ditto.  Change "changed" variable to bool.
15813         (local_cprop_pass): Change return type from int to void
15814         and adjust function body accordingly.
15815         (bypass_block): Ditto.  Change "change", "may_be_loop_header"
15816         and "removed_p" variables to bool.
15817         (bypass_conditional_jumps): Change return type from int to void
15818         and adjust function body accordingly.  Change "changed"
15819         variable to bool.
15820         (one_cprop_pass): Ditto.
15822 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
15824         * gcse.cc (expr_equiv_p): Change return type from int to bool.
15825         (oprs_unchanged_p): Change return type from int to void
15826         and adjust function body accordingly.
15827         (oprs_anticipatable_p): Ditto.
15828         (oprs_available_p): Ditto.
15829         (insert_expr_in_table): Ditto.  Change "antic_p" and "avail_p"
15830         arguments to bool. Change "found" variable to bool.
15831         (load_killed_in_block_p): Change return type from int to void and
15832         adjust function body accordingly.  Change "avail_p" argument to bool.
15833         (pre_expr_reaches_here_p): Change return type from int to void
15834         and adjust function body accordingly.
15835         (pre_delete): Ditto.  Change "changed" variable to bool.
15836         (pre_gcse): Change return type from int to void
15837         and adjust function body accordingly. Change "did_insert" and
15838         "changed" variables to bool.
15839         (one_pre_gcse_pass): Change return type from int to void
15840         and adjust function body accordingly.  Change "changed" variable
15841         to bool.
15842         (should_hoist_expr_to_dom): Change return type from int to void
15843         and adjust function body accordingly.  Change
15844         "visited_allocated_locally" variable to bool.
15845         (hoist_code): Change return type from int to void and adjust
15846         function body accordingly.  Change "changed" variable to bool.
15847         (one_code_hoisting_pass): Ditto.
15848         (pre_edge_insert): Change return type from int to void and adjust
15849         function body accordingly.  Change "did_insert" variable to bool.
15850         (pre_expr_reaches_here_p_work): Change return type from int to void
15851         and adjust function body accordingly.
15852         (simple_mem): Ditto.
15853         (want_to_gcse_p): Change return type from int to void
15854         and adjust function body accordingly.
15855         (can_assign_to_reg_without_clobbers_p): Update function body
15856         for bool return type.
15857         (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
15858         (pre_insert_copies): Change "added_copy" variable to bool.
15860 2023-07-08  Jonathan Wakely  <jwakely@redhat.com>
15862         PR c++/110595
15863         PR c++/110596
15864         * doc/invoke.texi (Warning Options): Fix typos.
15866 2023-07-07  Jan Hubicka  <jh@suse.cz>
15868         * profile-count.cc (profile_count::dump): Add FUN
15869         parameter; print relative frequency.
15870         (profile_count::debug): Update.
15871         * profile-count.h (profile_count::dump): Update
15872         prototype.
15874 2023-07-07  Roger Sayle  <roger@nextmovesoftware.com>
15876         PR target/43644
15877         PR target/110533
15878         * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
15879         TImode destinations from paradoxical SUBREGs (setting the lowpart)
15880         into explicit zero extensions.  Use *insvti_highpart_1 instruction
15881         to set the highpart of a TImode destination.
15883 2023-07-07  Jan Hubicka  <jh@suse.cz>
15885         * predict.cc (force_edge_cold): Use
15886         set_edge_probability_and_rescale_others; improve dumps.
15888 2023-07-07  Jan Hubicka  <jh@suse.cz>
15890         * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
15891         after exit.
15892         * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
15893         is known.
15895 2023-07-07  Juergen Christ  <jchrist@linux.ibm.com>
15897         * config/s390/s390.cc (vec_init): Fix default case
15899 2023-07-07  Vladimir N. Makarov  <vmakarov@redhat.com>
15901         * lra-assigns.cc (assign_by_spills): Add reload insns involving
15902         reload pseudos with non-refined class to be processed on the next
15903         sub-pass.
15904         * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
15905         (in_class_p): Use it.
15906         (print_curr_insn_alt): New func.
15907         (process_alt_operands): Use it.  Improve debug info.
15908         (curr_insn_transform): Use print_curr_insn_alt.  Refine reload
15909         pseudo class if it is not refined yet.
15911 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
15913         * value-range.cc (irange::get_bitmask_from_range): Return all the
15914         known bits for a singleton.
15915         (irange::set_range_from_bitmask): Set a range of a singleton when
15916         all bits are known.
15918 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
15920         * value-range.cc (irange::intersect): Leave normalization to
15921         caller.
15923 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
15925         * data-streamer-in.cc (streamer_read_value_range): Adjust for
15926         value/mask.
15927         * data-streamer-out.cc (streamer_write_vrange): Same.
15928         * range-op.cc (operator_cast::fold_range): Same.
15929         * value-range-pretty-print.cc
15930         (vrange_printer::print_irange_bitmasks): Same.
15931         * value-range-storage.cc (irange_storage::write_lengths_address):
15932         Same.
15933         (irange_storage::set_irange): Same.
15934         (irange_storage::get_irange): Same.
15935         (irange_storage::size): Same.
15936         (irange_storage::dump): Same.
15937         * value-range-storage.h: Same.
15938         * value-range.cc (debug): New.
15939         (irange_bitmask::dump): New.
15940         (add_vrange): Adjust for value/mask.
15941         (irange::operator=): Same.
15942         (irange::set): Same.
15943         (irange::verify_range): Same.
15944         (irange::operator==): Same.
15945         (irange::contains_p): Same.
15946         (irange::irange_single_pair_union): Same.
15947         (irange::union_): Same.
15948         (irange::intersect): Same.
15949         (irange::invert): Same.
15950         (irange::get_nonzero_bits_from_range): Rename to...
15951         (irange::get_bitmask_from_range): ...this.
15952         (irange::set_range_from_nonzero_bits): Rename to...
15953         (irange::set_range_from_bitmask): ...this.
15954         (irange::set_nonzero_bits): Rename to...
15955         (irange::update_bitmask): ...this.
15956         (irange::get_nonzero_bits): Rename to...
15957         (irange::get_bitmask): ...this.
15958         (irange::intersect_nonzero_bits): Rename to...
15959         (irange::intersect_bitmask): ...this.
15960         (irange::union_nonzero_bits): Rename to...
15961         (irange::union_bitmask): ...this.
15962         (irange_bitmask::verify_mask): New.
15963         * value-range.h (class irange_bitmask): New.
15964         (irange_bitmask::set_unknown): New.
15965         (irange_bitmask::unknown_p): New.
15966         (irange_bitmask::irange_bitmask): New.
15967         (irange_bitmask::get_precision): New.
15968         (irange_bitmask::get_nonzero_bits): New.
15969         (irange_bitmask::set_nonzero_bits): New.
15970         (irange_bitmask::operator==): New.
15971         (irange_bitmask::union_): New.
15972         (irange_bitmask::intersect): New.
15973         (class irange): Friend vrange_printer.
15974         (irange::varying_compatible_p): Adjust for bitmask.
15975         (irange::set_varying): Same.
15976         (irange::set_nonzero): Same.
15978 2023-07-07  Jan Beulich  <jbeulich@suse.com>
15980         * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
15982 2023-07-07  Jan Beulich  <jbeulich@suse.com>
15984         * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
15985         alternative. Switch new last alternative's "isa" attribute to
15986         "avx512vl".
15987         (vec_extract_hi_v32qi): Likewise.
15989 2023-07-07  Pan Li  <pan2.li@intel.com>
15990             Robin Dapp  <rdapp@ventanamicro.com>
15992         * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
15993         when FRM_MODE_DYN.
15994         (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
15995         (riscv_mode_exit): Likewise for exit mode.
15996         (riscv_mode_needed): Likewise for needed mode.
15997         (riscv_mode_after): Likewise for after mode.
15999 2023-07-07  Pan Li  <pan2.li@intel.com>
16001         * config/riscv/vector.md: Fix typo.
16003 2023-07-06  Jan Hubicka  <jh@suse.cz>
16005         PR middle-end/25623
16006         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
16007         of iterations determined.
16008         * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
16010 2023-07-06  Jan Hubicka  <jh@suse.cz>
16012         * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
16013         probability update to be safe on loops with subloops.
16014         Make bound parameter to be iteration bound.
16015         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
16016         of scale_loop_profile.
16017         * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
16019 2023-07-06  Hao Liu OS  <hliu@os.amperecomputing.com>
16021         PR tree-optimization/110449
16022         * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
16023         vec_loop for the unrolled loop.
16025 2023-07-06  Jan Hubicka  <jh@suse.cz>
16027         * cfg.cc (set_edge_probability_and_rescale_others): New function.
16028         (update_bb_profile_for_threading): Use it; simplify the rest.
16029         * cfg.h (set_edge_probability_and_rescale_others): Declare.
16030         * profile-count.h (profile_probability::apply_scale): New.
16032 2023-07-06  Claudiu Zissulescu  <claziss@gmail.com>
16034         * doc/extend.texi (ARC Built-in Functions): Update documentation
16035         with missing builtins.
16037 2023-07-06  Richard Biener  <rguenther@suse.de>
16039         PR tree-optimization/110556
16040         * tree-ssa-tail-merge.cc (gimple_equal_p): Check
16041         assign code and all operands of non-stores.
16043 2023-07-06  Richard Biener  <rguenther@suse.de>
16045         PR tree-optimization/110563
16046         * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
16047         Remove second argument.
16048         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
16049         Remove for_epilogue_p argument.  Merge assert ...
16050         (vect_analyze_loop_2): ... with check done before determining
16051         partial vectors by moving it after.
16052         * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
16054 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
16056         * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
16057         few things re 'reorder' option and strings.
16058         * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
16060 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
16062         * gengtype-parse.cc: Clean up obsolete parametrized structs
16063         remnants.
16064         * gengtype.cc: Likewise.
16065         * gengtype.h: Likewise.
16067 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
16069         * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
16070         Adjust all users.
16072 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
16074         * gengtype-parse.cc (token_names): Add '"user"'.
16075         * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
16076         'FIRST_TOKEN_WITH_VALUE'.
16078 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
16080         * doc/gty.texi (GTY Options) <string_length>: Enhance.
16082 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
16084         * gengtype.cc (write_root, write_roots): Explicitly reject
16085         'string_length' option.
16086         * doc/gty.texi (GTY Options) <string_length>: Document.
16088 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
16090         * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
16091         (ggc_pch_write_object): Remove 'bool is_string' argument.
16092         * ggc-common.cc: Adjust.
16093         * ggc-page.cc: Likewise.
16095 2023-07-06  Roger Sayle  <roger@nextmovesoftware.com>
16097         * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
16099 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
16101         * doc/extend.texi: Move x86 inlining rule to a new subsubsection
16102         and add description for inling of function with arch and tune
16103         attributes.
16105 2023-07-06  Richard Biener  <rguenther@suse.de>
16107         PR tree-optimization/110515
16108         * tree-ssa-pre.cc (compute_avail): Make code dealing
16109         with hoisting loads with different alias-sets more
16110         robust.
16112 2023-07-06  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16114         * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
16116 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
16118         * config/i386/i386.cc (ix86_can_inline_p): If callee has
16119         default arch=x86-64 and tune=generic, do not block the
16120         inlining to its caller. Also allow callee with different
16121         arch= to be inlined if it has always_inline attribute and
16122         it's ISA is subset of caller's.
16124 2023-07-06  liuhongt  <hongtao.liu@intel.com>
16126         * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
16127         DF/SFmode AND/IOR/XOR/ANDN operations.
16129 2023-07-06  Andrew Pinski  <apinski@marvell.com>
16131         PR middle-end/110554
16132         * tree-vect-generic.cc (expand_vector_condition): For comparisons,
16133         just build using boolean_type_node instead of the cond_type.
16134         For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
16135         that will feed into the COND_EXPR.
16137 2023-07-06  liuhongt  <hongtao.liu@intel.com>
16139         PR target/110170
16140         * config/i386/i386.md (movdf_internal): Disparage slightly for
16141         2 alternatives (r,v) and (v,r) by adding constraint modifier
16142         '?'.
16144 2023-07-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
16146         PR target/106907
16147         * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
16148         initialization of new_addr.
16150 2023-07-06  Hao Liu  <hliu@os.amperecomputing.com>
16152         PR tree-optimization/110474
16153         * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
16154         unroll factor while selecting the epilog vect loop VF.
16156 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
16158         * gimple-range-gori.cc (compute_operand_range): Convert to a tail
16159         call.
16161 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
16163         * gimple-range-gori.cc (compute_operand_range): After calling
16164         compute_operand2_range, recursively call self if needed.
16165         (compute_operand2_range): Turn into a leaf function.
16166         (gori_compute::compute_operand1_and_operand2_range): Finish
16167         operand2 calculation.
16168         * gimple-range-gori.h (compute_operand2_range): Remove name param.
16170 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
16172         * gimple-range-gori.cc (compute_operand_range): After calling
16173         compute_operand1_range, recursively call self if needed.
16174         (compute_operand1_range): Turn into a leaf function.
16175         (gori_compute::compute_operand1_and_operand2_range): Finish
16176         operand1 calculation.
16177         * gimple-range-gori.h (compute_operand1_range): Remove name param.
16179 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
16181         * gimple-range-gori.cc (compute_operand_range): Check for
16182         operand interdependence when both op1 and op2 are computed.
16183         (compute_operand1_and_operand2_range): No checks required now.
16185 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
16187         * gimple-range-gori.cc (compute_operand_range): Check for
16188         a relation between op1 and op2 and use that instead.
16189         (compute_operand1_range): Don't look for a relation override.
16190         (compute_operand2_range): Ditto.
16192 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
16194         * doc/contrib.texi (Contributors): Update my entry.
16196 2023-07-05  Filip Kastl  <filip.kastl@gmail.com>
16198         * value-prof.cc (gimple_mod_subtract_transform): Correct edge
16199         prob calculation.
16201 2023-07-05  Uros Bizjak  <ubizjak@gmail.com>
16203         * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
16204         scehdule_more_p and contributes_to_priority indirect frunction
16205         type from int to bool.
16206         (no_real_insns_p): Change return type from int to bool.
16207         (contributes_to_priority): Ditto.
16208         * haifa-sched.cc (no_real_insns_p): Change return type from
16209         int to bool and adjust function body accordingly.
16210         * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
16211         variable type from int to bool.
16212         (ps_insn_advance_column): Change return type from int to bool.
16213         (ps_has_conflicts): Ditto. Change "has_conflicts"
16214         variable type from int to bool.
16215         * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
16216         (conditions_mutex_p): Ditto.
16217         * sched-ebb.cc (schedule_more_p): Ditto.
16218         (ebb_contributes_to_priority): Change return type from
16219         int to bool and adjust function body accordingly.
16220         * sched-rgn.cc (is_cfg_nonregular): Ditto.
16221         (check_live_1): Ditto.
16222         (is_pfree): Ditto.
16223         (find_conditional_protection): Ditto.
16224         (is_conditionally_protected): Ditto.
16225         (is_prisky): Ditto.
16226         (is_exception_free): Ditto.
16227         (haifa_find_rgns): Change "unreachable" and "too_large_failure"
16228         variables from int to bool.
16229         (extend_rgns): Change "rescan" variable from int to bool.
16230         (check_live): Change return type from
16231         int to bool and adjust function body accordingly.
16232         (can_schedule_ready_p): Ditto.
16233         (schedule_more_p): Ditto.
16234         (contributes_to_priority): Ditto.
16236 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
16238         * doc/md.texi: Document that vec_set and vec_extract must not
16239         fail.
16240         * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
16241         (gimple_expand_vec_set_extract_expr): ...to this.
16242         (gimple_expand_vec_exprs): Call renamed function.
16243         * internal-fn.cc (vec_extract_direct): Add.
16244         (expand_vec_extract_optab_fn): New function to expand
16245         vec_extract optab.
16246         (direct_vec_extract_optab_supported_p): Add.
16247         * internal-fn.def (VEC_EXTRACT): Add.
16248         * optabs.cc (can_vec_extract_var_idx_p): New function.
16249         * optabs.h (can_vec_extract_var_idx_p): Declare.
16251 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
16253         * config/riscv/autovec.md: Add gen_lowpart.
16255 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
16257         * config/riscv/autovec.md: Allow register index operand.
16259 2023-07-05  Pan Li  <pan2.li@intel.com>
16261         * config/riscv/riscv-vector-builtins.cc
16262         (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
16264 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
16266         * config/riscv/autovec.md: Use float_truncate.
16268 2023-07-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16270         * internal-fn.cc (internal_fn_len_index): Apply
16271         LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
16272         (internal_fn_mask_index): Ditto.
16273         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
16274         (supports_vec_scatter_store_p): Ditto.
16275         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
16276         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
16277         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
16278         (vect_get_strided_load_store_ops): Ditto.
16279         (vectorizable_store): Ditto.
16280         (vectorizable_load): Ditto.
16282 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
16283             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16285         * simplify-rtx.cc (native_encode_rtx): Ditto.
16286         (native_decode_vector_rtx): Ditto.
16287         (simplify_const_vector_byte_offset): Ditto.
16288         (simplify_const_vector_subreg): Ditto.
16289         * tree.cc (build_truth_vector_type_for_mode): Ditto.
16290         * varasm.cc (output_constant_pool_2): Ditto.
16292 2023-07-05  YunQiang Su  <yunqiang.su@cipunited.com>
16294         * config/mips/mips.cc (mips_expand_block_move): don't expand for
16295         r6 with -mno-unaligned-access option if one or both of src and
16296         dest are unaligned. restruct: return directly if length is not const.
16297         (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
16299 2023-07-05  Jan Beulich  <jbeulich@suse.com>
16301         PR target/100711
16302         * config/i386/sse.md: New splitters to simplify
16303         not;vec_duplicate as a singular vpternlog.
16304         (one_cmpl<mode>2): Allow broadcast for operand 1.
16305         (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
16307 2023-07-05  Jan Beulich  <jbeulich@suse.com>
16309         PR target/100711
16310         * config/i386/sse.md: New splitters to simplify
16311         not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
16313 2023-07-05  Jan Beulich  <jbeulich@suse.com>
16315         PR target/100711
16316         * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
16317         form of splitter for PR target/100711.
16319 2023-07-05  Richard Biener  <rguenther@suse.de>
16321         PR middle-end/110541
16322         * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
16323         reality.
16325 2023-07-05  Jan Beulich  <jbeulich@suse.com>
16327         PR target/93768
16328         * config/i386/sse.md (*andnot<mode>3): Add new alternatives
16329         for memory form operand 1.
16331 2023-07-05  Jan Beulich  <jbeulich@suse.com>
16333         PR target/93768
16334         * config/i386/i386.cc (ix86_rtx_costs): Further special-case
16335         bitwise vector operations.
16336         * config/i386/sse.md (*iornot<mode>3): New insn.
16337         (*xnor<mode>3): Likewise.
16338         (*<nlogic><mode>3): Likewise.
16339         (andor): New code iterator.
16340         (nlogic): New code attribute.
16341         (ternlog_nlogic): Likewise.
16343 2023-07-05  Richard Biener  <rguenther@suse.de>
16345         * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
16347 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
16349         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
16351 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
16353         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
16354         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
16355         (ADJUST_ALIGNMENT): Ditto.
16356         (RVV_TUPLE_PARTIAL_MODES): Ditto.
16357         (ADJUST_NUNITS): Ditto.
16358         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
16359         New types.
16360         (vfloat16mf4x3_t): Ditto.
16361         (vfloat16mf4x4_t): Ditto.
16362         (vfloat16mf4x5_t): Ditto.
16363         (vfloat16mf4x6_t): Ditto.
16364         (vfloat16mf4x7_t): Ditto.
16365         (vfloat16mf4x8_t): Ditto.
16366         (vfloat16mf2x2_t): Ditto.
16367         (vfloat16mf2x3_t): Ditto.
16368         (vfloat16mf2x4_t): Ditto.
16369         (vfloat16mf2x5_t): Ditto.
16370         (vfloat16mf2x6_t): Ditto.
16371         (vfloat16mf2x7_t): Ditto.
16372         (vfloat16mf2x8_t): Ditto.
16373         (vfloat16m1x2_t): Ditto.
16374         (vfloat16m1x3_t): Ditto.
16375         (vfloat16m1x4_t): Ditto.
16376         (vfloat16m1x5_t): Ditto.
16377         (vfloat16m1x6_t): Ditto.
16378         (vfloat16m1x7_t): Ditto.
16379         (vfloat16m1x8_t): Ditto.
16380         (vfloat16m2x2_t): Ditto.
16381         (vfloat16m2x3_t): Ditto.
16382         (vfloat16m2x4_t): Ditto.
16383         (vfloat16m4x2_t): Ditto.
16384         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
16385         (vfloat16mf4x3_t): Ditto.
16386         (vfloat16mf4x4_t): Ditto.
16387         (vfloat16mf4x5_t): Ditto.
16388         (vfloat16mf4x6_t): Ditto.
16389         (vfloat16mf4x7_t): Ditto.
16390         (vfloat16mf4x8_t): Ditto.
16391         (vfloat16mf2x2_t): Ditto.
16392         (vfloat16mf2x3_t): Ditto.
16393         (vfloat16mf2x4_t): Ditto.
16394         (vfloat16mf2x5_t): Ditto.
16395         (vfloat16mf2x6_t): Ditto.
16396         (vfloat16mf2x7_t): Ditto.
16397         (vfloat16mf2x8_t): Ditto.
16398         (vfloat16m1x2_t): Ditto.
16399         (vfloat16m1x3_t): Ditto.
16400         (vfloat16m1x4_t): Ditto.
16401         (vfloat16m1x5_t): Ditto.
16402         (vfloat16m1x6_t): Ditto.
16403         (vfloat16m1x7_t): Ditto.
16404         (vfloat16m1x8_t): Ditto.
16405         (vfloat16m2x2_t): Ditto.
16406         (vfloat16m2x3_t): Ditto.
16407         (vfloat16m2x4_t): Ditto.
16408         (vfloat16m4x2_t): Ditto.
16409         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
16410         * config/riscv/riscv.md: New.
16411         * config/riscv/vector-iterators.md: New.
16413 2023-07-04  Andrew Pinski  <apinski@marvell.com>
16415         PR tree-optimization/110487
16416         * match.pd (a !=/== CST1 ? CST2 : CST3): Always
16417         build a nonstandard integer and use that.
16419 2023-07-04  Andrew Pinski  <apinski@marvell.com>
16421         * match.pd (a?-1:0): Cast type an integer type
16422         rather the type before the negative.
16423         (a?0:-1): Likewise.
16425 2023-07-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
16427         * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
16428         Change to use HARD_REG_BIT and its macros.
16429         * config/xtensa/xtensa.md
16430         (peephole2: regmove elimination during DFmode input reload):
16431         Likewise.
16433 2023-07-04  Richard Biener  <rguenther@suse.de>
16435         PR tree-optimization/110491
16436         * tree-ssa-phiopt.cc (match_simplify_replacement): Check
16437         whether the PHI args are possibly undefined before folding
16438         the COND_EXPR.
16440 2023-07-04  Pan Li  <pan2.li@intel.com>
16441             Thomas Schwinge  <thomas@codesourcery.com>
16443         * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
16444         bits for machine mode table.
16445         * lto-streamer-out.cc (lto_write_mode_table): Stream out the
16446         HOST machine mode bits.
16447         * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
16448         * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
16449         as the table size.
16450         * tree-streamer.h (streamer_mode_table): Ditto.
16451         (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
16452         as the packing limit.
16453         (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
16455 2023-07-04  Thomas Schwinge  <thomas@codesourcery.com>
16457         * lto-streamer.h (class lto_input_block): Capture
16458         'lto_file_decl_data *file_data' instead of just
16459         'unsigned char *mode_table'.
16460         * ipa-devirt.cc (ipa_odr_read_section): Adjust.
16461         * ipa-fnsummary.cc (inline_read_section): Likewise.
16462         * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
16463         * ipa-modref.cc (read_section): Likewise.
16464         * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
16465         Likewise.
16466         * ipa-sra.cc (isra_read_summary_section): Likewise.
16467         * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
16468         * lto-section-in.cc (lto_create_simple_input_block): Likewise.
16469         * lto-streamer-in.cc (lto_read_body_or_constructor)
16470         (lto_input_toplevel_asms): Likewise.
16471         * tree-streamer.h (bp_unpack_machine_mode): Likewise.
16473 2023-07-04  Richard Biener  <rguenther@suse.de>
16475         * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
16476         (empty_bb_or_one_feeding_into_p): Check for them.
16477         * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
16478         * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
16480 2023-07-04  Richard Biener  <rguenther@suse.de>
16482         * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
16483         check guarding scalar_niter underflow.
16485 2023-07-04  Hao Liu  <hliu@os.amperecomputing.com>
16487         PR tree-optimization/110531
16488         * tree-vect-loop.cc (vect_analyze_loop_1): initialize
16489         slp_done_for_suggested_uf to false.
16491 2023-07-04  Richard Biener  <rguenther@suse.de>
16493         PR tree-optimization/110228
16494         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
16495         Mark SSA may-undefs.
16496         (bb_no_side_effects_p): Check stmt uses for undefs.
16498 2023-07-04  Richard Biener  <rguenther@suse.de>
16500         PR tree-optimization/110436
16501         * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
16502         force live but not relevant pattern stmts relevant.
16504 2023-07-04  Lili Cui  <lili.cui@intel.com>
16506         * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
16507         * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
16509 2023-07-04  Richard Biener  <rguenther@suse.de>
16511         PR middle-end/110495
16512         * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
16513         since we do not set TREE_OVERFLOW on those since the
16514         introduction of VL vectors.
16515         * match.pd (x +- CST +- CST): For VECTOR_CST do not look
16516         at TREE_OVERFLOW to determine validity of association.
16518 2023-07-04  Richard Biener  <rguenther@suse.de>
16520         PR tree-optimization/110310
16521         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
16522         Move costing part ...
16523         (vect_analyze_loop_costing): ... here.  Integrate better
16524         estimate for epilogues from ...
16525         (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
16526         with actual epilogue status.
16527         * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
16528         avoid cancelling epilogue vectorization.
16529         (vect_update_epilogue_niters): Remove.  No longer update
16530         epilogue LOOP_VINFO_NITERS.
16532 2023-07-04  Pan Li  <pan2.li@intel.com>
16534         Revert:
16535         2023-07-03  Pan Li  <pan2.li@intel.com>
16537         * config/riscv/vector.md: Fix typo.
16539 2023-07-04  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16541         * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
16542         * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
16543         (expand_gather_load_optab_fn): Ditto.
16544         (internal_load_fn_p): Ditto.
16545         (internal_store_fn_p): Ditto.
16546         (internal_gather_scatter_fn_p): Ditto.
16547         (internal_fn_len_index): Ditto.
16548         (internal_fn_mask_index): Ditto.
16549         (internal_fn_stored_value_index): Ditto.
16550         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
16551         (LEN_MASK_SCATTER_STORE): Ditto.
16552         * optabs.def (OPTAB_CD): Ditto.
16554 2023-07-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16556         * config/riscv/riscv-vsetvl.cc
16557         (vector_insn_info::parse_insn): Add early break.
16559 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
16561         * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
16562         ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
16564 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
16566         * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
16568 2023-07-03  Christoph Müllner  <christoph.muellner@vrull.eu>
16570         * common/config/riscv/riscv-common.cc: Add support for zvbb,
16571         zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
16572         zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
16573         * config/riscv/arch-canonicalize: Add canonicalization info for
16574         zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
16575         * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
16576         (MASK_ZVBC): Likewise.
16577         (TARGET_ZVBB): Likewise.
16578         (TARGET_ZVBC): Likewise.
16579         (MASK_ZVKG): Likewise.
16580         (MASK_ZVKNED): Likewise.
16581         (MASK_ZVKNHA): Likewise.
16582         (MASK_ZVKNHB): Likewise.
16583         (MASK_ZVKSED): Likewise.
16584         (MASK_ZVKSH): Likewise.
16585         (MASK_ZVKN): Likewise.
16586         (MASK_ZVKNC): Likewise.
16587         (MASK_ZVKNG): Likewise.
16588         (MASK_ZVKS): Likewise.
16589         (MASK_ZVKSC): Likewise.
16590         (MASK_ZVKSG): Likewise.
16591         (MASK_ZVKT): Likewise.
16592         (TARGET_ZVKG): Likewise.
16593         (TARGET_ZVKNED): Likewise.
16594         (TARGET_ZVKNHA): Likewise.
16595         (TARGET_ZVKNHB): Likewise.
16596         (TARGET_ZVKSED): Likewise.
16597         (TARGET_ZVKSH): Likewise.
16598         (TARGET_ZVKN): Likewise.
16599         (TARGET_ZVKNC): Likewise.
16600         (TARGET_ZVKNG): Likewise.
16601         (TARGET_ZVKS): Likewise.
16602         (TARGET_ZVKSC): Likewise.
16603         (TARGET_ZVKSG): Likewise.
16604         (TARGET_ZVKT): Likewise.
16605         * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
16607 2023-07-03  Andrew Pinski  <apinski@marvell.com>
16609         PR middle-end/110510
16610         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
16612 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
16614         * config/darwin.h: Avoid duplicate multiply_defined specs on
16615         earlier Darwin versions with shared libgcc.
16617 2023-07-03  Uros Bizjak  <ubizjak@gmail.com>
16619         * tree.h (tree_int_cst_equal): Change return type from int to bool.
16620         (operand_equal_for_phi_arg_p): Ditto.
16621         (tree_map_base_marked_p): Ditto.
16622         * tree.cc (contains_placeholder_p): Update function body
16623         for bool return type.
16624         (type_cache_hasher::equal): Ditto.
16625         (tree_map_base_hash): Change return type
16626         from int to void and adjust function body accordingly.
16627         (tree_int_cst_equal): Ditto.
16628         (operand_equal_for_phi_arg_p): Ditto.
16629         (get_narrower): Change "first" variable to bool.
16630         (cl_option_hasher::equal): Update function body for bool return type.
16631         * ggc.h (ggc_set_mark): Change return type from int to bool.
16632         (ggc_marked_p): Ditto.
16633         * ggc-page.cc (gt_ggc_mx): Change return type
16634         from int to void and adjust function body accordingly.
16635         (ggc_set_mark): Ditto.
16637 2023-07-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16639         * config/riscv/autovec.md: Change order of
16640         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
16641         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
16642         * doc/md.texi: Ditto.
16643         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
16644         * internal-fn.cc (len_maskload_direct): Ditto.
16645         (len_maskstore_direct): Ditto.
16646         (add_len_and_mask_args): New function.
16647         (expand_partial_load_optab_fn): Change order of
16648         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
16649         (expand_partial_store_optab_fn): Ditto.
16650         (internal_fn_len_index): New function.
16651         (internal_fn_mask_index): Change order of
16652         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
16653         (internal_fn_stored_value_index): Ditto.
16654         (internal_len_load_store_bias): Ditto.
16655         * internal-fn.h (internal_fn_len_index): New function.
16656         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
16657         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
16658         * tree-vect-stmts.cc (vectorizable_store): Ditto.
16659         (vectorizable_load): Ditto.
16661 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
16663         PR modula2/110125
16664         * doc/gm2.texi (Semantic checking): Include examples using
16665         -Wuninit-variable-checking.
16667 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16669         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
16670         (*single_widen_fnma<mode>): Ditto.
16671         (*double_widen_fms<mode>): Ditto.
16672         (*single_widen_fms<mode>): Ditto.
16673         (*double_widen_fnms<mode>): Ditto.
16674         (*single_widen_fnms<mode>): Ditto.
16676 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16678         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
16679         into "*" in pattern name which simplifies build files.
16680         (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
16681         (*pred_single_widen_mul<mode>): New pattern.
16683 2023-07-03  Richard Sandiford  <richard.sandiford@arm.com>
16685         * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
16686         the index to be 0 or 1.
16688 2023-07-03  Lehua Ding  <lehua.ding@rivai.ai>
16690         Revert:
16691         2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16693         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
16694         (*single_widen_fnma<mode>): Ditto.
16695         (*double_widen_fms<mode>): Ditto.
16696         (*single_widen_fms<mode>): Ditto.
16697         (*double_widen_fnms<mode>): Ditto.
16698         (*single_widen_fnms<mode>): Ditto.
16700 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16702         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
16703         (*single_widen_fnma<mode>): Ditto.
16704         (*double_widen_fms<mode>): Ditto.
16705         (*single_widen_fms<mode>): Ditto.
16706         (*double_widen_fnms<mode>): Ditto.
16707         (*single_widen_fnms<mode>): Ditto.
16709 2023-07-03  Pan Li  <pan2.li@intel.com>
16711         * config/riscv/vector.md: Fix typo.
16713 2023-07-03  Richard Biener  <rguenther@suse.de>
16715         PR tree-optimization/110506
16716         * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
16717         TYPE_PRECISION access with INTEGRAL_TYPE_P check.
16719 2023-07-03  Richard Biener  <rguenther@suse.de>
16721         PR tree-optimization/110506
16722         * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
16723         type before relying on TYPE_PRECISION to produce a nonzero mask.
16725 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16727         * config/mips/mips.md(*and<mode>3_mips16): Generates
16728         ZEB/ZEH instructions.
16730 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16732         * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
16733         address register to M16_REGS for MIPS16.
16734         (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
16735         (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
16736         (AVAIL_NON_MIPS16 (cache..)): Update to
16737         AVAIL_MIPS16E2_OR_NON_MIPS16.
16738         * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
16739         * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
16741 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16743         * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
16744         for ISA_HAS_MIPS16E2.
16745         (ISA_HAS_SYNC): Same as above.
16746         (ISA_HAS_LL_SC): Same as above.
16748 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16750         * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
16751         Add logics for generating instruction.
16752         * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
16753         * config/mips/mips.md(mov_<load>l): Generates instructions.
16754         (mov_<load>r): Same as above.
16755         (mov_<store>l): Adjusted for the conditions above.
16756         (mov_<store>r): Same as above.
16757         (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
16758         (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
16760 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16762         * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
16763         (mips_const_insns): Same as above.
16764         (mips_output_move): Same as above.
16765         (mips_output_function_prologue): Same as above.
16766         * config/mips/mips.md: Same as above
16768 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16770         * config/mips/constraints.md(Yz): New constraints for mips16e2.
16771         * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
16772         (mips_bit_clear_info): Same as above.
16773         * config/mips/mips.cc(mips_bit_clear_info): New function for
16774         generating instructions.
16775         (mips_bit_clear_p): Same as above.
16776         * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
16777         * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
16778         (*and<mode>3): Generates INS instruction.
16779         (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
16780         (ior<mode>3): Add logics for ORI instruction.
16781         (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
16782         (*ior<mode>3_mips16): Add logics for XORI instruction.
16783         (*xor<mode>3_mips16): Generates XORI instrucion.
16784         (*extzv<mode>): Add logics for EXT instruction.
16785         (*insv<mode>): Add logics for INS instruction.
16786         * config/mips/predicates.md(bit_clear_operand): New predicate for
16787         generating bitwise instructions.
16788         (and_reg_operand): Add logics for generating bitwise instructions.
16790 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16792         * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
16793         that uses global pointer register.
16794         (mips16_unextended_reference_p): Same as above.
16795         (mips_pic_base_register): Same as above.
16796         (mips_init_relocs): Same as above.
16797         * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
16798         (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
16799         * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
16800         (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
16802 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16804         * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
16805         * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
16806         (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
16807         (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
16808         (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
16809         * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
16811 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
16813         * config/mips/mips.cc(mips_file_start): Add mips16e2 info
16814         for output file.
16815         * config/mips/mips.h(__mips_mips16e2): Defined a new
16816         predefine macro.
16817         (ISA_HAS_MIPS16E2): Defined a new macro.
16818         (ASM_SPEC): Pass mmips16e2 to the assembler.
16819         * config/mips/mips.opt: Add -m(no-)mips16e2 option.
16820         * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
16821         * doc/invoke.texi: Add -m(no-)mips16e2 option..
16823 2023-07-02  Jakub Jelinek  <jakub@redhat.com>
16825         PR tree-optimization/110508
16826         * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
16827         REALPART_EXPR opf nlhs if re2 is non-NULL.
16829 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
16831         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
16832         Simplify.
16833         * config/xtensa/xtensa.md (*xtensa_clamps):
16834         Add TARGET_MINMAX to the condition.
16836 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
16838         * config/xtensa/xtensa.md (*eqne_INT_MIN):
16839         Add missing ":SI" to the match_operator.
16841 2023-07-02  Iain Sandoe  <iain@sandoe.co.uk>
16843         PR target/108743
16844         * config/darwin.opt: Add fconstant-cfstrings alias to
16845         mconstant-cfstrings.
16846         * doc/invoke.texi: Amend invocation descriptions to reflect
16847         that the fconstant-cfstrings is a target-option alias and to
16848         add the missing mconstant-cfstrings option description to the
16849         Darwin section.
16851 2023-07-01  Jan Hubicka  <jh@suse.cz>
16853         * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
16854         parmaeter; update profile.
16855         * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
16856         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
16857         (static_loop_exit): ... this; return the edge to be elliminated.
16858         (ch_base::copy_headers): Handle profile updating for eliminated exits.
16860 2023-07-01  Roger Sayle  <roger@nextmovesoftware.com>
16862         * config/i386/i386-features.cc (compute_convert_gain): Provide
16863         gains/costs for ROTATE and ROTATERT (by an integer constant).
16864         (general_scalar_chain::convert_rotate): New helper function to
16865         convert a DImode or SImode rotation by an integer constant into
16866         SSE vector form.
16867         (general_scalar_chain::convert_insn): Call the new convert_rotate
16868         for ROTATE and ROTATERT.
16869         (general_scalar_to_vector_candidate_p): Consider ROTATE and
16870         ROTATERT to be candidates if the second operand is an integer
16871         constant, valid for a rotation (or shift) in the given mode.
16872         * config/i386/i386-features.h (general_scalar_chain): Add new
16873         helper method convert_rotate.
16875 2023-07-01  Jan Hubicka  <jh@suse.cz>
16877         PR tree-optimization/103680
16878         * cfg.cc (update_bb_profile_for_threading): Fix profile update;
16879         make message clearer.
16881 2023-06-30  Qing Zhao  <qing.zhao@oracle.com>
16883         PR tree-optimization/101832
16884         * tree-object-size.cc (addr_object_size): Handle structure/union type
16885         when it has flexible size.
16887 2023-06-30  Eric Botcazou  <ebotcazou@adacore.com>
16889         * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
16890         (fold_nonarray_ctor_reference): Likewise.  Specifically deal
16891         with integral bit-fields.
16892         (fold_ctor_reference): Make sure that the constructor uses the
16893         native storage order.
16895 2023-06-30  Jan Hubicka  <jh@suse.cz>
16897         PR middle-end/109849
16898         * predict.cc (estimate_bb_frequencies): Turn to static function.
16899         (expr_expected_value_1): Fix handling of binary expressions with
16900         predicted values.
16901         * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
16902         (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
16903         queue.
16904         * predict.h (estimate_bb_frequencies): No longer declare it.
16906 2023-06-30  Uros Bizjak  <ubizjak@gmail.com>
16908         * fold-const.h (multiple_of_p): Change return type from int to bool.
16909         * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
16910         neg_conp_p and neg_var_p variables to bool.
16911         (const_binop): Change sat_p variable to bool.
16912         (merge_ranges): Change no_overlap variable to bool.
16913         (extract_muldiv_1): Change same_p variable to bool.
16914         (tree_swap_operands_p): Update function body for bool return type.
16915         (fold_truth_andor): Change commutative variable to bool.
16916         (multiple_of_p): Change return type
16917         from int to void and adjust function body accordingly.
16918         * optabs.h (expand_twoval_unop): Change return type from int to bool.
16919         (expand_twoval_binop): Ditto.
16920         (can_compare_p): Ditto.
16921         (have_add2_insn): Ditto.
16922         (have_addptr3_insn): Ditto.
16923         (have_sub2_insn): Ditto.
16924         (have_insn_for): Ditto.
16925         * optabs.cc (add_equal_note): Ditto.
16926         (widen_operand): Change no_extend argument from int to bool.
16927         (expand_binop): Ditto.
16928         (expand_twoval_unop): Change return type
16929         from int to void and adjust function body accordingly.
16930         (expand_twoval_binop): Ditto.
16931         (can_compare_p): Ditto.
16932         (have_add2_insn): Ditto.
16933         (have_addptr3_insn): Ditto.
16934         (have_sub2_insn): Ditto.
16935         (have_insn_for): Ditto.
16937 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
16939         * config/aarch64/aarch64-simd.md
16940         (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
16941         Expansions for abd vec widen optabs.
16942         (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
16943         * config/aarch64/iterators.md (USMAX_EXT): Code attributes
16944         that give the appropriate extend RTL for the max RTL.
16946 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
16948         * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
16949         * optabs.def (vec_widen_sabd_optab,
16950         vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
16951         vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
16952         vec_widen_uabd_optab,
16953         vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
16954         vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
16955         New optabs.
16956         * doc/md.texi: Document them.
16957         * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
16958         to build a VEC_WIDEN_ABD call if the input precision is smaller
16959         than the precision of the output.
16960         (vect_recog_widen_abd_pattern): Should an ABD expression be
16961         found preceeding an extension, replace the two with a
16962         VEC_WIDEN_ABD.
16964 2023-06-30  Pan Li  <pan2.li@intel.com>
16966         * config/riscv/vector.md: Refactor the common condition.
16968 2023-06-30  Richard Biener  <rguenther@suse.de>
16970         PR tree-optimization/110496
16971         * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
16972         verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
16974 2023-06-30  Richard Biener  <rguenther@suse.de>
16976         PR middle-end/110489
16977         * statistics.cc (curr_statistics_hash): Add argument
16978         indicating whether we should allocate the hash.
16979         (statistics_fini_pass): If the hash isn't allocated
16980         only print the summary header.
16982 2023-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
16983             Thomas Schwinge  <thomas@codesourcery.com>
16985         * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
16987 2023-06-30  Jovan Dmitrović  <jovan.dmitrovic@syrmia.com>
16989         PR target/109435
16990         * config/mips/mips.cc (mips_function_arg_alignment): Returns
16991         the alignment of function argument. In case of typedef type,
16992         it returns the aligment of the aliased type.
16993         (mips_function_arg_boundary): Relocated calculation of the
16994         aligment of function arguments.
16996 2023-06-29  Jan Hubicka  <jh@suse.cz>
16998         PR tree-optimization/109849
16999         * ipa-fnsummary.cc (decompose_param_expr): Skip
17000         functions returning its parameter.
17001         (set_cond_stmt_execution_predicate): Return early
17002         if predicate was constructed.
17004 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
17006         PR c/77650
17007         * doc/extend.texi: Document GCC extension on a structure containing
17008         a flexible array member to be a member of another structure.
17010 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
17012         * print-tree.cc (print_node): Print new bit type_include_flexarray.
17013         * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
17014         as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
17015         * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
17016         in bit no_named_args_stdarg_p properly for its corresponding type.
17017         * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
17018         out bit no_named_args_stdarg_p properly for its corresponding type.
17019         * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
17021 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
17023         * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
17024         * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
17025         * tree-vrp.h (maybe_set_nonzero_bits): Remove.
17027 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
17029         * value-range.cc (frange::set): Do not call verify_range.
17030         (frange::normalize_kind): Verify range.
17031         (frange::union_nans): Do not call verify_range.
17032         (frange::union_): Same.
17033         (frange::intersect): Same.
17034         (irange::irange_single_pair_union): Call normalize_kind if
17035         necessary.
17036         (irange::union_): Same.
17037         (irange::intersect): Same.
17038         (irange::set_range_from_nonzero_bits): Verify range.
17039         (irange::set_nonzero_bits): Call normalize_kind if necessary.
17040         (irange::get_nonzero_bits): Tweak comment.
17041         (irange::intersect_nonzero_bits): Call normalize_kind if
17042         necessary.
17043         (irange::union_nonzero_bits): Same.
17044         * value-range.h (irange::normalize_kind): Verify range.
17046 2023-06-29  Uros Bizjak  <ubizjak@gmail.com>
17048         * cselib.h (rtx_equal_for_cselib_1):
17049         Change return type from int to bool.
17050         (references_value_p): Ditto.
17051         (rtx_equal_for_cselib_p): Ditto.
17052         * expr.h (can_store_by_pieces): Ditto.
17053         (try_casesi): Ditto.
17054         (try_tablejump): Ditto.
17055         (safe_from_p): Ditto.
17056         * sbitmap.h (bitmap_equal_p): Ditto.
17057         * cselib.cc (references_value_p): Change return type
17058         from int to void and adjust function body accordingly.
17059         (rtx_equal_for_cselib_1): Ditto.
17060         * expr.cc (is_aligning_offset): Ditto.
17061         (can_store_by_pieces): Ditto.
17062         (mostly_zeros_p): Ditto.
17063         (all_zeros_p): Ditto.
17064         (safe_from_p): Ditto.
17065         (is_aligning_offset): Ditto.
17066         (try_casesi): Ditto.
17067         (try_tablejump): Ditto.
17068         (store_constructor): Change "need_to_clear" and
17069         "const_bounds_p" variables to bool.
17070         * sbitmap.cc (bitmap_equal_p):  Change return type from int to bool.
17072 2023-06-29  Robin Dapp  <rdapp@ventanamicro.com>
17074         * tree-ssa-math-opts.cc (divmod_candidate_p): Use
17075         element_precision.
17077 2023-06-29  Richard Biener  <rguenther@suse.de>
17079         PR tree-optimization/110460
17080         * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
17081         Only allow integral, pointer and scalar float type scalar_type.
17083 2023-06-29  Lili Cui  <lili.cui@intel.com>
17085         PR tree-optimization/110148
17086         * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
17087         ops in this function.
17089 2023-06-29  Richard Biener  <rguenther@suse.de>
17091         PR middle-end/110452
17092         * expr.cc (store_constructor): Handle uniform boolean
17093         vectors with integer mode specially.
17095 2023-06-29  Richard Biener  <rguenther@suse.de>
17097         PR middle-end/110461
17098         * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
17099         for VECTOR_TYPE_P.
17101 2023-06-29  Richard Sandiford  <richard.sandiford@arm.com>
17103         * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
17104         (array_slice): Relax va_gc constructor to handle all vectors
17105         with a vl_embed layout.
17107 2023-06-29  Pan Li  <pan2.li@intel.com>
17109         * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
17110         (riscv_mode_needed): Likewise.
17111         (riscv_entity_mode_after): Likewise.
17112         (riscv_mode_after): Likewise.
17113         (riscv_mode_entry): Likewise.
17114         (riscv_mode_exit): Likewise.
17115         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
17116         for FRM.
17117         * config/riscv/riscv.md: Add FRM register.
17118         * config/riscv/vector-iterators.md: Add FRM type.
17119         * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
17120         (fsrm): Define new insn for fsrm instruction.
17122 2023-06-29  Pan Li  <pan2.li@intel.com>
17124         * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
17125         Add macro for static frm min and max.
17126         * config/riscv/riscv-vector-builtins-bases.cc
17127         (class binop_frm): New class for floating-point with frm.
17128         (BASE): Add vfadd for frm.
17129         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
17130         * config/riscv/riscv-vector-builtins-functions.def
17131         (vfadd_frm): Likewise.
17132         * config/riscv/riscv-vector-builtins-shapes.cc
17133         (struct alu_frm_def): New struct for alu with frm.
17134         (SHAPE): Add alu with frm.
17135         * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
17136         * config/riscv/riscv-vector-builtins.cc
17137         (function_checker::report_out_of_range_and_not): New function
17138         for report out of range and not val.
17139         (function_checker::require_immediate_range_or): New function
17140         for checking in range or one val.
17141         * config/riscv/riscv-vector-builtins.h: Add function decl.
17143 2023-06-29  Cui, Lili  <lili.cui@intel.com>
17145         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
17146         from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
17148 2023-06-28  Hans-Peter Nilsson  <hp@axis.com>
17150         PR target/110144
17151         * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
17152         to insn before validating it.
17154 2023-06-28  Jan Hubicka  <jh@suse.cz>
17156         PR middle-end/110334
17157         * ipa-fnsummary.h (ipa_fn_summary): Add
17158         safe_to_inline_to_always_inline.
17159         * ipa-inline.cc (can_early_inline_edge_p): ICE
17160         if SSA is not built; do cycle checking for
17161         always_inline functions.
17162         (inline_always_inline_functions): Be recrusive;
17163         watch for cycles; do not updat overall summary.
17164         (early_inliner): Do not give up on always_inlines.
17165         * ipa-utils.cc (ipa_reverse_postorder): Do not skip
17166         always inlines.
17168 2023-06-28  Uros Bizjak  <ubizjak@gmail.com>
17170         * output.h (leaf_function_p): Change return type from int to bool.
17171         (final_forward_branch_p): Ditto.
17172         (only_leaf_regs_used): Ditto.
17173         (maybe_assemble_visibility): Ditto.
17174         * varasm.h (supports_one_only): Ditto.
17175         * rtl.h (compute_alignments): Change return type from int to void.
17176         * final.cc (app_on): Change return type from int to bool.
17177         (compute_alignments): Change return type from int to void
17178         and adjust function body accordingly.
17179         (shorten_branches):  Change "something_changed" variable
17180         type from int to bool.
17181         (leaf_function_p):  Change return type from int to bool
17182         and adjust function body accordingly.
17183         (final_forward_branch_p): Ditto.
17184         (only_leaf_regs_used): Ditto.
17185         * varasm.cc (contains_pointers_p): Change return type from
17186         int to bool and adjust function body accordingly.
17187         (compare_constant): Ditto.
17188         (maybe_assemble_visibility): Ditto.
17189         (supports_one_only): Ditto.
17191 2023-06-28  Manolis Tsamis  <manolis.tsamis@vrull.eu>
17193         PR debug/110308
17194         * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
17195         (maybe_copy_reg_attrs): New function.
17196         (find_oldest_value_reg): Use maybe_copy_reg_attrs.
17197         (copyprop_hardreg_forward_1): Ditto.
17199 2023-06-28  Richard Biener  <rguenther@suse.de>
17201         PR tree-optimization/110434
17202         * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
17203         VAR we replace with <retval>.
17205 2023-06-28  Richard Biener  <rguenther@suse.de>
17207         PR tree-optimization/110451
17208         * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
17209         tcc_comparison are expensive.
17211 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
17213         * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
17214         for TImode comparisons on 32-bit architectures.
17215         * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
17216         SWIM1248x to exclude/avoid TImode being conditional on -m64.
17217         (cbranchti4): New define_expand for TImode on both TARGET_64BIT
17218         and/or with TARGET_SSE4_1.
17219         * config/i386/predicates.md (ix86_timode_comparison_operator):
17220         New predicate that depends upon TARGET_64BIT.
17221         (ix86_timode_comparison_operand): Likewise.
17223 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
17225         PR target/78794
17226         * config/i386/i386-features.cc (compute_convert_gain): Provide
17227         more accurate gains for conversion of scalar comparisons to
17228         PTEST.
17230 2023-06-28  Richard Biener  <rguenther@suse.de>
17232         PR tree-optimization/110443
17233         * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
17234         gather loads.
17236 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
17238         * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
17239         (peephole2 for move_and_compare): New.
17240         (mode_iterator WORD): New.  Set the mode to SI/DImode by
17241         TARGET_POWERPC64.
17242         (*mov<mode>_internal2): Change the mode iterator from P to WORD.
17243         (split pattern for compare_and_move): Likewise.
17245 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17247         * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
17248         (*single_widen_fma<mode>): Ditto.
17250 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
17252         PR target/104124
17253         * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
17254         to...
17255         (altivec_vupkhs<VU_char>_direct): ...this.
17256         * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
17257         predicate to test if a constant can be loaded with vspltisw and
17258         vupkhsw.
17259         (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
17260         a vector constant can be synthesized with a vspltisw and a vupkhsw.
17261         * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
17262         Declare.
17263         * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
17264         function to return true if OP mode is V2DI and can be synthesized
17265         with vupkhsw and vspltisw.
17266         * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
17267         constants with vspltisw and vupkhsw.
17269 2023-06-28  Jan Hubicka  <jh@suse.cz>
17271         PR tree-optimization/110377
17272         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
17273         the ranger query.
17274         (ipa_analyze_node): Enable ranger.
17276 2023-06-28  Richard Biener  <rguenther@suse.de>
17278         * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
17279         (TYPE_PRECISION_RAW): Provide raw access to the precision
17280         field.
17281         * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
17282         (gimple_canonical_types_compatible_p): Likewise.
17283         * tree-streamer-out.cc (pack_ts_type_common_value_fields):
17284         Stream TYPE_PRECISION_RAW.
17285         * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
17286         Likewise.
17287         * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
17289 2023-06-28  Alexandre Oliva  <oliva@adacore.com>
17291         * doc/extend.texi (zero-call-used-regs): Document leafy and
17292         variants thereof.
17293         * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
17294         LEAFY and variants.
17295         * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
17296         functions in leafy mode.
17297         * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
17299 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17301         * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
17302         * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
17303         Remove.
17304         (@pred_single_widen_add<mode>): New pattern.
17305         (@pred_single_widen_sub<mode>): New pattern.
17307 2023-06-28  liuhongt  <hongtao.liu@intel.com>
17309         * config/i386/i386.cc (ix86_invalid_conversion): New function.
17310         (TARGET_INVALID_CONVERSION): Define as
17311         ix86_invalid_conversion.
17313 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
17315         * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
17316         expander.
17317         (<float_cvt><vnconvert><mode>2): Ditto.
17318         (<optab><mode><vnconvert>2): Ditto.
17319         (<float_cvt><mode><vnconvert>2): Ditto.
17320         * config/riscv/vector-iterators.md: Add vnconvert.
17322 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
17324         * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
17325         expander.
17326         (extend<v_quad_trunc><mode>2): Ditto.
17327         (trunc<mode><v_double_trunc>2): Ditto.
17328         (trunc<mode><v_quad_trunc>2): Ditto.
17329         * config/riscv/vector-iterators.md: Add VQEXTF and HF to
17330         V_QUAD_TRUNC and v_quad_trunc.
17332 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
17334         * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
17335         expander.
17337 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
17339         * config/riscv/autovec.md (copysign<mode>3): Add expander.
17340         (xorsign<mode>3): Ditto.
17341         * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
17342         New class.
17343         * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
17344         (xorsign): Ditto.
17345         (n): Ditto.
17346         (x): Ditto.
17347         * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
17348         (@pred_ncopysign<mode>_scalar): Ditto.
17350 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
17352         * config/riscv/autovec.md: VF_AUTO -> VF.
17353         * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
17354         VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
17355         VHF_LMUL1.
17356         * config/riscv/vector.md: Use new iterators.
17358 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
17360         * match.pd: Use element_mode and check if target supports
17361         operation with new type.
17363 2023-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
17365         * config/aarch64/aarch64-sve-builtins-base.cc
17366         (svdupq_impl::fold_nonconst_dupq): New method.
17367         (svdupq_impl::fold): Call fold_nonconst_dupq.
17369 2023-06-27  Andrew Pinski  <apinski@marvell.com>
17371         PR middle-end/110420
17372         PR middle-end/103979
17373         PR middle-end/98619
17374         * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
17376 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
17378         * ipa-cp.cc (decide_whether_version_node): Adjust comment.
17379         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
17380         for Value_Range.
17381         (set_switch_stmt_execution_predicate): Same.
17382         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
17384 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
17386         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
17387         ipa_vr instead of value_range.
17388         (gt_pch_nx): Same.
17389         (gt_ggc_mx): Same.
17390         (ipa_get_value_range): Same.
17391         * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
17392         ipa_vr.
17393         (gt_ggc_mx): Same.
17395 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
17397         * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
17398         * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
17399         (ipa_set_jfunc_vr): Take a range.
17400         (ipa_compute_jump_functions_for_edge): Pass range to
17401         ipa_set_jfunc_vr.
17402         (ipa_write_jump_function): Call streamer write helper.
17403         (ipa_read_jump_function): Call streamer read helper.
17404         * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
17406 2023-06-27  Richard Sandiford  <richard.sandiford@arm.com>
17408         * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
17409         as a probable initializer rather than a probable complete statement.
17411 2023-06-27  Richard Biener  <rguenther@suse.de>
17413         PR tree-optimization/96208
17414         * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
17415         a non-grouped load if it is the same for all lanes.
17416         (vect_build_slp_tree_2): Handle not grouped loads.
17417         (vect_optimize_slp_pass::remove_redundant_permutations):
17418         Likewise.
17419         (vect_transform_slp_perm_load_1): Likewise.
17420         * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
17421         (get_group_load_store_type): Likewise.  Handle
17422         invariant accesses.
17423         (vectorizable_load): Likewise.
17425 2023-06-27  liuhongt  <hongtao.liu@intel.com>
17427         PR rtl-optimization/110237
17428         * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
17429         UNSPEC_MASKMOV.
17430         (maskstore<mode><avx512fmaskmodelower): Ditto.
17431         (*<avx512>_store<mode>_mask): New define_insn, it's renamed
17432         from original <avx512>_store<mode>_mask.
17434 2023-06-27  liuhongt  <hongtao.liu@intel.com>
17436         * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
17437         Move flag_expensive_optimizations && !optimize_size to ..
17438         * config/i386/i386-options.cc (ix86_option_override_internal):
17439         .. this, it makes -mvzeroupper independent of optimization
17440         level, but still keeps the behavior of architecture
17441         tuning(emit_vzeroupper) unchanged.
17443 2023-06-27  liuhongt  <hongtao.liu@intel.com>
17445         PR target/82735
17446         * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
17447         vzeroupper for vzeroupper call_insn.
17449 2023-06-27  Andrew Pinski  <apinski@marvell.com>
17451         * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
17452         defbuiltin usage.
17454 2023-06-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17456         * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
17457         with base != 0.
17459 2023-06-26  Andrew Pinski  <apinski@marvell.com>
17461         * doc/extend.texi (access attribute): Add
17462         cindex for it.
17463         (interrupt/interrupt_handler attribute):
17464         Likewise.
17466 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17468         * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
17469         Use <DWI> instead of <V2XWIDE>.
17470         (aarch64_sqrshrun_n<mode>): Likewise.
17472 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17474         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
17475         Rename to...
17476         (aarch64_rnd_imm_p): ... This.
17477         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
17478         Rename to...
17479         (aarch64_int_rnd_operand): ... This.
17480         (aarch64_simd_rshrn_imm_vec): Delete.
17481         * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
17482         Adjust for the above.
17483         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
17484         (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
17485         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
17486         (aarch64_sqrshrun_n<mode>_insn): Likewise.
17487         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
17488         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
17489         (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
17490         (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
17491         * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
17492         Rename to...
17493         (aarch64_rnd_imm_p): ... This.
17495 2023-06-26  Andreas Krebbel  <krebbel@linux.ibm.com>
17497         * config/s390/s390.cc (s390_encode_section_info): Set
17498         SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
17499         misaligned.
17501 2023-06-26  Jan Hubicka  <jh@suse.cz>
17503         PR tree-optimization/109849
17504         * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
17505         count of newly constructed forwarder block.
17507 2023-06-26  Andrew Carlotti  <andrew.carlotti@arm.com>
17509         * doc/optinfo.texi: Fix "steam" -> "stream".
17511 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17513         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
17514         fix LEN_STORE.
17515         (dse_optimize_stmt): Add LEN_MASK_STORE.
17517 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17519         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
17520         fold of LOAD/STORE with length.
17522 2023-06-26  Andrew MacLeod  <amacleod@redhat.com>
17524         * gimple-range-gori.cc (compute_operand1_and_operand2_range):
17525         Check for interdependence between operands 1 and 2.
17527 2023-06-26  Richard Sandiford  <richard.sandiford@arm.com>
17529         * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
17530         into account when costing non-widening/truncating conversions.
17532 2023-06-26  Richard Biener  <rguenther@suse.de>
17534         PR tree-optimization/110381
17535         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
17536         Materialize permutes before fold-left reductions.
17538 2023-06-26  Pan Li  <pan2.li@intel.com>
17540         * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
17542 2023-06-26  Richard Biener  <rguenther@suse.de>
17544         * varasm.cc (initializer_constant_valid_p_1): Also
17545         constrain the type of value to be scalar integral
17546         before dispatching to narrowing_initializer_constant_valid_p.
17548 2023-06-26  Richard Biener  <rguenther@suse.de>
17550         * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
17551         Use element_precision.
17553 2023-06-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17555         * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
17556         vcond patterns.
17557         (vcondu<V:mode><VI:mode>): Ditto.
17558         * config/riscv/riscv-protos.h (expand_vcond): Ditto.
17559         * config/riscv/riscv-v.cc (expand_vcond): Ditto.
17561 2023-06-26  Richard Biener  <rguenther@suse.de>
17563         PR tree-optimization/110392
17564         * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
17565         Do early exits on true/false predicate only after normalization.
17567 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17569         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
17570         "length".
17572 2023-06-26  Roger Sayle  <roger@nextmovesoftware.com>
17574         * config/i386/i386.md (peephole2): Simplify zeroing a register
17575         followed by an IOR, XOR or PLUS operation on it, into a move.
17576         (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
17577         eliminate (and hide from reload) unnecessary word to doubleword
17578         extensions that are followed by left shifts by sufficiently large,
17579         but valid, bit counts.
17581 2023-06-26  liuhongt  <hongtao.liu@intel.com>
17583         PR tree-optimization/110371
17584         PR tree-optimization/110018
17585         * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
17586         save intermediate type operand instead of "subtle" vec_dest
17587         for case NONE.
17589 2023-06-26  liuhongt  <hongtao.liu@intel.com>
17591         PR tree-optimization/110371
17592         PR tree-optimization/110018
17593         * tree-vect-stmts.cc (vectorizable_conversion): Don't use
17594         intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
17596 2023-06-26  Hongyu Wang  <hongyu.wang@intel.com>
17598         * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
17599         Override tune_string with arch_string if tune_string is not
17600         explicitly specified.
17602 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17604         * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
17605         AVL propagation.
17606         * config/riscv/riscv-vsetvl.h: New function.
17608 2023-06-25  Li Xu  <xuli1@eswincomputing.com>
17610         * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
17611         emit_move_insn
17613 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17615         * config/riscv/autovec.md (len_load_<mode>): Remove.
17616         (len_maskload<mode><vm>): Remove.
17617         (len_store_<mode>): New pattern.
17618         (len_maskstore<mode><vm>): New pattern.
17619         * config/riscv/predicates.md (autovec_length_operand): New predicate.
17620         * config/riscv/riscv-protos.h (enum insn_type): New enum.
17621         (expand_load_store): New function.
17622         * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
17623         (emit_nonvlmax_masked_insn): Ditto.
17624         (expand_load_store): Ditto.
17625         * config/riscv/riscv-vector-builtins.cc
17626         (function_expander::use_contiguous_store_insn): Add avl_type operand
17627         into pred_store.
17628         * config/riscv/vector.md: Ditto.
17630 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17632         * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
17633         argument index.
17635 2023-06-25  Pan Li  <pan2.li@intel.com>
17637         * config/riscv/vector.md: Revert.
17639 2023-06-25  Pan Li  <pan2.li@intel.com>
17641         * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
17642         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
17643         (ADJUST_ALIGNMENT): Ditto.
17644         (RVV_TUPLE_PARTIAL_MODES): Ditto.
17645         (ADJUST_NUNITS): Ditto.
17646         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
17647         (vfloat16mf4x3_t): Ditto.
17648         (vfloat16mf4x4_t): Ditto.
17649         (vfloat16mf4x5_t): Ditto.
17650         (vfloat16mf4x6_t): Ditto.
17651         (vfloat16mf4x7_t): Ditto.
17652         (vfloat16mf4x8_t): Ditto.
17653         (vfloat16mf2x2_t): Ditto.
17654         (vfloat16mf2x3_t): Ditto.
17655         (vfloat16mf2x4_t): Ditto.
17656         (vfloat16mf2x5_t): Ditto.
17657         (vfloat16mf2x6_t): Ditto.
17658         (vfloat16mf2x7_t): Ditto.
17659         (vfloat16mf2x8_t): Ditto.
17660         (vfloat16m1x2_t): Ditto.
17661         (vfloat16m1x3_t): Ditto.
17662         (vfloat16m1x4_t): Ditto.
17663         (vfloat16m1x5_t): Ditto.
17664         (vfloat16m1x6_t): Ditto.
17665         (vfloat16m1x7_t): Ditto.
17666         (vfloat16m1x8_t): Ditto.
17667         (vfloat16m2x2_t): Ditto.
17668         (vfloat16m2x3_t): Diito.
17669         (vfloat16m2x4_t): Diito.
17670         (vfloat16m4x2_t): Diito.
17671         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
17672         (vfloat16mf4x3_t): Ditto.
17673         (vfloat16mf4x4_t): Ditto.
17674         (vfloat16mf4x5_t): Ditto.
17675         (vfloat16mf4x6_t): Ditto.
17676         (vfloat16mf4x7_t): Ditto.
17677         (vfloat16mf4x8_t): Ditto.
17678         (vfloat16mf2x2_t): Ditto.
17679         (vfloat16mf2x3_t): Ditto.
17680         (vfloat16mf2x4_t): Ditto.
17681         (vfloat16mf2x5_t): Ditto.
17682         (vfloat16mf2x6_t): Ditto.
17683         (vfloat16mf2x7_t): Ditto.
17684         (vfloat16mf2x8_t): Ditto.
17685         (vfloat16m1x2_t): Ditto.
17686         (vfloat16m1x3_t): Ditto.
17687         (vfloat16m1x4_t): Ditto.
17688         (vfloat16m1x5_t): Ditto.
17689         (vfloat16m1x6_t): Ditto.
17690         (vfloat16m1x7_t): Ditto.
17691         (vfloat16m1x8_t): Ditto.
17692         (vfloat16m2x2_t): Ditto.
17693         (vfloat16m2x3_t): Ditto.
17694         (vfloat16m2x4_t): Ditto.
17695         (vfloat16m4x2_t): Ditto.
17696         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
17697         * config/riscv/riscv.md: Ditto.
17698         * config/riscv/vector-iterators.md: Ditto.
17700 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17702         * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
17703         (gimple_fold_partial_load_store_mem_ref): Ditto.
17704         (gimple_fold_partial_store): Ditto.
17705         (gimple_fold_call): Ditto.
17707 2023-06-25  liuhongt  <hongtao.liu@intel.com>
17709         PR target/110309
17710         * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
17711         Refine pattern with UNSPEC_MASKLOAD.
17712         (maskload<mode><avx512fmaskmodelower>): Ditto.
17713         (*<avx512>_load<mode>_mask): Extend mode iterator to
17714         VI12HFBF_AVX512VL.
17715         (*<avx512>_load<mode>): Ditto.
17717 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17719         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
17721 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17723         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
17724         LEN_MASK_{LOAD,STORE}
17726 2023-06-25  yulong  <shiyulong@iscas.ac.cn>
17728         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
17730 2023-06-24  Roger Sayle  <roger@nextmovesoftware.com>
17732         * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
17734 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17736         * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
17737         (*fma<VI:mode><P:mode>): Ditto.
17738         (*fnma<mode>): Ditto.
17739         (*fnma<VI:mode><P:mode>): Ditto.
17741 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17743         * config/riscv/autovec.md (fma<mode>4): New pattern.
17744         (*fma<mode>): Ditto.
17745         (fnma<mode>4): Ditto.
17746         (*fnma<mode>): Ditto.
17747         (fms<mode>4): Ditto.
17748         (*fms<mode>): Ditto.
17749         (fnms<mode>4): Ditto.
17750         (*fnms<mode>): Ditto.
17751         * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
17752         New function.
17753         * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
17754         * config/riscv/vector.md: Fix attribute bug.
17756 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17758         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
17759         Apply LEN_MASK_{LOAD,STORE}.
17761 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17763         * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
17764         Add LEN_MASK_{LOAD,STORE}.
17766 2023-06-24  David Malcolm  <dmalcolm@redhat.com>
17768         * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
17769         * diagnostic.cc: Likewise.
17770         * text-art/box-drawing.cc: Likewise.
17771         * text-art/canvas.cc: Likewise.
17772         * text-art/ruler.cc: Likewise.
17773         * text-art/selftests.cc: Likewise.
17774         * text-art/selftests.h (text_art::canvas): New forward decl.
17775         * text-art/style.cc: Add #define INCLUDE_VECTOR.
17776         * text-art/styled-string.cc: Likewise.
17777         * text-art/table.cc: Likewise.
17778         * text-art/table.h: Remove #include <vector>.
17779         * text-art/theme.cc: Add #define INCLUDE_VECTOR.
17780         * text-art/types.h: Check that INCLUDE_VECTOR is defined.
17781         Remove #include of <vector> and <string>.
17782         * text-art/widget.cc: Add #define INCLUDE_VECTOR.
17783         * text-art/widget.h: Remove #include <vector>.
17785 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17787         * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
17788         (internal_load_fn_p): Add LEN_MASK_LOAD.
17789         (internal_store_fn_p): Add LEN_MASK_STORE.
17790         (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
17791         (internal_fn_stored_value_index): Add LEN_MASK_STORE.
17792         (internal_len_load_store_bias):  Add LEN_MASK_{LOAD,STORE}.
17793         * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
17794         (get_len_load_store_mode): Ditto.
17795         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
17796         (get_len_load_store_mode): Ditto.
17797         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
17798         (get_all_ones_mask): New function.
17799         (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
17800         (vectorizable_load): Ditto.
17802 2023-06-23  Marek Polacek  <polacek@redhat.com>
17804         * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
17805         -std=gnu++26.  Document that for C++23, its value is 202302L.
17806         * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
17807         * dwarf2out.cc (highest_c_language): Handle GNU C++26.
17808         (gen_compile_unit_die): Likewise.
17810 2023-06-23  Jan Hubicka  <jh@suse.cz>
17812         * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
17813         demand.
17814         (pass_phiprop::execute): Do not compute it here; return
17815         update_ssa_only_virtuals if something changed.
17816         (pass_data_phiprop): Remove TODO_update_ssa from todos.
17818 2023-06-23   Michael Meissner  <meissner@linux.ibm.com>
17819             Aaron Sawdey   <acsawdey@linux.ibm.com>
17821         PR target/105325
17822         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
17823         allowed prefixed lwa to be generated.
17824         * config/rs6000/fusion.md: Regenerate.
17825         * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
17826         * config/rs6000/rs6000.md (prefixed attribute): Add support for load
17827         plus compare immediate fused insns.
17828         (maybe_prefixed): Likewise.
17830 2023-06-23  Roger Sayle  <roger@nextmovesoftware.com>
17832         * simplify-rtx.cc (simplify_subreg):  Optimize lowpart SUBREGs
17833         of ASHIFT to const0_rtx with sufficiently large shift count.
17834         Optimize highpart SUBREGs of ASHIFT as the shift operand when
17835         the shift count is the correct offset.  Optimize SUBREGs of
17836         multi-word logic operations if the SUBREGs of both operands
17837         can be simplified.
17839 2023-06-23  Richard Biener  <rguenther@suse.de>
17841         * varasm.cc (initializer_constant_valid_p_1): Only
17842         allow conversions between scalar floating point types.
17844 2023-06-23  Richard Biener  <rguenther@suse.de>
17846         * tree-vect-stmts.cc (vectorizable_assignment):
17847         Properly handle non-integral operands when analyzing
17848         conversions.
17850 2023-06-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
17852         PR tree-optimization/110280
17853         * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
17854         using build_vector_from_val with the element of input operand, and
17855         mask's type if operand and mask's types don't match.
17857 2023-06-23  Richard Biener  <rguenther@suse.de>
17859         * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
17860         the truth_value_p case with !VECTOR_TYPE_P.
17862 2023-06-23  Richard Biener  <rguenther@suse.de>
17864         * tree-vect-patterns.cc (vect_look_through_possible_promotion):
17865         Exit early when the type isn't scalar integral.
17867 2023-06-23  Richard Biener  <rguenther@suse.de>
17869         * match.pd ((outertype)((innertype0)a+(innertype1)b)
17870         -> ((newtype)a+(newtype)b)): Use element_precision
17871         where appropriate.
17873 2023-06-23  Richard Biener  <rguenther@suse.de>
17875         * fold-const.cc (fold_binary_loc): Use element_precision
17876         when trying (double)float1 CMP (double)float2 to
17877         float1 CMP float2 simplification.
17878         * match.pd: Likewise.
17880 2023-06-23  Richard Biener  <rguenther@suse.de>
17882         * tree-vect-stmts.cc (vectorizable_load): Avoid useless
17883         copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
17885 2023-06-23  Richard Biener  <rguenther@suse.de>
17887         * tree-vect-stmts.cc (vector_vector_composition_type):
17888         Handle composition of a vector from a number of elements that
17889         happens to match its number of lanes.
17891 2023-06-22  Marek Polacek  <polacek@redhat.com>
17893         * configure.ac (--enable-host-bind-now): New check.  Add
17894         -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
17895         * configure: Regenerate.
17896         * doc/install.texi: Document --enable-host-bind-now.
17898 2023-06-22  Di Zhao OS  <dizhao@os.amperecomputing.com>
17900         * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
17902 2023-06-22  Richard Biener  <rguenther@suse.de>
17904         PR tree-optimization/110332
17905         * tree-ssa-phiprop.cc (propagate_with_phi): Always
17906         check aliasing with edge inserted loads.
17908 2023-06-22  Roger Sayle  <roger@nextmovesoftware.com>
17909             Uros Bizjak  <ubizjak@gmail.com>
17911         * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
17912         expansion of ptestc with equal operands as producing const1_rtx.
17913         * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
17914         estimates of UNSPEC_PTEST, where the ptest performs the PAND
17915         or PAND of its operands.
17916         * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
17917         of reg_equal_p operands into an x86_stc instruction.
17918         (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
17919         (define_split): Similar to above for strict_low_part destinations.
17920         (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
17922 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
17924         PR analyzer/106626
17925         * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
17926         * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
17927         text art.
17928         (fanalyzer-debug-text-art): New.
17930 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
17932         * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
17933         text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
17934         text-art/style.o, text-art/styled-string.o, text-art/table.o,
17935         text-art/theme.o, and text-art/widget.o.
17936         * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
17937         (COLOR_FG_BRIGHT_RED): New.
17938         (COLOR_FG_BRIGHT_GREEN): New.
17939         (COLOR_FG_BRIGHT_YELLOW): New.
17940         (COLOR_FG_BRIGHT_BLUE): New.
17941         (COLOR_FG_BRIGHT_MAGENTA): New.
17942         (COLOR_FG_BRIGHT_CYAN): New.
17943         (COLOR_FG_BRIGHT_WHITE): New.
17944         (COLOR_BG_BRIGHT_BLACK): New.
17945         (COLOR_BG_BRIGHT_RED): New.
17946         (COLOR_BG_BRIGHT_GREEN): New.
17947         (COLOR_BG_BRIGHT_YELLOW): New.
17948         (COLOR_BG_BRIGHT_BLUE): New.
17949         (COLOR_BG_BRIGHT_MAGENTA): New.
17950         (COLOR_BG_BRIGHT_CYAN): New.
17951         (COLOR_BG_BRIGHT_WHITE): New.
17952         * common.opt (fdiagnostics-text-art-charset=): New option.
17953         (diagnostic-text-art.h): New SourceInclude.
17954         (diagnostic_text_art_charset) New Enum and EnumValues.
17955         * configure: Regenerate.
17956         * configure.ac (gccdepdir): Add text-art to loop.
17957         * diagnostic-diagram.h: New file.
17958         * diagnostic-format-json.cc (json_emit_diagram): New.
17959         (diagnostic_output_format_init_json): Wire it up to
17960         context->m_diagrams.m_emission_cb.
17961         * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
17962         "text-art/canvas.h".
17963         (sarif_result::on_nested_diagnostic): Move code to...
17964         (sarif_result::add_related_location): ...this new function.
17965         (sarif_result::on_diagram): New.
17966         (sarif_builder::emit_diagram): New.
17967         (sarif_builder::make_message_object_for_diagram): New.
17968         (sarif_emit_diagram): New.
17969         (diagnostic_output_format_init_sarif): Set
17970         context->m_diagrams.m_emission_cb to sarif_emit_diagram.
17971         * diagnostic-text-art.h: New file.
17972         * diagnostic.cc: Include "diagnostic-text-art.h",
17973         "diagnostic-diagram.h", and "text-art/theme.h".
17974         (diagnostic_initialize): Initialize context->m_diagrams and
17975         call diagnostics_text_art_charset_init.
17976         (diagnostic_finish): Clean up context->m_diagrams.m_theme.
17977         (diagnostic_emit_diagram): New.
17978         (diagnostics_text_art_charset_init): New.
17979         * diagnostic.h (text_art::theme): New forward decl.
17980         (class diagnostic_diagram): Likewise.
17981         (diagnostic_context::m_diagrams): New field.
17982         (diagnostic_emit_diagram): New decl.
17983         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
17984         -fdiagnostics-text-art-charset=.
17985         (-fdiagnostics-plain-output): Add
17986         -fdiagnostics-text-art-charset=none.
17987         * gcc.cc: Include "diagnostic-text-art.h".
17988         (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
17989         * opts-common.cc (decode_cmdline_options_to_array): Add
17990         "-fdiagnostics-text-art-charset=none" to expanded_args for
17991         -fdiagnostics-plain-output.
17992         * opts.cc: Include "diagnostic-text-art.h".
17993         (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
17994         * pretty-print.cc (pp_unicode_character): New.
17995         * pretty-print.h (pp_unicode_character): New decl.
17996         * selftest-run-tests.cc: Include "text-art/selftests.h".
17997         (selftest::run_tests): Call text_art_tests.
17998         * text-art/box-drawing-chars.inc: New file, generated by
17999         contrib/unicode/gen-box-drawing-chars.py.
18000         * text-art/box-drawing.cc: New file.
18001         * text-art/box-drawing.h: New file.
18002         * text-art/canvas.cc: New file.
18003         * text-art/canvas.h: New file.
18004         * text-art/ruler.cc: New file.
18005         * text-art/ruler.h: New file.
18006         * text-art/selftests.cc: New file.
18007         * text-art/selftests.h: New file.
18008         * text-art/style.cc: New file.
18009         * text-art/styled-string.cc: New file.
18010         * text-art/table.cc: New file.
18011         * text-art/table.h: New file.
18012         * text-art/theme.cc: New file.
18013         * text-art/theme.h: New file.
18014         * text-art/types.h: New file.
18015         * text-art/widget.cc: New file.
18016         * text-art/widget.h: New file.
18018 2023-06-21  Uros Bizjak  <ubizjak@gmail.com>
18020         * function.h (emit_initial_value_sets):
18021         Change return type from int to void.
18022         (aggregate_value_p): Change return type from int to bool.
18023         (prologue_contains): Ditto.
18024         (epilogue_contains): Ditto.
18025         (prologue_epilogue_contains): Ditto.
18026         * function.cc (temp_slot): Make "in_use" variable bool.
18027         (make_slot_available): Update for changed "in_use" variable.
18028         (assign_stack_temp_for_type): Ditto.
18029         (emit_initial_value_sets): Change return type from int to void
18030         and update function body accordingly.
18031         (instantiate_virtual_regs): Ditto.
18032         (rest_of_handle_thread_prologue_and_epilogue): Ditto.
18033         (safe_insn_predicate): Change return type from int to bool.
18034         (aggregate_value_p): Change return type from int to bool
18035         and update function body accordingly.
18036         (prologue_contains): Change return type from int to bool.
18037         (prologue_epilogue_contains): Ditto.
18039 2023-06-21  Alexander Monakov  <amonakov@ispras.ru>
18041         * common.opt (fp_contract_mode) [on]: Remove fallback.
18042         * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
18043         * doc/invoke.texi (-ffp-contract): Update.
18044         * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
18046 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18048         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
18049         Add alternatives to prefer to avoid same input and output Z register.
18050         (mask_gather_load<mode><v_int_container>): Likewise.
18051         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
18052         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
18053         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
18054         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
18055         Likewise.
18056         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
18057         Likewise.
18058         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18059         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
18060         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18061         <SVE_2BHSI:mode>_sxtw): Likewise.
18062         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18063         <SVE_2BHSI:mode>_uxtw): Likewise.
18064         (@aarch64_ldff1_gather<mode>): Likewise.
18065         (@aarch64_ldff1_gather<mode>): Likewise.
18066         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
18067         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
18068         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
18069         <VNx4_NARROW:mode>): Likewise.
18070         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18071         <VNx2_NARROW:mode>): Likewise.
18072         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18073         <VNx2_NARROW:mode>_sxtw): Likewise.
18074         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18075         <VNx2_NARROW:mode>_uxtw): Likewise.
18076         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
18077         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
18078         <SVE_PARTIAL_I:mode>): Likewise.
18080 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18082         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
18083         Convert to compact alternatives syntax.
18084         (mask_gather_load<mode><v_int_container>): Likewise.
18085         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
18086         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
18087         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
18088         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
18089         Likewise.
18090         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
18091         Likewise.
18092         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18093         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
18094         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18095         <SVE_2BHSI:mode>_sxtw): Likewise.
18096         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18097         <SVE_2BHSI:mode>_uxtw): Likewise.
18098         (@aarch64_ldff1_gather<mode>): Likewise.
18099         (@aarch64_ldff1_gather<mode>): Likewise.
18100         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
18101         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
18102         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
18103         <VNx4_NARROW:mode>): Likewise.
18104         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18105         <VNx2_NARROW:mode>): Likewise.
18106         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18107         <VNx2_NARROW:mode>_sxtw): Likewise.
18108         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18109         <VNx2_NARROW:mode>_uxtw): Likewise.
18110         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
18111         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
18112         <SVE_PARTIAL_I:mode>): Likewise.
18114 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18116         Revert:
18117         2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18119         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
18120         Convert to compact alternatives syntax.
18121         (mask_gather_load<mode><v_int_container>): Likewise.
18122         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
18123         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
18124         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
18125         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
18126         Likewise.
18127         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
18128         Likewise.
18129         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18130         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
18131         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18132         <SVE_2BHSI:mode>_sxtw): Likewise.
18133         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18134         <SVE_2BHSI:mode>_uxtw): Likewise.
18135         (@aarch64_ldff1_gather<mode>): Likewise.
18136         (@aarch64_ldff1_gather<mode>): Likewise.
18137         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
18138         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
18139         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
18140         <VNx4_NARROW:mode>): Likewise.
18141         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18142         <VNx2_NARROW:mode>): Likewise.
18143         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18144         <VNx2_NARROW:mode>_sxtw): Likewise.
18145         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18146         <VNx2_NARROW:mode>_uxtw): Likewise.
18147         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
18148         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
18149         <SVE_PARTIAL_I:mode>): Likewise.
18151 2023-06-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18153         * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
18154         (get_len_load_store_mode): Ditto.
18155         * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
18156         (get_len_load_store_mode): Ditto.
18157         * optabs-tree.cc (can_vec_mask_load_store_p): New function.
18158         (get_len_load_store_mode): Ditto.
18159         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
18160         (get_len_load_store_mode): Ditto.
18161         * tree-if-conv.cc: include optabs-tree instead of optabs-query
18163 2023-06-21  Richard Biener  <rguenther@suse.de>
18165         * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
18166         split_constant_offset for the POINTER_PLUS_EXPR case.
18168 2023-06-21  Richard Biener  <rguenther@suse.de>
18170         * tree-ssa-loop-ivopts.cc (record_group_use): Use
18171         split_constant_offset.
18173 2023-06-21  Richard Biener  <rguenther@suse.de>
18175         * tree-loop-distribution.cc (classify_builtin_st): Use
18176         split_constant_offset.
18177         * tree-ssa-loop-ivopts.h (strip_offset): Remove.
18178         * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
18180 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18182         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
18183         Convert to compact alternatives syntax.
18184         (mask_gather_load<mode><v_int_container>): Likewise.
18185         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
18186         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
18187         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
18188         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
18189         Likewise.
18190         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
18191         Likewise.
18192         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18193         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
18194         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18195         <SVE_2BHSI:mode>_sxtw): Likewise.
18196         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
18197         <SVE_2BHSI:mode>_uxtw): Likewise.
18198         (@aarch64_ldff1_gather<mode>): Likewise.
18199         (@aarch64_ldff1_gather<mode>): Likewise.
18200         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
18201         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
18202         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
18203         <VNx4_NARROW:mode>): Likewise.
18204         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18205         <VNx2_NARROW:mode>): Likewise.
18206         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18207         <VNx2_NARROW:mode>_sxtw): Likewise.
18208         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
18209         <VNx2_NARROW:mode>_uxtw): Likewise.
18210         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
18211         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
18212         <SVE_PARTIAL_I:mode>): Likewise.
18214 2023-06-21  Tamar Christina  <tamar.christina@arm.com>
18216         PR other/110329
18217         * doc/md.texi: Replace backslashchar.
18219 2023-06-21  Richard Biener  <rguenther@suse.de>
18221         * config/i386/i386.cc (ix86_vector_costs::finish_cost):
18222         Overload.  For masked main loops make sure the vectorization
18223         factor isn't more than double the number of iterations.
18225 2023-06-21  Jan Beulich  <jbeulich@suse.com>
18227         * config/i386/i386-expand.cc (ix86_expand_copysign): Request
18228         value duplication by ix86_build_signbit_mask() when AVX512F and
18229         not HFmode.
18230         * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
18231         2-alternative form. Adjust "mode" attribute. Add "enabled"
18232         attribute.
18233         (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
18234         && !TARGET_PREFER_AVX256.
18235         (*<avx512>_vpternlog<mode>_2): Likewise.
18236         (*<avx512>_vpternlog<mode>_3): Likewise.
18238 2023-06-21  liuhongt  <hongtao.liu@intel.com>
18240         PR target/110018
18241         * tree-vect-stmts.cc (vectorizable_conversion): Use
18242         intermiediate integer type for float_expr/fix_trunc_expr when
18243         direct optab is not existed.
18245 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
18247         PR bootstrap/110324
18248         * gensupport.cc (convert_syntax): Explicitly check for RTX code.
18250 2023-06-20  Richard Sandiford  <richard.sandiford@arm.com>
18252         * config/aarch64/aarch64.md (stack_tie): Hard-code the first
18253         register operand to the stack pointer.  Require the second register
18254         operand to have the number specified in a separate const_int operand.
18255         * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
18256         (aarch64_allocate_and_probe_stack_space): Use it.
18257         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
18258         (aarch64_expand_epilogue): Likewise.
18260 2023-06-20  Jakub Jelinek  <jakub@redhat.com>
18262         PR middle-end/79173
18263         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
18264         IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
18265         type.
18267 2023-06-20  Uros Bizjak  <ubizjak@gmail.com>
18269         * calls.h (setjmp_call_p): Change return type from int to bool.
18270         * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
18271         (store_one_arg): Change return type from int to bool
18272         and adjust function body accordingly.  Change "sibcall_failure"
18273         variable to bool.
18274         (finalize_must_preallocate): Ditto.  Change *must_preallocate pointer
18275         argument  to bool.  Change "partial_seen" variable to bool.
18276         (load_register_parameters):  Change *sibcall_failure
18277         pointer argument to bool.
18278         (check_sibcall_argument_overlap_1): Change return type from int to bool
18279         and adjust function body accordingly.
18280         (check_sibcall_argument_overlap):  Ditto.  Change
18281         "mark_stored_args_map" argument to bool.
18282         (emit_call_1): Change "already_popped" variable to bool.
18283         (setjmp_call_p): Change return type from int to bool
18284         and adjust function body accordingly.
18285         (initialize_argument_information): Change *must_preallocate
18286         pointer argument to bool.
18287         (expand_call): Change "pcc_struct_value", "must_preallocate"
18288         and "sibcall_failure" variables to bool.
18289         (emit_library_call_value_1): Change "pcc_struct_value"
18290         variable to bool.
18292 2023-06-20  Martin Jambor  <mjambor@suse.cz>
18294         PR ipa/110276
18295         * ipa-sra.cc (struct caller_issues): New field there_is_one.
18296         (check_for_caller_issues): Set it.
18297         (check_all_callers_for_issues): Check it.
18299 2023-06-20  Martin Jambor  <mjambor@suse.cz>
18301         * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
18302         (struct ipcp_transformation): Rearrange members according to
18303         C++ class coding convention, add m_uid_to_idx,
18304         get_param_index and maybe_create_parm_idx_map.
18305         * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
18306         (compare_uids): Likewise.
18307         (ipcp_transformation::maype_create_parm_idx_map): Likewise.
18308         * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
18309         (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
18310         (ipcp_update_vr): Likewise.
18311         (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
18312         out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
18314 2023-06-20  Carl Love  <cel@us.ibm.com>
18316         * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
18317         Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
18318         Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
18319         Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
18320         Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
18321         (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
18322         CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
18323         * config/rs6000/rs6000-builtins.def
18324         (__builtin_vsx_scalar_extract_exp_to_vec,
18325         __builtin_vsx_scalar_extract_sig_to_vec,
18326         __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
18327         Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
18328         xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
18329         * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
18330         Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
18331         overloaded instance. Update comments.
18332         * config/rs6000/rs6000-overload.def
18333         (__builtin_vec_scalar_insert_exp): Add new overload definition with
18334         vector arguments.
18335         (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
18336         overloaded definitions.
18337         * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
18338         (DI_to_TI): New mode attribute.
18339         Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
18340         Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
18341         Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
18342         * doc/extend.texi (scalar_extract_exp_to_vec,
18343         scalar_extract_sig_to_vec): Add documentation for new builtins.
18344         (scalar_insert_exp): Add new overloaded builtin definition.
18346 2023-06-20  Li Xu  <xuli1@eswincomputing.com>
18348         * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
18349         size of vector mask mode to one rvv register.
18351 2023-06-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18353         * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
18355 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
18357         * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
18358         switch handler.
18360 2023-06-20  Richard Biener  <rguenther@suse.de>
18362         * tree-ssa-dse.cc (dse_classify_store): When we found
18363         no defs and the basic-block with the original definition
18364         ends in __builtin_unreachable[_trap] the store is dead.
18366 2023-06-20  Richard Biener  <rguenther@suse.de>
18368         * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
18369         keep the virtual SSA form up-to-date.
18371 2023-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18373         * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
18374         New define_insn_and_split.
18376 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
18378         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
18380 2023-06-20  Jan Beulich  <jbeulich@suse.com>
18382         * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
18383         constraint. Add new AVX512F alternative.
18385 2023-06-20  Richard Biener  <rguenther@suse.de>
18387         PR debug/110295
18388         * dwarf2out.cc (process_scope_var): Continue processing
18389         the decl after setting a parent in case the existing DIE
18390         was in limbo.
18392 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
18394         * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
18395         (riscv_arg_has_vector): Simplify.
18396         (riscv_pass_in_vector_p): Adjust warning message.
18398 2023-06-19  Jin Ma  <jinma@linux.alibaba.com>
18400         * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
18401         (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
18402         * config/riscv/riscv.md (riscv_frcsr): New patterns.
18403         (riscv_fscsr): Likewise.
18405 2023-06-19  Toru Kisuki  <tkisuki@tachyum.com>
18407         PR rtl-optimization/110305
18408         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
18409         Handle HONOR_SNANS for x + 0.0.
18411 2023-06-19  Jan Hubicka  <jh@suse.cz>
18413         PR tree-optimization/109811
18414         PR tree-optimization/109849
18415         * passes.def: Add phiprop to early optimization passes.
18416         * tree-ssa-phiprop.cc: Allow clonning.
18418 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
18420         * config/aarch64/aarch64.md (arches): Add nosimd.
18421         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
18422         compact syntax.
18424 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
18425             Omar Tahir  <Omar.Tahir2@arm.com>
18427         * gensupport.cc (class conlist, add_constraints, add_attributes,
18428         skip_spaces, expect_char, preprocess_compact_syntax,
18429         parse_section_layout, parse_section, convert_syntax): New.
18430         (process_rtx): Check for conversion.
18431         * genoutput.cc (process_template): Check for unresolved iterators.
18432         (class data): Add compact_syntax_p.
18433         (gen_insn): Use it.
18434         * gensupport.h (compact_syntax): New.
18435         (hash-set.h): Include.
18436         * doc/md.texi: Document it.
18438 2023-06-19  Uros Bizjak  <ubizjak@gmail.com>
18440         * recog.h (check_asm_operands): Change return type from int to bool.
18441         (insn_invalid_p): Ditto.
18442         (verify_changes): Ditto.
18443         (apply_change_group): Ditto.
18444         (constrain_operands): Ditto.
18445         (constrain_operands_cached): Ditto.
18446         (validate_replace_rtx_subexp): Ditto.
18447         (validate_replace_rtx): Ditto.
18448         (validate_replace_rtx_part): Ditto.
18449         (validate_replace_rtx_part_nosimplify): Ditto.
18450         (added_clobbers_hard_reg_p): Ditto.
18451         (peep2_regno_dead_p): Ditto.
18452         (peep2_reg_dead_p): Ditto.
18453         (store_data_bypass_p): Ditto.
18454         (if_test_bypass_p): Ditto.
18455         * rtl.h (split_all_insns_noflow): Change
18456         return type from unsigned int to void.
18457         * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
18458         of generated added_clobbers_hard_reg_p from int to bool and adjust
18459         function body accordingly.  Change "used" variable type from
18460         int to bool.
18461         * recog.cc (check_asm_operands): Change return type
18462         from int to bool and adjust function body accordingly.
18463         (insn_invalid_p): Ditto.  Change "is_asm" variable to bool.
18464         (verify_changes): Change return type from int to bool.
18465         (apply_change_group): Change return type from int to bool
18466         and adjust function body accordingly.
18467         (validate_replace_rtx_subexp): Change return type from int to bool.
18468         (validate_replace_rtx): Ditto.
18469         (validate_replace_rtx_part): Ditto.
18470         (validate_replace_rtx_part_nosimplify): Ditto.
18471         (constrain_operands_cached): Ditto.
18472         (constrain_operands): Ditto.  Change "lose" and "win"
18473         variables type from int to bool.
18474         (split_all_insns_noflow): Change return type from unsigned int
18475         to void and adjust function body accordingly.
18476         (peep2_regno_dead_p): Change return type from int to bool.
18477         (peep2_reg_dead_p): Ditto.
18478         (peep2_find_free_register): Change "success"
18479         variable type from int to bool
18480         (store_data_bypass_p_1): Change return type from int to bool.
18481         (store_data_bypass_p): Ditto.
18483 2023-06-19  Li Xu  <xuli1@eswincomputing.com>
18485         * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
18486         Zve32f extension.
18488 2023-06-19  Pan Li  <pan2.li@intel.com>
18490         PR target/110299
18491         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
18492         modes.
18493         * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
18494         VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
18495         VF_ZVE63 and VF_ZVE32.
18496         * config/riscv/vector.md
18497         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
18498         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
18499         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
18500         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
18501         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
18502         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
18503         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
18504         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
18505         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
18506         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
18508 2023-06-19  Pan Li  <pan2.li@intel.com>
18510         PR target/110277
18511         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
18512         ret_mode.
18513         * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
18514         VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
18515         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
18516         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
18517         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
18518         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
18519         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
18520         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
18521         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
18522         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
18523         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
18524         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
18525         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
18526         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
18528 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
18530         * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
18531         (gcn_init_libfuncs): Add div and mod functions for all modes.
18532         Add placeholders for divmod functions.
18533         (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
18535 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
18537         * tree-vect-generic.cc: Include optabs-libfuncs.h.
18538         (get_compute_type): Check optab_libfunc.
18539         * tree-vect-stmts.cc: Include optabs-libfuncs.h.
18540         (vectorizable_operation): Check optab_libfunc.
18542 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
18544         * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
18545         * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
18546         (V_MOV, V_MOV_ALT): Likewise.
18547         (scalar_mode, SCALAR_MODE): Add TImode.
18548         (vnsi, VnSI, vndi, VnDI): Likewise.
18549         (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
18550         (mov<mode>, mov<mode>_unspec): Use V_MOV.
18551         (*mov<mode>_4reg): New insn.
18552         (mov<mode>_exec): New 4reg variant.
18553         (mov<mode>_sgprbase): Likewise.
18554         (reload_in<mode>, reload_out<mode>): Use V_MOV.
18555         (vec_set<mode>): Likewise.
18556         (vec_duplicate<mode><exec>): New 4reg variant.
18557         (vec_extract<mode><scalar_mode>): Likewise.
18558         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
18559         (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
18560         (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
18561         (fold_extract_last_<mode>): Use V_MOV.
18562         (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
18563         (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
18564         (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
18565         gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
18566         gather<mode>_insn_2offsets<exec>): Use V_MOV.
18567         (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
18568         scatter<mode>_insn_1offset<exec_scatter>,
18569         scatter<mode>_insn_1offset_ds<exec_scatter>,
18570         scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
18571         (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
18572         mask_scatter_store<mode><vnsi>): Likewise.
18573         * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
18574         (gcn_hard_regno_mode_ok): Likewise.
18575         (GEN_VNM): Add TImode support.
18576         (USE_TI): New macro. Separate TImode operations from non-TImode ones.
18577         (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
18578         V8TImode, and V2TImode.
18579         (print_operand):  Add 'J' and 'K' print codes.
18581 2023-06-19  Richard Biener  <rguenther@suse.de>
18583         PR tree-optimization/110298
18584         * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
18585         Clear number of iterations info before cleaning up the CFG.
18587 2023-06-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18589         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
18590         Simplify vec_concat of lowpart subreg and high part vec_select.
18592 2023-06-19  Tobias Burnus  <tobias@codesourcery.com>
18594         * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
18596 2023-06-19  Richard Sandiford  <richard.sandiford@arm.com>
18598         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
18599         Handle null niters_skip.
18601 2023-06-19  Richard Biener  <rguenther@suse.de>
18603         * config/aarch64/aarch64.cc
18604         (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
18605         to LOOP_VINFO_MASKS.
18607 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
18609         PR target/105523
18610         * common/config/avr/avr-common.cc: Remove setting
18611         of OPT_fdelete_null_pointer_checks.
18612         * config/avr/avr.cc (avr_option_override): Clear
18613         flag_delete_null_pointer_checks if zero_address_valid.
18614         (avr_addr_space_zero_address_valid): New function.
18615         (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
18616         hook.
18618 2023-06-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18619             Robin Dapp  <rdapp.gcc@gmail.com>
18621         * doc/md.texi: Add len_mask{load,store}.
18622         * genopinit.cc (main): Ditto.
18623         (CMP_NAME): Ditto.
18624         * internal-fn.cc (len_maskload_direct): Ditto.
18625         (len_maskstore_direct): Ditto.
18626         (expand_call_mem_ref): Ditto.
18627         (expand_partial_load_optab_fn): Ditto.
18628         (expand_len_maskload_optab_fn): Ditto.
18629         (expand_partial_store_optab_fn): Ditto.
18630         (expand_len_maskstore_optab_fn): Ditto.
18631         (direct_len_maskload_optab_supported_p): Ditto.
18632         (direct_len_maskstore_optab_supported_p): Ditto.
18633         * internal-fn.def (LEN_MASK_LOAD): Ditto.
18634         (LEN_MASK_STORE): Ditto.
18635         * optabs.def (OPTAB_CD): Ditto.
18637 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
18639         * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
18641 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
18643         * config/riscv/autovec.md (<optab><mode>3): Implement binop
18644         expander.
18645         * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
18646         (enum vxrm_field_enum): Rename this...
18647         (enum fixed_point_rounding_mode): ...to this.
18648         (enum frm_field_enum): Rename this...
18649         (enum floating_point_rounding_mode): ...to this.
18650         * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
18651         * config/riscv/riscv.cc (riscv_const_insns): Clarify const
18652         vector handling.
18653         (riscv_libgcc_floating_mode_supported_p): Adjust comment.
18654         (riscv_excess_precision): Do not convert to float for ZVFH.
18655         * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
18657 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
18659         * config/riscv/vector-iterators.md: Add VI_QH iterator.
18660         * config/riscv/autovec-opt.md
18661         (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
18662         that includes sign extension.
18663         (@pred_extract_first_sextsi<mode>): Dito for SImode.
18665 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
18667         * config/riscv/autovec.md (vec_set<mode>): Implement.
18668         (vec_extract<mode><vel>): Implement.
18669         * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
18670         (emit_vlmax_slide_insn): Declare.
18671         (emit_nonvlmax_slide_tu_insn): Declare.
18672         (emit_scalar_move_insn): Export.
18673         (emit_nonvlmax_integer_move_insn): Export.
18674         * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
18675         (emit_nonvlmax_slide_tu_insn): New function.
18676         (emit_vlmax_masked_mu_insn): No change.
18677         (emit_vlmax_integer_move_insn): Export.
18679 2023-06-19  Richard Biener  <rguenther@suse.de>
18681         * tree-vectorizer.h (enum vect_partial_vector_style): New.
18682         (_loop_vec_info::partial_vector_style): Likewise.
18683         (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
18684         (rgroup_controls::compare_type): Add.
18685         (vec_loop_masks): Change from a typedef to auto_vec<>
18686         to a structure.
18687         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
18688         Adjust.  Convert niters_skip to compare_type.
18689         (vect_set_loop_condition_partial_vectors_avx512): New function
18690         implementing the AVX512 partial vector codegen.
18691         (vect_set_loop_condition): Dispatch to the correct
18692         vect_set_loop_condition_partial_vectors_* function based on
18693         LOOP_VINFO_PARTIAL_VECTORS_STYLE.
18694         (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
18695         in the original niter type.
18696         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
18697         partial_vector_style.
18698         (can_produce_all_loop_masks_p): Adjust.
18699         (vect_verify_full_masking): Produce the rgroup_controls vector
18700         here.  Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
18701         (vect_verify_full_masking_avx512): New function implementing
18702         verification of AVX512 style masking.
18703         (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
18704         (vect_analyze_loop_2): Also try AVX512 style masking.
18705         Adjust condition.
18706         (vect_estimate_min_profitable_iters): Implement AVX512 style
18707         mask producing cost.
18708         (vect_record_loop_mask): Do not build the rgroup_controls
18709         vector here but record masks in a hash-set.
18710         (vect_get_loop_mask): Implement AVX512 style mask query,
18711         complementing the existing while_ult style.
18713 2023-06-19  Richard Biener  <rguenther@suse.de>
18715         * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
18716         argument.
18717         * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
18718         (vectorize_fold_left_reduction): Adjust.
18719         (vect_transform_reduction): Likewise.
18720         (vectorizable_live_operation): Likewise.
18721         * tree-vect-stmts.cc (vectorizable_call): Likewise.
18722         (vectorizable_operation): Likewise.
18723         (vectorizable_store): Likewise.
18724         (vectorizable_load): Likewise.
18725         (vectorizable_condition): Likewise.
18727 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
18729         PR target/110086
18730         * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
18731         Add Optimization option property.
18733 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18735         * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
18736         Add new pattern for the abovementioned case.
18738 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18740         * config/xtensa/xtensa.cc
18741         (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
18743 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
18745         * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
18747 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
18749         * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
18751 2023-06-19  liuhongt  <hongtao.liu@intel.com>
18753         PR target/110235
18754         * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
18755         Substitute with ..
18756         (sse2_packsswb<mask_name>): .. this, ..
18757         (avx2_packsswb<mask_name>): .. this and ..
18758         (avx512bw_packsswb<mask_name>): .. this.
18759         (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
18760         (sse2_packssdw<mask_name>): .. this, ..
18761         (avx2_packssdw<mask_name>): .. this and ..
18762         (avx512bw_packssdw<mask_name>): .. this.
18764 2023-06-19  liuhongt  <hongtao.liu@intel.com>
18766         PR target/110235
18767         * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
18768         UNSPEC_US_TRUNCATE instead of original us_truncate for
18769         packusdw/packuswb.
18770         * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
18771         with ..
18772         (mmx_packsswb): .. this and ..
18773         (mmx_packuswb): .. this.
18774         (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
18775         us_truncate.
18776         (s_trunsuffix): Removed code iterator.
18777         (any_s_truncate): Ditto.
18778         * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
18779         UNSPEC_US_TRUNCATE instead of original us_truncate.
18780         (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
18781         * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
18783 2023-06-18  Pan Li  <pan2.li@intel.com>
18785         * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
18787 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
18789         * rtl.h (*rtx_equal_p_callback_function):
18790         Change return type from int to bool.
18791         (rtx_equal_p): Ditto.
18792         (*hash_rtx_callback_function): Ditto.
18793         * rtl.cc (rtx_equal_p): Change return type from int to bool
18794         and adjust function body accordingly.
18795         * early-remat.cc (scratch_equal): Ditto.
18796         * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
18797         (hash_with_unspec_callback): Ditto.
18799 2023-06-18  Jeff Law  <jlaw@ventanamicro.com>
18801         * config/arc/arc.md (movqi_insn): Allow certain constants to
18802         be stored into memory in the pattern's condition.
18803         (movsf_insn): Similarly.
18805 2023-06-18  Honza  <jh@ryzen3.suse.cz>
18807         PR tree-optimization/109849
18808         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
18809         ES; handle ipa_predicate::not_sra_candidate.
18810         (evaluate_properties_for_edge): Pass es to
18811         evaluate_conditions_for_known_args.
18812         (ipa_fn_summary_t::duplicate): Handle sra candidates.
18813         (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
18814         (load_or_store_of_ptr_parameter): New function.
18815         (points_to_possible_sra_candidate_p): New function.
18816         (analyze_function_body): Initialize points_to_possible_sra_candidate;
18817         determine sra predicates.
18818         (estimate_ipcp_clone_size_and_time): Update call of
18819         evaluate_conditions_for_known_args.
18820         (remap_edge_params): Update points_to_possible_sra_candidate.
18821         (read_ipa_call_summary): Stream points_to_possible_sra_candidate
18822         (write_ipa_call_summary): Likewise.
18823         * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
18824         (dump_condition): Dump it.
18825         * ipa-predicate.h (struct inline_param_summary): Add
18826         points_to_possible_sra_candidate.
18828 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
18830         * config/i386/i386-expand.cc (ix86_expand_carry): New helper
18831         function for setting the carry flag.
18832         (ix86_expand_builtin) <handlecarry>: Use it here.
18833         * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
18834         * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
18835         (usubc<mode>5): Likewise.
18837 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
18839         * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
18840         for the immediate constant shift count.
18841         (*concat<mode><dwi>3_2): Likewise.
18842         (*concat<mode><dwi>3_3): Likewise.
18843         (*concat<mode><dwi>3_4): Likewise.
18844         (*concat<mode><dwi>3_5): Likewise.
18845         (*concat<mode><dwi>3_6): Likewise.
18847 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
18849         * cse.cc (hash_rtx_cb): Rename to hash_rtx.
18850         (hash_rtx): Remove.
18851         * early-remat.cc (remat_candidate_hasher::equal): Update
18852         to call rtx_equal_p with rtx_equal_p_callback_function argument.
18853         * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
18854         (rtx_equal_p): Remove.
18855         * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
18856         argument with NULL default value.
18857         (rtx_equal_p_cb): Remove function declaration.
18858         (hash_rtx_cb): Ditto.
18859         (hash_rtx): Add hash_rtx_callback_function argument
18860         with NULL default value.
18861         * sel-sched-ir.cc (free_nop_pool): Update function comment.
18862         (skip_unspecs_callback): Ditto.
18863         (vinsn_init): Update to call hash_rtx with
18864         hash_rtx_callback_function argument.
18865         (vinsn_equal_p): Ditto.
18867 2023-06-18  yulong  <shiyulong@iscas.ac.cn>
18869         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
18870         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
18871         (ADJUST_ALIGNMENT): Ditto.
18872         (RVV_TUPLE_PARTIAL_MODES): Ditto.
18873         (ADJUST_NUNITS): Ditto.
18874         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
18875         New types.
18876         (vfloat16mf4x3_t): Ditto.
18877         (vfloat16mf4x4_t): Ditto.
18878         (vfloat16mf4x5_t): Ditto.
18879         (vfloat16mf4x6_t): Ditto.
18880         (vfloat16mf4x7_t): Ditto.
18881         (vfloat16mf4x8_t): Ditto.
18882         (vfloat16mf2x2_t): Ditto.
18883         (vfloat16mf2x3_t): Ditto.
18884         (vfloat16mf2x4_t): Ditto.
18885         (vfloat16mf2x5_t): Ditto.
18886         (vfloat16mf2x6_t): Ditto.
18887         (vfloat16mf2x7_t): Ditto.
18888         (vfloat16mf2x8_t): Ditto.
18889         (vfloat16m1x2_t): Ditto.
18890         (vfloat16m1x3_t): Ditto.
18891         (vfloat16m1x4_t): Ditto.
18892         (vfloat16m1x5_t): Ditto.
18893         (vfloat16m1x6_t): Ditto.
18894         (vfloat16m1x7_t): Ditto.
18895         (vfloat16m1x8_t): Ditto.
18896         (vfloat16m2x2_t): Ditto.
18897         (vfloat16m2x3_t): Ditto.
18898         (vfloat16m2x4_t): Ditto.
18899         (vfloat16m4x2_t): Ditto.
18900         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
18901         (vfloat16mf4x3_t): Ditto.
18902         (vfloat16mf4x4_t): Ditto.
18903         (vfloat16mf4x5_t): Ditto.
18904         (vfloat16mf4x6_t): Ditto.
18905         (vfloat16mf4x7_t): Ditto.
18906         (vfloat16mf4x8_t): Ditto.
18907         (vfloat16mf2x2_t): Ditto.
18908         (vfloat16mf2x3_t): Ditto.
18909         (vfloat16mf2x4_t): Ditto.
18910         (vfloat16mf2x5_t): Ditto.
18911         (vfloat16mf2x6_t): Ditto.
18912         (vfloat16mf2x7_t): Ditto.
18913         (vfloat16mf2x8_t): Ditto.
18914         (vfloat16m1x2_t): Ditto.
18915         (vfloat16m1x3_t): Ditto.
18916         (vfloat16m1x4_t): Ditto.
18917         (vfloat16m1x5_t): Ditto.
18918         (vfloat16m1x6_t): Ditto.
18919         (vfloat16m1x7_t): Ditto.
18920         (vfloat16m1x8_t): Ditto.
18921         (vfloat16m2x2_t): Ditto.
18922         (vfloat16m2x3_t): Ditto.
18923         (vfloat16m2x4_t): Ditto.
18924         (vfloat16m4x2_t): Ditto.
18925         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
18926         * config/riscv/riscv.md: New.
18927         * config/riscv/vector-iterators.md: New.
18929 2023-06-17  Roger Sayle  <roger@nextmovesoftware.com>
18931         * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
18932         CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
18933         Generalize special case for converting TImode to V1TImode to handle
18934         all 128-bit vector conversions.
18936 2023-06-17  Costas Argyris  <costas.argyris@gmail.com>
18938         * gcc-ar.cc (main): Refactor to slightly reduce code
18939         duplication.  Avoid unnecessary elements in nargv.
18941 2023-06-16  Pan Li  <pan2.li@intel.com>
18943         PR target/110265
18944         * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
18945         integer reduction expand.
18946         * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
18947         and the LMUL1 attr respectively.
18948         * config/riscv/vector.md
18949         (@pred_reduc_<reduc><mode><vlmul1>): Removed.
18950         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
18951         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
18952         (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
18953         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
18954         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
18955         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
18957 2023-06-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18959         PR target/110264
18960         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
18962 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
18964         PR middle-end/79173
18965         * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
18966         BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
18967         BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
18968         types.
18969         * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
18970         BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
18971         * builtins.cc (fold_builtin_addc_subc): New function.
18972         (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
18973         * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
18975 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
18977         PR tree-optimization/110271
18978         * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
18979         <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
18980         instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
18982 2023-06-16  Martin Jambor  <mjambor@suse.cz>
18984         * configure: Regenerate.
18986 2023-06-16  Roger Sayle  <roger@nextmovesoftware.com>
18987             Uros Bizjak  <ubizjak@gmail.com>
18989         PR target/31985
18990         * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
18991         define_insn_and_split combine *add<dwi>3_doubleword with
18992         a *concat<mode><dwi>3 for more efficient lowering after reload.
18994 2023-06-16  Vladimir N. Makarov  <vmakarov@redhat.com>
18996         * ira-lives.cc: Include except.h.
18997         (process_bb_node_lives): Ignore conflicts from cleanup exceptions
18998         when the pseudo does not live at the exception landing pad.
19000 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
19002         * doc/invoke.texi: Document -Welaborated-enum-base.
19004 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19006         * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
19007         (ushrn2_n): ... This.
19008         (sqshrn2_n): Rename builtins to...
19009         (ssqshrn2_n): ... This.
19010         (uqshrn2_n): Rename builtins to...
19011         (uqushrn2_n): ... This.
19012         * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
19013         (vqshrn_high_n_s32): Likewise.
19014         (vqshrn_high_n_s64): Likewise.
19015         (vqshrn_high_n_u16): Likewise.
19016         (vqshrn_high_n_u32): Likewise.
19017         (vqshrn_high_n_u64): Likewise.
19018         (vshrn_high_n_s16): Likewise.
19019         (vshrn_high_n_s32): Likewise.
19020         (vshrn_high_n_s64): Likewise.
19021         (vshrn_high_n_u16): Likewise.
19022         (vshrn_high_n_u32): Likewise.
19023         (vshrn_high_n_u64): Likewise.
19024         * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
19025         Rename to...
19026         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
19027         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
19028         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
19029         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
19030         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
19031         (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
19032         (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
19033         Update expander for the above.
19035 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19037         * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
19038         (shrn2_n): ... This.
19039         (rshrn2): Rename builtins to...
19040         (rshrn2_n): ... This.
19041         * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
19042         (vrshrn_high_n_s32): Likewise.
19043         (vrshrn_high_n_s64): Likewise.
19044         (vrshrn_high_n_u16): Likewise.
19045         (vrshrn_high_n_u32): Likewise.
19046         (vrshrn_high_n_u64): Likewise.
19047         (vshrn_high_n_s16): Likewise.
19048         (vshrn_high_n_s32): Likewise.
19049         (vshrn_high_n_s64): Likewise.
19050         (vshrn_high_n_u16): Likewise.
19051         (vshrn_high_n_u32): Likewise.
19052         (vshrn_high_n_u64): Likewise.
19053         * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
19054         Delete.
19055         (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
19056         (aarch64_shrn2<mode>_insn_le): Likewise.
19057         (aarch64_shrn2<mode>_insn_be): Likewise.
19058         (aarch64_shrn2<mode>): Likewise.
19059         (aarch64_rshrn2<mode>_insn_le): Likewise.
19060         (aarch64_rshrn2<mode>_insn_be): Likewise.
19061         (aarch64_rshrn2<mode>): Likewise.
19062         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
19063         (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
19064         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
19065         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
19066         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
19067         (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
19068         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
19069         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
19070         (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
19071         (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
19072         (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
19073         (aarch64_sqshrun2_n<mode>): New define_expand.
19074         (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
19075         (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
19076         (aarch64_sqrshrun2_n<mode>): New define_expand.
19077         * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
19078         UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
19079         Delete unspec values.
19080         (VQSHRN_N): Delete int iterator.
19082 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19084         * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
19085         * config/aarch64/aarch64-simd.md
19086         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
19087         (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
19088         Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
19089         * config/aarch64/iterators.md (shrn_s): New code attribute.
19091 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19093         * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
19094         Rename to...
19095         (aarch64_<shrn_op>shrn_n<mode>): ... This.  Reimplement with RTL codes.
19096         (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
19097         (aarch64_sqrshrun_n<mode>_insn): Likewise.
19098         (aarch64_sqshrun_n<mode>_insn): Likewise.
19099         (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
19100         (aarch64_sqshrun_n<mode>): Likewise.
19101         (aarch64_sqrshrun_n<mode>): Likewise.
19102         * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
19104 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19106         * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
19107         (shrn_n): ... This.
19108         (rshrn): Rename builtins to...
19109         (rshrn_n): ... This.
19110         * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
19111         (vshrn_n_s32): Likewise.
19112         (vshrn_n_s64): Likewise.
19113         (vshrn_n_u16): Likewise.
19114         (vshrn_n_u32): Likewise.
19115         (vshrn_n_u64): Likewise.
19116         (vrshrn_n_s16): Likewise.
19117         (vrshrn_n_s32): Likewise.
19118         (vrshrn_n_s64): Likewise.
19119         (vrshrn_n_u16): Likewise.
19120         (vrshrn_n_u32): Likewise.
19121         (vrshrn_n_u64): Likewise.
19122         * config/aarch64/aarch64-simd.md
19123         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
19124         (aarch64_shrn<mode>): Likewise.
19125         (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
19126         (aarch64_rshrn<mode>): Likewise.
19127         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
19128         (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
19129         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
19130         (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
19131         (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
19132         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
19133         (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
19134         (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
19135         (aarch64_sqshrun_n<mode>): Likewise.
19136         (aarch64_sqrshrun_n<mode>): Likewise.
19137         * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
19138         (TRUNCEXTEND): New code attribute.
19139         (TRUNC_SHIFT): Likewise.
19140         (shrn_op): Likewise.
19141         * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
19142         New predicate.
19144 2023-06-16  Pan Li  <pan2.li@intel.com>
19146         * config/riscv/riscv-vsetvl.cc
19147         (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
19149 2023-06-16  Richard Biener  <rguenther@suse.de>
19151         PR tree-optimization/110278
19152         * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
19153         (x != (typeof x)(x == 0) -> true): Likewise.
19155 2023-06-16  Pali Rohár  <pali@kernel.org>
19157         * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
19158         (REAL_LIBGCC_SPEC): New define.
19159         * config/i386/mingw.opt: Add mcrtdll=
19160         * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
19161         (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
19162         (STARTFILE_SPEC): Adjust for -mcrtdll=.
19163         * doc/invoke.texi: Add mcrtdll= documentation.
19165 2023-06-16  Simon Dardis  <simon.dardis@imgtec.com>
19167         * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
19168         (mips_handle_code_readable_attr):New static function.
19169         (mips_get_code_readable_attr):New static enum function.
19170         (mips_set_current_function):Set the code_readable mode.
19171         (mips_option_override):Same as above.
19172         * doc/extend.texi:Document code_readable.
19174 2023-06-16  Richard Biener  <rguenther@suse.de>
19176         PR tree-optimization/110269
19177         * fold-const.cc (fold_binary_loc): Merge x != 0 folding
19178         with tree_expr_nonzero_p ...
19179         * match.pd (cmp (convert? addr@0) integer_zerop): With this
19180         pattern.
19182 2023-06-15  Marek Polacek  <polacek@redhat.com>
19184         * Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
19185         Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
19186         ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
19187         * configure.ac (--enable-host-shared): Don't set PICFLAG here.
19188         (--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
19189         check.
19190         * configure: Regenerate.
19191         * doc/install.texi: Document --enable-host-pie.
19193 2023-06-15  Manolis Tsamis  <manolis.tsamis@vrull.eu>
19195         * regcprop.cc (maybe_mode_change): Enable stack pointer
19196         propagation.
19198 2023-06-15  Andrew MacLeod  <amacleod@redhat.com>
19200         PR tree-optimization/110266
19201         * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
19202         complex type.
19203         (adjust_realpart_expr): Ditto.
19205 2023-06-15  Jan Beulich  <jbeulich@suse.com>
19207         * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
19208         vmovddup.
19210 2023-06-15  Jan Beulich  <jbeulich@suse.com>
19212         * config/i386/constraints.md: Mention k and r for B.
19214 2023-06-15  Lulu Cheng  <chenglulu@loongson.cn>
19215             Andrew Pinski  <apinski@marvell.com>
19217         PR target/110136
19218         * config/loongarch/loongarch.md: Modify the register constraints for template
19219         "jumptable" and "indirect_jump" from "r" to "e".
19221 2023-06-15  Xi Ruoyao  <xry111@xry111.site>
19223         * config/loongarch/loongarch-tune.h (loongarch_align): New
19224         struct.
19225         * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
19226         array.
19227         * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
19228         the array.
19229         * config/loongarch/loongarch.cc
19230         (loongarch_option_override_internal): Set the value of
19231         -falign-functions= if -falign-functions is enabled but no value
19232         is given.  Likewise for -falign-labels=.
19234 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
19236         PR middle-end/79173
19237         * internal-fn.def (UADDC, USUBC): New internal functions.
19238         * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
19239         (commutative_ternary_fn_p): Return true also for IFN_UADDC.
19240         * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
19241         * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
19242         match_uaddc_usubc): New functions.
19243         (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
19244         for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
19245         other optimizations have been successful for those.
19246         * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
19247         * fold-const-call.cc (fold_const_call): Likewise.
19248         * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
19249         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
19250         * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
19251         patterns.
19252         * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
19253         define_expand patterns.
19254         (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
19255         into NOTE_INSN_DELETED note rather than nop instruction.
19256         (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
19257         Likewise.
19259 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
19261         PR middle-end/79173
19262         * config/i386/i386.md (subborrow<mode>): Add alternative with
19263         memory destination and add for it define_peephole2
19264         TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
19265         destination in these patterns.
19267 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
19269         PR middle-end/79173
19270         * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
19271         addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
19272         define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
19273         using memory destination in these patterns.
19275 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
19277         * gimple-fold.cc (gimple_fold_call): Move handling of arg0
19278         as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
19279         and .{ADD,SUB,MUL}_OVERFLOW calls from here...
19280         * fold-const-call.cc (fold_const_call): ... here.
19282 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
19284         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
19285         Rename to <su>abd<mode>3.
19286         * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
19287         to <su>abd<mode>3.
19289 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
19291         * doc/md.texi (sabd, uabd): Document them.
19292         * internal-fn.def (ABD): Use new optab.
19293         * optabs.def (sabd_optab, uabd_optab): New optabs,
19294         * tree-vect-patterns.cc (vect_recog_absolute_difference):
19295         Recognize the following idiom abs (a - b).
19296         (vect_recog_sad_pattern): Refactor to use
19297         vect_recog_absolute_difference.
19298         (vect_recog_abd_pattern): Use patterns found by
19299         vect_recog_absolute_difference to build a new ABD
19300         internal call.
19302 2023-06-15  chenxiaolong  <chenxl04200420@163.com>
19304         * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
19305         of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
19307 2023-06-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19309         * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
19310         (expand_vec_perm_const_1): Add merge optmization.
19312 2023-06-15  Lehua Ding  <lehua.ding@rivai.ai>
19314         PR target/110119
19315         * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
19316         (riscv_pass_by_reference): Return true for vector mode
19318 2023-06-15  Pan Li  <pan2.li@intel.com>
19320         * config/riscv/autovec-opt.md: Align the predictor sytle.
19321         * config/riscv/autovec.md: Ditto.
19323 2023-06-15  Pan Li  <pan2.li@intel.com>
19325         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
19326         Take elen instead of scalar BITS_PER_WORD.
19327         (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
19328         instead of scaler BITS_PER_WORD.
19330 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
19332         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
19334 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19336         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
19337         Fix signed comparison warning in loop from npats to enelts.
19339 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
19341         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
19342         to offloading compilation.
19343         * config/gcn/mkoffload.cc (main): Adjust.
19344         * config/nvptx/mkoffload.cc (main): Likewise.
19345         * doc/invoke.texi (foffload-options): Update example.
19347 2023-06-14  liuhongt  <hongtao.liu@intel.com>
19349         PR target/110227
19350         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
19351         for alternative 2 since there's no evex version for vpcmpeqd
19352         ymm, ymm, ymm.
19354 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
19356         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
19358 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
19360         * config/sh/divtab.cc: Remove.
19362 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
19364         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
19365         superfluous spaces around \t for vpcmpeqd.
19367 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
19369         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
19370         clearing vectors with only a single element.  Set CLEARED if the
19371         vector was initialized to zero.
19373 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
19375         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
19376         #include.
19377         (ENTRY): Undef.
19378         (TUPLE_ENTRY): Undef.
19380 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19382         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
19383         (shuffle_generic_patterns): Ditto.
19384         (expand_vec_perm_const_1): Ditto.
19386 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19388         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
19389         (shuffle_decompress_patterns): Ditto.
19391 2023-06-13  Richard Biener  <rguenther@suse.de>
19393         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
19395 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
19396             Kito Cheng  <kito.cheng@sifive.com>
19398         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
19399         warning flag if func is not builtin
19400         * config/riscv/riscv.cc
19401         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
19402         (riscv_arg_has_vector): Determine whether the arg is vector type.
19403         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
19404         (riscv_init_cumulative_args): The same as header.
19405         (riscv_get_arg_info): Add the checking.
19406         (riscv_function_value): Check the func return and set warning flag
19407         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
19408         determine whether warning psabi or not.
19410 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19412         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
19413         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
19414         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
19415         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
19416         with TP_TPIDRURO.
19417         (arm_output_load_tpidr): Define.
19418         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
19419         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
19420         assembly.
19421         (reload_tp_hard): Likewise.
19422         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
19423         arm_tp_type.
19424         * doc/invoke.texi (Arm Options, mtp): Document new values.
19426 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19428         PR target/108779
19429         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
19430         AARCH64_TPIDRRO_EL0 value.
19431         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
19432         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
19433         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
19434         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
19436 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
19438         * range-op-float.cc (frange_nextafter): Drop inline.
19439         (frelop_early_resolve): Add static.
19440         (frange_float): Likewise.
19442 2023-06-13  Richard Biener  <rguenther@suse.de>
19444         PR middle-end/110232
19445         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
19446         to check whether the buffer covers the whole vector.
19448 2023-06-13  Richard Biener  <rguenther@suse.de>
19450         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
19451         .MASK_LOAD and friends set the size of the access to unknown.
19453 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
19455         PR target/96339
19456         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
19457         calls that have a constant input predicate vector.
19458         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
19459         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
19460         (svlast_impl::vect_all_same): Check if all vector elements are equal.
19462 2023-06-13  Andi Kleen  <ak@linux.intel.com>
19464         * config/i386/gcc-auto-profile: Regenerate.
19466 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19468         * config/riscv/vector-iterators.md: Fix requirement.
19470 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19472         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
19473         (shuffle_decompress_patterns): New function.
19474         (expand_vec_perm_const_1): Add decompress optimization.
19476 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
19478         PR rtl-optimization/101188
19479         * postreload.cc (reload_cse_move2add_invalidate): New function,
19480         extracted from...
19481         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
19483 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
19485         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
19486         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
19487         and if maxv == 1, use constant element for duplicating into register.
19489 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
19491         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
19492         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
19493         (gimplify_adjust_omp_clauses): Change
19494         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
19495         GOMP_MAP_FORCE_PRESENT.
19496         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
19497         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
19498         to/from clauses with present modifier.
19500 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19502         PR tree-optimization/110205
19503         * range-op-float.cc (range_operator::fold_range): Add default FII
19504         fold routine.
19505         * range-op-mixed.h (class operator_gt): Add missing final overrides.
19506         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
19507         (operator_lshift ::update_bitmask): Add final override.
19508         (operator_rshift ::update_bitmask): Add final override.
19509         * range-op.h (range_operator::fold_range): Add FII prototype.
19511 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19513         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
19514         Use range_op_handler directly.
19515         * range-op.cc (range_op_handler::range_op_handler): Unsigned
19516         param instead of tree-code.
19517         (ptr_op_widen_plus_signed): Delete.
19518         (ptr_op_widen_plus_unsigned): Delete.
19519         (ptr_op_widen_mult_signed): Delete.
19520         (ptr_op_widen_mult_unsigned): Delete.
19521         (range_op_table::initialize_integral_ops): Add new opcodes.
19522         * range-op.h (range_op_handler): Use unsigned.
19523         (OP_WIDEN_MULT_SIGNED): New.
19524         (OP_WIDEN_MULT_UNSIGNED): New.
19525         (OP_WIDEN_PLUS_SIGNED): New.
19526         (OP_WIDEN_PLUS_UNSIGNED): New.
19527         (RANGE_OP_TABLE_SIZE): New.
19528         (range_op_table::operator []): Use unsigned.
19529         (range_op_table::set): Use unsigned.
19530         (m_range_tree): Make unsigned.
19531         (ptr_op_widen_mult_signed): Remove.
19532         (ptr_op_widen_mult_unsigned): Remove.
19533         (ptr_op_widen_plus_signed): Remove.
19534         (ptr_op_widen_plus_unsigned): Remove.
19536 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19538         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
19539         manually as there is no access to the default operator.
19540         (cfn_copysign::fold_range): Don't check for validity.
19541         (cfn_ubsan::fold_range): Ditto.
19542         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
19543         * range-op.cc (default_operator): New.
19544         (range_op_handler::range_op_handler): Use default_operator
19545         instead of NULL.
19546         (range_op_handler::operator bool): Move from header, compare
19547         against default operator.
19548         (range_op_handler::range_op): New.
19549         * range-op.h (range_op_handler::operator bool): Move.
19551 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19553         * range-op.cc (unified_table): Delete.
19554         (range_op_table operator_table): Instantiate.
19555         (range_op_table::range_op_table): Rename from unified_table.
19556         (range_op_handler::range_op_handler): Use range_op_table.
19557         * range-op.h (range_op_table::operator []): Inline.
19558         (range_op_table::set): Inline.
19560 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19562         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
19563         pass type.
19564         * gimple-range-op.cc (get_code): Rename from get_code_and_type
19565         and simplify.
19566         (gimple_range_op_handler::supported_p): No need for type.
19567         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
19568         (cfn_copysign::fold_range): Ditto.
19569         (cfn_ubsan::fold_range): Ditto.
19570         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
19571         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
19572         * range-op-float.cc (operator_plus::op1_range): Ditto.
19573         (operator_mult::op1_range): Ditto.
19574         (range_op_float_tests): Ditto.
19575         * range-op.cc (get_op_handler): Remove.
19576         (range_op_handler::set_op_handler): Remove.
19577         (operator_plus::op1_range): No need for type.
19578         (operator_minus::op1_range): Ditto.
19579         (operator_mult::op1_range): Ditto.
19580         (operator_exact_divide::op1_range): Ditto.
19581         (operator_cast::op1_range): Ditto.
19582         (perator_bitwise_not::fold_range): Ditto.
19583         (operator_negate::fold_range): Ditto.
19584         * range-op.h (range_op_handler::range_op_handler): Remove type param.
19585         (range_cast): No need for type.
19586         (range_op_table::operator[]): Check for enum_code >= 0.
19587         * tree-data-ref.cc (compute_distributive_range): No need for type.
19588         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
19589         * value-query.cc (range_query::get_tree_range): Ditto.
19590         * value-relation.cc (relation_oracle::validate_relation): Ditto.
19591         * vr-values.cc (range_of_var_in_loop): Ditto.
19592         (simplify_using_ranges::fold_cond_with_ops): Ditto.
19594 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19596         * range-op-mixed.h (operator_max): Remove final.
19597         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
19598         (pointer_table::pointer_table): Remove.
19599         (class hybrid_max_operator): New.
19600         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
19601         * range-op.cc (pointer_tree_table): Remove.
19602         (unified_table::unified_table): Comment out MAX_EXPR.
19603         (get_op_handler): Remove check of pointer table.
19604         * range-op.h (class pointer_table): Remove.
19606 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19608         * range-op-mixed.h (operator_min): Remove final.
19609         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
19610         (class hybrid_min_operator): New.
19611         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
19612         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
19614 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19616         * range-op-mixed.h (operator_bitwise_or): Remove final.
19617         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
19618         (class hybrid_or_operator): New.
19619         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
19620         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
19622 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19624         * range-op-mixed.h (operator_bitwise_and): Remove final.
19625         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
19626         (class hybrid_and_operator): New.
19627         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
19628         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
19630 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19632         * Makefile.in (OBJS): Add range-op-ptr.o.
19633         * range-op-mixed.h (update_known_bitmask): Move prototype here.
19634         (minus_op1_op2_relation_effect): Move prototype here.
19635         (wi_includes_zero_p): Move function to here.
19636         (wi_zero_p): Ditto.
19637         * range-op.cc (update_known_bitmask): Remove static.
19638         (wi_includes_zero_p): Move to header.
19639         (wi_zero_p): Move to header.
19640         (minus_op1_op2_relation_effect): Remove static.
19641         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
19642         (pointer_plus_operator): Ditto.
19643         (pointer_min_max_operator): Ditto.
19644         (pointer_and_operator): Ditto.
19645         (pointer_or_operator): Ditto.
19646         (pointer_table): Ditto.
19647         (range_op_table::initialize_pointer_ops): Ditto.
19648         * range-op-ptr.cc: New.
19650 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19652         * range-op-mixed.h (class operator_max): Move from...
19653         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
19654         (get_op_handler): Remove the integral table.
19655         (class operator_max): Move from here.
19656         (integral_table::integral_table): Delete.
19657         * range-op.h (class integral_table): Delete.
19659 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19661         * range-op-mixed.h (class operator_min): Move from...
19662         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
19663         (class operator_min): Move from here.
19664         (integral_table::integral_table): Remove MIN_EXPR.
19666 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19668         * range-op-mixed.h (class operator_bitwise_or): Move from...
19669         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
19670         (class operator_bitwise_or): Move from here.
19671         (integral_table::integral_table): Remove BIT_IOR_EXPR.
19673 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19675         * range-op-mixed.h (class operator_bitwise_and): Move from...
19676         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
19677         (get_op_handler): Check for a pointer table entry first.
19678         (class operator_bitwise_and): Move from here.
19679         (integral_table::integral_table): Remove BIT_AND_EXPR.
19681 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19683         * range-op-mixed.h (class operator_bitwise_xor): Move from...
19684         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
19685         (class operator_bitwise_xor): Move from here.
19686         (integral_table::integral_table): Remove BIT_XOR_EXPR.
19687         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
19689 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19691         * range-op-mixed.h (class operator_bitwise_not): Move from...
19692         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
19693         (class operator_bitwise_not): Move from here.
19694         (integral_table::integral_table): Remove BIT_NOT_EXPR.
19695         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
19697 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
19699         * range-op-mixed.h (class operator_addr_expr): Move from...
19700         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
19701         (class operator_addr_expr): Move from here.
19702         (integral_table::integral_table): Remove ADDR_EXPR.
19703         (pointer_table::pointer_table): Remove ADDR_EXPR.
19705 2023-06-12  Pan Li  <pan2.li@intel.com>
19707         * config/riscv/riscv-vector-builtins-types.def
19708         (vfloat16m1_t): Add type to lmul1 ops.
19709         (vfloat16m2_t): Likewise.
19710         (vfloat16m4_t): Likewise.
19712 2023-06-12  Richard Biener  <rguenther@suse.de>
19714         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
19715         .MASK_STORE and friend set the size of the access to
19716         unknown.
19718 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
19720         * config.in: Regenerate.
19721         * configure: Regenerate.
19722         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
19724 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19726         * config/riscv/autovec-opt.md
19727         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
19728         (*<any_shiftrt:optab>trunc<mode>): Ditto.
19729         * config/riscv/autovec.md (<optab><mode>3): Change to
19730         define_insn_and_split.
19731         (v<optab><mode>3): Ditto.
19732         (trunc<mode><v_double_trunc>2): Ditto.
19734 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19736         * simplify-rtx.cc (simplify_const_unary_operation):
19737         Handle US_TRUNCATE, SS_TRUNCATE.
19739 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
19741         PR modula2/109952
19742         * doc/gm2.texi (Standard procedures): Fix Next link.
19744 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
19746         * config.in: Regenerate.
19748 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
19750         PR middle-end/110142
19751         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
19752         subtype to vect_widened_op_tree and remove subtype parameter, also
19753         remove superfluous overloaded function definition.
19754         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
19755         to call to vect_recog_widen_op_pattern.
19756         (vect_recog_widen_minus_pattern): Likewise.
19758 2023-06-12  liuhongt  <hongtao.liu@intel.com>
19760         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
19761         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
19762         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
19763         (vec_unpacks_lo_<mode>): Ditto.
19764         (vec_unpacks_hi_<mode>): Ditto.
19765         (sse_movlhps_<mode>): New define_insn.
19766         (ssse3_palignr<mode>_perm): Extend to V_128H.
19767         (V_128H): New mode iterator.
19768         (ssepackPHmode): New mode attribute.
19769         (vunpck_extract_mode): Ditto.
19770         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
19771         (vpckfloat_temp_mode): Ditto.
19772         (vpckfloat_op_mode): Ditto.
19773         (vunpckfixt_mode): Extend to VxHF.
19774         (vunpckfixt_model): Ditto.
19775         (vunpckfixt_extract_mode): Ditto.
19777 2023-06-12  Richard Biener  <rguenther@suse.de>
19779         PR middle-end/110200
19780         * genmatch.cc (expr::gen_transform): Put braces around
19781         the if arm for the (convert ...) short-cut.
19783 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
19785         PR target/109932
19786         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
19787         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
19789 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
19791         PR target/110011
19792         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
19793         floating constant itself for real_to_target call.
19795 2023-06-12  Pan Li  <pan2.li@intel.com>
19797         * config/riscv/riscv-vector-builtins-types.def
19798         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
19799         (vfloat16mf2_t): Ditto.
19800         (vfloat16m1_t): Ditto.
19801         (vfloat16m2_t): Ditto.
19802         (vfloat16m4_t): Ditto.
19804 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
19806         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
19807         Do not require a stack frame when debugging is enabled for AIX.
19809 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
19811         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
19812         Remove attribute values.
19813         (insv_notbit): New post-reload insn.
19814         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
19815         (*insv.not-bit.0_split, *insv.not-bit.7_split)
19816         (*insv.xor-extract_split): Split to insv_notbit.
19817         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
19818         (*insv.xor-extract): Remove post-reload insns.
19819         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
19820         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
19821         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
19822         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
19824 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
19826         PR target/109907
19827         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
19828         (MSB, SIZE): New mode attributes.
19829         (any_shift): New code iterator.
19830         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
19831         (*lshr<mode>3_const_split): Add constraint alternative for
19832         the case of shift-offset = MSB.  Ditch "length" attribute.
19833         (extzv<mode): New. replaces extzv.  Adjust following patterns.
19834         Use avr_out_extr, avr_out_extr_not to print asm.
19835         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
19836         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
19837         * config/avr/constraints.md (C15, C23, C31, Yil): New
19838         * config/avr/predicates.md (reg_or_low_io_operand)
19839         (const7_operand, reg_or_low_io_operand)
19840         (const15_operand, const_0_to_15_operand)
19841         (const23_operand, const_0_to_23_operand)
19842         (const31_operand, const_0_to_31_operand): New.
19843         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
19844         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
19845         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
19846         MSB case to new insn constraint "r" for operands[1].
19847         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
19848         Handle these cases.
19849         (avr_rtx_costs_1): Adjust cost for a new pattern.
19851 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19853         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
19854         (vector_insn_info::parse_insn): Add rtx_insn parse.
19855         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
19856         (get_first_vsetvl): New function.
19857         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
19858         (pass_vsetvl::cleanup_insns): Remove it.
19859         (pass_vsetvl::ssa_post_optimization): New function.
19860         (has_no_uses): Ditto.
19861         (pass_vsetvl::propagate_avl): Remove it.
19862         (pass_vsetvl::df_post_optimization): New function.
19863         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
19864         * config/riscv/riscv-vsetvl.h: Adapt declaration.
19866 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
19868         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
19869         (ipcp_vr_lattice::print): Call dump method.
19870         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
19871         Value_Range.
19872         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
19873         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
19874         range.
19875         (initialize_node_lattices): Pass type when appropriate.
19876         (ipa_vr_operation_and_type_effects): Make type agnostic.
19877         (ipa_value_range_from_jfunc): Same.
19878         (propagate_vr_across_jump_function): Same.
19879         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
19880         (evaluate_properties_for_edge): Same.
19881         * ipa-prop.cc (ipa_vr::get_vrange): Same.
19882         (ipcp_update_vr): Same.
19883         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
19884         (ipa_range_set_and_normalize): Same.
19886 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
19888         PR target/109650
19889         PR target/92729
19890         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
19891         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
19892         (avr_pass_data_ifelse): New pass_data for it.
19893         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
19894         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
19895         (avr_out_cmp_ext): New functions.
19896         (compare_condtition): Make sure REG_CC dies in the branch insn.
19897         (avr_rtx_costs_1): Add computation of cbranch costs.
19898         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
19899         [ADJUST_LEN_CMP_SEXT]Handle them.
19900         (TARGET_CANONICALIZE_COMPARISON): New define.
19901         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
19902         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
19903         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
19904         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
19905         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
19906         (avr_out_cmp_zext): New Protos
19907         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
19908         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
19909         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
19910         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
19911         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
19912         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
19913         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
19914         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
19915         (adjust_len) [add_set_ZN, cmp_zext]: New.
19916         (QIPSI): New mode iterator.
19917         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
19918         (gelt): New code iterator.
19919         (gelt_eqne): New code attribute.
19920         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
19921         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
19922         (*cmpqi_sign_extend): Remove insns.
19923         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
19924         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
19925         * config/avr/predicates.md (scratch_or_d_register_operand): New.
19926         * config/avr/constraints.md (Yxx): New constraint.
19928 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19930         * config/riscv/autovec.md (select_vl<mode>): New pattern.
19931         * config/riscv/riscv-protos.h (expand_select_vl): New function.
19932         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
19934 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
19936         * range-op-float.cc (foperator_mult_div_base): Delete.
19937         (foperator_mult_div_base::find_range): Make static local function.
19938         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
19939         (operator_mult::op1_range): Rename from foperator_mult.
19940         (operator_mult::op2_range): Ditto.
19941         (operator_mult::rv_fold): Ditto.
19942         (float_table::float_table): Remove MULT_EXPR.
19943         (class foperator_div): Inherit from range_operator.
19944         (float_table::float_table): Delete.
19945         * range-op-mixed.h (class operator_mult): Combined from integer
19946         and float files.
19947         * range-op.cc (float_tree_table): Delete.
19948         (op_mult): New object.
19949         (unified_table::unified_table): Add MULT_EXPR.
19950         (get_op_handler): Do not check float table any longer.
19951         (class cross_product_operator): Move to range-op-mixed.h.
19952         (class operator_mult): Move to range-op-mixed.h.
19953         (integral_table::integral_table): Remove MULT_EXPR.
19954         (pointer_table::pointer_table): Remove MULT_EXPR.
19955         * range-op.h (float_table): Remove.
19957 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
19959         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
19960         to range-op-mixed.h
19961         (operator_negate::fold_range): Rename from foperator_negate.
19962         (operator_negate::op1_range): Ditto.
19963         (float_table::float_table): Remove NEGATE_EXPR.
19964         * range-op-mixed.h (class operator_negate): Combined from integer
19965         and float files.
19966         * range-op.cc (op_negate): New object.
19967         (unified_table::unified_table): Add NEGATE_EXPR.
19968         (class operator_negate): Move to range-op-mixed.h.
19969         (integral_table::integral_table): Remove NEGATE_EXPR.
19970         (pointer_table::pointer_table): Remove NEGATE_EXPR.
19972 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
19974         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
19975         to range-op-mixed.h
19976         (operator_minus::fold_range): Rename from foperator_minus.
19977         (operator_minus::op1_range): Ditto.
19978         (operator_minus::op2_range): Ditto.
19979         (operator_minus::rv_fold): Ditto.
19980         (float_table::float_table): Remove MINUS_EXPR.
19981         * range-op-mixed.h (class operator_minus): Combined from integer
19982         and float files.
19983         * range-op.cc (op_minus): New object.
19984         (unified_table::unified_table): Add MINUS_EXPR.
19985         (class operator_minus): Move to range-op-mixed.h.
19986         (integral_table::integral_table): Remove MINUS_EXPR.
19987         (pointer_table::pointer_table): Remove MINUS_EXPR.
19989 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
19991         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
19992         to range-op-mixed.h
19993         (operator_abs::fold_range): Rename from foperator_abs.
19994         (operator_abs::op1_range): Ditto.
19995         (float_table::float_table): Remove ABS_EXPR.
19996         * range-op-mixed.h (class operator_abs): Combined from integer
19997         and float files.
19998         * range-op.cc (op_abs): New object.
19999         (unified_table::unified_table): Add ABS_EXPR.
20000         (class operator_abs): Move to range-op-mixed.h.
20001         (integral_table::integral_table): Remove ABS_EXPR.
20002         (pointer_table::pointer_table): Remove ABS_EXPR.
20004 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20006         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
20007         to range-op-mixed.h
20008         (operator_plus::fold_range): Rename from foperator_plus.
20009         (operator_plus::op1_range): Ditto.
20010         (operator_plus::op2_range): Ditto.
20011         (operator_plus::rv_fold): Ditto.
20012         (float_table::float_table): Remove PLUS_EXPR.
20013         * range-op-mixed.h (class operator_plus): Combined from integer
20014         and float files.
20015         * range-op.cc (op_plus): New object.
20016         (unified_table::unified_table): Add PLUS_EXPR.
20017         (class operator_plus): Move to range-op-mixed.h.
20018         (integral_table::integral_table): Remove PLUS_EXPR.
20019         (pointer_table::pointer_table): Remove PLUS_EXPR.
20021 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20023         * range-op-mixed.h (class operator_cast): Combined from integer
20024         and float files.
20025         * range-op.cc (op_cast): New object.
20026         (unified_table::unified_table): Add op_cast
20027         (class operator_cast): Move to range-op-mixed.h.
20028         (integral_table::integral_table): Remove op_cast
20029         (pointer_table::pointer_table): Remove op_cast.
20031 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20033         * range-op-float.cc (operator_cst::fold_range): New.
20034         * range-op-mixed.h (class operator_cst): Move from integer file.
20035         * range-op.cc (op_cst): New object.
20036         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
20037         (class operator_cst): Move to range-op-mixed.h.
20038         (integral_table::integral_table): Remove op_cst.
20039         (pointer_table::pointer_table): Remove op_cst.
20041 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20043         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
20044         to range-op-mixed.h
20045         (operator_identity::fold_range): Rename from foperator_identity.
20046         (operator_identity::op1_range): Ditto.
20047         (float_table::float_table): Remove fop_identity.
20048         * range-op-mixed.h (class operator_identity): Combined from integer
20049         and float files.
20050         * range-op.cc (op_identity): New object.
20051         (unified_table::unified_table): Add op_identity.
20052         (class operator_identity): Move to range-op-mixed.h.
20053         (integral_table::integral_table): Remove identity.
20054         (pointer_table::pointer_table): Remove identity.
20056 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20058         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
20059         to range-op-mixed.h
20060         (operator_ge::fold_range): Rename from foperator_ge.
20061         (operator_ge::op1_range): Ditto.
20062         (float_table::float_table): Remove GE_EXPR.
20063         * range-op-mixed.h (class operator_ge): Combined from integer
20064         and float files.
20065         * range-op.cc (op_ge): New object.
20066         (unified_table::unified_table): Add GE_EXPR.
20067         (class operator_ge): Move to range-op-mixed.h.
20068         (ge_op1_op2_relation): Fold into
20069         operator_ge::op1_op2_relation.
20070         (integral_table::integral_table): Remove GE_EXPR.
20071         (pointer_table::pointer_table): Remove GE_EXPR.
20072         * range-op.h (ge_op1_op2_relation): Delete.
20074 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20076         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
20077         to range-op-mixed.h
20078         (operator_gt::fold_range): Rename from foperator_gt.
20079         (operator_gt::op1_range): Ditto.
20080         (float_table::float_table): Remove GT_EXPR.
20081         * range-op-mixed.h (class operator_gt): Combined from integer
20082         and float files.
20083         * range-op.cc (op_gt): New object.
20084         (unified_table::unified_table): Add GT_EXPR.
20085         (class operator_gt): Move to range-op-mixed.h.
20086         (gt_op1_op2_relation): Fold into
20087         operator_gt::op1_op2_relation.
20088         (integral_table::integral_table): Remove GT_EXPR.
20089         (pointer_table::pointer_table): Remove GT_EXPR.
20090         * range-op.h (gt_op1_op2_relation): Delete.
20092 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20094         * range-op-float.cc (foperator_le): Remove.  Move prototypes
20095         to range-op-mixed.h
20096         (operator_le::fold_range): Rename from foperator_le.
20097         (operator_le::op1_range): Ditto.
20098         (float_table::float_table): Remove LE_EXPR.
20099         * range-op-mixed.h (class operator_le): Combined from integer
20100         and float files.
20101         * range-op.cc (op_le): New object.
20102         (unified_table::unified_table): Add LE_EXPR.
20103         (class operator_le): Move to range-op-mixed.h.
20104         (le_op1_op2_relation): Fold into
20105         operator_le::op1_op2_relation.
20106         (integral_table::integral_table): Remove LE_EXPR.
20107         (pointer_table::pointer_table): Remove LE_EXPR.
20108         * range-op.h (le_op1_op2_relation): Delete.
20110 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20112         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
20113         to range-op-mixed.h
20114         (operator_lt::fold_range): Rename from foperator_lt.
20115         (operator_lt::op1_range): Ditto.
20116         (float_table::float_table): Remove LT_EXPR.
20117         * range-op-mixed.h (class operator_lt): Combined from integer
20118         and float files.
20119         * range-op.cc (op_lt): New object.
20120         (unified_table::unified_table): Add LT_EXPR.
20121         (class operator_lt): Move to range-op-mixed.h.
20122         (lt_op1_op2_relation): Fold into
20123         operator_lt::op1_op2_relation.
20124         (integral_table::integral_table): Remove LT_EXPR.
20125         (pointer_table::pointer_table): Remove LT_EXPR.
20126         * range-op.h (lt_op1_op2_relation): Delete.
20128 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20130         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
20131         to range-op-mixed.h
20132         (operator_equal::fold_range): Rename from foperator_not_equal.
20133         (operator_equal::op1_range): Ditto.
20134         (float_table::float_table): Remove NE_EXPR.
20135         * range-op-mixed.h (class operator_not_equal): Combined from integer
20136         and float files.
20137         * range-op.cc (op_equal): New object.
20138         (unified_table::unified_table): Add NE_EXPR.
20139         (class operator_not_equal): Move to range-op-mixed.h.
20140         (not_equal_op1_op2_relation): Fold into
20141         operator_not_equal::op1_op2_relation.
20142         (integral_table::integral_table): Remove NE_EXPR.
20143         (pointer_table::pointer_table): Remove NE_EXPR.
20144         * range-op.h (not_equal_op1_op2_relation): Delete.
20146 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20148         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
20149         to range-op-mixed.h
20150         (operator_equal::fold_range): Rename from foperator_equal.
20151         (operator_equal::op1_range): Ditto.
20152         (float_table::float_table): Remove EQ_EXPR.
20153         * range-op-mixed.h (class operator_equal): Combined from integer
20154         and float files.
20155         * range-op.cc (op_equal): New object.
20156         (unified_table::unified_table): Add EQ_EXPR.
20157         (class operator_equal): Move to range-op-mixed.h.
20158         (equal_op1_op2_relation): Fold into
20159         operator_equal::op1_op2_relation.
20160         (integral_table::integral_table): Remove EQ_EXPR.
20161         (pointer_table::pointer_table): Remove EQ_EXPR.
20162         * range-op.h (equal_op1_op2_relation): Delete.
20164 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
20166         * range-op-float.cc (class float_table): Move to header.
20167         (float_table::float_table): Move float only operators to...
20168         (range_op_table::initialize_float_ops): Here.
20169         * range-op-mixed.h: New.
20170         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
20171         to top of file.
20172         (float_tree_table): Moved from range-op-float.cc.
20173         (unified_tree_table): New.
20174         (unified_table::unified_table): New.  Call initialize routines.
20175         (get_op_handler): Check unified table first.
20176         (range_op_handler::range_op_handler): Handle no type constructor.
20177         (integral_table::integral_table): Move integral only operators to...
20178         (range_op_table::initialize_integral_ops): Here.
20179         (pointer_table::pointer_table): Move pointer only operators to...
20180         (range_op_table::initialize_pointer_ops): Here.
20181         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
20182         (get_bool_state): Ditto.
20183         (empty_range_varying): Ditto.
20184         (relop_early_resolve): Ditto.
20185         (class range_op_table): Add new init methods for range types.
20186         (class integral_table): Move declaration to here.
20187         (class pointer_table): Move declaration to here.
20188         (class float_table): Move declaration to here.
20190 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20191             Richard Sandiford <richard.sandiford@arm.com>
20192             Richard Biener  <rguenther@suse.de>
20194         * doc/md.texi: Add SELECT_VL support.
20195         * internal-fn.def (SELECT_VL): Ditto.
20196         * optabs.def (OPTAB_D): Ditto.
20197         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
20198         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
20199         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
20200         (vectorizable_store): Ditto.
20201         (vectorizable_load): Ditto.
20202         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
20204 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
20206         PR ipa/109886
20207         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
20208         type as well.
20210 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
20212         * range-op.cc (range_cast): Move to...
20213         * range-op.h (range_cast): Here and add generic a version.
20215 2023-06-09  Marek Polacek  <polacek@redhat.com>
20217         PR c/39589
20218         PR c++/96868
20219         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
20220         warn about designated initializers in C only.
20222 2023-06-09  Andrew Pinski  <apinski@marvell.com>
20224         PR tree-optimization/97711
20225         PR tree-optimization/110155
20226         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
20227         ((zero_one != 0) ? z <op> y : y): Likewise.
20229 2023-06-09  Andrew Pinski  <apinski@marvell.com>
20231         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
20232         multiply rather than negation/bit_and.
20234 2023-06-09  Andrew Pinski  <apinski@marvell.com>
20236         * match.pd (`X & -Y -> X * Y`): Allow for truncation
20237         and the same type for unsigned types.
20239 2023-06-09  Andrew Pinski  <apinski@marvell.com>
20241         PR tree-optimization/110165
20242         PR tree-optimization/110166
20243         * match.pd (zero_one_valued_p): Don't accept
20244         signed 1-bit integers.
20246 2023-06-09  Richard Biener  <rguenther@suse.de>
20248         * match.pd (two conversions in a row): Use element_precision
20249         to DTRT for VECTOR_TYPE.
20251 2023-06-09  Pan Li  <pan2.li@intel.com>
20253         * config/riscv/riscv.md (enabled): Move to another place, and
20254         add fp_vector_disabled to the cond.
20255         (fp_vector_disabled): New attr defined for disabling fp.
20256         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
20258 2023-06-09  Pan Li  <pan2.li@intel.com>
20260         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
20261         literal to int.
20263 2023-06-09  liuhongt  <hongtao.liu@intel.com>
20265         PR target/110108
20266         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
20267         view_convert_expr mask to signed type when folding pblendvb
20268         builtins.
20270 2023-06-09  liuhongt  <hongtao.liu@intel.com>
20272         PR target/110108
20273         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
20274         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
20275         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
20276         TARGET_64BIT.
20277         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
20278         real codename for __builtin_ia32_pabs{b,w,d}.
20280 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
20282         * gimple-range-op.cc
20283         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
20284         (gimple_range_op_handler::maybe_builtin_call): Adjust.
20285         * gimple-range-op.h (operand1, operand2): Use m_operator.
20286         * range-op.cc (integral_table, pointer_table): Relocate.
20287         (get_op_handler): Rename from get_handler and handle all types.
20288         (range_op_handler::range_op_handler): Relocate.
20289         (range_op_handler::set_op_handler): Relocate and adjust.
20290         (range_op_handler::range_op_handler): Relocate.
20291         (dispatch_trio): New.
20292         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
20293         (range_op_handler::dispatch_kind): New.
20294         (range_op_handler::fold_range): Relocate and Use new dispatch value.
20295         (range_op_handler::op1_range): Ditto.
20296         (range_op_handler::op2_range): Ditto.
20297         (range_op_handler::lhs_op1_relation): Ditto.
20298         (range_op_handler::lhs_op2_relation): Ditto.
20299         (range_op_handler::op1_op2_relation): Ditto.
20300         (range_op_handler::set_op_handler): Use m_operator member.
20301         * range-op.h (range_op_handler::operator bool): Use m_operator.
20302         (range_op_handler::dispatch_kind): New.
20303         (range_op_handler::m_valid): Delete.
20304         (range_op_handler::m_int): Delete
20305         (range_op_handler::m_float): Delete
20306         (range_op_handler::m_operator): New.
20307         (range_op_table::operator[]): Relocate from .cc file.
20308         (range_op_table::set): Ditto.
20309         * value-range.h (class vrange): Make range_op_handler a friend.
20311 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
20313         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
20314         (cfn_pass_through_arg1): Adjust using statemenmt.
20315         (cfn_signbit): Change base class, adjust using statement.
20316         (cfn_copysign): Ditto.
20317         (cfn_sqrt): Ditto.
20318         (cfn_sincos): Ditto.
20319         * range-op-float.cc (fold_range): Change class to range_operator.
20320         (rv_fold): Ditto.
20321         (op1_range): Ditto
20322         (op2_range): Ditto
20323         (lhs_op1_relation): Ditto.
20324         (lhs_op2_relation): Ditto.
20325         (op1_op2_relation): Ditto.
20326         (foperator_*): Ditto.
20327         (class float_table): New.  Inherit from range_op_table.
20328         (floating_tree_table) Change to range_op_table pointer.
20329         (class floating_op_table): Delete.
20330         * range-op.cc (operator_equal): Adjust using statement.
20331         (operator_not_equal): Ditto.
20332         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
20333         (operator_minus, operator_cast): Ditto.
20334         (operator_bitwise_and, pointer_plus_operator): Ditto.
20335         (get_float_handle): Change return type.
20336         * range-op.h (range_operator_float): Delete.  Relocate all methods
20337         into class range_operator.
20338         (range_op_handler::m_float): Change type to range_operator.
20339         (floating_op_table): Delete.
20340         (floating_tree_table): Change type.
20342 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
20344         * range-op.cc (range_operator::fold_range): Call virtual routine.
20345         (range_operator::update_bitmask): New.
20346         (operator_equal::update_bitmask): New.
20347         (operator_not_equal::update_bitmask): New.
20348         (operator_lt::update_bitmask): New.
20349         (operator_le::update_bitmask): New.
20350         (operator_gt::update_bitmask): New.
20351         (operator_ge::update_bitmask): New.
20352         (operator_ge::update_bitmask): New.
20353         (operator_plus::update_bitmask): New.
20354         (operator_minus::update_bitmask): New.
20355         (operator_pointer_diff::update_bitmask): New.
20356         (operator_min::update_bitmask): New.
20357         (operator_max::update_bitmask): New.
20358         (operator_mult::update_bitmask): New.
20359         (operator_div:operator_div):New.
20360         (operator_div::update_bitmask): New.
20361         (operator_div::m_code): New member.
20362         (operator_exact_divide::operator_exact_divide): New constructor.
20363         (operator_lshift::update_bitmask): New.
20364         (operator_rshift::update_bitmask): New.
20365         (operator_bitwise_and::update_bitmask): New.
20366         (operator_bitwise_or::update_bitmask): New.
20367         (operator_bitwise_xor::update_bitmask): New.
20368         (operator_trunc_mod::update_bitmask): New.
20369         (op_ident, op_unknown, op_ptr_min_max): New.
20370         (op_nop, op_convert): Delete.
20371         (op_ssa, op_paren, op_obj_type): Delete.
20372         (op_realpart, op_imagpart): Delete.
20373         (op_ptr_min, op_ptr_max): Delete.
20374         (pointer_plus_operator:update_bitmask): New.
20375         (range_op_table::set): Do not use m_code.
20376         (integral_table::integral_table): Adjust to single instances.
20377         * range-op.h (range_operator::range_operator): Delete.
20378         (range_operator::m_code): Delete.
20379         (range_operator::update_bitmask): New.
20381 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
20383         * range-op-float.cc (range_operator_float::fold_range): Return
20384         NAN of the result type.
20386 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
20388         * optabs.cc (expand_ffs): Add forward declaration.
20389         (expand_doubleword_clz): Rename to ...
20390         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
20391         handle also doubleword CTZ and FFS in addition to CLZ.
20392         (expand_unop): Adjust caller.  Also call it for doubleword
20393         ctz_optab and ffs_optab.
20395 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
20397         PR target/110152
20398         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
20399         n_words == 2 recurse with mmx_ok as first argument rather than false.
20401 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
20403         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
20404         avoid sign extension/undefined behaviour when setting each bit.
20406 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
20407             Uros Bizjak  <ubizjak@gmail.com>
20409         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
20410         Use new x86_stc instruction when the carry flag must be set.
20411         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
20412         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
20413         * config/i386/i386.h (TARGET_SLOW_STC): New define.
20414         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
20415         (x86_stc): New define_insn.
20416         (define_peephole2): Convert x86_stc into alternate implementation
20417         on pentium4 without -Os when a QImode register is available.
20418         (*x86_cmc): New define_insn.
20419         (define_peephole2): Convert *x86_cmc into alternate implementation
20420         on pentium4 without -Os when a QImode register is available.
20421         (*setccc): New define_insn_and_split for a no-op CCCmode move.
20422         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
20423         recognize (and eliminate) the carry flag being copied to itself.
20424         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
20425         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
20427 2023-06-07  Andrew Pinski  <apinski@marvell.com>
20429         * match.pd: Fix comment for the
20430         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
20432 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
20433             Jeff Law   <jlaw@ventanamicro.com>
20435         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
20436         (rotrsi3_sext): Expose generator.
20437         (rotlsi3 pattern): Hide generator.
20438         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
20439         declaration.
20440         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
20441         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
20442         (mulsi3, <optab>si3): Likewise.
20443         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
20444         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
20445         (<u>mulsidi3): Likewise.
20446         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
20447         (mulsi3_extended, <optab>si3_extended): Likewise.
20448         (splitter for shadd feeding divison): Update RTL pattern to account
20449         for changes in how 32 bit ops are expanded for TARGET_64BIT.
20450         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
20452 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
20454         PR target/109725
20455         * config/riscv/riscv.cc (riscv_print_operand): Calculate
20456         memmodel only when it is valid.
20458 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
20460         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
20461         for constant element of a vector.
20463 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
20465         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
20466         instead compare tree_nonzero_bits <= 1U rather than just == 1.
20468 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
20470         PR target/110132
20471         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
20472         New. Use it ...
20473         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
20474         names for builtins.
20475         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
20476         setup if in_lto_p, just like we do for SVE.
20477         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
20478         (__arm_st64b): Delete.
20479         (__arm_st64bv): Delete.
20480         (__arm_st64bv0): Delete.
20482 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
20484         PR target/110100
20485         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
20486         Use input operand for the destination address.
20487         * config/aarch64/aarch64.md (st64b): Fix constraint on address
20488         operand.
20490 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
20492         PR target/110100
20493         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
20494         Replace eight consecutive spaces with tabs.
20495         (aarch64_init_ls64_builtins): Likewise.
20496         (aarch64_expand_builtin_ls64): Likewise.
20497         * config/aarch64/aarch64.md (ld64b): Likewise.
20498         (st64b): Likewise.
20499         (st64bv): Likewise
20500         (st64bv0): Likewise.
20502 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
20504         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
20505         offset table pseudo to a general reg subset.
20507 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20509         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
20510         Rename to...
20511         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
20512         with RTL codes.
20513         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
20514         (aarch64_sqxtun2<mode>_le): Likewise.
20515         (aarch64_sqxtun2<mode>_be): Likewise.
20516         (aarch64_sqxtun2<mode>): Adjust for the above.
20517         (aarch64_sqmovun<mode>): New define_expand.
20518         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
20519         (half_mask): New mode attribute.
20520         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
20521         New predicate.
20523 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20525         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
20526         Reimplement as...
20527         (aarch64_addp<mode>_insn): ... This...
20528         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
20529         (aarch64_addp<mode>): New define_expand.
20531 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20533         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
20534         * config/riscv/riscv-v.cc
20535         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
20536         handling.
20537         (rvv_builder::single_step_npatterns_p): New function.
20538         (rvv_builder::npatterns_all_equal_p): Ditto.
20539         (const_vec_all_in_range_p): Support POLY handling.
20540         (gen_const_vector_dup): Ditto.
20541         (emit_vlmax_gather_insn): Add vrgatherei16.
20542         (emit_vlmax_masked_gather_mu_insn): Ditto.
20543         (expand_const_vector): Add VLA SLP const vector support.
20544         (expand_vec_perm): Support POLY.
20545         (struct expand_vec_perm_d): New struct.
20546         (shuffle_generic_patterns): New function.
20547         (expand_vec_perm_const_1): Ditto.
20548         (expand_vec_perm_const): Ditto.
20549         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
20550         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
20552 2023-06-07  Andrew Pinski  <apinski@marvell.com>
20554         PR middle-end/110117
20555         * expr.cc (expand_single_bit_test): Handle
20556         const_int from expand_expr.
20558 2023-06-07  Andrew Pinski  <apinski@marvell.com>
20560         * expr.cc (do_store_flag): Rearrange the
20561         TER code so that it overrides the nonzero bits
20562         info if we had `a & POW2`.
20564 2023-06-07  Andrew Pinski  <apinski@marvell.com>
20566         PR tree-optimization/110134
20567         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
20568         types.
20569         (-A CMP CST -> B CMP (-CST)): Likewise.
20571 2023-06-07  Andrew Pinski  <apinski@marvell.com>
20573         PR tree-optimization/89263
20574         PR tree-optimization/99069
20575         PR tree-optimization/20083
20576         PR tree-optimization/94898
20577         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
20578         one of the operands are constant.
20580 2023-06-07  Andrew Pinski  <apinski@marvell.com>
20582         * match.pd (zero_one_valued_p): Match 0 integer constant
20583         too.
20585 2023-06-07  Pan Li  <pan2.li@intel.com>
20587         * config/riscv/riscv-vector-builtins-types.def
20588         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
20589         (vfloat32m1_t): Ditto.
20590         (vfloat32m2_t): Ditto.
20591         (vfloat32m4_t): Ditto.
20592         (vfloat32m8_t): Ditto.
20593         (vint16mf4_t): Ditto.
20594         (vint16mf2_t): Ditto.
20595         (vint16m1_t): Ditto.
20596         (vint16m2_t): Ditto.
20597         (vint16m4_t): Ditto.
20598         (vint16m8_t): Ditto.
20599         (vuint16mf4_t): Ditto.
20600         (vuint16mf2_t): Ditto.
20601         (vuint16m1_t): Ditto.
20602         (vuint16m2_t): Ditto.
20603         (vuint16m4_t): Ditto.
20604         (vuint16m8_t): Ditto.
20605         (vint32mf2_t): Ditto.
20606         (vint32m1_t): Ditto.
20607         (vint32m2_t): Ditto.
20608         (vint32m4_t): Ditto.
20609         (vint32m8_t): Ditto.
20610         (vuint32mf2_t): Ditto.
20611         (vuint32m1_t): Ditto.
20612         (vuint32m2_t): Ditto.
20613         (vuint32m4_t): Ditto.
20614         (vuint32m8_t): Ditto.
20616 2023-06-07  Jason Merrill  <jason@redhat.com>
20618         PR c++/58487
20619         * doc/invoke.texi: Document it.
20621 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
20623         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
20624         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
20625         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
20626         NOT (BITREVERSE x) as BITREVERSE (NOT x).
20627         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
20628         Optimize PARITY (BITREVERSE x) as PARITY x.
20629         Optimize BITREVERSE (BITREVERSE x) as x.
20630         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
20631         BITREVERSE of a constant integer at compile-time.
20632         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
20633         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
20634         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
20635         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
20636         Optimize COPYSIGN (x, ABS y) as ABS x.
20637         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
20638         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
20639         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
20640         arguments at compile-time.
20642 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
20644         * rtl.h (function_invariant_p): Change return type from int to bool.
20645         * reload1.cc (function_invariant_p): Change return type from
20646         int to bool and adjust function body accordingly.
20648 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20650         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
20651         (*single_<optab>mult_plus<mode>): Ditto.
20652         (*double_<optab>mult_plus<mode>): Ditto.
20653         (*sign_zero_extend_fma): Ditto.
20654         (*zero_sign_extend_fma): Ditto.
20655         * config/riscv/riscv-protos.h (enum insn_type): New enum.
20657 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
20658             Tobias Burnus  <tobias@codesourcery.com>
20660         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
20661         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
20662         set.
20663         (omp_get_attachment): Handle map clauses with 'present' modifier.
20664         (omp_group_base): Likewise.
20665         (gimplify_scan_omp_clauses): Reorder present maps to come first.
20666         Set GOVD flags for present defaultmaps.
20667         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
20668         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
20669         clauses.
20670         (lower_omp_target): Handle map clauses with 'present' modifier.
20671         Handle 'to' and 'from' clauses with 'present'.
20672         * tree-core.h (enum omp_clause_defaultmap_kind): Add
20673         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
20674         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
20675         'from' clauses with 'present' modifier.  Handle present defaultmap.
20676         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
20678 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
20680         * config/rs6000/genfusion.pl: Delete some dead code.
20682 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
20684         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
20685         split out from...
20686         (gen_ld_cmpi_p10): ... this.
20688 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
20690         PR target/106907
20691         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
20692         duplicate expression.
20694 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20696         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
20697         Handle unsigned reduc_plus_scal_ builtins.
20698         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
20699         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
20700         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
20701         __builtin_aarch64_reduc_plus_scal_v2di.
20702         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
20704 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20706         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
20707         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
20708         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
20710 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20712         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
20713         (aarch64_shrn<mode>_insn_be): Delete.
20714         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
20715         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
20716         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
20717         (aarch64_rshrn<mode>_insn_le): Delete.
20718         (aarch64_rshrn<mode>_insn_be): Delete.
20719         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
20720         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
20722 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20724         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
20725         Define prototype.
20726         (aarch64_pars_overlap_p): Likewise.
20727         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
20728         Express in terms of UNSPEC_ADDV.
20729         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
20730         (*aarch64_<su>addlv<mode>_reduction): Define.
20731         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
20732         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
20733         (aarch64_pars_overlap_p): Likewise.
20734         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
20735         (VQUADW): New mode attribute.
20736         (VWIDE2X_S): Likewise.
20737         (USADDLV): Delete.
20738         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
20739         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
20741 2023-06-06  Richard Biener  <rguenther@suse.de>
20743         PR middle-end/110055
20744         * gimplify.cc (gimplify_target_expr): Do not emit
20745         CLOBBERs for variables which have static storage duration
20746         after gimplifying their initializers.
20748 2023-06-06  Richard Biener  <rguenther@suse.de>
20750         PR tree-optimization/109143
20751         * tree-ssa-structalias.cc (solution_set_expand): Avoid
20752         one bitmap iteration and optimize bit range setting.
20754 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
20756         PR bootstrap/110120
20757         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
20758         XVECEXP, not XEXP, to access first item of a PARALLEL.
20760 2023-06-06  Pan Li  <pan2.li@intel.com>
20762         * config/riscv/riscv-vector-builtins-types.def
20763         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
20764         (vfloat16mf2_t): Likewise.
20765         (vfloat16m1_t): Likewise.
20766         (vfloat16m2_t): Likewise.
20767         (vfloat16m4_t): Likewise.
20768         (vfloat16m8_t): Likewise.
20769         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
20770         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
20772 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
20774         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
20775         for cfi reg/mem machmode
20776         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
20778 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
20780         * config/riscv/vector-iterators.md:
20781         Fix 'REQUIREMENT' for machine_mode 'MODE'.
20782         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
20783         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
20784         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
20786 2023-06-06  Pan Li  <pan2.li@intel.com>
20788         * config/riscv/vector-iterators.md: Fix typo in mode attr.
20790 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20791             Joel Hutton  <joel.hutton@arm.com>
20793         * doc/generic.texi: Remove old tree codes.
20794         * expr.cc (expand_expr_real_2): Remove old tree code cases.
20795         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
20796         * optabs-tree.cc (optab_for_tree_code): Likewise.
20797         (supportable_half_widening_operation): Likewise.
20798         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
20799         * tree-inline.cc (estimate_operator_cost): Likewise.
20800         (op_symbol_code): Likewise.
20801         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
20802         (vect_analyze_data_ref_accesses): Likewise.
20803         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
20804         * cfgexpand.cc (expand_debug_expr): Likewise.
20805         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
20806         (supportable_widening_operation): Likewise.
20807         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
20808         Likewise.
20809         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
20810         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
20811         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
20812         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
20813         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
20814         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
20815         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
20816         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
20818 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20819             Joel Hutton  <joel.hutton@arm.com>
20820             Tamar Christina  <tamar.christina@arm.com>
20822         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
20823         this ...
20824         (vec_widen_<su>add_lo_<mode>): ... to this.
20825         (vec_widen_<su>addl_hi_<mode>): Rename this ...
20826         (vec_widen_<su>add_hi_<mode>): ... to this.
20827         (vec_widen_<su>subl_lo_<mode>): Rename this ...
20828         (vec_widen_<su>sub_lo_<mode>): ... to this.
20829         (vec_widen_<su>subl_hi_<mode>): Rename this ...
20830         (vec_widen_<su>sub_hi_<mode>): ...to this.
20831         * doc/generic.texi: Document new IFN codes.
20832         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
20833         (commutative_binary_fn_p): Add widen_plus fn's.
20834         (widening_fn_p): New function.
20835         (narrowing_fn_p): New function.
20836         (direct_internal_fn_optab): Change visibility.
20837         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
20838         internal_fn that expands into multiple internal_fns for widening.
20839         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
20840         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
20841         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
20842         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
20843         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
20844         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
20845         (lookup_hilo_internal_fn): Likewise.
20846         (widening_fn_p): Likewise.
20847         (Narrowing_fn_p): Likewise.
20848         * optabs.cc (commutative_optab_p): Add widening plus optabs.
20849         * optabs.def (OPTAB_D): Define widen add, sub optabs.
20850         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
20851         patterns with a hi/lo or even/odd split.
20852         (vect_recog_sad_pattern): Refactor to use new IFN codes.
20853         (vect_recog_widen_plus_pattern): Likewise.
20854         (vect_recog_widen_minus_pattern): Likewise.
20855         (vect_recog_average_pattern): Likewise.
20856         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
20857         _HILO IFNs.
20858         (supportable_widening_operation): Likewise.
20859         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
20861 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20862             Joel Hutton  <joel.hutton@arm.com>
20864         * tree-vect-patterns.cc: Add include for gimple-iterator.
20865         (vect_recog_widen_op_pattern): Refactor to use code_helper.
20866         (vect_gimple_build): New function.
20867         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
20868         code_helper.
20869         (vectorizable_call): Likewise.
20870         (vect_gen_widened_results_half): Likewise.
20871         (vect_create_vectorized_demotion_stmts): Likewise.
20872         (vect_create_vectorized_promotion_stmts): Likewise.
20873         (vect_create_half_widening_stmts): Likewise.
20874         (vectorizable_conversion): Likewise.
20875         (supportable_widening_operation): Likewise.
20876         (supportable_narrowing_operation): Likewise.
20877         * tree-vectorizer.h (supportable_widening_operation): Change
20878         prototype to use code_helper.
20879         (supportable_narrowing_operation): Likewise.
20880         (vect_gimple_build): New function prototype.
20881         * tree.h (code_helper::safe_as_tree_code): New function.
20882         (code_helper::safe_as_fn_code): New function.
20884 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
20886         * wide-int.cc (wi::bitreverse_large): New function implementing
20887         bit reversal of an integer.
20888         * wide-int.h (wi::bitreverse): New (template) function prototype.
20889         (bitreverse_large): Prototype helper function/implementation.
20890         (wi::bitreverse): New template wrapper around bitreverse_large.
20892 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
20894         * rtl.h (print_rtl_single): Change return type from int to void.
20895         (print_rtl_single_with_indent): Ditto.
20896         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
20897         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
20898         (rtx_writer::print_rtx_operand_code_0): Ditto.
20899         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
20900         (rtx_writer::print_rtx_operand_code_i): Ditto.
20901         (rtx_writer::print_rtx_operand_code_u): Ditto.
20902         (rtx_writer::print_rtx_operand): Ditto.
20903         (rtx_writer::print_rtx): Ditto.
20904         (rtx_writer::finish_directive): Ditto.
20905         (print_rtl_single): Change return type from int to void
20906         and adjust function body accordingly.
20907         (rtx_writer::print_rtl_single_with_indent): Ditto.
20909 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
20911         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
20912         (reg_class_subset_p): Ditto.
20913         * reginfo.cc (reg_classes_intersect_p): Ditto.
20914         (reg_class_subset_p): Ditto.
20916 2023-06-05  Pan Li  <pan2.li@intel.com>
20918         * config/riscv/riscv-vector-builtins-types.def
20919         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
20920         (vfloat32m1_t): Ditto.
20921         (vfloat32m2_t): Ditto.
20922         (vfloat32m4_t): Ditto.
20923         (vfloat32m8_t): Ditto.
20924         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
20925         (vint16mf2_t): Ditto.
20926         (vint16m1_t): Ditto.
20927         (vint16m2_t): Ditto.
20928         (vint16m4_t): Ditto.
20929         (vint16m8_t): Ditto.
20930         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
20931         (vuint16mf2_t): Ditto.
20932         (vuint16m1_t): Ditto.
20933         (vuint16m2_t): Ditto.
20934         (vuint16m4_t): Ditto.
20935         (vuint16m8_t): Ditto.
20936         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
20937         (vint32m1_t): Ditto.
20938         (vint32m2_t): Ditto.
20939         (vint32m4_t): Ditto.
20940         (vint32m8_t): Ditto.
20941         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
20942         (vuint32m1_t): Ditto.
20943         (vuint32m2_t): Ditto.
20944         (vuint32m4_t): Ditto.
20945         (vuint32m8_t): Ditto.
20946         * config/riscv/vector-iterators.md: Add FP=16 support for V,
20947         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
20949 2023-06-05  Andrew Pinski  <apinski@marvell.com>
20951         PR bootstrap/110085
20952         * Makefile.in (clean): Remove the removing of
20953         MULTILIB_DIR/MULTILIB_OPTIONS directories.
20955 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
20957         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
20958         prototype.
20959         * config/mips/mips.cc (speculation_barrier_libfunc): New static
20960         variable.
20961         (mips_init_libfuncs): Initialize it.
20962         (mips_emit_speculation_barrier): New function.
20963         * config/mips/mips.md (speculation_barrier): Call
20964         mips_emit_speculation_barrier.
20966 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20968         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
20969         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
20970         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
20971         (rvv_builder::get_merged_repeating_sequence): Ditto.
20972         (rvv_builder::get_merge_scalar_mask): Ditto.
20973         (emit_scalar_move_insn): Ditto.
20974         (emit_vlmax_integer_move_insn): Ditto.
20975         (emit_nonvlmax_integer_move_insn): Ditto.
20976         (emit_vlmax_gather_insn): Ditto.
20977         (emit_vlmax_masked_gather_mu_insn): Ditto.
20978         (get_repeating_sequence_dup_machine_mode): Ditto.
20980 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20982         * config/riscv/autovec.md: Split arguments.
20983         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
20984         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
20986 2023-06-04  Andrew Pinski  <apinski@marvell.com>
20988         * expr.cc (do_store_flag): Improve for single bit testing
20989         not against zero but against that single bit.
20991 2023-06-04  Andrew Pinski  <apinski@marvell.com>
20993         * expr.cc (do_store_flag): Extend the one bit checking case
20994         to handle the case where we don't have an and but rather still
20995         one bit is known to be non-zero.
20997 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
20999         * config/h8300/constraints.md (Zz): Make this a normal
21000         constraint.
21001         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
21002         * config/h8300/logical.md (H8/SX bit patterns): Remove.
21004 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21006         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
21007         New insn_and_split patterns.
21009 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21011         PR target/110109
21012         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
21013         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
21014         (@vlmul_extx4<mode>): Ditto.
21015         (@vlmul_extx8<mode>): Ditto.
21016         (@vlmul_extx16<mode>): Ditto.
21017         (@vlmul_extx32<mode>): Ditto.
21018         (@vlmul_extx64<mode>): Ditto.
21019         (*vlmul_extx2<mode>): Ditto.
21020         (*vlmul_extx4<mode>): Ditto.
21021         (*vlmul_extx8<mode>): Ditto.
21022         (*vlmul_extx16<mode>): Ditto.
21023         (*vlmul_extx32<mode>): Ditto.
21024         (*vlmul_extx64<mode>): Ditto.
21026 2023-06-04  Pan Li  <pan2.li@intel.com>
21028         * config/riscv/riscv-vector-builtins-types.def
21029         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
21030         (vfloat32m1_t): Likewise.
21031         (vfloat32m2_t): Likewise.
21032         (vfloat32m4_t): Likewise.
21033         (vfloat32m8_t): Likewise.
21034         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
21035         * config/riscv/vector-iterators.md: Add single to half machine
21036         mode conversion.
21038 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21040         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
21041         (*n<optab><mode>): Ditto.
21042         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
21043         (*n<optab><mode>): Ditto.
21044         * config/riscv/vector.md: Ditto.
21046 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
21048         PR target/110083
21049         * config/i386/i386-features.cc (scalar_chain::convert_compare):
21050         Update or delete REG_EQUAL notes, converting CONST_INT and
21051         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
21053 2023-06-04  Jason Merrill  <jason@redhat.com>
21055         PR c++/97720
21056         * tree-eh.cc (lower_resx): Pass the exception pointer to the
21057         failure_decl.
21058         * except.h: Tweak comment.
21060 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
21062         * postreload.cc (move2add_use_add2_insn): Handle
21063         trivial single_sets.  Rename variable PAT to SET.
21064         (move2add_use_add3_insn, reload_cse_move2add): Similar.
21066 2023-06-04  Pan Li  <pan2.li@intel.com>
21068         * config/riscv/riscv-vector-builtins-types.def
21069         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
21070         (vfloat16mf2_t): Likewise.
21071         (vfloat16m1_t): Likewise.
21072         (vfloat16m2_t): Likewise.
21073         (vfloat16m4_t): Likewise.
21074         (vfloat16m8_t): Likewise.
21075         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
21076         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
21077         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
21078         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
21079         vlmul and ratio.
21081 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
21083         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
21084         correct offset.
21086 2023-06-03  Die Li  <lidie@eswincomputing.com>
21088         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
21090 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21092         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
21094 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21096         * config/riscv/vector.md: Add vector-opt.md.
21097         * config/riscv/autovec-opt.md: New file.
21099 2023-06-03  liuhongt  <hongtao.liu@intel.com>
21101         PR tree-optimization/110067
21102         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
21103         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
21105 2023-06-03  liuhongt  <hongtao.liu@intel.com>
21107         PR target/92658
21108         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
21109         (truncv2si<mode>2): Ditto.
21111 2023-06-02  Andrew Pinski  <apinski@marvell.com>
21113         PR rtl-optimization/102733
21114         * dse.cc (store_info): Add addrspace field.
21115         (record_store): Record the address space
21116         and check to make sure they are the same.
21118 2023-06-02  Andrew Pinski  <apinski@marvell.com>
21120         PR rtl-optimization/110042
21121         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
21122         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
21124 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
21126         PR target/110044
21127         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
21128         Make sure that we do not have a cap on field alignment before altering
21129         the struct layout based on the type alignment of the first entry.
21131 2023-06-02  David Faust  <david.faust@oracle.com>
21133         PR debug/110073
21134         * btfout.cc (btf_absolute_func_id): New function.
21135         (btf_asm_func_type): Call it here.  Change index parameter from
21136         size_t to ctf_id_t.  Use PRIu64 formatter.
21138 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
21140         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
21141         (btf_asm_datasec_type): Likewise.
21143 2023-06-02  Carl Love  <cel@us.ibm.com>
21145         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
21146         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
21148 2023-06-02  Jason Merrill  <jason@redhat.com>
21150         PR c++/110070
21151         PR c++/105838
21152         * tree.h (DECL_MERGEABLE): New.
21153         * tree-core.h (struct tree_decl_common): Mention it.
21154         * gimplify.cc (gimplify_init_constructor): Check it.
21155         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
21156         * varasm.cc (categorize_decl_for_section): Likewise.
21158 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
21160         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
21161         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
21162         (stack_regs_mentioned_p): Change return type from int to bool
21163         and adjust function body accordingly.
21164         (stack_regs_mentioned): Ditto.
21165         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
21166         variable to bool.
21167         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
21168         (swap_rtx_condition_1): Change return type from int to bool
21169         and adjust function body accordingly.  Change "r" variable to bool.
21170         (swap_rtx_condition): Change return type from int to bool
21171         and adjust function body accordingly.
21172         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
21173         (subst_stack_regs): Ditto.
21174         (convert_regs_entry): Change return type from int to bool and adjust
21175         function body accordingly.  Change "inserted" variable to bool.
21176         (convert_regs_1): Recode handling of control_flow_insn_deleted.
21177         (convert_regs_2): Recode handling of cfg_altered.
21178         (convert_regs): Ditto.  Change "inserted" variable to bool.
21180 2023-06-02  Jason Merrill  <jason@redhat.com>
21182         PR c++/95226
21183         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
21184         (initializer_constant_valid_p_1): Compare float precision.
21186 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
21188         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
21189         semantics.
21191 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21193         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
21194         (vect_set_loop_condition_partial_vectors): Ditto.
21196 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
21198         PR target/110088
21199         * config/avr/avr.md: Add an RTL peephole to optimize operations on
21200         non-LD_REGS after a move from LD_REGS.
21201         (piaop): New code iterator.
21203 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
21205         PR testsuite/66005
21206         * doc/install.texi: Document (optional) Perl usage for parallel
21207         testing of libgomp.
21209 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
21211         PR bootstrap/82856
21212         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
21213         later)".
21215 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21216             KuanLin Chen  <best124612@gmail.com>
21218         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
21219         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
21221 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21223         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
21225 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21227         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
21229 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21231         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
21232         __RISCV_ prefix.
21233         (DEF_RVV_FRM_ENUM): Ditto.
21235 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21237         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
21238         intrinsic API expander
21239         * config/riscv/vector.md
21240         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
21241         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
21242         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
21244 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21246         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
21247         * config/riscv/predicates.md (vector_perm_operand): New predicate.
21248         * config/riscv/riscv-protos.h (enum insn_type): New enum.
21249         (expand_vec_perm): New function.
21250         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
21251         (gen_const_vector_dup): Ditto.
21252         (emit_vlmax_gather_insn): Ditto.
21253         (emit_vlmax_masked_gather_mu_insn): Ditto.
21254         (expand_vec_perm): Ditto.
21256 2023-06-01  Jason Merrill  <jason@redhat.com>
21258         * doc/invoke.texi (-Wpedantic): Improve clarity.
21260 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
21262         * rtl.h (exp_equiv_p): Change return type from int to bool.
21263         * cse.cc (mention_regs): Change return type from int to bool
21264         and adjust function body accordingly.
21265         (exp_equiv_p): Ditto.
21266         (insert_regs): Ditto. Change "modified" function argument to bool
21267         and update usage accordingly.
21268         (record_jump_cond): Remove always zero "reversed_nonequality"
21269         function argument and update usage accordingly.
21270         (fold_rtx): Change "changed" variable to bool.
21271         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
21272         (is_dead_reg): Change return type from int to bool.
21274 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21276         * config/xtensa/xtensa.md (adddi3, subdi3):
21277         New RTL generation patterns implemented according to the instruc-
21278         tion idioms described in the Xtensa ISA reference manual (p. 600).
21280 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
21281             Uros Bizjak  <ubizjak@gmail.com>
21283         PR target/109973
21284         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
21285         CODE_for_sse4_1_ptestzv2di.
21286         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
21287         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
21288         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
21289         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
21290         when expanding UNSPEC_PTEST to compare against zero.
21291         * config/i386/i386-features.cc (scalar_chain::convert_compare):
21292         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
21293         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
21294         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
21295         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
21296         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
21297         check for suitable matching modes for the UNSPEC_PTEST pattern.
21298         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
21299         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
21300         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
21301         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
21302         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
21303         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
21304         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
21305         current behavior.
21306         (*ptest<mode>_and): Specify CCZ to only perform this optimization
21307         when only the Z flag is required.
21309 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
21311         PR target/109954
21312         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
21314 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21316         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
21317         Add =r,m and =r,m alternatives.
21318         (load_pair<DREG:mode><DREG2:mode>): Likewise.
21319         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
21321 2023-06-01  Pan Li  <pan2.li@intel.com>
21323         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
21324         and zvfh.
21325         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
21326         (main): Disable FP16 tuple.
21327         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
21328         (TARGET_VECTOR_ELEN_FP_16): Ditto.
21329         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
21330         Add FP16.
21331         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
21332         (vfloat16mf2_t): Ditto.
21333         (vfloat16m1_t): Ditto.
21334         (vfloat16m2_t): Ditto.
21335         (vfloat16m4_t): Ditto.
21336         (vfloat16m8_t): Ditto.
21337         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
21338         New macro.
21339         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
21340         machine mode based on TARGET_VECTOR_ELEN_FP_16.
21342 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21344         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
21345         (DEF_RVV_FRM_ENUM): New macro.
21346         (handle_pragma_vector): Add FRM enum
21347         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
21348         (RNE): Ditto.
21349         (RTZ): Ditto.
21350         (RDN): Ditto.
21351         (RUP): Ditto.
21352         (RMM): Ditto.
21354 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
21355             Richard Sandiford  <richard.sandiford@arm.com>
21357         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
21358         Update call to wi::bswap.
21359         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
21360         Update call to wi::bswap.
21361         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
21362         Update calls to wi::bswap.
21363         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
21364         (wi::bswap_large): New function, with revised API.
21365         * wide-int.h (wi::bswap): New (template) function prototype.
21366         (wide_int_storage::bswap): Remove method.
21367         (sext_large, zext_large): Consistent indentation/line wrapping.
21368         (bswap_large): Prototype helper function containing implementation.
21369         (wi::bswap): New template wrapper around bswap_large.
21371 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21373         PR target/99195
21374         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
21375         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
21376         (usdot_prod<vsi2qi>): Rename to...
21377         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
21378         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
21379         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
21380         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
21381         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
21382         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
21383         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
21384         ... This.
21386 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21388         PR target/99195
21389         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
21390         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
21391         (aarch64_sq<r>dmulh_n<mode>): Rename to...
21392         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
21393         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
21394         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
21395         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
21396         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
21397         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
21398         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
21399         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
21400         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
21401         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
21402         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
21404 2023-05-31  David Faust  <david.faust@oracle.com>
21406         * btfout.cc (btf_kind_names): New.
21407         (btf_kind_name): New.
21408         (btf_absolute_var_id): New utility function.
21409         (btf_relative_var_id): Likewise.
21410         (btf_relative_func_id): Likewise.
21411         (btf_absolute_datasec_id): Likewise.
21412         (btf_asm_type_ref): New.
21413         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
21414         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
21415         (btf_asm_varent): Likewise.
21416         (btf_asm_func_arg): Likewise.
21417         (btf_asm_datasec_entry): Likewise.
21418         (btf_asm_datasec_type): Likewise.
21419         (btf_asm_func_type): Likewise. Add index parameter.
21420         (btf_asm_enum_const): Likewise.
21421         (btf_asm_sou_member): Likewise.
21422         (output_btf_vars): Update btf_asm_* call accordingly.
21423         (output_asm_btf_sou_fields): Likewise.
21424         (output_asm_btf_enum_list): Likewise.
21425         (output_asm_btf_func_args_list): Likewise.
21426         (output_asm_btf_vlen_bytes): Likewise.
21427         (output_btf_func_types): Add ctf_container_ref parameter.
21428         Pass it to btf_asm_func_type.
21429         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
21430         (btf_output): Update output_btf_func_types call similarly.
21432 2023-05-31  David Faust  <david.faust@oracle.com>
21434         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
21435         and BTF_KIND_FWD which do not use the size/type field at all.
21437 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
21439         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
21440         (active_insn_p): Ditto.
21441         (in_sequence_p): Ditto.
21442         (unshare_all_rtl): Change return type from int to void.
21443         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
21444         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
21445         and adjust function body accordingly.
21446         (mem_expr_equal_p): Ditto.
21447         (unshare_all_rtl): Change return type from int to void
21448         and adjust function body accordingly.
21449         (verify_rtx_sharing): Remove unneeded return.
21450         (active_insn_p): Change return type from int to bool
21451         and adjust function body accordingly.
21452         (in_sequence_p): Ditto.
21454 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
21456         * rtl.h (true_dependence): Change return type from int to bool.
21457         (canon_true_dependence): Ditto.
21458         (read_dependence): Ditto.
21459         (anti_dependence): Ditto.
21460         (canon_anti_dependence): Ditto.
21461         (output_dependence): Ditto.
21462         (canon_output_dependence): Ditto.
21463         (may_alias_p): Ditto.
21464         * alias.h (alias_sets_conflict_p): Ditto.
21465         (alias_sets_must_conflict_p): Ditto.
21466         (objects_must_conflict_p): Ditto.
21467         (nonoverlapping_memrefs_p): Ditto.
21468         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
21469         (record_set): Ditto.
21470         (base_alias_check): Ditto.
21471         (find_base_value): Ditto.
21472         (mems_in_disjoint_alias_sets_p): Ditto.
21473         (get_alias_set_entry): Ditto.
21474         (decl_for_component_ref): Ditto.
21475         (write_dependence_p): Ditto.
21476         (memory_modified_1): Ditto.
21477         (mems_in_disjoint_alias_set_p): Change return type from int to bool
21478         and adjust function body accordingly.
21479         (alias_sets_conflict_p): Ditto.
21480         (alias_sets_must_conflict_p): Ditto.
21481         (objects_must_conflict_p): Ditto.
21482         (rtx_equal_for_memref_p): Ditto.
21483         (base_alias_check): Ditto.
21484         (read_dependence): Ditto.
21485         (nonoverlapping_memrefs_p): Ditto.
21486         (true_dependence_1): Ditto.
21487         (true_dependence): Ditto.
21488         (canon_true_dependence): Ditto.
21489         (write_dependence_p): Ditto.
21490         (anti_dependence): Ditto.
21491         (canon_anti_dependence): Ditto.
21492         (output_dependence): Ditto.
21493         (canon_output_dependence): Ditto.
21494         (may_alias_p): Ditto.
21495         (init_alias_analysis): Change "changed" variable to bool.
21497 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21499         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
21500         expand into define_insn_and_split.
21502 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21504         * config/riscv/vector.md: Remove FRM.
21506 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21508         * config/riscv/vector.md: Remove FRM.
21510 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21512         * config/riscv/vector.md: Remove FRM.
21514 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
21516         PR target/110039
21517         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
21518         pattern.
21520 2023-05-31  Richard Biener  <rguenther@suse.de>
21522         PR ipa/109983
21523         PR tree-optimization/109143
21524         * tree-ssa-structalias.cc (struct topo_info): Remove.
21525         (init_topo_info): Likewise.
21526         (free_topo_info): Likewise.
21527         (compute_topo_order): Simplify API, put the component
21528         with ESCAPED last so it's processed first.
21529         (topo_visit): Adjust.
21530         (solve_graph): Likewise.
21532 2023-05-31  Richard Biener  <rguenther@suse.de>
21534         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
21535         New.
21536         (add_graph_edge): Count redundant edges we avoid to create.
21537         (dump_sa_stats): Dump them.
21538         (ipa_pta_execute): Do not dump generating constraints when
21539         we are not dumping them.
21541 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21543         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
21544         output template to avoid explicit switch on which_alternative.
21545         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
21546         (and<mode>3): Likewise.
21547         (ior<mode>3): Likewise.
21548         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
21550 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
21552         * config/xtensa/predicates.md (xtensa_bit_join_operator):
21553         New predicate.
21554         * config/xtensa/xtensa.md (ior_op): Remove.
21555         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
21556         insn_and_split pattern of the same name to express and capture
21557         the bit-combining operation with both sides swapped.
21558         In addition, replace use of code iterator with new operator
21559         predicate.
21560         (*shlrd_const, *shlrd_per_byte):
21561         Likewise regarding the code iterator.
21563 2023-05-31  Cui, Lili  <lili.cui@intel.com>
21565         PR tree-optimization/110038
21566         * params.opt: Add a limit on tree-reassoc-width.
21567         * tree-ssa-reassoc.cc
21568         (rewrite_expr_tree_parallel): Add width limit.
21570 2023-05-31  Pan Li  <pan2.li@intel.com>
21572         * common/config/riscv/riscv-common.cc:
21573         (riscv_implied_info): Add zvfh item.
21574         (riscv_ext_version_table): Ditto.
21575         (riscv_ext_flag_table): Ditto.
21576         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
21577         (TARGET_ZVFH): Ditto.
21579 2023-05-30  liuhongt  <hongtao.liu@intel.com>
21581         PR tree-optimization/108804
21582         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
21583         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
21584         Add new parameter narrow_src_p.
21585         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
21586         vectorization by truncating to lower precision.
21587         * tree-vectorizer.h (vect_get_range_info): New declare.
21589 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
21591         * lra-int.h (lra_update_sp_offset): Add the prototype.
21592         * lra.cc (setup_sp_offset): Change the return type.  Use
21593         lra_update_sp_offset.
21594         * lra-eliminations.cc (lra_update_sp_offset): New function.
21595         (lra_process_new_insns): Push the current insn to reprocess if the
21596         input reload changes sp offset.
21598 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
21600         PR target/110041
21601         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
21602         Fix misleading identation.
21604 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
21606         * rtl.h (comparison_dominates_p): Change return type from int to bool.
21607         (condjump_p): Ditto.
21608         (any_condjump_p): Ditto.
21609         (any_uncondjump_p): Ditto.
21610         (simplejump_p): Ditto.
21611         (returnjump_p): Ditto.
21612         (eh_returnjump_p): Ditto.
21613         (onlyjump_p): Ditto.
21614         (invert_jump_1): Ditto.
21615         (invert_jump): Ditto.
21616         (rtx_renumbered_equal_p): Ditto.
21617         (redirect_jump_1): Ditto.
21618         (redirect_jump): Ditto.
21619         (condjump_in_parallel_p): Ditto.
21620         * jump.cc (invert_exp_1): Adjust forward declaration.
21621         (comparison_dominates_p): Change return type from int to bool
21622         and adjust function body accordingly.
21623         (simplejump_p): Ditto.
21624         (condjump_p): Ditto.
21625         (condjump_in_parallel_p): Ditto.
21626         (any_uncondjump_p): Ditto.
21627         (any_condjump_p): Ditto.
21628         (returnjump_p): Ditto.
21629         (eh_returnjump_p): Ditto.
21630         (onlyjump_p): Ditto.
21631         (redirect_jump_1): Ditto.
21632         (redirect_jump): Ditto.
21633         (invert_exp_1): Ditto.
21634         (invert_jump_1): Ditto.
21635         (invert_jump): Ditto.
21636         (rtx_renumbered_equal_p): Ditto.
21638 2023-05-30  Andrew Pinski  <apinski@marvell.com>
21640         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
21641         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
21642         Add ne as a possible cmp.
21643         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
21645 2023-05-30  Andrew Pinski  <apinski@marvell.com>
21647         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
21648         pattern.
21650 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
21652         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
21653         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
21654         (and (extend X) C) as (zero_extend (and X C)), to also optimize
21655         modes wider than HOST_WIDE_INT.
21657 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
21659         PR target/107172
21660         * simplify-rtx.cc (simplify_const_relational_operation): Return
21661         early if we have a MODE_CC comparison that isn't a COMPARE against
21662         const0_rtx.
21664 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
21666         * config/riscv/riscv.cc (riscv_const_insns): Allow
21667         const_vec_duplicates.
21669 2023-05-30  liuhongt  <hongtao.liu@intel.com>
21671         PR middle-end/108938
21672         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
21673         function, cut from original find_bswap_or_nop function.
21674         (find_bswap_or_nop): Add a new parameter, detect bswap +
21675         rotate and save rotate result in the new parameter.
21676         (bswap_replace): Add a new parameter to indicate rotate and
21677         generate rotate stmt if needed.
21678         (maybe_optimize_vector_constructor): Adjust for new rotate
21679         parameter in the upper 2 functions.
21680         (pass_optimize_bswap::execute): Ditto.
21681         (imm_store_chain_info::output_merged_store): Ditto.
21683 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21685         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
21686         (aarch64_<su>adalp<mode>): New define_expand.
21687         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
21688         (aarch64_<su>addlp<mode>): Convert to define_expand.
21689         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
21690         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
21691         (ADALP): Likewise.
21692         (USADDLP): Likewise.
21693         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
21695 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21697         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
21698         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
21699         srhadd, urhadd builtin codes for standard optab ones.
21700         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
21701         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
21702         unspec.
21703         (<u>avg<mode>3_ceil): Rename to...
21704         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
21705         unspec.
21706         (aarch64_<su>hsub<mode>): New define_expand.
21707         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
21708         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
21709         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
21711 2023-05-30  Andreas Schwab  <schwab@suse.de>
21713         PR target/110036
21714         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
21715         match libsanitizer.
21717 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
21719         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
21720         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
21721         Declare prototype.
21722         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
21723         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
21724         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
21725         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
21726         (aarch64_<sra_op>sra_n<mode>): New define_expand.
21727         (aarch64_<sra_op>rsra_n<mode>): Likewise.
21728         (aarch64_<sur>sra_n<mode>): Rename to...
21729         (aarch64_<sur>sra_ndi): ... This.
21730         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
21731         any_target_p argument.
21732         (aarch64_extract_vec_duplicate_wide_int): Define.
21733         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
21734         (aarch64_const_vec_rnd_cst_p): Likewise.
21735         (aarch64_vector_mode_supported_any_target_p): Likewise.
21736         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
21737         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
21738         (VSRA): Adjust for the above.
21739         (sur): Likewise.
21740         (V2XWIDE): New mode_attr.
21741         (vec_or_offset): Likewise.
21742         (SHIFTEXTEND): Likewise.
21743         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
21744         predicate.
21745         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
21746         clarify that it applies to current target options.
21747         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
21748         * doc/tm.texi.in: Regenerate.
21749         * stor-layout.cc (mode_for_vector): Check
21750         vector_mode_supported_any_target_p when iterating through vector modes.
21751         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
21752         clarify that it applies to current target options.
21753         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
21755 2023-05-30  Lili Cui  <lili.cui@intel.com>
21757         PR tree-optimization/98350
21758         * tree-ssa-reassoc.cc
21759         (rewrite_expr_tree_parallel): Rewrite this function.
21760         (rank_ops_for_fma): New.
21761         (reassociate_bb): Handle new function.
21763 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
21765         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
21766         (rtx_unstable_p): Ditto.
21767         (reg_mentioned_p): Ditto.
21768         (reg_referenced_p): Ditto.
21769         (reg_used_between_p): Ditto.
21770         (reg_set_between_p): Ditto.
21771         (modified_between_p): Ditto.
21772         (no_labels_between_p): Ditto.
21773         (modified_in_p): Ditto.
21774         (reg_set_p): Ditto.
21775         (multiple_sets): Ditto.
21776         (set_noop_p): Ditto.
21777         (noop_move_p): Ditto.
21778         (reg_overlap_mentioned_p): Ditto.
21779         (dead_or_set_p): Ditto.
21780         (dead_or_set_regno_p): Ditto.
21781         (find_reg_fusage): Ditto.
21782         (find_regno_fusage): Ditto.
21783         (side_effects_p): Ditto.
21784         (volatile_refs_p): Ditto.
21785         (volatile_insn_p): Ditto.
21786         (may_trap_p_1): Ditto.
21787         (may_trap_p): Ditto.
21788         (may_trap_or_fault_p): Ditto.
21789         (computed_jump_p): Ditto.
21790         (auto_inc_p): Ditto.
21791         (loc_mentioned_in_p): Ditto.
21792         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
21793         (rtx_unstable_p): Change return type from int to bool
21794         and adjust function body accordingly.
21795         (rtx_addr_can_trap_p): Ditto.
21796         (reg_mentioned_p): Ditto.
21797         (no_labels_between_p): Ditto.
21798         (reg_used_between_p): Ditto.
21799         (reg_referenced_p): Ditto.
21800         (reg_set_between_p): Ditto.
21801         (reg_set_p): Ditto.
21802         (modified_between_p): Ditto.
21803         (modified_in_p): Ditto.
21804         (multiple_sets): Ditto.
21805         (set_noop_p): Ditto.
21806         (noop_move_p): Ditto.
21807         (reg_overlap_mentioned_p): Ditto.
21808         (dead_or_set_p): Ditto.
21809         (dead_or_set_regno_p): Ditto.
21810         (find_reg_fusage): Ditto.
21811         (find_regno_fusage): Ditto.
21812         (remove_node_from_insn_list): Ditto.
21813         (volatile_insn_p): Ditto.
21814         (volatile_refs_p): Ditto.
21815         (side_effects_p): Ditto.
21816         (may_trap_p_1): Ditto.
21817         (may_trap_p): Ditto.
21818         (may_trap_or_fault_p): Ditto.
21819         (computed_jump_p): Ditto.
21820         (auto_inc_p): Ditto.
21821         (loc_mentioned_in_p): Ditto.
21822         * combine.cc (can_combine_p): Update indirect function.
21824 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21826         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
21827         * config/riscv/iterators.md: New attribute.
21828         * config/riscv/vector-iterators.md: New attribute.
21830 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21832         * config/riscv/riscv.md: Fix signed and unsigned comparison
21833         warning.
21835 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21837         * config/riscv/autovec.md (fnma<mode>4): New pattern.
21838         (*fnma<mode>): Ditto.
21840 2023-05-29  Die Li  <lidie@eswincomputing.com>
21842         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
21843         Delete.
21844         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
21845         process for TARGET_XTHEADCONDMOV
21847 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
21849         PR target/110021
21850         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
21851         TARGET_AVX512BW to generate truncv16hiv16qi2.
21853 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
21855         * config/riscv/riscv.md (and<mode>3): New expander.
21856         (*and<mode>3) New pattern.
21857         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
21858         predicate.
21860 2023-05-29  Pan Li  <pan2.li@intel.com>
21862         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
21863         comments and rename local variables.
21864         (emit_nonvlmax_insn): Diito.
21865         (emit_vlmax_merge_insn): Ditto.
21866         (emit_vlmax_cmp_insn): Ditto.
21867         (emit_vlmax_cmp_mu_insn): Ditto.
21868         (emit_scalar_move_insn): Ditto.
21870 2023-05-29  Pan Li  <pan2.li@intel.com>
21872         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
21873         magic number.
21874         (emit_nonvlmax_insn): Ditto.
21875         (emit_vlmax_merge_insn): Ditto.
21876         (emit_vlmax_cmp_insn): Ditto.
21877         (emit_vlmax_cmp_mu_insn): Ditto.
21878         (expand_vec_series): Ditto.
21880 2023-05-29  Pan Li  <pan2.li@intel.com>
21882         * config/riscv/riscv-protos.h (enum insn_type): New type.
21883         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
21884         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
21885         class member.
21886         (rvv_builder::get_merged_repeating_sequence): Ditto.
21887         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
21888         to evaluate the optimization cost.
21889         (rvv_builder::get_merge_scalar_mask): New function to get the merge
21890         mask.
21891         (emit_scalar_move_insn): New function to emit vmv.s.x.
21892         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
21893         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
21894         vmv.v.x.
21895         (get_repeating_sequence_dup_machine_mode): New function to get the dup
21896         machine mode.
21897         (expand_vector_init_merge_repeating_sequence): New function to perform
21898         the optimization.
21899         (expand_vec_init): Add this vector init optimization.
21900         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
21902 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
21904         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
21905         put onto the increment when it is inserted after the position.
21907 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
21909         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
21910         on constants.
21912 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21914         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
21916 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21918         * config/riscv/autovec.md (fma<mode>4): New pattern.
21919         (*fma<mode>): Ditto.
21920         * config/riscv/riscv-protos.h (enum insn_type): New enum.
21921         (emit_vlmax_ternary_insn): New function.
21922         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
21924 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21926         * config/riscv/vector.md: Fix vimuladd instruction bug.
21928 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21930         * config/riscv/riscv.cc (global_state_unknown_p): New function.
21931         (riscv_mode_after): Fix incorrect VXM.
21933 2023-05-29  Pan Li  <pan2.li@intel.com>
21935         * common/config/riscv/riscv-common.cc:
21936         (riscv_implied_info): Add zvfhmin item.
21937         (riscv_ext_version_table): Ditto.
21938         (riscv_ext_flag_table): Ditto.
21939         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
21940         (TARGET_ZFHMIN): Align indent.
21941         (TARGET_ZFH): Ditto.
21942         (TARGET_ZVFHMIN): New macro.
21944 2023-05-27  liuhongt  <hongtao.liu@intel.com>
21946         PR target/100711
21947         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
21948         to VI_AVX2 to cover more modes.
21950 2023-05-27  liuhongt  <hongtao.liu@intel.com>
21952         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
21953         Remove ATOM and ICELAKE(and later) core processors.
21955 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
21957         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
21958         (abs<mode>2): Add.
21959         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
21960         Declare.
21961         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
21962         function.
21964 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
21965             Juzhe Zhong  <juzhe.zhong@rivai.ai>
21967         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
21968         expander.
21969         (<optab><v_quad_trunc><mode>2): Dito.
21970         (<optab><v_oct_trunc><mode>2): Dito.
21971         (trunc<mode><v_double_trunc>2): Dito.
21972         (trunc<mode><v_quad_trunc>2): Dito.
21973         (trunc<mode><v_oct_trunc>2): Dito.
21974         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
21975         (autovectorize_vector_modes): Define.
21976         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
21977         hook.
21978         (autovectorize_vector_modes): Implement hook.
21979         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
21980         Implement target hook.
21981         (riscv_vectorize_related_mode): Implement target hook.
21982         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
21983         (TARGET_VECTORIZE_RELATED_MODE): Define.
21984         * config/riscv/vector-iterators.md: Add lowercase versions of
21985         mode_attr iterators.
21987 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
21988             Tobias Burnus  <tobias@codesourcery.com>
21990         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
21991         (ASM_SPEC): Use XNACKOPT.
21992         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
21993         (enum hsaco_attr_type): ... this, and generalize the names.
21994         (TARGET_XNACK): New macro.
21995         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
21996         but -mxnack=off.
21997         (output_file_start): Update xnack handling.
21998         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
21999         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
22000         (sram_ecc_type): Rename to ...
22001         (hsaco_attr_type: ... this.)
22002         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
22003         (TEST_XNACK): Delete.
22004         (TEST_XNACK_ANY): New macro.
22005         (TEST_XNACK_ON): New macro.
22006         (main): Support the new -mxnack=on/off/any syntax.
22007         * doc/invoke.texi (-mxnack): Update for new syntax.
22009 2023-05-26  Andrew Pinski  <apinski@marvell.com>
22011         * genmatch.cc (emit_debug_printf): New function.
22012         (dt_simplify::gen_1): Emit printf into the code
22013         before the `return true` or returning the folded result
22014         instead of emitting it always.
22016 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22018         * config/xtensa/xtensa-protos.h
22019         (xtensa_expand_block_set_unrolled_loop,
22020         xtensa_expand_block_set_small_loop): Remove.
22021         (xtensa_expand_block_set): New prototype.
22022         * config/xtensa/xtensa.cc
22023         (xtensa_expand_block_set_libcall): New subfunction.
22024         (xtensa_expand_block_set_unrolled_loop,
22025         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
22026         (xtensa_expand_block_set): New function that calls the above
22027         subfunctions.
22028         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
22029         xtensa_expand_block_set().
22031 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22033         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
22034         New prototype.
22035         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
22036         New function.
22037         * config/xtensa/constraints.md (O):
22038         Change to use the above function.
22039         * config/xtensa/xtensa.md (*subsi3_from_const):
22040         New insn_and_split pattern.
22042 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22044         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
22045         Retract excessive line folding, and correct the value of
22046         the "length" insn attribute related to TARGET_DENSITY.
22047         (*extzvsi-1bit_addsubx): Ditto.
22049 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
22051         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
22052         Do not disable call to ix86_expand_vecop_qihi2.
22054 2023-05-26  liuhongt  <hongtao.liu@intel.com>
22056         PR target/109610
22057         PR target/109858
22058         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
22059         calculation when !hard_regno_mode_ok for GENERAL_REGS and
22060         mode, otherwise still use GENERAL_REGS.
22062 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22064         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
22065         explict VL and drop VL in ops.
22067 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
22069         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
22070         in different BB blocks.
22072 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
22074         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
22075         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
22076         instructions when available.  Emulate truncation via
22077         ix86_expand_vec_perm_const_1 when native truncate insn
22078         is not available.
22079         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
22080         when available.  Trivially rename some variables.
22081         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
22082         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
22083         calculation of V*QImode emulations to account for generation of
22084         2x-wider mode instructions.
22085         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
22086         emulations to account for generation of 2x-wider mode instructions.
22088 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
22090         PR target/104327
22091         * config/avr/avr.cc (avr_can_inline_p): New static function.
22092         (TARGET_CAN_INLINE_P): Define to that function.
22094 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
22096         PR target/82931
22097         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
22098         Handle any bit position and use mode QISI.
22099         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
22100         of 2 insns for bit-transfer of respective style.
22102 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
22104         * config/arm/iterators.md (MVE_6): Remove.
22105         * config/arm/mve.md: Replace MVE_6 with MVE_5.
22107 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22108             Richard Sandiford  <richard.sandiford@arm.com>
22110         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
22111         function.
22112         (vect_set_loop_controls_directly): Add decrement IV support.
22113         (vect_set_loop_condition_partial_vectors): Ditto.
22114         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
22115         variable.
22116         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
22117         macro.
22119 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22121         PR target/99195
22122         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
22123         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
22124         Fix canonicalization of PLUS operands.
22125         (aarch64_fcmla<rot><mode>): Rename to...
22126         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
22127         Fix canonicalization of PLUS operands.
22128         (aarch64_fcmla_lane<rot><mode>): Rename to...
22129         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
22130         Fix canonicalization of PLUS operands.
22131         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
22132         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
22133         Fix canonicalization of PLUS operands.
22134         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
22136 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
22138         * config/arm/arm.md (rbitsi2): Rename to...
22139         (arm_rbit): ... This.
22140         (ctzsi2): Adjust for the above.
22141         (arm_rev16si2): Convert to define_expand.
22142         (arm_rev16si2_alt1): New pattern.
22143         (arm_rev16si2_alt): Rename to...
22144         (*arm_rev16si2_alt2): ... This.
22145         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
22146         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
22147         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
22148         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
22150 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
22152         PR target/109800
22153         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
22154         instead of DFmode.
22155         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
22156         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
22157         DFmode as an rvalue.
22159 2023-05-25  Richard Biener  <rguenther@suse.de>
22161         PR target/109955
22162         * tree-vect-stmts.cc (vectorizable_condition): For
22163         embedded comparisons also handle the case when the target
22164         only provides vec_cmp and vcond_mask.
22166 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
22168         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
22169         TLS Local Dynamic.
22171 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
22173         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
22174         (seq_cost_ignoring_scalar_moves): Likewise.
22175         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
22177 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22179         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
22180         (vcage_f32): Likewise.
22181         (vcages_f32): Likewise.
22182         (vcageq_f32): Likewise.
22183         (vcaged_f64): Likewise.
22184         (vcageq_f64): Likewise.
22185         (vcagts_f32): Likewise.
22186         (vcagt_f32): Likewise.
22187         (vcagt_f64): Likewise.
22188         (vcagtq_f32): Likewise.
22189         (vcagtd_f64): Likewise.
22190         (vcagtq_f64): Likewise.
22191         (vcale_f32): Likewise.
22192         (vcale_f64): Likewise.
22193         (vcaled_f64): Likewise.
22194         (vcales_f32): Likewise.
22195         (vcaleq_f32): Likewise.
22196         (vcaleq_f64): Likewise.
22197         (vcalt_f32): Likewise.
22198         (vcalt_f64): Likewise.
22199         (vcaltd_f64): Likewise.
22200         (vcaltq_f32): Likewise.
22201         (vcaltq_f64): Likewise.
22202         (vcalts_f32): Likewise.
22204 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
22206         PR target/109173
22207         PR target/109174
22208         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
22209         int to const int or const int to const unsigned int.
22210         (_mm512_mask_srli_epi16): Ditto.
22211         (_mm512_slli_epi16): Ditto.
22212         (_mm512_mask_slli_epi16): Ditto.
22213         (_mm512_maskz_slli_epi16): Ditto.
22214         (_mm512_srai_epi16): Ditto.
22215         (_mm512_mask_srai_epi16): Ditto.
22216         (_mm512_maskz_srai_epi16): Ditto.
22217         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
22218         (_mm512_mask_slli_epi64): Ditto.
22219         (_mm512_maskz_slli_epi64): Ditto.
22220         (_mm512_srli_epi64): Ditto.
22221         (_mm512_mask_srli_epi64): Ditto.
22222         (_mm512_maskz_srli_epi64): Ditto.
22223         (_mm512_srai_epi64): Ditto.
22224         (_mm512_mask_srai_epi64): Ditto.
22225         (_mm512_maskz_srai_epi64): Ditto.
22226         (_mm512_slli_epi32): Ditto.
22227         (_mm512_mask_slli_epi32): Ditto.
22228         (_mm512_maskz_slli_epi32): Ditto.
22229         (_mm512_srli_epi32): Ditto.
22230         (_mm512_mask_srli_epi32): Ditto.
22231         (_mm512_maskz_srli_epi32): Ditto.
22232         (_mm512_srai_epi32): Ditto.
22233         (_mm512_mask_srai_epi32): Ditto.
22234         (_mm512_maskz_srai_epi32): Ditto.
22235         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
22236         (_mm256_maskz_srai_epi16): Ditto.
22237         (_mm_mask_srai_epi16): Ditto.
22238         (_mm_maskz_srai_epi16): Ditto.
22239         (_mm256_mask_slli_epi16): Ditto.
22240         (_mm256_maskz_slli_epi16): Ditto.
22241         (_mm_mask_slli_epi16): Ditto.
22242         (_mm_maskz_slli_epi16): Ditto.
22243         (_mm_maskz_srli_epi16): Ditto.
22244         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
22245         (_mm256_maskz_srli_epi32): Ditto.
22246         (_mm_mask_srli_epi32): Ditto.
22247         (_mm_maskz_srli_epi32): Ditto.
22248         (_mm256_mask_srli_epi64): Ditto.
22249         (_mm256_maskz_srli_epi64): Ditto.
22250         (_mm_mask_srli_epi64): Ditto.
22251         (_mm_maskz_srli_epi64): Ditto.
22252         (_mm256_mask_srai_epi32): Ditto.
22253         (_mm256_maskz_srai_epi32): Ditto.
22254         (_mm_mask_srai_epi32): Ditto.
22255         (_mm_maskz_srai_epi32): Ditto.
22256         (_mm256_srai_epi64): Ditto.
22257         (_mm256_mask_srai_epi64): Ditto.
22258         (_mm256_maskz_srai_epi64): Ditto.
22259         (_mm_srai_epi64): Ditto.
22260         (_mm_mask_srai_epi64): Ditto.
22261         (_mm_maskz_srai_epi64): Ditto.
22262         (_mm_mask_slli_epi32): Ditto.
22263         (_mm_maskz_slli_epi32): Ditto.
22264         (_mm_mask_slli_epi64): Ditto.
22265         (_mm_maskz_slli_epi64): Ditto.
22266         (_mm256_mask_slli_epi32): Ditto.
22267         (_mm256_maskz_slli_epi32): Ditto.
22268         (_mm256_mask_slli_epi64): Ditto.
22269         (_mm256_maskz_slli_epi64): Ditto.
22271 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22273         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
22274         instructions.
22276 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
22278         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
22279         * data-streamer-out.cc (streamer_write_vrange): Same.
22280         * value-range.h (class vrange): Make streamer_write_vrange a friend.
22282 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
22284         * value-query.cc (range_query::get_tree_range): Set NAN directly
22285         if necessary.
22286         * value-range.cc (frange::set): Assert that bounds are not NAN.
22288 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
22290         * value-range.cc (add_vrange): Handle known NANs.
22292 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
22294         * value-range.h (frange::set_nan): New.
22296 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
22298         PR target/100106
22299         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
22300         requires stricter alignment than MEM's.
22302 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
22304         PR tree-optimization/107822
22305         PR tree-optimization/107986
22306         * Makefile.in (OBJS): Add gimple-range-phi.o.
22307         * gimple-range-cache.h (ranger_cache::m_estimate): New
22308         phi_analyzer pointer member.
22309         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
22310         phi_analyzer if no loop info is available.
22311         * gimple-range-phi.cc: New file.
22312         * gimple-range-phi.h: New file.
22313         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
22315 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
22317         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
22318         to contructors.
22319         (fold_range): Add range_query parameter.
22320         (fur_relation::fur_relation): New.
22321         (fur_relation::trio): New.
22322         (fur_relation::register_relation): New.
22323         (fold_relations): New.
22324         * gimple-range-fold.h (fold_range): Adjust prototypes.
22325         (fold_relations): New.
22327 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
22329         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
22330         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
22331         (ranger_cache::const_query): New.
22332         * gimple-range.cc (gimple_ranger::const_query): New.
22333         * gimple-range.h (gimple_ranger::const_query): New prototype.
22335 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
22337         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
22338         (ssa_cache::dump_range_query): Delete.
22339         (ssa_lazy_cache::dump_range_query): Delete.
22340         (ssa_lazy_cache::get_range): Move from header file.
22341         (ssa_lazy_cache::clear_range): ditto.
22342         (ssa_lazy_cache::clear): Ditto.
22343         * gimple-range-cache.h (class ssa_cache): Virtualize.
22344         (class ssa_lazy_cache): Inherit and virtualize.
22346 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
22348         * value-range.h (vrange::kind): Remove.
22350 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
22352         PR middle-end/109840
22353         * match.pd <popcount optimizations>: Preserve zero-extension when
22354         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
22355         popcount((T)x), so the popcount's argument keeps the same type.
22356         <parity optimizations>:  Likewise preserve extensions when
22357         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
22358         parity((T)x), so that the parity's argument type is the same.
22360 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
22362         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
22363         (ipcp_store_vr_results): Same.
22364         * ipa-prop.cc (ipa_vr::ipa_vr): New.
22365         (ipa_vr::get_vrange): New.
22366         (ipa_vr::set_unknown): New.
22367         (ipa_vr::streamer_read): New.
22368         (ipa_vr::streamer_write): New.
22369         (write_ipcp_transformation_info): Use new ipa_vr API.
22370         (read_ipcp_transformation_info): Same.
22371         (ipa_vr::nonzero_p): Delete.
22372         (ipcp_update_vr): Use new ipa_vr API.
22373         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
22374         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
22376 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
22378         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
22379         silence overflow warnings later on.
22381 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
22383         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
22384         Remove handling of V8QImode.
22385         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
22386         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
22387         (v<insn>v4qi3): Ditto.
22388         * config/i386/sse.md (v<insn>v8qi3): Remove.
22390 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22392         PR target/99195
22393         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
22394         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
22395         (aarch64_simd_ashr<mode>): Rename to...
22396         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
22397         (aarch64_simd_imm_shl<mode>): Rename to...
22398         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
22399         (aarch64_simd_reg_sshl<mode>): Rename to...
22400         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
22401         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
22402         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
22403         (aarch64_simd_reg_shl<mode>_signed): Rename to...
22404         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
22405         (vec_shr_<mode>): Rename to...
22406         (vec_shr_<mode><vczle><vczbe>): ... This.
22407         (aarch64_<sur>shl<mode>): Rename to...
22408         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
22409         (aarch64_<sur>q<r>shl<mode>): Rename to...
22410         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
22412 2023-05-24  Richard Biener  <rguenther@suse.de>
22414         PR target/109944
22415         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
22416         Perform final vector composition using
22417         ix86_expand_vector_init_general instead of setting
22418         the highpart and lowpart which causes spilling.
22420 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
22422         PR tree-optimization/109695
22423         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
22424         changed param.
22425         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
22426         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
22427         flag to set_global_range.
22428         (gimple_ranger::prefill_stmt_dependencies): Ditto.
22430 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
22432         PR tree-optimization/109695
22433         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
22434         a positive int.
22435         (temporal_cache::current_p): Check always_current method.
22436         (temporal_cache::set_always_current): Add param and set value
22437         appropriately.
22438         (temporal_cache::always_current_p): New.
22439         (ranger_cache::get_global_range): Adjust.
22440         (ranger_cache::set_global_range): set always current first.
22442 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
22444         PR tree-optimization/109695
22445         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
22446         fold_range with global query to choose an initial value.
22448 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22450         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
22451         prefix.
22453 2023-05-24  Richard Biener  <rguenther@suse.de>
22455         PR tree-optimization/109849
22456         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
22457         expressions but take the first sets.
22459 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
22461         PR modula2/109952
22462         * doc/gm2.texi (High procedure function): New node.
22463         (Using): New menu entry for High procedure function.
22465 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
22467         PR rtl-optimization/109940
22468         * early-remat.cc (postorder_index): Rename to...
22469         (rpo_index): ...this.
22470         (compare_candidates): Sort by decreasing rpo_index rather than
22471         increasing postorder_index.
22472         (early_remat::sort_candidates): Calculate the forward RPO from
22473         DF_FORWARD.
22474         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
22475         rather than DF_BACKWARD in reverse.
22477 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22479         PR target/109939
22480         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
22481         qualifier_none for the return operand.
22483 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22485         * config/riscv/autovec.md (<optab><mode>3): New pattern.
22486         (one_cmpl<mode>2): Ditto.
22487         (*<optab>not<mode>): Ditto.
22488         (*n<optab><mode>): Ditto.
22489         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
22490         one_cmpl.
22492 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
22494         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
22495         calculation on n_perms by considering nvectors_per_build.
22497 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22498             Richard Sandiford  <richard.sandiford@arm.com>
22500         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
22501         (vec_cmp<mode><vm>): New pattern.
22502         (vec_cmpu<mode><vm>): New pattern.
22503         (vcond<V:mode><VI:mode>): New pattern.
22504         (vcondu<V:mode><VI:mode>): New pattern.
22505         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
22506         (emit_vlmax_merge_insn): New function.
22507         (emit_vlmax_cmp_insn): Ditto.
22508         (emit_vlmax_cmp_mu_insn): Ditto.
22509         (expand_vec_cmp): Ditto.
22510         (expand_vec_cmp_float): Ditto.
22511         (expand_vcond): Ditto.
22512         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
22513         (emit_vlmax_cmp_insn): Ditto.
22514         (emit_vlmax_cmp_mu_insn): Ditto.
22515         (get_cmp_insn_code): Ditto.
22516         (expand_vec_cmp): Ditto.
22517         (expand_vec_cmp_float): Ditto.
22518         (expand_vcond): Ditto.
22520 2023-05-24  Pan Li  <pan2.li@intel.com>
22522         * config/riscv/genrvv-type-indexer.cc (main): Add
22523         unsigned_eew*_lmul1_interpret for indexer.
22524         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
22525         Register vuint*m1_t interpret function.
22526         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
22527         New macro for vuint8m1_t.
22528         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
22529         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
22530         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
22531         (vbool1_t): Add to unsigned_eew*_interpret_ops.
22532         (vbool2_t): Likewise.
22533         (vbool4_t): Likewise.
22534         (vbool8_t): Likewise.
22535         (vbool16_t): Likewise.
22536         (vbool32_t): Likewise.
22537         (vbool64_t): Likewise.
22538         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
22539         New macro for vuint*m1_t.
22540         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
22541         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
22542         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
22543         (required_extensions_p): Add vuint*m1_t interpret case.
22544         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
22545         Add vuint*m1_t interpret to base type.
22546         (unsigned_eew16_lmul1_interpret): Likewise.
22547         (unsigned_eew32_lmul1_interpret): Likewise.
22548         (unsigned_eew64_lmul1_interpret): Likewise.
22550 2023-05-24  Pan Li  <pan2.li@intel.com>
22552         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
22553         for the eew size list.
22554         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
22555         (main): Add signed_eew*_lmul1_interpret for indexer.
22556         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
22557         Register vint*m1_t interpret function.
22558         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
22559         New macro for vint8m1_t.
22560         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
22561         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
22562         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
22563         (vbool1_t): Add to signed_eew*_interpret_ops.
22564         (vbool2_t): Likewise.
22565         (vbool4_t): Likewise.
22566         (vbool8_t): Likewise.
22567         (vbool16_t): Likewise.
22568         (vbool32_t): Likewise.
22569         (vbool64_t): Likewise.
22570         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
22571         New macro for vint*m1_t.
22572         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
22573         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
22574         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
22575         (required_extensions_p): Add vint8m1_t interpret case.
22576         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
22577         Add vint*m1_t interpret to base type.
22578         (signed_eew16_lmul1_interpret): Likewise.
22579         (signed_eew32_lmul1_interpret): Likewise.
22580         (signed_eew64_lmul1_interpret): Likewise.
22582 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22584         * config/riscv/autovec.md: Adjust for new interface.
22585         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
22586         (emit_nonvlmax_insn): Add AVL operand.
22587         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
22588         (emit_nonvlmax_insn): Add AVL operand.
22589         (sew64_scalar_helper): Adjust for new interface.
22590         (expand_tuple_move): Ditto.
22591         * config/riscv/vector.md: Ditto.
22593 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22595         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
22596         (expand_const_vector): Ditto.
22597         (legitimize_move): Ditto.
22598         (sew64_scalar_helper): Ditto.
22599         (expand_tuple_move): Ditto.
22600         (expand_vector_init_insert_elems): Ditto.
22601         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
22603 2023-05-24  liuhongt  <hongtao.liu@intel.com>
22605         PR target/109900
22606         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
22607         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
22608         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
22609         (ix86_masked_all_ones): Handle 64-bit mask.
22610         * config/i386/i386-builtin.def: Replace icode of related
22611         non-mask simd abs builtins with CODE_FOR_nothing.
22613 2023-05-23  Martin Uecker  <uecker@tugraz.at>
22615         PR c/109450
22616         * function.cc (gimplify_parm_type): Remove function.
22617         (gimplify_parameters): Call gimplify_type_sizes.
22619 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22621         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
22622         and change to also accept '*subx' pattern.
22623         (*subx): Remove.
22625 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22627         * config/xtensa/predicates.md (addsub_operator): New.
22628         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
22629         *extzvsi-1bit_addsubx): New insn_and_split patterns.
22630         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
22631         Add a special case about ifcvt 'noce_try_cmove()' to handle
22632         constant loads that do not fit into signed 12 bits in the
22633         patterns added above.
22635 2023-05-23  Richard Biener  <rguenther@suse.de>
22637         PR tree-optimization/109747
22638         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
22639         the SLP node only once to the cost hook.
22641 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
22643         * config/avr/avr.cc (avr_insn_cost): New static function.
22644         (TARGET_INSN_COST): Define to that function.
22646 2023-05-23  Richard Biener  <rguenther@suse.de>
22648         PR target/109944
22649         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
22650         For vector construction or splats apply GPR->XMM move
22651         costing.  QImode memory can be handled directly only
22652         with SSE4.1 pinsrb.
22654 2023-05-23  Richard Biener  <rguenther@suse.de>
22656         PR tree-optimization/108752
22657         * tree-vect-stmts.cc (vectorizable_operation): For bit
22658         operations with generic word_mode vectors do not cost
22659         an extra stmt.  For plus, minus and negate also cost the
22660         constant materialization.
22662 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
22664         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
22665         Call ix86_expand_vec_shift_qihi_constant for shifts
22666         with constant count operand.
22667         * config/i386/i386.cc (ix86_shift_rotate_cost):
22668         Handle V4QImode and V8QImode.
22669         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
22670         (<insn>v4qi3): Ditto.
22672 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22674         * config/riscv/vector.md: Add mode.
22676 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
22678         PR tree-optimization/109934
22679         * value-range.cc (irange::invert): Remove buggy special case.
22681 2023-05-23  Richard Biener  <rguenther@suse.de>
22683         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
22684         ANTIC_OUT.
22686 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
22688         PR target/109632
22689         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
22690         subregs between any scalars that are 64 bits or smaller.
22691         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
22692         (bits_etype): New int attribute.
22693         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
22694         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
22695         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
22697 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
22699         * doc/md.texi: Document that <FOO> can be used to refer to the
22700         numerical value of an int iterator FOO.  Tweak other parts of
22701         the int iterator documentation.
22702         * read-rtl.cc (iterator_group::has_self_attr): New field.
22703         (map_attr_string): When has_self_attr is true, make <FOO>
22704         expand to the current value of iterator FOO.
22705         (initialize_iterators): Set has_self_attr for int iterators.
22707 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22709         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
22710         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
22711         (RVV_UNOP_NUM): New macro.
22712         (RVV_BINOP_NUM): Ditto.
22713         (legitimize_move): Refactor the framework of RVV auto-vectorization.
22714         (emit_vlmax_op): Ditto.
22715         (emit_vlmax_reg_op): Ditto.
22716         (emit_len_op): Ditto.
22717         (emit_len_binop): Ditto.
22718         (emit_vlmax_tany_many): Ditto.
22719         (emit_nonvlmax_tany_many): Ditto.
22720         (sew64_scalar_helper): Ditto.
22721         (expand_tuple_move): Ditto.
22722         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
22723         (emit_pred_binop): Ditto.
22724         (emit_vlmax_op): Ditto.
22725         (emit_vlmax_tany_many): New function.
22726         (emit_len_op): Remove.
22727         (emit_nonvlmax_tany_many): New function.
22728         (emit_vlmax_reg_op): Remove.
22729         (emit_len_binop): Ditto.
22730         (emit_index_op): Ditto.
22731         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
22732         (expand_const_vector): Ditto.
22733         (legitimize_move): Ditto.
22734         (sew64_scalar_helper): Ditto.
22735         (expand_tuple_move): Ditto.
22736         (expand_vector_init_insert_elems): Ditto.
22737         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
22738         * config/riscv/vector.md: Ditto.
22740 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22742         PR target/109855
22743         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
22744         and constraint for operand 0.
22745         (add_vec_concat_subst_be): Likewise.
22747 2023-05-23  Richard Biener  <rguenther@suse.de>
22749         PR tree-optimization/109849
22750         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
22751         and use that to determine what to hoist.
22753 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
22755         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
22756         specific treatment for bit-fields only if they have an integral type
22757         and filter out non-integral bit-fields that do not start and end on
22758         a byte boundary.
22760 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
22762         PR tree-optimization/109920
22763         * value-range.h (RESIZABLE>::~int_range): Use delete[].
22765 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
22767         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
22768         calcuation of integer vector mode costs to reflect generated
22769         instruction sequences of different integer vector modes and
22770         different target ABIs.  Remove "speed" function argument.
22771         (ix86_rtx_costs): Update call for removed function argument.
22772         (ix86_vector_costs::add_stmt_cost): Ditto.
22774 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
22776         * value-range.h (class Value_Range): Implement set_zero,
22777         set_nonzero, and nonzero_p.
22779 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
22781         * config/i386/i386.cc (ix86_multiplication_cost): Add
22782         the cost of a memory read to the cost of V?QImode sequences.
22784 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22786         * config/riscv/riscv-v.cc: Add "m_" prefix.
22788 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22790         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
22791         multiple-rgroup of length.
22792         * tree-vect-stmts.cc (vectorizable_store): Ditto.
22793         (vectorizable_load): Ditto.
22794         * tree-vectorizer.h (vect_get_loop_len): Ditto.
22796 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22798         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
22799         codes.
22801 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
22803         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
22804         handling for the case index == count.
22806 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
22808         PR target/90622
22809         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
22810         Don't fold to XOR / AND / XOR if just one bit is copied to the
22811         same position.
22813 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
22815         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
22816         builtin for bit reversal using brev instruction.
22817         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
22818         NVPTX_BUILTIN_BREVLL.
22819         (nvptx_init_builtins): Define "brev" and "brevll".
22820         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
22821         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
22822         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
22823         section, document __builtin_nvptx_brev{,ll}.
22825 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
22827         PR tree-optimization/109505
22828         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
22829         Combine successive equal operations with constants,
22830         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
22831         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
22832         operands.
22834 2023-05-21  Andrew Pinski  <apinski@marvell.com>
22836         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
22838 2023-05-21  Pan Li  <pan2.li@intel.com>
22840         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
22841         rest bool size, aka 2, 4, 8, 16, 32, 64.
22842         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
22843         Register vbool[2|4|8|16|32|64] interpret function.
22844         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
22845         New macro for vbool2_t.
22846         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
22847         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
22848         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
22849         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
22850         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
22851         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
22852         (vint16m1_t): Likewise.
22853         (vint32m1_t): Likewise.
22854         (vint64m1_t): Likewise.
22855         (vuint8m1_t): Likewise.
22856         (vuint16m1_t): Likewise.
22857         (vuint32m1_t): Likewise.
22858         (vuint64m1_t): Likewise.
22859         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
22860         New macro for vbool2_t.
22861         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
22862         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
22863         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
22864         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
22865         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
22866         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
22867         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
22868         vbool2_t interprect to base type.
22869         (bool4_interpret): Likewise.
22870         (bool8_interpret): Likewise.
22871         (bool16_interpret): Likewise.
22872         (bool32_interpret): Likewise.
22873         (bool64_interpret): Likewise.
22875 2023-05-21  Andrew Pinski  <apinski@marvell.com>
22877         PR middle-end/109919
22878         * expr.cc (expand_single_bit_test): Don't use the
22879         target for expand_expr.
22881 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
22883         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
22884         section.
22886 2023-05-20  Pan Li  <pan2.li@intel.com>
22888         * mode-switching.cc (entity_map): Initialize the array to zero.
22889         (bb_info): Ditto.
22891 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
22893         PR target/105753
22894         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
22895         Remove superfluous "parallel" in insn pattern.
22896         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
22897         printing error text to assembly.
22899 2023-05-20  Andrew Pinski  <apinski@marvell.com>
22901         * expr.cc (fold_single_bit_test): Rename to ...
22902         (expand_single_bit_test): This and expand directly.
22903         (do_store_flag): Update for the rename function.
22905 2023-05-20  Andrew Pinski  <apinski@marvell.com>
22907         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
22908         instead of shift/and.
22910 2023-05-20  Andrew Pinski  <apinski@marvell.com>
22912         * expr.cc (fold_single_bit_test): Add an assert
22913         and simplify based on code being NE_EXPR or EQ_EXPR.
22915 2023-05-20  Andrew Pinski  <apinski@marvell.com>
22917         * expr.cc (fold_single_bit_test): Take inner and bitnum
22918         instead of arg0 and arg1. Update the code.
22919         (do_store_flag): Don't create a tree when calling
22920         fold_single_bit_test instead just call it with the bitnum
22921         and the inner tree.
22923 2023-05-20  Andrew Pinski  <apinski@marvell.com>
22925         * expr.cc (fold_single_bit_test): Use get_def_for_expr
22926         instead of checking the inner's code.
22928 2023-05-20  Andrew Pinski  <apinski@marvell.com>
22930         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
22931         (fold_single_bit_test): This and simplify.
22933 2023-05-20  Andrew Pinski  <apinski@marvell.com>
22935         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
22936         expr.cc.
22937         (fold_single_bit_test): Likewise.
22938         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
22939         (fold_single_bit_test): Likewise and make static.
22940         * fold-const.h (fold_single_bit_test): Remove declaration.
22942 2023-05-20  Die Li  <lidie@eswincomputing.com>
22944         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
22945         checking.
22947 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
22949         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
22951 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
22953         PR target/106888
22954         * config/riscv/bitmanip.md
22955         (<bitmanip_optab>disi2): Match with any_extend.
22956         (<bitmanip_optab>disi2_sext): New pattern to match
22957         with sign extend using an ANDI instruction.
22959 2023-05-19  Nathan Sidwell  <nathan@acm.org>
22961         PR other/99451
22962         * opts.h (handle_deferred_dump_options): Declare.
22963         * opts-global.cc (handle_common_deferred_options): Do not handle
22964         dump options here.
22965         (handle_deferred_dump_options): New.
22966         * toplev.cc (toplev::main): Call it after plugin init.
22968 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
22970         * config/riscv/constraints.md (DsS, DsD): Restore agreement
22971         with shiftm1 mode attribute.
22973 2023-05-19  Andrew Pinski  <apinski@marvell.com>
22975         PR driver/33980
22976         * gcc.cc (default_compilers["@c-header"]): Add %w
22977         after the --output-pch.
22979 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
22981         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
22982         to hival, ASHIFT the corresponding regs.
22984 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
22986         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
22988 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
22990         PR tree-optimization/105776
22991         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
22992         non-NULL, allow division statement to have a cast as single imm use
22993         rather than comparison/condition.
22994         (match_arith_overflow): In that case remove the cast stmt in addition
22995         to the division statement.
22997 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
22999         PR tree-optimization/101856
23000         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
23001         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
23002         support it but umul_highpart_optab does.
23004 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
23006         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
23007         of tree_to_shwi on array indices.  Minor tweaks.
23009 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
23011         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
23012         * attribs.cc (diag_attr_exclusions): Ditto.
23013         (decl_attributes): Ditto.
23014         (build_type_attribute_qual_variant): Ditto.
23015         * builtins.cc (fold_builtin_carg): Ditto.
23016         (fold_builtin_next_arg): Ditto.
23017         (do_mpc_arg2): Ditto.
23018         * cfgexpand.cc (expand_return): Ditto.
23019         * cgraph.h (decl_in_symtab_p): Ditto.
23020         (symtab_node::get_create): Ditto.
23021         * dwarf2out.cc (base_type_die): Ditto.
23022         (implicit_ptr_descriptor): Ditto.
23023         (gen_array_type_die): Ditto.
23024         (gen_type_die_with_usage): Ditto.
23025         (optimize_location_into_implicit_ptr): Ditto.
23026         * expr.cc (do_store_flag): Ditto.
23027         * fold-const.cc (negate_expr_p): Ditto.
23028         (fold_negate_expr_1): Ditto.
23029         (fold_convert_const): Ditto.
23030         (fold_convert_loc): Ditto.
23031         (constant_boolean_node): Ditto.
23032         (fold_binary_op_with_conditional_arg): Ditto.
23033         (build_fold_addr_expr_with_type_loc): Ditto.
23034         (fold_comparison): Ditto.
23035         (fold_checksum_tree): Ditto.
23036         (tree_unary_nonnegative_warnv_p): Ditto.
23037         (integer_valued_real_unary_p): Ditto.
23038         (fold_read_from_constant_string): Ditto.
23039         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
23040         * gimple-expr.cc (useless_type_conversion_p): Ditto.
23041         (is_gimple_reg): Ditto.
23042         (is_gimple_asm_val): Ditto.
23043         (mark_addressable): Ditto.
23044         * gimple-expr.h (is_gimple_variable): Ditto.
23045         (virtual_operand_p): Ditto.
23046         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
23047         * gimplify.cc (gimplify_bind_expr): Ditto.
23048         (gimplify_return_expr): Ditto.
23049         (gimple_add_padding_init_for_auto_var): Ditto.
23050         (gimplify_addr_expr): Ditto.
23051         (omp_add_variable): Ditto.
23052         (omp_notice_variable): Ditto.
23053         (omp_get_base_pointer): Ditto.
23054         (omp_strip_components_and_deref): Ditto.
23055         (omp_strip_indirections): Ditto.
23056         (omp_accumulate_sibling_list): Ditto.
23057         (omp_build_struct_sibling_lists): Ditto.
23058         (gimplify_adjust_omp_clauses_1): Ditto.
23059         (gimplify_adjust_omp_clauses): Ditto.
23060         (gimplify_omp_for): Ditto.
23061         (goa_lhs_expr_p): Ditto.
23062         (gimplify_one_sizepos): Ditto.
23063         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
23064         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
23065         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
23066         (propagate_controlled_uses): Ditto.
23067         * ipa-sra.cc (type_prevails_p): Ditto.
23068         (scan_expr_access): Ditto.
23069         * optabs-tree.cc (optab_for_tree_code): Ditto.
23070         * toplev.cc (wrapup_global_declaration_1): Ditto.
23071         * trans-mem.cc (transaction_invariant_address_p): Ditto.
23072         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
23073         (verify_gimple_comparison): Ditto.
23074         (verify_gimple_assign_binary): Ditto.
23075         (verify_gimple_assign_single): Ditto.
23076         * tree-complex.cc (get_component_ssa_name): Ditto.
23077         * tree-emutls.cc (lower_emutls_2): Ditto.
23078         * tree-inline.cc (copy_tree_body_r): Ditto.
23079         (estimate_move_cost): Ditto.
23080         (copy_decl_for_dup_finish): Ditto.
23081         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
23082         (note_nonlocal_vla_type): Ditto.
23083         (convert_local_omp_clauses): Ditto.
23084         (remap_vla_decls): Ditto.
23085         (fixup_vla_decls): Ditto.
23086         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
23087         * tree-pretty-print.cc (print_declaration): Ditto.
23088         (print_call_name): Ditto.
23089         * tree-sra.cc (compare_access_positions): Ditto.
23090         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
23091         * tree-ssa-ccp.cc (get_default_value): Ditto.
23092         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
23093         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
23094         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
23095         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
23096         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
23097         * tree-ssa-sink.cc (statement_sink_location): Ditto.
23098         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
23099         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
23100         * tree-ssa-uninit.cc (warn_uninit): Ditto.
23101         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
23102         (non_rewritable_mem_ref_base): Ditto.
23103         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
23104         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
23105         * tree-vect-generic.cc (do_binop): Ditto.
23106         (do_cond): Ditto.
23107         * tree-vect-stmts.cc (vect_init_vector): Ditto.
23108         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
23109         * tree.cc (sign_mask_for): Ditto.
23110         (verify_type_variant): Ditto.
23111         (gimple_canonical_types_compatible_p): Ditto.
23112         (verify_type): Ditto.
23113         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
23114         * var-tracking.cc (prepare_call_arguments): Ditto.
23115         (vt_add_function_parameters): Ditto.
23116         * varasm.cc (decode_addr_const): Ditto.
23118 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
23120         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
23121         (lower_reduction_clauses): Ditto.
23122         (lower_send_clauses): Ditto.
23123         (lower_omp_task_reductions): Ditto.
23124         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
23125         (worker_single_copy): Ditto.
23126         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
23127         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
23129 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
23131         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
23132         tree.h.
23133         (lto_read_body_or_constructor): Ditto.
23134         * lto-streamer-out.cc (tree_is_indexable): Ditto.
23135         (lto_output_var_decl_ref): Ditto.
23136         (DFS::DFS_write_tree_body): Ditto.
23137         (wrap_refs): Ditto.
23138         (write_symbol_extension_info): Ditto.
23140 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
23142         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
23143         defines from tree.h.
23144         (aarch64_mangle_type): Ditto.
23145         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
23146         (alpha_gimplify_va_arg_1): Ditto.
23147         * config/arc/arc.cc (arc_encode_section_info): Ditto.
23148         (arc_is_aux_reg_p): Ditto.
23149         (arc_is_uncached_mem_p): Ditto.
23150         (arc_handle_aux_attribute): Ditto.
23151         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
23152         (arm_handle_cmse_nonsecure_call): Ditto.
23153         (arm_set_default_type_attributes): Ditto.
23154         (arm_is_segment_info_known): Ditto.
23155         (arm_mangle_type): Ditto.
23156         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
23157         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
23158         (avr_decl_absdata_p): Ditto.
23159         (avr_insert_attributes): Ditto.
23160         (avr_section_type_flags): Ditto.
23161         (avr_encode_section_info): Ditto.
23162         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
23163         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
23164         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
23165         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
23166         (csky_mangle_type): Ditto.
23167         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
23168         * config/darwin.cc (is_objc_metadata): Ditto.
23169         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
23170         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
23171         * config/frv/frv.cc (frv_emit_movsi): Ditto.
23172         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
23173         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
23174         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
23175         * config/i386/i386-expand.cc: Ditto.
23176         * config/i386/i386.cc (type_natural_mode): Ditto.
23177         (ix86_function_arg): Ditto.
23178         (ix86_data_alignment): Ditto.
23179         (ix86_local_alignment): Ditto.
23180         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
23181         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
23182         (i386_pe_type_dllexport_p): Ditto.
23183         (i386_pe_adjust_class_at_definition): Ditto.
23184         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
23185         (i386_pe_binds_local_p): Ditto.
23186         (i386_pe_section_type_flags): Ditto.
23187         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
23188         (ia64_gimplify_va_arg): Ditto.
23189         (ia64_in_small_data_p): Ditto.
23190         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
23191         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
23192         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
23193         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
23194         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
23195         (mcore_encode_section_info): Ditto.
23196         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
23197         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
23198         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
23199         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
23200         (pass_in_memory): Ditto.
23201         (nvptx_generate_vector_shuffle): Ditto.
23202         (nvptx_lockless_update): Ditto.
23203         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
23204         (pa_function_value): Ditto.
23205         (pa_function_arg): Ditto.
23206         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
23207         (TEXT_SPACE_P): Ditto.
23208         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
23209         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
23210         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
23211         (riscv_mangle_type): Ditto.
23212         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
23213         (rl78_addsi3_internal): Ditto.
23214         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
23215         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
23216         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
23217         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
23218         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
23219         (rs6000_function_arg_advance_1): Ditto.
23220         (rs6000_function_arg): Ditto.
23221         (rs6000_pass_by_reference): Ditto.
23222         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
23223         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
23224         (rs6000_set_default_type_attributes): Ditto.
23225         (rs6000_elf_in_small_data_p): Ditto.
23226         (IN_NAMED_SECTION): Ditto.
23227         (rs6000_xcoff_encode_section_info): Ditto.
23228         (rs6000_function_value): Ditto.
23229         (invalid_arg_for_unprototyped_fn): Ditto.
23230         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
23231         (s390_vec_n_elem): Ditto.
23232         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
23233         (s390_function_arg_integer): Ditto.
23234         (s390_return_in_memory): Ditto.
23235         (s390_encode_section_info): Ditto.
23236         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
23237         (sh_function_value): Ditto.
23238         * config/sol2.cc (solaris_insert_attributes): Ditto.
23239         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
23240         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
23241         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
23242         (xstormy16_handle_below100_attribute): Ditto.
23243         * config/v850/v850.cc (v850_encode_section_info): Ditto.
23244         (v850_insert_attributes): Ditto.
23245         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
23246         (visium_return_in_memory): Ditto.
23247         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
23249 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
23251         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
23252         (ix86_expand_vecop_qihi): Add op2vec bool variable.
23253         Do not set REG_EQUAL note.
23254         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
23255         Add prototype.
23256         * config/i386/i386.cc (ix86_multiplication_cost): Handle
23257         V4QImode and V8QImode.
23258         * config/i386/mmx.md (mulv8qi3): New expander.
23259         (mulv4qi3): Ditto.
23260         * config/i386/sse.md (mulv8qi3): Remove.
23262 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
23264         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
23266 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
23268         PR bootstrap/105831
23269         * config.gcc: Use = operator instead of ==.
23271 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
23273         PR bootstrap/105831
23274         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
23275         * configure.ac: Likewise.
23276         * configure: Regenerate.
23278 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
23280         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
23281         (__ARM_mve_coerce1): Remove.
23282         (__ARM_mve_coerce2): Remove.
23283         (__ARM_mve_coerce3): Remove.
23284         (__ARM_mve_coerce_i_scalar): New.
23285         (__ARM_mve_coerce_s8_ptr): New.
23286         (__ARM_mve_coerce_u8_ptr): New.
23287         (__ARM_mve_coerce_s16_ptr): New.
23288         (__ARM_mve_coerce_u16_ptr): New.
23289         (__ARM_mve_coerce_s32_ptr): New.
23290         (__ARM_mve_coerce_u32_ptr): New.
23291         (__ARM_mve_coerce_s64_ptr): New.
23292         (__ARM_mve_coerce_u64_ptr): New.
23293         (__ARM_mve_coerce_f_scalar): New.
23294         (__ARM_mve_coerce_f16_ptr): New.
23295         (__ARM_mve_coerce_f32_ptr): New.
23296         (__arm_vst4q): Change _coerce_ overloads.
23297         (__arm_vbicq): Change _coerce_ overloads.
23298         (__arm_vld1q): Change _coerce_ overloads.
23299         (__arm_vld1q_z): Change _coerce_ overloads.
23300         (__arm_vld2q): Change _coerce_ overloads.
23301         (__arm_vld4q): Change _coerce_ overloads.
23302         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
23303         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
23304         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
23305         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
23306         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
23307         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
23308         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
23309         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
23310         (__arm_vst1q_p): Change _coerce_ overloads.
23311         (__arm_vst2q): Change _coerce_ overloads.
23312         (__arm_vst1q): Change _coerce_ overloads.
23313         (__arm_vstrhq): Change _coerce_ overloads.
23314         (__arm_vstrhq_p): Change _coerce_ overloads.
23315         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
23316         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
23317         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
23318         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
23319         (__arm_vstrwq_p): Change _coerce_ overloads.
23320         (__arm_vstrwq): Change _coerce_ overloads.
23321         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
23322         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
23323         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
23324         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
23325         (__arm_vsetq_lane): Change _coerce_ overloads.
23326         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
23327         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
23328         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
23329         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
23330         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
23331         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
23332         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
23333         (__arm_vidupq_x_u8): Change _coerce_ overloads.
23334         (__arm_vddupq_x_u8): Change _coerce_ overloads.
23335         (__arm_vidupq_x_u16): Change _coerce_ overloads.
23336         (__arm_vddupq_x_u16): Change _coerce_ overloads.
23337         (__arm_vidupq_x_u32): Change _coerce_ overloads.
23338         (__arm_vddupq_x_u32): Change _coerce_ overloads.
23339         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
23340         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
23341         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
23342         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
23343         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
23344         (__arm_vidupq_u16): Change _coerce_ overloads.
23345         (__arm_vidupq_u32): Change _coerce_ overloads.
23346         (__arm_vidupq_u8): Change _coerce_ overloads.
23347         (__arm_vddupq_u16): Change _coerce_ overloads.
23348         (__arm_vddupq_u32): Change _coerce_ overloads.
23349         (__arm_vddupq_u8): Change _coerce_ overloads.
23350         (__arm_viwdupq_m): Change _coerce_ overloads.
23351         (__arm_viwdupq_u16): Change _coerce_ overloads.
23352         (__arm_viwdupq_u32): Change _coerce_ overloads.
23353         (__arm_viwdupq_u8): Change _coerce_ overloads.
23354         (__arm_vdwdupq_m): Change _coerce_ overloads.
23355         (__arm_vdwdupq_u16): Change _coerce_ overloads.
23356         (__arm_vdwdupq_u32): Change _coerce_ overloads.
23357         (__arm_vdwdupq_u8): Change _coerce_ overloads.
23358         (__arm_vstrbq): Change _coerce_ overloads.
23359         (__arm_vstrbq_p): Change _coerce_ overloads.
23360         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
23361         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
23362         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
23363         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
23364         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
23366 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
23368         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
23369         scalar constant.
23371 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
23373         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
23374         (__arm_vadcq_u32): Likewise.
23375         (__arm_vadcq_m_s32): Likewise.
23376         (__arm_vadcq_m_u32): Likewise.
23377         (__arm_vsbcq_s32): Likewise.
23378         (__arm_vsbcq_u32): Likewise.
23379         (__arm_vsbcq_m_s32): Likewise.
23380         (__arm_vsbcq_m_u32): Likewise.
23381         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
23383 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
23385         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
23386         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
23387         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
23388         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
23389         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
23390         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
23391         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
23392         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
23393         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
23394         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
23395         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
23396         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
23397         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
23398         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
23399         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
23400         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
23401         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
23402         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
23403         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
23404         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
23405         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
23406         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
23407         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
23408         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
23409         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
23410         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
23411         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
23412         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
23413         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
23414         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
23415         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
23416         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
23417         (mve_vorrq_m_f<mode>)
23418         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
23419         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
23420         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
23421         capitalization in the emitted asm.
23423 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
23425         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
23426         predicates.md.
23427         (Ri): Move constraint definition from predicates.md.
23428         (Rl): Define new constraint.
23429         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
23430         missing constraint.
23431         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
23432         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
23433         op 2. Fix asm output spacing.
23434         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
23435         * config/arm/predicates.md (Ri) Move constraint to constraints.md
23436         (mve_vldrd_immediate): Move it from
23437         constraints.md.
23438         (mve_vstrw_immediate): New predicate.
23440 2023-05-18  Pan Li  <pan2.li@intel.com>
23441             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23442             Kito Cheng  <kito.cheng@sifive.com>
23443             Richard Biener  <rguenther@suse.de>
23444             Richard Sandiford  <richard.sandiford@arm.com>
23446         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
23447         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
23448         (struct table_elt): Extend machine_mode to 16 bits.
23449         (struct set): Ditto.
23450         * genmodes.cc (emit_mode_wider): Extend type from char to short.
23451         (emit_mode_complex): Ditto.
23452         (emit_mode_inner): Ditto.
23453         (emit_class_narrowest_mode): Ditto.
23454         * genopinit.cc (main): Extend the machine_mode limit.
23455         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
23456         re-ordered the struct fields for padding.
23457         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
23458         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
23459         (get_mode_alignment): Extend type from char to short.
23460         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
23461         removed the ATTRIBUTE_PACKED.
23462         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
23463         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
23464         m_kind to 2 bits and remove m_spare.
23465         * rtl.h (RTX_CODE_BITSIZE): New macro.
23466         (struct rtx_def): Swap both the bit size and location between the
23467         rtx_code and the machine_mode.
23468         (subreg_shape::unique_id): Extend the machine_mode limit.
23469         * rtlanal.h: Extend machine_mode to 16 bits.
23470         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
23471         bits and re-ordered the struct fields for padding.
23472         (struct tree_decl_common): Extend machine_mode to 16 bits.
23474 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
23476         * genrecog.cc (print_nonbool_test): Fix type error of
23477         switch (SUBREG_BYTE (op))'.
23479 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
23481         * common/config/riscv/riscv-common.cc: Remove
23482         trailing spaces on lines.
23483         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
23484         * config/riscv/riscv.h (enum reg_class): Likewise.
23485         * config/riscv/riscv.md: Likewise.
23487 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
23489         * config/pa/pa.md (clear_cache): New.
23491 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
23493         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
23494         parenthesis.  Fix misnamed index entry.
23495         <concept>: Fix misnamed index entry.
23497 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
23499         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
23500         combined from ...
23501         (*<optab>si3_mask, *<optab>di3_mask): Here.
23502         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
23503         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
23504         pattern.
23505         (*<bitmanip_optab>si3_sext_mask): Likewise.
23506         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
23507         and const_di_mask_operand.
23508         (bitmanip_rotate): New iterator.
23509         (bitmanip_optab): Add rotates.
23510         * config/riscv/predicates.md (const_si_mask_operand): Renamed
23511         from const31_operand.  Generalize to handle more mask constants.
23512         (const_di_mask_operand): Similarly.
23514 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
23516         PR c++/109884
23517         * config/i386/i386-builtin-types.def (FLOAT128): Use
23518         float128t_type_node rather than float128_type_node.
23520 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
23522         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
23523         FP_CONTRACT_FAST (no functional change).
23525 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
23527         * config/i386/i386.cc (ix86_multiplication_cost): Correct
23528         calcuation of integer vector mode costs to reflect generated
23529         instruction sequences of different integer vector modes and
23530         different target ABIs.
23532 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23534         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
23535         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
23536         (riscv_mode_needed): Ditto.
23537         (riscv_mode_after): Ditto.
23538         (riscv_mode_entry): Ditto.
23539         (riscv_mode_exit): Ditto.
23540         (riscv_mode_priority): Ditto.
23541         (TARGET_MODE_EMIT): New target hook.
23542         (TARGET_MODE_NEEDED): Ditto.
23543         (TARGET_MODE_AFTER): Ditto.
23544         (TARGET_MODE_ENTRY): Ditto.
23545         (TARGET_MODE_EXIT): Ditto.
23546         (TARGET_MODE_PRIORITY): Ditto.
23547         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
23548         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
23549         * config/riscv/riscv.md: Add csrwvxrm.
23550         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
23551         (vxrmsi): New pattern.
23553 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23555         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
23556         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
23557         (struct narrow_alu_def): Ditto.
23558         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
23559         (function_expander::use_exact_insn): Ditto.
23560         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
23561         (function_base::has_rounding_mode_operand_p): New function.
23563 2023-05-17  Andrew Pinski  <apinski@marvell.com>
23565         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
23566         against 0 instead of calling integer_zerop.
23568 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23570         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
23571         (DEF_RVV_VXRM_ENUM): New macro.
23572         (handle_pragma_vector): Add vxrm enum register.
23573         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
23574         (RNU): Ditto.
23575         (RNE): Ditto.
23576         (RDN): Ditto.
23577         (ROD): Ditto.
23579 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
23581         * value-range.h (Value_Range::operator=): New.
23583 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
23585         * value-range.cc (vrange::operator=): Add a stub to copy
23586         unsupported ranges.
23587         * value-range.h (is_a <unsupported_range>): New.
23588         (Value_Range::operator=): Support copying unsupported ranges.
23590 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
23592         * data-streamer-in.cc (streamer_read_real_value): New.
23593         (streamer_read_value_range): New.
23594         * data-streamer-out.cc (streamer_write_real_value): New.
23595         (streamer_write_vrange): New.
23596         * data-streamer.h (streamer_write_vrange): New.
23597         (streamer_read_value_range): New.
23599 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
23601         PR c++/109532
23602         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
23603         is ignored for a fixed underlying type.
23604         (C++ Dialect Options): Likewise for -fstrict-enums.
23606 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
23608         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
23609         special case.
23611 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
23613         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
23614         New.
23615         (s390_atomic_align_for_mode): New.
23617 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
23619         * wide-int.cc (wi::from_array): Add missing closing paren in function
23620         comment.
23622 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
23624         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
23625         suggested unroll factor once the previous analysis fails.
23627 2023-05-17  Pan Li  <pan2.li@intel.com>
23629         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
23630         macro.
23631         (main): Add bool1 to the type indexer.
23632         * config/riscv/riscv-vector-builtins-functions.def
23633         (vreinterpret): Register vbool1 interpret function.
23634         * config/riscv/riscv-vector-builtins-types.def
23635         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
23636         (vint8m1_t): Add the type to bool1_interpret_ops.
23637         (vint16m1_t): Ditto.
23638         (vint32m1_t): Ditto.
23639         (vint64m1_t): Ditto.
23640         (vuint8m1_t): Ditto.
23641         (vuint16m1_t): Ditto.
23642         (vuint32m1_t): Ditto.
23643         (vuint64m1_t): Ditto.
23644         * config/riscv/riscv-vector-builtins.cc
23645         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
23646         (required_extensions_p): Add bool1 interpret case.
23647         * config/riscv/riscv-vector-builtins.def
23648         (bool1_interpret): Add bool1 interpret to base type.
23649         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
23650         with VB dest for vreinterpret.
23652 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
23654         PR target/106708
23655         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
23656         constants through "lis; xoris".
23658 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
23660         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
23661         default rs6000 target pass for O2 and above.
23662         * doc/invoke.texi: Document -free
23664 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
23666         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
23667         Fix wrong select_kind...
23669 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
23671         * config/s390/s390-protos.h (s390_expand_setmem): Change
23672         function signature.
23673         * config/s390/s390.cc (s390_expand_setmem): For memset's less
23674         than or equal to 256 byte do not perform a libc call.
23675         * config/s390/s390.md: Change expander into a version which
23676         takes 8 operands.
23678 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
23680         * config/s390/s390-protos.h (s390_expand_movmem): New.
23681         * config/s390/s390.cc (s390_expand_movmem): New.
23682         * config/s390/s390.md (movmem<mode>): New.
23683         (*mvcrl): New.
23684         (mvcrl): New.
23686 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
23688         * config/s390/s390-protos.h (s390_expand_cpymem): Change
23689         function signature.
23690         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
23691         than or equal to 256 byte do not perform a libc call.
23692         (s390_expand_insv): Adapt new function signature of
23693         s390_expand_cpymem.
23694         * config/s390/s390.md: Change expander into a version which
23695         takes 8 operands.
23697 2023-05-16  Andrew Pinski  <apinski@marvell.com>
23699         PR tree-optimization/109424
23700         * match.pd: Add patterns for min/max of zero_one_valued
23701         values to `&`/`|`.
23703 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23705         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
23706         * config/riscv/riscv-vector-builtins.cc
23707         (function_expander::use_ternop_insn): Add default rounding mode.
23708         (function_expander::use_widen_ternop_insn): Ditto.
23709         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
23710         (riscv_hard_regno_mode_ok): Ditto.
23711         (riscv_conditional_register_usage): Ditto.
23712         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
23713         (FRM_REG_P): Ditto.
23714         (RISCV_DWARF_FRM): Ditto.
23715         * config/riscv/riscv.md: Ditto.
23716         * config/riscv/vector-iterators.md: split no frm and has frm operations.
23717         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
23718         (@pred_<optab><mode>): Ditto.
23720 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
23722         PR tree-optimization/109695
23723         * value-range.cc (irange::operator=): Resize range.
23724         (irange::union_): Same.
23725         (irange::intersect): Same.
23726         (irange::invert): Same.
23727         (int_range_max): Default to 3 sub-ranges and resize as needed.
23728         * value-range.h (irange::maybe_resize): New.
23729         (~int_range): New.
23730         (int_range::int_range): Adjust for resizing.
23731         (int_range::operator=): Same.
23733 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
23735         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
23736         range copying
23737         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
23738         when range changed.
23740 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23742         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
23743         * config/riscv/riscv-vector-builtins.cc
23744         (function_expander::use_exact_insn): Add default rounding mode operand.
23745         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
23746         (riscv_hard_regno_mode_ok): Ditto.
23747         (riscv_conditional_register_usage): Ditto.
23748         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
23749         (VXRM_REG_P): Ditto.
23750         (RISCV_DWARF_VXRM): Ditto.
23751         * config/riscv/riscv.md: Ditto.
23752         * config/riscv/vector.md: Ditto
23754 2023-05-15  Pan Li  <pan2.li@intel.com>
23756         * optabs.cc (maybe_gen_insn): Add case to generate instruction
23757         that has 11 operands.
23759 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23761         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
23762         logic for vector modes.
23764 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23766         PR target/99195
23767         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
23768         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
23769         (aarch64_cmtst<mode>): Rename to...
23770         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
23771         (*aarch64_cmtst_same_<mode>): Rename to...
23772         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
23773         (*aarch64_cmtstdi): Rename to...
23774         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
23775         (aarch64_fac<optab><mode>): Rename to...
23776         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
23778 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23780         PR target/99195
23781         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
23782         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
23784 2023-05-15  Pan Li  <pan2.li@intel.com>
23785             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23786             kito-cheng  <kito.cheng@sifive.com>
23788         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
23789         deciding the mode is constant or not.
23790         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
23792 2023-05-15  Richard Biener  <rguenther@suse.de>
23794         PR tree-optimization/109848
23795         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
23796         TARGET_MEM_REF address preparation before the store, not
23797         before the CTOR.
23799 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23801         * config/riscv/riscv.cc
23802         (riscv_vectorize_preferred_vector_alignment): New function.
23803         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
23805 2023-05-14  Andrew Pinski  <apinski@marvell.com>
23807         PR tree-optimization/109829
23808         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
23810 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
23812         PR target/109807
23813         * config/i386/i386.cc: Revert the 2023-05-11 change.
23814         (ix86_widen_mult_cost): Return high value instead of
23815         ICEing for unsupported modes.
23817 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
23819         * config/i386/i386.cc (x86_function_profiler): Take
23820         ix86_direct_extern_access into account when generating calls
23821         to __fentry__()
23823 2023-05-14  Pan Li  <pan2.li@intel.com>
23825         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
23826         Refactor the or pattern to switch cases.
23828 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
23830         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
23831         aarch64_expand_vector_init to this, and remove  interleaving case.
23832         Recursively call aarch64_expand_vector_init_fallback, instead of
23833         aarch64_expand_vector_init.
23834         (aarch64_unzip_vector_init): New function.
23835         (aarch64_expand_vector_init): Likewise.
23837 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
23839         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
23840         Pull out function call from the gcc_assert.
23842 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
23844         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
23845         (policy_to_str): New.
23846         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
23848 2023-05-13  Andrew Pinski  <apinski@marvell.com>
23850         PR tree-optimization/109834
23851         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
23852         (popcount(rotate(x,y))->popcount(x)): Likewise.
23854 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
23856         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
23857         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
23858         gen_extend_insn to generate zero/sign extension instructions.
23859         Fix comments.
23860         (ix86_expand_vecop_qihi): Initialize interleave functions
23861         for MULT code only.  Fix comments.
23863 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
23865         PR target/109797
23866         * config/i386/mmx.md (mulv2si3): Remove expander.
23867         (mulv2si3): Rename insn pattern from *mulv2si.
23869 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
23871         PR libstdc++/109816
23872         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
23873         '!lto_stream_offload_p'.
23875 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
23876             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23878         PR target/109743
23879         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
23880         (local_avl_compatible_p): New.
23881         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
23882         for LCM, rewrite as a backward algorithm.
23883         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
23884         interface, handle a BB at once.
23886 2023-05-12  Richard Biener  <rguenther@suse.de>
23888         PR tree-optimization/64731
23889         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
23890         handle TARGET_MEM_REF destinations of stores from vector
23891         CTORs.
23893 2023-05-12  Richard Biener  <rguenther@suse.de>
23895         PR tree-optimization/109791
23896         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
23897         New pattern.
23898         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
23899         Likewise.
23901 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
23903         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
23904         * config/arm/arm-mve-builtins-base.def (vsriq): New.
23905         * config/arm/arm-mve-builtins-base.h (vsriq): New.
23906         * config/arm/arm-mve-builtins.cc
23907         (function_instance::has_inactive_argument): Handle vsriq.
23908         * config/arm/arm_mve.h (vsriq): Remove.
23909         (vsriq_m): Remove.
23910         (vsriq_n_u8): Remove.
23911         (vsriq_n_s8): Remove.
23912         (vsriq_n_u16): Remove.
23913         (vsriq_n_s16): Remove.
23914         (vsriq_n_u32): Remove.
23915         (vsriq_n_s32): Remove.
23916         (vsriq_m_n_s8): Remove.
23917         (vsriq_m_n_u8): Remove.
23918         (vsriq_m_n_s16): Remove.
23919         (vsriq_m_n_u16): Remove.
23920         (vsriq_m_n_s32): Remove.
23921         (vsriq_m_n_u32): Remove.
23922         (__arm_vsriq_n_u8): Remove.
23923         (__arm_vsriq_n_s8): Remove.
23924         (__arm_vsriq_n_u16): Remove.
23925         (__arm_vsriq_n_s16): Remove.
23926         (__arm_vsriq_n_u32): Remove.
23927         (__arm_vsriq_n_s32): Remove.
23928         (__arm_vsriq_m_n_s8): Remove.
23929         (__arm_vsriq_m_n_u8): Remove.
23930         (__arm_vsriq_m_n_s16): Remove.
23931         (__arm_vsriq_m_n_u16): Remove.
23932         (__arm_vsriq_m_n_s32): Remove.
23933         (__arm_vsriq_m_n_u32): Remove.
23934         (__arm_vsriq): Remove.
23935         (__arm_vsriq_m): Remove.
23937 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
23939         * config/arm/iterators.md (mve_insn): Add vsri.
23940         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
23941         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
23942         (mve_vsriq_m_n_<supf><mode>): Rename into ...
23943         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
23945 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
23947         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
23948         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
23950 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
23952         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
23953         * config/arm/arm-mve-builtins-base.def (vsliq): New.
23954         * config/arm/arm-mve-builtins-base.h (vsliq): New.
23955         * config/arm/arm-mve-builtins.cc
23956         (function_instance::has_inactive_argument): Handle vsliq.
23957         * config/arm/arm_mve.h (vsliq): Remove.
23958         (vsliq_m): Remove.
23959         (vsliq_n_u8): Remove.
23960         (vsliq_n_s8): Remove.
23961         (vsliq_n_u16): Remove.
23962         (vsliq_n_s16): Remove.
23963         (vsliq_n_u32): Remove.
23964         (vsliq_n_s32): Remove.
23965         (vsliq_m_n_s8): Remove.
23966         (vsliq_m_n_s32): Remove.
23967         (vsliq_m_n_s16): Remove.
23968         (vsliq_m_n_u8): Remove.
23969         (vsliq_m_n_u32): Remove.
23970         (vsliq_m_n_u16): Remove.
23971         (__arm_vsliq_n_u8): Remove.
23972         (__arm_vsliq_n_s8): Remove.
23973         (__arm_vsliq_n_u16): Remove.
23974         (__arm_vsliq_n_s16): Remove.
23975         (__arm_vsliq_n_u32): Remove.
23976         (__arm_vsliq_n_s32): Remove.
23977         (__arm_vsliq_m_n_s8): Remove.
23978         (__arm_vsliq_m_n_s32): Remove.
23979         (__arm_vsliq_m_n_s16): Remove.
23980         (__arm_vsliq_m_n_u8): Remove.
23981         (__arm_vsliq_m_n_u32): Remove.
23982         (__arm_vsliq_m_n_u16): Remove.
23983         (__arm_vsliq): Remove.
23984         (__arm_vsliq_m): Remove.
23986 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
23988         * config/arm/iterators.md (mve_insn>): Add vsli.
23989         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
23990         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
23991         (mve_vsliq_m_n_<supf><mode>): Rename into ...
23992         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
23994 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
23996         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
23997         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
23999 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24001         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
24002         * config/arm/arm-mve-builtins-base.def (vpselq): New.
24003         * config/arm/arm-mve-builtins-base.h (vpselq): New.
24004         * config/arm/arm_mve.h (vpselq): Remove.
24005         (vpselq_u8): Remove.
24006         (vpselq_s8): Remove.
24007         (vpselq_u16): Remove.
24008         (vpselq_s16): Remove.
24009         (vpselq_u32): Remove.
24010         (vpselq_s32): Remove.
24011         (vpselq_u64): Remove.
24012         (vpselq_s64): Remove.
24013         (vpselq_f16): Remove.
24014         (vpselq_f32): Remove.
24015         (__arm_vpselq_u8): Remove.
24016         (__arm_vpselq_s8): Remove.
24017         (__arm_vpselq_u16): Remove.
24018         (__arm_vpselq_s16): Remove.
24019         (__arm_vpselq_u32): Remove.
24020         (__arm_vpselq_s32): Remove.
24021         (__arm_vpselq_u64): Remove.
24022         (__arm_vpselq_s64): Remove.
24023         (__arm_vpselq_f16): Remove.
24024         (__arm_vpselq_f32): Remove.
24025         (__arm_vpselq): Remove.
24027 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24029         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
24030         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
24032 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24034         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
24035         gen_mve_vpselq.
24036         * config/arm/iterators.md (MVE_VPSELQ_F): New.
24037         (mve_insn): Add vpsel.
24038         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
24039         (@mve_<mve_insn>q_<supf><mode>): ... this.
24040         (@mve_vpselq_f<mode>): Rename into ...
24041         (@mve_<mve_insn>q_f<mode>): ... this.
24043 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24045         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
24046         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
24047         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
24048         * config/arm/arm-mve-builtins.cc
24049         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
24050         vfmsq.
24051         * config/arm/arm_mve.h (vfmaq): Remove.
24052         (vfmasq): Remove.
24053         (vfmsq): Remove.
24054         (vfmaq_m): Remove.
24055         (vfmasq_m): Remove.
24056         (vfmsq_m): Remove.
24057         (vfmaq_f16): Remove.
24058         (vfmaq_n_f16): Remove.
24059         (vfmasq_n_f16): Remove.
24060         (vfmsq_f16): Remove.
24061         (vfmaq_f32): Remove.
24062         (vfmaq_n_f32): Remove.
24063         (vfmasq_n_f32): Remove.
24064         (vfmsq_f32): Remove.
24065         (vfmaq_m_f32): Remove.
24066         (vfmaq_m_f16): Remove.
24067         (vfmaq_m_n_f32): Remove.
24068         (vfmaq_m_n_f16): Remove.
24069         (vfmasq_m_n_f32): Remove.
24070         (vfmasq_m_n_f16): Remove.
24071         (vfmsq_m_f32): Remove.
24072         (vfmsq_m_f16): Remove.
24073         (__arm_vfmaq_f16): Remove.
24074         (__arm_vfmaq_n_f16): Remove.
24075         (__arm_vfmasq_n_f16): Remove.
24076         (__arm_vfmsq_f16): Remove.
24077         (__arm_vfmaq_f32): Remove.
24078         (__arm_vfmaq_n_f32): Remove.
24079         (__arm_vfmasq_n_f32): Remove.
24080         (__arm_vfmsq_f32): Remove.
24081         (__arm_vfmaq_m_f32): Remove.
24082         (__arm_vfmaq_m_f16): Remove.
24083         (__arm_vfmaq_m_n_f32): Remove.
24084         (__arm_vfmaq_m_n_f16): Remove.
24085         (__arm_vfmasq_m_n_f32): Remove.
24086         (__arm_vfmasq_m_n_f16): Remove.
24087         (__arm_vfmsq_m_f32): Remove.
24088         (__arm_vfmsq_m_f16): Remove.
24089         (__arm_vfmaq): Remove.
24090         (__arm_vfmasq): Remove.
24091         (__arm_vfmsq): Remove.
24092         (__arm_vfmaq_m): Remove.
24093         (__arm_vfmasq_m): Remove.
24094         (__arm_vfmsq_m): Remove.
24096 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24098         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
24099         VFMSQ_M_F.
24100         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
24101         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
24102         (mve_insn): Add vfma, vfmas, vfms.
24103         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
24104         into ...
24105         (@mve_<mve_insn>q_f<mode>): ... this.
24106         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
24107         (@mve_<mve_insn>q_n_f<mode>): ... this.
24108         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
24109         @mve_<mve_insn>q_m_f<mode>.
24110         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
24111         @mve_<mve_insn>q_m_n_f<mode>.
24113 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24115         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
24116         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
24118 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24120         * config/arm/arm-mve-builtins-base.cc
24121         (FUNCTION_WITH_RTX_M_N_NO_F): New.
24122         (vmvnq): New.
24123         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
24124         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
24125         * config/arm/arm_mve.h (vmvnq): Remove.
24126         (vmvnq_m): Remove.
24127         (vmvnq_x): Remove.
24128         (vmvnq_s8): Remove.
24129         (vmvnq_s16): Remove.
24130         (vmvnq_s32): Remove.
24131         (vmvnq_n_s16): Remove.
24132         (vmvnq_n_s32): Remove.
24133         (vmvnq_u8): Remove.
24134         (vmvnq_u16): Remove.
24135         (vmvnq_u32): Remove.
24136         (vmvnq_n_u16): Remove.
24137         (vmvnq_n_u32): Remove.
24138         (vmvnq_m_u8): Remove.
24139         (vmvnq_m_s8): Remove.
24140         (vmvnq_m_u16): Remove.
24141         (vmvnq_m_s16): Remove.
24142         (vmvnq_m_u32): Remove.
24143         (vmvnq_m_s32): Remove.
24144         (vmvnq_m_n_s16): Remove.
24145         (vmvnq_m_n_u16): Remove.
24146         (vmvnq_m_n_s32): Remove.
24147         (vmvnq_m_n_u32): Remove.
24148         (vmvnq_x_s8): Remove.
24149         (vmvnq_x_s16): Remove.
24150         (vmvnq_x_s32): Remove.
24151         (vmvnq_x_u8): Remove.
24152         (vmvnq_x_u16): Remove.
24153         (vmvnq_x_u32): Remove.
24154         (vmvnq_x_n_s16): Remove.
24155         (vmvnq_x_n_s32): Remove.
24156         (vmvnq_x_n_u16): Remove.
24157         (vmvnq_x_n_u32): Remove.
24158         (__arm_vmvnq_s8): Remove.
24159         (__arm_vmvnq_s16): Remove.
24160         (__arm_vmvnq_s32): Remove.
24161         (__arm_vmvnq_n_s16): Remove.
24162         (__arm_vmvnq_n_s32): Remove.
24163         (__arm_vmvnq_u8): Remove.
24164         (__arm_vmvnq_u16): Remove.
24165         (__arm_vmvnq_u32): Remove.
24166         (__arm_vmvnq_n_u16): Remove.
24167         (__arm_vmvnq_n_u32): Remove.
24168         (__arm_vmvnq_m_u8): Remove.
24169         (__arm_vmvnq_m_s8): Remove.
24170         (__arm_vmvnq_m_u16): Remove.
24171         (__arm_vmvnq_m_s16): Remove.
24172         (__arm_vmvnq_m_u32): Remove.
24173         (__arm_vmvnq_m_s32): Remove.
24174         (__arm_vmvnq_m_n_s16): Remove.
24175         (__arm_vmvnq_m_n_u16): Remove.
24176         (__arm_vmvnq_m_n_s32): Remove.
24177         (__arm_vmvnq_m_n_u32): Remove.
24178         (__arm_vmvnq_x_s8): Remove.
24179         (__arm_vmvnq_x_s16): Remove.
24180         (__arm_vmvnq_x_s32): Remove.
24181         (__arm_vmvnq_x_u8): Remove.
24182         (__arm_vmvnq_x_u16): Remove.
24183         (__arm_vmvnq_x_u32): Remove.
24184         (__arm_vmvnq_x_n_s16): Remove.
24185         (__arm_vmvnq_x_n_s32): Remove.
24186         (__arm_vmvnq_x_n_u16): Remove.
24187         (__arm_vmvnq_x_n_u32): Remove.
24188         (__arm_vmvnq): Remove.
24189         (__arm_vmvnq_m): Remove.
24190         (__arm_vmvnq_x): Remove.
24192 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24194         * config/arm/iterators.md (mve_insn): Add vmvn.
24195         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
24196         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
24197         (mve_vmvnq_m_<supf><mode>): Rename into ...
24198         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
24199         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
24200         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
24202 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24204         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
24205         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
24207 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24209         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
24210         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
24211         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
24212         * config/arm/arm_mve.h (vbrsrq): Remove.
24213         (vbrsrq_m): Remove.
24214         (vbrsrq_x): Remove.
24215         (vbrsrq_n_f16): Remove.
24216         (vbrsrq_n_f32): Remove.
24217         (vbrsrq_n_u8): Remove.
24218         (vbrsrq_n_s8): Remove.
24219         (vbrsrq_n_u16): Remove.
24220         (vbrsrq_n_s16): Remove.
24221         (vbrsrq_n_u32): Remove.
24222         (vbrsrq_n_s32): Remove.
24223         (vbrsrq_m_n_s8): Remove.
24224         (vbrsrq_m_n_s32): Remove.
24225         (vbrsrq_m_n_s16): Remove.
24226         (vbrsrq_m_n_u8): Remove.
24227         (vbrsrq_m_n_u32): Remove.
24228         (vbrsrq_m_n_u16): Remove.
24229         (vbrsrq_m_n_f32): Remove.
24230         (vbrsrq_m_n_f16): Remove.
24231         (vbrsrq_x_n_s8): Remove.
24232         (vbrsrq_x_n_s16): Remove.
24233         (vbrsrq_x_n_s32): Remove.
24234         (vbrsrq_x_n_u8): Remove.
24235         (vbrsrq_x_n_u16): Remove.
24236         (vbrsrq_x_n_u32): Remove.
24237         (vbrsrq_x_n_f16): Remove.
24238         (vbrsrq_x_n_f32): Remove.
24239         (__arm_vbrsrq_n_u8): Remove.
24240         (__arm_vbrsrq_n_s8): Remove.
24241         (__arm_vbrsrq_n_u16): Remove.
24242         (__arm_vbrsrq_n_s16): Remove.
24243         (__arm_vbrsrq_n_u32): Remove.
24244         (__arm_vbrsrq_n_s32): Remove.
24245         (__arm_vbrsrq_m_n_s8): Remove.
24246         (__arm_vbrsrq_m_n_s32): Remove.
24247         (__arm_vbrsrq_m_n_s16): Remove.
24248         (__arm_vbrsrq_m_n_u8): Remove.
24249         (__arm_vbrsrq_m_n_u32): Remove.
24250         (__arm_vbrsrq_m_n_u16): Remove.
24251         (__arm_vbrsrq_x_n_s8): Remove.
24252         (__arm_vbrsrq_x_n_s16): Remove.
24253         (__arm_vbrsrq_x_n_s32): Remove.
24254         (__arm_vbrsrq_x_n_u8): Remove.
24255         (__arm_vbrsrq_x_n_u16): Remove.
24256         (__arm_vbrsrq_x_n_u32): Remove.
24257         (__arm_vbrsrq_n_f16): Remove.
24258         (__arm_vbrsrq_n_f32): Remove.
24259         (__arm_vbrsrq_m_n_f32): Remove.
24260         (__arm_vbrsrq_m_n_f16): Remove.
24261         (__arm_vbrsrq_x_n_f16): Remove.
24262         (__arm_vbrsrq_x_n_f32): Remove.
24263         (__arm_vbrsrq): Remove.
24264         (__arm_vbrsrq_m): Remove.
24265         (__arm_vbrsrq_x): Remove.
24267 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24269         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
24270         (mve_insn): Add vbrsr.
24271         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
24272         (@mve_<mve_insn>q_n_f<mode>): ... this.
24273         (mve_vbrsrq_n_<supf><mode>): Rename into ...
24274         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
24275         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
24276         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
24277         (mve_vbrsrq_m_n_f<mode>): Rename into ...
24278         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
24280 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24282         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
24283         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
24285 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24287         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
24288         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
24289         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
24290         * config/arm/arm_mve.h (vqshluq): Remove.
24291         (vqshluq_m): Remove.
24292         (vqshluq_n_s8): Remove.
24293         (vqshluq_n_s16): Remove.
24294         (vqshluq_n_s32): Remove.
24295         (vqshluq_m_n_s8): Remove.
24296         (vqshluq_m_n_s16): Remove.
24297         (vqshluq_m_n_s32): Remove.
24298         (__arm_vqshluq_n_s8): Remove.
24299         (__arm_vqshluq_n_s16): Remove.
24300         (__arm_vqshluq_n_s32): Remove.
24301         (__arm_vqshluq_m_n_s8): Remove.
24302         (__arm_vqshluq_m_n_s16): Remove.
24303         (__arm_vqshluq_m_n_s32): Remove.
24304         (__arm_vqshluq): Remove.
24305         (__arm_vqshluq_m): Remove.
24307 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24309         * config/arm/iterators.md (mve_insn): Add vqshlu.
24310         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
24311         (VQSHLUQ_M_N, VQSHLUQ_N): New.
24312         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
24313         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
24314         (mve_vqshluq_m_n_s<mode>): Change name into ...
24315         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
24317 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24319         * config/arm/arm-mve-builtins-shapes.cc
24320         (binary_lshift_unsigned): New.
24321         * config/arm/arm-mve-builtins-shapes.h
24322         (binary_lshift_unsigned): New.
24324 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24326         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
24327         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
24328         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
24329         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
24330         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
24331         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
24332         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
24333         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
24334         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
24335         (vrmlaldavhaxq): Remove.
24336         (vrmlsldavhaq): Remove.
24337         (vrmlsldavhaxq): Remove.
24338         (vrmlaldavhaq_p): Remove.
24339         (vrmlaldavhaxq_p): Remove.
24340         (vrmlsldavhaq_p): Remove.
24341         (vrmlsldavhaxq_p): Remove.
24342         (vrmlaldavhaq_s32): Remove.
24343         (vrmlaldavhaq_u32): Remove.
24344         (vrmlaldavhaxq_s32): Remove.
24345         (vrmlsldavhaq_s32): Remove.
24346         (vrmlsldavhaxq_s32): Remove.
24347         (vrmlaldavhaq_p_s32): Remove.
24348         (vrmlaldavhaq_p_u32): Remove.
24349         (vrmlaldavhaxq_p_s32): Remove.
24350         (vrmlsldavhaq_p_s32): Remove.
24351         (vrmlsldavhaxq_p_s32): Remove.
24352         (__arm_vrmlaldavhaq_s32): Remove.
24353         (__arm_vrmlaldavhaq_u32): Remove.
24354         (__arm_vrmlaldavhaxq_s32): Remove.
24355         (__arm_vrmlsldavhaq_s32): Remove.
24356         (__arm_vrmlsldavhaxq_s32): Remove.
24357         (__arm_vrmlaldavhaq_p_s32): Remove.
24358         (__arm_vrmlaldavhaq_p_u32): Remove.
24359         (__arm_vrmlaldavhaxq_p_s32): Remove.
24360         (__arm_vrmlsldavhaq_p_s32): Remove.
24361         (__arm_vrmlsldavhaxq_p_s32): Remove.
24362         (__arm_vrmlaldavhaq): Remove.
24363         (__arm_vrmlaldavhaxq): Remove.
24364         (__arm_vrmlsldavhaq): Remove.
24365         (__arm_vrmlsldavhaxq): Remove.
24366         (__arm_vrmlaldavhaq_p): Remove.
24367         (__arm_vrmlaldavhaxq_p): Remove.
24368         (__arm_vrmlsldavhaq_p): Remove.
24369         (__arm_vrmlsldavhaxq_p): Remove.
24371 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24373         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
24374         (MVE_VRMLxLDAVHAxQ_P): New.
24375         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
24376         vrmlsldavhax.
24377         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
24378         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
24379         VRMLALDAVHAQ_P_S.
24380         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
24381         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
24382         (mve_vrmlsldavhaq_sv4si): Merge into ...
24383         (@mve_<mve_insn>q_<supf>v4si): ... this.
24384         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
24385         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
24386         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
24387         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
24389 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24391         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
24392         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
24393         New.
24394         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
24395         * config/arm/arm_mve.h (vqdmulltq): Remove.
24396         (vqdmullbq): Remove.
24397         (vqdmullbq_m): Remove.
24398         (vqdmulltq_m): Remove.
24399         (vqdmulltq_s16): Remove.
24400         (vqdmulltq_n_s16): Remove.
24401         (vqdmullbq_s16): Remove.
24402         (vqdmullbq_n_s16): Remove.
24403         (vqdmulltq_s32): Remove.
24404         (vqdmulltq_n_s32): Remove.
24405         (vqdmullbq_s32): Remove.
24406         (vqdmullbq_n_s32): Remove.
24407         (vqdmullbq_m_n_s32): Remove.
24408         (vqdmullbq_m_n_s16): Remove.
24409         (vqdmullbq_m_s32): Remove.
24410         (vqdmullbq_m_s16): Remove.
24411         (vqdmulltq_m_n_s32): Remove.
24412         (vqdmulltq_m_n_s16): Remove.
24413         (vqdmulltq_m_s32): Remove.
24414         (vqdmulltq_m_s16): Remove.
24415         (__arm_vqdmulltq_s16): Remove.
24416         (__arm_vqdmulltq_n_s16): Remove.
24417         (__arm_vqdmullbq_s16): Remove.
24418         (__arm_vqdmullbq_n_s16): Remove.
24419         (__arm_vqdmulltq_s32): Remove.
24420         (__arm_vqdmulltq_n_s32): Remove.
24421         (__arm_vqdmullbq_s32): Remove.
24422         (__arm_vqdmullbq_n_s32): Remove.
24423         (__arm_vqdmullbq_m_n_s32): Remove.
24424         (__arm_vqdmullbq_m_n_s16): Remove.
24425         (__arm_vqdmullbq_m_s32): Remove.
24426         (__arm_vqdmullbq_m_s16): Remove.
24427         (__arm_vqdmulltq_m_n_s32): Remove.
24428         (__arm_vqdmulltq_m_n_s16): Remove.
24429         (__arm_vqdmulltq_m_s32): Remove.
24430         (__arm_vqdmulltq_m_s16): Remove.
24431         (__arm_vqdmulltq): Remove.
24432         (__arm_vqdmullbq): Remove.
24433         (__arm_vqdmullbq_m): Remove.
24434         (__arm_vqdmulltq_m): Remove.
24436 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24438         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
24439         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
24440         (mve_insn): Add vqdmullb, vqdmullt.
24441         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
24442         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
24443         VQDMULLTQ_N_S.
24444         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
24445         (mve_vqdmulltq_n_s<mode>): Merge into ...
24446         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
24447         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
24448         (@mve_<mve_insn>q_<supf><mode>): ... this.
24449         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
24450         ...
24451         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
24452         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
24453         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
24455 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
24457         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
24458         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
24460 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
24462         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
24463         Drop unused parameter.
24464         (riscv_select_multilib): Ditto.
24465         (riscv_compute_multilib): Update call site of
24466         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
24468 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
24470         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
24471         * config/riscv/riscv-protos.h (expand_vec_init): New function.
24472         * config/riscv/riscv-v.cc (class rvv_builder): New class.
24473         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
24474         (rvv_builder::get_merged_repeating_sequence): Ditto.
24475         (expand_vector_init_insert_elems): Ditto.
24476         (expand_vec_init): Ditto.
24477         * config/riscv/vector-iterators.md: New attribute.
24479 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
24481         * config/rs6000/rs6000-builtins.def
24482         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
24483         to xsiexpdp_di.
24484         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
24485         xsiexpdpf to xsiexpdpf_di.
24486         * config/rs6000/vsx.md (xsiexpdp): Rename to...
24487         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
24488         replace TARGET_64BIT with TARGET_POWERPC64.
24489         (xsiexpdpf): Rename to...
24490         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
24491         replace TARGET_64BIT with TARGET_POWERPC64.
24493 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
24495         * config/rs6000/rs6000-builtins.def
24496         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
24497         long long.
24498         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
24499         TARGET_POWERPC64.
24501 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
24503         * config/rs6000/rs6000-builtins.def
24504         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
24505         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
24506         to power9 catalog.
24507         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
24508         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
24509         TARGET_64BIT check.
24510         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
24511         requirement when it has a 64-bit argument.
24513 2023-05-12  Pan Li  <pan2.li@intel.com>
24514             Richard Sandiford  <richard.sandiford@arm.com>
24515             Richard Biener  <rguenther@suse.de>
24516             Jakub Jelinek  <jakub@redhat.com>
24518         * mux-utils.h: Add overload operator == and != for pointer_mux.
24519         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
24520         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
24521         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
24522         (dv_as_decl): Ditto.
24523         (dv_as_opaque): Removed due to unnecessary.
24524         (struct variable_hasher): Take decl_or_value as compare_type.
24525         (variable_hasher::equal): Diito.
24526         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
24527         (dv_from_value): Ditto.
24528         (attrs_list_member):  Ditto.
24529         (vars_copy): Ditto.
24530         (var_reg_decl_set): Ditto.
24531         (var_reg_delete_and_set): Ditto.
24532         (find_loc_in_1pdv): Ditto.
24533         (canonicalize_values_star): Ditto.
24534         (variable_post_merge_new_vals): Ditto.
24535         (dump_onepart_variable_differences): Ditto.
24536         (variable_different_p): Ditto.
24537         (set_slot_part): Ditto.
24538         (clobber_slot_part): Ditto.
24539         (clobber_variable_part): Ditto.
24541 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
24543         * match.pd: simplify vector shift + bit_and + multiply.
24545 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24547         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
24548         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
24549         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
24550         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
24551         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
24552         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
24553         * config/arm/arm-mve-builtins.cc
24554         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
24555         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
24556         * config/arm/arm_mve.h (vqrdmlashq): Remove.
24557         (vqrdmlahq): Remove.
24558         (vqdmlashq): Remove.
24559         (vqdmlahq): Remove.
24560         (vmlasq): Remove.
24561         (vmlaq): Remove.
24562         (vmlaq_m): Remove.
24563         (vmlasq_m): Remove.
24564         (vqdmlashq_m): Remove.
24565         (vqdmlahq_m): Remove.
24566         (vqrdmlahq_m): Remove.
24567         (vqrdmlashq_m): Remove.
24568         (vmlasq_n_u8): Remove.
24569         (vmlaq_n_u8): Remove.
24570         (vqrdmlashq_n_s8): Remove.
24571         (vqrdmlahq_n_s8): Remove.
24572         (vqdmlahq_n_s8): Remove.
24573         (vqdmlashq_n_s8): Remove.
24574         (vmlasq_n_s8): Remove.
24575         (vmlaq_n_s8): Remove.
24576         (vmlasq_n_u16): Remove.
24577         (vmlaq_n_u16): Remove.
24578         (vqrdmlashq_n_s16): Remove.
24579         (vqrdmlahq_n_s16): Remove.
24580         (vqdmlashq_n_s16): Remove.
24581         (vqdmlahq_n_s16): Remove.
24582         (vmlasq_n_s16): Remove.
24583         (vmlaq_n_s16): Remove.
24584         (vmlasq_n_u32): Remove.
24585         (vmlaq_n_u32): Remove.
24586         (vqrdmlashq_n_s32): Remove.
24587         (vqrdmlahq_n_s32): Remove.
24588         (vqdmlashq_n_s32): Remove.
24589         (vqdmlahq_n_s32): Remove.
24590         (vmlasq_n_s32): Remove.
24591         (vmlaq_n_s32): Remove.
24592         (vmlaq_m_n_s8): Remove.
24593         (vmlaq_m_n_s32): Remove.
24594         (vmlaq_m_n_s16): Remove.
24595         (vmlaq_m_n_u8): Remove.
24596         (vmlaq_m_n_u32): Remove.
24597         (vmlaq_m_n_u16): Remove.
24598         (vmlasq_m_n_s8): Remove.
24599         (vmlasq_m_n_s32): Remove.
24600         (vmlasq_m_n_s16): Remove.
24601         (vmlasq_m_n_u8): Remove.
24602         (vmlasq_m_n_u32): Remove.
24603         (vmlasq_m_n_u16): Remove.
24604         (vqdmlashq_m_n_s8): Remove.
24605         (vqdmlashq_m_n_s32): Remove.
24606         (vqdmlashq_m_n_s16): Remove.
24607         (vqdmlahq_m_n_s8): Remove.
24608         (vqdmlahq_m_n_s32): Remove.
24609         (vqdmlahq_m_n_s16): Remove.
24610         (vqrdmlahq_m_n_s8): Remove.
24611         (vqrdmlahq_m_n_s32): Remove.
24612         (vqrdmlahq_m_n_s16): Remove.
24613         (vqrdmlashq_m_n_s8): Remove.
24614         (vqrdmlashq_m_n_s32): Remove.
24615         (vqrdmlashq_m_n_s16): Remove.
24616         (__arm_vmlasq_n_u8): Remove.
24617         (__arm_vmlaq_n_u8): Remove.
24618         (__arm_vqrdmlashq_n_s8): Remove.
24619         (__arm_vqdmlashq_n_s8): Remove.
24620         (__arm_vqrdmlahq_n_s8): Remove.
24621         (__arm_vqdmlahq_n_s8): Remove.
24622         (__arm_vmlasq_n_s8): Remove.
24623         (__arm_vmlaq_n_s8): Remove.
24624         (__arm_vmlasq_n_u16): Remove.
24625         (__arm_vmlaq_n_u16): Remove.
24626         (__arm_vqrdmlashq_n_s16): Remove.
24627         (__arm_vqdmlashq_n_s16): Remove.
24628         (__arm_vqrdmlahq_n_s16): Remove.
24629         (__arm_vqdmlahq_n_s16): Remove.
24630         (__arm_vmlasq_n_s16): Remove.
24631         (__arm_vmlaq_n_s16): Remove.
24632         (__arm_vmlasq_n_u32): Remove.
24633         (__arm_vmlaq_n_u32): Remove.
24634         (__arm_vqrdmlashq_n_s32): Remove.
24635         (__arm_vqdmlashq_n_s32): Remove.
24636         (__arm_vqrdmlahq_n_s32): Remove.
24637         (__arm_vqdmlahq_n_s32): Remove.
24638         (__arm_vmlasq_n_s32): Remove.
24639         (__arm_vmlaq_n_s32): Remove.
24640         (__arm_vmlaq_m_n_s8): Remove.
24641         (__arm_vmlaq_m_n_s32): Remove.
24642         (__arm_vmlaq_m_n_s16): Remove.
24643         (__arm_vmlaq_m_n_u8): Remove.
24644         (__arm_vmlaq_m_n_u32): Remove.
24645         (__arm_vmlaq_m_n_u16): Remove.
24646         (__arm_vmlasq_m_n_s8): Remove.
24647         (__arm_vmlasq_m_n_s32): Remove.
24648         (__arm_vmlasq_m_n_s16): Remove.
24649         (__arm_vmlasq_m_n_u8): Remove.
24650         (__arm_vmlasq_m_n_u32): Remove.
24651         (__arm_vmlasq_m_n_u16): Remove.
24652         (__arm_vqdmlahq_m_n_s8): Remove.
24653         (__arm_vqdmlahq_m_n_s32): Remove.
24654         (__arm_vqdmlahq_m_n_s16): Remove.
24655         (__arm_vqrdmlahq_m_n_s8): Remove.
24656         (__arm_vqrdmlahq_m_n_s32): Remove.
24657         (__arm_vqrdmlahq_m_n_s16): Remove.
24658         (__arm_vqrdmlashq_m_n_s8): Remove.
24659         (__arm_vqrdmlashq_m_n_s32): Remove.
24660         (__arm_vqrdmlashq_m_n_s16): Remove.
24661         (__arm_vqdmlashq_m_n_s8): Remove.
24662         (__arm_vqdmlashq_m_n_s16): Remove.
24663         (__arm_vqdmlashq_m_n_s32): Remove.
24664         (__arm_vmlasq): Remove.
24665         (__arm_vmlaq): Remove.
24666         (__arm_vqrdmlashq): Remove.
24667         (__arm_vqdmlashq): Remove.
24668         (__arm_vqrdmlahq): Remove.
24669         (__arm_vqdmlahq): Remove.
24670         (__arm_vmlaq_m): Remove.
24671         (__arm_vmlasq_m): Remove.
24672         (__arm_vqdmlahq_m): Remove.
24673         (__arm_vqrdmlahq_m): Remove.
24674         (__arm_vqrdmlashq_m): Remove.
24675         (__arm_vqdmlashq_m): Remove.
24677 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24679         * config/arm/iterators.md (MVE_VMLxQ_N): New.
24680         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
24681         vqrdmlash.
24682         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
24683         VQRDMLASHQ_N_S.
24684         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
24685         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
24686         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
24687         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
24688         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
24690 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24692         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
24693         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
24695 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24697         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
24698         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
24699         (vqrdmlsdhxq): New.
24700         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
24701         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
24702         (vqrdmlsdhxq): New.
24703         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
24704         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
24705         (vqrdmlsdhxq): New.
24706         * config/arm/arm-mve-builtins.cc
24707         (function_instance::has_inactive_argument): Handle vqrdmladhq,
24708         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
24709         vqdmlsdhq, vqdmlsdhxq.
24710         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
24711         (vqrdmlsdhq): Remove.
24712         (vqrdmladhxq): Remove.
24713         (vqrdmladhq): Remove.
24714         (vqdmlsdhxq): Remove.
24715         (vqdmlsdhq): Remove.
24716         (vqdmladhxq): Remove.
24717         (vqdmladhq): Remove.
24718         (vqdmladhq_m): Remove.
24719         (vqdmladhxq_m): Remove.
24720         (vqdmlsdhq_m): Remove.
24721         (vqdmlsdhxq_m): Remove.
24722         (vqrdmladhq_m): Remove.
24723         (vqrdmladhxq_m): Remove.
24724         (vqrdmlsdhq_m): Remove.
24725         (vqrdmlsdhxq_m): Remove.
24726         (vqrdmlsdhxq_s8): Remove.
24727         (vqrdmlsdhq_s8): Remove.
24728         (vqrdmladhxq_s8): Remove.
24729         (vqrdmladhq_s8): Remove.
24730         (vqdmlsdhxq_s8): Remove.
24731         (vqdmlsdhq_s8): Remove.
24732         (vqdmladhxq_s8): Remove.
24733         (vqdmladhq_s8): Remove.
24734         (vqrdmlsdhxq_s16): Remove.
24735         (vqrdmlsdhq_s16): Remove.
24736         (vqrdmladhxq_s16): Remove.
24737         (vqrdmladhq_s16): Remove.
24738         (vqdmlsdhxq_s16): Remove.
24739         (vqdmlsdhq_s16): Remove.
24740         (vqdmladhxq_s16): Remove.
24741         (vqdmladhq_s16): Remove.
24742         (vqrdmlsdhxq_s32): Remove.
24743         (vqrdmlsdhq_s32): Remove.
24744         (vqrdmladhxq_s32): Remove.
24745         (vqrdmladhq_s32): Remove.
24746         (vqdmlsdhxq_s32): Remove.
24747         (vqdmlsdhq_s32): Remove.
24748         (vqdmladhxq_s32): Remove.
24749         (vqdmladhq_s32): Remove.
24750         (vqdmladhq_m_s8): Remove.
24751         (vqdmladhq_m_s32): Remove.
24752         (vqdmladhq_m_s16): Remove.
24753         (vqdmladhxq_m_s8): Remove.
24754         (vqdmladhxq_m_s32): Remove.
24755         (vqdmladhxq_m_s16): Remove.
24756         (vqdmlsdhq_m_s8): Remove.
24757         (vqdmlsdhq_m_s32): Remove.
24758         (vqdmlsdhq_m_s16): Remove.
24759         (vqdmlsdhxq_m_s8): Remove.
24760         (vqdmlsdhxq_m_s32): Remove.
24761         (vqdmlsdhxq_m_s16): Remove.
24762         (vqrdmladhq_m_s8): Remove.
24763         (vqrdmladhq_m_s32): Remove.
24764         (vqrdmladhq_m_s16): Remove.
24765         (vqrdmladhxq_m_s8): Remove.
24766         (vqrdmladhxq_m_s32): Remove.
24767         (vqrdmladhxq_m_s16): Remove.
24768         (vqrdmlsdhq_m_s8): Remove.
24769         (vqrdmlsdhq_m_s32): Remove.
24770         (vqrdmlsdhq_m_s16): Remove.
24771         (vqrdmlsdhxq_m_s8): Remove.
24772         (vqrdmlsdhxq_m_s32): Remove.
24773         (vqrdmlsdhxq_m_s16): Remove.
24774         (__arm_vqrdmlsdhxq_s8): Remove.
24775         (__arm_vqrdmlsdhq_s8): Remove.
24776         (__arm_vqrdmladhxq_s8): Remove.
24777         (__arm_vqrdmladhq_s8): Remove.
24778         (__arm_vqdmlsdhxq_s8): Remove.
24779         (__arm_vqdmlsdhq_s8): Remove.
24780         (__arm_vqdmladhxq_s8): Remove.
24781         (__arm_vqdmladhq_s8): Remove.
24782         (__arm_vqrdmlsdhxq_s16): Remove.
24783         (__arm_vqrdmlsdhq_s16): Remove.
24784         (__arm_vqrdmladhxq_s16): Remove.
24785         (__arm_vqrdmladhq_s16): Remove.
24786         (__arm_vqdmlsdhxq_s16): Remove.
24787         (__arm_vqdmlsdhq_s16): Remove.
24788         (__arm_vqdmladhxq_s16): Remove.
24789         (__arm_vqdmladhq_s16): Remove.
24790         (__arm_vqrdmlsdhxq_s32): Remove.
24791         (__arm_vqrdmlsdhq_s32): Remove.
24792         (__arm_vqrdmladhxq_s32): Remove.
24793         (__arm_vqrdmladhq_s32): Remove.
24794         (__arm_vqdmlsdhxq_s32): Remove.
24795         (__arm_vqdmlsdhq_s32): Remove.
24796         (__arm_vqdmladhxq_s32): Remove.
24797         (__arm_vqdmladhq_s32): Remove.
24798         (__arm_vqdmladhq_m_s8): Remove.
24799         (__arm_vqdmladhq_m_s32): Remove.
24800         (__arm_vqdmladhq_m_s16): Remove.
24801         (__arm_vqdmladhxq_m_s8): Remove.
24802         (__arm_vqdmladhxq_m_s32): Remove.
24803         (__arm_vqdmladhxq_m_s16): Remove.
24804         (__arm_vqdmlsdhq_m_s8): Remove.
24805         (__arm_vqdmlsdhq_m_s32): Remove.
24806         (__arm_vqdmlsdhq_m_s16): Remove.
24807         (__arm_vqdmlsdhxq_m_s8): Remove.
24808         (__arm_vqdmlsdhxq_m_s32): Remove.
24809         (__arm_vqdmlsdhxq_m_s16): Remove.
24810         (__arm_vqrdmladhq_m_s8): Remove.
24811         (__arm_vqrdmladhq_m_s32): Remove.
24812         (__arm_vqrdmladhq_m_s16): Remove.
24813         (__arm_vqrdmladhxq_m_s8): Remove.
24814         (__arm_vqrdmladhxq_m_s32): Remove.
24815         (__arm_vqrdmladhxq_m_s16): Remove.
24816         (__arm_vqrdmlsdhq_m_s8): Remove.
24817         (__arm_vqrdmlsdhq_m_s32): Remove.
24818         (__arm_vqrdmlsdhq_m_s16): Remove.
24819         (__arm_vqrdmlsdhxq_m_s8): Remove.
24820         (__arm_vqrdmlsdhxq_m_s32): Remove.
24821         (__arm_vqrdmlsdhxq_m_s16): Remove.
24822         (__arm_vqrdmlsdhxq): Remove.
24823         (__arm_vqrdmlsdhq): Remove.
24824         (__arm_vqrdmladhxq): Remove.
24825         (__arm_vqrdmladhq): Remove.
24826         (__arm_vqdmlsdhxq): Remove.
24827         (__arm_vqdmlsdhq): Remove.
24828         (__arm_vqdmladhxq): Remove.
24829         (__arm_vqdmladhq): Remove.
24830         (__arm_vqdmladhq_m): Remove.
24831         (__arm_vqdmladhxq_m): Remove.
24832         (__arm_vqdmlsdhq_m): Remove.
24833         (__arm_vqdmlsdhxq_m): Remove.
24834         (__arm_vqrdmladhq_m): Remove.
24835         (__arm_vqrdmladhxq_m): Remove.
24836         (__arm_vqrdmlsdhq_m): Remove.
24837         (__arm_vqrdmlsdhxq_m): Remove.
24839 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24841         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
24842         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
24843         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
24844         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
24845         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
24846         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
24847         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
24848         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
24849         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
24850         (mve_vqdmladhq_s<mode>): Merge into ...
24851         (@mve_<mve_insn>q_<supf><mode>): ... this.
24853 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24855         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
24856         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
24858 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24860         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
24861         (vmlsldavaq, vmlsldavaxq): New.
24862         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
24863         (vmlsldavaq, vmlsldavaxq): New.
24864         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
24865         (vmlsldavaq, vmlsldavaxq): New.
24866         * config/arm/arm_mve.h (vmlaldavaq): Remove.
24867         (vmlaldavaxq): Remove.
24868         (vmlsldavaq): Remove.
24869         (vmlsldavaxq): Remove.
24870         (vmlaldavaq_p): Remove.
24871         (vmlaldavaxq_p): Remove.
24872         (vmlsldavaq_p): Remove.
24873         (vmlsldavaxq_p): Remove.
24874         (vmlaldavaq_s16): Remove.
24875         (vmlaldavaxq_s16): Remove.
24876         (vmlsldavaq_s16): Remove.
24877         (vmlsldavaxq_s16): Remove.
24878         (vmlaldavaq_u16): Remove.
24879         (vmlaldavaq_s32): Remove.
24880         (vmlaldavaxq_s32): Remove.
24881         (vmlsldavaq_s32): Remove.
24882         (vmlsldavaxq_s32): Remove.
24883         (vmlaldavaq_u32): Remove.
24884         (vmlaldavaq_p_s32): Remove.
24885         (vmlaldavaq_p_s16): Remove.
24886         (vmlaldavaq_p_u32): Remove.
24887         (vmlaldavaq_p_u16): Remove.
24888         (vmlaldavaxq_p_s32): Remove.
24889         (vmlaldavaxq_p_s16): Remove.
24890         (vmlsldavaq_p_s32): Remove.
24891         (vmlsldavaq_p_s16): Remove.
24892         (vmlsldavaxq_p_s32): Remove.
24893         (vmlsldavaxq_p_s16): Remove.
24894         (__arm_vmlaldavaq_s16): Remove.
24895         (__arm_vmlaldavaxq_s16): Remove.
24896         (__arm_vmlsldavaq_s16): Remove.
24897         (__arm_vmlsldavaxq_s16): Remove.
24898         (__arm_vmlaldavaq_u16): Remove.
24899         (__arm_vmlaldavaq_s32): Remove.
24900         (__arm_vmlaldavaxq_s32): Remove.
24901         (__arm_vmlsldavaq_s32): Remove.
24902         (__arm_vmlsldavaxq_s32): Remove.
24903         (__arm_vmlaldavaq_u32): Remove.
24904         (__arm_vmlaldavaq_p_s32): Remove.
24905         (__arm_vmlaldavaq_p_s16): Remove.
24906         (__arm_vmlaldavaq_p_u32): Remove.
24907         (__arm_vmlaldavaq_p_u16): Remove.
24908         (__arm_vmlaldavaxq_p_s32): Remove.
24909         (__arm_vmlaldavaxq_p_s16): Remove.
24910         (__arm_vmlsldavaq_p_s32): Remove.
24911         (__arm_vmlsldavaq_p_s16): Remove.
24912         (__arm_vmlsldavaxq_p_s32): Remove.
24913         (__arm_vmlsldavaxq_p_s16): Remove.
24914         (__arm_vmlaldavaq): Remove.
24915         (__arm_vmlaldavaxq): Remove.
24916         (__arm_vmlsldavaq): Remove.
24917         (__arm_vmlsldavaxq): Remove.
24918         (__arm_vmlaldavaq_p): Remove.
24919         (__arm_vmlaldavaxq_p): Remove.
24920         (__arm_vmlsldavaq_p): Remove.
24921         (__arm_vmlsldavaxq_p): Remove.
24923 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24925         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
24926         New.
24927         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
24928         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
24929         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
24930         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
24931         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
24932         (mve_vmlaldavaxq_s<mode>): Merge into ...
24933         (@mve_<mve_insn>q_<supf><mode>): ... this.
24934         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
24935         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
24936         ...
24937         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
24939 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24941         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
24942         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
24944 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24946         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
24947         (vrmlsldavhq, vrmlsldavhxq): New.
24948         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
24949         (vrmlsldavhq, vrmlsldavhxq): New.
24950         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
24951         (vrmlsldavhq, vrmlsldavhxq): New.
24952         * config/arm/arm-mve-builtins-functions.h
24953         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
24954         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
24955         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
24956         (vrmlsldavhxq): Remove.
24957         (vrmlsldavhq): Remove.
24958         (vrmlaldavhxq): Remove.
24959         (vrmlaldavhq_p): Remove.
24960         (vrmlaldavhxq_p): Remove.
24961         (vrmlsldavhq_p): Remove.
24962         (vrmlsldavhxq_p): Remove.
24963         (vrmlaldavhq_u32): Remove.
24964         (vrmlsldavhxq_s32): Remove.
24965         (vrmlsldavhq_s32): Remove.
24966         (vrmlaldavhxq_s32): Remove.
24967         (vrmlaldavhq_s32): Remove.
24968         (vrmlaldavhq_p_s32): Remove.
24969         (vrmlaldavhxq_p_s32): Remove.
24970         (vrmlsldavhq_p_s32): Remove.
24971         (vrmlsldavhxq_p_s32): Remove.
24972         (vrmlaldavhq_p_u32): Remove.
24973         (__arm_vrmlaldavhq_u32): Remove.
24974         (__arm_vrmlsldavhxq_s32): Remove.
24975         (__arm_vrmlsldavhq_s32): Remove.
24976         (__arm_vrmlaldavhxq_s32): Remove.
24977         (__arm_vrmlaldavhq_s32): Remove.
24978         (__arm_vrmlaldavhq_p_s32): Remove.
24979         (__arm_vrmlaldavhxq_p_s32): Remove.
24980         (__arm_vrmlsldavhq_p_s32): Remove.
24981         (__arm_vrmlsldavhxq_p_s32): Remove.
24982         (__arm_vrmlaldavhq_p_u32): Remove.
24983         (__arm_vrmlaldavhq): Remove.
24984         (__arm_vrmlsldavhxq): Remove.
24985         (__arm_vrmlsldavhq): Remove.
24986         (__arm_vrmlaldavhxq): Remove.
24987         (__arm_vrmlaldavhq_p): Remove.
24988         (__arm_vrmlaldavhxq_p): Remove.
24989         (__arm_vrmlsldavhq_p): Remove.
24990         (__arm_vrmlsldavhxq_p): Remove.
24992 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
24994         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
24995         New.
24996         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
24997         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
24998         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
24999         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
25000         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
25001         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
25002         (@mve_<mve_insn>q_<supf>v4si): ... this.
25003         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
25004         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
25005         into ...
25006         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
25008 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25010         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
25011         (vmlsldavq, vmlsldavxq): New.
25012         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
25013         (vmlsldavq, vmlsldavxq): New.
25014         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
25015         (vmlsldavq, vmlsldavxq): New.
25016         * config/arm/arm_mve.h (vmlaldavq): Remove.
25017         (vmlsldavxq): Remove.
25018         (vmlsldavq): Remove.
25019         (vmlaldavxq): Remove.
25020         (vmlaldavq_p): Remove.
25021         (vmlaldavxq_p): Remove.
25022         (vmlsldavq_p): Remove.
25023         (vmlsldavxq_p): Remove.
25024         (vmlaldavq_u16): Remove.
25025         (vmlsldavxq_s16): Remove.
25026         (vmlsldavq_s16): Remove.
25027         (vmlaldavxq_s16): Remove.
25028         (vmlaldavq_s16): Remove.
25029         (vmlaldavq_u32): Remove.
25030         (vmlsldavxq_s32): Remove.
25031         (vmlsldavq_s32): Remove.
25032         (vmlaldavxq_s32): Remove.
25033         (vmlaldavq_s32): Remove.
25034         (vmlaldavq_p_s16): Remove.
25035         (vmlaldavxq_p_s16): Remove.
25036         (vmlsldavq_p_s16): Remove.
25037         (vmlsldavxq_p_s16): Remove.
25038         (vmlaldavq_p_u16): Remove.
25039         (vmlaldavq_p_s32): Remove.
25040         (vmlaldavxq_p_s32): Remove.
25041         (vmlsldavq_p_s32): Remove.
25042         (vmlsldavxq_p_s32): Remove.
25043         (vmlaldavq_p_u32): Remove.
25044         (__arm_vmlaldavq_u16): Remove.
25045         (__arm_vmlsldavxq_s16): Remove.
25046         (__arm_vmlsldavq_s16): Remove.
25047         (__arm_vmlaldavxq_s16): Remove.
25048         (__arm_vmlaldavq_s16): Remove.
25049         (__arm_vmlaldavq_u32): Remove.
25050         (__arm_vmlsldavxq_s32): Remove.
25051         (__arm_vmlsldavq_s32): Remove.
25052         (__arm_vmlaldavxq_s32): Remove.
25053         (__arm_vmlaldavq_s32): Remove.
25054         (__arm_vmlaldavq_p_s16): Remove.
25055         (__arm_vmlaldavxq_p_s16): Remove.
25056         (__arm_vmlsldavq_p_s16): Remove.
25057         (__arm_vmlsldavxq_p_s16): Remove.
25058         (__arm_vmlaldavq_p_u16): Remove.
25059         (__arm_vmlaldavq_p_s32): Remove.
25060         (__arm_vmlaldavxq_p_s32): Remove.
25061         (__arm_vmlsldavq_p_s32): Remove.
25062         (__arm_vmlsldavxq_p_s32): Remove.
25063         (__arm_vmlaldavq_p_u32): Remove.
25064         (__arm_vmlaldavq): Remove.
25065         (__arm_vmlsldavxq): Remove.
25066         (__arm_vmlsldavq): Remove.
25067         (__arm_vmlaldavxq): Remove.
25068         (__arm_vmlaldavq_p): Remove.
25069         (__arm_vmlaldavxq_p): Remove.
25070         (__arm_vmlsldavq_p): Remove.
25071         (__arm_vmlsldavxq_p): Remove.
25073 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25075         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
25076         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
25077         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
25078         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
25079         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
25080         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
25081         (mve_vmlsldavxq_s<mode>): Merge into ...
25082         (@mve_<mve_insn>q_<supf><mode>): ... this.
25083         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
25084         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
25085         ...
25086         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
25088 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25090         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
25091         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
25093 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25095         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
25096         * config/arm/arm-mve-builtins-base.def (vabavq): New.
25097         * config/arm/arm-mve-builtins-base.h (vabavq): New.
25098         * config/arm/arm_mve.h (vabavq): Remove.
25099         (vabavq_p): Remove.
25100         (vabavq_s8): Remove.
25101         (vabavq_s16): Remove.
25102         (vabavq_s32): Remove.
25103         (vabavq_u8): Remove.
25104         (vabavq_u16): Remove.
25105         (vabavq_u32): Remove.
25106         (vabavq_p_s8): Remove.
25107         (vabavq_p_u8): Remove.
25108         (vabavq_p_s16): Remove.
25109         (vabavq_p_u16): Remove.
25110         (vabavq_p_s32): Remove.
25111         (vabavq_p_u32): Remove.
25112         (__arm_vabavq_s8): Remove.
25113         (__arm_vabavq_s16): Remove.
25114         (__arm_vabavq_s32): Remove.
25115         (__arm_vabavq_u8): Remove.
25116         (__arm_vabavq_u16): Remove.
25117         (__arm_vabavq_u32): Remove.
25118         (__arm_vabavq_p_s8): Remove.
25119         (__arm_vabavq_p_u8): Remove.
25120         (__arm_vabavq_p_s16): Remove.
25121         (__arm_vabavq_p_u16): Remove.
25122         (__arm_vabavq_p_s32): Remove.
25123         (__arm_vabavq_p_u32): Remove.
25124         (__arm_vabavq): Remove.
25125         (__arm_vabavq_p): Remove.
25127 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25129         * config/arm/iterators.md (mve_insn): Add vabav.
25130         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
25131         (@mve_<mve_insn>q_<supf><mode>): ... this,.
25132         (mve_vabavq_p_<supf><mode>): Rename into ...
25133         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
25135 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25137         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
25138         (vmlsdavaq, vmlsdavaxq): New.
25139         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
25140         (vmlsdavaq, vmlsdavaxq): New.
25141         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
25142         (vmlsdavaq, vmlsdavaxq): New.
25143         * config/arm/arm_mve.h (vmladavaq): Remove.
25144         (vmlsdavaxq): Remove.
25145         (vmlsdavaq): Remove.
25146         (vmladavaxq): Remove.
25147         (vmladavaq_p): Remove.
25148         (vmladavaxq_p): Remove.
25149         (vmlsdavaq_p): Remove.
25150         (vmlsdavaxq_p): Remove.
25151         (vmladavaq_u8): Remove.
25152         (vmlsdavaxq_s8): Remove.
25153         (vmlsdavaq_s8): Remove.
25154         (vmladavaxq_s8): Remove.
25155         (vmladavaq_s8): Remove.
25156         (vmladavaq_u16): Remove.
25157         (vmlsdavaxq_s16): Remove.
25158         (vmlsdavaq_s16): Remove.
25159         (vmladavaxq_s16): Remove.
25160         (vmladavaq_s16): Remove.
25161         (vmladavaq_u32): Remove.
25162         (vmlsdavaxq_s32): Remove.
25163         (vmlsdavaq_s32): Remove.
25164         (vmladavaxq_s32): Remove.
25165         (vmladavaq_s32): Remove.
25166         (vmladavaq_p_s8): Remove.
25167         (vmladavaq_p_s32): Remove.
25168         (vmladavaq_p_s16): Remove.
25169         (vmladavaq_p_u8): Remove.
25170         (vmladavaq_p_u32): Remove.
25171         (vmladavaq_p_u16): Remove.
25172         (vmladavaxq_p_s8): Remove.
25173         (vmladavaxq_p_s32): Remove.
25174         (vmladavaxq_p_s16): Remove.
25175         (vmlsdavaq_p_s8): Remove.
25176         (vmlsdavaq_p_s32): Remove.
25177         (vmlsdavaq_p_s16): Remove.
25178         (vmlsdavaxq_p_s8): Remove.
25179         (vmlsdavaxq_p_s32): Remove.
25180         (vmlsdavaxq_p_s16): Remove.
25181         (__arm_vmladavaq_u8): Remove.
25182         (__arm_vmlsdavaxq_s8): Remove.
25183         (__arm_vmlsdavaq_s8): Remove.
25184         (__arm_vmladavaxq_s8): Remove.
25185         (__arm_vmladavaq_s8): Remove.
25186         (__arm_vmladavaq_u16): Remove.
25187         (__arm_vmlsdavaxq_s16): Remove.
25188         (__arm_vmlsdavaq_s16): Remove.
25189         (__arm_vmladavaxq_s16): Remove.
25190         (__arm_vmladavaq_s16): Remove.
25191         (__arm_vmladavaq_u32): Remove.
25192         (__arm_vmlsdavaxq_s32): Remove.
25193         (__arm_vmlsdavaq_s32): Remove.
25194         (__arm_vmladavaxq_s32): Remove.
25195         (__arm_vmladavaq_s32): Remove.
25196         (__arm_vmladavaq_p_s8): Remove.
25197         (__arm_vmladavaq_p_s32): Remove.
25198         (__arm_vmladavaq_p_s16): Remove.
25199         (__arm_vmladavaq_p_u8): Remove.
25200         (__arm_vmladavaq_p_u32): Remove.
25201         (__arm_vmladavaq_p_u16): Remove.
25202         (__arm_vmladavaxq_p_s8): Remove.
25203         (__arm_vmladavaxq_p_s32): Remove.
25204         (__arm_vmladavaxq_p_s16): Remove.
25205         (__arm_vmlsdavaq_p_s8): Remove.
25206         (__arm_vmlsdavaq_p_s32): Remove.
25207         (__arm_vmlsdavaq_p_s16): Remove.
25208         (__arm_vmlsdavaxq_p_s8): Remove.
25209         (__arm_vmlsdavaxq_p_s32): Remove.
25210         (__arm_vmlsdavaxq_p_s16): Remove.
25211         (__arm_vmladavaq): Remove.
25212         (__arm_vmlsdavaxq): Remove.
25213         (__arm_vmlsdavaq): Remove.
25214         (__arm_vmladavaxq): Remove.
25215         (__arm_vmladavaq_p): Remove.
25216         (__arm_vmladavaxq_p): Remove.
25217         (__arm_vmlsdavaq_p): Remove.
25218         (__arm_vmlsdavaxq_p): Remove.
25220 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25222         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
25223         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
25225 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25227         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
25228         (vmlsdavq, vmlsdavxq): New.
25229         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
25230         (vmlsdavq, vmlsdavxq): New.
25231         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
25232         (vmlsdavq, vmlsdavxq): New.
25233         * config/arm/arm_mve.h (vmladavq): Remove.
25234         (vmlsdavxq): Remove.
25235         (vmlsdavq): Remove.
25236         (vmladavxq): Remove.
25237         (vmladavq_p): Remove.
25238         (vmlsdavxq_p): Remove.
25239         (vmlsdavq_p): Remove.
25240         (vmladavxq_p): Remove.
25241         (vmladavq_u8): Remove.
25242         (vmlsdavxq_s8): Remove.
25243         (vmlsdavq_s8): Remove.
25244         (vmladavxq_s8): Remove.
25245         (vmladavq_s8): Remove.
25246         (vmladavq_u16): Remove.
25247         (vmlsdavxq_s16): Remove.
25248         (vmlsdavq_s16): Remove.
25249         (vmladavxq_s16): Remove.
25250         (vmladavq_s16): Remove.
25251         (vmladavq_u32): Remove.
25252         (vmlsdavxq_s32): Remove.
25253         (vmlsdavq_s32): Remove.
25254         (vmladavxq_s32): Remove.
25255         (vmladavq_s32): Remove.
25256         (vmladavq_p_u8): Remove.
25257         (vmlsdavxq_p_s8): Remove.
25258         (vmlsdavq_p_s8): Remove.
25259         (vmladavxq_p_s8): Remove.
25260         (vmladavq_p_s8): Remove.
25261         (vmladavq_p_u16): Remove.
25262         (vmlsdavxq_p_s16): Remove.
25263         (vmlsdavq_p_s16): Remove.
25264         (vmladavxq_p_s16): Remove.
25265         (vmladavq_p_s16): Remove.
25266         (vmladavq_p_u32): Remove.
25267         (vmlsdavxq_p_s32): Remove.
25268         (vmlsdavq_p_s32): Remove.
25269         (vmladavxq_p_s32): Remove.
25270         (vmladavq_p_s32): Remove.
25271         (__arm_vmladavq_u8): Remove.
25272         (__arm_vmlsdavxq_s8): Remove.
25273         (__arm_vmlsdavq_s8): Remove.
25274         (__arm_vmladavxq_s8): Remove.
25275         (__arm_vmladavq_s8): Remove.
25276         (__arm_vmladavq_u16): Remove.
25277         (__arm_vmlsdavxq_s16): Remove.
25278         (__arm_vmlsdavq_s16): Remove.
25279         (__arm_vmladavxq_s16): Remove.
25280         (__arm_vmladavq_s16): Remove.
25281         (__arm_vmladavq_u32): Remove.
25282         (__arm_vmlsdavxq_s32): Remove.
25283         (__arm_vmlsdavq_s32): Remove.
25284         (__arm_vmladavxq_s32): Remove.
25285         (__arm_vmladavq_s32): Remove.
25286         (__arm_vmladavq_p_u8): Remove.
25287         (__arm_vmlsdavxq_p_s8): Remove.
25288         (__arm_vmlsdavq_p_s8): Remove.
25289         (__arm_vmladavxq_p_s8): Remove.
25290         (__arm_vmladavq_p_s8): Remove.
25291         (__arm_vmladavq_p_u16): Remove.
25292         (__arm_vmlsdavxq_p_s16): Remove.
25293         (__arm_vmlsdavq_p_s16): Remove.
25294         (__arm_vmladavxq_p_s16): Remove.
25295         (__arm_vmladavq_p_s16): Remove.
25296         (__arm_vmladavq_p_u32): Remove.
25297         (__arm_vmlsdavxq_p_s32): Remove.
25298         (__arm_vmlsdavq_p_s32): Remove.
25299         (__arm_vmladavxq_p_s32): Remove.
25300         (__arm_vmladavq_p_s32): Remove.
25301         (__arm_vmladavq): Remove.
25302         (__arm_vmlsdavxq): Remove.
25303         (__arm_vmlsdavq): Remove.
25304         (__arm_vmladavxq): Remove.
25305         (__arm_vmladavq_p): Remove.
25306         (__arm_vmlsdavxq_p): Remove.
25307         (__arm_vmlsdavq_p): Remove.
25308         (__arm_vmladavxq_p): Remove.
25310 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25312         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
25313         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
25314         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
25315         vmlsdavax, vmlsdav, vmlsdavx.
25316         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
25317         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
25318         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
25319         VMLSDAVXQ_S.
25320         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
25321         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
25322         (mve_vmlsdavxq_s<mode>): Merge into ...
25323         (@mve_<mve_insn>q_<supf><mode>): ... this.
25324         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
25325         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
25326         ...
25327         (@mve_<mve_insn>q_<supf><mode>): ... this.
25328         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
25329         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
25330         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
25331         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
25332         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
25333         ...
25334         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
25336 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25338         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
25339         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
25341 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25343         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
25344         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
25345         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
25346         * config/arm/arm_mve.h (vaddlvaq): Remove.
25347         (vaddlvaq_p): Remove.
25348         (vaddlvaq_u32): Remove.
25349         (vaddlvaq_s32): Remove.
25350         (vaddlvaq_p_s32): Remove.
25351         (vaddlvaq_p_u32): Remove.
25352         (__arm_vaddlvaq_u32): Remove.
25353         (__arm_vaddlvaq_s32): Remove.
25354         (__arm_vaddlvaq_p_s32): Remove.
25355         (__arm_vaddlvaq_p_u32): Remove.
25356         (__arm_vaddlvaq): Remove.
25357         (__arm_vaddlvaq_p): Remove.
25359 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25361         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
25362         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
25364 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25366         * config/arm/iterators.md (mve_insn): Add vaddlva.
25367         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
25368         (@mve_<mve_insn>q_<supf>v4si): ... this.
25369         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
25370         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
25372 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
25374         PR target/109807
25375         * config/i386/i386.cc (ix86_widen_mult_cost):
25376         Handle V4HImode and V2SImode.
25378 2023-05-11  Andrew Pinski  <apinski@marvell.com>
25380         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
25381         defined by a phi node with more than one uses, allow for the
25382         only uses are in that same defining statement.
25384 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
25386         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
25387         vector constants.
25389 2023-05-11  Pan Li  <pan2.li@intel.com>
25391         * config/riscv/vector.md: Add comments for simplifying to vmset.
25393 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
25395         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
25396         pattern.
25397         (v<optab><mode>3): Add vector shift pattern.
25398         * config/riscv/vector-iterators.md: New iterator.
25400 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
25402         * config/riscv/autovec.md: Use renamed functions.
25403         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
25404         (emit_vlmax_reg_op): To this.
25405         (emit_nonvlmax_op): Rename.
25406         (emit_len_op): To this.
25407         (emit_nonvlmax_binop): Rename.
25408         (emit_len_binop): To this.
25409         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
25410         (emit_pred_binop): Remove vlmax_p.
25411         (emit_vlmax_op): Rename.
25412         (emit_vlmax_reg_op): To this.
25413         (emit_nonvlmax_op): Rename.
25414         (emit_len_op): To this.
25415         (emit_nonvlmax_binop): Rename.
25416         (emit_len_binop): To this.
25417         (sew64_scalar_helper): Use renamed functions.
25418         (expand_tuple_move): Use renamed functions.
25419         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
25420         renamed functions.
25421         * config/riscv/vector.md: Use renamed functions.
25423 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
25424             Michael Collison  <collison@rivosinc.com>
25426         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
25427         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
25428         * config/riscv/riscv-v.cc (emit_pred_op): New function.
25429         (set_expander_dest_and_mask): New function.
25430         (emit_pred_binop): New function.
25431         (emit_nonvlmax_binop): New function.
25433 2023-05-11  Pan Li  <pan2.li@intel.com>
25435         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
25436         * gimple-loop-interchange.cc
25437         (tree_loop_interchange::map_inductions_to_loop): Ditto.
25438         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
25439         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
25440         * tree-ssa-loop-manip.cc (create_iv): Ditto.
25441         (tree_transform_and_unroll_loop): Ditto.
25442         (canonicalize_loop_ivs): Ditto.
25443         * tree-ssa-loop-manip.h (create_iv): Ditto.
25444         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
25445         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
25446         Ditto.
25447         (vect_set_loop_condition_normal): Ditto.
25448         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
25449         * tree-vect-stmts.cc (vectorizable_store): Ditto.
25450         (vectorizable_load): Ditto.
25452 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25454         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
25455         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
25456         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
25457         * config/arm/arm_mve.h (vmovlbq): Remove.
25458         (vmovltq): Remove.
25459         (vmovlbq_m): Remove.
25460         (vmovltq_m): Remove.
25461         (vmovlbq_x): Remove.
25462         (vmovltq_x): Remove.
25463         (vmovlbq_s8): Remove.
25464         (vmovlbq_s16): Remove.
25465         (vmovltq_s8): Remove.
25466         (vmovltq_s16): Remove.
25467         (vmovltq_u8): Remove.
25468         (vmovltq_u16): Remove.
25469         (vmovlbq_u8): Remove.
25470         (vmovlbq_u16): Remove.
25471         (vmovlbq_m_s8): Remove.
25472         (vmovltq_m_s8): Remove.
25473         (vmovlbq_m_u8): Remove.
25474         (vmovltq_m_u8): Remove.
25475         (vmovlbq_m_s16): Remove.
25476         (vmovltq_m_s16): Remove.
25477         (vmovlbq_m_u16): Remove.
25478         (vmovltq_m_u16): Remove.
25479         (vmovlbq_x_s8): Remove.
25480         (vmovlbq_x_s16): Remove.
25481         (vmovlbq_x_u8): Remove.
25482         (vmovlbq_x_u16): Remove.
25483         (vmovltq_x_s8): Remove.
25484         (vmovltq_x_s16): Remove.
25485         (vmovltq_x_u8): Remove.
25486         (vmovltq_x_u16): Remove.
25487         (__arm_vmovlbq_s8): Remove.
25488         (__arm_vmovlbq_s16): Remove.
25489         (__arm_vmovltq_s8): Remove.
25490         (__arm_vmovltq_s16): Remove.
25491         (__arm_vmovltq_u8): Remove.
25492         (__arm_vmovltq_u16): Remove.
25493         (__arm_vmovlbq_u8): Remove.
25494         (__arm_vmovlbq_u16): Remove.
25495         (__arm_vmovlbq_m_s8): Remove.
25496         (__arm_vmovltq_m_s8): Remove.
25497         (__arm_vmovlbq_m_u8): Remove.
25498         (__arm_vmovltq_m_u8): Remove.
25499         (__arm_vmovlbq_m_s16): Remove.
25500         (__arm_vmovltq_m_s16): Remove.
25501         (__arm_vmovlbq_m_u16): Remove.
25502         (__arm_vmovltq_m_u16): Remove.
25503         (__arm_vmovlbq_x_s8): Remove.
25504         (__arm_vmovlbq_x_s16): Remove.
25505         (__arm_vmovlbq_x_u8): Remove.
25506         (__arm_vmovlbq_x_u16): Remove.
25507         (__arm_vmovltq_x_s8): Remove.
25508         (__arm_vmovltq_x_s16): Remove.
25509         (__arm_vmovltq_x_u8): Remove.
25510         (__arm_vmovltq_x_u16): Remove.
25511         (__arm_vmovlbq): Remove.
25512         (__arm_vmovltq): Remove.
25513         (__arm_vmovlbq_m): Remove.
25514         (__arm_vmovltq_m): Remove.
25515         (__arm_vmovlbq_x): Remove.
25516         (__arm_vmovltq_x): Remove.
25518 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25520         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
25521         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
25523 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25525         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
25526         (VMOVLBQ, VMOVLTQ): Merge into ...
25527         (VMOVLxQ): ... this.
25528         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
25529         (VMOVLxQ_M): ... this.
25530         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
25531         (mve_vmovlbq_<supf><mode>): Merge into ...
25532         (@mve_<mve_insn>q_<supf><mode>): ... this.
25533         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
25534         into ...
25535         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
25537 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25539         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
25540         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
25541         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
25542         * config/arm/arm-mve-builtins-functions.h
25543         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
25544         * config/arm/arm_mve.h (vaddlvq): Remove.
25545         (vaddlvq_p): Remove.
25546         (vaddlvq_s32): Remove.
25547         (vaddlvq_u32): Remove.
25548         (vaddlvq_p_s32): Remove.
25549         (vaddlvq_p_u32): Remove.
25550         (__arm_vaddlvq_s32): Remove.
25551         (__arm_vaddlvq_u32): Remove.
25552         (__arm_vaddlvq_p_s32): Remove.
25553         (__arm_vaddlvq_p_u32): Remove.
25554         (__arm_vaddlvq): Remove.
25555         (__arm_vaddlvq_p): Remove.
25557 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25559         * config/arm/iterators.md (mve_insn): Add vaddlv.
25560         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
25561         (@mve_<mve_insn>q_<supf>v4si): ... this.
25562         (mve_vaddlvq_p_<supf>v4si): Rename into ...
25563         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
25565 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25567         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
25568         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
25570 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25572         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
25573         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
25574         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
25575         * config/arm/arm_mve.h (vaddvaq): Remove.
25576         (vaddvaq_p): Remove.
25577         (vaddvaq_u8): Remove.
25578         (vaddvaq_s8): Remove.
25579         (vaddvaq_u16): Remove.
25580         (vaddvaq_s16): Remove.
25581         (vaddvaq_u32): Remove.
25582         (vaddvaq_s32): Remove.
25583         (vaddvaq_p_u8): Remove.
25584         (vaddvaq_p_s8): Remove.
25585         (vaddvaq_p_u16): Remove.
25586         (vaddvaq_p_s16): Remove.
25587         (vaddvaq_p_u32): Remove.
25588         (vaddvaq_p_s32): Remove.
25589         (__arm_vaddvaq_u8): Remove.
25590         (__arm_vaddvaq_s8): Remove.
25591         (__arm_vaddvaq_u16): Remove.
25592         (__arm_vaddvaq_s16): Remove.
25593         (__arm_vaddvaq_u32): Remove.
25594         (__arm_vaddvaq_s32): Remove.
25595         (__arm_vaddvaq_p_u8): Remove.
25596         (__arm_vaddvaq_p_s8): Remove.
25597         (__arm_vaddvaq_p_u16): Remove.
25598         (__arm_vaddvaq_p_s16): Remove.
25599         (__arm_vaddvaq_p_u32): Remove.
25600         (__arm_vaddvaq_p_s32): Remove.
25601         (__arm_vaddvaq): Remove.
25602         (__arm_vaddvaq_p): Remove.
25604 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25606         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
25607         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
25609 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25611         * config/arm/iterators.md (mve_insn): Add vaddva.
25612         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
25613         (@mve_<mve_insn>q_<supf><mode>): ... this.
25614         (mve_vaddvaq_p_<supf><mode>): Rename into ...
25615         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
25617 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25619         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
25620         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
25621         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
25622         * config/arm/arm_mve.h (vaddvq): Remove.
25623         (vaddvq_p): Remove.
25624         (vaddvq_s8): Remove.
25625         (vaddvq_s16): Remove.
25626         (vaddvq_s32): Remove.
25627         (vaddvq_u8): Remove.
25628         (vaddvq_u16): Remove.
25629         (vaddvq_u32): Remove.
25630         (vaddvq_p_u8): Remove.
25631         (vaddvq_p_s8): Remove.
25632         (vaddvq_p_u16): Remove.
25633         (vaddvq_p_s16): Remove.
25634         (vaddvq_p_u32): Remove.
25635         (vaddvq_p_s32): Remove.
25636         (__arm_vaddvq_s8): Remove.
25637         (__arm_vaddvq_s16): Remove.
25638         (__arm_vaddvq_s32): Remove.
25639         (__arm_vaddvq_u8): Remove.
25640         (__arm_vaddvq_u16): Remove.
25641         (__arm_vaddvq_u32): Remove.
25642         (__arm_vaddvq_p_u8): Remove.
25643         (__arm_vaddvq_p_s8): Remove.
25644         (__arm_vaddvq_p_u16): Remove.
25645         (__arm_vaddvq_p_s16): Remove.
25646         (__arm_vaddvq_p_u32): Remove.
25647         (__arm_vaddvq_p_s32): Remove.
25648         (__arm_vaddvq): Remove.
25649         (__arm_vaddvq_p): Remove.
25651 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25653         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
25654         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
25656 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25658         * config/arm/iterators.md (mve_insn): Add vaddv.
25659         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
25660         (@mve_<mve_insn>q_<supf><mode>): ... this.
25661         (mve_vaddvq_p_<supf><mode>): Rename into ...
25662         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
25663         * config/arm/vec-common.md: Use gen_mve_q instead of
25664         gen_mve_vaddvq.
25666 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25668         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
25669         (vdupq): New.
25670         * config/arm/arm-mve-builtins-base.def (vdupq): New.
25671         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
25672         * config/arm/arm_mve.h (vdupq_n): Remove.
25673         (vdupq_m): Remove.
25674         (vdupq_n_f16): Remove.
25675         (vdupq_n_f32): Remove.
25676         (vdupq_n_s8): Remove.
25677         (vdupq_n_s16): Remove.
25678         (vdupq_n_s32): Remove.
25679         (vdupq_n_u8): Remove.
25680         (vdupq_n_u16): Remove.
25681         (vdupq_n_u32): Remove.
25682         (vdupq_m_n_u8): Remove.
25683         (vdupq_m_n_s8): Remove.
25684         (vdupq_m_n_u16): Remove.
25685         (vdupq_m_n_s16): Remove.
25686         (vdupq_m_n_u32): Remove.
25687         (vdupq_m_n_s32): Remove.
25688         (vdupq_m_n_f16): Remove.
25689         (vdupq_m_n_f32): Remove.
25690         (vdupq_x_n_s8): Remove.
25691         (vdupq_x_n_s16): Remove.
25692         (vdupq_x_n_s32): Remove.
25693         (vdupq_x_n_u8): Remove.
25694         (vdupq_x_n_u16): Remove.
25695         (vdupq_x_n_u32): Remove.
25696         (vdupq_x_n_f16): Remove.
25697         (vdupq_x_n_f32): Remove.
25698         (__arm_vdupq_n_s8): Remove.
25699         (__arm_vdupq_n_s16): Remove.
25700         (__arm_vdupq_n_s32): Remove.
25701         (__arm_vdupq_n_u8): Remove.
25702         (__arm_vdupq_n_u16): Remove.
25703         (__arm_vdupq_n_u32): Remove.
25704         (__arm_vdupq_m_n_u8): Remove.
25705         (__arm_vdupq_m_n_s8): Remove.
25706         (__arm_vdupq_m_n_u16): Remove.
25707         (__arm_vdupq_m_n_s16): Remove.
25708         (__arm_vdupq_m_n_u32): Remove.
25709         (__arm_vdupq_m_n_s32): Remove.
25710         (__arm_vdupq_x_n_s8): Remove.
25711         (__arm_vdupq_x_n_s16): Remove.
25712         (__arm_vdupq_x_n_s32): Remove.
25713         (__arm_vdupq_x_n_u8): Remove.
25714         (__arm_vdupq_x_n_u16): Remove.
25715         (__arm_vdupq_x_n_u32): Remove.
25716         (__arm_vdupq_n_f16): Remove.
25717         (__arm_vdupq_n_f32): Remove.
25718         (__arm_vdupq_m_n_f16): Remove.
25719         (__arm_vdupq_m_n_f32): Remove.
25720         (__arm_vdupq_x_n_f16): Remove.
25721         (__arm_vdupq_x_n_f32): Remove.
25722         (__arm_vdupq_n): Remove.
25723         (__arm_vdupq_m): Remove.
25725 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25727         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
25728         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
25730 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25732         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
25733         (MVE_FP_N_VDUPQ_ONLY): New.
25734         (mve_insn): Add vdupq.
25735         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
25736         (@mve_<mve_insn>q_n_f<mode>): ... this.
25737         (mve_vdupq_n_<supf><mode>): Rename into ...
25738         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
25739         (mve_vdupq_m_n_<supf><mode>): Rename into ...
25740         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
25741         (mve_vdupq_m_n_f<mode>): Rename into ...
25742         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
25744 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25746         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
25747         New.
25748         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
25749         (vrev64q): New.
25750         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
25751         (vrev64q): New.
25752         * config/arm/arm_mve.h (vrev16q): Remove.
25753         (vrev32q): Remove.
25754         (vrev64q): Remove.
25755         (vrev64q_m): Remove.
25756         (vrev16q_m): Remove.
25757         (vrev32q_m): Remove.
25758         (vrev16q_x): Remove.
25759         (vrev32q_x): Remove.
25760         (vrev64q_x): Remove.
25761         (vrev64q_f16): Remove.
25762         (vrev64q_f32): Remove.
25763         (vrev32q_f16): Remove.
25764         (vrev16q_s8): Remove.
25765         (vrev32q_s8): Remove.
25766         (vrev32q_s16): Remove.
25767         (vrev64q_s8): Remove.
25768         (vrev64q_s16): Remove.
25769         (vrev64q_s32): Remove.
25770         (vrev64q_u8): Remove.
25771         (vrev64q_u16): Remove.
25772         (vrev64q_u32): Remove.
25773         (vrev32q_u8): Remove.
25774         (vrev32q_u16): Remove.
25775         (vrev16q_u8): Remove.
25776         (vrev64q_m_u8): Remove.
25777         (vrev64q_m_s8): Remove.
25778         (vrev64q_m_u16): Remove.
25779         (vrev64q_m_s16): Remove.
25780         (vrev64q_m_u32): Remove.
25781         (vrev64q_m_s32): Remove.
25782         (vrev16q_m_s8): Remove.
25783         (vrev32q_m_f16): Remove.
25784         (vrev16q_m_u8): Remove.
25785         (vrev32q_m_s8): Remove.
25786         (vrev64q_m_f16): Remove.
25787         (vrev32q_m_u8): Remove.
25788         (vrev32q_m_s16): Remove.
25789         (vrev64q_m_f32): Remove.
25790         (vrev32q_m_u16): Remove.
25791         (vrev16q_x_s8): Remove.
25792         (vrev16q_x_u8): Remove.
25793         (vrev32q_x_s8): Remove.
25794         (vrev32q_x_s16): Remove.
25795         (vrev32q_x_u8): Remove.
25796         (vrev32q_x_u16): Remove.
25797         (vrev64q_x_s8): Remove.
25798         (vrev64q_x_s16): Remove.
25799         (vrev64q_x_s32): Remove.
25800         (vrev64q_x_u8): Remove.
25801         (vrev64q_x_u16): Remove.
25802         (vrev64q_x_u32): Remove.
25803         (vrev32q_x_f16): Remove.
25804         (vrev64q_x_f16): Remove.
25805         (vrev64q_x_f32): Remove.
25806         (__arm_vrev16q_s8): Remove.
25807         (__arm_vrev32q_s8): Remove.
25808         (__arm_vrev32q_s16): Remove.
25809         (__arm_vrev64q_s8): Remove.
25810         (__arm_vrev64q_s16): Remove.
25811         (__arm_vrev64q_s32): Remove.
25812         (__arm_vrev64q_u8): Remove.
25813         (__arm_vrev64q_u16): Remove.
25814         (__arm_vrev64q_u32): Remove.
25815         (__arm_vrev32q_u8): Remove.
25816         (__arm_vrev32q_u16): Remove.
25817         (__arm_vrev16q_u8): Remove.
25818         (__arm_vrev64q_m_u8): Remove.
25819         (__arm_vrev64q_m_s8): Remove.
25820         (__arm_vrev64q_m_u16): Remove.
25821         (__arm_vrev64q_m_s16): Remove.
25822         (__arm_vrev64q_m_u32): Remove.
25823         (__arm_vrev64q_m_s32): Remove.
25824         (__arm_vrev16q_m_s8): Remove.
25825         (__arm_vrev16q_m_u8): Remove.
25826         (__arm_vrev32q_m_s8): Remove.
25827         (__arm_vrev32q_m_u8): Remove.
25828         (__arm_vrev32q_m_s16): Remove.
25829         (__arm_vrev32q_m_u16): Remove.
25830         (__arm_vrev16q_x_s8): Remove.
25831         (__arm_vrev16q_x_u8): Remove.
25832         (__arm_vrev32q_x_s8): Remove.
25833         (__arm_vrev32q_x_s16): Remove.
25834         (__arm_vrev32q_x_u8): Remove.
25835         (__arm_vrev32q_x_u16): Remove.
25836         (__arm_vrev64q_x_s8): Remove.
25837         (__arm_vrev64q_x_s16): Remove.
25838         (__arm_vrev64q_x_s32): Remove.
25839         (__arm_vrev64q_x_u8): Remove.
25840         (__arm_vrev64q_x_u16): Remove.
25841         (__arm_vrev64q_x_u32): Remove.
25842         (__arm_vrev64q_f16): Remove.
25843         (__arm_vrev64q_f32): Remove.
25844         (__arm_vrev32q_f16): Remove.
25845         (__arm_vrev32q_m_f16): Remove.
25846         (__arm_vrev64q_m_f16): Remove.
25847         (__arm_vrev64q_m_f32): Remove.
25848         (__arm_vrev32q_x_f16): Remove.
25849         (__arm_vrev64q_x_f16): Remove.
25850         (__arm_vrev64q_x_f32): Remove.
25851         (__arm_vrev16q): Remove.
25852         (__arm_vrev32q): Remove.
25853         (__arm_vrev64q): Remove.
25854         (__arm_vrev64q_m): Remove.
25855         (__arm_vrev16q_m): Remove.
25856         (__arm_vrev32q_m): Remove.
25857         (__arm_vrev16q_x): Remove.
25858         (__arm_vrev32q_x): Remove.
25859         (__arm_vrev64q_x): Remove.
25861 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25863         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
25864         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
25865         (MVE_FP_M_VREV32Q_ONLY): New iterators.
25866         (mve_insn): Add vrev16q, vrev32q, vrev64q.
25867         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
25868         (@mve_<mve_insn>q_f<mode>): ... this
25869         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
25870         (mve_vrev64q_<supf><mode>): Rename into ...
25871         (@mve_<mve_insn>q_<supf><mode>): ... this.
25872         (mve_vrev32q_<supf><mode>): Rename into
25873         @mve_<mve_insn>q_<supf><mode>.
25874         (mve_vrev16q_<supf>v16qi): Rename into
25875         @mve_<mve_insn>q_<supf><mode>.
25876         (mve_vrev64q_m_<supf><mode>): Rename into
25877         @mve_<mve_insn>q_m_<supf><mode>.
25878         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
25879         (mve_vrev32q_m_<supf><mode>): Rename into
25880         @mve_<mve_insn>q_m_<supf><mode>.
25881         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
25882         (mve_vrev16q_m_<supf>v16qi): Rename into
25883         @mve_<mve_insn>q_m_<supf><mode>.
25885 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
25887         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
25888         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
25889         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
25890         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
25891         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
25892         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
25893         * config/arm/arm-mve-builtins-functions.h (class
25894         unspec_based_mve_function_exact_insn_vcmp): New.
25895         * config/arm/arm-mve-builtins.cc
25896         (function_instance::has_inactive_argument): Handle vcmp.
25897         * config/arm/arm_mve.h (vcmpneq): Remove.
25898         (vcmphiq): Remove.
25899         (vcmpeqq): Remove.
25900         (vcmpcsq): Remove.
25901         (vcmpltq): Remove.
25902         (vcmpleq): Remove.
25903         (vcmpgtq): Remove.
25904         (vcmpgeq): Remove.
25905         (vcmpneq_m): Remove.
25906         (vcmphiq_m): Remove.
25907         (vcmpeqq_m): Remove.
25908         (vcmpcsq_m): Remove.
25909         (vcmpcsq_m_n): Remove.
25910         (vcmpltq_m): Remove.
25911         (vcmpleq_m): Remove.
25912         (vcmpgtq_m): Remove.
25913         (vcmpgeq_m): Remove.
25914         (vcmpneq_s8): Remove.
25915         (vcmpneq_s16): Remove.
25916         (vcmpneq_s32): Remove.
25917         (vcmpneq_u8): Remove.
25918         (vcmpneq_u16): Remove.
25919         (vcmpneq_u32): Remove.
25920         (vcmpneq_n_u8): Remove.
25921         (vcmphiq_u8): Remove.
25922         (vcmphiq_n_u8): Remove.
25923         (vcmpeqq_u8): Remove.
25924         (vcmpeqq_n_u8): Remove.
25925         (vcmpcsq_u8): Remove.
25926         (vcmpcsq_n_u8): Remove.
25927         (vcmpneq_n_s8): Remove.
25928         (vcmpltq_s8): Remove.
25929         (vcmpltq_n_s8): Remove.
25930         (vcmpleq_s8): Remove.
25931         (vcmpleq_n_s8): Remove.
25932         (vcmpgtq_s8): Remove.
25933         (vcmpgtq_n_s8): Remove.
25934         (vcmpgeq_s8): Remove.
25935         (vcmpgeq_n_s8): Remove.
25936         (vcmpeqq_s8): Remove.
25937         (vcmpeqq_n_s8): Remove.
25938         (vcmpneq_n_u16): Remove.
25939         (vcmphiq_u16): Remove.
25940         (vcmphiq_n_u16): Remove.
25941         (vcmpeqq_u16): Remove.
25942         (vcmpeqq_n_u16): Remove.
25943         (vcmpcsq_u16): Remove.
25944         (vcmpcsq_n_u16): Remove.
25945         (vcmpneq_n_s16): Remove.
25946         (vcmpltq_s16): Remove.
25947         (vcmpltq_n_s16): Remove.
25948         (vcmpleq_s16): Remove.
25949         (vcmpleq_n_s16): Remove.
25950         (vcmpgtq_s16): Remove.
25951         (vcmpgtq_n_s16): Remove.
25952         (vcmpgeq_s16): Remove.
25953         (vcmpgeq_n_s16): Remove.
25954         (vcmpeqq_s16): Remove.
25955         (vcmpeqq_n_s16): Remove.
25956         (vcmpneq_n_u32): Remove.
25957         (vcmphiq_u32): Remove.
25958         (vcmphiq_n_u32): Remove.
25959         (vcmpeqq_u32): Remove.
25960         (vcmpeqq_n_u32): Remove.
25961         (vcmpcsq_u32): Remove.
25962         (vcmpcsq_n_u32): Remove.
25963         (vcmpneq_n_s32): Remove.
25964         (vcmpltq_s32): Remove.
25965         (vcmpltq_n_s32): Remove.
25966         (vcmpleq_s32): Remove.
25967         (vcmpleq_n_s32): Remove.
25968         (vcmpgtq_s32): Remove.
25969         (vcmpgtq_n_s32): Remove.
25970         (vcmpgeq_s32): Remove.
25971         (vcmpgeq_n_s32): Remove.
25972         (vcmpeqq_s32): Remove.
25973         (vcmpeqq_n_s32): Remove.
25974         (vcmpneq_n_f16): Remove.
25975         (vcmpneq_f16): Remove.
25976         (vcmpltq_n_f16): Remove.
25977         (vcmpltq_f16): Remove.
25978         (vcmpleq_n_f16): Remove.
25979         (vcmpleq_f16): Remove.
25980         (vcmpgtq_n_f16): Remove.
25981         (vcmpgtq_f16): Remove.
25982         (vcmpgeq_n_f16): Remove.
25983         (vcmpgeq_f16): Remove.
25984         (vcmpeqq_n_f16): Remove.
25985         (vcmpeqq_f16): Remove.
25986         (vcmpneq_n_f32): Remove.
25987         (vcmpneq_f32): Remove.
25988         (vcmpltq_n_f32): Remove.
25989         (vcmpltq_f32): Remove.
25990         (vcmpleq_n_f32): Remove.
25991         (vcmpleq_f32): Remove.
25992         (vcmpgtq_n_f32): Remove.
25993         (vcmpgtq_f32): Remove.
25994         (vcmpgeq_n_f32): Remove.
25995         (vcmpgeq_f32): Remove.
25996         (vcmpeqq_n_f32): Remove.
25997         (vcmpeqq_f32): Remove.
25998         (vcmpeqq_m_f16): Remove.
25999         (vcmpeqq_m_f32): Remove.
26000         (vcmpneq_m_u8): Remove.
26001         (vcmpneq_m_n_u8): Remove.
26002         (vcmphiq_m_u8): Remove.
26003         (vcmphiq_m_n_u8): Remove.
26004         (vcmpeqq_m_u8): Remove.
26005         (vcmpeqq_m_n_u8): Remove.
26006         (vcmpcsq_m_u8): Remove.
26007         (vcmpcsq_m_n_u8): Remove.
26008         (vcmpneq_m_s8): Remove.
26009         (vcmpneq_m_n_s8): Remove.
26010         (vcmpltq_m_s8): Remove.
26011         (vcmpltq_m_n_s8): Remove.
26012         (vcmpleq_m_s8): Remove.
26013         (vcmpleq_m_n_s8): Remove.
26014         (vcmpgtq_m_s8): Remove.
26015         (vcmpgtq_m_n_s8): Remove.
26016         (vcmpgeq_m_s8): Remove.
26017         (vcmpgeq_m_n_s8): Remove.
26018         (vcmpeqq_m_s8): Remove.
26019         (vcmpeqq_m_n_s8): Remove.
26020         (vcmpneq_m_u16): Remove.
26021         (vcmpneq_m_n_u16): Remove.
26022         (vcmphiq_m_u16): Remove.
26023         (vcmphiq_m_n_u16): Remove.
26024         (vcmpeqq_m_u16): Remove.
26025         (vcmpeqq_m_n_u16): Remove.
26026         (vcmpcsq_m_u16): Remove.
26027         (vcmpcsq_m_n_u16): Remove.
26028         (vcmpneq_m_s16): Remove.
26029         (vcmpneq_m_n_s16): Remove.
26030         (vcmpltq_m_s16): Remove.
26031         (vcmpltq_m_n_s16): Remove.
26032         (vcmpleq_m_s16): Remove.
26033         (vcmpleq_m_n_s16): Remove.
26034         (vcmpgtq_m_s16): Remove.
26035         (vcmpgtq_m_n_s16): Remove.
26036         (vcmpgeq_m_s16): Remove.
26037         (vcmpgeq_m_n_s16): Remove.
26038         (vcmpeqq_m_s16): Remove.
26039         (vcmpeqq_m_n_s16): Remove.
26040         (vcmpneq_m_u32): Remove.
26041         (vcmpneq_m_n_u32): Remove.
26042         (vcmphiq_m_u32): Remove.
26043         (vcmphiq_m_n_u32): Remove.
26044         (vcmpeqq_m_u32): Remove.
26045         (vcmpeqq_m_n_u32): Remove.
26046         (vcmpcsq_m_u32): Remove.
26047         (vcmpcsq_m_n_u32): Remove.
26048         (vcmpneq_m_s32): Remove.
26049         (vcmpneq_m_n_s32): Remove.
26050         (vcmpltq_m_s32): Remove.
26051         (vcmpltq_m_n_s32): Remove.
26052         (vcmpleq_m_s32): Remove.
26053         (vcmpleq_m_n_s32): Remove.
26054         (vcmpgtq_m_s32): Remove.
26055         (vcmpgtq_m_n_s32): Remove.
26056         (vcmpgeq_m_s32): Remove.
26057         (vcmpgeq_m_n_s32): Remove.
26058         (vcmpeqq_m_s32): Remove.
26059         (vcmpeqq_m_n_s32): Remove.
26060         (vcmpeqq_m_n_f16): Remove.
26061         (vcmpgeq_m_f16): Remove.
26062         (vcmpgeq_m_n_f16): Remove.
26063         (vcmpgtq_m_f16): Remove.
26064         (vcmpgtq_m_n_f16): Remove.
26065         (vcmpleq_m_f16): Remove.
26066         (vcmpleq_m_n_f16): Remove.
26067         (vcmpltq_m_f16): Remove.
26068         (vcmpltq_m_n_f16): Remove.
26069         (vcmpneq_m_f16): Remove.
26070         (vcmpneq_m_n_f16): Remove.
26071         (vcmpeqq_m_n_f32): Remove.
26072         (vcmpgeq_m_f32): Remove.
26073         (vcmpgeq_m_n_f32): Remove.
26074         (vcmpgtq_m_f32): Remove.
26075         (vcmpgtq_m_n_f32): Remove.
26076         (vcmpleq_m_f32): Remove.
26077         (vcmpleq_m_n_f32): Remove.
26078         (vcmpltq_m_f32): Remove.
26079         (vcmpltq_m_n_f32): Remove.
26080         (vcmpneq_m_f32): Remove.
26081         (vcmpneq_m_n_f32): Remove.
26082         (__arm_vcmpneq_s8): Remove.
26083         (__arm_vcmpneq_s16): Remove.
26084         (__arm_vcmpneq_s32): Remove.
26085         (__arm_vcmpneq_u8): Remove.
26086         (__arm_vcmpneq_u16): Remove.
26087         (__arm_vcmpneq_u32): Remove.
26088         (__arm_vcmpneq_n_u8): Remove.
26089         (__arm_vcmphiq_u8): Remove.
26090         (__arm_vcmphiq_n_u8): Remove.
26091         (__arm_vcmpeqq_u8): Remove.
26092         (__arm_vcmpeqq_n_u8): Remove.
26093         (__arm_vcmpcsq_u8): Remove.
26094         (__arm_vcmpcsq_n_u8): Remove.
26095         (__arm_vcmpneq_n_s8): Remove.
26096         (__arm_vcmpltq_s8): Remove.
26097         (__arm_vcmpltq_n_s8): Remove.
26098         (__arm_vcmpleq_s8): Remove.
26099         (__arm_vcmpleq_n_s8): Remove.
26100         (__arm_vcmpgtq_s8): Remove.
26101         (__arm_vcmpgtq_n_s8): Remove.
26102         (__arm_vcmpgeq_s8): Remove.
26103         (__arm_vcmpgeq_n_s8): Remove.
26104         (__arm_vcmpeqq_s8): Remove.
26105         (__arm_vcmpeqq_n_s8): Remove.
26106         (__arm_vcmpneq_n_u16): Remove.
26107         (__arm_vcmphiq_u16): Remove.
26108         (__arm_vcmphiq_n_u16): Remove.
26109         (__arm_vcmpeqq_u16): Remove.
26110         (__arm_vcmpeqq_n_u16): Remove.
26111         (__arm_vcmpcsq_u16): Remove.
26112         (__arm_vcmpcsq_n_u16): Remove.
26113         (__arm_vcmpneq_n_s16): Remove.
26114         (__arm_vcmpltq_s16): Remove.
26115         (__arm_vcmpltq_n_s16): Remove.
26116         (__arm_vcmpleq_s16): Remove.
26117         (__arm_vcmpleq_n_s16): Remove.
26118         (__arm_vcmpgtq_s16): Remove.
26119         (__arm_vcmpgtq_n_s16): Remove.
26120         (__arm_vcmpgeq_s16): Remove.
26121         (__arm_vcmpgeq_n_s16): Remove.
26122         (__arm_vcmpeqq_s16): Remove.
26123         (__arm_vcmpeqq_n_s16): Remove.
26124         (__arm_vcmpneq_n_u32): Remove.
26125         (__arm_vcmphiq_u32): Remove.
26126         (__arm_vcmphiq_n_u32): Remove.
26127         (__arm_vcmpeqq_u32): Remove.
26128         (__arm_vcmpeqq_n_u32): Remove.
26129         (__arm_vcmpcsq_u32): Remove.
26130         (__arm_vcmpcsq_n_u32): Remove.
26131         (__arm_vcmpneq_n_s32): Remove.
26132         (__arm_vcmpltq_s32): Remove.
26133         (__arm_vcmpltq_n_s32): Remove.
26134         (__arm_vcmpleq_s32): Remove.
26135         (__arm_vcmpleq_n_s32): Remove.
26136         (__arm_vcmpgtq_s32): Remove.
26137         (__arm_vcmpgtq_n_s32): Remove.
26138         (__arm_vcmpgeq_s32): Remove.
26139         (__arm_vcmpgeq_n_s32): Remove.
26140         (__arm_vcmpeqq_s32): Remove.
26141         (__arm_vcmpeqq_n_s32): Remove.
26142         (__arm_vcmpneq_m_u8): Remove.
26143         (__arm_vcmpneq_m_n_u8): Remove.
26144         (__arm_vcmphiq_m_u8): Remove.
26145         (__arm_vcmphiq_m_n_u8): Remove.
26146         (__arm_vcmpeqq_m_u8): Remove.
26147         (__arm_vcmpeqq_m_n_u8): Remove.
26148         (__arm_vcmpcsq_m_u8): Remove.
26149         (__arm_vcmpcsq_m_n_u8): Remove.
26150         (__arm_vcmpneq_m_s8): Remove.
26151         (__arm_vcmpneq_m_n_s8): Remove.
26152         (__arm_vcmpltq_m_s8): Remove.
26153         (__arm_vcmpltq_m_n_s8): Remove.
26154         (__arm_vcmpleq_m_s8): Remove.
26155         (__arm_vcmpleq_m_n_s8): Remove.
26156         (__arm_vcmpgtq_m_s8): Remove.
26157         (__arm_vcmpgtq_m_n_s8): Remove.
26158         (__arm_vcmpgeq_m_s8): Remove.
26159         (__arm_vcmpgeq_m_n_s8): Remove.
26160         (__arm_vcmpeqq_m_s8): Remove.
26161         (__arm_vcmpeqq_m_n_s8): Remove.
26162         (__arm_vcmpneq_m_u16): Remove.
26163         (__arm_vcmpneq_m_n_u16): Remove.
26164         (__arm_vcmphiq_m_u16): Remove.
26165         (__arm_vcmphiq_m_n_u16): Remove.
26166         (__arm_vcmpeqq_m_u16): Remove.
26167         (__arm_vcmpeqq_m_n_u16): Remove.
26168         (__arm_vcmpcsq_m_u16): Remove.
26169         (__arm_vcmpcsq_m_n_u16): Remove.
26170         (__arm_vcmpneq_m_s16): Remove.
26171         (__arm_vcmpneq_m_n_s16): Remove.
26172         (__arm_vcmpltq_m_s16): Remove.
26173         (__arm_vcmpltq_m_n_s16): Remove.
26174         (__arm_vcmpleq_m_s16): Remove.
26175         (__arm_vcmpleq_m_n_s16): Remove.
26176         (__arm_vcmpgtq_m_s16): Remove.
26177         (__arm_vcmpgtq_m_n_s16): Remove.
26178         (__arm_vcmpgeq_m_s16): Remove.
26179         (__arm_vcmpgeq_m_n_s16): Remove.
26180         (__arm_vcmpeqq_m_s16): Remove.
26181         (__arm_vcmpeqq_m_n_s16): Remove.
26182         (__arm_vcmpneq_m_u32): Remove.
26183         (__arm_vcmpneq_m_n_u32): Remove.
26184         (__arm_vcmphiq_m_u32): Remove.
26185         (__arm_vcmphiq_m_n_u32): Remove.
26186         (__arm_vcmpeqq_m_u32): Remove.
26187         (__arm_vcmpeqq_m_n_u32): Remove.
26188         (__arm_vcmpcsq_m_u32): Remove.
26189         (__arm_vcmpcsq_m_n_u32): Remove.
26190         (__arm_vcmpneq_m_s32): Remove.
26191         (__arm_vcmpneq_m_n_s32): Remove.
26192         (__arm_vcmpltq_m_s32): Remove.
26193         (__arm_vcmpltq_m_n_s32): Remove.
26194         (__arm_vcmpleq_m_s32): Remove.
26195         (__arm_vcmpleq_m_n_s32): Remove.
26196         (__arm_vcmpgtq_m_s32): Remove.
26197         (__arm_vcmpgtq_m_n_s32): Remove.
26198         (__arm_vcmpgeq_m_s32): Remove.
26199         (__arm_vcmpgeq_m_n_s32): Remove.
26200         (__arm_vcmpeqq_m_s32): Remove.
26201         (__arm_vcmpeqq_m_n_s32): Remove.
26202         (__arm_vcmpneq_n_f16): Remove.
26203         (__arm_vcmpneq_f16): Remove.
26204         (__arm_vcmpltq_n_f16): Remove.
26205         (__arm_vcmpltq_f16): Remove.
26206         (__arm_vcmpleq_n_f16): Remove.
26207         (__arm_vcmpleq_f16): Remove.
26208         (__arm_vcmpgtq_n_f16): Remove.
26209         (__arm_vcmpgtq_f16): Remove.
26210         (__arm_vcmpgeq_n_f16): Remove.
26211         (__arm_vcmpgeq_f16): Remove.
26212         (__arm_vcmpeqq_n_f16): Remove.
26213         (__arm_vcmpeqq_f16): Remove.
26214         (__arm_vcmpneq_n_f32): Remove.
26215         (__arm_vcmpneq_f32): Remove.
26216         (__arm_vcmpltq_n_f32): Remove.
26217         (__arm_vcmpltq_f32): Remove.
26218         (__arm_vcmpleq_n_f32): Remove.
26219         (__arm_vcmpleq_f32): Remove.
26220         (__arm_vcmpgtq_n_f32): Remove.
26221         (__arm_vcmpgtq_f32): Remove.
26222         (__arm_vcmpgeq_n_f32): Remove.
26223         (__arm_vcmpgeq_f32): Remove.
26224         (__arm_vcmpeqq_n_f32): Remove.
26225         (__arm_vcmpeqq_f32): Remove.
26226         (__arm_vcmpeqq_m_f16): Remove.
26227         (__arm_vcmpeqq_m_f32): Remove.
26228         (__arm_vcmpeqq_m_n_f16): Remove.
26229         (__arm_vcmpgeq_m_f16): Remove.
26230         (__arm_vcmpgeq_m_n_f16): Remove.
26231         (__arm_vcmpgtq_m_f16): Remove.
26232         (__arm_vcmpgtq_m_n_f16): Remove.
26233         (__arm_vcmpleq_m_f16): Remove.
26234         (__arm_vcmpleq_m_n_f16): Remove.
26235         (__arm_vcmpltq_m_f16): Remove.
26236         (__arm_vcmpltq_m_n_f16): Remove.
26237         (__arm_vcmpneq_m_f16): Remove.
26238         (__arm_vcmpneq_m_n_f16): Remove.
26239         (__arm_vcmpeqq_m_n_f32): Remove.
26240         (__arm_vcmpgeq_m_f32): Remove.
26241         (__arm_vcmpgeq_m_n_f32): Remove.
26242         (__arm_vcmpgtq_m_f32): Remove.
26243         (__arm_vcmpgtq_m_n_f32): Remove.
26244         (__arm_vcmpleq_m_f32): Remove.
26245         (__arm_vcmpleq_m_n_f32): Remove.
26246         (__arm_vcmpltq_m_f32): Remove.
26247         (__arm_vcmpltq_m_n_f32): Remove.
26248         (__arm_vcmpneq_m_f32): Remove.
26249         (__arm_vcmpneq_m_n_f32): Remove.
26250         (__arm_vcmpneq): Remove.
26251         (__arm_vcmphiq): Remove.
26252         (__arm_vcmpeqq): Remove.
26253         (__arm_vcmpcsq): Remove.
26254         (__arm_vcmpltq): Remove.
26255         (__arm_vcmpleq): Remove.
26256         (__arm_vcmpgtq): Remove.
26257         (__arm_vcmpgeq): Remove.
26258         (__arm_vcmpneq_m): Remove.
26259         (__arm_vcmphiq_m): Remove.
26260         (__arm_vcmpeqq_m): Remove.
26261         (__arm_vcmpcsq_m): Remove.
26262         (__arm_vcmpltq_m): Remove.
26263         (__arm_vcmpleq_m): Remove.
26264         (__arm_vcmpgtq_m): Remove.
26265         (__arm_vcmpgeq_m): Remove.
26267 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
26269         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
26270         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
26272 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
26274         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
26275         (MVE_CMP_M_N_F, mve_cmp_op1): New.
26276         (isu): Add VCMP*
26277         (supf): Likewise.
26278         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
26279         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
26280         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
26281         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
26282         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
26283         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
26284         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
26285         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
26286         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
26287         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
26288         ...
26289         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
26290         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
26291         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
26292         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
26293         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
26294         into ...
26295         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
26296         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
26297         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
26298         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
26299         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
26301 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
26303         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
26304         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
26305         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
26306         vice versa.
26308 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
26310         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
26311         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
26312         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
26313         Simplify parity(rotate(x,y)) as parity(x).
26315 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26317         * config/riscv/autovec.md (@vec_series<mode>): New pattern
26318         * config/riscv/riscv-protos.h (expand_vec_series): New function.
26319         * config/riscv/riscv-v.cc (emit_binop): Ditto.
26320         (emit_index_op): Ditto.
26321         (expand_vec_series): Ditto.
26322         (expand_const_vector): Add series vector handling.
26323         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
26325 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
26327         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
26328         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
26329         (*concat<mode><dwi>3_2): Likewise.
26330         (*concat<mode><dwi>3_3): Likewise.
26331         (*concat<mode><dwi>3_4): Likewise.
26332         (*concat<mode><dwi>3_5): Likewise.
26333         (*concat<mode><dwi>3_6): Likewise.
26334         (*concat<mode><dwi>3_7): Likewise.
26336 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
26338         PR target/92658
26339         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
26340         (<insn>v4qiv4hi2): New expander.
26341         (<insn>v2hiv2si2): Ditto.
26342         (<insn>v2qiv2si2): Ditto.
26343         (<insn>v2qiv2hi2): Ditto.
26345 2023-05-10  Jeff Law  <jlaw@ventanamicro>
26347         * config/h8300/constraints.md (Q): Make this a special memory
26348         constraint.
26349         (Zz): Similarly.
26351 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
26353         PR fortran/109788
26354         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
26355         if t is void_list_node.
26357 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26359         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
26360         (aarch64_sqmovun<mode>_insn_be): Delete.
26361         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
26362         (aarch64_sqmovun<mode>): Delete expander.
26364 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26366         PR target/99195
26367         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
26368         Rename to...
26369         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
26370         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
26371         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
26373 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26375         PR target/99195
26376         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
26377         Rename to...
26378         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
26379         (aarch64_<sur>qadd<mode>): Rename to...
26380         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
26382 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26384         * config/aarch64/aarch64-simd.md
26385         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
26386         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
26387         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
26388         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
26390 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26392         PR target/99195
26393         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
26394         (aarch64_xtn<mode>_insn_be): Likewise.
26395         (trunc<mode><Vnarrowq>2): Rename to...
26396         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
26397         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
26398         (aarch64_<su>qmovn<mode>): Likewise.
26399         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
26400         (aarch64_<su>qmovn<mode>_insn_le): Delete.
26401         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
26403 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
26405         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
26406         intruction replace null avl with (const_int 0).
26408 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26410         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
26411         incorrect codes.
26413 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26415         PR target/109773
26416         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
26417         (source_equal_p): Fix dead loop in vsetvl avl checking.
26419 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
26421         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
26422         of modeadjusted_dccr.
26424 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26426         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
26427         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
26428         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
26429         * config/arm/arm-mve-builtins.cc
26430         (function_instance::has_inactive_argument): Handle vmaxaq and
26431         vminaq.
26432         * config/arm/arm_mve.h (vminaq): Remove.
26433         (vmaxaq): Remove.
26434         (vminaq_m): Remove.
26435         (vmaxaq_m): Remove.
26436         (vminaq_s8): Remove.
26437         (vmaxaq_s8): Remove.
26438         (vminaq_s16): Remove.
26439         (vmaxaq_s16): Remove.
26440         (vminaq_s32): Remove.
26441         (vmaxaq_s32): Remove.
26442         (vminaq_m_s8): Remove.
26443         (vmaxaq_m_s8): Remove.
26444         (vminaq_m_s16): Remove.
26445         (vmaxaq_m_s16): Remove.
26446         (vminaq_m_s32): Remove.
26447         (vmaxaq_m_s32): Remove.
26448         (__arm_vminaq_s8): Remove.
26449         (__arm_vmaxaq_s8): Remove.
26450         (__arm_vminaq_s16): Remove.
26451         (__arm_vmaxaq_s16): Remove.
26452         (__arm_vminaq_s32): Remove.
26453         (__arm_vmaxaq_s32): Remove.
26454         (__arm_vminaq_m_s8): Remove.
26455         (__arm_vmaxaq_m_s8): Remove.
26456         (__arm_vminaq_m_s16): Remove.
26457         (__arm_vmaxaq_m_s16): Remove.
26458         (__arm_vminaq_m_s32): Remove.
26459         (__arm_vmaxaq_m_s32): Remove.
26460         (__arm_vminaq): Remove.
26461         (__arm_vmaxaq): Remove.
26462         (__arm_vminaq_m): Remove.
26463         (__arm_vmaxaq_m): Remove.
26465 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26467         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
26468         New.
26469         (mve_insn): Add vmaxa, vmina.
26470         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
26471         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
26472         Merge into ...
26473         (@mve_<mve_insn>q_<supf><mode>): ... this.
26474         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
26475         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
26477 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26479         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
26480         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
26482 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26484         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
26485         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
26486         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
26487         * config/arm/arm-mve-builtins.cc
26488         (function_instance::has_inactive_argument): Handle vmaxnmaq and
26489         vminnmaq.
26490         * config/arm/arm_mve.h (vminnmaq): Remove.
26491         (vmaxnmaq): Remove.
26492         (vmaxnmaq_m): Remove.
26493         (vminnmaq_m): Remove.
26494         (vminnmaq_f16): Remove.
26495         (vmaxnmaq_f16): Remove.
26496         (vminnmaq_f32): Remove.
26497         (vmaxnmaq_f32): Remove.
26498         (vmaxnmaq_m_f16): Remove.
26499         (vminnmaq_m_f16): Remove.
26500         (vmaxnmaq_m_f32): Remove.
26501         (vminnmaq_m_f32): Remove.
26502         (__arm_vminnmaq_f16): Remove.
26503         (__arm_vmaxnmaq_f16): Remove.
26504         (__arm_vminnmaq_f32): Remove.
26505         (__arm_vmaxnmaq_f32): Remove.
26506         (__arm_vmaxnmaq_m_f16): Remove.
26507         (__arm_vminnmaq_m_f16): Remove.
26508         (__arm_vmaxnmaq_m_f32): Remove.
26509         (__arm_vminnmaq_m_f32): Remove.
26510         (__arm_vminnmaq): Remove.
26511         (__arm_vmaxnmaq): Remove.
26512         (__arm_vmaxnmaq_m): Remove.
26513         (__arm_vminnmaq_m): Remove.
26515 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26517         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
26518         (MVE_VMAXNMA_VMINNMAQ_M): New.
26519         (mve_insn): Add vmaxnma, vminnma.
26520         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
26521         Merge into ...
26522         (@mve_<mve_insn>q_f<mode>): ... this.
26523         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
26524         (@mve_<mve_insn>q_m_f<mode>): ... this.
26526 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26528         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
26529         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
26530         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
26531         (vminnmavq, vminnmvq): New.
26532         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
26533         (vminnmavq, vminnmvq): New.
26534         * config/arm/arm_mve.h (vminnmvq): Remove.
26535         (vminnmavq): Remove.
26536         (vmaxnmvq): Remove.
26537         (vmaxnmavq): Remove.
26538         (vmaxnmavq_p): Remove.
26539         (vmaxnmvq_p): Remove.
26540         (vminnmavq_p): Remove.
26541         (vminnmvq_p): Remove.
26542         (vminnmvq_f16): Remove.
26543         (vminnmavq_f16): Remove.
26544         (vmaxnmvq_f16): Remove.
26545         (vmaxnmavq_f16): Remove.
26546         (vminnmvq_f32): Remove.
26547         (vminnmavq_f32): Remove.
26548         (vmaxnmvq_f32): Remove.
26549         (vmaxnmavq_f32): Remove.
26550         (vmaxnmavq_p_f16): Remove.
26551         (vmaxnmvq_p_f16): Remove.
26552         (vminnmavq_p_f16): Remove.
26553         (vminnmvq_p_f16): Remove.
26554         (vmaxnmavq_p_f32): Remove.
26555         (vmaxnmvq_p_f32): Remove.
26556         (vminnmavq_p_f32): Remove.
26557         (vminnmvq_p_f32): Remove.
26558         (__arm_vminnmvq_f16): Remove.
26559         (__arm_vminnmavq_f16): Remove.
26560         (__arm_vmaxnmvq_f16): Remove.
26561         (__arm_vmaxnmavq_f16): Remove.
26562         (__arm_vminnmvq_f32): Remove.
26563         (__arm_vminnmavq_f32): Remove.
26564         (__arm_vmaxnmvq_f32): Remove.
26565         (__arm_vmaxnmavq_f32): Remove.
26566         (__arm_vmaxnmavq_p_f16): Remove.
26567         (__arm_vmaxnmvq_p_f16): Remove.
26568         (__arm_vminnmavq_p_f16): Remove.
26569         (__arm_vminnmvq_p_f16): Remove.
26570         (__arm_vmaxnmavq_p_f32): Remove.
26571         (__arm_vmaxnmvq_p_f32): Remove.
26572         (__arm_vminnmavq_p_f32): Remove.
26573         (__arm_vminnmvq_p_f32): Remove.
26574         (__arm_vminnmvq): Remove.
26575         (__arm_vminnmavq): Remove.
26576         (__arm_vmaxnmvq): Remove.
26577         (__arm_vmaxnmavq): Remove.
26578         (__arm_vmaxnmavq_p): Remove.
26579         (__arm_vmaxnmvq_p): Remove.
26580         (__arm_vminnmavq_p): Remove.
26581         (__arm_vminnmvq_p): Remove.
26582         (__arm_vmaxnmavq_m): Remove.
26583         (__arm_vmaxnmvq_m): Remove.
26585 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26587         * config/arm/arm-mve-builtins-functions.h
26588         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
26590 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26592         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
26593         (MVE_VMAXNMxV_MINNMxVQ_P): New.
26594         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
26595         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
26596         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
26597         (@mve_<mve_insn>q_f<mode>): ... this.
26598         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
26599         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
26600         (@mve_<mve_insn>q_p_f<mode>): ... this.
26602 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26604         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
26605         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
26606         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
26607         * config/arm/arm_mve.h (vminnmq): Remove.
26608         (vmaxnmq): Remove.
26609         (vmaxnmq_m): Remove.
26610         (vminnmq_m): Remove.
26611         (vminnmq_x): Remove.
26612         (vmaxnmq_x): Remove.
26613         (vminnmq_f16): Remove.
26614         (vmaxnmq_f16): Remove.
26615         (vminnmq_f32): Remove.
26616         (vmaxnmq_f32): Remove.
26617         (vmaxnmq_m_f32): Remove.
26618         (vmaxnmq_m_f16): Remove.
26619         (vminnmq_m_f32): Remove.
26620         (vminnmq_m_f16): Remove.
26621         (vminnmq_x_f16): Remove.
26622         (vminnmq_x_f32): Remove.
26623         (vmaxnmq_x_f16): Remove.
26624         (vmaxnmq_x_f32): Remove.
26625         (__arm_vminnmq_f16): Remove.
26626         (__arm_vmaxnmq_f16): Remove.
26627         (__arm_vminnmq_f32): Remove.
26628         (__arm_vmaxnmq_f32): Remove.
26629         (__arm_vmaxnmq_m_f32): Remove.
26630         (__arm_vmaxnmq_m_f16): Remove.
26631         (__arm_vminnmq_m_f32): Remove.
26632         (__arm_vminnmq_m_f16): Remove.
26633         (__arm_vminnmq_x_f16): Remove.
26634         (__arm_vminnmq_x_f32): Remove.
26635         (__arm_vmaxnmq_x_f16): Remove.
26636         (__arm_vmaxnmq_x_f32): Remove.
26637         (__arm_vminnmq): Remove.
26638         (__arm_vmaxnmq): Remove.
26639         (__arm_vmaxnmq_m): Remove.
26640         (__arm_vminnmq_m): Remove.
26641         (__arm_vminnmq_x): Remove.
26642         (__arm_vmaxnmq_x): Remove.
26644 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26646         * config/arm/iterators.md (MAX_MIN_F): New.
26647         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
26648         (mve_insn): Add vmaxnm, vminnm.
26649         (max_min_f_str): New.
26650         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
26651         Merge into ...
26652         (@mve_<max_min_f_str>q_f<mode>): ... this.
26653         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
26654         (@mve_<mve_insn>q_m_f<mode>): ... this.
26656 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26658         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
26659         (smax<mode>3): Likewise.
26661 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26663         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
26664         (FUNCTION_PRED_P_S): New.
26665         (vmaxavq, vminavq, vmaxvq, vminvq): New.
26666         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
26667         (vminvq): New.
26668         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
26669         (vminvq): New.
26670         * config/arm/arm_mve.h (vminvq): Remove.
26671         (vmaxvq): Remove.
26672         (vminvq_p): Remove.
26673         (vmaxvq_p): Remove.
26674         (vminvq_u8): Remove.
26675         (vmaxvq_u8): Remove.
26676         (vminvq_s8): Remove.
26677         (vmaxvq_s8): Remove.
26678         (vminvq_u16): Remove.
26679         (vmaxvq_u16): Remove.
26680         (vminvq_s16): Remove.
26681         (vmaxvq_s16): Remove.
26682         (vminvq_u32): Remove.
26683         (vmaxvq_u32): Remove.
26684         (vminvq_s32): Remove.
26685         (vmaxvq_s32): Remove.
26686         (vminvq_p_u8): Remove.
26687         (vmaxvq_p_u8): Remove.
26688         (vminvq_p_s8): Remove.
26689         (vmaxvq_p_s8): Remove.
26690         (vminvq_p_u16): Remove.
26691         (vmaxvq_p_u16): Remove.
26692         (vminvq_p_s16): Remove.
26693         (vmaxvq_p_s16): Remove.
26694         (vminvq_p_u32): Remove.
26695         (vmaxvq_p_u32): Remove.
26696         (vminvq_p_s32): Remove.
26697         (vmaxvq_p_s32): Remove.
26698         (__arm_vminvq_u8): Remove.
26699         (__arm_vmaxvq_u8): Remove.
26700         (__arm_vminvq_s8): Remove.
26701         (__arm_vmaxvq_s8): Remove.
26702         (__arm_vminvq_u16): Remove.
26703         (__arm_vmaxvq_u16): Remove.
26704         (__arm_vminvq_s16): Remove.
26705         (__arm_vmaxvq_s16): Remove.
26706         (__arm_vminvq_u32): Remove.
26707         (__arm_vmaxvq_u32): Remove.
26708         (__arm_vminvq_s32): Remove.
26709         (__arm_vmaxvq_s32): Remove.
26710         (__arm_vminvq_p_u8): Remove.
26711         (__arm_vmaxvq_p_u8): Remove.
26712         (__arm_vminvq_p_s8): Remove.
26713         (__arm_vmaxvq_p_s8): Remove.
26714         (__arm_vminvq_p_u16): Remove.
26715         (__arm_vmaxvq_p_u16): Remove.
26716         (__arm_vminvq_p_s16): Remove.
26717         (__arm_vmaxvq_p_s16): Remove.
26718         (__arm_vminvq_p_u32): Remove.
26719         (__arm_vmaxvq_p_u32): Remove.
26720         (__arm_vminvq_p_s32): Remove.
26721         (__arm_vmaxvq_p_s32): Remove.
26722         (__arm_vminvq): Remove.
26723         (__arm_vmaxvq): Remove.
26724         (__arm_vminvq_p): Remove.
26725         (__arm_vmaxvq_p): Remove.
26726         (vminavq): Remove.
26727         (vmaxavq): Remove.
26728         (vminavq_p): Remove.
26729         (vmaxavq_p): Remove.
26730         (vminavq_s8): Remove.
26731         (vmaxavq_s8): Remove.
26732         (vminavq_s16): Remove.
26733         (vmaxavq_s16): Remove.
26734         (vminavq_s32): Remove.
26735         (vmaxavq_s32): Remove.
26736         (vminavq_p_s8): Remove.
26737         (vmaxavq_p_s8): Remove.
26738         (vminavq_p_s16): Remove.
26739         (vmaxavq_p_s16): Remove.
26740         (vminavq_p_s32): Remove.
26741         (vmaxavq_p_s32): Remove.
26742         (__arm_vminavq_s8): Remove.
26743         (__arm_vmaxavq_s8): Remove.
26744         (__arm_vminavq_s16): Remove.
26745         (__arm_vmaxavq_s16): Remove.
26746         (__arm_vminavq_s32): Remove.
26747         (__arm_vmaxavq_s32): Remove.
26748         (__arm_vminavq_p_s8): Remove.
26749         (__arm_vmaxavq_p_s8): Remove.
26750         (__arm_vminavq_p_s16): Remove.
26751         (__arm_vmaxavq_p_s16): Remove.
26752         (__arm_vminavq_p_s32): Remove.
26753         (__arm_vmaxavq_p_s32): Remove.
26754         (__arm_vminavq): Remove.
26755         (__arm_vmaxavq): Remove.
26756         (__arm_vminavq_p): Remove.
26757         (__arm_vmaxavq_p): Remove.
26759 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26761         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
26762         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
26763         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
26764         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
26765         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
26766         (@mve_<mve_insn>q_<supf><mode>): ... this.
26767         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
26768         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
26769         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
26771 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26773         * config/arm/arm-mve-builtins-functions.h (class
26774         unspec_mve_function_exact_insn_pred_p): New.
26776 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26778         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
26779         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
26781 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26783         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
26784         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
26786 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
26788         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
26789         Declare.
26790         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
26791         (ADJUST_REG_ALLOC_ORDER): Likewise.
26792         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
26793         function.
26794         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
26795         Upa rather than Upl for unpredicated movprfx alternatives.
26797 2023-05-09  Jeff Law  <jlaw@ventanamicro>
26799         * config/h8300/testcompare.md: Add peephole2 which uses a memory
26800         load to set flags, thus eliminating a compare against zero.
26802 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26804         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
26805         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
26806         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
26807         * config/arm/arm_mve.h (vshlltq): Remove.
26808         (vshllbq): Remove.
26809         (vshllbq_m): Remove.
26810         (vshlltq_m): Remove.
26811         (vshllbq_x): Remove.
26812         (vshlltq_x): Remove.
26813         (vshlltq_n_u8): Remove.
26814         (vshllbq_n_u8): Remove.
26815         (vshlltq_n_s8): Remove.
26816         (vshllbq_n_s8): Remove.
26817         (vshlltq_n_u16): Remove.
26818         (vshllbq_n_u16): Remove.
26819         (vshlltq_n_s16): Remove.
26820         (vshllbq_n_s16): Remove.
26821         (vshllbq_m_n_s8): Remove.
26822         (vshllbq_m_n_s16): Remove.
26823         (vshllbq_m_n_u8): Remove.
26824         (vshllbq_m_n_u16): Remove.
26825         (vshlltq_m_n_s8): Remove.
26826         (vshlltq_m_n_s16): Remove.
26827         (vshlltq_m_n_u8): Remove.
26828         (vshlltq_m_n_u16): Remove.
26829         (vshllbq_x_n_s8): Remove.
26830         (vshllbq_x_n_s16): Remove.
26831         (vshllbq_x_n_u8): Remove.
26832         (vshllbq_x_n_u16): Remove.
26833         (vshlltq_x_n_s8): Remove.
26834         (vshlltq_x_n_s16): Remove.
26835         (vshlltq_x_n_u8): Remove.
26836         (vshlltq_x_n_u16): Remove.
26837         (__arm_vshlltq_n_u8): Remove.
26838         (__arm_vshllbq_n_u8): Remove.
26839         (__arm_vshlltq_n_s8): Remove.
26840         (__arm_vshllbq_n_s8): Remove.
26841         (__arm_vshlltq_n_u16): Remove.
26842         (__arm_vshllbq_n_u16): Remove.
26843         (__arm_vshlltq_n_s16): Remove.
26844         (__arm_vshllbq_n_s16): Remove.
26845         (__arm_vshllbq_m_n_s8): Remove.
26846         (__arm_vshllbq_m_n_s16): Remove.
26847         (__arm_vshllbq_m_n_u8): Remove.
26848         (__arm_vshllbq_m_n_u16): Remove.
26849         (__arm_vshlltq_m_n_s8): Remove.
26850         (__arm_vshlltq_m_n_s16): Remove.
26851         (__arm_vshlltq_m_n_u8): Remove.
26852         (__arm_vshlltq_m_n_u16): Remove.
26853         (__arm_vshllbq_x_n_s8): Remove.
26854         (__arm_vshllbq_x_n_s16): Remove.
26855         (__arm_vshllbq_x_n_u8): Remove.
26856         (__arm_vshllbq_x_n_u16): Remove.
26857         (__arm_vshlltq_x_n_s8): Remove.
26858         (__arm_vshlltq_x_n_s16): Remove.
26859         (__arm_vshlltq_x_n_u8): Remove.
26860         (__arm_vshlltq_x_n_u16): Remove.
26861         (__arm_vshlltq): Remove.
26862         (__arm_vshllbq): Remove.
26863         (__arm_vshllbq_m): Remove.
26864         (__arm_vshlltq_m): Remove.
26865         (__arm_vshllbq_x): Remove.
26866         (__arm_vshlltq_x): Remove.
26868 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26870         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
26871         (VSHLLBQ_N, VSHLLTQ_N): Remove.
26872         (VSHLLxQ_N): New.
26873         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
26874         (VSHLLxQ_M_N): New.
26875         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
26876         (mve_vshlltq_n_<supf><mode>): Merge into ...
26877         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
26878         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
26879         Merge into ...
26880         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
26882 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26884         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
26885         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
26887 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
26889         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
26890         (vqmovntq, vqmovunbq, vqmovuntq): New.
26891         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
26892         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
26893         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
26894         (vqmovntq, vqmovunbq, vqmovuntq): New.
26895         * config/arm/arm-mve-builtins.cc
26896         (function_instance::has_inactive_argument): Handle vmovnbq,
26897         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
26898         * config/arm/arm_mve.h (vqmovntq): Remove.
26899         (vqmovnbq): Remove.
26900         (vqmovnbq_m): Remove.
26901         (vqmovntq_m): Remove.
26902         (vqmovntq_u16): Remove.
26903         (vqmovnbq_u16): Remove.
26904         (vqmovntq_s16): Remove.
26905         (vqmovnbq_s16): Remove.
26906         (vqmovntq_u32): Remove.
26907         (vqmovnbq_u32): Remove.
26908         (vqmovntq_s32): Remove.
26909         (vqmovnbq_s32): Remove.
26910         (vqmovnbq_m_s16): Remove.
26911         (vqmovntq_m_s16): Remove.
26912         (vqmovnbq_m_u16): Remove.
26913         (vqmovntq_m_u16): Remove.
26914         (vqmovnbq_m_s32): Remove.
26915         (vqmovntq_m_s32): Remove.
26916         (vqmovnbq_m_u32): Remove.
26917         (vqmovntq_m_u32): Remove.
26918         (__arm_vqmovntq_u16): Remove.
26919         (__arm_vqmovnbq_u16): Remove.
26920         (__arm_vqmovntq_s16): Remove.
26921         (__arm_vqmovnbq_s16): Remove.
26922         (__arm_vqmovntq_u32): Remove.
26923         (__arm_vqmovnbq_u32): Remove.
26924         (__arm_vqmovntq_s32): Remove.
26925         (__arm_vqmovnbq_s32): Remove.
26926         (__arm_vqmovnbq_m_s16): Remove.
26927         (__arm_vqmovntq_m_s16): Remove.
26928         (__arm_vqmovnbq_m_u16): Remove.
26929         (__arm_vqmovntq_m_u16): Remove.
26930         (__arm_vqmovnbq_m_s32): Remove.
26931         (__arm_vqmovntq_m_s32): Remove.
26932         (__arm_vqmovnbq_m_u32): Remove.
26933         (__arm_vqmovntq_m_u32): Remove.
26934         (__arm_vqmovntq): Remove.
26935         (__arm_vqmovnbq): Remove.
26936         (__arm_vqmovnbq_m): Remove.
26937         (__arm_vqmovntq_m): Remove.
26938         (vmovntq): Remove.
26939         (vmovnbq): Remove.
26940         (vmovnbq_m): Remove.
26941         (vmovntq_m): Remove.
26942         (vmovntq_u16): Remove.
26943         (vmovnbq_u16): Remove.
26944         (vmovntq_s16): Remove.
26945         (vmovnbq_s16): Remove.
26946         (vmovntq_u32): Remove.
26947         (vmovnbq_u32): Remove.
26948         (vmovntq_s32): Remove.
26949         (vmovnbq_s32): Remove.
26950         (vmovnbq_m_s16): Remove.
26951         (vmovntq_m_s16): Remove.
26952         (vmovnbq_m_u16): Remove.
26953         (vmovntq_m_u16): Remove.
26954         (vmovnbq_m_s32): Remove.
26955         (vmovntq_m_s32): Remove.
26956         (vmovnbq_m_u32): Remove.
26957         (vmovntq_m_u32): Remove.
26958         (__arm_vmovntq_u16): Remove.
26959         (__arm_vmovnbq_u16): Remove.
26960         (__arm_vmovntq_s16): Remove.
26961         (__arm_vmovnbq_s16): Remove.
26962         (__arm_vmovntq_u32): Remove.
26963         (__arm_vmovnbq_u32): Remove.
26964         (__arm_vmovntq_s32): Remove.
26965         (__arm_vmovnbq_s32): Remove.
26966         (__arm_vmovnbq_m_s16): Remove.
26967         (__arm_vmovntq_m_s16): Remove.
26968         (__arm_vmovnbq_m_u16): Remove.
26969         (__arm_vmovntq_m_u16): Remove.
26970         (__arm_vmovnbq_m_s32): Remove.
26971         (__arm_vmovntq_m_s32): Remove.
26972         (__arm_vmovnbq_m_u32): Remove.
26973         (__arm_vmovntq_m_u32): Remove.
26974         (__arm_vmovntq): Remove.
26975         (__arm_vmovnbq): Remove.
26976         (__arm_vmovnbq_m): Remove.
26977         (__arm_vmovntq_m): Remove.
26978         (vqmovuntq): Remove.
26979         (vqmovunbq): Remove.
26980         (vqmovunbq_m): Remove.
26981         (vqmovuntq_m): Remove.
26982         (vqmovuntq_s16): Remove.
26983         (vqmovunbq_s16): Remove.
26984         (vqmovuntq_s32): Remove.
26985         (vqmovunbq_s32): Remove.
26986         (vqmovunbq_m_s16): Remove.
26987         (vqmovuntq_m_s16): Remove.
26988         (vqmovunbq_m_s32): Remove.
26989         (vqmovuntq_m_s32): Remove.
26990         (__arm_vqmovuntq_s16): Remove.
26991         (__arm_vqmovunbq_s16): Remove.
26992         (__arm_vqmovuntq_s32): Remove.
26993         (__arm_vqmovunbq_s32): Remove.
26994         (__arm_vqmovunbq_m_s16): Remove.
26995         (__arm_vqmovuntq_m_s16): Remove.
26996         (__arm_vqmovunbq_m_s32): Remove.
26997         (__arm_vqmovuntq_m_s32): Remove.
26998         (__arm_vqmovuntq): Remove.
26999         (__arm_vqmovunbq): Remove.
27000         (__arm_vqmovunbq_m): Remove.
27001         (__arm_vqmovuntq_m): Remove.
27003 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
27005         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
27006         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
27007         vqmovunt.
27008         (isu): Likewise.
27009         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
27010         VQMOVUNTQ_S.
27011         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
27012         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
27013         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
27014         (mve_vqmovuntq_s<mode>): Merge into ...
27015         (@mve_<mve_insn>q_<supf><mode>): ... this.
27016         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
27017         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
27018         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
27019         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
27021 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
27023         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
27024         (binary_move_narrow_unsigned): New.
27025         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
27026         (binary_move_narrow_unsigned): New.
27028 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
27030         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
27031         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
27032         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
27033         (vrndpq, vrndq, vrndxq): New.
27034         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
27035         (vrndpq, vrndq, vrndxq): New.
27036         * config/arm/arm_mve.h (vrndxq): Remove.
27037         (vrndq): Remove.
27038         (vrndpq): Remove.
27039         (vrndnq): Remove.
27040         (vrndmq): Remove.
27041         (vrndaq): Remove.
27042         (vrndaq_m): Remove.
27043         (vrndmq_m): Remove.
27044         (vrndnq_m): Remove.
27045         (vrndpq_m): Remove.
27046         (vrndq_m): Remove.
27047         (vrndxq_m): Remove.
27048         (vrndq_x): Remove.
27049         (vrndnq_x): Remove.
27050         (vrndmq_x): Remove.
27051         (vrndpq_x): Remove.
27052         (vrndaq_x): Remove.
27053         (vrndxq_x): Remove.
27054         (vrndxq_f16): Remove.
27055         (vrndxq_f32): Remove.
27056         (vrndq_f16): Remove.
27057         (vrndq_f32): Remove.
27058         (vrndpq_f16): Remove.
27059         (vrndpq_f32): Remove.
27060         (vrndnq_f16): Remove.
27061         (vrndnq_f32): Remove.
27062         (vrndmq_f16): Remove.
27063         (vrndmq_f32): Remove.
27064         (vrndaq_f16): Remove.
27065         (vrndaq_f32): Remove.
27066         (vrndaq_m_f16): Remove.
27067         (vrndmq_m_f16): Remove.
27068         (vrndnq_m_f16): Remove.
27069         (vrndpq_m_f16): Remove.
27070         (vrndq_m_f16): Remove.
27071         (vrndxq_m_f16): Remove.
27072         (vrndaq_m_f32): Remove.
27073         (vrndmq_m_f32): Remove.
27074         (vrndnq_m_f32): Remove.
27075         (vrndpq_m_f32): Remove.
27076         (vrndq_m_f32): Remove.
27077         (vrndxq_m_f32): Remove.
27078         (vrndq_x_f16): Remove.
27079         (vrndq_x_f32): Remove.
27080         (vrndnq_x_f16): Remove.
27081         (vrndnq_x_f32): Remove.
27082         (vrndmq_x_f16): Remove.
27083         (vrndmq_x_f32): Remove.
27084         (vrndpq_x_f16): Remove.
27085         (vrndpq_x_f32): Remove.
27086         (vrndaq_x_f16): Remove.
27087         (vrndaq_x_f32): Remove.
27088         (vrndxq_x_f16): Remove.
27089         (vrndxq_x_f32): Remove.
27090         (__arm_vrndxq_f16): Remove.
27091         (__arm_vrndxq_f32): Remove.
27092         (__arm_vrndq_f16): Remove.
27093         (__arm_vrndq_f32): Remove.
27094         (__arm_vrndpq_f16): Remove.
27095         (__arm_vrndpq_f32): Remove.
27096         (__arm_vrndnq_f16): Remove.
27097         (__arm_vrndnq_f32): Remove.
27098         (__arm_vrndmq_f16): Remove.
27099         (__arm_vrndmq_f32): Remove.
27100         (__arm_vrndaq_f16): Remove.
27101         (__arm_vrndaq_f32): Remove.
27102         (__arm_vrndaq_m_f16): Remove.
27103         (__arm_vrndmq_m_f16): Remove.
27104         (__arm_vrndnq_m_f16): Remove.
27105         (__arm_vrndpq_m_f16): Remove.
27106         (__arm_vrndq_m_f16): Remove.
27107         (__arm_vrndxq_m_f16): Remove.
27108         (__arm_vrndaq_m_f32): Remove.
27109         (__arm_vrndmq_m_f32): Remove.
27110         (__arm_vrndnq_m_f32): Remove.
27111         (__arm_vrndpq_m_f32): Remove.
27112         (__arm_vrndq_m_f32): Remove.
27113         (__arm_vrndxq_m_f32): Remove.
27114         (__arm_vrndq_x_f16): Remove.
27115         (__arm_vrndq_x_f32): Remove.
27116         (__arm_vrndnq_x_f16): Remove.
27117         (__arm_vrndnq_x_f32): Remove.
27118         (__arm_vrndmq_x_f16): Remove.
27119         (__arm_vrndmq_x_f32): Remove.
27120         (__arm_vrndpq_x_f16): Remove.
27121         (__arm_vrndpq_x_f32): Remove.
27122         (__arm_vrndaq_x_f16): Remove.
27123         (__arm_vrndaq_x_f32): Remove.
27124         (__arm_vrndxq_x_f16): Remove.
27125         (__arm_vrndxq_x_f32): Remove.
27126         (__arm_vrndxq): Remove.
27127         (__arm_vrndq): Remove.
27128         (__arm_vrndpq): Remove.
27129         (__arm_vrndnq): Remove.
27130         (__arm_vrndmq): Remove.
27131         (__arm_vrndaq): Remove.
27132         (__arm_vrndaq_m): Remove.
27133         (__arm_vrndmq_m): Remove.
27134         (__arm_vrndnq_m): Remove.
27135         (__arm_vrndpq_m): Remove.
27136         (__arm_vrndq_m): Remove.
27137         (__arm_vrndxq_m): Remove.
27138         (__arm_vrndq_x): Remove.
27139         (__arm_vrndnq_x): Remove.
27140         (__arm_vrndmq_x): Remove.
27141         (__arm_vrndpq_x): Remove.
27142         (__arm_vrndaq_x): Remove.
27143         (__arm_vrndxq_x): Remove.
27145 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
27147         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
27148         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
27149         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
27150         (vclzq, vqabsq, vqnegq): New.
27151         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
27152         (vqabsq, vqnegq): New.
27153         * config/arm/arm_mve.h (vabsq): Remove.
27154         (vabsq_m): Remove.
27155         (vabsq_x): Remove.
27156         (vabsq_f16): Remove.
27157         (vabsq_f32): Remove.
27158         (vabsq_s8): Remove.
27159         (vabsq_s16): Remove.
27160         (vabsq_s32): Remove.
27161         (vabsq_m_s8): Remove.
27162         (vabsq_m_s16): Remove.
27163         (vabsq_m_s32): Remove.
27164         (vabsq_m_f16): Remove.
27165         (vabsq_m_f32): Remove.
27166         (vabsq_x_s8): Remove.
27167         (vabsq_x_s16): Remove.
27168         (vabsq_x_s32): Remove.
27169         (vabsq_x_f16): Remove.
27170         (vabsq_x_f32): Remove.
27171         (__arm_vabsq_s8): Remove.
27172         (__arm_vabsq_s16): Remove.
27173         (__arm_vabsq_s32): Remove.
27174         (__arm_vabsq_m_s8): Remove.
27175         (__arm_vabsq_m_s16): Remove.
27176         (__arm_vabsq_m_s32): Remove.
27177         (__arm_vabsq_x_s8): Remove.
27178         (__arm_vabsq_x_s16): Remove.
27179         (__arm_vabsq_x_s32): Remove.
27180         (__arm_vabsq_f16): Remove.
27181         (__arm_vabsq_f32): Remove.
27182         (__arm_vabsq_m_f16): Remove.
27183         (__arm_vabsq_m_f32): Remove.
27184         (__arm_vabsq_x_f16): Remove.
27185         (__arm_vabsq_x_f32): Remove.
27186         (__arm_vabsq): Remove.
27187         (__arm_vabsq_m): Remove.
27188         (__arm_vabsq_x): Remove.
27189         (vnegq): Remove.
27190         (vnegq_m): Remove.
27191         (vnegq_x): Remove.
27192         (vnegq_f16): Remove.
27193         (vnegq_f32): Remove.
27194         (vnegq_s8): Remove.
27195         (vnegq_s16): Remove.
27196         (vnegq_s32): Remove.
27197         (vnegq_m_s8): Remove.
27198         (vnegq_m_s16): Remove.
27199         (vnegq_m_s32): Remove.
27200         (vnegq_m_f16): Remove.
27201         (vnegq_m_f32): Remove.
27202         (vnegq_x_s8): Remove.
27203         (vnegq_x_s16): Remove.
27204         (vnegq_x_s32): Remove.
27205         (vnegq_x_f16): Remove.
27206         (vnegq_x_f32): Remove.
27207         (__arm_vnegq_s8): Remove.
27208         (__arm_vnegq_s16): Remove.
27209         (__arm_vnegq_s32): Remove.
27210         (__arm_vnegq_m_s8): Remove.
27211         (__arm_vnegq_m_s16): Remove.
27212         (__arm_vnegq_m_s32): Remove.
27213         (__arm_vnegq_x_s8): Remove.
27214         (__arm_vnegq_x_s16): Remove.
27215         (__arm_vnegq_x_s32): Remove.
27216         (__arm_vnegq_f16): Remove.
27217         (__arm_vnegq_f32): Remove.
27218         (__arm_vnegq_m_f16): Remove.
27219         (__arm_vnegq_m_f32): Remove.
27220         (__arm_vnegq_x_f16): Remove.
27221         (__arm_vnegq_x_f32): Remove.
27222         (__arm_vnegq): Remove.
27223         (__arm_vnegq_m): Remove.
27224         (__arm_vnegq_x): Remove.
27225         (vclsq): Remove.
27226         (vclsq_m): Remove.
27227         (vclsq_x): Remove.
27228         (vclsq_s8): Remove.
27229         (vclsq_s16): Remove.
27230         (vclsq_s32): Remove.
27231         (vclsq_m_s8): Remove.
27232         (vclsq_m_s16): Remove.
27233         (vclsq_m_s32): Remove.
27234         (vclsq_x_s8): Remove.
27235         (vclsq_x_s16): Remove.
27236         (vclsq_x_s32): Remove.
27237         (__arm_vclsq_s8): Remove.
27238         (__arm_vclsq_s16): Remove.
27239         (__arm_vclsq_s32): Remove.
27240         (__arm_vclsq_m_s8): Remove.
27241         (__arm_vclsq_m_s16): Remove.
27242         (__arm_vclsq_m_s32): Remove.
27243         (__arm_vclsq_x_s8): Remove.
27244         (__arm_vclsq_x_s16): Remove.
27245         (__arm_vclsq_x_s32): Remove.
27246         (__arm_vclsq): Remove.
27247         (__arm_vclsq_m): Remove.
27248         (__arm_vclsq_x): Remove.
27249         (vclzq): Remove.
27250         (vclzq_m): Remove.
27251         (vclzq_x): Remove.
27252         (vclzq_s8): Remove.
27253         (vclzq_s16): Remove.
27254         (vclzq_s32): Remove.
27255         (vclzq_u8): Remove.
27256         (vclzq_u16): Remove.
27257         (vclzq_u32): Remove.
27258         (vclzq_m_u8): Remove.
27259         (vclzq_m_s8): Remove.
27260         (vclzq_m_u16): Remove.
27261         (vclzq_m_s16): Remove.
27262         (vclzq_m_u32): Remove.
27263         (vclzq_m_s32): Remove.
27264         (vclzq_x_s8): Remove.
27265         (vclzq_x_s16): Remove.
27266         (vclzq_x_s32): Remove.
27267         (vclzq_x_u8): Remove.
27268         (vclzq_x_u16): Remove.
27269         (vclzq_x_u32): Remove.
27270         (__arm_vclzq_s8): Remove.
27271         (__arm_vclzq_s16): Remove.
27272         (__arm_vclzq_s32): Remove.
27273         (__arm_vclzq_u8): Remove.
27274         (__arm_vclzq_u16): Remove.
27275         (__arm_vclzq_u32): Remove.
27276         (__arm_vclzq_m_u8): Remove.
27277         (__arm_vclzq_m_s8): Remove.
27278         (__arm_vclzq_m_u16): Remove.
27279         (__arm_vclzq_m_s16): Remove.
27280         (__arm_vclzq_m_u32): Remove.
27281         (__arm_vclzq_m_s32): Remove.
27282         (__arm_vclzq_x_s8): Remove.
27283         (__arm_vclzq_x_s16): Remove.
27284         (__arm_vclzq_x_s32): Remove.
27285         (__arm_vclzq_x_u8): Remove.
27286         (__arm_vclzq_x_u16): Remove.
27287         (__arm_vclzq_x_u32): Remove.
27288         (__arm_vclzq): Remove.
27289         (__arm_vclzq_m): Remove.
27290         (__arm_vclzq_x): Remove.
27291         (vqabsq): Remove.
27292         (vqnegq): Remove.
27293         (vqnegq_m): Remove.
27294         (vqabsq_m): Remove.
27295         (vqabsq_s8): Remove.
27296         (vqabsq_s16): Remove.
27297         (vqabsq_s32): Remove.
27298         (vqnegq_s8): Remove.
27299         (vqnegq_s16): Remove.
27300         (vqnegq_s32): Remove.
27301         (vqnegq_m_s8): Remove.
27302         (vqabsq_m_s8): Remove.
27303         (vqnegq_m_s16): Remove.
27304         (vqabsq_m_s16): Remove.
27305         (vqnegq_m_s32): Remove.
27306         (vqabsq_m_s32): Remove.
27307         (__arm_vqabsq_s8): Remove.
27308         (__arm_vqabsq_s16): Remove.
27309         (__arm_vqabsq_s32): Remove.
27310         (__arm_vqnegq_s8): Remove.
27311         (__arm_vqnegq_s16): Remove.
27312         (__arm_vqnegq_s32): Remove.
27313         (__arm_vqnegq_m_s8): Remove.
27314         (__arm_vqabsq_m_s8): Remove.
27315         (__arm_vqnegq_m_s16): Remove.
27316         (__arm_vqabsq_m_s16): Remove.
27317         (__arm_vqnegq_m_s32): Remove.
27318         (__arm_vqabsq_m_s32): Remove.
27319         (__arm_vqabsq): Remove.
27320         (__arm_vqnegq): Remove.
27321         (__arm_vqnegq_m): Remove.
27322         (__arm_vqabsq_m): Remove.
27324 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
27326         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
27327         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
27328         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
27329         vrndm, vrndn, vrndp, vrnd, vrndx.
27330         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
27331         VQABSQ_M_S, VQNEGQ_M_S.
27332         (mve_mnemo): New.
27333         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
27334         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
27335         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
27336         (@mve_<mve_insn>q_f<mode>): ... this.
27337         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
27338         (mve_v<absneg_str>q_f<mode>): ... this.
27339         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
27340         (mve_v<absneg_str>q_s<mode>): ... this.
27341         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
27342         (@mve_<mve_insn>q_<supf><mode>): ... this.
27343         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
27344         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
27345         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
27346         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
27347         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
27348         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
27349         (mve_vrndxq_m_f<mode>): Merge into ...
27350         (@mve_<mve_insn>q_m_f<mode>): ... this.
27352 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
27354         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
27355         * config/arm/arm-mve-builtins-shapes.h (unary): New.
27357 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
27359         * mux-utils.h: Fix comment typo, avoides -> avoids.
27361 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
27363         PR tree-optimization/109778
27364         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
27365         wi::zext (x, width) rather than x if width != precision, rather
27366         than using wi::zext (right, width) after the shift.
27367         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
27368         of wi::lrotate or wi::rrotate.
27370 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
27372         * genmatch.cc (get_out_file): Make static and rename to ...
27373         (choose_output): ... this. Reimplement. Update all uses ...
27374         (decision_tree::gen): ... here and ...
27375         (main): ... here.
27377 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
27379         * genmatch.cc (showUsage): Reimplement as ...
27380         (usage): ...this.  Adjust all uses.
27381         (main): Print usage when no arguments.  Add missing 'return 1'.
27383 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
27385         * genmatch.cc (header_file): Make static.
27386         (emit_func): Rename to...
27387         (fp_decl): ... this.  Adjust all uses.
27388         (fp_decl_done): New function.  Use it...
27389         (decision_tree::gen): ... here and...
27390         (write_predicate): ... here.
27391         (main): Adjust.
27393 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
27395         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
27396         earlyclobbers.
27398 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
27399             Uros Bizjak  <ubizjak@gmail.com>
27401         * config/i386/i386.md (any_or_plus): Move definition earlier.
27402         (*insvti_highpart_1): New define_insn_and_split to overwrite
27403         (insv) the highpart of a TImode register/memory.
27405 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
27407         * auto-profile.cc (auto_profile): Check todo from early_inline
27408         to see if cleanup_tree_vfg needs to be called.
27409         (early_inline): Return todo from early_inliner.
27411 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
27413         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
27414         New.
27415         (pass_vsetvl::get_block_info): New.
27416         (pass_vsetvl::update_vector_info): New.
27417         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
27418         (pass_vsetvl::compute_local_backward_infos): Ditto.
27419         (pass_vsetvl::transfer_before): Ditto.
27420         (pass_vsetvl::transfer_after): Ditto.
27421         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
27422         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
27423         (pass_vsetvl::cleanup_insns): Ditto.
27424         (pass_vsetvl::compute_local_backward_infos): Use
27425         update_vector_info.
27427 2023-05-08  Jeff Law  <jlaw@ventanamicro>
27429         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
27431 2023-05-08  Richard Biener  <rguenther@suse.de>
27432             Michael Meissner  <meissner@linux.ibm.com>
27434         PR middle-end/108623
27435         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
27436         Align bit fields > 1 bit to at least an 8-bit boundary.
27438 2023-05-08  Andrew Pinski  <apinski@marvell.com>
27440         PR tree-optimization/109424
27441         PR tree-optimization/59424
27442         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
27443         (factor_out_conditional_operation): This and add support for all unary
27444         operations.
27445         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
27446         to call factor_out_conditional_operation instead.
27448 2023-05-08  Andrew Pinski  <apinski@marvell.com>
27450         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
27451         over factor_out_conditional_conversion.
27453 2023-05-08  Andrew Pinski  <apinski@marvell.com>
27455         PR tree-optimization/49959
27456         PR tree-optimization/103771
27457         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
27458         Diamond shapped bb form for factor_out_conditional_conversion.
27460 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27462         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
27463         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
27464         (riscv_vector_get_mask_mode): Ditto.
27465         (get_mask_policy_no_pred): Ditto.
27466         (get_tail_policy_no_pred): Ditto.
27467         (get_mask_mode): New function.
27468         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
27469         (get_tail_policy_no_pred): Ditto.
27470         (riscv_vector_mask_mode_p): Ditto.
27471         (riscv_vector_get_mask_mode): Ditto.
27472         (get_mask_mode): New function.
27473         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
27474         global extern.
27475         (get_tail_policy_for_pred): Ditto.
27476         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
27477         (get_mask_policy_for_pred): Ditto
27478         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
27480 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
27482         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
27483         (riscv_select_multilib): New.
27484         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
27485         also handle select_by_abi.
27486         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
27487         to select_by_abi_arch_cmodel from 1.
27488         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
27489         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
27491 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
27493         * Makefile.in: (gimple-match-head.o-warn): Remove.
27494         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
27495         gimple-match-exports.cc.
27496         (gimple-match-auto.h): Only depend on s-gimple-match.
27497         (generic-match-auto.h): Likewise.
27499 2023-05-08  Andrew Pinski  <apinski@marvell.com>
27501         PR tree-optimization/109691
27502         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
27503         argument.
27504         If the removed statement can throw, have need_eh_cleanup
27505         include the bb of that statement.
27506         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
27507         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
27508         num_dce.
27509         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
27510         Initialize dceworklist instead of stmts_to_remove.
27511         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
27512         Destore dceworklist instead of stmts_to_remove.
27513         (substitute_and_fold_dom_walker::before_dom_children):
27514         Set dceworklist instead of adding to stmts_to_remove.
27515         (substitute_and_fold_engine::substitute_and_fold):
27516         Call simple_dce_from_worklist instead of poping
27517         from the list.
27518         Don't update the stat on removal statements.
27520 2023-05-07  Andrew Pinski  <apinski@marvell.com>
27522         PR target/109762
27523         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
27524         Change argument type to aarch64_feature_flags.
27525         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
27526         constructor argument type to aarch64_feature_flags.
27527         Change m_old_asm_isa_flags to be aarch64_feature_flags.
27529 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
27531         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
27532         more parallel code if can_create_pseudo_p.
27534 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
27536         PR target/43644
27537         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
27538         immediately before moving a multi-word register by parts.
27540 2023-05-06  Jeff Law  <jlaw@ventanamicro>
27542         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
27544 2023-05-06  Michael Collison  <collison@rivosinc.com>
27546         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
27547         Check that GET_MODE_NUNITS is a multiple of 2.
27549 2023-05-06  Michael Collison  <collison@rivosinc.com>
27551         * config/riscv/riscv.cc
27552         (riscv_estimated_poly_value): Implement
27553         TARGET_ESTIMATED_POLY_VALUE.
27554         (riscv_preferred_simd_mode): Implement
27555         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
27556         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
27557         (riscv_empty_mask_is_expensive): Implement
27558         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
27559         (riscv_vectorize_create_costs): Implement
27560         TARGET_VECTORIZE_CREATE_COSTS.
27561         (riscv_support_vector_misalignment): Implement
27562         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
27563         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
27564         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
27565         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
27566         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
27568 2023-05-06  Jeff Law  <jlaw@ventanamicro>
27570         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
27571         duplicate definition.
27573 2023-05-06  Michael Collison  <collison@rivosinc.com>
27575         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
27576         (riscv_vector_preferred_simd_mode): Ditto.
27577         (get_mask_policy_no_pred): Ditto.
27578         (get_tail_policy_no_pred): Ditto.
27579         (riscv_vector_mask_mode_p): Ditto.
27580         (riscv_vector_get_mask_mode): Ditto.
27582 2023-05-06  Michael Collison  <collison@rivosinc.com>
27584         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
27585         Remove static declaration to to make externally visible.
27586         (get_mask_policy_for_pred): Ditto.
27587         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
27588         New external declaration.
27589         (get_mask_policy_for_pred): Ditto.
27591 2023-05-06  Michael Collison  <collison@rivosinc.com>
27593         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
27594         (riscv_vector_get_mask_mode): Ditto.
27595         (get_mask_policy_no_pred): Ditto.
27596         (get_tail_policy_no_pred): Ditto.
27598 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
27600         * config/loongarch/loongarch.h (struct machine_function): Add
27601         reg_is_wrapped_separately array for register wrapping
27602         information.
27603         * config/loongarch/loongarch.cc
27604         (loongarch_get_separate_components): New function.
27605         (loongarch_components_for_bb): Likewise.
27606         (loongarch_disqualify_components): Likewise.
27607         (loongarch_process_components): Likewise.
27608         (loongarch_emit_prologue_components): Likewise.
27609         (loongarch_emit_epilogue_components): Likewise.
27610         (loongarch_set_handled_components): Likewise.
27611         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
27612         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
27613         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
27614         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
27615         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
27616         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
27617         (loongarch_for_each_saved_reg): Skip registers that are wrapped
27618         separately.
27620 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
27622         PR other/109522
27623         * Makefile.in (s-macro_list): Pass -nostdinc to
27624         $(GCC_FOR_TARGET).
27626 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27628         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
27629         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
27630         (preferred_simd_mode): Ditto.
27631         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
27632         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
27633         (riscv_preferred_simd_mode): New function.
27634         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
27635         * config/riscv/vector.md: Add autovec.md.
27636         * config/riscv/autovec.md: New file.
27638 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
27640         * real.h (dconst_pi): Define.
27641         (dconst_e_ptr): Formatting fix.
27642         (dconst_pi_ptr): Declare.
27643         * real.cc (dconst_pi_ptr): New function.
27644         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
27645         boundaries range with range computed from sin/cos of the particular
27646         bounds if the argument range is shorter than 2*pi.
27647         (cfn_sincos::op1_range): Take bulps into account when determining
27648         which result ranges are always invalid or behave like known NAN.
27650 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
27652         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
27653         pass type to vrange_storage::equal_p.
27654         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
27655         (irange_storage::equal_p): Same.
27656         (frange_storage::equal_p): Same.
27657         * value-range-storage.h (class frange_storage): Same.
27659 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27661         PR target/109748
27662         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
27663         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
27665 2023-05-06  liuhongt  <hongtao.liu@intel.com>
27667         * combine.cc (maybe_swap_commutative_operands): Canonicalize
27668         vec_merge when mask is constant.
27669         * doc/md.texi: Document vec_merge canonicalization.
27671 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
27673         * value-range.h (frange_arithmetic): Declare.
27674         * range-op-float.cc (frange_arithmetic): No longer static.
27675         * gimple-range-op.cc (frange_mpfr_arg1): New function.
27676         (cfn_sqrt::fold_range): Intersect the generic boundaries range
27677         with range computed from sqrt of the particular bounds.
27678         (cfn_sqrt::op1_range): Intersect the generic boundaries range
27679         with range computed from squared particular bounds.
27681 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
27683         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
27684         earlier with helper variables also renamed.
27685         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
27686         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
27687         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
27689 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
27691         * config/cris/cris.md (splitop): Add PLUS.
27692         * config/cris/cris.cc (cris_split_constant): Also handle
27693         PLUS when a split into two insns may be useful.
27695 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
27697         * config/cris/cris.md (movandsplit1): New define_peephole2.
27699 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
27701         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
27703 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
27705         * doc/md.texi (define_peephole2): Document order of scanning.
27707 2023-05-05  Pan Li  <pan2.li@intel.com>
27708             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27710         * config/riscv/vector.md: Allow const as the operand of RVV
27711         indexed load/store.
27713 2023-05-05  Pan Li  <pan2.li@intel.com>
27715         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
27716         consumed by simplify_rtx.
27718 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
27720         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
27721         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
27722         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
27723         * config/arm/arm_mve.h (vshrq): Remove.
27724         (vrshrq): Remove.
27725         (vrshrq_m): Remove.
27726         (vshrq_m): Remove.
27727         (vrshrq_x): Remove.
27728         (vshrq_x): Remove.
27729         (vshrq_n_s8): Remove.
27730         (vshrq_n_s16): Remove.
27731         (vshrq_n_s32): Remove.
27732         (vshrq_n_u8): Remove.
27733         (vshrq_n_u16): Remove.
27734         (vshrq_n_u32): Remove.
27735         (vrshrq_n_u8): Remove.
27736         (vrshrq_n_s8): Remove.
27737         (vrshrq_n_u16): Remove.
27738         (vrshrq_n_s16): Remove.
27739         (vrshrq_n_u32): Remove.
27740         (vrshrq_n_s32): Remove.
27741         (vrshrq_m_n_s8): Remove.
27742         (vrshrq_m_n_s32): Remove.
27743         (vrshrq_m_n_s16): Remove.
27744         (vrshrq_m_n_u8): Remove.
27745         (vrshrq_m_n_u32): Remove.
27746         (vrshrq_m_n_u16): Remove.
27747         (vshrq_m_n_s8): Remove.
27748         (vshrq_m_n_s32): Remove.
27749         (vshrq_m_n_s16): Remove.
27750         (vshrq_m_n_u8): Remove.
27751         (vshrq_m_n_u32): Remove.
27752         (vshrq_m_n_u16): Remove.
27753         (vrshrq_x_n_s8): Remove.
27754         (vrshrq_x_n_s16): Remove.
27755         (vrshrq_x_n_s32): Remove.
27756         (vrshrq_x_n_u8): Remove.
27757         (vrshrq_x_n_u16): Remove.
27758         (vrshrq_x_n_u32): Remove.
27759         (vshrq_x_n_s8): Remove.
27760         (vshrq_x_n_s16): Remove.
27761         (vshrq_x_n_s32): Remove.
27762         (vshrq_x_n_u8): Remove.
27763         (vshrq_x_n_u16): Remove.
27764         (vshrq_x_n_u32): Remove.
27765         (__arm_vshrq_n_s8): Remove.
27766         (__arm_vshrq_n_s16): Remove.
27767         (__arm_vshrq_n_s32): Remove.
27768         (__arm_vshrq_n_u8): Remove.
27769         (__arm_vshrq_n_u16): Remove.
27770         (__arm_vshrq_n_u32): Remove.
27771         (__arm_vrshrq_n_u8): Remove.
27772         (__arm_vrshrq_n_s8): Remove.
27773         (__arm_vrshrq_n_u16): Remove.
27774         (__arm_vrshrq_n_s16): Remove.
27775         (__arm_vrshrq_n_u32): Remove.
27776         (__arm_vrshrq_n_s32): Remove.
27777         (__arm_vrshrq_m_n_s8): Remove.
27778         (__arm_vrshrq_m_n_s32): Remove.
27779         (__arm_vrshrq_m_n_s16): Remove.
27780         (__arm_vrshrq_m_n_u8): Remove.
27781         (__arm_vrshrq_m_n_u32): Remove.
27782         (__arm_vrshrq_m_n_u16): Remove.
27783         (__arm_vshrq_m_n_s8): Remove.
27784         (__arm_vshrq_m_n_s32): Remove.
27785         (__arm_vshrq_m_n_s16): Remove.
27786         (__arm_vshrq_m_n_u8): Remove.
27787         (__arm_vshrq_m_n_u32): Remove.
27788         (__arm_vshrq_m_n_u16): Remove.
27789         (__arm_vrshrq_x_n_s8): Remove.
27790         (__arm_vrshrq_x_n_s16): Remove.
27791         (__arm_vrshrq_x_n_s32): Remove.
27792         (__arm_vrshrq_x_n_u8): Remove.
27793         (__arm_vrshrq_x_n_u16): Remove.
27794         (__arm_vrshrq_x_n_u32): Remove.
27795         (__arm_vshrq_x_n_s8): Remove.
27796         (__arm_vshrq_x_n_s16): Remove.
27797         (__arm_vshrq_x_n_s32): Remove.
27798         (__arm_vshrq_x_n_u8): Remove.
27799         (__arm_vshrq_x_n_u16): Remove.
27800         (__arm_vshrq_x_n_u32): Remove.
27801         (__arm_vshrq): Remove.
27802         (__arm_vrshrq): Remove.
27803         (__arm_vrshrq_m): Remove.
27804         (__arm_vshrq_m): Remove.
27805         (__arm_vrshrq_x): Remove.
27806         (__arm_vshrq_x): Remove.
27808 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
27810         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
27811         (mve_insn): Add vrshr, vshr.
27812         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
27813         (mve_vrshrq_n_<supf><mode>): Merge into ...
27814         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
27815         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
27816         into ...
27817         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
27819 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
27821         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
27822         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
27824 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
27826         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
27827         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
27828         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
27829         (vqrshrunbq, vqrshruntq): New.
27830         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
27831         (vqrshrunbq, vqrshruntq): New.
27832         * config/arm/arm-mve-builtins.cc
27833         (function_instance::has_inactive_argument): Handle vqshrunbq,
27834         vqshruntq, vqrshrunbq, vqrshruntq.
27835         * config/arm/arm_mve.h (vqrshrunbq): Remove.
27836         (vqrshruntq): Remove.
27837         (vqrshrunbq_m): Remove.
27838         (vqrshruntq_m): Remove.
27839         (vqrshrunbq_n_s16): Remove.
27840         (vqrshrunbq_n_s32): Remove.
27841         (vqrshruntq_n_s16): Remove.
27842         (vqrshruntq_n_s32): Remove.
27843         (vqrshrunbq_m_n_s32): Remove.
27844         (vqrshrunbq_m_n_s16): Remove.
27845         (vqrshruntq_m_n_s32): Remove.
27846         (vqrshruntq_m_n_s16): Remove.
27847         (__arm_vqrshrunbq_n_s16): Remove.
27848         (__arm_vqrshrunbq_n_s32): Remove.
27849         (__arm_vqrshruntq_n_s16): Remove.
27850         (__arm_vqrshruntq_n_s32): Remove.
27851         (__arm_vqrshrunbq_m_n_s32): Remove.
27852         (__arm_vqrshrunbq_m_n_s16): Remove.
27853         (__arm_vqrshruntq_m_n_s32): Remove.
27854         (__arm_vqrshruntq_m_n_s16): Remove.
27855         (__arm_vqrshrunbq): Remove.
27856         (__arm_vqrshruntq): Remove.
27857         (__arm_vqrshrunbq_m): Remove.
27858         (__arm_vqrshruntq_m): Remove.
27859         (vqshrunbq): Remove.
27860         (vqshruntq): Remove.
27861         (vqshrunbq_m): Remove.
27862         (vqshruntq_m): Remove.
27863         (vqshrunbq_n_s16): Remove.
27864         (vqshruntq_n_s16): Remove.
27865         (vqshrunbq_n_s32): Remove.
27866         (vqshruntq_n_s32): Remove.
27867         (vqshrunbq_m_n_s32): Remove.
27868         (vqshrunbq_m_n_s16): Remove.
27869         (vqshruntq_m_n_s32): Remove.
27870         (vqshruntq_m_n_s16): Remove.
27871         (__arm_vqshrunbq_n_s16): Remove.
27872         (__arm_vqshruntq_n_s16): Remove.
27873         (__arm_vqshrunbq_n_s32): Remove.
27874         (__arm_vqshruntq_n_s32): Remove.
27875         (__arm_vqshrunbq_m_n_s32): Remove.
27876         (__arm_vqshrunbq_m_n_s16): Remove.
27877         (__arm_vqshruntq_m_n_s32): Remove.
27878         (__arm_vqshruntq_m_n_s16): Remove.
27879         (__arm_vqshrunbq): Remove.
27880         (__arm_vqshruntq): Remove.
27881         (__arm_vqshrunbq_m): Remove.
27882         (__arm_vqshruntq_m): Remove.
27884 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
27886         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
27887         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
27888         (MVE_SHRN_M_N): Likewise.
27889         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
27890         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
27891         (supf): Likewise.
27892         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
27893         (mve_vqrshruntq_n_s<mode>): Remove.
27894         (mve_vqshrunbq_n_s<mode>): Remove.
27895         (mve_vqshruntq_n_s<mode>): Remove.
27896         (mve_vqrshrunbq_m_n_s<mode>): Remove.
27897         (mve_vqrshruntq_m_n_s<mode>): Remove.
27898         (mve_vqshrunbq_m_n_s<mode>): Remove.
27899         (mve_vqshruntq_m_n_s<mode>): Remove.
27901 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
27903         * config/arm/arm-mve-builtins-shapes.cc
27904         (binary_rshift_narrow_unsigned): New.
27905         * config/arm/arm-mve-builtins-shapes.h
27906         (binary_rshift_narrow_unsigned): New.
27908 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
27910         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
27911         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
27912         (vqrshrnbq, vqrshrntq): New.
27913         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
27914         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
27915         New.
27916         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
27917         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
27918         * config/arm/arm-mve-builtins.cc
27919         (function_instance::has_inactive_argument): Handle vshrnbq,
27920         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
27921         vqrshrntq.
27922         * config/arm/arm_mve.h (vshrnbq): Remove.
27923         (vshrntq): Remove.
27924         (vshrnbq_m): Remove.
27925         (vshrntq_m): Remove.
27926         (vshrnbq_n_s16): Remove.
27927         (vshrntq_n_s16): Remove.
27928         (vshrnbq_n_u16): Remove.
27929         (vshrntq_n_u16): Remove.
27930         (vshrnbq_n_s32): Remove.
27931         (vshrntq_n_s32): Remove.
27932         (vshrnbq_n_u32): Remove.
27933         (vshrntq_n_u32): Remove.
27934         (vshrnbq_m_n_s32): Remove.
27935         (vshrnbq_m_n_s16): Remove.
27936         (vshrnbq_m_n_u32): Remove.
27937         (vshrnbq_m_n_u16): Remove.
27938         (vshrntq_m_n_s32): Remove.
27939         (vshrntq_m_n_s16): Remove.
27940         (vshrntq_m_n_u32): Remove.
27941         (vshrntq_m_n_u16): Remove.
27942         (__arm_vshrnbq_n_s16): Remove.
27943         (__arm_vshrntq_n_s16): Remove.
27944         (__arm_vshrnbq_n_u16): Remove.
27945         (__arm_vshrntq_n_u16): Remove.
27946         (__arm_vshrnbq_n_s32): Remove.
27947         (__arm_vshrntq_n_s32): Remove.
27948         (__arm_vshrnbq_n_u32): Remove.
27949         (__arm_vshrntq_n_u32): Remove.
27950         (__arm_vshrnbq_m_n_s32): Remove.
27951         (__arm_vshrnbq_m_n_s16): Remove.
27952         (__arm_vshrnbq_m_n_u32): Remove.
27953         (__arm_vshrnbq_m_n_u16): Remove.
27954         (__arm_vshrntq_m_n_s32): Remove.
27955         (__arm_vshrntq_m_n_s16): Remove.
27956         (__arm_vshrntq_m_n_u32): Remove.
27957         (__arm_vshrntq_m_n_u16): Remove.
27958         (__arm_vshrnbq): Remove.
27959         (__arm_vshrntq): Remove.
27960         (__arm_vshrnbq_m): Remove.
27961         (__arm_vshrntq_m): Remove.
27962         (vrshrnbq): Remove.
27963         (vrshrntq): Remove.
27964         (vrshrnbq_m): Remove.
27965         (vrshrntq_m): Remove.
27966         (vrshrnbq_n_s16): Remove.
27967         (vrshrntq_n_s16): Remove.
27968         (vrshrnbq_n_u16): Remove.
27969         (vrshrntq_n_u16): Remove.
27970         (vrshrnbq_n_s32): Remove.
27971         (vrshrntq_n_s32): Remove.
27972         (vrshrnbq_n_u32): Remove.
27973         (vrshrntq_n_u32): Remove.
27974         (vrshrnbq_m_n_s32): Remove.
27975         (vrshrnbq_m_n_s16): Remove.
27976         (vrshrnbq_m_n_u32): Remove.
27977         (vrshrnbq_m_n_u16): Remove.
27978         (vrshrntq_m_n_s32): Remove.
27979         (vrshrntq_m_n_s16): Remove.
27980         (vrshrntq_m_n_u32): Remove.
27981         (vrshrntq_m_n_u16): Remove.
27982         (__arm_vrshrnbq_n_s16): Remove.
27983         (__arm_vrshrntq_n_s16): Remove.
27984         (__arm_vrshrnbq_n_u16): Remove.
27985         (__arm_vrshrntq_n_u16): Remove.
27986         (__arm_vrshrnbq_n_s32): Remove.
27987         (__arm_vrshrntq_n_s32): Remove.
27988         (__arm_vrshrnbq_n_u32): Remove.
27989         (__arm_vrshrntq_n_u32): Remove.
27990         (__arm_vrshrnbq_m_n_s32): Remove.
27991         (__arm_vrshrnbq_m_n_s16): Remove.
27992         (__arm_vrshrnbq_m_n_u32): Remove.
27993         (__arm_vrshrnbq_m_n_u16): Remove.
27994         (__arm_vrshrntq_m_n_s32): Remove.
27995         (__arm_vrshrntq_m_n_s16): Remove.
27996         (__arm_vrshrntq_m_n_u32): Remove.
27997         (__arm_vrshrntq_m_n_u16): Remove.
27998         (__arm_vrshrnbq): Remove.
27999         (__arm_vrshrntq): Remove.
28000         (__arm_vrshrnbq_m): Remove.
28001         (__arm_vrshrntq_m): Remove.
28002         (vqshrnbq): Remove.
28003         (vqshrntq): Remove.
28004         (vqshrnbq_m): Remove.
28005         (vqshrntq_m): Remove.
28006         (vqshrnbq_n_s16): Remove.
28007         (vqshrntq_n_s16): Remove.
28008         (vqshrnbq_n_u16): Remove.
28009         (vqshrntq_n_u16): Remove.
28010         (vqshrnbq_n_s32): Remove.
28011         (vqshrntq_n_s32): Remove.
28012         (vqshrnbq_n_u32): Remove.
28013         (vqshrntq_n_u32): Remove.
28014         (vqshrnbq_m_n_s32): Remove.
28015         (vqshrnbq_m_n_s16): Remove.
28016         (vqshrnbq_m_n_u32): Remove.
28017         (vqshrnbq_m_n_u16): Remove.
28018         (vqshrntq_m_n_s32): Remove.
28019         (vqshrntq_m_n_s16): Remove.
28020         (vqshrntq_m_n_u32): Remove.
28021         (vqshrntq_m_n_u16): Remove.
28022         (__arm_vqshrnbq_n_s16): Remove.
28023         (__arm_vqshrntq_n_s16): Remove.
28024         (__arm_vqshrnbq_n_u16): Remove.
28025         (__arm_vqshrntq_n_u16): Remove.
28026         (__arm_vqshrnbq_n_s32): Remove.
28027         (__arm_vqshrntq_n_s32): Remove.
28028         (__arm_vqshrnbq_n_u32): Remove.
28029         (__arm_vqshrntq_n_u32): Remove.
28030         (__arm_vqshrnbq_m_n_s32): Remove.
28031         (__arm_vqshrnbq_m_n_s16): Remove.
28032         (__arm_vqshrnbq_m_n_u32): Remove.
28033         (__arm_vqshrnbq_m_n_u16): Remove.
28034         (__arm_vqshrntq_m_n_s32): Remove.
28035         (__arm_vqshrntq_m_n_s16): Remove.
28036         (__arm_vqshrntq_m_n_u32): Remove.
28037         (__arm_vqshrntq_m_n_u16): Remove.
28038         (__arm_vqshrnbq): Remove.
28039         (__arm_vqshrntq): Remove.
28040         (__arm_vqshrnbq_m): Remove.
28041         (__arm_vqshrntq_m): Remove.
28042         (vqrshrnbq): Remove.
28043         (vqrshrntq): Remove.
28044         (vqrshrnbq_m): Remove.
28045         (vqrshrntq_m): Remove.
28046         (vqrshrnbq_n_s16): Remove.
28047         (vqrshrnbq_n_u16): Remove.
28048         (vqrshrnbq_n_s32): Remove.
28049         (vqrshrnbq_n_u32): Remove.
28050         (vqrshrntq_n_s16): Remove.
28051         (vqrshrntq_n_u16): Remove.
28052         (vqrshrntq_n_s32): Remove.
28053         (vqrshrntq_n_u32): Remove.
28054         (vqrshrnbq_m_n_s32): Remove.
28055         (vqrshrnbq_m_n_s16): Remove.
28056         (vqrshrnbq_m_n_u32): Remove.
28057         (vqrshrnbq_m_n_u16): Remove.
28058         (vqrshrntq_m_n_s32): Remove.
28059         (vqrshrntq_m_n_s16): Remove.
28060         (vqrshrntq_m_n_u32): Remove.
28061         (vqrshrntq_m_n_u16): Remove.
28062         (__arm_vqrshrnbq_n_s16): Remove.
28063         (__arm_vqrshrnbq_n_u16): Remove.
28064         (__arm_vqrshrnbq_n_s32): Remove.
28065         (__arm_vqrshrnbq_n_u32): Remove.
28066         (__arm_vqrshrntq_n_s16): Remove.
28067         (__arm_vqrshrntq_n_u16): Remove.
28068         (__arm_vqrshrntq_n_s32): Remove.
28069         (__arm_vqrshrntq_n_u32): Remove.
28070         (__arm_vqrshrnbq_m_n_s32): Remove.
28071         (__arm_vqrshrnbq_m_n_s16): Remove.
28072         (__arm_vqrshrnbq_m_n_u32): Remove.
28073         (__arm_vqrshrnbq_m_n_u16): Remove.
28074         (__arm_vqrshrntq_m_n_s32): Remove.
28075         (__arm_vqrshrntq_m_n_s16): Remove.
28076         (__arm_vqrshrntq_m_n_u32): Remove.
28077         (__arm_vqrshrntq_m_n_u16): Remove.
28078         (__arm_vqrshrnbq): Remove.
28079         (__arm_vqrshrntq): Remove.
28080         (__arm_vqrshrnbq_m): Remove.
28081         (__arm_vqrshrntq_m): Remove.
28083 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28085         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
28086         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
28087         vrshrnt, vshrnb, vshrnt.
28088         (isu): New.
28089         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
28090         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
28091         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
28092         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
28093         (mve_vshrntq_n_<supf><mode>): Merge into ...
28094         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
28095         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
28096         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
28097         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
28098         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
28099         Merge into ...
28100         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
28102 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28104         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
28105         New.
28106         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
28108 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28110         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
28111         (vmaxq, vminq): New.
28112         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
28113         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
28114         * config/arm/arm_mve.h (vminq): Remove.
28115         (vmaxq): Remove.
28116         (vmaxq_m): Remove.
28117         (vminq_m): Remove.
28118         (vminq_x): Remove.
28119         (vmaxq_x): Remove.
28120         (vminq_u8): Remove.
28121         (vmaxq_u8): Remove.
28122         (vminq_s8): Remove.
28123         (vmaxq_s8): Remove.
28124         (vminq_u16): Remove.
28125         (vmaxq_u16): Remove.
28126         (vminq_s16): Remove.
28127         (vmaxq_s16): Remove.
28128         (vminq_u32): Remove.
28129         (vmaxq_u32): Remove.
28130         (vminq_s32): Remove.
28131         (vmaxq_s32): Remove.
28132         (vmaxq_m_s8): Remove.
28133         (vmaxq_m_s32): Remove.
28134         (vmaxq_m_s16): Remove.
28135         (vmaxq_m_u8): Remove.
28136         (vmaxq_m_u32): Remove.
28137         (vmaxq_m_u16): Remove.
28138         (vminq_m_s8): Remove.
28139         (vminq_m_s32): Remove.
28140         (vminq_m_s16): Remove.
28141         (vminq_m_u8): Remove.
28142         (vminq_m_u32): Remove.
28143         (vminq_m_u16): Remove.
28144         (vminq_x_s8): Remove.
28145         (vminq_x_s16): Remove.
28146         (vminq_x_s32): Remove.
28147         (vminq_x_u8): Remove.
28148         (vminq_x_u16): Remove.
28149         (vminq_x_u32): Remove.
28150         (vmaxq_x_s8): Remove.
28151         (vmaxq_x_s16): Remove.
28152         (vmaxq_x_s32): Remove.
28153         (vmaxq_x_u8): Remove.
28154         (vmaxq_x_u16): Remove.
28155         (vmaxq_x_u32): Remove.
28156         (__arm_vminq_u8): Remove.
28157         (__arm_vmaxq_u8): Remove.
28158         (__arm_vminq_s8): Remove.
28159         (__arm_vmaxq_s8): Remove.
28160         (__arm_vminq_u16): Remove.
28161         (__arm_vmaxq_u16): Remove.
28162         (__arm_vminq_s16): Remove.
28163         (__arm_vmaxq_s16): Remove.
28164         (__arm_vminq_u32): Remove.
28165         (__arm_vmaxq_u32): Remove.
28166         (__arm_vminq_s32): Remove.
28167         (__arm_vmaxq_s32): Remove.
28168         (__arm_vmaxq_m_s8): Remove.
28169         (__arm_vmaxq_m_s32): Remove.
28170         (__arm_vmaxq_m_s16): Remove.
28171         (__arm_vmaxq_m_u8): Remove.
28172         (__arm_vmaxq_m_u32): Remove.
28173         (__arm_vmaxq_m_u16): Remove.
28174         (__arm_vminq_m_s8): Remove.
28175         (__arm_vminq_m_s32): Remove.
28176         (__arm_vminq_m_s16): Remove.
28177         (__arm_vminq_m_u8): Remove.
28178         (__arm_vminq_m_u32): Remove.
28179         (__arm_vminq_m_u16): Remove.
28180         (__arm_vminq_x_s8): Remove.
28181         (__arm_vminq_x_s16): Remove.
28182         (__arm_vminq_x_s32): Remove.
28183         (__arm_vminq_x_u8): Remove.
28184         (__arm_vminq_x_u16): Remove.
28185         (__arm_vminq_x_u32): Remove.
28186         (__arm_vmaxq_x_s8): Remove.
28187         (__arm_vmaxq_x_s16): Remove.
28188         (__arm_vmaxq_x_s32): Remove.
28189         (__arm_vmaxq_x_u8): Remove.
28190         (__arm_vmaxq_x_u16): Remove.
28191         (__arm_vmaxq_x_u32): Remove.
28192         (__arm_vminq): Remove.
28193         (__arm_vmaxq): Remove.
28194         (__arm_vmaxq_m): Remove.
28195         (__arm_vminq_m): Remove.
28196         (__arm_vminq_x): Remove.
28197         (__arm_vmaxq_x): Remove.
28199 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28201         * config/arm/iterators.md (MAX_MIN_SU): New.
28202         (max_min_su_str): New.
28203         (max_min_supf): New.
28204         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
28205         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
28206         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
28208 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28210         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
28211         (vqshlq, vshlq): New.
28212         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
28213         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
28214         * config/arm/arm_mve.h (vshlq): Remove.
28215         (vshlq_r): Remove.
28216         (vshlq_n): Remove.
28217         (vshlq_m_r): Remove.
28218         (vshlq_m): Remove.
28219         (vshlq_m_n): Remove.
28220         (vshlq_x): Remove.
28221         (vshlq_x_n): Remove.
28222         (vshlq_s8): Remove.
28223         (vshlq_s16): Remove.
28224         (vshlq_s32): Remove.
28225         (vshlq_u8): Remove.
28226         (vshlq_u16): Remove.
28227         (vshlq_u32): Remove.
28228         (vshlq_r_u8): Remove.
28229         (vshlq_n_u8): Remove.
28230         (vshlq_r_s8): Remove.
28231         (vshlq_n_s8): Remove.
28232         (vshlq_r_u16): Remove.
28233         (vshlq_n_u16): Remove.
28234         (vshlq_r_s16): Remove.
28235         (vshlq_n_s16): Remove.
28236         (vshlq_r_u32): Remove.
28237         (vshlq_n_u32): Remove.
28238         (vshlq_r_s32): Remove.
28239         (vshlq_n_s32): Remove.
28240         (vshlq_m_r_u8): Remove.
28241         (vshlq_m_r_s8): Remove.
28242         (vshlq_m_r_u16): Remove.
28243         (vshlq_m_r_s16): Remove.
28244         (vshlq_m_r_u32): Remove.
28245         (vshlq_m_r_s32): Remove.
28246         (vshlq_m_u8): Remove.
28247         (vshlq_m_s8): Remove.
28248         (vshlq_m_u16): Remove.
28249         (vshlq_m_s16): Remove.
28250         (vshlq_m_u32): Remove.
28251         (vshlq_m_s32): Remove.
28252         (vshlq_m_n_s8): Remove.
28253         (vshlq_m_n_s32): Remove.
28254         (vshlq_m_n_s16): Remove.
28255         (vshlq_m_n_u8): Remove.
28256         (vshlq_m_n_u32): Remove.
28257         (vshlq_m_n_u16): Remove.
28258         (vshlq_x_s8): Remove.
28259         (vshlq_x_s16): Remove.
28260         (vshlq_x_s32): Remove.
28261         (vshlq_x_u8): Remove.
28262         (vshlq_x_u16): Remove.
28263         (vshlq_x_u32): Remove.
28264         (vshlq_x_n_s8): Remove.
28265         (vshlq_x_n_s16): Remove.
28266         (vshlq_x_n_s32): Remove.
28267         (vshlq_x_n_u8): Remove.
28268         (vshlq_x_n_u16): Remove.
28269         (vshlq_x_n_u32): Remove.
28270         (__arm_vshlq_s8): Remove.
28271         (__arm_vshlq_s16): Remove.
28272         (__arm_vshlq_s32): Remove.
28273         (__arm_vshlq_u8): Remove.
28274         (__arm_vshlq_u16): Remove.
28275         (__arm_vshlq_u32): Remove.
28276         (__arm_vshlq_r_u8): Remove.
28277         (__arm_vshlq_n_u8): Remove.
28278         (__arm_vshlq_r_s8): Remove.
28279         (__arm_vshlq_n_s8): Remove.
28280         (__arm_vshlq_r_u16): Remove.
28281         (__arm_vshlq_n_u16): Remove.
28282         (__arm_vshlq_r_s16): Remove.
28283         (__arm_vshlq_n_s16): Remove.
28284         (__arm_vshlq_r_u32): Remove.
28285         (__arm_vshlq_n_u32): Remove.
28286         (__arm_vshlq_r_s32): Remove.
28287         (__arm_vshlq_n_s32): Remove.
28288         (__arm_vshlq_m_r_u8): Remove.
28289         (__arm_vshlq_m_r_s8): Remove.
28290         (__arm_vshlq_m_r_u16): Remove.
28291         (__arm_vshlq_m_r_s16): Remove.
28292         (__arm_vshlq_m_r_u32): Remove.
28293         (__arm_vshlq_m_r_s32): Remove.
28294         (__arm_vshlq_m_u8): Remove.
28295         (__arm_vshlq_m_s8): Remove.
28296         (__arm_vshlq_m_u16): Remove.
28297         (__arm_vshlq_m_s16): Remove.
28298         (__arm_vshlq_m_u32): Remove.
28299         (__arm_vshlq_m_s32): Remove.
28300         (__arm_vshlq_m_n_s8): Remove.
28301         (__arm_vshlq_m_n_s32): Remove.
28302         (__arm_vshlq_m_n_s16): Remove.
28303         (__arm_vshlq_m_n_u8): Remove.
28304         (__arm_vshlq_m_n_u32): Remove.
28305         (__arm_vshlq_m_n_u16): Remove.
28306         (__arm_vshlq_x_s8): Remove.
28307         (__arm_vshlq_x_s16): Remove.
28308         (__arm_vshlq_x_s32): Remove.
28309         (__arm_vshlq_x_u8): Remove.
28310         (__arm_vshlq_x_u16): Remove.
28311         (__arm_vshlq_x_u32): Remove.
28312         (__arm_vshlq_x_n_s8): Remove.
28313         (__arm_vshlq_x_n_s16): Remove.
28314         (__arm_vshlq_x_n_s32): Remove.
28315         (__arm_vshlq_x_n_u8): Remove.
28316         (__arm_vshlq_x_n_u16): Remove.
28317         (__arm_vshlq_x_n_u32): Remove.
28318         (__arm_vshlq): Remove.
28319         (__arm_vshlq_r): Remove.
28320         (__arm_vshlq_n): Remove.
28321         (__arm_vshlq_m_r): Remove.
28322         (__arm_vshlq_m): Remove.
28323         (__arm_vshlq_m_n): Remove.
28324         (__arm_vshlq_x): Remove.
28325         (__arm_vshlq_x_n): Remove.
28326         (vqshlq): Remove.
28327         (vqshlq_r): Remove.
28328         (vqshlq_n): Remove.
28329         (vqshlq_m_r): Remove.
28330         (vqshlq_m_n): Remove.
28331         (vqshlq_m): Remove.
28332         (vqshlq_u8): Remove.
28333         (vqshlq_r_u8): Remove.
28334         (vqshlq_n_u8): Remove.
28335         (vqshlq_s8): Remove.
28336         (vqshlq_r_s8): Remove.
28337         (vqshlq_n_s8): Remove.
28338         (vqshlq_u16): Remove.
28339         (vqshlq_r_u16): Remove.
28340         (vqshlq_n_u16): Remove.
28341         (vqshlq_s16): Remove.
28342         (vqshlq_r_s16): Remove.
28343         (vqshlq_n_s16): Remove.
28344         (vqshlq_u32): Remove.
28345         (vqshlq_r_u32): Remove.
28346         (vqshlq_n_u32): Remove.
28347         (vqshlq_s32): Remove.
28348         (vqshlq_r_s32): Remove.
28349         (vqshlq_n_s32): Remove.
28350         (vqshlq_m_r_u8): Remove.
28351         (vqshlq_m_r_s8): Remove.
28352         (vqshlq_m_r_u16): Remove.
28353         (vqshlq_m_r_s16): Remove.
28354         (vqshlq_m_r_u32): Remove.
28355         (vqshlq_m_r_s32): Remove.
28356         (vqshlq_m_n_s8): Remove.
28357         (vqshlq_m_n_s32): Remove.
28358         (vqshlq_m_n_s16): Remove.
28359         (vqshlq_m_n_u8): Remove.
28360         (vqshlq_m_n_u32): Remove.
28361         (vqshlq_m_n_u16): Remove.
28362         (vqshlq_m_s8): Remove.
28363         (vqshlq_m_s32): Remove.
28364         (vqshlq_m_s16): Remove.
28365         (vqshlq_m_u8): Remove.
28366         (vqshlq_m_u32): Remove.
28367         (vqshlq_m_u16): Remove.
28368         (__arm_vqshlq_u8): Remove.
28369         (__arm_vqshlq_r_u8): Remove.
28370         (__arm_vqshlq_n_u8): Remove.
28371         (__arm_vqshlq_s8): Remove.
28372         (__arm_vqshlq_r_s8): Remove.
28373         (__arm_vqshlq_n_s8): Remove.
28374         (__arm_vqshlq_u16): Remove.
28375         (__arm_vqshlq_r_u16): Remove.
28376         (__arm_vqshlq_n_u16): Remove.
28377         (__arm_vqshlq_s16): Remove.
28378         (__arm_vqshlq_r_s16): Remove.
28379         (__arm_vqshlq_n_s16): Remove.
28380         (__arm_vqshlq_u32): Remove.
28381         (__arm_vqshlq_r_u32): Remove.
28382         (__arm_vqshlq_n_u32): Remove.
28383         (__arm_vqshlq_s32): Remove.
28384         (__arm_vqshlq_r_s32): Remove.
28385         (__arm_vqshlq_n_s32): Remove.
28386         (__arm_vqshlq_m_r_u8): Remove.
28387         (__arm_vqshlq_m_r_s8): Remove.
28388         (__arm_vqshlq_m_r_u16): Remove.
28389         (__arm_vqshlq_m_r_s16): Remove.
28390         (__arm_vqshlq_m_r_u32): Remove.
28391         (__arm_vqshlq_m_r_s32): Remove.
28392         (__arm_vqshlq_m_n_s8): Remove.
28393         (__arm_vqshlq_m_n_s32): Remove.
28394         (__arm_vqshlq_m_n_s16): Remove.
28395         (__arm_vqshlq_m_n_u8): Remove.
28396         (__arm_vqshlq_m_n_u32): Remove.
28397         (__arm_vqshlq_m_n_u16): Remove.
28398         (__arm_vqshlq_m_s8): Remove.
28399         (__arm_vqshlq_m_s32): Remove.
28400         (__arm_vqshlq_m_s16): Remove.
28401         (__arm_vqshlq_m_u8): Remove.
28402         (__arm_vqshlq_m_u32): Remove.
28403         (__arm_vqshlq_m_u16): Remove.
28404         (__arm_vqshlq): Remove.
28405         (__arm_vqshlq_r): Remove.
28406         (__arm_vqshlq_n): Remove.
28407         (__arm_vqshlq_m_r): Remove.
28408         (__arm_vqshlq_m_n): Remove.
28409         (__arm_vqshlq_m): Remove.
28411 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28413         * config/arm/arm-mve-builtins-functions.h (class
28414         unspec_mve_function_exact_insn_vshl): New.
28416 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28418         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
28419         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
28421 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28423         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
28424         (finish_opt_n_resolution): Handle MODE_r.
28425         * config/arm/arm-mve-builtins.def (r): New mode.
28427 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28429         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
28430         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
28432 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28434         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
28435         (vabdq): New.
28436         * config/arm/arm-mve-builtins-base.def (vabdq): New.
28437         * config/arm/arm-mve-builtins-base.h (vabdq): New.
28438         * config/arm/arm_mve.h (vabdq): Remove.
28439         (vabdq_m): Remove.
28440         (vabdq_x): Remove.
28441         (vabdq_u8): Remove.
28442         (vabdq_s8): Remove.
28443         (vabdq_u16): Remove.
28444         (vabdq_s16): Remove.
28445         (vabdq_u32): Remove.
28446         (vabdq_s32): Remove.
28447         (vabdq_f16): Remove.
28448         (vabdq_f32): Remove.
28449         (vabdq_m_s8): Remove.
28450         (vabdq_m_s32): Remove.
28451         (vabdq_m_s16): Remove.
28452         (vabdq_m_u8): Remove.
28453         (vabdq_m_u32): Remove.
28454         (vabdq_m_u16): Remove.
28455         (vabdq_m_f32): Remove.
28456         (vabdq_m_f16): Remove.
28457         (vabdq_x_s8): Remove.
28458         (vabdq_x_s16): Remove.
28459         (vabdq_x_s32): Remove.
28460         (vabdq_x_u8): Remove.
28461         (vabdq_x_u16): Remove.
28462         (vabdq_x_u32): Remove.
28463         (vabdq_x_f16): Remove.
28464         (vabdq_x_f32): Remove.
28465         (__arm_vabdq_u8): Remove.
28466         (__arm_vabdq_s8): Remove.
28467         (__arm_vabdq_u16): Remove.
28468         (__arm_vabdq_s16): Remove.
28469         (__arm_vabdq_u32): Remove.
28470         (__arm_vabdq_s32): Remove.
28471         (__arm_vabdq_m_s8): Remove.
28472         (__arm_vabdq_m_s32): Remove.
28473         (__arm_vabdq_m_s16): Remove.
28474         (__arm_vabdq_m_u8): Remove.
28475         (__arm_vabdq_m_u32): Remove.
28476         (__arm_vabdq_m_u16): Remove.
28477         (__arm_vabdq_x_s8): Remove.
28478         (__arm_vabdq_x_s16): Remove.
28479         (__arm_vabdq_x_s32): Remove.
28480         (__arm_vabdq_x_u8): Remove.
28481         (__arm_vabdq_x_u16): Remove.
28482         (__arm_vabdq_x_u32): Remove.
28483         (__arm_vabdq_f16): Remove.
28484         (__arm_vabdq_f32): Remove.
28485         (__arm_vabdq_m_f32): Remove.
28486         (__arm_vabdq_m_f16): Remove.
28487         (__arm_vabdq_x_f16): Remove.
28488         (__arm_vabdq_x_f32): Remove.
28489         (__arm_vabdq): Remove.
28490         (__arm_vabdq_m): Remove.
28491         (__arm_vabdq_x): Remove.
28493 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28495         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
28496         (MVE_FP_VABDQ_ONLY): New.
28497         (mve_insn): Add vabd.
28498         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
28499         (@mve_<mve_insn>q_f<mode>): ... this.
28500         (mve_vabdq_m_f<mode>): Remove.
28502 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28504         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
28505         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
28506         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
28507         * config/arm/arm_mve.h (vqrdmulhq): Remove.
28508         (vqrdmulhq_m): Remove.
28509         (vqrdmulhq_s8): Remove.
28510         (vqrdmulhq_n_s8): Remove.
28511         (vqrdmulhq_s16): Remove.
28512         (vqrdmulhq_n_s16): Remove.
28513         (vqrdmulhq_s32): Remove.
28514         (vqrdmulhq_n_s32): Remove.
28515         (vqrdmulhq_m_n_s8): Remove.
28516         (vqrdmulhq_m_n_s32): Remove.
28517         (vqrdmulhq_m_n_s16): Remove.
28518         (vqrdmulhq_m_s8): Remove.
28519         (vqrdmulhq_m_s32): Remove.
28520         (vqrdmulhq_m_s16): Remove.
28521         (__arm_vqrdmulhq_s8): Remove.
28522         (__arm_vqrdmulhq_n_s8): Remove.
28523         (__arm_vqrdmulhq_s16): Remove.
28524         (__arm_vqrdmulhq_n_s16): Remove.
28525         (__arm_vqrdmulhq_s32): Remove.
28526         (__arm_vqrdmulhq_n_s32): Remove.
28527         (__arm_vqrdmulhq_m_n_s8): Remove.
28528         (__arm_vqrdmulhq_m_n_s32): Remove.
28529         (__arm_vqrdmulhq_m_n_s16): Remove.
28530         (__arm_vqrdmulhq_m_s8): Remove.
28531         (__arm_vqrdmulhq_m_s32): Remove.
28532         (__arm_vqrdmulhq_m_s16): Remove.
28533         (__arm_vqrdmulhq): Remove.
28534         (__arm_vqrdmulhq_m): Remove.
28536 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28538         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
28539         (MVE_SHIFT_N, MVE_SHIFT_R): New.
28540         (mve_insn): Add vqshl, vshl.
28541         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
28542         (mve_vshlq_n_<supf><mode>): Merge into ...
28543         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
28544         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
28545         ...
28546         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
28547         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
28548         into ...
28549         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
28550         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
28551         into ...
28552         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
28553         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
28554         into ...
28555         (@mve_<mve_insn>q_<supf><mode>): ... this.
28557 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28559         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
28560         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
28561         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
28562         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
28563         vqrshlq, vrshlq.
28564         * config/arm/arm_mve.h (vrshlq): Remove.
28565         (vrshlq_m_n): Remove.
28566         (vrshlq_m): Remove.
28567         (vrshlq_x): Remove.
28568         (vrshlq_u8): Remove.
28569         (vrshlq_n_u8): Remove.
28570         (vrshlq_s8): Remove.
28571         (vrshlq_n_s8): Remove.
28572         (vrshlq_u16): Remove.
28573         (vrshlq_n_u16): Remove.
28574         (vrshlq_s16): Remove.
28575         (vrshlq_n_s16): Remove.
28576         (vrshlq_u32): Remove.
28577         (vrshlq_n_u32): Remove.
28578         (vrshlq_s32): Remove.
28579         (vrshlq_n_s32): Remove.
28580         (vrshlq_m_n_u8): Remove.
28581         (vrshlq_m_n_s8): Remove.
28582         (vrshlq_m_n_u16): Remove.
28583         (vrshlq_m_n_s16): Remove.
28584         (vrshlq_m_n_u32): Remove.
28585         (vrshlq_m_n_s32): Remove.
28586         (vrshlq_m_s8): Remove.
28587         (vrshlq_m_s32): Remove.
28588         (vrshlq_m_s16): Remove.
28589         (vrshlq_m_u8): Remove.
28590         (vrshlq_m_u32): Remove.
28591         (vrshlq_m_u16): Remove.
28592         (vrshlq_x_s8): Remove.
28593         (vrshlq_x_s16): Remove.
28594         (vrshlq_x_s32): Remove.
28595         (vrshlq_x_u8): Remove.
28596         (vrshlq_x_u16): Remove.
28597         (vrshlq_x_u32): Remove.
28598         (__arm_vrshlq_u8): Remove.
28599         (__arm_vrshlq_n_u8): Remove.
28600         (__arm_vrshlq_s8): Remove.
28601         (__arm_vrshlq_n_s8): Remove.
28602         (__arm_vrshlq_u16): Remove.
28603         (__arm_vrshlq_n_u16): Remove.
28604         (__arm_vrshlq_s16): Remove.
28605         (__arm_vrshlq_n_s16): Remove.
28606         (__arm_vrshlq_u32): Remove.
28607         (__arm_vrshlq_n_u32): Remove.
28608         (__arm_vrshlq_s32): Remove.
28609         (__arm_vrshlq_n_s32): Remove.
28610         (__arm_vrshlq_m_n_u8): Remove.
28611         (__arm_vrshlq_m_n_s8): Remove.
28612         (__arm_vrshlq_m_n_u16): Remove.
28613         (__arm_vrshlq_m_n_s16): Remove.
28614         (__arm_vrshlq_m_n_u32): Remove.
28615         (__arm_vrshlq_m_n_s32): Remove.
28616         (__arm_vrshlq_m_s8): Remove.
28617         (__arm_vrshlq_m_s32): Remove.
28618         (__arm_vrshlq_m_s16): Remove.
28619         (__arm_vrshlq_m_u8): Remove.
28620         (__arm_vrshlq_m_u32): Remove.
28621         (__arm_vrshlq_m_u16): Remove.
28622         (__arm_vrshlq_x_s8): Remove.
28623         (__arm_vrshlq_x_s16): Remove.
28624         (__arm_vrshlq_x_s32): Remove.
28625         (__arm_vrshlq_x_u8): Remove.
28626         (__arm_vrshlq_x_u16): Remove.
28627         (__arm_vrshlq_x_u32): Remove.
28628         (__arm_vrshlq): Remove.
28629         (__arm_vrshlq_m_n): Remove.
28630         (__arm_vrshlq_m): Remove.
28631         (__arm_vrshlq_x): Remove.
28632         (vqrshlq): Remove.
28633         (vqrshlq_m_n): Remove.
28634         (vqrshlq_m): Remove.
28635         (vqrshlq_u8): Remove.
28636         (vqrshlq_n_u8): Remove.
28637         (vqrshlq_s8): Remove.
28638         (vqrshlq_n_s8): Remove.
28639         (vqrshlq_u16): Remove.
28640         (vqrshlq_n_u16): Remove.
28641         (vqrshlq_s16): Remove.
28642         (vqrshlq_n_s16): Remove.
28643         (vqrshlq_u32): Remove.
28644         (vqrshlq_n_u32): Remove.
28645         (vqrshlq_s32): Remove.
28646         (vqrshlq_n_s32): Remove.
28647         (vqrshlq_m_n_u8): Remove.
28648         (vqrshlq_m_n_s8): Remove.
28649         (vqrshlq_m_n_u16): Remove.
28650         (vqrshlq_m_n_s16): Remove.
28651         (vqrshlq_m_n_u32): Remove.
28652         (vqrshlq_m_n_s32): Remove.
28653         (vqrshlq_m_s8): Remove.
28654         (vqrshlq_m_s32): Remove.
28655         (vqrshlq_m_s16): Remove.
28656         (vqrshlq_m_u8): Remove.
28657         (vqrshlq_m_u32): Remove.
28658         (vqrshlq_m_u16): Remove.
28659         (__arm_vqrshlq_u8): Remove.
28660         (__arm_vqrshlq_n_u8): Remove.
28661         (__arm_vqrshlq_s8): Remove.
28662         (__arm_vqrshlq_n_s8): Remove.
28663         (__arm_vqrshlq_u16): Remove.
28664         (__arm_vqrshlq_n_u16): Remove.
28665         (__arm_vqrshlq_s16): Remove.
28666         (__arm_vqrshlq_n_s16): Remove.
28667         (__arm_vqrshlq_u32): Remove.
28668         (__arm_vqrshlq_n_u32): Remove.
28669         (__arm_vqrshlq_s32): Remove.
28670         (__arm_vqrshlq_n_s32): Remove.
28671         (__arm_vqrshlq_m_n_u8): Remove.
28672         (__arm_vqrshlq_m_n_s8): Remove.
28673         (__arm_vqrshlq_m_n_u16): Remove.
28674         (__arm_vqrshlq_m_n_s16): Remove.
28675         (__arm_vqrshlq_m_n_u32): Remove.
28676         (__arm_vqrshlq_m_n_s32): Remove.
28677         (__arm_vqrshlq_m_s8): Remove.
28678         (__arm_vqrshlq_m_s32): Remove.
28679         (__arm_vqrshlq_m_s16): Remove.
28680         (__arm_vqrshlq_m_u8): Remove.
28681         (__arm_vqrshlq_m_u32): Remove.
28682         (__arm_vqrshlq_m_u16): Remove.
28683         (__arm_vqrshlq): Remove.
28684         (__arm_vqrshlq_m_n): Remove.
28685         (__arm_vqrshlq_m): Remove.
28687 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28689         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
28690         (mve_insn): Add vqrshl, vrshl.
28691         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
28692         (mve_vrshlq_n_<supf><mode>): Merge into ...
28693         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
28694         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
28695         into ...
28696         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
28698 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
28700         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
28701         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
28703 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
28705         PR target/109615
28706         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
28707         denegrate PHI optmization.
28709 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
28711         * config/i386/predicates.md (register_no_SP_operand):
28712         Rename from index_register_operand.
28713         (call_register_operand): Update for rename.
28714         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
28716 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
28718         PR bootstrap/84402
28719         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
28720         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
28721         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
28722         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
28723         (s-match): Split into s-generic-match and s-gimple-match.
28724         * configure.ac (with-matchpd-partitions,
28725         DEFAULT_MATCHPD_PARTITIONS): New.
28726         * configure: Regenerate.
28728 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
28730         PR bootstrap/84402
28731         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
28732         (decision_tree::gen): Accept list of files instead of single and update
28733         to write function definition to header and main file.
28734         (write_predicate): Likewise.
28735         (write_header): Emit pragmas and new includes.
28736         (main): Create file buffers and cleanup.
28737         (showUsage, write_header_includes): New.
28739 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
28741         PR bootstrap/84402
28742         * Makefile.in (OBJS): Add gimple-match-exports.o.
28743         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
28744         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
28745         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
28746         gimple_resimplify5, constant_for_folding, convert_conditional_op,
28747         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
28748         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
28749         do_valueize, try_conditional_simplification, gimple_extract,
28750         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
28751         commutative_ternary_op_p, first_commutative_argument,
28752         associative_binary_op_p, directly_supported_p,
28753         get_conditional_internal_fn): Moved to gimple-match-exports.cc
28754         * gimple-match-exports.cc: New file.
28756 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
28758         PR bootstrap/84402
28759         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
28760         debug_dump var.
28761         (dt_simplify::gen_1): Use it.
28763 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
28765         PR bootstrap/84402
28766         * genmatch.cc (output_line_directive): Only emit commented directive
28767         when -vv.
28769 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
28771         PR bootstrap/84402
28772         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
28774 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
28776         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
28777         unused in_mode/in_n variables.
28779 2023-05-05  Richard Biener  <rguenther@suse.de>
28781         PR tree-optimization/109735
28782         * tree-vect-stmts.cc (vectorizable_operation): Perform
28783         conversion for POINTER_DIFF_EXPR unconditionally.
28785 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
28787         * config/i386/mmx.md (mulv2si3): New expander.
28788         (*mulv2si3): New insn pattern.
28790 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
28791             Thomas Schwinge  <thomas@codesourcery.com>
28793         PR libgomp/108098
28794         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
28795         alongside reverse-offload function table to prevent NULL values
28796         of the function addresses.
28798 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
28800         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
28801         mpft_t -> mpfr_t.
28802         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
28804 2023-05-05  Andrew Pinski  <apinski@marvell.com>
28806         PR tree-optimization/109732
28807         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
28808         of the argtrue/argfalse.
28810 2023-05-05  Andrew Pinski  <apinski@marvell.com>
28812         PR tree-optimization/109722
28813         * match.pd: Extend the `ABS<a> == 0` pattern
28814         to cover `ABSU<a> == 0` too.
28816 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
28818         PR target/109733
28819         * config/i386/predicates.md (index_reg_operand): New predicate.
28820         * config/i386/i386.md (ashift to lea spliter): Use
28821         general_reg_operand and index_reg_operand predicates.
28823 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28825         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
28826         Rename and reimplement with RTL codes to...
28827         (aarch64_<optab>hn2<mode>_insn_le): .. This.
28828         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
28829         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
28830         codes to...
28831         (aarch64_<optab>hn2<mode>_insn_be): ... This.
28832         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
28833         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
28834         (aarch64_<optab>hn2<mode>): ... This.
28835         (aarch64_r<optab>hn2<mode>): New expander.
28836         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
28837         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
28838         (ADDSUBHN): Delete.
28839         (sur): Remove handling of the above.
28840         (addsub): Likewise.
28842 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28844         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
28845         Delete.
28846         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
28847         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
28848         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
28849         (aarch64_<sur><addsub>hn<mode>): Delete.
28850         (aarch64_<optab>hn<mode>): New define_expand.
28851         (aarch64_r<optab>hn<mode>): Likewise.
28852         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
28853         New predicate.
28855 2023-05-04  Andrew Pinski  <apinski@marvell.com>
28857         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
28858         diamond form bb with forwarder only empty blocks better.
28860 2023-05-04  Andrew Pinski  <apinski@marvell.com>
28862         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
28863         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
28864         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
28865         of an inline version of it.
28866         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
28867         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
28869 2023-05-04  Andrew Pinski  <apinski@marvell.com>
28871         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
28872         the default argument value for dce_ssa_names to nullptr.
28873         Check to make sure dce_ssa_names is a non-nullptr before
28874         calling simple_dce_from_worklist.
28876 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
28878         * config/i386/predicates.md (index_register_operand): Reject
28879         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
28880         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
28881         (call_register_no_elim_operand): Rewrite as ...
28882         (call_register_operand): ... this.
28883         (call_insn_operand): Use call_register_operand predicate.
28885 2023-05-04  Richard Biener  <rguenther@suse.de>
28887         PR tree-optimization/109721
28888         * tree-vect-stmts.cc (vectorizable_operation): Make sure
28889         to test word_mode for all !target_support_p operations.
28891 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28893         PR target/99195
28894         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
28895         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
28896         (aarch64_mla<mode>): Rename to...
28897         (aarch64_mla<mode><vczle><vczbe>): ... This.
28898         (*aarch64_mla_elt<mode>): Rename to...
28899         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
28900         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
28901         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
28902         (aarch64_mla_n<mode>): Rename to...
28903         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
28904         (aarch64_mls<mode>): Rename to...
28905         (aarch64_mls<mode><vczle><vczbe>): ... This.
28906         (*aarch64_mls_elt<mode>): Rename to...
28907         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
28908         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
28909         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
28910         (aarch64_mls_n<mode>): Rename to...
28911         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
28912         (fma<mode>4): Rename to...
28913         (fma<mode>4<vczle><vczbe>): ... This.
28914         (*aarch64_fma4_elt<mode>): Rename to...
28915         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
28916         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
28917         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
28918         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
28919         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
28920         (fnma<mode>4): Rename to...
28921         (fnma<mode>4<vczle><vczbe>): ... This.
28922         (*aarch64_fnma4_elt<mode>): Rename to...
28923         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
28924         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
28925         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
28926         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
28927         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
28928         (aarch64_simd_bsl<mode>_internal): Rename to...
28929         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
28930         (*aarch64_simd_bsl<mode>_alt): Rename to...
28931         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
28933 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28935         PR target/99195
28936         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
28937         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
28938         (fabd<mode>3): Rename to...
28939         (fabd<mode>3<vczle><vczbe>): ... This.
28940         (aarch64_<optab>p<mode>): Rename to...
28941         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
28942         (aarch64_faddp<mode>): Rename to...
28943         (aarch64_faddp<mode><vczle><vczbe>): ... This.
28945 2023-05-04  Martin Liska  <mliska@suse.cz>
28947         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
28948         (print_version): Use it.
28949         (generate_results): Likewise.
28951 2023-05-04  Richard Biener  <rguenther@suse.de>
28953         * tree-cfg.h (last_stmt): Rename to ...
28954         (last_nondebug_stmt): ... this.
28955         * tree-cfg.cc (last_stmt): Rename to ...
28956         (last_nondebug_stmt): ... this.
28957         (assign_discriminators): Adjust.
28958         (group_case_labels_stmt): Likewise.
28959         (gimple_can_duplicate_bb_p): Likewise.
28960         (execute_fixup_cfg): Likewise.
28961         * auto-profile.cc (afdo_propagate_circuit): Likewise.
28962         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
28963         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
28964         (determine_parallel_type): Likewise.
28965         (adjust_context_and_scope): Likewise.
28966         (expand_task_call): Likewise.
28967         (remove_exit_barrier): Likewise.
28968         (expand_omp_taskreg): Likewise.
28969         (expand_omp_for_init_counts): Likewise.
28970         (expand_omp_for_init_vars): Likewise.
28971         (expand_omp_for_static_chunk): Likewise.
28972         (expand_omp_simd): Likewise.
28973         (expand_oacc_for): Likewise.
28974         (expand_omp_for): Likewise.
28975         (expand_omp_sections): Likewise.
28976         (expand_omp_atomic_fetch_op): Likewise.
28977         (expand_omp_atomic_cas): Likewise.
28978         (expand_omp_atomic): Likewise.
28979         (expand_omp_target): Likewise.
28980         (expand_omp): Likewise.
28981         (omp_make_gimple_edges): Likewise.
28982         * trans-mem.cc (tm_region_init): Likewise.
28983         * tree-inline.cc (redirect_all_calls): Likewise.
28984         * tree-parloops.cc (gen_parallel_loop): Likewise.
28985         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
28986         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
28987         Likewise.
28988         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
28989         (may_eliminate_iv): Likewise.
28990         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
28991         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
28992         Likewise.
28993         (estimate_numbers_of_iterations): Likewise.
28994         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
28995         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
28996         (set_predicates_for_bb): Likewise.
28997         (init_loop_unswitch_info): Likewise.
28998         (hoist_guard): Likewise.
28999         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
29000         (minmax_replacement): Likewise.
29001         * tree-ssa-reassoc.cc (update_range_test): Likewise.
29002         (optimize_range_tests_to_bit_test): Likewise.
29003         (optimize_range_tests_var_bound): Likewise.
29004         (optimize_range_tests): Likewise.
29005         (no_side_effect_bb): Likewise.
29006         (suitable_cond_bb): Likewise.
29007         (maybe_optimize_range_tests): Likewise.
29008         (reassociate_bb): Likewise.
29009         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
29011 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
29013         PR debug/109676
29014         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
29015         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
29016         for it only if it still has TImode.  Don't decide whether to call
29017         fix_debug_reg_uses based on whether SRC is ever set or not.
29019 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
29021         * config/cris/cris.cc (cris_split_constant): New function.
29022         * config/cris/cris.md (splitop): New iterator.
29023         (opsplit1): New define_peephole2.
29024         * config/cris/cris-protos.h (cris_split_constant): Declare.
29025         (cris_splittable_constant_p): New macro.
29027 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
29029         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
29030         to ALL_REGS.
29032 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
29034         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
29035         lra_in_progress, not reload_in_progress.
29036         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
29037         * config/cris/constraints.md ("Q"): Ditto.
29039 2023-05-03  Andrew Pinski  <apinski@marvell.com>
29041         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
29042         stats on removed number of statements and phis.
29044 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
29046         PR tree-optimization/109711
29047         * value-range.cc (irange::verify_range): Allow types of
29048         error_mark_node.
29050 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
29052         PR sanitizer/90746
29053         * calls.cc (can_implement_as_sibling_call_p): Reject calls
29054         to __sanitizer_cov_trace_pc.
29056 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
29058         PR target/109661
29059         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
29060         a new ABI break parameter for GCC 14.  Set it to the alignment
29061         of enums that have an underlying type.  Take the true alignment
29062         of such enums from the TYPE_ALIGN of the underlying type's
29063         TYPE_MAIN_VARIANT.
29064         (aarch64_function_arg_boundary): Update accordingly.
29065         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
29066         Warn about ABI differences.
29068 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
29070         PR target/109661
29071         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
29072         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
29073         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
29074         (aarch64_gimplify_va_arg_expr): Likewise.
29076 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29078         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
29079         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
29080         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
29081         (vrmulhq): New.
29082         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
29083         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
29084         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
29085         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
29086         * config/arm/arm_mve.h (vhsubq): Remove.
29087         (vhaddq): Remove.
29088         (vhaddq_m): Remove.
29089         (vhsubq_m): Remove.
29090         (vhaddq_x): Remove.
29091         (vhsubq_x): Remove.
29092         (vhsubq_u8): Remove.
29093         (vhsubq_n_u8): Remove.
29094         (vhaddq_u8): Remove.
29095         (vhaddq_n_u8): Remove.
29096         (vhsubq_s8): Remove.
29097         (vhsubq_n_s8): Remove.
29098         (vhaddq_s8): Remove.
29099         (vhaddq_n_s8): Remove.
29100         (vhsubq_u16): Remove.
29101         (vhsubq_n_u16): Remove.
29102         (vhaddq_u16): Remove.
29103         (vhaddq_n_u16): Remove.
29104         (vhsubq_s16): Remove.
29105         (vhsubq_n_s16): Remove.
29106         (vhaddq_s16): Remove.
29107         (vhaddq_n_s16): Remove.
29108         (vhsubq_u32): Remove.
29109         (vhsubq_n_u32): Remove.
29110         (vhaddq_u32): Remove.
29111         (vhaddq_n_u32): Remove.
29112         (vhsubq_s32): Remove.
29113         (vhsubq_n_s32): Remove.
29114         (vhaddq_s32): Remove.
29115         (vhaddq_n_s32): Remove.
29116         (vhaddq_m_n_s8): Remove.
29117         (vhaddq_m_n_s32): Remove.
29118         (vhaddq_m_n_s16): Remove.
29119         (vhaddq_m_n_u8): Remove.
29120         (vhaddq_m_n_u32): Remove.
29121         (vhaddq_m_n_u16): Remove.
29122         (vhaddq_m_s8): Remove.
29123         (vhaddq_m_s32): Remove.
29124         (vhaddq_m_s16): Remove.
29125         (vhaddq_m_u8): Remove.
29126         (vhaddq_m_u32): Remove.
29127         (vhaddq_m_u16): Remove.
29128         (vhsubq_m_n_s8): Remove.
29129         (vhsubq_m_n_s32): Remove.
29130         (vhsubq_m_n_s16): Remove.
29131         (vhsubq_m_n_u8): Remove.
29132         (vhsubq_m_n_u32): Remove.
29133         (vhsubq_m_n_u16): Remove.
29134         (vhsubq_m_s8): Remove.
29135         (vhsubq_m_s32): Remove.
29136         (vhsubq_m_s16): Remove.
29137         (vhsubq_m_u8): Remove.
29138         (vhsubq_m_u32): Remove.
29139         (vhsubq_m_u16): Remove.
29140         (vhaddq_x_n_s8): Remove.
29141         (vhaddq_x_n_s16): Remove.
29142         (vhaddq_x_n_s32): Remove.
29143         (vhaddq_x_n_u8): Remove.
29144         (vhaddq_x_n_u16): Remove.
29145         (vhaddq_x_n_u32): Remove.
29146         (vhaddq_x_s8): Remove.
29147         (vhaddq_x_s16): Remove.
29148         (vhaddq_x_s32): Remove.
29149         (vhaddq_x_u8): Remove.
29150         (vhaddq_x_u16): Remove.
29151         (vhaddq_x_u32): Remove.
29152         (vhsubq_x_n_s8): Remove.
29153         (vhsubq_x_n_s16): Remove.
29154         (vhsubq_x_n_s32): Remove.
29155         (vhsubq_x_n_u8): Remove.
29156         (vhsubq_x_n_u16): Remove.
29157         (vhsubq_x_n_u32): Remove.
29158         (vhsubq_x_s8): Remove.
29159         (vhsubq_x_s16): Remove.
29160         (vhsubq_x_s32): Remove.
29161         (vhsubq_x_u8): Remove.
29162         (vhsubq_x_u16): Remove.
29163         (vhsubq_x_u32): Remove.
29164         (__arm_vhsubq_u8): Remove.
29165         (__arm_vhsubq_n_u8): Remove.
29166         (__arm_vhaddq_u8): Remove.
29167         (__arm_vhaddq_n_u8): Remove.
29168         (__arm_vhsubq_s8): Remove.
29169         (__arm_vhsubq_n_s8): Remove.
29170         (__arm_vhaddq_s8): Remove.
29171         (__arm_vhaddq_n_s8): Remove.
29172         (__arm_vhsubq_u16): Remove.
29173         (__arm_vhsubq_n_u16): Remove.
29174         (__arm_vhaddq_u16): Remove.
29175         (__arm_vhaddq_n_u16): Remove.
29176         (__arm_vhsubq_s16): Remove.
29177         (__arm_vhsubq_n_s16): Remove.
29178         (__arm_vhaddq_s16): Remove.
29179         (__arm_vhaddq_n_s16): Remove.
29180         (__arm_vhsubq_u32): Remove.
29181         (__arm_vhsubq_n_u32): Remove.
29182         (__arm_vhaddq_u32): Remove.
29183         (__arm_vhaddq_n_u32): Remove.
29184         (__arm_vhsubq_s32): Remove.
29185         (__arm_vhsubq_n_s32): Remove.
29186         (__arm_vhaddq_s32): Remove.
29187         (__arm_vhaddq_n_s32): Remove.
29188         (__arm_vhaddq_m_n_s8): Remove.
29189         (__arm_vhaddq_m_n_s32): Remove.
29190         (__arm_vhaddq_m_n_s16): Remove.
29191         (__arm_vhaddq_m_n_u8): Remove.
29192         (__arm_vhaddq_m_n_u32): Remove.
29193         (__arm_vhaddq_m_n_u16): Remove.
29194         (__arm_vhaddq_m_s8): Remove.
29195         (__arm_vhaddq_m_s32): Remove.
29196         (__arm_vhaddq_m_s16): Remove.
29197         (__arm_vhaddq_m_u8): Remove.
29198         (__arm_vhaddq_m_u32): Remove.
29199         (__arm_vhaddq_m_u16): Remove.
29200         (__arm_vhsubq_m_n_s8): Remove.
29201         (__arm_vhsubq_m_n_s32): Remove.
29202         (__arm_vhsubq_m_n_s16): Remove.
29203         (__arm_vhsubq_m_n_u8): Remove.
29204         (__arm_vhsubq_m_n_u32): Remove.
29205         (__arm_vhsubq_m_n_u16): Remove.
29206         (__arm_vhsubq_m_s8): Remove.
29207         (__arm_vhsubq_m_s32): Remove.
29208         (__arm_vhsubq_m_s16): Remove.
29209         (__arm_vhsubq_m_u8): Remove.
29210         (__arm_vhsubq_m_u32): Remove.
29211         (__arm_vhsubq_m_u16): Remove.
29212         (__arm_vhaddq_x_n_s8): Remove.
29213         (__arm_vhaddq_x_n_s16): Remove.
29214         (__arm_vhaddq_x_n_s32): Remove.
29215         (__arm_vhaddq_x_n_u8): Remove.
29216         (__arm_vhaddq_x_n_u16): Remove.
29217         (__arm_vhaddq_x_n_u32): Remove.
29218         (__arm_vhaddq_x_s8): Remove.
29219         (__arm_vhaddq_x_s16): Remove.
29220         (__arm_vhaddq_x_s32): Remove.
29221         (__arm_vhaddq_x_u8): Remove.
29222         (__arm_vhaddq_x_u16): Remove.
29223         (__arm_vhaddq_x_u32): Remove.
29224         (__arm_vhsubq_x_n_s8): Remove.
29225         (__arm_vhsubq_x_n_s16): Remove.
29226         (__arm_vhsubq_x_n_s32): Remove.
29227         (__arm_vhsubq_x_n_u8): Remove.
29228         (__arm_vhsubq_x_n_u16): Remove.
29229         (__arm_vhsubq_x_n_u32): Remove.
29230         (__arm_vhsubq_x_s8): Remove.
29231         (__arm_vhsubq_x_s16): Remove.
29232         (__arm_vhsubq_x_s32): Remove.
29233         (__arm_vhsubq_x_u8): Remove.
29234         (__arm_vhsubq_x_u16): Remove.
29235         (__arm_vhsubq_x_u32): Remove.
29236         (__arm_vhsubq): Remove.
29237         (__arm_vhaddq): Remove.
29238         (__arm_vhaddq_m): Remove.
29239         (__arm_vhsubq_m): Remove.
29240         (__arm_vhaddq_x): Remove.
29241         (__arm_vhsubq_x): Remove.
29242         (vmulhq): Remove.
29243         (vmulhq_m): Remove.
29244         (vmulhq_x): Remove.
29245         (vmulhq_u8): Remove.
29246         (vmulhq_s8): Remove.
29247         (vmulhq_u16): Remove.
29248         (vmulhq_s16): Remove.
29249         (vmulhq_u32): Remove.
29250         (vmulhq_s32): Remove.
29251         (vmulhq_m_s8): Remove.
29252         (vmulhq_m_s32): Remove.
29253         (vmulhq_m_s16): Remove.
29254         (vmulhq_m_u8): Remove.
29255         (vmulhq_m_u32): Remove.
29256         (vmulhq_m_u16): Remove.
29257         (vmulhq_x_s8): Remove.
29258         (vmulhq_x_s16): Remove.
29259         (vmulhq_x_s32): Remove.
29260         (vmulhq_x_u8): Remove.
29261         (vmulhq_x_u16): Remove.
29262         (vmulhq_x_u32): Remove.
29263         (__arm_vmulhq_u8): Remove.
29264         (__arm_vmulhq_s8): Remove.
29265         (__arm_vmulhq_u16): Remove.
29266         (__arm_vmulhq_s16): Remove.
29267         (__arm_vmulhq_u32): Remove.
29268         (__arm_vmulhq_s32): Remove.
29269         (__arm_vmulhq_m_s8): Remove.
29270         (__arm_vmulhq_m_s32): Remove.
29271         (__arm_vmulhq_m_s16): Remove.
29272         (__arm_vmulhq_m_u8): Remove.
29273         (__arm_vmulhq_m_u32): Remove.
29274         (__arm_vmulhq_m_u16): Remove.
29275         (__arm_vmulhq_x_s8): Remove.
29276         (__arm_vmulhq_x_s16): Remove.
29277         (__arm_vmulhq_x_s32): Remove.
29278         (__arm_vmulhq_x_u8): Remove.
29279         (__arm_vmulhq_x_u16): Remove.
29280         (__arm_vmulhq_x_u32): Remove.
29281         (__arm_vmulhq): Remove.
29282         (__arm_vmulhq_m): Remove.
29283         (__arm_vmulhq_x): Remove.
29284         (vqsubq): Remove.
29285         (vqaddq): Remove.
29286         (vqaddq_m): Remove.
29287         (vqsubq_m): Remove.
29288         (vqsubq_u8): Remove.
29289         (vqsubq_n_u8): Remove.
29290         (vqaddq_u8): Remove.
29291         (vqaddq_n_u8): Remove.
29292         (vqsubq_s8): Remove.
29293         (vqsubq_n_s8): Remove.
29294         (vqaddq_s8): Remove.
29295         (vqaddq_n_s8): Remove.
29296         (vqsubq_u16): Remove.
29297         (vqsubq_n_u16): Remove.
29298         (vqaddq_u16): Remove.
29299         (vqaddq_n_u16): Remove.
29300         (vqsubq_s16): Remove.
29301         (vqsubq_n_s16): Remove.
29302         (vqaddq_s16): Remove.
29303         (vqaddq_n_s16): Remove.
29304         (vqsubq_u32): Remove.
29305         (vqsubq_n_u32): Remove.
29306         (vqaddq_u32): Remove.
29307         (vqaddq_n_u32): Remove.
29308         (vqsubq_s32): Remove.
29309         (vqsubq_n_s32): Remove.
29310         (vqaddq_s32): Remove.
29311         (vqaddq_n_s32): Remove.
29312         (vqaddq_m_n_s8): Remove.
29313         (vqaddq_m_n_s32): Remove.
29314         (vqaddq_m_n_s16): Remove.
29315         (vqaddq_m_n_u8): Remove.
29316         (vqaddq_m_n_u32): Remove.
29317         (vqaddq_m_n_u16): Remove.
29318         (vqaddq_m_s8): Remove.
29319         (vqaddq_m_s32): Remove.
29320         (vqaddq_m_s16): Remove.
29321         (vqaddq_m_u8): Remove.
29322         (vqaddq_m_u32): Remove.
29323         (vqaddq_m_u16): Remove.
29324         (vqsubq_m_n_s8): Remove.
29325         (vqsubq_m_n_s32): Remove.
29326         (vqsubq_m_n_s16): Remove.
29327         (vqsubq_m_n_u8): Remove.
29328         (vqsubq_m_n_u32): Remove.
29329         (vqsubq_m_n_u16): Remove.
29330         (vqsubq_m_s8): Remove.
29331         (vqsubq_m_s32): Remove.
29332         (vqsubq_m_s16): Remove.
29333         (vqsubq_m_u8): Remove.
29334         (vqsubq_m_u32): Remove.
29335         (vqsubq_m_u16): Remove.
29336         (__arm_vqsubq_u8): Remove.
29337         (__arm_vqsubq_n_u8): Remove.
29338         (__arm_vqaddq_u8): Remove.
29339         (__arm_vqaddq_n_u8): Remove.
29340         (__arm_vqsubq_s8): Remove.
29341         (__arm_vqsubq_n_s8): Remove.
29342         (__arm_vqaddq_s8): Remove.
29343         (__arm_vqaddq_n_s8): Remove.
29344         (__arm_vqsubq_u16): Remove.
29345         (__arm_vqsubq_n_u16): Remove.
29346         (__arm_vqaddq_u16): Remove.
29347         (__arm_vqaddq_n_u16): Remove.
29348         (__arm_vqsubq_s16): Remove.
29349         (__arm_vqsubq_n_s16): Remove.
29350         (__arm_vqaddq_s16): Remove.
29351         (__arm_vqaddq_n_s16): Remove.
29352         (__arm_vqsubq_u32): Remove.
29353         (__arm_vqsubq_n_u32): Remove.
29354         (__arm_vqaddq_u32): Remove.
29355         (__arm_vqaddq_n_u32): Remove.
29356         (__arm_vqsubq_s32): Remove.
29357         (__arm_vqsubq_n_s32): Remove.
29358         (__arm_vqaddq_s32): Remove.
29359         (__arm_vqaddq_n_s32): Remove.
29360         (__arm_vqaddq_m_n_s8): Remove.
29361         (__arm_vqaddq_m_n_s32): Remove.
29362         (__arm_vqaddq_m_n_s16): Remove.
29363         (__arm_vqaddq_m_n_u8): Remove.
29364         (__arm_vqaddq_m_n_u32): Remove.
29365         (__arm_vqaddq_m_n_u16): Remove.
29366         (__arm_vqaddq_m_s8): Remove.
29367         (__arm_vqaddq_m_s32): Remove.
29368         (__arm_vqaddq_m_s16): Remove.
29369         (__arm_vqaddq_m_u8): Remove.
29370         (__arm_vqaddq_m_u32): Remove.
29371         (__arm_vqaddq_m_u16): Remove.
29372         (__arm_vqsubq_m_n_s8): Remove.
29373         (__arm_vqsubq_m_n_s32): Remove.
29374         (__arm_vqsubq_m_n_s16): Remove.
29375         (__arm_vqsubq_m_n_u8): Remove.
29376         (__arm_vqsubq_m_n_u32): Remove.
29377         (__arm_vqsubq_m_n_u16): Remove.
29378         (__arm_vqsubq_m_s8): Remove.
29379         (__arm_vqsubq_m_s32): Remove.
29380         (__arm_vqsubq_m_s16): Remove.
29381         (__arm_vqsubq_m_u8): Remove.
29382         (__arm_vqsubq_m_u32): Remove.
29383         (__arm_vqsubq_m_u16): Remove.
29384         (__arm_vqsubq): Remove.
29385         (__arm_vqaddq): Remove.
29386         (__arm_vqaddq_m): Remove.
29387         (__arm_vqsubq_m): Remove.
29388         (vqdmulhq): Remove.
29389         (vqdmulhq_m): Remove.
29390         (vqdmulhq_s8): Remove.
29391         (vqdmulhq_n_s8): Remove.
29392         (vqdmulhq_s16): Remove.
29393         (vqdmulhq_n_s16): Remove.
29394         (vqdmulhq_s32): Remove.
29395         (vqdmulhq_n_s32): Remove.
29396         (vqdmulhq_m_n_s8): Remove.
29397         (vqdmulhq_m_n_s32): Remove.
29398         (vqdmulhq_m_n_s16): Remove.
29399         (vqdmulhq_m_s8): Remove.
29400         (vqdmulhq_m_s32): Remove.
29401         (vqdmulhq_m_s16): Remove.
29402         (__arm_vqdmulhq_s8): Remove.
29403         (__arm_vqdmulhq_n_s8): Remove.
29404         (__arm_vqdmulhq_s16): Remove.
29405         (__arm_vqdmulhq_n_s16): Remove.
29406         (__arm_vqdmulhq_s32): Remove.
29407         (__arm_vqdmulhq_n_s32): Remove.
29408         (__arm_vqdmulhq_m_n_s8): Remove.
29409         (__arm_vqdmulhq_m_n_s32): Remove.
29410         (__arm_vqdmulhq_m_n_s16): Remove.
29411         (__arm_vqdmulhq_m_s8): Remove.
29412         (__arm_vqdmulhq_m_s32): Remove.
29413         (__arm_vqdmulhq_m_s16): Remove.
29414         (__arm_vqdmulhq): Remove.
29415         (__arm_vqdmulhq_m): Remove.
29416         (vrhaddq): Remove.
29417         (vrhaddq_m): Remove.
29418         (vrhaddq_x): Remove.
29419         (vrhaddq_u8): Remove.
29420         (vrhaddq_s8): Remove.
29421         (vrhaddq_u16): Remove.
29422         (vrhaddq_s16): Remove.
29423         (vrhaddq_u32): Remove.
29424         (vrhaddq_s32): Remove.
29425         (vrhaddq_m_s8): Remove.
29426         (vrhaddq_m_s32): Remove.
29427         (vrhaddq_m_s16): Remove.
29428         (vrhaddq_m_u8): Remove.
29429         (vrhaddq_m_u32): Remove.
29430         (vrhaddq_m_u16): Remove.
29431         (vrhaddq_x_s8): Remove.
29432         (vrhaddq_x_s16): Remove.
29433         (vrhaddq_x_s32): Remove.
29434         (vrhaddq_x_u8): Remove.
29435         (vrhaddq_x_u16): Remove.
29436         (vrhaddq_x_u32): Remove.
29437         (__arm_vrhaddq_u8): Remove.
29438         (__arm_vrhaddq_s8): Remove.
29439         (__arm_vrhaddq_u16): Remove.
29440         (__arm_vrhaddq_s16): Remove.
29441         (__arm_vrhaddq_u32): Remove.
29442         (__arm_vrhaddq_s32): Remove.
29443         (__arm_vrhaddq_m_s8): Remove.
29444         (__arm_vrhaddq_m_s32): Remove.
29445         (__arm_vrhaddq_m_s16): Remove.
29446         (__arm_vrhaddq_m_u8): Remove.
29447         (__arm_vrhaddq_m_u32): Remove.
29448         (__arm_vrhaddq_m_u16): Remove.
29449         (__arm_vrhaddq_x_s8): Remove.
29450         (__arm_vrhaddq_x_s16): Remove.
29451         (__arm_vrhaddq_x_s32): Remove.
29452         (__arm_vrhaddq_x_u8): Remove.
29453         (__arm_vrhaddq_x_u16): Remove.
29454         (__arm_vrhaddq_x_u32): Remove.
29455         (__arm_vrhaddq): Remove.
29456         (__arm_vrhaddq_m): Remove.
29457         (__arm_vrhaddq_x): Remove.
29458         (vrmulhq): Remove.
29459         (vrmulhq_m): Remove.
29460         (vrmulhq_x): Remove.
29461         (vrmulhq_u8): Remove.
29462         (vrmulhq_s8): Remove.
29463         (vrmulhq_u16): Remove.
29464         (vrmulhq_s16): Remove.
29465         (vrmulhq_u32): Remove.
29466         (vrmulhq_s32): Remove.
29467         (vrmulhq_m_s8): Remove.
29468         (vrmulhq_m_s32): Remove.
29469         (vrmulhq_m_s16): Remove.
29470         (vrmulhq_m_u8): Remove.
29471         (vrmulhq_m_u32): Remove.
29472         (vrmulhq_m_u16): Remove.
29473         (vrmulhq_x_s8): Remove.
29474         (vrmulhq_x_s16): Remove.
29475         (vrmulhq_x_s32): Remove.
29476         (vrmulhq_x_u8): Remove.
29477         (vrmulhq_x_u16): Remove.
29478         (vrmulhq_x_u32): Remove.
29479         (__arm_vrmulhq_u8): Remove.
29480         (__arm_vrmulhq_s8): Remove.
29481         (__arm_vrmulhq_u16): Remove.
29482         (__arm_vrmulhq_s16): Remove.
29483         (__arm_vrmulhq_u32): Remove.
29484         (__arm_vrmulhq_s32): Remove.
29485         (__arm_vrmulhq_m_s8): Remove.
29486         (__arm_vrmulhq_m_s32): Remove.
29487         (__arm_vrmulhq_m_s16): Remove.
29488         (__arm_vrmulhq_m_u8): Remove.
29489         (__arm_vrmulhq_m_u32): Remove.
29490         (__arm_vrmulhq_m_u16): Remove.
29491         (__arm_vrmulhq_x_s8): Remove.
29492         (__arm_vrmulhq_x_s16): Remove.
29493         (__arm_vrmulhq_x_s32): Remove.
29494         (__arm_vrmulhq_x_u8): Remove.
29495         (__arm_vrmulhq_x_u16): Remove.
29496         (__arm_vrmulhq_x_u32): Remove.
29497         (__arm_vrmulhq): Remove.
29498         (__arm_vrmulhq_m): Remove.
29499         (__arm_vrmulhq_x): Remove.
29501 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29503         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
29504         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
29505         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
29506         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
29507         * config/arm/mve.md (mve_vabdq_<supf><mode>)
29508         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
29509         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
29510         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
29511         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
29512         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
29513         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
29514         ...
29515         (@mve_<mve_insn>q_<supf><mode>): ... this.
29516         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
29517         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
29518         gen_mve_vhaddq / gen_mve_vrhaddq.
29520 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29522         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
29523         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
29524         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
29525         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
29526         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
29527         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
29528         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
29529         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
29530         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
29531         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
29532         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
29533         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
29534         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
29536 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29538         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
29539         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
29540         vqsubq.
29541         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
29542         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
29543         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
29544         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
29545         (mve_vqsubq_n_<supf><mode>): Merge into ...
29546         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
29548 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29550         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
29551         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
29552         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
29553         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
29554         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
29555         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
29556         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
29557         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
29558         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
29559         (mve_vshlq_m_<supf><mode>): Merged into
29560         @mve_<mve_insn>q_m_<supf><mode>.
29561         (mve_vabdq_m_<supf><mode>): Likewise.
29562         (mve_vhaddq_m_<supf><mode>): Likewise.
29563         (mve_vhsubq_m_<supf><mode>): Likewise.
29564         (mve_vmaxq_m_<supf><mode>): Likewise.
29565         (mve_vminq_m_<supf><mode>): Likewise.
29566         (mve_vmulhq_m_<supf><mode>): Likewise.
29567         (mve_vqaddq_m_<supf><mode>): Likewise.
29568         (mve_vqrshlq_m_<supf><mode>): Likewise.
29569         (mve_vqshlq_m_<supf><mode>): Likewise.
29570         (mve_vqsubq_m_<supf><mode>): Likewise.
29571         (mve_vrhaddq_m_<supf><mode>): Likewise.
29572         (mve_vrmulhq_m_<supf><mode>): Likewise.
29573         (mve_vrshlq_m_<supf><mode>): Likewise.
29574         (mve_vqdmladhq_m_s<mode>): Likewise.
29575         (mve_vqdmladhxq_m_s<mode>): Likewise.
29576         (mve_vqdmlsdhq_m_s<mode>): Likewise.
29577         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
29578         (mve_vqdmulhq_m_s<mode>): Likewise.
29579         (mve_vqrdmladhq_m_s<mode>): Likewise.
29580         (mve_vqrdmladhxq_m_s<mode>): Likewise.
29581         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
29582         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
29583         (mve_vqrdmulhq_m_s<mode>): Likewise.
29585 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29587         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
29588         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
29589         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
29590         * config/arm/arm_mve.h (vcreateq_f16): Remove.
29591         (vcreateq_f32): Remove.
29592         (vcreateq_u8): Remove.
29593         (vcreateq_u16): Remove.
29594         (vcreateq_u32): Remove.
29595         (vcreateq_u64): Remove.
29596         (vcreateq_s8): Remove.
29597         (vcreateq_s16): Remove.
29598         (vcreateq_s32): Remove.
29599         (vcreateq_s64): Remove.
29600         (__arm_vcreateq_u8): Remove.
29601         (__arm_vcreateq_u16): Remove.
29602         (__arm_vcreateq_u32): Remove.
29603         (__arm_vcreateq_u64): Remove.
29604         (__arm_vcreateq_s8): Remove.
29605         (__arm_vcreateq_s16): Remove.
29606         (__arm_vcreateq_s32): Remove.
29607         (__arm_vcreateq_s64): Remove.
29608         (__arm_vcreateq_f16): Remove.
29609         (__arm_vcreateq_f32): Remove.
29611 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29613         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
29614         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
29615         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
29616         (@mve_<mve_insn>q_f<mode>): ... this.
29617         (mve_vcreateq_<supf><mode>): Rename into ...
29618         (@mve_<mve_insn>q_<supf><mode>): ... this.
29620 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29622         * config/arm/arm-mve-builtins-shapes.cc (create): New.
29623         * config/arm/arm-mve-builtins-shapes.h: (create): New.
29625 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29627         * config/arm/arm-mve-builtins-functions.h (class
29628         unspec_mve_function_exact_insn): New.
29630 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29632         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
29633         (vorrq): New.
29634         * config/arm/arm-mve-builtins-base.def (vorrq): New.
29635         * config/arm/arm-mve-builtins-base.h (vorrq): New.
29636         * config/arm/arm-mve-builtins.cc
29637         (function_instance::has_inactive_argument): Handle vorrq.
29638         * config/arm/arm_mve.h (vorrq): Remove.
29639         (vorrq_m_n): Remove.
29640         (vorrq_m): Remove.
29641         (vorrq_x): Remove.
29642         (vorrq_u8): Remove.
29643         (vorrq_s8): Remove.
29644         (vorrq_u16): Remove.
29645         (vorrq_s16): Remove.
29646         (vorrq_u32): Remove.
29647         (vorrq_s32): Remove.
29648         (vorrq_n_u16): Remove.
29649         (vorrq_f16): Remove.
29650         (vorrq_n_s16): Remove.
29651         (vorrq_n_u32): Remove.
29652         (vorrq_f32): Remove.
29653         (vorrq_n_s32): Remove.
29654         (vorrq_m_n_s16): Remove.
29655         (vorrq_m_n_u16): Remove.
29656         (vorrq_m_n_s32): Remove.
29657         (vorrq_m_n_u32): Remove.
29658         (vorrq_m_s8): Remove.
29659         (vorrq_m_s32): Remove.
29660         (vorrq_m_s16): Remove.
29661         (vorrq_m_u8): Remove.
29662         (vorrq_m_u32): Remove.
29663         (vorrq_m_u16): Remove.
29664         (vorrq_m_f32): Remove.
29665         (vorrq_m_f16): Remove.
29666         (vorrq_x_s8): Remove.
29667         (vorrq_x_s16): Remove.
29668         (vorrq_x_s32): Remove.
29669         (vorrq_x_u8): Remove.
29670         (vorrq_x_u16): Remove.
29671         (vorrq_x_u32): Remove.
29672         (vorrq_x_f16): Remove.
29673         (vorrq_x_f32): Remove.
29674         (__arm_vorrq_u8): Remove.
29675         (__arm_vorrq_s8): Remove.
29676         (__arm_vorrq_u16): Remove.
29677         (__arm_vorrq_s16): Remove.
29678         (__arm_vorrq_u32): Remove.
29679         (__arm_vorrq_s32): Remove.
29680         (__arm_vorrq_n_u16): Remove.
29681         (__arm_vorrq_n_s16): Remove.
29682         (__arm_vorrq_n_u32): Remove.
29683         (__arm_vorrq_n_s32): Remove.
29684         (__arm_vorrq_m_n_s16): Remove.
29685         (__arm_vorrq_m_n_u16): Remove.
29686         (__arm_vorrq_m_n_s32): Remove.
29687         (__arm_vorrq_m_n_u32): Remove.
29688         (__arm_vorrq_m_s8): Remove.
29689         (__arm_vorrq_m_s32): Remove.
29690         (__arm_vorrq_m_s16): Remove.
29691         (__arm_vorrq_m_u8): Remove.
29692         (__arm_vorrq_m_u32): Remove.
29693         (__arm_vorrq_m_u16): Remove.
29694         (__arm_vorrq_x_s8): Remove.
29695         (__arm_vorrq_x_s16): Remove.
29696         (__arm_vorrq_x_s32): Remove.
29697         (__arm_vorrq_x_u8): Remove.
29698         (__arm_vorrq_x_u16): Remove.
29699         (__arm_vorrq_x_u32): Remove.
29700         (__arm_vorrq_f16): Remove.
29701         (__arm_vorrq_f32): Remove.
29702         (__arm_vorrq_m_f32): Remove.
29703         (__arm_vorrq_m_f16): Remove.
29704         (__arm_vorrq_x_f16): Remove.
29705         (__arm_vorrq_x_f32): Remove.
29706         (__arm_vorrq): Remove.
29707         (__arm_vorrq_m_n): Remove.
29708         (__arm_vorrq_m): Remove.
29709         (__arm_vorrq_x): Remove.
29711 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29713         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
29714         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
29715         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
29716         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
29718 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29720         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
29721         (vandq,veorq): New.
29722         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
29723         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
29724         * config/arm/arm_mve.h (vandq): Remove.
29725         (vandq_m): Remove.
29726         (vandq_x): Remove.
29727         (vandq_u8): Remove.
29728         (vandq_s8): Remove.
29729         (vandq_u16): Remove.
29730         (vandq_s16): Remove.
29731         (vandq_u32): Remove.
29732         (vandq_s32): Remove.
29733         (vandq_f16): Remove.
29734         (vandq_f32): Remove.
29735         (vandq_m_s8): Remove.
29736         (vandq_m_s32): Remove.
29737         (vandq_m_s16): Remove.
29738         (vandq_m_u8): Remove.
29739         (vandq_m_u32): Remove.
29740         (vandq_m_u16): Remove.
29741         (vandq_m_f32): Remove.
29742         (vandq_m_f16): Remove.
29743         (vandq_x_s8): Remove.
29744         (vandq_x_s16): Remove.
29745         (vandq_x_s32): Remove.
29746         (vandq_x_u8): Remove.
29747         (vandq_x_u16): Remove.
29748         (vandq_x_u32): Remove.
29749         (vandq_x_f16): Remove.
29750         (vandq_x_f32): Remove.
29751         (__arm_vandq_u8): Remove.
29752         (__arm_vandq_s8): Remove.
29753         (__arm_vandq_u16): Remove.
29754         (__arm_vandq_s16): Remove.
29755         (__arm_vandq_u32): Remove.
29756         (__arm_vandq_s32): Remove.
29757         (__arm_vandq_m_s8): Remove.
29758         (__arm_vandq_m_s32): Remove.
29759         (__arm_vandq_m_s16): Remove.
29760         (__arm_vandq_m_u8): Remove.
29761         (__arm_vandq_m_u32): Remove.
29762         (__arm_vandq_m_u16): Remove.
29763         (__arm_vandq_x_s8): Remove.
29764         (__arm_vandq_x_s16): Remove.
29765         (__arm_vandq_x_s32): Remove.
29766         (__arm_vandq_x_u8): Remove.
29767         (__arm_vandq_x_u16): Remove.
29768         (__arm_vandq_x_u32): Remove.
29769         (__arm_vandq_f16): Remove.
29770         (__arm_vandq_f32): Remove.
29771         (__arm_vandq_m_f32): Remove.
29772         (__arm_vandq_m_f16): Remove.
29773         (__arm_vandq_x_f16): Remove.
29774         (__arm_vandq_x_f32): Remove.
29775         (__arm_vandq): Remove.
29776         (__arm_vandq_m): Remove.
29777         (__arm_vandq_x): Remove.
29778         (veorq_m): Remove.
29779         (veorq_x): Remove.
29780         (veorq_u8): Remove.
29781         (veorq_s8): Remove.
29782         (veorq_u16): Remove.
29783         (veorq_s16): Remove.
29784         (veorq_u32): Remove.
29785         (veorq_s32): Remove.
29786         (veorq_f16): Remove.
29787         (veorq_f32): Remove.
29788         (veorq_m_s8): Remove.
29789         (veorq_m_s32): Remove.
29790         (veorq_m_s16): Remove.
29791         (veorq_m_u8): Remove.
29792         (veorq_m_u32): Remove.
29793         (veorq_m_u16): Remove.
29794         (veorq_m_f32): Remove.
29795         (veorq_m_f16): Remove.
29796         (veorq_x_s8): Remove.
29797         (veorq_x_s16): Remove.
29798         (veorq_x_s32): Remove.
29799         (veorq_x_u8): Remove.
29800         (veorq_x_u16): Remove.
29801         (veorq_x_u32): Remove.
29802         (veorq_x_f16): Remove.
29803         (veorq_x_f32): Remove.
29804         (__arm_veorq_u8): Remove.
29805         (__arm_veorq_s8): Remove.
29806         (__arm_veorq_u16): Remove.
29807         (__arm_veorq_s16): Remove.
29808         (__arm_veorq_u32): Remove.
29809         (__arm_veorq_s32): Remove.
29810         (__arm_veorq_m_s8): Remove.
29811         (__arm_veorq_m_s32): Remove.
29812         (__arm_veorq_m_s16): Remove.
29813         (__arm_veorq_m_u8): Remove.
29814         (__arm_veorq_m_u32): Remove.
29815         (__arm_veorq_m_u16): Remove.
29816         (__arm_veorq_x_s8): Remove.
29817         (__arm_veorq_x_s16): Remove.
29818         (__arm_veorq_x_s32): Remove.
29819         (__arm_veorq_x_u8): Remove.
29820         (__arm_veorq_x_u16): Remove.
29821         (__arm_veorq_x_u32): Remove.
29822         (__arm_veorq_f16): Remove.
29823         (__arm_veorq_f32): Remove.
29824         (__arm_veorq_m_f32): Remove.
29825         (__arm_veorq_m_f16): Remove.
29826         (__arm_veorq_x_f16): Remove.
29827         (__arm_veorq_x_f32): Remove.
29828         (__arm_veorq): Remove.
29829         (__arm_veorq_m): Remove.
29830         (__arm_veorq_x): Remove.
29832 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29834         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
29835         (MVE_FP_M_BINARY_LOGIC): New.
29836         (MVE_INT_M_N_BINARY_LOGIC): New.
29837         (MVE_INT_N_BINARY_LOGIC): New.
29838         (mve_insn): Add vand, veor, vorr, vbic.
29839         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
29840         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
29841         (mve_vbicq_m_<supf><mode>): Merge into ...
29842         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
29843         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
29844         (mve_vbicq_m_f<mode>): Merge into ...
29845         (@mve_<mve_insn>q_m_f<mode>): ... this.
29846         (mve_vorrq_n_<supf><mode>)
29847         (mve_vbicq_n_<supf><mode>): Merge into ...
29848         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
29849         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
29850         into ...
29851         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
29853 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29855         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
29856         * config/arm/arm-mve-builtins-shapes.h (binary): New.
29858 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
29860         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
29861         New.
29862         (vaddq, vmulq, vsubq): New.
29863         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
29864         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
29865         * config/arm/arm_mve.h (vaddq): Remove.
29866         (vaddq_m): Remove.
29867         (vaddq_x): Remove.
29868         (vaddq_n_u8): Remove.
29869         (vaddq_n_s8): Remove.
29870         (vaddq_n_u16): Remove.
29871         (vaddq_n_s16): Remove.
29872         (vaddq_n_u32): Remove.
29873         (vaddq_n_s32): Remove.
29874         (vaddq_n_f16): Remove.
29875         (vaddq_n_f32): Remove.
29876         (vaddq_m_n_s8): Remove.
29877         (vaddq_m_n_s32): Remove.
29878         (vaddq_m_n_s16): Remove.
29879         (vaddq_m_n_u8): Remove.
29880         (vaddq_m_n_u32): Remove.
29881         (vaddq_m_n_u16): Remove.
29882         (vaddq_m_s8): Remove.
29883         (vaddq_m_s32): Remove.
29884         (vaddq_m_s16): Remove.
29885         (vaddq_m_u8): Remove.
29886         (vaddq_m_u32): Remove.
29887         (vaddq_m_u16): Remove.
29888         (vaddq_m_f32): Remove.
29889         (vaddq_m_f16): Remove.
29890         (vaddq_m_n_f32): Remove.
29891         (vaddq_m_n_f16): Remove.
29892         (vaddq_s8): Remove.
29893         (vaddq_s16): Remove.
29894         (vaddq_s32): Remove.
29895         (vaddq_u8): Remove.
29896         (vaddq_u16): Remove.
29897         (vaddq_u32): Remove.
29898         (vaddq_f16): Remove.
29899         (vaddq_f32): Remove.
29900         (vaddq_x_s8): Remove.
29901         (vaddq_x_s16): Remove.
29902         (vaddq_x_s32): Remove.
29903         (vaddq_x_n_s8): Remove.
29904         (vaddq_x_n_s16): Remove.
29905         (vaddq_x_n_s32): Remove.
29906         (vaddq_x_u8): Remove.
29907         (vaddq_x_u16): Remove.
29908         (vaddq_x_u32): Remove.
29909         (vaddq_x_n_u8): Remove.
29910         (vaddq_x_n_u16): Remove.
29911         (vaddq_x_n_u32): Remove.
29912         (vaddq_x_f16): Remove.
29913         (vaddq_x_f32): Remove.
29914         (vaddq_x_n_f16): Remove.
29915         (vaddq_x_n_f32): Remove.
29916         (__arm_vaddq_n_u8): Remove.
29917         (__arm_vaddq_n_s8): Remove.
29918         (__arm_vaddq_n_u16): Remove.
29919         (__arm_vaddq_n_s16): Remove.
29920         (__arm_vaddq_n_u32): Remove.
29921         (__arm_vaddq_n_s32): Remove.
29922         (__arm_vaddq_m_n_s8): Remove.
29923         (__arm_vaddq_m_n_s32): Remove.
29924         (__arm_vaddq_m_n_s16): Remove.
29925         (__arm_vaddq_m_n_u8): Remove.
29926         (__arm_vaddq_m_n_u32): Remove.
29927         (__arm_vaddq_m_n_u16): Remove.
29928         (__arm_vaddq_m_s8): Remove.
29929         (__arm_vaddq_m_s32): Remove.
29930         (__arm_vaddq_m_s16): Remove.
29931         (__arm_vaddq_m_u8): Remove.
29932         (__arm_vaddq_m_u32): Remove.
29933         (__arm_vaddq_m_u16): Remove.
29934         (__arm_vaddq_s8): Remove.
29935         (__arm_vaddq_s16): Remove.
29936         (__arm_vaddq_s32): Remove.
29937         (__arm_vaddq_u8): Remove.
29938         (__arm_vaddq_u16): Remove.
29939         (__arm_vaddq_u32): Remove.
29940         (__arm_vaddq_x_s8): Remove.
29941         (__arm_vaddq_x_s16): Remove.
29942         (__arm_vaddq_x_s32): Remove.
29943         (__arm_vaddq_x_n_s8): Remove.
29944         (__arm_vaddq_x_n_s16): Remove.
29945         (__arm_vaddq_x_n_s32): Remove.
29946         (__arm_vaddq_x_u8): Remove.
29947         (__arm_vaddq_x_u16): Remove.
29948         (__arm_vaddq_x_u32): Remove.
29949         (__arm_vaddq_x_n_u8): Remove.
29950         (__arm_vaddq_x_n_u16): Remove.
29951         (__arm_vaddq_x_n_u32): Remove.
29952         (__arm_vaddq_n_f16): Remove.
29953         (__arm_vaddq_n_f32): Remove.
29954         (__arm_vaddq_m_f32): Remove.
29955         (__arm_vaddq_m_f16): Remove.
29956         (__arm_vaddq_m_n_f32): Remove.
29957         (__arm_vaddq_m_n_f16): Remove.
29958         (__arm_vaddq_f16): Remove.
29959         (__arm_vaddq_f32): Remove.
29960         (__arm_vaddq_x_f16): Remove.
29961         (__arm_vaddq_x_f32): Remove.
29962         (__arm_vaddq_x_n_f16): Remove.
29963         (__arm_vaddq_x_n_f32): Remove.
29964         (__arm_vaddq): Remove.
29965         (__arm_vaddq_m): Remove.
29966         (__arm_vaddq_x): Remove.
29967         (vmulq): Remove.
29968         (vmulq_m): Remove.
29969         (vmulq_x): Remove.
29970         (vmulq_u8): Remove.
29971         (vmulq_n_u8): Remove.
29972         (vmulq_s8): Remove.
29973         (vmulq_n_s8): Remove.
29974         (vmulq_u16): Remove.
29975         (vmulq_n_u16): Remove.
29976         (vmulq_s16): Remove.
29977         (vmulq_n_s16): Remove.
29978         (vmulq_u32): Remove.
29979         (vmulq_n_u32): Remove.
29980         (vmulq_s32): Remove.
29981         (vmulq_n_s32): Remove.
29982         (vmulq_n_f16): Remove.
29983         (vmulq_f16): Remove.
29984         (vmulq_n_f32): Remove.
29985         (vmulq_f32): Remove.
29986         (vmulq_m_n_s8): Remove.
29987         (vmulq_m_n_s32): Remove.
29988         (vmulq_m_n_s16): Remove.
29989         (vmulq_m_n_u8): Remove.
29990         (vmulq_m_n_u32): Remove.
29991         (vmulq_m_n_u16): Remove.
29992         (vmulq_m_s8): Remove.
29993         (vmulq_m_s32): Remove.
29994         (vmulq_m_s16): Remove.
29995         (vmulq_m_u8): Remove.
29996         (vmulq_m_u32): Remove.
29997         (vmulq_m_u16): Remove.
29998         (vmulq_m_f32): Remove.
29999         (vmulq_m_f16): Remove.
30000         (vmulq_m_n_f32): Remove.
30001         (vmulq_m_n_f16): Remove.
30002         (vmulq_x_s8): Remove.
30003         (vmulq_x_s16): Remove.
30004         (vmulq_x_s32): Remove.
30005         (vmulq_x_n_s8): Remove.
30006         (vmulq_x_n_s16): Remove.
30007         (vmulq_x_n_s32): Remove.
30008         (vmulq_x_u8): Remove.
30009         (vmulq_x_u16): Remove.
30010         (vmulq_x_u32): Remove.
30011         (vmulq_x_n_u8): Remove.
30012         (vmulq_x_n_u16): Remove.
30013         (vmulq_x_n_u32): Remove.
30014         (vmulq_x_f16): Remove.
30015         (vmulq_x_f32): Remove.
30016         (vmulq_x_n_f16): Remove.
30017         (vmulq_x_n_f32): Remove.
30018         (__arm_vmulq_u8): Remove.
30019         (__arm_vmulq_n_u8): Remove.
30020         (__arm_vmulq_s8): Remove.
30021         (__arm_vmulq_n_s8): Remove.
30022         (__arm_vmulq_u16): Remove.
30023         (__arm_vmulq_n_u16): Remove.
30024         (__arm_vmulq_s16): Remove.
30025         (__arm_vmulq_n_s16): Remove.
30026         (__arm_vmulq_u32): Remove.
30027         (__arm_vmulq_n_u32): Remove.
30028         (__arm_vmulq_s32): Remove.
30029         (__arm_vmulq_n_s32): Remove.
30030         (__arm_vmulq_m_n_s8): Remove.
30031         (__arm_vmulq_m_n_s32): Remove.
30032         (__arm_vmulq_m_n_s16): Remove.
30033         (__arm_vmulq_m_n_u8): Remove.
30034         (__arm_vmulq_m_n_u32): Remove.
30035         (__arm_vmulq_m_n_u16): Remove.
30036         (__arm_vmulq_m_s8): Remove.
30037         (__arm_vmulq_m_s32): Remove.
30038         (__arm_vmulq_m_s16): Remove.
30039         (__arm_vmulq_m_u8): Remove.
30040         (__arm_vmulq_m_u32): Remove.
30041         (__arm_vmulq_m_u16): Remove.
30042         (__arm_vmulq_x_s8): Remove.
30043         (__arm_vmulq_x_s16): Remove.
30044         (__arm_vmulq_x_s32): Remove.
30045         (__arm_vmulq_x_n_s8): Remove.
30046         (__arm_vmulq_x_n_s16): Remove.
30047         (__arm_vmulq_x_n_s32): Remove.
30048         (__arm_vmulq_x_u8): Remove.
30049         (__arm_vmulq_x_u16): Remove.
30050         (__arm_vmulq_x_u32): Remove.
30051         (__arm_vmulq_x_n_u8): Remove.
30052         (__arm_vmulq_x_n_u16): Remove.
30053         (__arm_vmulq_x_n_u32): Remove.
30054         (__arm_vmulq_n_f16): Remove.
30055         (__arm_vmulq_f16): Remove.
30056         (__arm_vmulq_n_f32): Remove.
30057         (__arm_vmulq_f32): Remove.
30058         (__arm_vmulq_m_f32): Remove.
30059         (__arm_vmulq_m_f16): Remove.
30060         (__arm_vmulq_m_n_f32): Remove.
30061         (__arm_vmulq_m_n_f16): Remove.
30062         (__arm_vmulq_x_f16): Remove.
30063         (__arm_vmulq_x_f32): Remove.
30064         (__arm_vmulq_x_n_f16): Remove.
30065         (__arm_vmulq_x_n_f32): Remove.
30066         (__arm_vmulq): Remove.
30067         (__arm_vmulq_m): Remove.
30068         (__arm_vmulq_x): Remove.
30069         (vsubq): Remove.
30070         (vsubq_m): Remove.
30071         (vsubq_x): Remove.
30072         (vsubq_n_f16): Remove.
30073         (vsubq_n_f32): Remove.
30074         (vsubq_u8): Remove.
30075         (vsubq_n_u8): Remove.
30076         (vsubq_s8): Remove.
30077         (vsubq_n_s8): Remove.
30078         (vsubq_u16): Remove.
30079         (vsubq_n_u16): Remove.
30080         (vsubq_s16): Remove.
30081         (vsubq_n_s16): Remove.
30082         (vsubq_u32): Remove.
30083         (vsubq_n_u32): Remove.
30084         (vsubq_s32): Remove.
30085         (vsubq_n_s32): Remove.
30086         (vsubq_f16): Remove.
30087         (vsubq_f32): Remove.
30088         (vsubq_m_s8): Remove.
30089         (vsubq_m_u8): Remove.
30090         (vsubq_m_s16): Remove.
30091         (vsubq_m_u16): Remove.
30092         (vsubq_m_s32): Remove.
30093         (vsubq_m_u32): Remove.
30094         (vsubq_m_n_s8): Remove.
30095         (vsubq_m_n_s32): Remove.
30096         (vsubq_m_n_s16): Remove.
30097         (vsubq_m_n_u8): Remove.
30098         (vsubq_m_n_u32): Remove.
30099         (vsubq_m_n_u16): Remove.
30100         (vsubq_m_f32): Remove.
30101         (vsubq_m_f16): Remove.
30102         (vsubq_m_n_f32): Remove.
30103         (vsubq_m_n_f16): Remove.
30104         (vsubq_x_s8): Remove.
30105         (vsubq_x_s16): Remove.
30106         (vsubq_x_s32): Remove.
30107         (vsubq_x_n_s8): Remove.
30108         (vsubq_x_n_s16): Remove.
30109         (vsubq_x_n_s32): Remove.
30110         (vsubq_x_u8): Remove.
30111         (vsubq_x_u16): Remove.
30112         (vsubq_x_u32): Remove.
30113         (vsubq_x_n_u8): Remove.
30114         (vsubq_x_n_u16): Remove.
30115         (vsubq_x_n_u32): Remove.
30116         (vsubq_x_f16): Remove.
30117         (vsubq_x_f32): Remove.
30118         (vsubq_x_n_f16): Remove.
30119         (vsubq_x_n_f32): Remove.
30120         (__arm_vsubq_u8): Remove.
30121         (__arm_vsubq_n_u8): Remove.
30122         (__arm_vsubq_s8): Remove.
30123         (__arm_vsubq_n_s8): Remove.
30124         (__arm_vsubq_u16): Remove.
30125         (__arm_vsubq_n_u16): Remove.
30126         (__arm_vsubq_s16): Remove.
30127         (__arm_vsubq_n_s16): Remove.
30128         (__arm_vsubq_u32): Remove.
30129         (__arm_vsubq_n_u32): Remove.
30130         (__arm_vsubq_s32): Remove.
30131         (__arm_vsubq_n_s32): Remove.
30132         (__arm_vsubq_m_s8): Remove.
30133         (__arm_vsubq_m_u8): Remove.
30134         (__arm_vsubq_m_s16): Remove.
30135         (__arm_vsubq_m_u16): Remove.
30136         (__arm_vsubq_m_s32): Remove.
30137         (__arm_vsubq_m_u32): Remove.
30138         (__arm_vsubq_m_n_s8): Remove.
30139         (__arm_vsubq_m_n_s32): Remove.
30140         (__arm_vsubq_m_n_s16): Remove.
30141         (__arm_vsubq_m_n_u8): Remove.
30142         (__arm_vsubq_m_n_u32): Remove.
30143         (__arm_vsubq_m_n_u16): Remove.
30144         (__arm_vsubq_x_s8): Remove.
30145         (__arm_vsubq_x_s16): Remove.
30146         (__arm_vsubq_x_s32): Remove.
30147         (__arm_vsubq_x_n_s8): Remove.
30148         (__arm_vsubq_x_n_s16): Remove.
30149         (__arm_vsubq_x_n_s32): Remove.
30150         (__arm_vsubq_x_u8): Remove.
30151         (__arm_vsubq_x_u16): Remove.
30152         (__arm_vsubq_x_u32): Remove.
30153         (__arm_vsubq_x_n_u8): Remove.
30154         (__arm_vsubq_x_n_u16): Remove.
30155         (__arm_vsubq_x_n_u32): Remove.
30156         (__arm_vsubq_n_f16): Remove.
30157         (__arm_vsubq_n_f32): Remove.
30158         (__arm_vsubq_f16): Remove.
30159         (__arm_vsubq_f32): Remove.
30160         (__arm_vsubq_m_f32): Remove.
30161         (__arm_vsubq_m_f16): Remove.
30162         (__arm_vsubq_m_n_f32): Remove.
30163         (__arm_vsubq_m_n_f16): Remove.
30164         (__arm_vsubq_x_f16): Remove.
30165         (__arm_vsubq_x_f32): Remove.
30166         (__arm_vsubq_x_n_f16): Remove.
30167         (__arm_vsubq_x_n_f32): Remove.
30168         (__arm_vsubq): Remove.
30169         (__arm_vsubq_m): Remove.
30170         (__arm_vsubq_x): Remove.
30171         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
30172         Remove.
30173         (vmulq_u, vmulq_s, vmulq_f): Remove.
30174         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
30175         (mve_vmulq_<supf><mode>): Remove.
30177 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
30179         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
30180         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
30181         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
30182         iterators.
30183         * config/arm/mve.md
30184         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
30185         Factorize into ...
30186         (@mve_<mve_insn>q_n_f<mode>): ... this.
30187         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
30188         (mve_vsubq_n_<supf><mode>): Factorize into ...
30189         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
30190         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
30191         into ...
30192         (mve_<mve_addsubmul>q<mode>): ... this.
30193         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
30194         Factorize into ...
30195         (mve_<mve_addsubmul>q_f<mode>): ... this.
30196         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
30197         (mve_vsubq_m_<supf><mode>): Factorize into ...
30198         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
30199         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
30200         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
30201         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
30202         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
30203         Factorize into ...
30204         (@mve_<mve_insn>q_m_f<mode>): ... this.
30205         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
30206         (mve_vsubq_m_n_f<mode>): Factorize into ...
30207         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
30209 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
30211         * config/arm/arm-mve-builtins-functions.h (class
30212         unspec_based_mve_function_base): New.
30213         (class unspec_based_mve_function_exact_insn): New.
30215 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
30217         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
30218         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
30220 2023-05-03  Murray Steele  <murray.steele@arm.com>
30221             Christophe Lyon  <christophe.lyon@arm.com>
30223         * config/arm/arm-mve-builtins-base.cc (class
30224         vuninitializedq_impl): New.
30225         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
30226         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
30227         declaration.
30228         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
30229         * config/arm/arm-mve-builtins-shapes.h (inherent): New
30230         declaration.
30231         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
30232         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
30233         (__arm_vuninitializedq_u8): Remove.
30234         (__arm_vuninitializedq_u16): Remove.
30235         (__arm_vuninitializedq_u32): Remove.
30236         (__arm_vuninitializedq_u64): Remove.
30237         (__arm_vuninitializedq_s8): Remove.
30238         (__arm_vuninitializedq_s16): Remove.
30239         (__arm_vuninitializedq_s32): Remove.
30240         (__arm_vuninitializedq_s64): Remove.
30241         (__arm_vuninitializedq_f16): Remove.
30242         (__arm_vuninitializedq_f32): Remove.
30244 2023-05-03  Murray Steele  <murray.steele@arm.com>
30245             Christophe Lyon  <christophe.lyon@arm.com>
30247         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
30248         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
30249         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
30250         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
30251         (parse_type): Likewise.
30252         (parse_signature): Likewise.
30253         (build_one): Likewise.
30254         (build_all): Likewise.
30255         (overloaded_base): New struct.
30256         (unary_convert_def): Likewise.
30257         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
30258         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
30259         macro.
30260         (TYPES_reinterpret_unsigned1): Likewise.
30261         (TYPES_reinterpret_integer): Likewise.
30262         (TYPES_reinterpret_integer1): Likewise.
30263         (TYPES_reinterpret_float1): Likewise.
30264         (TYPES_reinterpret_float): Likewise.
30265         (reinterpret_integer): New.
30266         (reinterpret_float): New.
30267         (handle_arm_mve_h): Register builtins.
30268         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
30269         (vreinterpretq_s32): Likewise.
30270         (vreinterpretq_s64): Likewise.
30271         (vreinterpretq_s8): Likewise.
30272         (vreinterpretq_u16): Likewise.
30273         (vreinterpretq_u32): Likewise.
30274         (vreinterpretq_u64): Likewise.
30275         (vreinterpretq_u8): Likewise.
30276         (vreinterpretq_f16): Likewise.
30277         (vreinterpretq_f32): Likewise.
30278         (vreinterpretq_s16_s32): Likewise.
30279         (vreinterpretq_s16_s64): Likewise.
30280         (vreinterpretq_s16_s8): Likewise.
30281         (vreinterpretq_s16_u16): Likewise.
30282         (vreinterpretq_s16_u32): Likewise.
30283         (vreinterpretq_s16_u64): Likewise.
30284         (vreinterpretq_s16_u8): Likewise.
30285         (vreinterpretq_s32_s16): Likewise.
30286         (vreinterpretq_s32_s64): Likewise.
30287         (vreinterpretq_s32_s8): Likewise.
30288         (vreinterpretq_s32_u16): Likewise.
30289         (vreinterpretq_s32_u32): Likewise.
30290         (vreinterpretq_s32_u64): Likewise.
30291         (vreinterpretq_s32_u8): Likewise.
30292         (vreinterpretq_s64_s16): Likewise.
30293         (vreinterpretq_s64_s32): Likewise.
30294         (vreinterpretq_s64_s8): Likewise.
30295         (vreinterpretq_s64_u16): Likewise.
30296         (vreinterpretq_s64_u32): Likewise.
30297         (vreinterpretq_s64_u64): Likewise.
30298         (vreinterpretq_s64_u8): Likewise.
30299         (vreinterpretq_s8_s16): Likewise.
30300         (vreinterpretq_s8_s32): Likewise.
30301         (vreinterpretq_s8_s64): Likewise.
30302         (vreinterpretq_s8_u16): Likewise.
30303         (vreinterpretq_s8_u32): Likewise.
30304         (vreinterpretq_s8_u64): Likewise.
30305         (vreinterpretq_s8_u8): Likewise.
30306         (vreinterpretq_u16_s16): Likewise.
30307         (vreinterpretq_u16_s32): Likewise.
30308         (vreinterpretq_u16_s64): Likewise.
30309         (vreinterpretq_u16_s8): Likewise.
30310         (vreinterpretq_u16_u32): Likewise.
30311         (vreinterpretq_u16_u64): Likewise.
30312         (vreinterpretq_u16_u8): Likewise.
30313         (vreinterpretq_u32_s16): Likewise.
30314         (vreinterpretq_u32_s32): Likewise.
30315         (vreinterpretq_u32_s64): Likewise.
30316         (vreinterpretq_u32_s8): Likewise.
30317         (vreinterpretq_u32_u16): Likewise.
30318         (vreinterpretq_u32_u64): Likewise.
30319         (vreinterpretq_u32_u8): Likewise.
30320         (vreinterpretq_u64_s16): Likewise.
30321         (vreinterpretq_u64_s32): Likewise.
30322         (vreinterpretq_u64_s64): Likewise.
30323         (vreinterpretq_u64_s8): Likewise.
30324         (vreinterpretq_u64_u16): Likewise.
30325         (vreinterpretq_u64_u32): Likewise.
30326         (vreinterpretq_u64_u8): Likewise.
30327         (vreinterpretq_u8_s16): Likewise.
30328         (vreinterpretq_u8_s32): Likewise.
30329         (vreinterpretq_u8_s64): Likewise.
30330         (vreinterpretq_u8_s8): Likewise.
30331         (vreinterpretq_u8_u16): Likewise.
30332         (vreinterpretq_u8_u32): Likewise.
30333         (vreinterpretq_u8_u64): Likewise.
30334         (vreinterpretq_s32_f16): Likewise.
30335         (vreinterpretq_s32_f32): Likewise.
30336         (vreinterpretq_u16_f16): Likewise.
30337         (vreinterpretq_u16_f32): Likewise.
30338         (vreinterpretq_u32_f16): Likewise.
30339         (vreinterpretq_u32_f32): Likewise.
30340         (vreinterpretq_u64_f16): Likewise.
30341         (vreinterpretq_u64_f32): Likewise.
30342         (vreinterpretq_u8_f16): Likewise.
30343         (vreinterpretq_u8_f32): Likewise.
30344         (vreinterpretq_f16_f32): Likewise.
30345         (vreinterpretq_f16_s16): Likewise.
30346         (vreinterpretq_f16_s32): Likewise.
30347         (vreinterpretq_f16_s64): Likewise.
30348         (vreinterpretq_f16_s8): Likewise.
30349         (vreinterpretq_f16_u16): Likewise.
30350         (vreinterpretq_f16_u32): Likewise.
30351         (vreinterpretq_f16_u64): Likewise.
30352         (vreinterpretq_f16_u8): Likewise.
30353         (vreinterpretq_f32_f16): Likewise.
30354         (vreinterpretq_f32_s16): Likewise.
30355         (vreinterpretq_f32_s32): Likewise.
30356         (vreinterpretq_f32_s64): Likewise.
30357         (vreinterpretq_f32_s8): Likewise.
30358         (vreinterpretq_f32_u16): Likewise.
30359         (vreinterpretq_f32_u32): Likewise.
30360         (vreinterpretq_f32_u64): Likewise.
30361         (vreinterpretq_f32_u8): Likewise.
30362         (vreinterpretq_s16_f16): Likewise.
30363         (vreinterpretq_s16_f32): Likewise.
30364         (vreinterpretq_s64_f16): Likewise.
30365         (vreinterpretq_s64_f32): Likewise.
30366         (vreinterpretq_s8_f16): Likewise.
30367         (vreinterpretq_s8_f32): Likewise.
30368         (__arm_vreinterpretq_f16): Likewise.
30369         (__arm_vreinterpretq_f32): Likewise.
30370         (__arm_vreinterpretq_s16): Likewise.
30371         (__arm_vreinterpretq_s32): Likewise.
30372         (__arm_vreinterpretq_s64): Likewise.
30373         (__arm_vreinterpretq_s8): Likewise.
30374         (__arm_vreinterpretq_u16): Likewise.
30375         (__arm_vreinterpretq_u32): Likewise.
30376         (__arm_vreinterpretq_u64): Likewise.
30377         (__arm_vreinterpretq_u8): Likewise.
30378         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
30379         (__arm_vreinterpretq_s16_s64): Likewise.
30380         (__arm_vreinterpretq_s16_s8): Likewise.
30381         (__arm_vreinterpretq_s16_u16): Likewise.
30382         (__arm_vreinterpretq_s16_u32): Likewise.
30383         (__arm_vreinterpretq_s16_u64): Likewise.
30384         (__arm_vreinterpretq_s16_u8): Likewise.
30385         (__arm_vreinterpretq_s32_s16): Likewise.
30386         (__arm_vreinterpretq_s32_s64): Likewise.
30387         (__arm_vreinterpretq_s32_s8): Likewise.
30388         (__arm_vreinterpretq_s32_u16): Likewise.
30389         (__arm_vreinterpretq_s32_u32): Likewise.
30390         (__arm_vreinterpretq_s32_u64): Likewise.
30391         (__arm_vreinterpretq_s32_u8): Likewise.
30392         (__arm_vreinterpretq_s64_s16): Likewise.
30393         (__arm_vreinterpretq_s64_s32): Likewise.
30394         (__arm_vreinterpretq_s64_s8): Likewise.
30395         (__arm_vreinterpretq_s64_u16): Likewise.
30396         (__arm_vreinterpretq_s64_u32): Likewise.
30397         (__arm_vreinterpretq_s64_u64): Likewise.
30398         (__arm_vreinterpretq_s64_u8): Likewise.
30399         (__arm_vreinterpretq_s8_s16): Likewise.
30400         (__arm_vreinterpretq_s8_s32): Likewise.
30401         (__arm_vreinterpretq_s8_s64): Likewise.
30402         (__arm_vreinterpretq_s8_u16): Likewise.
30403         (__arm_vreinterpretq_s8_u32): Likewise.
30404         (__arm_vreinterpretq_s8_u64): Likewise.
30405         (__arm_vreinterpretq_s8_u8): Likewise.
30406         (__arm_vreinterpretq_u16_s16): Likewise.
30407         (__arm_vreinterpretq_u16_s32): Likewise.
30408         (__arm_vreinterpretq_u16_s64): Likewise.
30409         (__arm_vreinterpretq_u16_s8): Likewise.
30410         (__arm_vreinterpretq_u16_u32): Likewise.
30411         (__arm_vreinterpretq_u16_u64): Likewise.
30412         (__arm_vreinterpretq_u16_u8): Likewise.
30413         (__arm_vreinterpretq_u32_s16): Likewise.
30414         (__arm_vreinterpretq_u32_s32): Likewise.
30415         (__arm_vreinterpretq_u32_s64): Likewise.
30416         (__arm_vreinterpretq_u32_s8): Likewise.
30417         (__arm_vreinterpretq_u32_u16): Likewise.
30418         (__arm_vreinterpretq_u32_u64): Likewise.
30419         (__arm_vreinterpretq_u32_u8): Likewise.
30420         (__arm_vreinterpretq_u64_s16): Likewise.
30421         (__arm_vreinterpretq_u64_s32): Likewise.
30422         (__arm_vreinterpretq_u64_s64): Likewise.
30423         (__arm_vreinterpretq_u64_s8): Likewise.
30424         (__arm_vreinterpretq_u64_u16): Likewise.
30425         (__arm_vreinterpretq_u64_u32): Likewise.
30426         (__arm_vreinterpretq_u64_u8): Likewise.
30427         (__arm_vreinterpretq_u8_s16): Likewise.
30428         (__arm_vreinterpretq_u8_s32): Likewise.
30429         (__arm_vreinterpretq_u8_s64): Likewise.
30430         (__arm_vreinterpretq_u8_s8): Likewise.
30431         (__arm_vreinterpretq_u8_u16): Likewise.
30432         (__arm_vreinterpretq_u8_u32): Likewise.
30433         (__arm_vreinterpretq_u8_u64): Likewise.
30434         (__arm_vreinterpretq_s32_f16): Likewise.
30435         (__arm_vreinterpretq_s32_f32): Likewise.
30436         (__arm_vreinterpretq_s16_f16): Likewise.
30437         (__arm_vreinterpretq_s16_f32): Likewise.
30438         (__arm_vreinterpretq_s64_f16): Likewise.
30439         (__arm_vreinterpretq_s64_f32): Likewise.
30440         (__arm_vreinterpretq_s8_f16): Likewise.
30441         (__arm_vreinterpretq_s8_f32): Likewise.
30442         (__arm_vreinterpretq_u16_f16): Likewise.
30443         (__arm_vreinterpretq_u16_f32): Likewise.
30444         (__arm_vreinterpretq_u32_f16): Likewise.
30445         (__arm_vreinterpretq_u32_f32): Likewise.
30446         (__arm_vreinterpretq_u64_f16): Likewise.
30447         (__arm_vreinterpretq_u64_f32): Likewise.
30448         (__arm_vreinterpretq_u8_f16): Likewise.
30449         (__arm_vreinterpretq_u8_f32): Likewise.
30450         (__arm_vreinterpretq_f16_f32): Likewise.
30451         (__arm_vreinterpretq_f16_s16): Likewise.
30452         (__arm_vreinterpretq_f16_s32): Likewise.
30453         (__arm_vreinterpretq_f16_s64): Likewise.
30454         (__arm_vreinterpretq_f16_s8): Likewise.
30455         (__arm_vreinterpretq_f16_u16): Likewise.
30456         (__arm_vreinterpretq_f16_u32): Likewise.
30457         (__arm_vreinterpretq_f16_u64): Likewise.
30458         (__arm_vreinterpretq_f16_u8): Likewise.
30459         (__arm_vreinterpretq_f32_f16): Likewise.
30460         (__arm_vreinterpretq_f32_s16): Likewise.
30461         (__arm_vreinterpretq_f32_s32): Likewise.
30462         (__arm_vreinterpretq_f32_s64): Likewise.
30463         (__arm_vreinterpretq_f32_s8): Likewise.
30464         (__arm_vreinterpretq_f32_u16): Likewise.
30465         (__arm_vreinterpretq_f32_u32): Likewise.
30466         (__arm_vreinterpretq_f32_u64): Likewise.
30467         (__arm_vreinterpretq_f32_u8): Likewise.
30468         (__arm_vreinterpretq_s16): Likewise.
30469         (__arm_vreinterpretq_s32): Likewise.
30470         (__arm_vreinterpretq_s64): Likewise.
30471         (__arm_vreinterpretq_s8): Likewise.
30472         (__arm_vreinterpretq_u16): Likewise.
30473         (__arm_vreinterpretq_u32): Likewise.
30474         (__arm_vreinterpretq_u64): Likewise.
30475         (__arm_vreinterpretq_u8): Likewise.
30476         (__arm_vreinterpretq_f16): Likewise.
30477         (__arm_vreinterpretq_f32): Likewise.
30478         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
30479         * config/arm/unspecs.md: (REINTERPRET): New unspec.
30481 2023-05-03  Murray Steele  <murray.steele@arm.com>
30482             Christophe Lyon  <christophe.lyon@arm.com>
30483             Christophe Lyon   <christophe.lyon@arm.com
30485         * config.gcc: Add arm-mve-builtins-base.o and
30486         arm-mve-builtins-shapes.o to extra_objs.
30487         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
30488         numberspace.
30489         (arm_expand_builtin): Likewise
30490         (arm_check_builtin_call): Likewise
30491         (arm_describe_resolver): Likewise.
30492         * config/arm/arm-builtins.h (enum resolver_ident): Add
30493         arm_mve_resolver.
30494         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
30495         (arm_resolve_overloaded_builtin): Handle MVE builtins.
30496         (arm_register_target_pragmas): Register arm_check_builtin_call.
30497         * config/arm/arm-mve-builtins.cc (class registered_function): New
30498         class.
30499         (struct registered_function_hasher): New struct.
30500         (pred_suffixes): New table.
30501         (mode_suffixes): New table.
30502         (type_suffix_info): New table.
30503         (TYPES_float16): New.
30504         (TYPES_all_float): New.
30505         (TYPES_integer_8): New.
30506         (TYPES_integer_8_16): New.
30507         (TYPES_integer_16_32): New.
30508         (TYPES_integer_32): New.
30509         (TYPES_signed_16_32): New.
30510         (TYPES_signed_32): New.
30511         (TYPES_all_signed): New.
30512         (TYPES_all_unsigned): New.
30513         (TYPES_all_integer): New.
30514         (TYPES_all_integer_with_64): New.
30515         (DEF_VECTOR_TYPE): New.
30516         (DEF_DOUBLE_TYPE): New.
30517         (DEF_MVE_TYPES_ARRAY): New.
30518         (all_integer): New.
30519         (all_integer_with_64): New.
30520         (float16): New.
30521         (all_float): New.
30522         (all_signed): New.
30523         (all_unsigned): New.
30524         (integer_8): New.
30525         (integer_8_16): New.
30526         (integer_16_32): New.
30527         (integer_32): New.
30528         (signed_16_32): New.
30529         (signed_32): New.
30530         (register_vector_type): Use void_type_node for mve.fp-only types when
30531         mve.fp is not enabled.
30532         (register_builtin_tuple_types): Likewise.
30533         (handle_arm_mve_h): New function..
30534         (matches_type_p): Likewise..
30535         (report_out_of_range): Likewise.
30536         (report_not_enum): Likewise.
30537         (report_missing_float): Likewise.
30538         (report_non_ice): Likewise.
30539         (check_requires_float): Likewise.
30540         (function_instance::hash): Likewise
30541         (function_instance::call_properties): Likewise.
30542         (function_instance::reads_global_state_p): Likewise.
30543         (function_instance::modifies_global_state_p): Likewise.
30544         (function_instance::could_trap_p): Likewise.
30545         (function_instance::has_inactive_argument): Likewise.
30546         (registered_function_hasher::hash): Likewise.
30547         (registered_function_hasher::equal): Likewise.
30548         (function_builder::function_builder): Likewise.
30549         (function_builder::~function_builder): Likewise.
30550         (function_builder::append_name): Likewise.
30551         (function_builder::finish_name): Likewise.
30552         (function_builder::get_name): Likewise.
30553         (add_attribute): Likewise.
30554         (function_builder::get_attributes): Likewise.
30555         (function_builder::add_function): Likewise.
30556         (function_builder::add_unique_function): Likewise.
30557         (function_builder::add_overloaded_function): Likewise.
30558         (function_builder::add_overloaded_functions): Likewise.
30559         (function_builder::register_function_group): Likewise.
30560         (function_call_info::function_call_info): Likewise.
30561         (function_resolver::function_resolver): Likewise.
30562         (function_resolver::get_vector_type): Likewise.
30563         (function_resolver::get_scalar_type_name): Likewise.
30564         (function_resolver::get_argument_type): Likewise.
30565         (function_resolver::scalar_argument_p): Likewise.
30566         (function_resolver::report_no_such_form): Likewise.
30567         (function_resolver::lookup_form): Likewise.
30568         (function_resolver::resolve_to): Likewise.
30569         (function_resolver::infer_vector_or_tuple_type): Likewise.
30570         (function_resolver::infer_vector_type): Likewise.
30571         (function_resolver::require_vector_or_scalar_type): Likewise.
30572         (function_resolver::require_vector_type): Likewise.
30573         (function_resolver::require_matching_vector_type): Likewise.
30574         (function_resolver::require_derived_vector_type): Likewise.
30575         (function_resolver::require_derived_scalar_type): Likewise.
30576         (function_resolver::require_integer_immediate): Likewise.
30577         (function_resolver::require_scalar_type): Likewise.
30578         (function_resolver::check_num_arguments): Likewise.
30579         (function_resolver::check_gp_argument): Likewise.
30580         (function_resolver::finish_opt_n_resolution): Likewise.
30581         (function_resolver::resolve_unary): Likewise.
30582         (function_resolver::resolve_unary_n): Likewise.
30583         (function_resolver::resolve_uniform): Likewise.
30584         (function_resolver::resolve_uniform_opt_n): Likewise.
30585         (function_resolver::resolve): Likewise.
30586         (function_checker::function_checker): Likewise.
30587         (function_checker::argument_exists_p): Likewise.
30588         (function_checker::require_immediate): Likewise.
30589         (function_checker::require_immediate_enum): Likewise.
30590         (function_checker::require_immediate_range): Likewise.
30591         (function_checker::check): Likewise.
30592         (gimple_folder::gimple_folder): Likewise.
30593         (gimple_folder::fold): Likewise.
30594         (function_expander::function_expander): Likewise.
30595         (function_expander::direct_optab_handler): Likewise.
30596         (function_expander::get_fallback_value): Likewise.
30597         (function_expander::get_reg_target): Likewise.
30598         (function_expander::add_output_operand): Likewise.
30599         (function_expander::add_input_operand): Likewise.
30600         (function_expander::add_integer_operand): Likewise.
30601         (function_expander::generate_insn): Likewise.
30602         (function_expander::use_exact_insn): Likewise.
30603         (function_expander::use_unpred_insn): Likewise.
30604         (function_expander::use_pred_x_insn): Likewise.
30605         (function_expander::use_cond_insn): Likewise.
30606         (function_expander::map_to_rtx_codes): Likewise.
30607         (function_expander::expand): Likewise.
30608         (resolve_overloaded_builtin): Likewise.
30609         (check_builtin_call): Likewise.
30610         (gimple_fold_builtin): Likewise.
30611         (expand_builtin): Likewise.
30612         (gt_ggc_mx): Likewise.
30613         (gt_pch_nx): Likewise.
30614         (gt_pch_nx): Likewise.
30615         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
30616         (s16): Likewise.
30617         (s32): Likewise.
30618         (s64): Likewise.
30619         (u8): Likewise.
30620         (u16): Likewise.
30621         (u32): Likewise.
30622         (u64): Likewise.
30623         (f16): Likewise.
30624         (f32): Likewise.
30625         (n): New mode.
30626         (offset): New mode.
30627         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
30628         (CP_READ_FPCR): Likewise.
30629         (CP_RAISE_FP_EXCEPTIONS): Likewise.
30630         (CP_READ_MEMORY): Likewise.
30631         (CP_WRITE_MEMORY): Likewise.
30632         (enum units_index): New enum.
30633         (enum predication_index): New.
30634         (enum type_class_index): New.
30635         (enum mode_suffix_index): New enum.
30636         (enum type_suffix_index): New.
30637         (struct mode_suffix_info): New struct.
30638         (struct type_suffix_info): New.
30639         (struct function_group_info): Likewise.
30640         (class function_instance): Likewise.
30641         (class registered_function): Likewise.
30642         (class function_builder): Likewise.
30643         (class function_call_info): Likewise.
30644         (class function_resolver): Likewise.
30645         (class function_checker): Likewise.
30646         (class gimple_folder): Likewise.
30647         (class function_expander): Likewise.
30648         (get_mve_pred16_t): Likewise.
30649         (find_mode_suffix): New function.
30650         (class function_base): Likewise.
30651         (class function_shape): Likewise.
30652         (function_instance::operator==): New function.
30653         (function_instance::operator!=): Likewise.
30654         (function_instance::vectors_per_tuple): Likewise.
30655         (function_instance::mode_suffix): Likewise.
30656         (function_instance::type_suffix): Likewise.
30657         (function_instance::scalar_type): Likewise.
30658         (function_instance::vector_type): Likewise.
30659         (function_instance::tuple_type): Likewise.
30660         (function_instance::vector_mode): Likewise.
30661         (function_call_info::function_returns_void_p): Likewise.
30662         (function_base::call_properties): Likewise.
30663         * config/arm/arm-protos.h (enum arm_builtin_class): Add
30664         ARM_BUILTIN_MVE.
30665         (handle_arm_mve_h): New.
30666         (resolve_overloaded_builtin): New.
30667         (check_builtin_call): New.
30668         (gimple_fold_builtin): New.
30669         (expand_builtin): New.
30670         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
30671         arm_gimple_fold_builtin.
30672         (arm_gimple_fold_builtin): New function.
30673         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
30674         * config/arm/predicates.md (arm_any_register_operand): New predicate.
30675         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
30676         (arm-mve-builtins-shapes.o): New target.
30677         (arm-mve-builtins-base.o): New target.
30678         * config/arm/arm-mve-builtins-base.cc: New file.
30679         * config/arm/arm-mve-builtins-base.def: New file.
30680         * config/arm/arm-mve-builtins-base.h: New file.
30681         * config/arm/arm-mve-builtins-functions.h: New file.
30682         * config/arm/arm-mve-builtins-shapes.cc: New file.
30683         * config/arm/arm-mve-builtins-shapes.h: New file.
30685 2023-05-03  Murray Steele  <murray.steele@arm.com>
30686             Christophe Lyon  <christophe.lyon@arm.com>
30687             Christophe Lyon   <christophe.lyon@arm.com>
30689         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
30690         New function.
30691         (arm_init_builtin): Use arm_general_add_builtin_function instead
30692         of arm_add_builtin_function.
30693         (arm_init_acle_builtins): Likewise.
30694         (arm_init_mve_builtins): Likewise.
30695         (arm_init_crypto_builtins): Likewise.
30696         (arm_init_builtins): Likewise.
30697         (arm_general_builtin_decl): New function.
30698         (arm_builtin_decl): Defer to numberspace-specialized functions.
30699         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
30700         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
30701         (arm_general_expand_builtin_1): ... specialize for general builtins.
30702         (arm_expand_acle_builtin): Use arm_general_expand_builtin
30703         instead of arm_expand_builtin.
30704         (arm_expand_mve_builtin): Likewise.
30705         (arm_expand_neon_builtin): Likewise.
30706         (arm_expand_vfp_builtin): Likewise.
30707         (arm_general_expand_builtin): New function.
30708         (arm_expand_builtin): Specialize for general builtins.
30709         (arm_general_check_builtin_call): New function.
30710         (arm_check_builtin_call): Specialize for general builtins.
30711         (arm_describe_resolver): Validate numberspace.
30712         (arm_cde_end_args): Likewise.
30713         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
30714         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
30716 2023-05-03  Martin Liska  <mliska@suse.cz>
30718         PR target/109713
30719         * config/riscv/sync.md: Add gcc_unreachable to a switch.
30721 2023-05-03  Richard Biener  <rguenther@suse.de>
30723         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
30724         (patch_loop_exit): Likewise.
30725         (connect_loops): Likewise.
30726         (split_loop): Likewise.
30727         (control_dep_semi_invariant_p): Likewise.
30728         (do_split_loop_on_cond): Likewise.
30729         (split_loop_on_cond): Likewise.
30730         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
30731         Likewise.
30732         (simplify_loop_version): Likewise.
30733         (evaluate_bbs): Likewise.
30734         (find_loop_guard): Likewise.
30735         (clean_up_after_unswitching): Likewise.
30736         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
30737         Likewise.
30738         (optimize_spaceship): Take a gcond * argument, avoid
30739         last_stmt.
30740         (math_opts_dom_walker::after_dom_children): Adjust call to
30741         optimize_spaceship.
30742         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
30743         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
30744         Likewise.
30746 2023-05-03  Andreas Schwab  <schwab@suse.de>
30748         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
30750 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30752         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
30753         New function.
30754         (class vlseg): New class.
30755         (class vsseg): Ditto.
30756         (class vlsseg): Ditto.
30757         (class vssseg): Ditto.
30758         (class seg_indexed_load): Ditto.
30759         (class seg_indexed_store): Ditto.
30760         (class vlsegff): Ditto.
30761         (BASE): Ditto.
30762         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30763         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
30764         Ditto.
30765         (vsseg): Ditto.
30766         (vlsseg): Ditto.
30767         (vssseg): Ditto.
30768         (vluxseg): Ditto.
30769         (vloxseg): Ditto.
30770         (vsuxseg): Ditto.
30771         (vsoxseg): Ditto.
30772         (vlsegff): Ditto.
30773         * config/riscv/riscv-vector-builtins-shapes.cc (struct
30774         seg_loadstore_def): Ditto.
30775         (struct seg_indexed_loadstore_def): Ditto.
30776         (struct seg_fault_load_def): Ditto.
30777         (SHAPE): Ditto.
30778         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
30779         * config/riscv/riscv-vector-builtins.cc
30780         (function_builder::append_nf): New function.
30781         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
30782         Change ptr from double into float.
30783         (vfloat32m1x3_t): Ditto.
30784         (vfloat32m1x4_t): Ditto.
30785         (vfloat32m1x5_t): Ditto.
30786         (vfloat32m1x6_t): Ditto.
30787         (vfloat32m1x7_t): Ditto.
30788         (vfloat32m1x8_t): Ditto.
30789         (vfloat32m2x2_t): Ditto.
30790         (vfloat32m2x3_t): Ditto.
30791         (vfloat32m2x4_t): Ditto.
30792         (vfloat32m4x2_t): Ditto.
30793         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
30794         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
30795         segment ff load.
30796         * config/riscv/riscv.md: Add segment instructions.
30797         * config/riscv/vector-iterators.md: Support segment intrinsics.
30798         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
30799         pattern.
30800         (@pred_unit_strided_store<mode>): Ditto.
30801         (@pred_strided_load<mode>): Ditto.
30802         (@pred_strided_store<mode>): Ditto.
30803         (@pred_fault_load<mode>): Ditto.
30804         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
30805         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
30806         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
30807         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
30808         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
30809         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
30810         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
30811         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
30812         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
30813         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
30814         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
30815         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
30816         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
30817         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
30819 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30821         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
30822         tuple type support.
30823         (inttype): Ditto.
30824         (floattype): Ditto.
30825         (main): Ditto.
30826         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
30827         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
30828         tuple type vset.
30829         (vget): Add tuple type vget.
30830         * config/riscv/riscv-vector-builtins-types.def
30831         (DEF_RVV_TUPLE_OPS): New macro.
30832         (vint8mf8x2_t): Ditto.
30833         (vuint8mf8x2_t): Ditto.
30834         (vint8mf8x3_t): Ditto.
30835         (vuint8mf8x3_t): Ditto.
30836         (vint8mf8x4_t): Ditto.
30837         (vuint8mf8x4_t): Ditto.
30838         (vint8mf8x5_t): Ditto.
30839         (vuint8mf8x5_t): Ditto.
30840         (vint8mf8x6_t): Ditto.
30841         (vuint8mf8x6_t): Ditto.
30842         (vint8mf8x7_t): Ditto.
30843         (vuint8mf8x7_t): Ditto.
30844         (vint8mf8x8_t): Ditto.
30845         (vuint8mf8x8_t): Ditto.
30846         (vint8mf4x2_t): Ditto.
30847         (vuint8mf4x2_t): Ditto.
30848         (vint8mf4x3_t): Ditto.
30849         (vuint8mf4x3_t): Ditto.
30850         (vint8mf4x4_t): Ditto.
30851         (vuint8mf4x4_t): Ditto.
30852         (vint8mf4x5_t): Ditto.
30853         (vuint8mf4x5_t): Ditto.
30854         (vint8mf4x6_t): Ditto.
30855         (vuint8mf4x6_t): Ditto.
30856         (vint8mf4x7_t): Ditto.
30857         (vuint8mf4x7_t): Ditto.
30858         (vint8mf4x8_t): Ditto.
30859         (vuint8mf4x8_t): Ditto.
30860         (vint8mf2x2_t): Ditto.
30861         (vuint8mf2x2_t): Ditto.
30862         (vint8mf2x3_t): Ditto.
30863         (vuint8mf2x3_t): Ditto.
30864         (vint8mf2x4_t): Ditto.
30865         (vuint8mf2x4_t): Ditto.
30866         (vint8mf2x5_t): Ditto.
30867         (vuint8mf2x5_t): Ditto.
30868         (vint8mf2x6_t): Ditto.
30869         (vuint8mf2x6_t): Ditto.
30870         (vint8mf2x7_t): Ditto.
30871         (vuint8mf2x7_t): Ditto.
30872         (vint8mf2x8_t): Ditto.
30873         (vuint8mf2x8_t): Ditto.
30874         (vint8m1x2_t): Ditto.
30875         (vuint8m1x2_t): Ditto.
30876         (vint8m1x3_t): Ditto.
30877         (vuint8m1x3_t): Ditto.
30878         (vint8m1x4_t): Ditto.
30879         (vuint8m1x4_t): Ditto.
30880         (vint8m1x5_t): Ditto.
30881         (vuint8m1x5_t): Ditto.
30882         (vint8m1x6_t): Ditto.
30883         (vuint8m1x6_t): Ditto.
30884         (vint8m1x7_t): Ditto.
30885         (vuint8m1x7_t): Ditto.
30886         (vint8m1x8_t): Ditto.
30887         (vuint8m1x8_t): Ditto.
30888         (vint8m2x2_t): Ditto.
30889         (vuint8m2x2_t): Ditto.
30890         (vint8m2x3_t): Ditto.
30891         (vuint8m2x3_t): Ditto.
30892         (vint8m2x4_t): Ditto.
30893         (vuint8m2x4_t): Ditto.
30894         (vint8m4x2_t): Ditto.
30895         (vuint8m4x2_t): Ditto.
30896         (vint16mf4x2_t): Ditto.
30897         (vuint16mf4x2_t): Ditto.
30898         (vint16mf4x3_t): Ditto.
30899         (vuint16mf4x3_t): Ditto.
30900         (vint16mf4x4_t): Ditto.
30901         (vuint16mf4x4_t): Ditto.
30902         (vint16mf4x5_t): Ditto.
30903         (vuint16mf4x5_t): Ditto.
30904         (vint16mf4x6_t): Ditto.
30905         (vuint16mf4x6_t): Ditto.
30906         (vint16mf4x7_t): Ditto.
30907         (vuint16mf4x7_t): Ditto.
30908         (vint16mf4x8_t): Ditto.
30909         (vuint16mf4x8_t): Ditto.
30910         (vint16mf2x2_t): Ditto.
30911         (vuint16mf2x2_t): Ditto.
30912         (vint16mf2x3_t): Ditto.
30913         (vuint16mf2x3_t): Ditto.
30914         (vint16mf2x4_t): Ditto.
30915         (vuint16mf2x4_t): Ditto.
30916         (vint16mf2x5_t): Ditto.
30917         (vuint16mf2x5_t): Ditto.
30918         (vint16mf2x6_t): Ditto.
30919         (vuint16mf2x6_t): Ditto.
30920         (vint16mf2x7_t): Ditto.
30921         (vuint16mf2x7_t): Ditto.
30922         (vint16mf2x8_t): Ditto.
30923         (vuint16mf2x8_t): Ditto.
30924         (vint16m1x2_t): Ditto.
30925         (vuint16m1x2_t): Ditto.
30926         (vint16m1x3_t): Ditto.
30927         (vuint16m1x3_t): Ditto.
30928         (vint16m1x4_t): Ditto.
30929         (vuint16m1x4_t): Ditto.
30930         (vint16m1x5_t): Ditto.
30931         (vuint16m1x5_t): Ditto.
30932         (vint16m1x6_t): Ditto.
30933         (vuint16m1x6_t): Ditto.
30934         (vint16m1x7_t): Ditto.
30935         (vuint16m1x7_t): Ditto.
30936         (vint16m1x8_t): Ditto.
30937         (vuint16m1x8_t): Ditto.
30938         (vint16m2x2_t): Ditto.
30939         (vuint16m2x2_t): Ditto.
30940         (vint16m2x3_t): Ditto.
30941         (vuint16m2x3_t): Ditto.
30942         (vint16m2x4_t): Ditto.
30943         (vuint16m2x4_t): Ditto.
30944         (vint16m4x2_t): Ditto.
30945         (vuint16m4x2_t): Ditto.
30946         (vint32mf2x2_t): Ditto.
30947         (vuint32mf2x2_t): Ditto.
30948         (vint32mf2x3_t): Ditto.
30949         (vuint32mf2x3_t): Ditto.
30950         (vint32mf2x4_t): Ditto.
30951         (vuint32mf2x4_t): Ditto.
30952         (vint32mf2x5_t): Ditto.
30953         (vuint32mf2x5_t): Ditto.
30954         (vint32mf2x6_t): Ditto.
30955         (vuint32mf2x6_t): Ditto.
30956         (vint32mf2x7_t): Ditto.
30957         (vuint32mf2x7_t): Ditto.
30958         (vint32mf2x8_t): Ditto.
30959         (vuint32mf2x8_t): Ditto.
30960         (vint32m1x2_t): Ditto.
30961         (vuint32m1x2_t): Ditto.
30962         (vint32m1x3_t): Ditto.
30963         (vuint32m1x3_t): Ditto.
30964         (vint32m1x4_t): Ditto.
30965         (vuint32m1x4_t): Ditto.
30966         (vint32m1x5_t): Ditto.
30967         (vuint32m1x5_t): Ditto.
30968         (vint32m1x6_t): Ditto.
30969         (vuint32m1x6_t): Ditto.
30970         (vint32m1x7_t): Ditto.
30971         (vuint32m1x7_t): Ditto.
30972         (vint32m1x8_t): Ditto.
30973         (vuint32m1x8_t): Ditto.
30974         (vint32m2x2_t): Ditto.
30975         (vuint32m2x2_t): Ditto.
30976         (vint32m2x3_t): Ditto.
30977         (vuint32m2x3_t): Ditto.
30978         (vint32m2x4_t): Ditto.
30979         (vuint32m2x4_t): Ditto.
30980         (vint32m4x2_t): Ditto.
30981         (vuint32m4x2_t): Ditto.
30982         (vint64m1x2_t): Ditto.
30983         (vuint64m1x2_t): Ditto.
30984         (vint64m1x3_t): Ditto.
30985         (vuint64m1x3_t): Ditto.
30986         (vint64m1x4_t): Ditto.
30987         (vuint64m1x4_t): Ditto.
30988         (vint64m1x5_t): Ditto.
30989         (vuint64m1x5_t): Ditto.
30990         (vint64m1x6_t): Ditto.
30991         (vuint64m1x6_t): Ditto.
30992         (vint64m1x7_t): Ditto.
30993         (vuint64m1x7_t): Ditto.
30994         (vint64m1x8_t): Ditto.
30995         (vuint64m1x8_t): Ditto.
30996         (vint64m2x2_t): Ditto.
30997         (vuint64m2x2_t): Ditto.
30998         (vint64m2x3_t): Ditto.
30999         (vuint64m2x3_t): Ditto.
31000         (vint64m2x4_t): Ditto.
31001         (vuint64m2x4_t): Ditto.
31002         (vint64m4x2_t): Ditto.
31003         (vuint64m4x2_t): Ditto.
31004         (vfloat32mf2x2_t): Ditto.
31005         (vfloat32mf2x3_t): Ditto.
31006         (vfloat32mf2x4_t): Ditto.
31007         (vfloat32mf2x5_t): Ditto.
31008         (vfloat32mf2x6_t): Ditto.
31009         (vfloat32mf2x7_t): Ditto.
31010         (vfloat32mf2x8_t): Ditto.
31011         (vfloat32m1x2_t): Ditto.
31012         (vfloat32m1x3_t): Ditto.
31013         (vfloat32m1x4_t): Ditto.
31014         (vfloat32m1x5_t): Ditto.
31015         (vfloat32m1x6_t): Ditto.
31016         (vfloat32m1x7_t): Ditto.
31017         (vfloat32m1x8_t): Ditto.
31018         (vfloat32m2x2_t): Ditto.
31019         (vfloat32m2x3_t): Ditto.
31020         (vfloat32m2x4_t): Ditto.
31021         (vfloat32m4x2_t): Ditto.
31022         (vfloat64m1x2_t): Ditto.
31023         (vfloat64m1x3_t): Ditto.
31024         (vfloat64m1x4_t): Ditto.
31025         (vfloat64m1x5_t): Ditto.
31026         (vfloat64m1x6_t): Ditto.
31027         (vfloat64m1x7_t): Ditto.
31028         (vfloat64m1x8_t): Ditto.
31029         (vfloat64m2x2_t): Ditto.
31030         (vfloat64m2x3_t): Ditto.
31031         (vfloat64m2x4_t): Ditto.
31032         (vfloat64m4x2_t): Ditto.
31033         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
31034         Ditto.
31035         (DEF_RVV_TYPE_INDEX): Ditto.
31036         (rvv_arg_type_info::get_tuple_subpart_type): New function.
31037         (DEF_RVV_TUPLE_TYPE): New macro.
31038         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
31039         Adapt for tuple vget/vset support.
31040         (vint8mf4_t): Ditto.
31041         (vuint8mf4_t): Ditto.
31042         (vint8mf2_t): Ditto.
31043         (vuint8mf2_t): Ditto.
31044         (vint8m1_t): Ditto.
31045         (vuint8m1_t): Ditto.
31046         (vint8m2_t): Ditto.
31047         (vuint8m2_t): Ditto.
31048         (vint8m4_t): Ditto.
31049         (vuint8m4_t): Ditto.
31050         (vint8m8_t): Ditto.
31051         (vuint8m8_t): Ditto.
31052         (vint16mf4_t): Ditto.
31053         (vuint16mf4_t): Ditto.
31054         (vint16mf2_t): Ditto.
31055         (vuint16mf2_t): Ditto.
31056         (vint16m1_t): Ditto.
31057         (vuint16m1_t): Ditto.
31058         (vint16m2_t): Ditto.
31059         (vuint16m2_t): Ditto.
31060         (vint16m4_t): Ditto.
31061         (vuint16m4_t): Ditto.
31062         (vint16m8_t): Ditto.
31063         (vuint16m8_t): Ditto.
31064         (vint32mf2_t): Ditto.
31065         (vuint32mf2_t): Ditto.
31066         (vint32m1_t): Ditto.
31067         (vuint32m1_t): Ditto.
31068         (vint32m2_t): Ditto.
31069         (vuint32m2_t): Ditto.
31070         (vint32m4_t): Ditto.
31071         (vuint32m4_t): Ditto.
31072         (vint32m8_t): Ditto.
31073         (vuint32m8_t): Ditto.
31074         (vint64m1_t): Ditto.
31075         (vuint64m1_t): Ditto.
31076         (vint64m2_t): Ditto.
31077         (vuint64m2_t): Ditto.
31078         (vint64m4_t): Ditto.
31079         (vuint64m4_t): Ditto.
31080         (vint64m8_t): Ditto.
31081         (vuint64m8_t): Ditto.
31082         (vfloat32mf2_t): Ditto.
31083         (vfloat32m1_t): Ditto.
31084         (vfloat32m2_t): Ditto.
31085         (vfloat32m4_t): Ditto.
31086         (vfloat32m8_t): Ditto.
31087         (vfloat64m1_t): Ditto.
31088         (vfloat64m2_t): Ditto.
31089         (vfloat64m4_t): Ditto.
31090         (vfloat64m8_t): Ditto.
31091         (tuple_subpart): Add tuple subpart base type.
31092         * config/riscv/riscv-vector-builtins.h (struct
31093         rvv_arg_type_info): Ditto.
31094         (tuple_type_field): New function.
31096 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31098         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
31099         (RVV_TUPLE_PARTIAL_MODES): Ditto.
31100         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
31101         function.
31102         (get_nf): Ditto.
31103         (get_subpart_mode): Ditto.
31104         (get_tuple_mode): Ditto.
31105         (expand_tuple_move): Ditto.
31106         * config/riscv/riscv-v.cc (ENTRY): New macro.
31107         (TUPLE_ENTRY): Ditto.
31108         (get_nf): New function.
31109         (get_subpart_mode): Ditto.
31110         (get_tuple_mode): Ditto.
31111         (expand_tuple_move): Ditto.
31112         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
31113         New macro.
31114         (register_tuple_type): New function
31115         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
31116         New macro.
31117         (vint8mf8x2_t): New macro.
31118         (vuint8mf8x2_t): Ditto.
31119         (vint8mf8x3_t): Ditto.
31120         (vuint8mf8x3_t): Ditto.
31121         (vint8mf8x4_t): Ditto.
31122         (vuint8mf8x4_t): Ditto.
31123         (vint8mf8x5_t): Ditto.
31124         (vuint8mf8x5_t): Ditto.
31125         (vint8mf8x6_t): Ditto.
31126         (vuint8mf8x6_t): Ditto.
31127         (vint8mf8x7_t): Ditto.
31128         (vuint8mf8x7_t): Ditto.
31129         (vint8mf8x8_t): Ditto.
31130         (vuint8mf8x8_t): Ditto.
31131         (vint8mf4x2_t): Ditto.
31132         (vuint8mf4x2_t): Ditto.
31133         (vint8mf4x3_t): Ditto.
31134         (vuint8mf4x3_t): Ditto.
31135         (vint8mf4x4_t): Ditto.
31136         (vuint8mf4x4_t): Ditto.
31137         (vint8mf4x5_t): Ditto.
31138         (vuint8mf4x5_t): Ditto.
31139         (vint8mf4x6_t): Ditto.
31140         (vuint8mf4x6_t): Ditto.
31141         (vint8mf4x7_t): Ditto.
31142         (vuint8mf4x7_t): Ditto.
31143         (vint8mf4x8_t): Ditto.
31144         (vuint8mf4x8_t): Ditto.
31145         (vint8mf2x2_t): Ditto.
31146         (vuint8mf2x2_t): Ditto.
31147         (vint8mf2x3_t): Ditto.
31148         (vuint8mf2x3_t): Ditto.
31149         (vint8mf2x4_t): Ditto.
31150         (vuint8mf2x4_t): Ditto.
31151         (vint8mf2x5_t): Ditto.
31152         (vuint8mf2x5_t): Ditto.
31153         (vint8mf2x6_t): Ditto.
31154         (vuint8mf2x6_t): Ditto.
31155         (vint8mf2x7_t): Ditto.
31156         (vuint8mf2x7_t): Ditto.
31157         (vint8mf2x8_t): Ditto.
31158         (vuint8mf2x8_t): Ditto.
31159         (vint8m1x2_t): Ditto.
31160         (vuint8m1x2_t): Ditto.
31161         (vint8m1x3_t): Ditto.
31162         (vuint8m1x3_t): Ditto.
31163         (vint8m1x4_t): Ditto.
31164         (vuint8m1x4_t): Ditto.
31165         (vint8m1x5_t): Ditto.
31166         (vuint8m1x5_t): Ditto.
31167         (vint8m1x6_t): Ditto.
31168         (vuint8m1x6_t): Ditto.
31169         (vint8m1x7_t): Ditto.
31170         (vuint8m1x7_t): Ditto.
31171         (vint8m1x8_t): Ditto.
31172         (vuint8m1x8_t): Ditto.
31173         (vint8m2x2_t): Ditto.
31174         (vuint8m2x2_t): Ditto.
31175         (vint8m2x3_t): Ditto.
31176         (vuint8m2x3_t): Ditto.
31177         (vint8m2x4_t): Ditto.
31178         (vuint8m2x4_t): Ditto.
31179         (vint8m4x2_t): Ditto.
31180         (vuint8m4x2_t): Ditto.
31181         (vint16mf4x2_t): Ditto.
31182         (vuint16mf4x2_t): Ditto.
31183         (vint16mf4x3_t): Ditto.
31184         (vuint16mf4x3_t): Ditto.
31185         (vint16mf4x4_t): Ditto.
31186         (vuint16mf4x4_t): Ditto.
31187         (vint16mf4x5_t): Ditto.
31188         (vuint16mf4x5_t): Ditto.
31189         (vint16mf4x6_t): Ditto.
31190         (vuint16mf4x6_t): Ditto.
31191         (vint16mf4x7_t): Ditto.
31192         (vuint16mf4x7_t): Ditto.
31193         (vint16mf4x8_t): Ditto.
31194         (vuint16mf4x8_t): Ditto.
31195         (vint16mf2x2_t): Ditto.
31196         (vuint16mf2x2_t): Ditto.
31197         (vint16mf2x3_t): Ditto.
31198         (vuint16mf2x3_t): Ditto.
31199         (vint16mf2x4_t): Ditto.
31200         (vuint16mf2x4_t): Ditto.
31201         (vint16mf2x5_t): Ditto.
31202         (vuint16mf2x5_t): Ditto.
31203         (vint16mf2x6_t): Ditto.
31204         (vuint16mf2x6_t): Ditto.
31205         (vint16mf2x7_t): Ditto.
31206         (vuint16mf2x7_t): Ditto.
31207         (vint16mf2x8_t): Ditto.
31208         (vuint16mf2x8_t): Ditto.
31209         (vint16m1x2_t): Ditto.
31210         (vuint16m1x2_t): Ditto.
31211         (vint16m1x3_t): Ditto.
31212         (vuint16m1x3_t): Ditto.
31213         (vint16m1x4_t): Ditto.
31214         (vuint16m1x4_t): Ditto.
31215         (vint16m1x5_t): Ditto.
31216         (vuint16m1x5_t): Ditto.
31217         (vint16m1x6_t): Ditto.
31218         (vuint16m1x6_t): Ditto.
31219         (vint16m1x7_t): Ditto.
31220         (vuint16m1x7_t): Ditto.
31221         (vint16m1x8_t): Ditto.
31222         (vuint16m1x8_t): Ditto.
31223         (vint16m2x2_t): Ditto.
31224         (vuint16m2x2_t): Ditto.
31225         (vint16m2x3_t): Ditto.
31226         (vuint16m2x3_t): Ditto.
31227         (vint16m2x4_t): Ditto.
31228         (vuint16m2x4_t): Ditto.
31229         (vint16m4x2_t): Ditto.
31230         (vuint16m4x2_t): Ditto.
31231         (vint32mf2x2_t): Ditto.
31232         (vuint32mf2x2_t): Ditto.
31233         (vint32mf2x3_t): Ditto.
31234         (vuint32mf2x3_t): Ditto.
31235         (vint32mf2x4_t): Ditto.
31236         (vuint32mf2x4_t): Ditto.
31237         (vint32mf2x5_t): Ditto.
31238         (vuint32mf2x5_t): Ditto.
31239         (vint32mf2x6_t): Ditto.
31240         (vuint32mf2x6_t): Ditto.
31241         (vint32mf2x7_t): Ditto.
31242         (vuint32mf2x7_t): Ditto.
31243         (vint32mf2x8_t): Ditto.
31244         (vuint32mf2x8_t): Ditto.
31245         (vint32m1x2_t): Ditto.
31246         (vuint32m1x2_t): Ditto.
31247         (vint32m1x3_t): Ditto.
31248         (vuint32m1x3_t): Ditto.
31249         (vint32m1x4_t): Ditto.
31250         (vuint32m1x4_t): Ditto.
31251         (vint32m1x5_t): Ditto.
31252         (vuint32m1x5_t): Ditto.
31253         (vint32m1x6_t): Ditto.
31254         (vuint32m1x6_t): Ditto.
31255         (vint32m1x7_t): Ditto.
31256         (vuint32m1x7_t): Ditto.
31257         (vint32m1x8_t): Ditto.
31258         (vuint32m1x8_t): Ditto.
31259         (vint32m2x2_t): Ditto.
31260         (vuint32m2x2_t): Ditto.
31261         (vint32m2x3_t): Ditto.
31262         (vuint32m2x3_t): Ditto.
31263         (vint32m2x4_t): Ditto.
31264         (vuint32m2x4_t): Ditto.
31265         (vint32m4x2_t): Ditto.
31266         (vuint32m4x2_t): Ditto.
31267         (vint64m1x2_t): Ditto.
31268         (vuint64m1x2_t): Ditto.
31269         (vint64m1x3_t): Ditto.
31270         (vuint64m1x3_t): Ditto.
31271         (vint64m1x4_t): Ditto.
31272         (vuint64m1x4_t): Ditto.
31273         (vint64m1x5_t): Ditto.
31274         (vuint64m1x5_t): Ditto.
31275         (vint64m1x6_t): Ditto.
31276         (vuint64m1x6_t): Ditto.
31277         (vint64m1x7_t): Ditto.
31278         (vuint64m1x7_t): Ditto.
31279         (vint64m1x8_t): Ditto.
31280         (vuint64m1x8_t): Ditto.
31281         (vint64m2x2_t): Ditto.
31282         (vuint64m2x2_t): Ditto.
31283         (vint64m2x3_t): Ditto.
31284         (vuint64m2x3_t): Ditto.
31285         (vint64m2x4_t): Ditto.
31286         (vuint64m2x4_t): Ditto.
31287         (vint64m4x2_t): Ditto.
31288         (vuint64m4x2_t): Ditto.
31289         (vfloat32mf2x2_t): Ditto.
31290         (vfloat32mf2x3_t): Ditto.
31291         (vfloat32mf2x4_t): Ditto.
31292         (vfloat32mf2x5_t): Ditto.
31293         (vfloat32mf2x6_t): Ditto.
31294         (vfloat32mf2x7_t): Ditto.
31295         (vfloat32mf2x8_t): Ditto.
31296         (vfloat32m1x2_t): Ditto.
31297         (vfloat32m1x3_t): Ditto.
31298         (vfloat32m1x4_t): Ditto.
31299         (vfloat32m1x5_t): Ditto.
31300         (vfloat32m1x6_t): Ditto.
31301         (vfloat32m1x7_t): Ditto.
31302         (vfloat32m1x8_t): Ditto.
31303         (vfloat32m2x2_t): Ditto.
31304         (vfloat32m2x3_t): Ditto.
31305         (vfloat32m2x4_t): Ditto.
31306         (vfloat32m4x2_t): Ditto.
31307         (vfloat64m1x2_t): Ditto.
31308         (vfloat64m1x3_t): Ditto.
31309         (vfloat64m1x4_t): Ditto.
31310         (vfloat64m1x5_t): Ditto.
31311         (vfloat64m1x6_t): Ditto.
31312         (vfloat64m1x7_t): Ditto.
31313         (vfloat64m1x8_t): Ditto.
31314         (vfloat64m2x2_t): Ditto.
31315         (vfloat64m2x3_t): Ditto.
31316         (vfloat64m2x4_t): Ditto.
31317         (vfloat64m4x2_t): Ditto.
31318         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
31319         Ditto.
31320         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
31321         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
31322         function.
31323         (TUPLE_ENTRY): Ditto.
31324         (riscv_v_ext_mode_p): New function.
31325         (riscv_v_adjust_nunits): Add tuple mode adjustment.
31326         (riscv_classify_address): Ditto.
31327         (riscv_binary_cost): Ditto.
31328         (riscv_rtx_costs): Ditto.
31329         (riscv_secondary_memory_needed): Ditto.
31330         (riscv_hard_regno_nregs): Ditto.
31331         (riscv_hard_regno_mode_ok): Ditto.
31332         (riscv_vector_mode_supported_p): Ditto.
31333         (riscv_regmode_natural_size): Ditto.
31334         (riscv_array_mode): New function.
31335         (TARGET_ARRAY_MODE): New target hook.
31336         * config/riscv/riscv.md: Add tuple modes.
31337         * config/riscv/vector-iterators.md: Ditto.
31338         * config/riscv/vector.md (mov<mode>): Add tuple modes data
31339         movement.
31340         (*mov<VT:mode>_<P:mode>): Ditto.
31342 2023-05-03  Richard Biener  <rguenther@suse.de>
31344         * cse.cc (cse_insn): Track an equivalence to the destination
31345         separately and delay using src_related for it.
31347 2023-05-03  Richard Biener  <rguenther@suse.de>
31349         * cse.cc (HASH): Turn into inline function and mix
31350         in another HASH_SHIFT bits.
31351         (SAFE_HASH): Likewise.
31353 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31355         PR target/99195
31356         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
31357         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
31359 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31361         PR target/99195
31362         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
31363         (add<mode>3<vczle><vczbe>): ... This.
31364         (sub<mode>3): Rename to...
31365         (sub<mode>3<vczle><vczbe>): ... This.
31366         (mul<mode>3): Rename to...
31367         (mul<mode>3<vczle><vczbe>): ... This.
31368         (*div<mode>3): Rename to...
31369         (*div<mode>3<vczle><vczbe>): ... This.
31370         (neg<mode>2): Rename to...
31371         (neg<mode>2<vczle><vczbe>): ... This.
31372         (abs<mode>2): Rename to...
31373         (abs<mode>2<vczle><vczbe>): ... This.
31374         (<frint_pattern><mode>2): Rename to...
31375         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
31376         (<fmaxmin><mode>3): Rename to...
31377         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
31378         (*sqrt<mode>2): Rename to...
31379         (*sqrt<mode>2<vczle><vczbe>): ... This.
31381 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
31383         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
31385 2023-05-03  Martin Liska  <mliska@suse.cz>
31387         PR tree-optimization/109693
31388         * value-range-storage.cc (vrange_allocator::vrange_allocator):
31389         Remove unused field.
31390         * value-range-storage.h: Likewise.
31392 2023-05-02  Andrew Pinski  <apinski@marvell.com>
31394         * tree-ssa-phiopt.cc (move_stmt): New function.
31395         (match_simplify_replacement): Use move_stmt instead
31396         of the inlined version.
31398 2023-05-02  Andrew Pinski  <apinski@marvell.com>
31400         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
31401         pattern.
31403 2023-05-02  Andrew Pinski  <apinski@marvell.com>
31405         PR tree-optimization/109702
31406         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
31407         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
31409 2023-05-02  Andrew Pinski  <apinski@marvell.com>
31411         PR target/109657
31412         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
31413         insn_and_split pattern.
31415 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31417         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
31418         load mapping.
31420 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31422         * config/riscv/sync.md (mem_thread_fence_1): Change fence
31423         depending on the given memory model.
31425 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31427         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
31428         riscv_union_memmodels function to sync.md.
31429         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
31430         get the union of two memmodels in sync.md.
31431         (riscv_print_operand): Add %I and %J flags that output the
31432         optimal LR/SC flag bits for a given memory model.
31433         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
31434         bits on SC op and replace with optimized %I, %J flags.
31436 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31438         * config/riscv/riscv.cc
31439         (riscv_memmodel_needs_amo_release): Change function name.
31440         (riscv_print_operand): Remove unneeded %F case.
31441         * config/riscv/sync.md: Remove unneeded fences.
31443 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31445         PR target/89835
31446         * config/riscv/sync.md (atomic_store<mode>): Use simple store
31447         instruction in combination with fence(s).
31449 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31451         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
31452         of %A to include release bits.
31454 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31456         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
31457         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
31458         pair.
31460 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31462         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
31463         sequentially consistent LR.aqrl/SC.rl pairs.
31465 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
31467         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
31468         sanitize memmodel input with memmodel_base.
31470 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
31471             Pan Li  <pan2.li@intel.com>
31473         PR target/109617
31474         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
31476 2023-05-02  Romain Naour  <romain.naour@gmail.com>
31478         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
31479         the namespace.
31481 2023-05-02  Martin Liska  <mliska@suse.cz>
31483         * doc/invoke.texi: Update documentation based on param.opt file.
31485 2023-05-02  Richard Biener  <rguenther@suse.de>
31487         PR tree-optimization/109672
31488         * tree-vect-stmts.cc (vectorizable_operation): For plus,
31489         minus and negate always check the vector mode is word mode.
31491 2023-05-01  Andrew Pinski  <apinski@marvell.com>
31493         * tree-ssa-phiopt.cc: Update comment about
31494         how the transformation are implemented.
31496 2023-05-01  Jeff Law  <jlaw@ventanamicro>
31498         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
31500 2023-05-01  Jeff Law  <jlaw@ventanamicro>
31502         * config/cris/cris.cc (TARGET_LRA_P): Remove.
31503         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
31504         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
31505         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
31506         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
31507         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
31509 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
31511         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
31512         * print-tree.cc (print_decl_identifier): Implement it.
31513         * toplev.cc (output_stack_usage_1): Use it.
31515 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31517         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
31518         friends.
31520 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31522         * value-range.h (irange::set_nonzero): Inline.
31524 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31526         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
31527         precision.
31528         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
31529         invalid_range, as it is an inverse range.
31530         * tree-vrp.cc (find_case_label_range): Avoid trees.
31531         * value-range.cc (irange::irange_set): Delete.
31532         (irange::irange_set_1bit_anti_range): Delete.
31533         (irange::irange_set_anti_range): Delete.
31534         (irange::set): Cleanup.
31535         * value-range.h (class irange): Remove irange_set,
31536         irange_set_anti_range, irange_set_1bit_anti_range.
31537         (irange::set_undefined): Remove set to m_type.
31539 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31541         * range-op.cc (update_known_bitmask): Adjust for irange containing
31542         wide_ints internally.
31543         * tree-ssanames.cc (set_nonzero_bits): Same.
31544         * tree-ssanames.h (set_nonzero_bits): Same.
31545         * value-range-storage.cc (irange_storage::set_irange): Same.
31546         (irange_storage::get_irange): Same.
31547         * value-range.cc (irange::operator=): Same.
31548         (irange::irange_set): Same.
31549         (irange::irange_set_1bit_anti_range): Same.
31550         (irange::irange_set_anti_range): Same.
31551         (irange::set): Same.
31552         (irange::verify_range): Same.
31553         (irange::contains_p): Same.
31554         (irange::irange_single_pair_union): Same.
31555         (irange::union_): Same.
31556         (irange::irange_contains_p): Same.
31557         (irange::intersect): Same.
31558         (irange::invert): Same.
31559         (irange::set_range_from_nonzero_bits): Same.
31560         (irange::set_nonzero_bits): Same.
31561         (mask_to_wi): Same.
31562         (irange::intersect_nonzero_bits): Same.
31563         (irange::union_nonzero_bits): Same.
31564         (gt_ggc_mx): Same.
31565         (gt_pch_nx): Same.
31566         (tree_range): Same.
31567         (range_tests_strict_enum): Same.
31568         (range_tests_misc): Same.
31569         (range_tests_nonzero_bits): Same.
31570         * value-range.h (irange::type): Same.
31571         (irange::varying_compatible_p): Same.
31572         (irange::irange): Same.
31573         (int_range::int_range): Same.
31574         (irange::set_undefined): Same.
31575         (irange::set_varying): Same.
31576         (irange::lower_bound): Same.
31577         (irange::upper_bound): Same.
31579 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31581         * gimple-range-fold.cc (tree_lower_bound): Delete.
31582         (tree_upper_bound): Delete.
31583         (vrp_val_max): Delete.
31584         (vrp_val_min): Delete.
31585         (fold_using_range::range_of_ssa_name_with_loop_info): Call
31586         range_of_var_in_loop.
31587         * vr-values.cc (valid_value_p): Delete.
31588         (fix_overflow): Delete.
31589         (get_scev_info): New.
31590         (bounds_of_var_in_loop): Refactor into...
31591         (induction_variable_may_overflow_p): ...this,
31592         (range_from_loop_direction): ...and this,
31593         (range_of_var_in_loop): ...and this.
31594         * vr-values.h (bounds_of_var_in_loop): Delete.
31595         (range_of_var_in_loop): New.
31597 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31599         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
31600         irange_val*.
31601         (vrp_val_max): New.
31602         (vrp_val_min): New.
31603         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
31604         * range-op.cc (max_limit): Same.
31605         (min_limit): Same.
31606         (plus_minus_ranges): Same.
31607         (operator_rshift::op1_range): Same.
31608         (operator_cast::inside_domain_p): Same.
31609         * value-range.cc (vrp_val_is_max): Delete.
31610         (vrp_val_is_min): Delete.
31611         (range_tests_misc): Use irange_val_*.
31612         * value-range.h (vrp_val_is_min): Delete.
31613         (vrp_val_is_max): Delete.
31614         (vrp_val_max): Delete.
31615         (irange_val_min): New.
31616         (vrp_val_min): Delete.
31617         (irange_val_max): New.
31618         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
31620 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31622         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
31623         * gimple-fold.cc (size_must_be_zero_p): Same.
31624         * gimple-loop-versioning.cc
31625         (loop_versioning::prune_loop_conditions): Same.
31626         * gimple-range-edge.cc (gcond_edge_range): Same.
31627         (gimple_outgoing_range::calc_switch_ranges): Same.
31628         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
31629         (adjust_realpart_expr): Same.
31630         (fold_using_range::range_of_address): Same.
31631         (fold_using_range::relation_fold_and_or): Same.
31632         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
31633         (range_is_either_true_or_false): Same.
31634         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
31635         (cfn_clz::fold_range): Same.
31636         (cfn_ctz::fold_range): Same.
31637         * gimple-range-tests.cc (class test_expr_eval): Same.
31638         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
31639         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
31640         (propagate_vr_across_jump_function): Same.
31641         (decide_whether_version_node): Same.
31642         * ipa-prop.cc (ipa_get_value_range): Same.
31643         * ipa-prop.h (ipa_range_set_and_normalize): Same.
31644         * range-op.cc (get_shift_range): Same.
31645         (value_range_from_overflowed_bounds): Same.
31646         (value_range_with_overflow): Same.
31647         (create_possibly_reversed_range): Same.
31648         (equal_op1_op2_relation): Same.
31649         (not_equal_op1_op2_relation): Same.
31650         (lt_op1_op2_relation): Same.
31651         (le_op1_op2_relation): Same.
31652         (gt_op1_op2_relation): Same.
31653         (ge_op1_op2_relation): Same.
31654         (operator_mult::op1_range): Same.
31655         (operator_exact_divide::op1_range): Same.
31656         (operator_lshift::op1_range): Same.
31657         (operator_rshift::op1_range): Same.
31658         (operator_cast::op1_range): Same.
31659         (operator_logical_and::fold_range): Same.
31660         (set_nonzero_range_from_mask): Same.
31661         (operator_bitwise_or::op1_range): Same.
31662         (operator_bitwise_xor::op1_range): Same.
31663         (operator_addr_expr::fold_range): Same.
31664         (pointer_plus_operator::wi_fold): Same.
31665         (pointer_or_operator::op1_range): Same.
31666         (INT): Same.
31667         (UINT): Same.
31668         (INT16): Same.
31669         (UINT16): Same.
31670         (SCHAR): Same.
31671         (UCHAR): Same.
31672         (range_op_cast_tests): Same.
31673         (range_op_lshift_tests): Same.
31674         (range_op_rshift_tests): Same.
31675         (range_op_bitwise_and_tests): Same.
31676         (range_relational_tests): Same.
31677         * range.cc (range_zero): Same.
31678         (range_nonzero): Same.
31679         * range.h (range_true): Same.
31680         (range_false): Same.
31681         (range_true_and_false): Same.
31682         * tree-data-ref.cc (split_constant_offset_1): Same.
31683         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
31684         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
31685         (find_unswitching_predicates_for_bb): Same.
31686         * tree-ssa-phiopt.cc (value_replacement): Same.
31687         * tree-ssa-threadbackward.cc
31688         (back_threader::find_taken_edge_cond): Same.
31689         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
31690         * tree-vrp.cc (find_case_label_range): Same.
31691         * value-query.cc (range_query::get_tree_range): Same.
31692         * value-range.cc (irange::set_nonnegative): Same.
31693         (frange::contains_p): Same.
31694         (frange::singleton_p): Same.
31695         (frange::internal_singleton_p): Same.
31696         (irange::irange_set): Same.
31697         (irange::irange_set_1bit_anti_range): Same.
31698         (irange::irange_set_anti_range): Same.
31699         (irange::set): Same.
31700         (irange::operator==): Same.
31701         (irange::singleton_p): Same.
31702         (irange::contains_p): Same.
31703         (irange::set_range_from_nonzero_bits): Same.
31704         (DEFINE_INT_RANGE_INSTANCE): Same.
31705         (INT): Same.
31706         (UINT): Same.
31707         (SCHAR): Same.
31708         (UINT128): Same.
31709         (UCHAR): Same.
31710         (range): New.
31711         (tree_range): New.
31712         (range_int): New.
31713         (range_uint): New.
31714         (range_uint128): New.
31715         (range_uchar): New.
31716         (range_char): New.
31717         (build_range3): Convert to irange wide_int API.
31718         (range_tests_irange3): Same.
31719         (range_tests_int_range_max): Same.
31720         (range_tests_strict_enum): Same.
31721         (range_tests_misc): Same.
31722         (range_tests_nonzero_bits): Same.
31723         (range_tests_nan): Same.
31724         (range_tests_signed_zeros): Same.
31725         * value-range.h (Value_Range::Value_Range): Same.
31726         (irange::set): Same.
31727         (irange::nonzero_p): Same.
31728         (irange::contains_p): Same.
31729         (range_includes_zero_p): Same.
31730         (irange::set_nonzero): Same.
31731         (irange::set_zero): Same.
31732         (contains_zero_p): Same.
31733         (frange::contains_p): Same.
31734         * vr-values.cc
31735         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
31736         (bounds_of_var_in_loop): Same.
31737         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
31739 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31741         * value-range.cc (irange::irange_union): Rename to...
31742         (irange::union_): ...this.
31743         (irange::irange_intersect): Rename to...
31744         (irange::intersect): ...this.
31745         * value-range.h (irange::union_): Delete.
31746         (irange::intersect): Delete.
31748 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31750         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
31752 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31754         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
31755         ranger API.
31756         (compare_ranges): Delete.
31757         (compare_range_with_value): Delete.
31758         (bounds_of_var_in_loop): Tidy up by using ranger API.
31759         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
31760         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
31761         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
31762         strict_overflow_p and only_ranges.
31763         (simplify_using_ranges::legacy_fold_cond): Adjust call to
31764         legacy_fold_cond_overflow.
31765         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
31766         rename.
31767         (range_fits_type_p): Rename value_range to irange.
31768         * vr-values.h (range_fits_type_p): Adjust prototype.
31770 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31772         * value-range.cc (irange::irange_set_anti_range): Remove uses of
31773         tree_lower_bound and tree_upper_bound.
31774         (irange::verify_range): Same.
31775         (irange::operator==): Same.
31776         (irange::singleton_p): Same.
31777         * value-range.h (irange::tree_lower_bound): Delete.
31778         (irange::tree_upper_bound): Delete.
31779         (irange::lower_bound): Delete.
31780         (irange::upper_bound): Delete.
31781         (irange::zero_p): Remove uses of tree_lower_bound and
31782         tree_upper_bound.
31784 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31786         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
31787         kind() call.
31788         (determine_value_range): Same.
31789         (record_nonwrapping_iv): Same.
31790         (infer_loop_bounds_from_signedness): Same.
31791         (scev_var_range_cant_overflow): Same.
31792         * tree-vrp.cc (operand_less_p): Delete.
31793         * tree-vrp.h (operand_less_p): Delete.
31794         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
31795         (irange::value_inside_range): Delete.
31796         * value-range.h (vrange::kind): Delete.
31797         (irange::num_pairs): Remove check of m_kind.
31798         (irange::min): Delete.
31799         (irange::max): Delete.
31801 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
31803         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
31804         for vrange_storage.
31805         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
31806         (sbr_vector::grow): Same.
31807         (sbr_vector::set_bb_range): Same.
31808         (sbr_vector::get_bb_range): Same.
31809         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
31810         (sbr_sparse_bitmap::set_bb_range): Same.
31811         (sbr_sparse_bitmap::get_bb_range): Same.
31812         (block_range_cache::block_range_cache): Same.
31813         (ssa_global_cache::ssa_global_cache): Same.
31814         (ssa_global_cache::get_global_range): Same.
31815         (ssa_global_cache::set_global_range): Same.
31816         * gimple-range-cache.h: Same.
31817         * gimple-range-edge.cc
31818         (gimple_outgoing_range::gimple_outgoing_range): Same.
31819         (gimple_outgoing_range::switch_edge_range): Same.
31820         (gimple_outgoing_range::calc_switch_ranges): Same.
31821         * gimple-range-edge.h: Same.
31822         * gimple-range-infer.cc
31823         (infer_range_manager::infer_range_manager): Same.
31824         (infer_range_manager::get_nonzero): Same.
31825         (infer_range_manager::maybe_adjust_range): Same.
31826         (infer_range_manager::add_range): Same.
31827         * gimple-range-infer.h: Rename obstack_vrange_allocator to
31828         vrange_allocator.
31829         * tree-core.h (struct irange_storage_slot): Remove.
31830         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
31831         range_info a pointer to vrange_storage.
31832         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
31833         (range_info_alloc): Same.
31834         (range_info_free): Same.
31835         (range_info_get_range): Same.
31836         (range_info_set_range): Same.
31837         (get_nonzero_bits): Same.
31838         * value-query.cc (get_ssa_name_range_info): Same.
31839         * value-range-storage.cc (class vrange_internal_alloc): New.
31840         (class vrange_obstack_alloc): New.
31841         (class vrange_ggc_alloc): New.
31842         (vrange_allocator::vrange_allocator): New.
31843         (vrange_allocator::~vrange_allocator): New.
31844         (vrange_storage::alloc_slot): New.
31845         (vrange_allocator::alloc): New.
31846         (vrange_allocator::free): New.
31847         (vrange_allocator::clone): New.
31848         (vrange_allocator::clone_varying): New.
31849         (vrange_allocator::clone_undefined): New.
31850         (vrange_storage::alloc): New.
31851         (vrange_storage::set_vrange): Remove slot argument.
31852         (vrange_storage::get_vrange): Same.
31853         (vrange_storage::fits_p): Same.
31854         (vrange_storage::equal_p): New.
31855         (irange_storage::write_lengths_address): New.
31856         (irange_storage::lengths_address): New.
31857         (irange_storage_slot::alloc_slot): Remove.
31858         (irange_storage::alloc): New.
31859         (irange_storage_slot::irange_storage_slot): Remove.
31860         (irange_storage::irange_storage): New.
31861         (write_wide_int): New.
31862         (irange_storage_slot::set_irange): Remove.
31863         (irange_storage::set_irange): New.
31864         (read_wide_int): New.
31865         (irange_storage_slot::get_irange): Remove.
31866         (irange_storage::get_irange): New.
31867         (irange_storage_slot::size): Remove.
31868         (irange_storage::equal_p): New.
31869         (irange_storage_slot::num_wide_ints_needed): Remove.
31870         (irange_storage::size): New.
31871         (irange_storage_slot::fits_p): Remove.
31872         (irange_storage::fits_p): New.
31873         (irange_storage_slot::dump): Remove.
31874         (irange_storage::dump): New.
31875         (frange_storage_slot::alloc_slot): Remove.
31876         (frange_storage::alloc): New.
31877         (frange_storage_slot::set_frange): Remove.
31878         (frange_storage::set_frange): New.
31879         (frange_storage_slot::get_frange): Remove.
31880         (frange_storage::get_frange): New.
31881         (frange_storage_slot::fits_p): Remove.
31882         (frange_storage::equal_p): New.
31883         (frange_storage::fits_p): New.
31884         (ggc_vrange_allocator): New.
31885         (ggc_alloc_vrange_storage): New.
31886         * value-range-storage.h (class vrange_storage): Rewrite.
31887         (class irange_storage): Rewrite.
31888         (class frange_storage): Rewrite.
31889         (class obstack_vrange_allocator): Remove.
31890         (class ggc_vrange_allocator): Remove.
31891         (vrange_allocator::alloc_vrange): Remove.
31892         (vrange_allocator::alloc_irange): Remove.
31893         (vrange_allocator::alloc_frange): Remove.
31894         (ggc_alloc_vrange_storage): New.
31895         * value-range.h (class irange): Rename vrange_allocator to
31896         irange_storage.
31897         (class frange): Same.
31899 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
31901         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
31902         inc to avoid clobbering the carry flag.
31904 2023-04-30  Andrew Pinski  <apinski@marvell.com>
31906         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
31907         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
31909 2023-04-30  Andrew Pinski  <apinski@marvell.com>
31911         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
31912         Allow some builtin/internal function calls which
31913         are known not to trap/throw.
31914         (phiopt_worker::match_simplify_replacement):
31915         Use name instead of getting the lhs again.
31917 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
31919         * configure: Regenerate.
31920         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
31922 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
31924         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
31925         emit_insn_if_valid_for_reload.
31926         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
31927         to be recognized, also try emitting a parallel that clobbers
31928         TARGET_FLAGS_REGNUM, as applicable.
31930 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
31932         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
31933         to a define_insn.
31934         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
31935         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
31937 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
31939         * config/stormy16/stormy16.md (any_lshift): New code iterator.
31940         (any_or_plus): Likewise.
31941         (any_rotate): Likewise.
31942         (*<any_lshift>_and_internal): New define_insn_and_split to
31943         recognize a logical shift followed by an AND, and split it
31944         again after reload.
31945         (*swpn): New define_insn matching xstormy16's swpn.
31946         (*swpn_zext): New define_insn recognizing swpn followed by
31947         zero_extendqihi2, i.e. with the high byte set to zero.
31948         (*swpn_sext): Likewise, for swpn followed by cbw.
31949         (*swpn_sext_2): Likewise, for an alternate RTL form.
31950         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
31951         sequence is split in the correct place to recognize the *swpn_zext
31952         followed by any_or_plus (ior, xor or plus) instruction.
31954 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
31956         PR target/105525
31957         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
31958         (lm32-*-uclinux*): Likewise.
31960 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
31962         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
31963         for riscv_use_save_libcall.
31964         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
31965         (riscv_compute_frame_info): restructure to decouple stack allocation
31966         for rv32e w/o save-restore.
31968 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
31970         * doc/install.texi: Fix documentation typo
31972 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
31974         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
31975         (u): Add div/udiv cases.
31976         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
31977         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
31978         divmod expansion.
31979         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
31980         (thead_c906_tune_info): Likewise.
31981         (optimize_size_tune_info): Likewise.
31982         (riscv_use_divmod_expander): New function.
31983         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
31985 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
31987         * config/riscv/bitmanip.md: Added clmulr instruction.
31988         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
31989         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
31990         (type): Add clmul
31991         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
31992         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
31993         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
31994         functions to riscv-cmo.def.
31995         * config/riscv/generic.md: Add clmul to list of instructions
31996         using the generic_imul reservation.
31998 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
32000         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
32002 2023-04-28  Andrew Pinski  <apinski@marvell.com>
32004         PR tree-optimization/100958
32005         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
32006         (pass_phiopt::execute): Don't call two_value_replacement.
32007         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
32008         handle what two_value_replacement did.
32010 2023-04-28  Andrew Pinski  <apinski@marvell.com>
32012         * match.pd: Add patterns for
32013         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
32015 2023-04-28  Andrew Pinski  <apinski@marvell.com>
32017         * match.pd: Factor out the deciding the min/max from
32018         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
32019         pattern to ...
32020         * fold-const.cc (minmax_from_comparison): this new function.
32021         * fold-const.h (minmax_from_comparison): New prototype.
32023 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
32025         PR rtl-optimization/109476
32026         * lower-subreg.cc: Include explow.h for force_reg.
32027         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
32028         If decomposing a suitable LSHIFTRT and we're not splitting
32029         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
32030         instead of setting a high part SUBREG to zero, which helps combine.
32031         (decompose_multiword_subregs): Update call to resolve_shift_zext.
32033 2023-04-28  Richard Biener  <rguenther@suse.de>
32035         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
32036         consider scatters.
32037         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
32038         gather-scatter info and cost emulated scatters accordingly.
32039         (get_load_store_type): Support emulated scatters.
32040         (vectorizable_store): Likewise.  Emulate them by extracting
32041         scalar offsets and data, doing scalar stores.
32043 2023-04-28  Richard Biener  <rguenther@suse.de>
32045         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
32046         Tame down element extracts and scalar loads for gather/scatter
32047         similar to elementwise strided accesses.
32049 2023-04-28  Pan Li  <pan2.li@intel.com>
32050             kito-cheng  <kito.cheng@sifive.com>
32052         * config/riscv/vector.md: Add new define split to perform
32053         the simplification.
32055 2023-04-28  Richard Biener  <rguenther@suse.de>
32057         PR ipa/109652
32058         * ipa-param-manipulation.cc
32059         (ipa_param_body_adjustments::modify_expression): Allow
32060         conversion of a register to a non-register type.  Elide
32061         conversions inside BIT_FIELD_REFs.
32063 2023-04-28  Richard Biener  <rguenther@suse.de>
32065         PR tree-optimization/109644
32066         * tree-cfg.cc (verify_types_in_gimple_reference): Check
32067         register constraints on the outermost VIEW_CONVERT_EXPR
32068         only.  Do not allow register or invariant bases on
32069         multi-level or possibly variable index handled components.
32071 2023-04-28  Richard Biener  <rguenther@suse.de>
32073         * gimplify.cc (gimplify_compound_lval): When there's a
32074         non-register type produced by one of the handled component
32075         operations make sure we get a non-register base.
32077 2023-04-28  Richard Biener  <rguenther@suse.de>
32079         PR tree-optimization/108752
32080         * tree-vect-generic.cc (build_replicated_const): Rename
32081         to build_replicated_int_cst and move to tree.{h,cc}.
32082         (do_plus_minus): Adjust.
32083         (do_negate): Likewise.
32084         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
32085         arithmetic vector operations in lowered form.
32086         * tree.h (build_replicated_int_cst): Declare.
32087         * tree.cc (build_replicated_int_cst): Moved from
32088         tree-vect-generic.cc build_replicated_const.
32090 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32092         PR target/99195
32093         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
32094         (aarch64_rbit<mode><vczle><vczbe>): ... This.
32095         (neg<mode>2): Rename to...
32096         (neg<mode>2<vczle><vczbe>): ... This.
32097         (abs<mode>2): Rename to...
32098         (abs<mode>2<vczle><vczbe>): ... This.
32099         (aarch64_abs<mode>): Rename to...
32100         (aarch64_abs<mode><vczle><vczbe>): ... This.
32101         (one_cmpl<mode>2): Rename to...
32102         (one_cmpl<mode>2<vczle><vczbe>): ... This.
32103         (clrsb<mode>2): Rename to...
32104         (clrsb<mode>2<vczle><vczbe>): ... This.
32105         (clz<mode>2): Rename to...
32106         (clz<mode>2<vczle><vczbe>): ... This.
32107         (popcount<mode>2): Rename to...
32108         (popcount<mode>2<vczle><vczbe>): ... This.
32110 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
32112         * gimple-range-op.cc (class cfn_sqrt): New type.
32113         (op_cfn_sqrt): New variable.
32114         (gimple_range_op_handler::maybe_builtin_call): Handle
32115         CASE_CFN_SQRT{,_FN}.
32117 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
32118             Jakub Jelinek  <jakub@redhat.com>
32120         * value-range.h (frange_nextafter): Declare.
32121         * gimple-range-op.cc (class cfn_sincos): New.
32122         (op_cfn_sin, op_cfn_cos): New variables.
32123         (gimple_range_op_handler::maybe_builtin_call): Handle
32124         CASE_CFN_{SIN,COS}{,_FN}.
32126 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
32128         * target.def (libm_function_max_error): New target hook.
32129         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
32130         * doc/tm.texi: Regenerated.
32131         * targhooks.h (default_libm_function_max_error,
32132         glibc_linux_libm_function_max_error): Declare.
32133         * targhooks.cc: Include case-cfn-macros.h.
32134         (default_libm_function_max_error,
32135         glibc_linux_libm_function_max_error): New functions.
32136         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
32137         * config/linux-protos.h (linux_libm_function_max_error): Declare.
32138         * config/linux.cc: Include target.h and targhooks.h.
32139         (linux_libm_function_max_error): New function.
32140         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
32141         (arc_libm_function_max_error): New function.
32142         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
32143         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
32144         (ix86_libm_function_max_error): New function.
32145         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
32146         * config/rs6000/rs6000-protos.h
32147         (rs6000_linux_libm_function_max_error): Declare.
32148         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
32149         and case-cfn-macros.h.
32150         (rs6000_linux_libm_function_max_error): New function.
32151         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
32152         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
32153         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
32154         (or1k_libm_function_max_error): New function.
32155         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
32157 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
32159         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
32160         Move detach value calls...
32161         (pass_harden_conditional_branches::execute): ... here.
32162         (pass_harden_compares::execute): Detach values before
32163         compares.
32165 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
32167         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
32168         (cml<addsub_as><mode>4): Likewise.
32169         (vec_addsub<mode>3): Likewise.
32170         (cadd<rot><mode>3): Likewise.
32171         (vec_fmaddsub<mode>4): Likewise.
32172         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
32174 2023-04-27  Andrew Pinski  <apinski@marvell.com>
32176         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
32177         up to 2 min/max expressions in the sequence/match code.
32179 2023-04-27  Andrew Pinski  <apinski@marvell.com>
32181         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
32182         COMPARISON.
32183         * tree-eh.cc (operation_could_trap_helper_p): Treate
32184         MIN_EXPR/MAX_EXPR similar as other comparisons.
32186 2023-04-27  Andrew Pinski  <apinski@marvell.com>
32188         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
32189         prototype.
32190         (cond_if_else_store_replacement): Likewise.
32191         (get_non_trapping): Likewise.
32192         (store_elim_worker): Move into ...
32193         (pass_cselim::execute): This.
32195 2023-04-27  Andrew Pinski  <apinski@marvell.com>
32197         * tree-ssa-phiopt.cc (two_value_replacement): Remove
32198         prototype.
32199         (match_simplify_replacement): Likewise.
32200         (factor_out_conditional_conversion): Likewise.
32201         (value_replacement): Likewise.
32202         (minmax_replacement): Likewise.
32203         (spaceship_replacement): Likewise.
32204         (cond_removal_in_builtin_zero_pattern): Likewise.
32205         (hoist_adjacent_loads): Likewise.
32206         (tree_ssa_phiopt_worker): Move into ...
32207         (pass_phiopt::execute): this.
32209 2023-04-27  Andrew Pinski  <apinski@marvell.com>
32211         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
32212         do_store_elim argument and split that part out to ...
32213         (store_elim_worker): This new function.
32214         (pass_cselim::execute): Call store_elim_worker.
32215         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
32217 2023-04-27  Jan Hubicka  <jh@suse.cz>
32219         * cfgloopmanip.h (unloop_loops): Export.
32220         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
32221         that no longer loop.
32222         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
32223         vectors of loops to unloop.
32224         (canonicalize_induction_variables): Free vectors here.
32225         (tree_unroll_loops_completely): Free vectors here.
32227 2023-04-27  Richard Biener  <rguenther@suse.de>
32229         PR tree-optimization/109170
32230         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
32231         Handle __builtin_expect and similar via cfn_pass_through_arg1
32232         and inspecting the calls fnspec.
32233         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
32234         and BUILT_IN_EXPECT_WITH_PROBABILITY.
32236 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
32238         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
32240 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
32242         PR tree-optimization/109639
32243         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
32244         (propagate_vr_across_jump_function): Same.
32245         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
32246         * ipa-prop.h (ipa_range_set_and_normalize): New.
32247         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
32249 2023-04-27  Richard Biener  <rguenther@suse.de>
32251         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
32252         create a CTOR operand in the result when simplifying GIMPLE.
32254 2023-04-27  Richard Biener  <rguenther@suse.de>
32256         * gimplify.cc (gimplify_compound_lval): When the base
32257         gimplified to a register make sure to split up chains
32258         of operations.
32260 2023-04-27  Richard Biener  <rguenther@suse.de>
32262         PR ipa/109607
32263         * ipa-param-manipulation.h
32264         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
32265         argument.
32266         * ipa-param-manipulation.cc
32267         (ipa_param_body_adjustments::modify_expression): Likewise.
32268         When we need a conversion and the replacement is a register
32269         split the conversion out.
32270         (ipa_param_body_adjustments::modify_assignment): Pass
32271         extra_stmts to RHS modify_expression.
32273 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
32275         * doc/extend.texi (Zero Length): Describe example.
32277 2023-04-27  Richard Biener  <rguenther@suse.de>
32279         PR tree-optimization/109594
32280         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
32281         what we rewrite to a register based on the above.
32283 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
32285         * config/riscv/riscv.cc: Fix whitespace.
32286         * config/riscv/sync.md: Fix whitespace.
32288 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
32290         PR tree-optimization/108697
32291         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
32292         not clear the vector on an out of range query.
32293         (ssa_cache::dump): Use dump_range_query instead of get_range.
32294         (ssa_cache::dump_range_query): New.
32295         (ssa_lazy_cache::dump_range_query): New.
32296         (ssa_lazy_cache::set_range): New.
32297         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
32298         (class ssa_lazy_cache): New.
32299         (ssa_lazy_cache::ssa_lazy_cache): New.
32300         (ssa_lazy_cache::~ssa_lazy_cache): New.
32301         (ssa_lazy_cache::get_range): New.
32302         (ssa_lazy_cache::clear_range): New.
32303         (ssa_lazy_cache::clear): New.
32304         (ssa_lazy_cache::dump): New.
32305         * gimple-range-path.cc (path_range_query::path_range_query): Do
32306         not allocate a ssa_cache object nor has_cache bitmap.
32307         (path_range_query::~path_range_query): Do not free objects.
32308         (path_range_query::clear_cache): Remove.
32309         (path_range_query::get_cache): Adjust.
32310         (path_range_query::set_cache): Remove.
32311         (path_range_query::dump): Don't call through a pointer.
32312         (path_range_query::internal_range_of_expr): Set cache directly.
32313         (path_range_query::reset_path): Clear cache directly.
32314         (path_range_query::ssa_range_in_phi): Fold with globals only.
32315         (path_range_query::compute_ranges_in_phis): Simply set range.
32316         (path_range_query::compute_ranges_in_block): Call cache directly.
32317         * gimple-range-path.h (class path_range_query): Replace bitmap
32318         and cache pointer with lazy cache object.
32319         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
32321 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
32323         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
32324         (ssa_cache::~ssa_cache): Rename.
32325         (ssa_cache::has_range): New.
32326         (ssa_cache::get_range): Rename.
32327         (ssa_cache::set_range): Rename.
32328         (ssa_cache::clear_range): Rename.
32329         (ssa_cache::clear): Rename.
32330         (ssa_cache::dump): Rename and use get_range.
32331         (ranger_cache::get_global_range): Use get_range and set_range.
32332         (ranger_cache::range_of_def): Use get_range.
32333         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
32334         (class ranger_cache): Use ssa_cache.
32335         * gimple-range-path.cc (path_range_query::path_range_query): Use
32336         ssa_cache.
32337         (path_range_query::get_cache): Use get_range.
32338         (path_range_query::set_cache): Use set_range.
32339         * gimple-range-path.h (class path_range_query): Use ssa_cache.
32340         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
32341         (assume_query::range_of_expr): Use get_range.
32342         (assume_query::assume_query): Use set_range.
32343         (assume_query::calculate_op): Use get_range and set_range.
32344         * gimple-range.h (class assume_query): Use ssa_cache.
32346 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
32348         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
32349         and local to optionally zero memory.
32350         (br_vector::grow): Only zero memory if flag is set.
32351         (class sbr_lazy_vector): New.
32352         (sbr_lazy_vector::sbr_lazy_vector): New.
32353         (sbr_lazy_vector::set_bb_range): New.
32354         (sbr_lazy_vector::get_bb_range): New.
32355         (sbr_lazy_vector::bb_range_p): New.
32356         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
32357         * gimple-range-gori.cc (gori_map::calculate_gori): Use
32358         param_vrp_switch_limit.
32359         (gori_compute::gori_compute): Use param_vrp_switch_limit.
32360         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
32361         (vrp_switch_limit): Rename from evrp_switch_limit.
32362         (vrp_vector_threshold): New.
32364 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
32366         * value-relation.cc (dom_oracle::query_relation): Check early for lack
32367         of any relation.
32368         * value-relation.h (equiv_oracle::has_equiv_p): New.
32370 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
32372         PR tree-optimization/109417
32373         * gimple-range-gori.cc (range_def_chain::register_dependency):
32374         Save the ssa version number, not the pointer.
32375         (gori_compute::may_recompute_p): No need to check if a dependency
32376         is in the free list.
32377         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
32378         fields to be unsigned int instead of trees.
32379         (ange_def_chain::depend1): Adjust.
32380         (ange_def_chain::depend2): Adjust.
32381         * gimple-range.h: Include "ssa.h" to inline ssa_name().
32383 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
32385         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
32386         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
32387         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
32389 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
32391         PR target/104338
32392         * config/riscv/riscv-protos.h: Add helper function stubs.
32393         * config/riscv/riscv.cc: Add helper functions for subword masking.
32394         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
32395         -mno-inline-atomics.
32396         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
32397         fetch_and_nand, CAS, and exchange ops.
32398         * doc/invoke.texi: Add blurb regarding new command-line flags
32399         -minline-atomics and -mno-inline-atomics.
32401 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32403         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
32404         Reimplement using standard RTL codes instead of unspec.
32405         (aarch64_rshrn2<mode>_insn_be): Likewise.
32406         (aarch64_rshrn2<mode>): Adjust for the above.
32407         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
32409 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32411         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
32412         with standard RTL codes instead of an UNSPEC.
32413         (aarch64_rshrn<mode>_insn_be): Likewise.
32414         (aarch64_rshrn<mode>): Adjust for the above.
32415         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
32417 2023-04-26  Pan Li  <pan2.li@intel.com>
32418             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
32420         * config/riscv/riscv.cc (riscv_classify_address): Allow
32421         const0_rtx for the RVV load/store.
32423 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32425         * range-op.cc (range_op_cast_tests): Remove legacy support.
32426         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
32427         * value-range.cc (irange::operator=): Same.
32428         (get_legacy_range): Same.
32429         (irange::copy_legacy_to_multi_range): Delete.
32430         (irange::copy_to_legacy): Delete.
32431         (irange::irange_set_anti_range): Delete.
32432         (irange::set): Remove legacy support.
32433         (irange::verify_range): Same.
32434         (irange::legacy_lower_bound): Delete.
32435         (irange::legacy_upper_bound): Delete.
32436         (irange::legacy_equal_p): Delete.
32437         (irange::operator==): Remove legacy support.
32438         (irange::singleton_p): Same.
32439         (irange::value_inside_range): Same.
32440         (irange::contains_p): Same.
32441         (intersect_ranges): Delete.
32442         (irange::legacy_intersect): Delete.
32443         (union_ranges): Delete.
32444         (irange::legacy_union): Delete.
32445         (irange::legacy_verbose_union_): Delete.
32446         (irange::legacy_verbose_intersect): Delete.
32447         (irange::irange_union): Remove legacy support.
32448         (irange::irange_intersect): Same.
32449         (irange::intersect): Same.
32450         (irange::invert): Same.
32451         (ranges_from_anti_range): Delete.
32452         (gt_pch_nx): Adjust for legacy removal.
32453         (gt_ggc_mx): Same.
32454         (range_tests_legacy): Delete.
32455         (range_tests_misc): Adjust for legacy removal.
32456         (range_tests): Same.
32457         * value-range.h (class irange): Same.
32458         (irange::legacy_mode_p): Delete.
32459         (ranges_from_anti_range): Delete.
32460         (irange::nonzero_p): Adjust for legacy removal.
32461         (irange::lower_bound): Same.
32462         (irange::upper_bound): Same.
32463         (irange::union_): Same.
32464         (irange::intersect): Same.
32465         (irange::set_nonzero): Same.
32466         (irange::set_zero): Same.
32467         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
32469 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32471         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
32472         of range_has_numeric_bounds_p with irange API.
32473         (range_has_numeric_bounds_p): Delete.
32474         * value-range.h (range_has_numeric_bounds_p): Delete.
32476 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32478         * tree-data-ref.cc (compute_distributive_range): Replace uses of
32479         range_int_cst_p with irange API.
32480         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
32481         * tree-vrp.h (range_int_cst_p): Delete.
32482         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
32483         range_int_cst_p with irange API.
32484         (vr_set_zero_nonzero_bits): Same.
32485         (range_fits_type_p): Same.
32486         (simplify_using_ranges::simplify_casted_cond): Same.
32487         * tree-vrp.cc (range_int_cst_p): Remove.
32489 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32491         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
32493 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32495         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
32496         API uses to new API.
32497         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
32498         * internal-fn.cc (get_min_precision): Same.
32499         * match.pd: Same.
32500         * tree-affine.cc (expr_to_aff_combination): Same.
32501         * tree-data-ref.cc (dr_step_indicator): Same.
32502         * tree-dfa.cc (get_ref_base_and_extent): Same.
32503         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
32504         * tree-ssa-phiopt.cc (two_value_replacement): Same.
32505         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
32506         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
32507         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
32508         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
32509         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
32510         * tree.cc (get_range_pos_neg): Same.
32512 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32514         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
32515         vrange::dump instead of ad-hoc dumper.
32516         * tree-ssa-strlen.cc (dump_strlen_info): Same.
32517         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
32518         dump_generic_node.
32520 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32522         * range-op.cc (operator_cast::op1_range): Use
32523         create_possibly_reversed_range.
32524         (operator_bitwise_and::simple_op1_range_solver): Same.
32525         * value-range.cc (swap_out_of_order_endpoints): Delete.
32526         (irange::set): Remove call to swap_out_of_order_endpoints.
32528 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32530         * builtins.cc (determine_block_size): Convert use of legacy API to
32531         get_legacy_range.
32532         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
32533         (array_bounds_checker::check_array_ref): Same.
32534         * gimple-ssa-warn-restrict.cc
32535         (builtin_memref::extend_offset_range): Same.
32536         * ipa-cp.cc (ipcp_store_vr_results): Same.
32537         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
32538         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
32539         (ipa_write_jump_function): Same.
32540         * pointer-query.cc (get_size_range): Same.
32541         * tree-data-ref.cc (split_constant_offset): Same.
32542         * tree-ssa-strlen.cc (get_range): Same.
32543         (maybe_diag_stxncpy_trunc): Same.
32544         (strlen_pass::get_len_or_size): Same.
32545         (strlen_pass::count_nonzero_bytes_addr): Same.
32546         * tree-vect-patterns.cc (vect_get_range_info): Same.
32547         * value-range.cc (irange::maybe_anti_range): Remove.
32548         (get_legacy_range): New.
32549         (irange::copy_to_legacy): Use get_legacy_range.
32550         (ranges_from_anti_range): Same.
32551         * value-range.h (class irange): Remove maybe_anti_range.
32552         (get_legacy_range): New.
32553         * vr-values.cc (check_for_binary_op_overflow): Convert use of
32554         legacy API to get_legacy_range.
32555         (compare_ranges): Same.
32556         (compare_range_with_value): Same.
32557         (bounds_of_var_in_loop): Same.
32558         (find_case_label_ranges): Same.
32559         (simplify_using_ranges::simplify_switch_using_ranges): Same.
32561 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32563         * value-range-pretty-print.cc (vrange_printer::visit): Remove
32564         constant_p use.
32565         * value-range.cc (irange::constant_p): Remove.
32566         (irange::get_nonzero_bits_from_range): Remove constant_p use.
32567         * value-range.h (class irange): Remove constant_p.
32568         (irange::num_pairs): Remove constant_p use.
32570 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32572         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
32573         symbolics support.
32574         (irange::set): Same.
32575         (irange::legacy_lower_bound): Same.
32576         (irange::legacy_upper_bound): Same.
32577         (irange::contains_p): Same.
32578         (range_tests_legacy): Same.
32579         (irange::normalize_addresses): Remove.
32580         (irange::normalize_symbolics): Remove.
32581         (irange::symbolic_p): Remove.
32582         * value-range.h (class irange): Remove symbolic_p,
32583         normalize_symbolics, and normalize_addresses.
32584         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
32585         Remove symbolics support.
32587 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32589         * value-range.cc (irange::may_contain_p): Remove.
32590         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
32591         usage with contains_p.
32592         * vr-values.cc (compare_range_with_value): Same.
32594 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32596         * tree-vrp.cc (supported_types_p): Remove.
32597         (defined_ranges_p): Remove.
32598         (range_fold_binary_expr): Remove.
32599         (range_fold_unary_expr): Remove.
32600         * tree-vrp.h (range_fold_unary_expr): Remove.
32601         (range_fold_binary_expr): Remove.
32603 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32605         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
32606         (ipa_value_range_from_jfunc): Same.
32607         (propagate_vr_across_jump_function): Same.
32608         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
32609         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
32610         * vr-values.cc (bounds_of_var_in_loop): Same.
32612 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32614         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
32615         Add irange argument.
32616         (check_out_of_bounds_and_warn): Remove check for vr.
32617         (array_bounds_checker::check_array_ref): Remove pointer qualifier
32618         for vr and adjust accordingly.
32619         * gimple-array-bounds.h (get_value_range): Add irange argument.
32620         * value-query.cc (class equiv_allocator): Delete.
32621         (range_query::get_value_range): Delete.
32622         (range_query::range_query): Remove allocator access.
32623         (range_query::~range_query): Same.
32624         * value-query.h (get_value_range): Delete.
32625         * vr-values.cc
32626         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
32627         call to get_value_range.
32628         (check_for_binary_op_overflow): Same.
32629         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
32630         (simplify_using_ranges::simplify_abs_using_ranges): Same.
32631         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
32632         (simplify_using_ranges::simplify_casted_cond): Same.
32633         (simplify_using_ranges::simplify_switch_using_ranges): Same.
32634         (simplify_using_ranges::two_valued_val_range_p): Same.
32636 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32638         * vr-values.cc
32639         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
32640         Rename to...
32641         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
32642         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
32643         (simplify_using_ranges::legacy_fold_cond): ...this.
32644         (simplify_using_ranges::fold_cond): Rename
32645         vrp_evaluate_conditional_warnv_with_ops to
32646         legacy_fold_cond_overflow.
32647         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
32648         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
32649         legacy_fold_cond_overflow respectively.
32651 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
32653         * vr-values.cc (get_vr_for_comparison): Remove.
32654         (compare_name_with_value): Same.
32655         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
32656         compare_name_with_value.
32657         * vr-values.h: Remove compare_name_with_value.
32658         Remove get_vr_for_comparison.
32660 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
32662         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
32663         (bswapsi2): New define_insn.
32664         (swaphi): New define_insn to exchange two registers (swpw).
32665         (define_peephole2): Recognize exchange of registers as swaphi.
32667 2023-04-26  Richard Biener  <rguenther@suse.de>
32669         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
32670         Avoid last_stmt.
32671         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
32672         * predict.cc (apply_return_prediction): Likewise.
32673         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
32674         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
32675         (make_edges_bb): Likewise.
32676         (make_cond_expr_edges): Likewise.
32677         (end_recording_case_labels): Likewise.
32678         (make_gimple_asm_edges): Likewise.
32679         (cleanup_dead_labels): Likewise.
32680         (group_case_labels): Likewise.
32681         (gimple_can_merge_blocks_p): Likewise.
32682         (gimple_merge_blocks): Likewise.
32683         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
32684         (gimple_duplicate_sese_tail): Avoid last_stmt.
32685         (find_loop_dist_alias): Likewise.
32686         (gimple_block_ends_with_condjump_p): Likewise.
32687         (gimple_purge_dead_eh_edges): Likewise.
32688         (gimple_purge_dead_abnormal_call_edges): Likewise.
32689         (pass_warn_function_return::execute): Likewise.
32690         (execute_fixup_cfg): Likewise.
32691         * tree-eh.cc (redirect_eh_edge_1): Likewise.
32692         (pass_lower_resx::execute): Likewise.
32693         (pass_lower_eh_dispatch::execute): Likewise.
32694         (cleanup_empty_eh): Likewise.
32695         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
32696         (predicate_bbs): Likewise.
32697         (ifcvt_split_critical_edges): Likewise.
32698         * tree-loop-distribution.cc (create_edge_for_control_dependence):
32699         Likewise.
32700         (loop_distribution::transform_reduction_loop): Likewise.
32701         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
32702         (try_transform_to_exit_first_loop_alt): Likewise.
32703         (transform_to_exit_first_loop): Likewise.
32704         (create_parallel_loop): Likewise.
32705         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
32706         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
32707         (eliminate_unnecessary_stmts): Likewise.
32708         * tree-ssa-dom.cc
32709         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
32710         Likewise.
32711         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
32712         (pass_tree_ifcombine::execute): Likewise.
32713         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
32714         (should_duplicate_loop_header_p): Likewise.
32715         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
32716         (tree_estimate_loop_size): Likewise.
32717         (try_unroll_loop_completely): Likewise.
32718         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
32719         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
32720         (canonicalize_loop_ivs): Likewise.
32721         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
32722         (bound_difference): Likewise.
32723         (number_of_iterations_popcount): Likewise.
32724         (number_of_iterations_cltz): Likewise.
32725         (number_of_iterations_cltz_complement): Likewise.
32726         (simplify_using_initial_conditions): Likewise.
32727         (number_of_iterations_exit_assumptions): Likewise.
32728         (loop_niter_by_eval): Likewise.
32729         (estimate_numbers_of_iterations): Likewise.
32731 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
32733         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
32735 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
32737         PR target/108758
32738         * config/rs6000/rs6000-builtins.def
32739         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
32740         __builtin_vsx_scalar_cmp_exp_qp_lt,
32741         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
32742         to power9-vector.
32744 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
32746         PR target/109069
32747         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
32748         easy_vector_constant with const_vector_each_byte_same, add
32749         handlings in preparation for !easy_vector_constant, and update
32750         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
32751         * config/rs6000/predicates.md (const_vector_each_byte_same): New
32752         predicate.
32754 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32756         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
32757         (*pred_ltge<mode>_merge_tie_mask): Ditto.
32758         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
32759         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
32760         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
32761         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
32762         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
32764 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
32766         * config/riscv/vector.md: Fix redundant vmv1r.v.
32768 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
32770         * config/riscv/vector.md: Fix RA constraint.
32772 2023-04-26  Pan Li  <pan2.li@intel.com>
32774         PR target/109272
32775         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
32776         check for vn_reference equal.
32778 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
32780         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
32781         auto-vectorization preference.
32782         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
32783         auto-vectorization.
32784         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
32786 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
32788         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
32789         and bclridisi_nottwobits patterns.
32790         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
32791         predicate to avoid splitting arith constants.
32792         (const_nottwobits_not_arith_operand): New predicate.
32794 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
32796         * recog.cc (peep2_attempt, peep2_update_life): Correct
32797         head-comment description of parameter match_len.
32799 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
32801         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
32802         riscv_split_symbol() drop in_splitter arg.
32803         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
32804         riscv_split_symbol() drop in_splitter arg.
32805         riscv_force_temporary() drop in_splitter arg.
32806         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
32807         riscv_split_symbol() drop in_splitter arg.
32809 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
32811         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
32812         superfluous debug temporaries for single GIMPLE assignments.
32814 2023-04-25  Richard Biener  <rguenther@suse.de>
32816         PR tree-optimization/109609
32817         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
32818         Clarify semantics.
32819         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
32820         the size given by arg_max_access_size_given_by_arg_p as
32821         maximum, not exact, size.
32823 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32825         PR target/99195
32826         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
32827         (orn<mode>3<vczle><vczbe>): ... This.
32828         (bic<mode>3): Rename to...
32829         (bic<mode>3<vczle><vczbe>): ... This.
32830         (<su><maxmin><mode>3): Rename to...
32831         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
32833 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32835         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
32836         * config/aarch64/iterators.md (VQDIV): New mode iterator.
32837         (vnx2di): New mode attribute.
32839 2023-04-25  Richard Biener  <rguenther@suse.de>
32841         PR rtl-optimization/109585
32842         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
32844 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
32846         PR target/109566
32847         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
32848         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
32849         is larger than signed int maximum.
32851 2023-04-25  Martin Liska  <mliska@suse.cz>
32853         * doc/gcov.texi: Document the new "calls" field and document
32854         the API bump. Mention also "block_ids" for lines.
32855         * gcov.cc (output_intermediate_json_line): Output info about
32856         calls and extend branches as well.
32857         (generate_results): Bump version to 2.
32858         (output_line_details): Use block ID instead of a non-sensual
32859         index.
32861 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
32863         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
32864         length attribute for the first (memory operand) alternative.
32866 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
32868         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
32869         * config/aarch64/constraints.md: Make "Umn" relaxed memory
32870         constraint.
32871         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
32873 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
32875         * value-range.cc (frange::set): Adjust constructor.
32876         * value-range.h (nan_state::nan_state): Replace default
32877         constructor with one taking an argument.
32879 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
32881         * ipa-cp.cc (ipa_range_contains_p): New.
32882         (decide_whether_version_node): Use it.
32884 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32886         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
32887         simplify two successive VEC_PERM_EXPRs with same VLA mask,
32888         where mask chooses elements in reverse order.
32890 2023-04-24  Andrew Pinski  <apinski@marvell.com>
32892         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
32893         and support diamond shaped basic block form.
32894         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
32896 2023-04-24  Andrew Pinski  <apinski@marvell.com>
32898         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
32899         Instead of calling last_and_only_stmt, look for the last statement
32900         manually.
32902 2023-04-24  Andrew Pinski  <apinski@marvell.com>
32904         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
32905         New function.
32906         (match_simplify_replacement): Call
32907         empty_bb_or_one_feeding_into_p instead of doing it inline.
32909 2023-04-24  Andrew Pinski  <apinski@marvell.com>
32911         PR tree-optimization/68894
32912         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
32913         continue for the do_hoist_loads diamond case.
32915 2023-04-24  Andrew Pinski  <apinski@marvell.com>
32917         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
32918         code for better code readability.
32920 2023-04-24  Andrew Pinski  <apinski@marvell.com>
32922         PR tree-optimization/109604
32923         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
32924         diamond form check from ...
32925         (minmax_replacement): Here.
32927 2023-04-24  Patrick Palka  <ppalka@redhat.com>
32929         * tree.cc (strip_array_types): Don't define here.
32930         (is_typedef_decl): Don't define here.
32931         (typedef_variant_p): Don't define here.
32932         * tree.h (strip_array_types): Define here.
32933         (is_typedef_decl): Define here.
32934         (typedef_variant_p): Define here.
32936 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
32938         * doc/generic.texi (OpenMP): Add != to allowed
32939         conditions and state that vars can be unsigned.
32940         * tree.def (OMP_FOR): Likewise.
32942 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32944         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
32946 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
32948         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
32949         Remove explicit Solaris 11 references.
32950         Markup fixes.
32951         (Options specification, --with-gnu-as): as and gas always differ
32952         on Solaris.
32953         Remove /usr/ccs/bin reference.
32954         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
32955         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
32956         (*-*-solaris2*): ... here.
32957         Update bundled GCC versions.
32958         Don't refer to pre-built binaries.
32959         Remove /bin/sh warning.
32960         Update assembler, linker recommendations.
32961         Document GNAT bootstrap compiler.
32962         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
32963         (sparc64-*-solaris2*): Move content...
32964         (sparcv9-*-solaris2*): ...here.
32965         Add GDC for 64-bit bootstrap compilers.
32967 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32969         PR target/109406
32970         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
32971         case.
32972         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
32973         pattern.
32975 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32977         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
32978         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
32979         (aarch64_<su>abal2<mode>): New define_expand.
32980         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
32981         (aarch64_rtx_costs): Handle ABD rtxes.
32982         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
32983         * config/aarch64/iterators.md (ABAL2): Delete.
32984         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
32986 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32988         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
32989         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
32990         (<sur>sadv16qi): Rename to...
32991         (<su>sadv16qi): ... This.  Adjust for the above.
32992         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
32993         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
32994         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
32995         * config/aarch64/iterators.md (ABAL): Delete.
32996         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
32998 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33000         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
33001         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
33002         (aarch64_<su>abdl2<mode>): New define_expand.
33003         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
33004         * config/aarch64/iterators.md (ABDL2): Delete.
33005         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
33007 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33009         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
33010         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
33011         unspec.
33012         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
33013         * config/aarch64/iterators.md (ABDL): Delete.
33014         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
33016 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33018         * config/aarch64/aarch64-simd.md
33019         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
33021 2023-04-24  Richard Biener  <rguenther@suse.de>
33023         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
33024         last_stmt.
33025         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
33026         Likewise.
33027         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
33028         (set_switch_stmt_execution_predicate): Likewise.
33029         (phi_result_unknown_predicate): Likewise.
33030         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
33031         (ipa_analyze_indirect_call_uses): Likewise.
33032         * predict.cc (predict_iv_comparison): Likewise.
33033         (predict_extra_loop_exits): Likewise.
33034         (predict_loops): Likewise.
33035         (tree_predict_by_opcode): Likewise.
33036         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
33037         Likewise.
33038         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
33039         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
33040         (replace_phi_edge_with_variable): Likewise.
33041         (two_value_replacement): Likewise.
33042         (value_replacement): Likewise.
33043         (minmax_replacement): Likewise.
33044         (spaceship_replacement): Likewise.
33045         (cond_removal_in_builtin_zero_pattern): Likewise.
33046         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
33047         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
33048         (vn_phi_lookup): Likewise.
33049         (vn_phi_insert): Likewise.
33050         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
33051         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
33052         Likewise.
33053         (back_threader_profitability::possibly_profitable_path_p):
33054         Likewise.
33055         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
33056         Likewise.
33057         * tree-switch-conversion.cc (pass_convert_switch::execute):
33058         Likewise.
33059         (pass_lower_switch<O0>::execute): Likewise.
33060         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
33061         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
33062         * tree-vect-slp.cc (vect_slp_function): Likewise.
33063         * tree-vect-stmts.cc (cfun_returns): Likewise.
33064         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
33065         (vect_loop_dist_alias_call): Likewise.
33067 2023-04-24  Richard Biener  <rguenther@suse.de>
33069         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
33071 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33073         * config/riscv/riscv-vsetvl.cc
33074         (vector_infos_manager::all_avail_in_compatible_p): New function.
33075         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
33076         * config/riscv/riscv-vsetvl.h: New function.
33078 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33080         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
33081         comment for cleanup_insns.
33083 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33085         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
33086         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
33087         with the fault first load property.
33089 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33091         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
33092         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
33094 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33096         PR target/99195
33097         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
33098         (aarch64_addp<mode><vczle><vczbe>): ... This.
33100 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
33102         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
33103         provide reasonable values for common arithmetic operations and
33104         immediate operands (in several machine modes).
33106 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
33108         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
33109         format specifier to output high_part register name of SImode reg.
33110         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
33111         (zero_extendqihi2): Fix lengths, consistent formatting and add
33112         "and Rx,#255" alternative, for documentation purposes.
33113         (zero_extendhisi2): New define_insn.
33115 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
33117         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
33118         SImode shifts by two by performing a single bit SImode shift twice.
33120 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
33122         PR tree-optimization/109593
33123         * value-range.cc (frange::operator==): Handle NANs.
33125 2023-04-23  liuhongt  <hongtao.liu@intel.com>
33127         PR rtl-optimization/108707
33128         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
33129         GENERAL_REGS when preferred reg_class is not known.
33131 2023-04-22  Andrew Pinski  <apinski@marvell.com>
33133         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
33134         Change the code around slightly to move diamond
33135         handling for do_store_elim/do_hoist_loads out of
33136         the big if/else.
33138 2023-04-22  Andrew Pinski  <apinski@marvell.com>
33140         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
33141         Remove check on empty_block_p.
33143 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
33145         PR bootstrap/109589
33146         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
33147         * realmpfr.h (class auto_mpfr): Likewise.
33149 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
33151         PR tree-optimization/109583
33152         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
33153         if vec_mode is not VECTOR_MODE_P.
33155 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
33156             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
33158         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
33159         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
33160         loop profile and bounds after header duplication.
33161         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
33162         Break out from try_peel_loop; fix handling of 0 iterations.
33163         (try_peel_loop): Use adjust_loop_info_after_peeling.
33165 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
33167         PR tree-optimization/109546
33168         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
33169         not fold conditions with ADDR_EXPR early.
33171 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33173         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
33174         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
33175         for umax.
33176         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
33177         (*aarch64_<optab><mode>3_zero): Define.
33178         (*aarch64_<optab><mode>3_cssc): Likewise.
33179         * config/aarch64/iterators.md (maxminand): New code attribute.
33181 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33183         PR target/108779
33184         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
33185         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
33186         Define prototype.
33187         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
33188         (aarch64_override_options_internal): Handle the above.
33189         (aarch64_output_load_tp): New function.
33190         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
33191         aarch64_output_load_tp.
33192         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
33193         (mtp=): New option.
33194         * doc/invoke.texi (AArch64 Options): Document -mtp=.
33196 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33198         PR target/99195
33199         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
33200         (add_vec_concat_subst_be): Likewise.
33201         (vczle): Likewise.
33202         (vczbe): Likewise.
33203         (add<mode>3): Rename to...
33204         (add<mode>3<vczle><vczbe>): ... This.
33205         (sub<mode>3): Rename to...
33206         (sub<mode>3<vczle><vczbe>): ... This.
33207         (mul<mode>3): Rename to...
33208         (mul<mode>3<vczle><vczbe>): ... This.
33209         (and<mode>3): Rename to...
33210         (and<mode>3<vczle><vczbe>): ... This.
33211         (ior<mode>3): Rename to...
33212         (ior<mode>3<vczle><vczbe>): ... This.
33213         (xor<mode>3): Rename to...
33214         (xor<mode>3<vczle><vczbe>): ... This.
33215         * config/aarch64/iterators.md (VDZ): Define.
33217 2023-04-21  Patrick Palka  <ppalka@redhat.com>
33219         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
33220         and type_p.
33222 2023-04-21  Jan Hubicka  <jh@suse.cz>
33224         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
33225         commit.
33227 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
33229         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
33230         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
33232 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
33234         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
33235         force_reg instead of copy_to_mode_reg.
33236         (aarch64_expand_vector_init): Likewise.
33238 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
33240         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
33241         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
33242         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
33243         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
33244         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
33245         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
33246         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
33247         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
33248         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
33249         * config/i386/predicates.md (index_register_operand):
33250         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
33251         * config/i386/i386.cc (ix86_legitimate_address_p): Use
33252         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
33253         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
33255 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
33256             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
33258         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
33259         latch.
33261 2023-04-21  Richard Biener  <rguenther@suse.de>
33263         * is-a.h (safe_is_a): New.
33265 2023-04-21  Richard Biener  <rguenther@suse.de>
33267         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
33268         (gphi_iterator::operator*): Likewise.
33270 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
33271             Michal Jires  <michal@jires.eu>
33273         * ipa-inline.cc (class inline_badness): New class.
33274         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
33275         of sreal.
33276         (update_edge_key): Update.
33277         (lookup_recursive_calls): Likewise.
33278         (recursive_inlining): Likewise.
33279         (add_new_edges_to_heap): Likewise.
33280         (inline_small_functions): Likewise.
33282 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
33284         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
33286 2023-04-21  Richard Biener  <rguenther@suse.de>
33288         PR tree-optimization/109573
33289         * tree-vect-loop.cc (vectorizable_live_operation): Allow
33290         unhandled SSA copy as well.  Demote assert to checking only.
33292 2023-04-21  Richard Biener  <rguenther@suse.de>
33294         * df-core.cc (df_analyze): Compute RPO on the reverse graph
33295         for DF_BACKWARD problems.
33296         (loop_post_order_compute): Rename to ...
33297         (loop_rev_post_order_compute): ... this, compute a RPO.
33298         (loop_inverted_post_order_compute): Rename to ...
33299         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
33300         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
33301         problems, RPO on the inverted graph for DF_BACKWARD.
33303 2023-04-21  Richard Biener  <rguenther@suse.de>
33305         * cfganal.h (inverted_rev_post_order_compute): Rename
33306         from ...
33307         (inverted_post_order_compute): ... this.  Add struct function
33308         argument, change allocation to a C array.
33309         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
33310         * lcm.cc (compute_antinout_edge): Adjust.
33311         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
33312         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
33313         * tree-ssa-pre.cc (compute_antic): Likewise.
33315 2023-04-21  Richard Biener  <rguenther@suse.de>
33317         * df.h (df_d::postorder_inverted): Change back to int *,
33318         clarify comments.
33319         * df-core.cc (rest_of_handle_df_finish): Adjust.
33320         (df_analyze_1): Likewise.
33321         (df_analyze): For DF_FORWARD problems use RPO on the forward
33322         graph.  Adjust.
33323         (loop_inverted_post_order_compute): Adjust API.
33324         (df_analyze_loop): Adjust.
33325         (df_get_n_blocks): Likewise.
33326         (df_get_postorder): Likewise.
33328 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33330         PR target/108270
33331         * config/riscv/riscv-vsetvl.cc
33332         (vector_infos_manager::all_empty_predecessor_p): New function.
33333         (pass_vsetvl::backward_demand_fusion): Ditto.
33334         * config/riscv/riscv-vsetvl.h: Ditto.
33336 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
33338         PR target/109582
33339         * config/riscv/generic.md: Change standard names to insn names.
33341 2023-04-21  Richard Biener  <rguenther@suse.de>
33343         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
33344         (compute_laterin): Use RPO.
33345         (compute_available): Likewise.
33347 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
33349         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
33351 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33353         PR target/109547
33354         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
33355         (vector_insn_info::skip_avl_compatible_p): Ditto.
33356         (vector_insn_info::merge): Remove default value.
33357         (pass_vsetvl::compute_local_backward_infos): Ditto.
33358         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
33359         * config/riscv/riscv-vsetvl.h: Ditto.
33361 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
33363         * doc/extend.texi (Common Function Attributes): Remove duplicate
33364         word.
33366 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
33368         PR tree-optimization/109564
33369         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
33370         UNDEFINED range names when deciding if all PHI arguments are the same,
33372 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
33374         PR tree-optimization/109011
33375         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
33376         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
33377         .CTZ (X) = PREC - .POPCOUNT (X | -X).
33379 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
33381         * lra-constraints.cc (match_reload): Exclude some hard regs for
33382         multi-reg inout reload pseudos used in asm in different mode.
33384 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
33386         * config/arm/arm.cc (thumb1_legitimate_address_p):
33387         Use VIRTUAL_REGISTER_P predicate.
33388         (arm_eliminable_register): Ditto.
33389         * config/avr/avr.md (push<mode>_1): Ditto.
33390         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
33391         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
33392         * config/i386/predicates.md (register_no_elim_operand): Ditto.
33393         * config/iq2000/predicates.md (call_insn_operand): Ditto.
33394         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
33396 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
33398         PR target/78952
33399         * config/i386/predicates.md (extract_operator): New predicate.
33400         * config/i386/i386.md (any_extract): Remove code iterator.
33401         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
33402         (*cmpqi_ext<mode>_1): Ditto.
33403         (*cmpqi_ext<mode>_2): Ditto.
33404         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
33405         (*cmpqi_ext<mode>_3): Ditto.
33406         (*cmpqi_ext<mode>_4): Ditto.
33407         (*extzvqi_mem_rex64): Ditto.
33408         (*extzvqi): Ditto.
33409         (*insvqi_2): Ditto.
33410         (*extendqi<SWI24:mode>_ext_1): Ditto.
33411         (*addqi_ext<mode>_0): Ditto.
33412         (*addqi_ext<mode>_1): Ditto.
33413         (*addqi_ext<mode>_2): Ditto.
33414         (*subqi_ext<mode>_0): Ditto.
33415         (*subqi_ext<mode>_2): Ditto.
33416         (*testqi_ext<mode>_1): Ditto.
33417         (*testqi_ext<mode>_2): Ditto.
33418         (*andqi_ext<mode>_0): Ditto.
33419         (*andqi_ext<mode>_1): Ditto.
33420         (*andqi_ext<mode>_1_cc): Ditto.
33421         (*andqi_ext<mode>_2): Ditto.
33422         (*<any_or:code>qi_ext<mode>_0): Ditto.
33423         (*<any_or:code>qi_ext<mode>_1): Ditto.
33424         (*<any_or:code>qi_ext<mode>_2): Ditto.
33425         (*xorqi_ext<mode>_1_cc): Ditto.
33426         (*negqi_ext<mode>_2): Ditto.
33427         (*ashlqi_ext<mode>_2): Ditto.
33428         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
33430 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
33432         PR target/108248
33433         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
33434         <bitmanip_insn> as the type to allow for fine grained control of
33435         scheduling these insns.
33436         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
33437         min, max.
33438         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
33439         pcnt, signed and unsigned min/max.
33441 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33442             kito-cheng  <kito.cheng@sifive.com>
33444         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
33446 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
33447             kito-cheng  <kito.cheng@sifive.com>
33449         PR target/109535
33450         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
33451         (pass_vsetvl::cleanup_insns): Fix bug.
33453 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
33455         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
33456         (ldexp<mode>3): Delete.
33457         (ldexp<mode>3<exec>): Change "B" to "A".
33459 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
33460             Jonathan Wakely  <jwakely@redhat.com>
33462         * tree.h (built_in_function_equal_p): New helper function.
33463         (fndecl_built_in_p): Turn into variadic template to support
33464         1 or more built_in_function arguments.
33465         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
33466         * gimplify.cc (goa_stabilize_expr): Likewise.
33467         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
33468         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
33469         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
33470         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
33471         cgraph_update_edges_for_call_stmt_node,
33472         cgraph_edge::verify_corresponds_to_fndecl,
33473         cgraph_node::verify_node): Likewise.
33474         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
33475         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
33476         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
33478 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
33480         PR tree-optimization/109011
33481         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
33482         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
33483         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
33484         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
33485         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
33486         case.
33487         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
33489 2023-04-20  Richard Biener  <rguenther@suse.de>
33491         * df-core.cc (rest_of_handle_df_initialize): Remove
33492         computation of df->postorder, df->postorder_inverted and
33493         df->n_blocks.
33495 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
33497         * common/config/i386/i386-common.cc
33498         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
33499         (ix86_handle_option): Set AVX flag for VAES.
33500         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
33501         Add OPTION_MASK_ISA2_VAES_UNSET.
33502         (def_builtin): Share builtin between AES and VAES.
33503         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
33504         Ditto.
33505         * config/i386/i386.md (aes): New isa attribute.
33506         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
33507         (aesenclast): Ditto.
33508         (aesdec): Ditto.
33509         (aesdeclast): Ditto.
33510         * config/i386/vaesintrin.h: Remove redundant avx target push.
33511         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
33512         (_mm_aesdeclast_si128): Ditto.
33513         (_mm_aesenc_si128): Ditto.
33514         (_mm_aesenclast_si128): Ditto.
33516 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
33518         * config/i386/avx2intrin.h
33519         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
33520         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
33521         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
33522         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
33523         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
33524         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
33525         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
33526         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
33527         (_mm_reduce_add_epi16): New instrinsics.
33528         (_mm_reduce_mul_epi16): Ditto.
33529         (_mm_reduce_and_epi16): Ditto.
33530         (_mm_reduce_or_epi16): Ditto.
33531         (_mm_reduce_max_epi16): Ditto.
33532         (_mm_reduce_max_epu16): Ditto.
33533         (_mm_reduce_min_epi16): Ditto.
33534         (_mm_reduce_min_epu16): Ditto.
33535         (_mm256_reduce_add_epi16): Ditto.
33536         (_mm256_reduce_mul_epi16): Ditto.
33537         (_mm256_reduce_and_epi16): Ditto.
33538         (_mm256_reduce_or_epi16): Ditto.
33539         (_mm256_reduce_max_epi16): Ditto.
33540         (_mm256_reduce_max_epu16): Ditto.
33541         (_mm256_reduce_min_epi16): Ditto.
33542         (_mm256_reduce_min_epu16): Ditto.
33543         (_mm_reduce_add_epi8): Ditto.
33544         (_mm_reduce_mul_epi8): Ditto.
33545         (_mm_reduce_and_epi8): Ditto.
33546         (_mm_reduce_or_epi8): Ditto.
33547         (_mm_reduce_max_epi8): Ditto.
33548         (_mm_reduce_max_epu8): Ditto.
33549         (_mm_reduce_min_epi8): Ditto.
33550         (_mm_reduce_min_epu8): Ditto.
33551         (_mm256_reduce_add_epi8): Ditto.
33552         (_mm256_reduce_mul_epi8): Ditto.
33553         (_mm256_reduce_and_epi8): Ditto.
33554         (_mm256_reduce_or_epi8): Ditto.
33555         (_mm256_reduce_max_epi8): Ditto.
33556         (_mm256_reduce_max_epu8): Ditto.
33557         (_mm256_reduce_min_epi8): Ditto.
33558         (_mm256_reduce_min_epu8): Ditto.
33559         * config/i386/avx512vlbwintrin.h:
33560         (_mm_mask_reduce_add_epi16): Ditto.
33561         (_mm_mask_reduce_mul_epi16): Ditto.
33562         (_mm_mask_reduce_and_epi16): Ditto.
33563         (_mm_mask_reduce_or_epi16): Ditto.
33564         (_mm_mask_reduce_max_epi16): Ditto.
33565         (_mm_mask_reduce_max_epu16): Ditto.
33566         (_mm_mask_reduce_min_epi16): Ditto.
33567         (_mm_mask_reduce_min_epu16): Ditto.
33568         (_mm256_mask_reduce_add_epi16): Ditto.
33569         (_mm256_mask_reduce_mul_epi16): Ditto.
33570         (_mm256_mask_reduce_and_epi16): Ditto.
33571         (_mm256_mask_reduce_or_epi16): Ditto.
33572         (_mm256_mask_reduce_max_epi16): Ditto.
33573         (_mm256_mask_reduce_max_epu16): Ditto.
33574         (_mm256_mask_reduce_min_epi16): Ditto.
33575         (_mm256_mask_reduce_min_epu16): Ditto.
33576         (_mm_mask_reduce_add_epi8): Ditto.
33577         (_mm_mask_reduce_mul_epi8): Ditto.
33578         (_mm_mask_reduce_and_epi8): Ditto.
33579         (_mm_mask_reduce_or_epi8): Ditto.
33580         (_mm_mask_reduce_max_epi8): Ditto.
33581         (_mm_mask_reduce_max_epu8): Ditto.
33582         (_mm_mask_reduce_min_epi8): Ditto.
33583         (_mm_mask_reduce_min_epu8): Ditto.
33584         (_mm256_mask_reduce_add_epi8): Ditto.
33585         (_mm256_mask_reduce_mul_epi8): Ditto.
33586         (_mm256_mask_reduce_and_epi8): Ditto.
33587         (_mm256_mask_reduce_or_epi8): Ditto.
33588         (_mm256_mask_reduce_max_epi8): Ditto.
33589         (_mm256_mask_reduce_max_epu8): Ditto.
33590         (_mm256_mask_reduce_min_epi8): Ditto.
33591         (_mm256_mask_reduce_min_epu8): Ditto.
33593 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
33595         * common/config/i386/i386-common.cc
33596         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
33597         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
33598         (OPTION_MASK_ISA_AVX_UNSET):
33599         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
33600         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
33601         * config/i386/i386.md (vpclmulqdqvl): New.
33602         * config/i386/sse.md (pclmulqdq): Add evex encoding.
33603         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
33604         push.
33606 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
33608         * config/i386/avx512vlbwintrin.h
33609         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
33610         (_mm_mask_blend_epi8): Ditto.
33611         (_mm256_mask_blend_epi16): Ditto.
33612         (_mm256_mask_blend_epi8): Ditto.
33613         * config/i386/avx512vlintrin.h
33614         (_mm256_mask_blend_pd): Ditto.
33615         (_mm256_mask_blend_ps): Ditto.
33616         (_mm256_mask_blend_epi64): Ditto.
33617         (_mm256_mask_blend_epi32): Ditto.
33618         (_mm_mask_blend_pd): Ditto.
33619         (_mm_mask_blend_ps): Ditto.
33620         (_mm_mask_blend_epi64): Ditto.
33621         (_mm_mask_blend_epi32): Ditto.
33622         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
33623         (VF_AVX512HFBFVL): Move it before the first usage.
33624         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
33625         to VF_AVX512HFBFVL.
33627 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
33629         * common/config/i386/i386-common.cc
33630         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
33631         to OPTION_MASK_ISA_AVX512BW_SET.
33632         (OPTION_MASK_ISA_AVX512F_UNSET):
33633         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
33634         (OPTION_MASK_ISA_AVX512BW_UNSET):
33635         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
33636         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
33637         * config/i386/avx512vbmi2vlintrin.h: Ditto.
33638         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
33639         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
33640         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
33641         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
33642         VI12_AVX512VL.
33643         (compressstore<mode>_mask): Ditto.
33644         (expand<mode>_mask): Ditto.
33645         (expand<mode>_maskz): Ditto.
33646         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
33647         VI12_VI48F_AVX512VL.
33649 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
33651         * common/config/i386/i386-common.cc
33652         (OPTION_MASK_ISA_AVX512BITALG_SET):
33653         Change OPTION_MASK_ISA_AVX512F_SET
33654         to OPTION_MASK_ISA_AVX512BW_SET.
33655         (OPTION_MASK_ISA_AVX512F_UNSET):
33656         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
33657         (OPTION_MASK_ISA_AVX512BW_UNSET):
33658         Add OPTION_MASK_ISA_AVX512BITALG_SET.
33659         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
33660         * config/i386/i386-builtin.def:
33661         Remove redundant OPTION_MASK_ISA_AVX512BW.
33662         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
33663         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
33664         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
33666 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
33668         * config/i386/i386-expand.cc
33669         (ix86_check_builtin_isa_match): Correct wrong comments.
33670         Add a new macro SHARE_BUILTIN and refactor the current if
33671         clauses to macro.
33673 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
33675         * config/i386/cpuid.h: Open a new section for Extended Features
33676         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
33677         %ecx == 1).
33679 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
33681         * config/i386/sse.md: Modify insn vperm{i,f}
33682         and vshuf{i,f}.
33684 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
33686         * config/xtensa/xtensa-opts.h: New header.
33687         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
33688         xtensa_strict_align.
33689         * config/xtensa/xtensa.cc (xtensa_option_override): When
33690         -m[no-]strict-align is not specified in the command line set
33691         xtensa_strict_align to 0 if the hardware supports both unaligned
33692         loads and stores or to 1 otherwise.
33693         * config/xtensa/xtensa.opt (mstrict-align): New option.
33694         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
33696 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
33698         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
33699         function.
33701 2023-04-19  Andrew Pinski  <apinski@marvell.com>
33703         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
33705 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33707         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
33708         (VECTOR_BOOL_MODE): Ditto.
33709         (ADJUST_NUNITS): Ditto.
33710         (ADJUST_ALIGNMENT): Ditto.
33711         (ADJUST_BYTESIZE): Ditto.
33712         (ADJUST_PRECISION): Ditto.
33713         (RVV_MODES): Ditto.
33714         (VECTOR_MODE_WITH_PREFIX): Ditto.
33715         * config/riscv/riscv-v.cc (ENTRY): Ditto.
33716         (get_vlmul): Ditto.
33717         (get_ratio): Ditto.
33718         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
33719         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
33720         (vbool64_t): Ditto.
33721         (vbool32_t): Ditto.
33722         (vbool16_t): Ditto.
33723         (vbool8_t): Ditto.
33724         (vbool4_t): Ditto.
33725         (vbool2_t): Ditto.
33726         (vbool1_t): Ditto.
33727         (vint8mf8_t): Ditto.
33728         (vuint8mf8_t): Ditto.
33729         (vint8mf4_t): Ditto.
33730         (vuint8mf4_t): Ditto.
33731         (vint8mf2_t): Ditto.
33732         (vuint8mf2_t): Ditto.
33733         (vint8m1_t): Ditto.
33734         (vuint8m1_t): Ditto.
33735         (vint8m2_t): Ditto.
33736         (vuint8m2_t): Ditto.
33737         (vint8m4_t): Ditto.
33738         (vuint8m4_t): Ditto.
33739         (vint8m8_t): Ditto.
33740         (vuint8m8_t): Ditto.
33741         (vint16mf4_t): Ditto.
33742         (vuint16mf4_t): Ditto.
33743         (vint16mf2_t): Ditto.
33744         (vuint16mf2_t): Ditto.
33745         (vint16m1_t): Ditto.
33746         (vuint16m1_t): Ditto.
33747         (vint16m2_t): Ditto.
33748         (vuint16m2_t): Ditto.
33749         (vint16m4_t): Ditto.
33750         (vuint16m4_t): Ditto.
33751         (vint16m8_t): Ditto.
33752         (vuint16m8_t): Ditto.
33753         (vint32mf2_t): Ditto.
33754         (vuint32mf2_t): Ditto.
33755         (vint32m1_t): Ditto.
33756         (vuint32m1_t): Ditto.
33757         (vint32m2_t): Ditto.
33758         (vuint32m2_t): Ditto.
33759         (vint32m4_t): Ditto.
33760         (vuint32m4_t): Ditto.
33761         (vint32m8_t): Ditto.
33762         (vuint32m8_t): Ditto.
33763         (vint64m1_t): Ditto.
33764         (vuint64m1_t): Ditto.
33765         (vint64m2_t): Ditto.
33766         (vuint64m2_t): Ditto.
33767         (vint64m4_t): Ditto.
33768         (vuint64m4_t): Ditto.
33769         (vint64m8_t): Ditto.
33770         (vuint64m8_t): Ditto.
33771         (vfloat32mf2_t): Ditto.
33772         (vfloat32m1_t): Ditto.
33773         (vfloat32m2_t): Ditto.
33774         (vfloat32m4_t): Ditto.
33775         (vfloat32m8_t): Ditto.
33776         (vfloat64m1_t): Ditto.
33777         (vfloat64m2_t): Ditto.
33778         (vfloat64m4_t): Ditto.
33779         (vfloat64m8_t): Ditto.
33780         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
33781         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
33782         (riscv_convert_vector_bits): Ditto.
33783         * config/riscv/riscv.md:
33784         * config/riscv/vector-iterators.md:
33785         * config/riscv/vector.md
33786         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
33787         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
33788         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
33789         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
33790         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
33791         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
33792         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
33793         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
33794         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
33796 2023-04-19  Pan Li  <pan2.li@intel.com>
33798         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
33799         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
33801 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
33803         PR target/78904
33804         PR target/78952
33805         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
33806         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
33807         for operand 0. Use any_extract code iterator.
33808         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
33809         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
33810         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
33811         (*cmpqi_ext<mode>_1): Use general_operand predicate
33812         for operand 1. Use any_extract code iterator.
33813         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
33814         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
33816 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33818         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
33819         (aarch64_uaddw2<mode>): Delete.
33820         (aarch64_ssubw2<mode>): Delete.
33821         (aarch64_usubw2<mode>): Delete.
33822         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
33824 2023-04-19  Richard Biener  <rguenther@suse.de>
33826         * tree-ssa-structalias.cc (do_ds_constraint): Use
33827         solve_add_graph_edge.
33829 2023-04-19  Richard Biener  <rguenther@suse.de>
33831         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
33832         split out from ...
33833         (do_sd_constraint): ... here.
33835 2023-04-19  Richard Biener  <rguenther@suse.de>
33837         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
33838         rejecting the merge when A contains only a non-local label.
33840 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
33842         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
33843         (VIRTUAL_REGISTER_NUM_P): Ditto.
33844         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
33845         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
33846         * function.cc (instantiate_decl_rtl): Ditto.
33847         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
33848         (nonzero_address_p): Ditto.
33849         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
33851 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
33853         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
33855 2023-04-19  Richard Biener  <rguenther@suse.de>
33857         * system.h (auto_mpz::operator->()): New.
33858         * realmpfr.h (auto_mpfr::operator->()): New.
33859         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
33860         * real.cc (real_from_string): Likewise.
33861         (dconst_e_ptr): Likewise.
33862         (dconst_sqrt2_ptr): Likewise.
33863         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
33864         Use auto_mpz.
33865         (bound_difference_of_offsetted_base): Likewise.
33866         (number_of_iterations_ne): Likewise.
33867         (number_of_iterations_lt_to_ne): Likewise.
33868         * ubsan.cc: Include realmpfr.h.
33869         (ubsan_instrument_float_cast): Use auto_mpfr.
33871 2023-04-19  Richard Biener  <rguenther@suse.de>
33873         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
33874         edges, remove edges from escaped after special-casing them.
33876 2023-04-19  Richard Biener  <rguenther@suse.de>
33878         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
33879         special casing.
33881 2023-04-19  Richard Biener  <rguenther@suse.de>
33883         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
33884         to the LHS varinfo solution member.
33886 2023-04-19  Richard Biener  <rguenther@suse.de>
33888         * tree-ssa-structalias.cc (topo_visit): Look at the real
33889         destination of edges.
33891 2023-04-19  Richard Biener  <rguenther@suse.de>
33893         PR tree-optimization/44794
33894         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
33895         If an epilogue loop is required set its iteration upper bound.
33897 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
33899         PR target/109465
33900         * config/loongarch/loongarch-protos.h
33901         (loongarch_expand_block_move): Add a parameter as alignment RTX.
33902         * config/loongarch/loongarch.h:
33903         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
33904         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
33905         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
33906         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
33907         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
33908         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
33909         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
33910         Take the alignment from the parameter, but set it to
33911         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
33912         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
33913         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
33914         (loongarch_block_move_straight): When there are left-over bytes,
33915         half the mode size instead of falling back to byte mode at once.
33916         (loongarch_block_move_loop): Limit the length of loop body with
33917         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
33918         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
33919         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
33920         to loongarch_expand_block_move.
33922 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
33924         * config/loongarch/loongarch.cc
33925         (loongarch_setup_incoming_varargs): Don't save more GARs than
33926         cfun->va_list_gpr_size / UNITS_PER_WORD.
33928 2023-04-19  Richard Biener  <rguenther@suse.de>
33930         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
33931         no epilogue condition.
33933 2023-04-19  Richard Biener  <rguenther@suse.de>
33935         * gimple.h (gimple_assign_load): Outline...
33936         * gimple.cc (gimple_assign_load): ... here.  Avoid
33937         get_base_address and instead just strip the outermost
33938         handled component, treating a remaining handled component
33939         as load.
33941 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33943         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
33944         definition.
33945         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
33947 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
33949         PR tree-optimization/109011
33950         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
33951         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
33952         CLZ, CTZ and FFS.  Remove vargs variable, use
33953         gimple_build_call_internal rather than gimple_build_call_internal_vec.
33954         (vect_vect_recog_func_ptrs): Adjust popcount entry.
33956 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
33958         PR target/109040
33959         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
33960         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
33961         a new REG rather than the SUBREG.
33963 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
33965         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
33966         New pattern.
33968 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33970         PR target/108840
33971         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
33972         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
33974 2023-04-19  Richard Biener  <rguenther@suse.de>
33976         PR rtl-optimization/109237
33977         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
33978         TREE_VISITED on INSN_VAR_LOCATION_DECL.
33979         (delete_trivially_dead_insns): Maintain TREE_VISITED on
33980         active debug bind INSN_VAR_LOCATION_DECL.
33982 2023-04-19  Richard Biener  <rguenther@suse.de>
33984         PR rtl-optimization/109237
33985         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
33987 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
33989         * doc/install.texi (enable-decimal-float): Add AArch64.
33991 2023-04-19  liuhongt  <hongtao.liu@intel.com>
33993         PR rtl-optimization/109351
33994         * ira.cc (setup_class_subset_and_memory_move_costs): Check
33995         hard_regno_mode_ok before setting lowest memory move cost for
33996         the mode with different reg classes.
33998 2023-04-18  Jason Merrill  <jason@redhat.com>
34000         * doc/invoke.texi: Remove stray @gol.
34002 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
34004         * ifcvt.cc (cond_move_process_if_block): Consider the result of
34005         targetm.noce_conversion_profitable_p() when replacing the original
34006         sequence with the converted one.
34008 2023-04-18  Mark Harmstone  <mark@harmstone.com>
34010         * common.opt (gcodeview): Add new option.
34011         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
34012         * opts.cc (command_handle_option): Similarly.
34013         * doc/invoke.texi: Add documentation for -gcodeview.
34015 2023-04-18  Andrew Pinski  <apinski@marvell.com>
34017         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
34018         (make_pass_phiopt): Make execute out of line.
34019         (tree_ssa_cs_elim): Move code into ...
34020         (pass_cselim::execute): here.
34022 2023-04-18  Sam James  <sam@gentoo.org>
34024         * system.h: Drop unused INCLUDE_PTHREAD_H.
34026 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
34028         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
34029         condition.
34031 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
34033         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
34034         (bswapdi2, bswapsi2): Similarly.
34036 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
34038         PR target/94908
34039         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
34040         Use CODE_FOR_sse4_1_insertps_v4sf.
34041         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
34042         (expand_vec_perm_1): Call expand_vec_per_insertps.
34043         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
34044         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
34045         (@sse4_1_insertps_<mode>): New insn pattern.
34046         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
34047         pattern from sse4_1_insertps using VI4F_128 mode iterator.
34049 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
34051         * value-range.cc (gt_ggc_mx): New.
34052         (gt_pch_nx): New.
34053         * value-range.h (class vrange): Add GTY marker.
34054         (class frange): Same.
34055         (gt_ggc_mx): Remove.
34056         (gt_pch_nx): Remove.
34058 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
34060         * lra-constraints.cc (constraint_unique): New.
34061         (process_address_1): Apply constraint_unique test.
34062         * recog.cc (constrain_operands): Allow relaxed memory
34063         constaints.
34065 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
34067         * doc/extend.texi (Target Builtins): Add RISC-V Vector
34068         Intrinsics.
34069         (RISC-V Vector Intrinsics): Document GCC implemented which
34070         version of RISC-V vector intrinsics and its reference.
34072 2023-04-18  Richard Biener  <rguenther@suse.de>
34074         PR middle-end/108786
34075         * bitmap.h (bitmap_clear_first_set_bit): New.
34076         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
34077         bitmap_first_set_bit and add optional clearing of the bit.
34078         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
34079         (bitmap_clear_first_set_bit): Likewise.
34080         * df-core.cc (df_worklist_dataflow_doublequeue): Use
34081         bitmap_clear_first_set_bit.
34082         * graphite-scop-detection.cc (scop_detection::merge_sese):
34083         Likewise.
34084         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
34085         (sanitize_asan_mark_poison): Likewise.
34086         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
34087         * tree-into-ssa.cc (rewrite_blocks): Likewise.
34088         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
34089         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
34091 2023-04-18  Richard Biener  <rguenther@suse.de>
34093         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
34094         (dump_sa_points_to_info): ... this function.
34095         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
34096         and call dump_sa_stats guarded with TDF_STATS.
34097         (ipa_pta_execute): Likewise.
34098         (compute_may_aliases): Guard dump_alias_info with
34099         TDF_DETAILS|TDF_ALIAS.
34101 2023-04-18  Andrew Pinski  <apinski@marvell.com>
34103         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
34104         the expression that is being tried when TDF_FOLDING
34105         is true.
34106         (phiopt_worker::match_simplify_replacement): Dump
34107         the sequence which was created by gimple_simplify_phiopt
34108         when TDF_FOLDING is true.
34110 2023-04-18  Andrew Pinski  <apinski@marvell.com>
34112         * tree-ssa-phiopt.cc (match_simplify_replacement):
34113         Simplify code that does the movement slightly.
34115 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34117         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
34118         define_expand.
34119         (rev16<mode>2): Rename to...
34120         (aarch64_rev16<mode>2_alt1): ... This.
34121         (rev16<mode>2_alt): Rename to...
34122         (*aarch64_rev16<mode>2_alt2): ... This.
34124 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
34126         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
34127         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
34128         declaration.
34129         * range-op-float.cc (zero_range): Use dconstm0.
34130         (zero_to_inf_range): Same.
34131         * real.h (dconstm0): New.
34132         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
34133         (frange::set_zero): Do not declare dconstm0.
34135 2023-04-18  Richard Biener  <rguenther@suse.de>
34137         * system.h (class auto_mpz): New,
34138         * realmpfr.h (class auto_mpfr): Likewise.
34139         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
34140         (do_mpfr_arg2): Likewise.
34141         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
34143 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34145         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
34146         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
34148 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
34150         * value-range.cc (frange::operator==): Adjust for NAN.
34151         (range_tests_nan): Remove some NAN tests.
34153 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
34155         * inchash.cc (hash::add_real_value): New.
34156         * inchash.h (class hash): Add add_real_value.
34157         * value-range.cc (add_vrange): New.
34158         * value-range.h (inchash::add_vrange): New.
34160 2023-04-18  Richard Biener  <rguenther@suse.de>
34162         PR tree-optimization/109539
34163         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
34164         Re-implement pointer relatedness for PHIs.
34166 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
34168         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
34169         (SV_FP): New iterator.
34170         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
34171         (recip<mode>2): Unify the two patterns using SV_FP.
34172         (div_scale<mode><exec_vcc>): New insn.
34173         (div_fmas<mode><exec>): New insn.
34174         (div_fixup<mode><exec>): New insn.
34175         (div<mode>3): Unify the two expanders and rewrite using hardfp.
34176         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
34177         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
34178         and UNSPEC_DIV_FIXUP.
34179         (vccwait): New attribute.
34181 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34183         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
34184         if the argument matches that.
34186 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34188         * config/aarch64/atomics.md
34189         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
34190         Use SD_HSDI for destination mode iterator.
34192 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
34194         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
34195         of z-extensions and s-extensions.
34196         (riscv_subset_list::parse): Likewise.
34198 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
34200         PR tree-optimization/109240
34201         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
34202         first vec_perm operand and minus as second using fneg/fadd and
34203         minus as first vec_perm operand and plus as second using fneg/fsub.
34205 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
34207         * data-streamer.cc (bp_pack_real_value): New.
34208         (bp_unpack_real_value): New.
34209         * data-streamer.h (bp_pack_real_value):  New.
34210         (bp_unpack_real_value): New.
34211         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
34212         bp_unpack_real_value.
34213         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
34214         bp_pack_real_value.
34216 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
34218         * wide-int.h (WIDE_INT_MAX_HWIS): New.
34219         (class fixed_wide_int_storage): Use it.
34220         (trailing_wide_ints <N>::set_precision): Use it.
34221         (trailing_wide_ints <N>::extra_size): Use it.
34223 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
34225         * config/loongarch/loongarch-protos.h
34226         (loongarch_addu16i_imm12_operand_p): New function prototype.
34227         (loongarch_split_plus_constant): Likewise.
34228         * config/loongarch/loongarch.cc
34229         (loongarch_addu16i_imm12_operand_p): New function.
34230         (loongarch_split_plus_constant): Likewise.
34231         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
34232         (DUAL_IMM12_OPERAND): Likewise.
34233         (DUAL_ADDU16I_OPERAND): Likewise.
34234         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
34235         constraint.
34236         * config/loongarch/predicates.md (const_dual_imm12_operand): New
34237         predicate.
34238         (const_addu16i_operand): Likewise.
34239         (const_addu16i_imm12_di_operand): Likewise.
34240         (const_addu16i_imm12_si_operand): Likewise.
34241         (plus_di_operand): Likewise.
34242         (plus_si_operand): Likewise.
34243         (plus_si_extend_operand): Likewise.
34244         * config/loongarch/loongarch.md (add<mode>3): Convert to
34245         define_insn_and_split.  Use plus_<mode>_operand predicate
34246         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
34247         and Le constraints.
34248         (*addsi3_extended): Convert to define_insn_and_split.  Use
34249         plus_si_extend_operand instead of arith_operand.  Add
34250         alternatives for La and Le alternatives.
34252 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
34254         * value-range.h (Value_Range::Value_Range): New.
34255         (Value_Range::contains_p): New.
34257 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
34259         * value-range.h (class vrange): Make m_discriminator const.
34260         (class irange): Make m_max_ranges const.  Adjust constructors
34261         accordingly.
34262         (class unsupported_range): Construct vrange appropriately.
34263         (class frange): Same.
34265 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
34267         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
34268         definition.
34270 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
34272         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
34274 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
34276         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
34277         readable.
34278         (riscv_expand_epilogue): Likewise.
34280 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
34282         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
34283         stack allocation.
34284         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
34286 2023-04-17  Andrew Pinski  <apinski@marvell.com>
34288         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
34289         prototype.
34291 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
34293         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
34294         global ranges.
34296 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
34298         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
34299         parameter remaining_size.
34300         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
34301         (riscv_expand_prologue): Likewise.
34302         (riscv_expand_epilogue): Likewise.
34304 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
34306         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
34307         roriw for constant counts.
34308         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
34309         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
34310         (simplify_context::simplify_binary_operation_1): Use it.
34311         * expmed.cc (expand_shift_1): Likewise.
34313 2023-04-17  Martin Jambor  <mjambor@suse.cz>
34315         PR ipa/107769
34316         PR ipa/109318
34317         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
34318         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
34319         (ipa_zap_jf_refdesc): New function.
34320         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
34321         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
34322         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
34323         the new parameter of find_reference.
34324         (adjust_references_in_caller): Likewise. Make sure the constant jump
34325         function is not used to decrement a refdec counter again.  Only
34326         decrement refdesc counters when the pass_through jump function allows
34327         it.  Added a detailed dump when decrementing refdesc counters.
34328         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
34329         (ipa_set_jf_simple_pass_through): Initialize the new flag.
34330         (ipa_set_jf_unary_pass_through): Likewise.
34331         (ipa_set_jf_arith_pass_through): Likewise.
34332         (remove_described_reference): Provide a value for the new parameter of
34333         find_reference.
34334         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
34335         the previous pass_through had a flag mandating that we do so.
34336         (propagate_controlled_uses): Likewise.  Only decrement refdesc
34337         counters when the pass_through jump function allows it.
34338         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
34339         parameter of find_reference.
34340         (ipa_write_jump_function): Assert the new flag does not have to be
34341         streamed.
34342         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
34343         it in searching.
34345 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
34346             Di Zhao  <di.zhao@amperecomputing.com>
34348         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
34349         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
34350         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
34351         Check for the above tuning option when processing loads.
34353 2023-04-17  Richard Biener  <rguenther@suse.de>
34355         PR tree-optimization/109524
34356         * tree-vrp.cc (remove_unreachable::m_list): Change to a
34357         vector of pairs of block indices.
34358         (remove_unreachable::maybe_register_block): Adjust.
34359         (remove_unreachable::remove_and_update_globals): Likewise.
34360         Deal with removed blocks.
34362 2023-04-16  Jeff Law  <jlaw@ventanamicro>
34364         PR target/109508
34365         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
34366         TARGET_SFB_ALU, force the true arm into a register.
34368 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
34370         PR target/104989
34371         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
34372         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
34373         size is zero.
34374         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
34375         (pa_function_arg_size): Change return type to int.  Return zero
34376         for arguments larger than 1 GB.  Update comments.
34378 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
34380         PR tree-optimization/109154
34381         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
34382         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
34384 2023-04-15  Jason Merrill  <jason@redhat.com>
34386         PR c++/109514
34387         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
34388         Overhaul lhs_ref.ref analysis.
34390 2023-04-14  Richard Biener  <rguenther@suse.de>
34392         PR tree-optimization/109502
34393         * tree-vect-stmts.cc (vectorizable_assignment): Fix
34394         check for conversion between mask and non-mask types.
34396 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
34397             Jakub Jelinek  <jakub@redhat.com>
34399         PR target/108947
34400         PR target/109040
34401         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
34402         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
34403         smaller than word_mode.
34404         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
34405         <case AND>: Likewise.
34407 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
34409         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
34410         of GEN_INT.
34412 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
34414         PR tree-optimization/108139
34415         PR tree-optimization/109462
34416         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
34417         equivalency check for PHI nodes.
34418         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
34419         does not dominate single-arg equivalency edges.
34421 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
34423         PR target/108910
34424         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
34425         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
34427 2023-04-13  Richard Biener  <rguenther@suse.de>
34429         PR tree-optimization/109491
34430         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
34431         NULL operands test.
34433 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
34435         PR target/109479
34436         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
34437         (vint16mf4_t): Ditto.
34438         (vint32mf2_t): Ditto.
34439         (vint64m1_t): Ditto.
34440         (vint64m2_t): Ditto.
34441         (vint64m4_t): Ditto.
34442         (vint64m8_t): Ditto.
34443         (vuint8mf8_t): Ditto.
34444         (vuint16mf4_t): Ditto.
34445         (vuint32mf2_t): Ditto.
34446         (vuint64m1_t): Ditto.
34447         (vuint64m2_t): Ditto.
34448         (vuint64m4_t): Ditto.
34449         (vuint64m8_t): Ditto.
34450         (vfloat32mf2_t): Ditto.
34451         (vbool64_t): Ditto.
34452         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
34453         (register_vector_type): Ditto.
34454         (check_required_extensions): Fix condition.
34455         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
34456         (RVV_REQUIRE_ELEN_64): New define.
34457         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
34458         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
34459         (TARGET_VECTOR_FP64): Ditto.
34460         (ENTRY): Fix predicate.
34461         * config/riscv/vector-iterators.md: Fix predicate.
34463 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
34465         PR tree-optimization/109410
34466         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
34467         block if first statement of the function is a call to returns_twice
34468         function.
34470 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
34472         PR target/109458
34473         * config/i386/i386.cc: Include rtl-error.h.
34474         (ix86_print_operand): For z modifier warning, use warning_for_asm
34475         if this_is_asm_operands.  For Z modifier errors, use %c and code
34476         instead of hardcoded Z.
34478 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
34480         * config/i386/x-mingw32-utf8: Remove extrataneous $@
34482 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
34484         PR tree-optimization/109462
34485         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
34486         check for equivalences if NAME is a phi node.
34488 2023-04-12  Richard Biener  <rguenther@suse.de>
34490         PR tree-optimization/109473
34491         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
34492         Convert scalar result to the computation type before performing
34493         the reduction adjustment.
34495 2023-04-12  Richard Biener  <rguenther@suse.de>
34497         PR tree-optimization/109469
34498         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
34499         a returns-twice call.
34501 2023-04-12  Richard Biener  <rguenther@suse.de>
34503         PR tree-optimization/109434
34504         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
34505         handle possibly throwing calls when processing the LHS
34506         and may-defs are not OK.
34508 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
34510         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
34511         predicate to avoid splitting arith constants.
34513 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
34514             Pan Li  <pan2.li@intel.com>
34515             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
34516             Kito Cheng  <kito.cheng@sifive.com>
34518         PR target/109104
34519         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
34520         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
34521         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
34522         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
34523         (riscv_zero_call_used_regs): New.
34524         (TARGET_ZERO_CALL_USED_REGS): New.
34526 2023-04-11  Martin Liska  <mliska@suse.cz>
34528         PR driver/108241
34529         * opts.cc (finish_options): Drop also
34530         x_flag_var_tracking_assignments.
34532 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
34534         PR tree-optimization/108888
34535         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
34537 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
34539         PR target/108812
34540         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
34541         (vsx_sign_extend_v16qi_<mode>): ... this.
34542         (vsx_sign_extend_hi_<mode>): Rename to...
34543         (vsx_sign_extend_v8hi_<mode>): ... this.
34544         (vsx_sign_extend_si_v2di): Rename to...
34545         (vsx_sign_extend_v4si_v2di): ... this.
34546         (vsignextend_qi_<mode>): Remove.
34547         (vsignextend_hi_<mode>): Remove.
34548         (vsignextend_si_v2di): Remove.
34549         (vsignextend_v2di_v1ti): Remove.
34550         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
34551         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
34552         with gen_vsx_sign_extend_v16qi_v4si.
34553         * config/rs6000/rs6000.md (split for DI constant generation):
34554         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
34555         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
34556         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
34557         with gen_vsx_sign_extend_v16qi_si.
34558         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
34559         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
34560         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
34561         vsx_sign_extend_v16qi_v4si.
34562         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
34563         vsx_sign_extend_v8hi_v2di.
34564         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
34565         vsx_sign_extend_v8hi_v4si.
34566         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
34567         vsx_sign_extend_si_v2di.
34568         (__builtin_altivec_vsignext): Set bif-pattern to
34569         vsx_sign_extend_v2di_v1ti.
34570         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
34571         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
34572         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
34573         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
34575 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
34577         PR target/70243
34578         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
34579         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
34581 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
34583         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
34585 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
34587         * common/config/i386/cpuinfo.h (get_available_features):
34588         Detect AMX-COMPLEX.
34589         * common/config/i386/i386-common.cc
34590         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
34591         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
34592         (ix86_handle_option): Handle -mamx-complex.
34593         * common/config/i386/i386-cpuinfo.h (enum processor_features):
34594         Add FEATURE_AMX_COMPLEX.
34595         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
34596         amx-complex.
34597         * config.gcc: Add amxcomplexintrin.h.
34598         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
34599         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
34600         __AMX_COMPLEX__.
34601         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
34602         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
34603         Handle amx-complex.
34604         * config/i386/i386.opt: Add option -mamx-complex.
34605         * config/i386/immintrin.h: Include amxcomplexintrin.h.
34606         * doc/extend.texi: Document amx-complex.
34607         * doc/invoke.texi: Document -mamx-complex.
34608         * doc/sourcebuild.texi: Document target amx-complex.
34609         * config/i386/amxcomplexintrin.h: New file.
34611 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
34613         PR tree-optimization/109392
34614         * tree-vect-generic.cc (tree_vec_extract): Handle failure
34615         of maybe_push_res_to_seq better.
34617 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
34619         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
34620         poly-int-types.h.
34621         (SYSTEM_H): Depend on $(HASHTAB_H).
34622         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
34623         dependency on $(RTL_BASE_H), remove redundant dependency on
34624         insn-modes.h.
34626 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
34628         PR target/107674
34629         * config/arm/arm.cc (arm_effective_regno): New function.
34630         (mve_vector_mem_operand): Use it.
34632 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
34634         PR tree-optimization/109417
34635         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
34636         dependency is in SSA_NAME_FREE_LIST.
34638 2023-04-06  Andrew Pinski  <apinski@marvell.com>
34640         PR tree-optimization/109427
34641         * params.opt (-param=vect-induction-float=):
34642         Fix option attribute typo for IntegerRange.
34644 2023-04-05  Jeff Law  <jlaw@ventanamicro>
34646         PR target/108892
34647         * combine.cc (combine_instructions): Force re-recognition when
34648         after restoring the body of an insn to its original form.
34650 2023-04-05  Martin Jambor  <mjambor@suse.cz>
34652         PR ipa/108959
34653         * ipa-sra.cc (zap_useless_ipcp_results): New function.
34654         (process_isra_node_results): Call it.
34656 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
34658         * config/riscv/vector.md: Fix incorrect operand order.
34660 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34662         * config/riscv/riscv-vsetvl.cc
34663         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
34664         demand fusion.
34666 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
34668         * config/riscv/riscv-vector-builtins.def: Fix typo.
34669         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
34670         * config/riscv/vector-iterators.md: Ditto.
34672 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
34674         * doc/md.texi (Including Patterns): Fix page break.
34676 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
34678         PR tree-optimization/109386
34679         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
34680         foperator_le::op1_range, foperator_le::op2_range,
34681         foperator_gt::op1_range, foperator_gt::op2_range,
34682         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
34683         BRS_FALSE case even if the other op is maybe_isnan, not just
34684         known_isnan.
34685         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
34686         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
34687         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
34688         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
34689         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
34690         not just known_isnan.
34692 2023-04-04  Marek Polacek  <polacek@redhat.com>
34694         PR sanitizer/109107
34695         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
34696         when associating.
34697         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
34699 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
34701         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
34702         (mve_vcreateq_f<mode>): Swap operands.
34704 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
34706         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
34708 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
34710         PR target/109384
34711         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
34712         Reword diagnostics about zfinx conflict with f, formatting fixes.
34714 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
34716         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
34718 2023-04-04  Richard Biener  <rguenther@suse.de>
34720         PR tree-optimization/109304
34721         * tree-profile.cc (tree_profiling): Use symtab node
34722         availability to decide whether to skip adjusting calls.
34723         Do not adjust calls to internal functions.
34725 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
34727         PR target/108807
34728         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
34729         function for permutation control vector by considering big endianness.
34731 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
34733         PR target/108699
34734         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
34735         (rs6000_vprtyb<mode>2): ... this.
34736         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
34737         rs6000_vprtybv2di2.
34738         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
34739         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
34740         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
34741         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
34743 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
34744             Sandra Loosemore  <sandra@codesourcery.com>
34746         * doc/md.texi (Insn Splitting): Tweak wording for readability.
34748 2023-04-03  Martin Jambor  <mjambor@suse.cz>
34750         PR ipa/109303
34751         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
34752         offset + size will be representable in unsigned int.
34754 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
34756         * configure.ac (ZSTD_LIB): Move before zstd.h check.
34757         Unset gcc_cv_header_zstd_h without libzstd.
34758         * configure: Regenerate.
34760 2023-04-03  Martin Liska  <mliska@suse.cz>
34762         * doc/invoke.texi: Document new param.
34764 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
34766         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
34767         new check_effective_target function.
34769 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
34771         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
34772         (vfloat32m8_t): Likewise
34774 2023-04-03  liuhongt  <hongtao.liu@intel.com>
34776         * doc/md.texi: Document signbitm2.
34778 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34779             kito-cheng  <kito.cheng@sifive.com>
34781         * config/riscv/vector.md: Fix RA constraint.
34783 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34785         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
34786         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
34787         * config/riscv/vector.md: Fix scalar move bug.
34789 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
34791         * range-op-float.cc (foperator_equal::fold_range): If at least
34792         one of the op ranges is not singleton and neither is NaN and all
34793         4 bounds are zero, return [1, 1].
34794         (foperator_not_equal::fold_range): In the same case return [0, 0].
34796 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
34798         * range-op-float.cc (foperator_equal::fold_range): Perform the
34799         non-singleton handling regardless of maybe_isnan (op1, op2).
34800         (foperator_not_equal::fold_range): Likewise.
34801         (foperator_lt::fold_range, foperator_le::fold_range,
34802         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
34803         real_* comparison check which results in range_false (type)
34804         even if maybe_isnan (op1, op2).  Simplify.
34805         (foperator_ltgt): New class.
34806         (fop_ltgt): New variable.
34807         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
34808         fop_ltgt.
34810 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
34812         PR target/109254
34813         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
34814         returns VOIDmode, handle it like if the register isn't used for
34815         passing arguments at all.
34816         (apply_result_size): If targetm.calls.get_raw_result_mode returns
34817         VOIDmode, handle it like if the register isn't used for returning
34818         results at all.
34819         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
34820         means to return VOIDmode.
34821         * doc/tm.texi: Regenerated.
34822         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
34823         TARGET_SVE for P0_REGNUM.
34824         (aarch64_function_arg_regno_p): Also return true for p0-p3.
34825         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
34827 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
34829         * lra-constraints.cc: (combine_reload_insn): New function.
34831 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
34833         PR tree-optimization/91645
34834         * range-op-float.cc (foperator_unordered_lt::fold_range,
34835         foperator_unordered_le::fold_range,
34836         foperator_unordered_gt::fold_range,
34837         foperator_unordered_ge::fold_range,
34838         foperator_unordered_equal::fold_range): Call the ordered
34839         fold_range on ranges with cleared NaNs.
34840         * value-query.cc (range_query::get_tree_range): Handle also
34841         COMPARISON_CLASS_P trees.
34843 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
34844             Andrew Pinski  <pinskia@gmail.com>
34846         PR target/109328
34847         * config/riscv/t-riscv: Add missing dependencies.
34849 2023-03-31  liuhongt  <hongtao.liu@intel.com>
34851         * config/i386/i386.cc (inline_memory_move_cost): Return 100
34852         for MASK_REGS when MODE_SIZE > 8.
34854 2023-03-31  liuhongt  <hongtao.liu@intel.com>
34856         PR target/85048
34857         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
34858         ufloat/ufix to floatuns/fixuns.
34859         * config/i386/i386-expand.cc
34860         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
34861         * config/i386/sse.md
34862         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
34863         Renamed to ..
34864         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
34865         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
34866         Renamed to ..
34867         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
34868         .. this.
34869         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
34870         Renamed to ..
34871         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
34872         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
34873         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
34874         (ufloatv2siv2df2<mask_name>): Renamed to ..
34875         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
34876         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
34877         Renamed to ..
34878         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
34879         .. this.
34880         (ufix_notruncv2dfv2si2): Renamed to ..
34881         (fixuns_notruncv2dfv2si2):.. this.
34882         (ufix_notruncv2dfv2si2_mask): Renamed to ..
34883         (fixuns_notruncv2dfv2si2_mask): .. this.
34884         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
34885         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
34886         (ufix_truncv2dfv2si2): Renamed to ..
34887         (*fixuns_truncv2dfv2si2): .. this.
34888         (ufix_truncv2dfv2si2_mask): Renamed to ..
34889         (fixuns_truncv2dfv2si2_mask): .. this.
34890         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
34891         (*fixuns_truncv2dfv2si2_mask_1): .. this.
34892         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
34893         (fixuns_truncv4dfv4si2<mask_name>): .. this.
34894         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
34895         Renamed to ..
34896         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
34897         .. this.
34898         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
34899         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
34900         .. this.
34902 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
34904         PR tree-optimization/109154
34905         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
34906         * gimple-range-gori.h (may_recompute_p): Add depth param.
34907         * params.opt (ranger-recompute-depth): New param.
34909 2023-03-30  Jason Merrill  <jason@redhat.com>
34911         PR c++/107897
34912         PR c++/108887
34913         * cgraph.h: Move reset() from cgraph_node to symtab_node.
34914         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
34915         remove_from_same_comdat_group.
34917 2023-03-30  Richard Biener  <rguenther@suse.de>
34919         PR tree-optimization/107561
34920         * gimple-ssa-warn-access.cc (get_size_range): Add flags
34921         argument and pass it on.
34922         (check_access): When querying for the size range pass
34923         SR_ALLOW_ZERO when the known destination size is zero.
34925 2023-03-30  Richard Biener  <rguenther@suse.de>
34927         PR tree-optimization/109342
34928         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
34929         overload for edge.  When that edge is a backedge use
34930         dominated_by_p directly.
34932 2023-03-30  liuhongt  <hongtao.liu@intel.com>
34934         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
34935         vpblendd instead of vpblendw for V4SI under avx2.
34937 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
34939         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
34940         for many quick operands, for register-sized modes.
34942 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
34944         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
34945         New check.
34947 2023-03-29  Martin Liska  <mliska@suse.cz>
34949         PR bootstrap/109310
34950         * configure.ac: Emit a warning for deprecated option
34951         --enable-link-mutex.
34952         * configure: Regenerate.
34954 2023-03-29  Richard Biener  <rguenther@suse.de>
34956         PR tree-optimization/109331
34957         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
34958         discover a taken edge make sure to cleanup the CFG.
34960 2023-03-29  Richard Biener  <rguenther@suse.de>
34962         PR tree-optimization/109327
34963         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
34964         already removed stmts when draining to_remove.
34966 2023-03-29  Richard Biener  <rguenther@suse.de>
34968         PR ipa/106124
34969         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
34970         so we can re-create the DIE for the type if required.
34972 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
34973             Richard Biener  <rguenther@suse.de>
34975         PR tree-optimization/109301
34976         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
34977         properties_provided from PROP_gimple_opt_math to 0.
34978         (pass_data_expand_powcabs): Change properties_provided from 0 to
34979         PROP_gimple_opt_math.
34981 2023-03-29  Richard Biener  <rguenther@suse.de>
34983         PR tree-optimization/109154
34984         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
34985         inverted condition specially by inverting at the caller.
34986         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
34988 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
34990         PR c/107002
34991         * diagnostic-show-locus.cc (column_range::column_range): Factor
34992         out assertion conditional into...
34993         (column_range::valid_p): ...this new function.
34994         (line_corrections::add_hint): Don't attempt to consolidate hints
34995         if it would lead to invalid column_range instances.
34997 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
34999         PR target/109312
35000         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
35001         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
35002         minor refactor.
35004 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
35006         PR rtl-optimization/109187
35007         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
35008         subtraction in three-way comparison.
35010 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
35012         PR tree-optimization/109265
35013         PR tree-optimization/109274
35014         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
35015         not create a relation record is op1 and op2 are the same symbol.
35016         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
35017         handler for this stmt, but create a new record only if this statement
35018         generates a relation based on the ranges.
35019         (gori_compute::compute_operand2_range): Ditto.
35020         * value-relation.h (value_relation::set_relation): Always create the
35021         record that is requested.
35023 2023-03-28  Richard Biener  <rguenther@suse.de>
35025         PR tree-optimization/107087
35026         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
35027         executable regions to avoid useless work and to better
35028         propagate degenerate PHIs.
35030 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
35032         * config/i386/x-mingw32-utf8: update comments.
35034 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
35036         PR target/109072
35037         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
35038         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
35039         variable.
35040         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
35041         New function.
35042         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
35043         after inlining.  Record which decls are loaded from.  Fix handling
35044         of vops for loads and stores.
35045         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
35046         (aarch64_accesses_vector_load_decl_p): Likewise.
35047         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
35048         variable.
35049         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
35050         that loads from a decl, treat vector stores to those decls as
35051         zero cost.
35052         (aarch64_vector_costs::finish_cost): ...and in that case,
35053         if the vector code does nothing more than a store, give the
35054         prologue a zero cost as well.
35056 2023-03-28  Richard Biener  <rguenther@suse.de>
35058         PR bootstrap/84402
35059         PR tree-optimization/108129
35060         * genmatch.cc (lower_for): For (match ...) delay
35061         substituting into the match operator if possible.
35062         (dt_operand::gen_gimple_expr): For user_id look at the
35063         first substitute for determining how to access operands.
35064         (dt_operand::gen_generic_expr): Likewise.
35065         (dt_node::gen_kids): Properly sort user_ids according
35066         to their substitutes.
35067         (dt_node::gen_kids_1): Code-generate user_id matching.
35069 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
35070             Jonathan Wakely  <jwakely@redhat.com>
35072         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
35073         Use subcommand rather than sub-command in function comments.
35075 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
35077         PR tree-optimization/109154
35078         * value-range.h (frange::flush_denormals_to_zero): Make it public
35079         rather than private.
35080         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
35081         here.
35082         * range-op-float.cc (range_operator_float::fold_range): Call
35083         flush_denormals_to_zero.
35085 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
35087         PR middle-end/106190
35088         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
35089         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
35091 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
35093         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
35094         as 4th argument to set to avoid clear_nan and union_ calls.
35096 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
35098         PR target/109276
35099         * config/i386/i386.cc (assign_386_stack_local): For DImode
35100         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
35101         align 32 rather than 0 to assign_stack_local.
35103 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
35105         PR target/109140
35106         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
35107         on operand #3 to get the final condition code.  Use std::swap.
35108         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
35109         (fucmp<gcond:code>8<P:mode>_vis): Move around.
35110         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
35111         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
35113 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
35115         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
35116         top-level sections.
35118 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
35120         * config.host: Pull in i386/x-mingw32-utf8 Makefile
35121         fragment and reference utf8rc-mingw32.o explicitly
35122         for mingw hosts.
35123         * config/i386/sym-mingw32.cc: prevent name mangling of
35124         stub symbol.
35125         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
35126         depend on manifest file explicitly.
35128 2023-03-28  Richard Biener  <rguenther@suse.de>
35130         Revert:
35131         2023-03-27  Richard Biener  <rguenther@suse.de>
35133         PR rtl-optimization/109237
35134         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
35136 2023-03-28  Richard Biener  <rguenther@suse.de>
35138         * common.opt (gdwarf): Remove Negative(gdwarf-).
35140 2023-03-28  Richard Biener  <rguenther@suse.de>
35142         * common.opt (gdwarf): Add RejectNegative.
35143         (gdwarf-): Likewise.
35144         (ggdb): Likewise.
35145         (gvms): Likewise.
35147 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
35149         * config/cris/constraints.md ("T"): Correct to
35150         define_memory_constraint.
35152 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
35154         * config/cris/cris.md (BW2): New mode-iterator.
35155         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
35156         peephole2s.
35158 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
35160         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
35161         for possible eliminable compares.
35163 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
35165         * config/cris/constraints.md ("R"): Remove unused constraint.
35167 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
35169         PR gcov-profile/109297
35170         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
35171         (merge_stream_usage): Likewise.
35172         (overlap_usage): Likewise.
35174 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
35176         PR target/109296
35177         * config/riscv/thead.md: Add missing mode specifiers.
35179 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
35180             Jiangning Liu  <jiangning.liu@amperecomputing.com>
35181             Manolis Tsamis  <manolis.tsamis@vrull.eu>
35183         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
35185 2023-03-27  Richard Biener  <rguenther@suse.de>
35187         PR rtl-optimization/109237
35188         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
35190 2023-03-27  Richard Biener  <rguenther@suse.de>
35192         PR lto/109263
35193         * lto-wrapper.cc (run_gcc): Parse alternate debug options
35194         as well, they always enable debug.
35196 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
35198         PR target/109167
35199         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
35200         from ...
35201         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
35203 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
35205         PR target/109082
35206         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
35207         than zero when calling vec_sld.
35208         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
35209         zero when calling vec_sld.
35210         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
35211         than zero when calling vec_sld.
35213 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
35215         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
35216         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
35217         loops are represented and which fields are vectors.  Add
35218         documentation for OMP_FOR_PRE_BODY field.  Document internal
35219         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
35220         * tree.def (OMP_FOR): Make documentation consistent with the
35221         Texinfo manual, to fill some gaps and correct errors.
35223 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
35225         PR target/106282
35226         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
35227         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
35228         (handle_move_double): Call it before handle_movsi.
35229         * config/m68k/m68k-protos.h: Declare it.
35231 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
35233         PR tree-optimization/109230
35234         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
35236 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
35238         PR ipa/105685
35239         * predict.cc (compute_function_frequency): Don't call
35240         warn_function_cold if function already has cold attribute.
35242 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
35244         * doc/install.texi: Remove anachronistic note
35245         related to languages built and separate source tarballs.
35247 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
35249         PR analyzer/109098
35250         * diagnostic-format-sarif.cc (read_until_eof): Delete.
35251         (maybe_read_file): Delete.
35252         (sarif_builder::maybe_make_artifact_content_object): Use
35253         get_source_file_content rather than maybe_read_file.
35254         Reject it if it's not valid UTF-8.
35255         * input.cc (file_cache_slot::get_full_file_content): New.
35256         (get_source_file_content): New.
35257         (selftest::check_cpp_valid_utf8_p): New.
35258         (selftest::test_cpp_valid_utf8_p): New.
35259         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
35260         * input.h (get_source_file_content): New prototype.
35262 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
35264         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
35265         debugging options.
35266         (Special Functions for Debugging the Analyzer): Convert to a
35267         table, and rewrite in places.
35268         (Other Debugging Techniques): Add notes on how to compare two
35269         different exploded graphs.
35271 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
35273         PR other/109163
35274         * json.cc: Update comments to indicate that we now preserve
35275         insertion order of keys within objects.
35276         (object::print): Traverse keys in insertion order.
35277         (object::set): Preserve insertion order of keys.
35278         (selftest::test_writing_objects): Add an additional key to verify
35279         that we preserve insertion order.
35280         * json.h (object::m_keys): New field.
35282 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
35284         PR tree-optimization/109238
35285         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
35286         predecessors which this block dominates.
35288 2023-03-24  Richard Biener  <rguenther@suse.de>
35290         PR tree-optimization/106912
35291         * tree-profile.cc (tree_profiling): Update stmts only when
35292         profiling or testing coverage.  Make sure to update calls
35293         fntype, stripping 'const' there.
35295 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
35297         PR middle-end/109258
35298         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
35299         if target == const0_rtx.
35301 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
35303         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
35304         Document options and effective targets.
35306 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
35308         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
35309         optional.
35311 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
35313         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
35314         non-earlyclobber alternative.
35316 2023-03-23  Andrew Pinski  <apinski@marvell.com>
35318         PR c/84900
35319         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
35320         as a lvalue.
35322 2023-03-23  Richard Biener  <rguenther@suse.de>
35324         PR tree-optimization/107569
35325         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
35326         Do not push SSA names with zero uses as available leader.
35327         (process_bb): Likewise.
35329 2023-03-23  Richard Biener  <rguenther@suse.de>
35331         PR tree-optimization/109262
35332         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
35333         combining a piecewise complex load avoid touching loads
35334         that throw internally.  Use fun, not cfun throughout.
35336 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
35338         * value-range.cc (irange::irange_union, irange::intersect): Fix
35339         comment spelling bugs.
35340         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
35341         * gimple-range-trace.h: Likewise.
35342         * gimple-range-edge.cc: Likewise.
35343         (gimple_outgoing_range_stmt_p,
35344         gimple_outgoing_range::switch_edge_range,
35345         gimple_outgoing_range::edge_range_p): Likewise.
35346         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
35347         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
35348         assume_query::assume_query, assume_query::calculate_phi): Likewise.
35349         * gimple-range-edge.h: Likewise.
35350         * value-range.h (Value_Range::set, Value_Range::lower_bound,
35351         Value_Range::upper_bound, frange::set_undefined): Likewise.
35352         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
35353         gori_compute): Likewise.
35354         * gimple-range-fold.h (fold_using_range): Likewise.
35355         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
35356         Likewise.
35357         * gimple-range-gori.cc (range_def_chain::in_chain_p,
35358         range_def_chain::dump, gori_map::calculate_gori,
35359         gori_compute::compute_operand_range_switch,
35360         gori_compute::logical_combine, gori_compute::refine_using_relation,
35361         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
35362         Likewise.
35363         * gimple-range.h: Likewise.
35364         (enable_ranger): Likewise.
35365         * range-op.h (empty_range_varying): Likewise.
35366         * value-query.h (value_query): Likewise.
35367         * gimple-range-cache.cc (block_range_cache::set_bb_range,
35368         block_range_cache::dump, ssa_global_cache::clear_global_range,
35369         temporal_cache::temporal_value, temporal_cache::current_p,
35370         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
35371         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
35372         Likewise.
35373         * gimple-range-fold.cc (fur_edge::get_phi_operand,
35374         fur_stmt::get_operand, gimple_range_adjustment,
35375         fold_using_range::range_of_phi,
35376         fold_using_range::relation_fold_and_or): Likewise.
35377         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
35378         * value-query.cc (range_query::value_of_expr,
35379         range_query::value_on_edge, range_query::query_relation): Likewise.
35380         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
35381         intersect_range_with_nonzero_bits): Likewise.
35382         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
35383         exit_range): Likewise.
35384         * value-relation.h: Likewise.
35385         (equiv_oracle, relation_trio::relation_trio, value_relation,
35386         value_relation::value_relation, pe_min): Likewise.
35387         * range-op-float.cc (range_operator_float::rv_fold,
35388         frange_arithmetic, foperator_unordered_equal::op1_range,
35389         foperator_div::rv_fold): Likewise.
35390         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
35391         * value-relation.cc (equiv_oracle::query_relation,
35392         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
35393         value_relation::apply_transitive, relation_chain_head::find_relation,
35394         dom_oracle::query_relation, dom_oracle::find_relation_block,
35395         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
35396         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
35397         create_possibly_reversed_range, adjust_op1_for_overflow,
35398         operator_mult::wi_fold, operator_exact_divide::op1_range,
35399         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
35400         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
35401         range_op_lshift_tests): Likewise.
35403 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
35405         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
35406         (move_callee_saved_registers): Detect the bug condition early.
35408 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
35410         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
35411         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
35412         (V_2REG_ALT): New.
35413         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
35414         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
35415         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
35416         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
35417         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
35419 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
35421         PR tree-optimization/109176
35422         * tree-vect-generic.cc (expand_vector_condition): If a has
35423         vector boolean type and is a comparison, also check if both
35424         the comparison and VEC_COND_EXPR could be successfully expanded
35425         individually.
35427 2023-03-23  Pan Li  <pan2.li@intel.com>
35428             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35430         PR target/108654
35431         PR target/108185
35432         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
35433         for vector mask modes.
35434         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
35435         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
35437 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
35439         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
35441 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35443         PR target/109244
35444         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
35445         (emit_vlmax_op): Ditto.
35446         * config/riscv/riscv-v.cc (get_sew): New function.
35447         (emit_vlmax_vsetvl): Adapt function.
35448         (emit_pred_op): Ditto.
35449         (emit_vlmax_op): Ditto.
35450         (emit_nonvlmax_op): Ditto.
35451         (legitimize_move): Fix LRA ICE.
35452         (gen_no_side_effects_vsetvl_rtx): Adapt function.
35453         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
35454         (@mov<VB:mode><P:mode>_lra): Ditto.
35455         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
35456         (*mov<VB:mode><P:mode>_lra): Ditto.
35458 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35460         PR target/109228
35461         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
35462         __riscv_vlenb support.
35463         (BASE): Ditto.
35464         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
35465         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
35466         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
35467         (SHAPE): Ditto.
35468         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
35469         * config/riscv/riscv-vector-builtins.cc: Ditto.
35471 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35472             kito-cheng  <kito.cheng@sifive.com>
35474         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
35475         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
35476         (pass_vsetvl::need_vsetvl): Fix bugs.
35477         (pass_vsetvl::backward_demand_fusion): Fix bugs.
35478         (pass_vsetvl::demand_fusion): Fix bugs.
35479         (eliminate_insn): Fix bugs.
35480         (insert_vsetvl): Ditto.
35481         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
35482         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
35483         * config/riscv/vector.md: Ditto.
35485 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35486             kito-cheng  <kito.cheng@sifive.com>
35488         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
35489         * config/riscv/vector-iterators.md (nmsac): Ditto.
35490         (nmsub): Ditto.
35491         (msac): Ditto.
35492         (msub): Ditto.
35493         (nmadd): Ditto.
35494         (nmacc): Ditto.
35495         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
35496         (@pred_mul_plus<mode>): Ditto.
35497         (*pred_madd<mode>): Ditto.
35498         (*pred_macc<mode>): Ditto.
35499         (*pred_mul_plus<mode>): Ditto.
35500         (@pred_mul_plus<mode>_scalar): Ditto.
35501         (*pred_madd<mode>_scalar): Ditto.
35502         (*pred_macc<mode>_scalar): Ditto.
35503         (*pred_mul_plus<mode>_scalar): Ditto.
35504         (*pred_madd<mode>_extended_scalar): Ditto.
35505         (*pred_macc<mode>_extended_scalar): Ditto.
35506         (*pred_mul_plus<mode>_extended_scalar): Ditto.
35507         (@pred_minus_mul<mode>): Ditto.
35508         (*pred_<madd_nmsub><mode>): Ditto.
35509         (*pred_nmsub<mode>): Ditto.
35510         (*pred_<macc_nmsac><mode>): Ditto.
35511         (*pred_nmsac<mode>): Ditto.
35512         (*pred_mul_<optab><mode>): Ditto.
35513         (*pred_minus_mul<mode>): Ditto.
35514         (@pred_mul_<optab><mode>_scalar): Ditto.
35515         (@pred_minus_mul<mode>_scalar): Ditto.
35516         (*pred_<madd_nmsub><mode>_scalar): Ditto.
35517         (*pred_nmsub<mode>_scalar): Ditto.
35518         (*pred_<macc_nmsac><mode>_scalar): Ditto.
35519         (*pred_nmsac<mode>_scalar): Ditto.
35520         (*pred_mul_<optab><mode>_scalar): Ditto.
35521         (*pred_minus_mul<mode>_scalar): Ditto.
35522         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
35523         (*pred_nmsub<mode>_extended_scalar): Ditto.
35524         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
35525         (*pred_nmsac<mode>_extended_scalar): Ditto.
35526         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
35527         (*pred_minus_mul<mode>_extended_scalar): Ditto.
35528         (*pred_<madd_msub><mode>): Ditto.
35529         (*pred_<macc_msac><mode>): Ditto.
35530         (*pred_<madd_msub><mode>_scalar): Ditto.
35531         (*pred_<macc_msac><mode>_scalar): Ditto.
35532         (@pred_neg_mul_<optab><mode>): Ditto.
35533         (@pred_mul_neg_<optab><mode>): Ditto.
35534         (*pred_<nmadd_msub><mode>): Ditto.
35535         (*pred_<nmsub_nmadd><mode>): Ditto.
35536         (*pred_<nmacc_msac><mode>): Ditto.
35537         (*pred_<nmsac_nmacc><mode>): Ditto.
35538         (*pred_neg_mul_<optab><mode>): Ditto.
35539         (*pred_mul_neg_<optab><mode>): Ditto.
35540         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
35541         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
35542         (*pred_<nmadd_msub><mode>_scalar): Ditto.
35543         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
35544         (*pred_<nmacc_msac><mode>_scalar): Ditto.
35545         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
35546         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
35547         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
35548         (@pred_widen_neg_mul_<optab><mode>): Ditto.
35549         (@pred_widen_mul_neg_<optab><mode>): Ditto.
35550         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
35551         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
35553 2023-03-23  liuhongt  <hongtao.liu@intel.com>
35555         * builtins.cc (builtin_memset_read_str): Replace
35556         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
35557         (builtin_memset_gen_str): Ditto.
35558         * config/i386/i386-expand.cc
35559         (ix86_convert_const_wide_int_to_broadcast): Replace
35560         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
35561         (ix86_expand_vector_move): Ditto.
35562         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
35563         Removed.
35564         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
35565         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
35566         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
35567         * doc/tm.texi.in: Ditto.
35568         * target.def: Ditto.
35570 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
35572         * lra.cc (lra): Do not repeat inheritance and live range splitting
35573         when asm error is found.
35575 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
35577         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
35578         (gcn_expand_dpp_distribute_even_insn)
35579         (gcn_expand_dpp_distribute_odd_insn): Declare.
35580         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
35581         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
35582         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
35583         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
35584         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
35585         (fms<mode>4_negop2): New patterns.
35586         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
35587         (gcn_expand_dpp_distribute_even_insn)
35588         (gcn_expand_dpp_distribute_odd_insn): New functions.
35589         * config/gcn/gcn.md: Add entries to unspec enum.
35591 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
35593         PR tree-optimization/109008
35594         * value-range.cc (frange::set): Add nan_state argument.
35595         * value-range.h (class nan_state): New.
35596         (frange::get_nan_state): New.
35598 2023-03-22  Martin Liska  <mliska@suse.cz>
35600         * configure: Regenerate.
35602 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
35604         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
35605         to variants.
35607 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
35609         PR tree-optimization/109192
35610         * gimple-range-gori.cc (gori_compute::compute_operand_range):
35611         Terminate gori calculations if a relation is not relevant.
35612         * value-relation.h (value_relation::set_relation): Allow
35613         equality between op1 and op2 if they are the same.
35615 2023-03-21  Richard Biener  <rguenther@suse.de>
35617         PR tree-optimization/109219
35618         * tree-vect-loop.cc (vectorizable_reduction): Check
35619         slp_node, not STMT_SLP_TYPE.
35620         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
35621         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
35622         Remove assertion on STMT_SLP_TYPE.
35624 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
35626         PR tree-optimization/109215
35627         * tree.h (enum special_array_member): Adjust comments for int_0
35628         and trail_0.
35629         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
35630         has zero sized element type and the array has variable number of
35631         elements or constant one or more elements.
35632         (component_ref_size): Adjust comments, formatting fix.
35634 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
35636         * configure.ac: Add check for the Texinfo 6.8
35637         CONTENTS_OUTPUT_LOCATION customization variable and set it if
35638         supported.
35639         * configure: Regenerate.
35640         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
35641         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
35642         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
35643         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
35645 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
35647         * doc/extend.texi: Associate use_hazard_barrier_return index
35648         entry with its attribute.
35649         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
35650         its attribute
35652 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
35654         * doc/implement-c.texi: Remove usage of @gol.
35655         * doc/invoke.texi: Ditto.
35656         * doc/sourcebuild.texi: Ditto.
35657         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
35658         texinfo.tex versions, the bug it was working around appears to
35659         be gone.
35661 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
35663         * doc/include/texinfo.tex: Update to 2023-01-17.19.
35665 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
35667         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
35668         @enddefbuiltin for defining built-in functions.
35669         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
35670         places where it should be used.
35672 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
35674         * doc/extend.texi (Formatted Output Function Checking): New
35675         subsection for  grouping together printf et al.
35676         (Exception handling) Fix missing @ sign before copyright
35677         header, which lead to the copyright line leaking into
35678         '(gcc)Exception handling'.
35679         * doc/gcc.texi: Set document language to en_US.
35680         (@copying): Wrap front cover texts in quotations, move in manual
35681         description text.
35683 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
35685         * doc/gcc.texi: Add the Indices appendix, to make texinfo
35686         generate nice indices overview page.
35688 2023-03-21  Richard Biener  <rguenther@suse.de>
35690         PR tree-optimization/109170
35691         * gimple-range-op.cc (cfn_pass_through_arg1): New.
35692         (gimple_range_op_handler::maybe_builtin_call): Handle
35693         __builtin_expect via cfn_pass_through_arg1.
35695 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
35697         PR target/109067
35698         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
35699         (init_float128_ieee): Delete code to switch complex multiply and divide
35700         for long double.
35701         (complex_multiply_builtin_code): New helper function.
35702         (complex_divide_builtin_code): Likewise.
35703         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
35704         of complex 128-bit multiply and divide built-in functions.
35706 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
35708         PR target/109178
35709         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
35711 2023-03-19  Jonny Grant  <jg@jguk.org>
35713         * doc/extend.texi (Common Function Attributes) <nonnull>:
35714         Correct typo.
35716 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
35718         PR rtl-optimization/109179
35719         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
35720         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
35722 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
35724         PR target/105554
35725         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
35726         to false.
35727         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
35728         to allocate_struct_function instead of false.
35729         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
35730         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
35731         push_struct_function.  Call targetm.target_option.relayout_function
35732         after it.
35733         (tree_function_versioning): Formatting fix.
35735 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
35737         * lra-constraints.cc: Include hooks.h.
35738         (combine_reload_insn): New function.
35739         (lra_constraints): Call it.
35741 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35742             kito-cheng  <kito.cheng@sifive.com>
35744         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
35745         as legitimate value.
35746         * config/riscv/riscv-vector-builtins.cc
35747         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
35748         (function_expander::use_widen_ternop_insn): Ditto.
35749         * config/riscv/vector.md (@vundefined<mode>): New pattern.
35750         (pred_mul_<optab><mode>_undef_merge): Remove.
35751         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
35752         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
35753         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
35754         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
35756 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35758         PR target/109092
35759         * config/riscv/riscv.md: Fix subreg bug.
35761 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
35763         PR middle-end/108685
35764         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
35765         use its loop_father rather than BODY_BB's loop_father.
35766         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
35767         If broken_loop with ordered > collapse and at least one of those
35768         extra loops aren't guaranteed to have at least one iteration, change
35769         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
35770         loop_father to l0_bb's loop_father rather than l1_bb's.
35772 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
35774         PR plugins/108634
35775         * gdbhooks.py (TreePrinter.to_string): Wrap
35776         gdb.parse_and_eval('tree_code_type') in a try block, parse
35777         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
35778         raises exception.  Update comments for the recent tree_code_type
35779         changes.
35781 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
35783         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
35784         issues.  Add more line breaks to example so it doesn't overflow
35785         the margins.
35787 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
35789         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
35790         line breaks in examples.
35791         <malloc>: Fix bad line breaks in running text, also copy-edit
35792         for consistency.
35793         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
35794         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
35795         @gol.
35796         (C++ Dialect Options) <-fcontracts>: Add line break in example.
35797         <-Wctad-maybe-unsupported>: Likewise.
35798         <-Winvalid-constexpr>: Likewise.
35799         (Warning Options) <-Wdangling-pointer>: Likewise.
35800         <-Winterference-size>: Likewise.
35801         <-Wvla-parameter>: Likewise.
35802         (Static Analyzer Options): Fix bad line breaks in running text,
35803         plus add some missing markup.
35804         (Optimize Options) <openacc-privatization>: Fix more bad line
35805         breaks in running text.
35807 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
35809         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
35810         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
35811         (expand_vec_perm_2perm_pblendv): Ditto.
35813 2023-03-16  Martin Liska  <mliska@suse.cz>
35815         PR middle-end/106133
35816         * gcc.cc (driver_handle_option): Use x_main_input_basename
35817         if x_dump_base_name is null.
35818         * opts.cc (common_handle_option): Likewise.
35820 2023-03-16  Richard Biener  <rguenther@suse.de>
35822         PR tree-optimization/109123
35823         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
35824         Do not emit -Wuse-after-free late.
35825         (pass_waccess::check_call): Always check call pointer uses.
35827 2023-03-16  Richard Biener  <rguenther@suse.de>
35829         PR tree-optimization/109141
35830         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
35831         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
35832         out from ...
35833         (renumber_gimple_stmt_uids): ... here and
35834         (renumber_gimple_stmt_uids_in_blocks): ... here.
35835         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
35836         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
35837         to PHIs.
35838         (pass_waccess::check_pointer_uses): Process all PHIs.
35840 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
35842         PR analyzer/109097
35843         * diagnostic-format-sarif.cc (class sarif_invocation): New.
35844         (class sarif_ice_notification): New.
35845         (sarif_builder::m_invocation_obj): New field.
35846         (sarif_invocation::add_notification_for_ice): New.
35847         (sarif_invocation::prepare_to_flush): New.
35848         (sarif_ice_notification::sarif_ice_notification): New.
35849         (sarif_builder::sarif_builder): Add m_invocation_obj.
35850         (sarif_builder::end_diagnostic): Special-case DK_ICE and
35851         DK_ICE_NOBT.
35852         (sarif_builder::flush_to_file): Call prepare_to_flush on
35853         m_invocation_obj.  Pass the latter to make_top_level_object.
35854         (sarif_builder::make_result_object): Move creation of "locations"
35855         array to...
35856         (sarif_builder::make_locations_arr): ...this new function.
35857         (sarif_builder::make_top_level_object): Add "invocation_obj" param
35858         and pass it to make_run_object.
35859         (sarif_builder::make_run_object): Add "invocation_obj" param and
35860         use it.
35861         (sarif_ice_handler): New callback.
35862         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
35863         * diagnostic.cc (diagnostic_initialize): Initialize new field
35864         "ice_handler_cb".
35865         (diagnostic_action_after_output): If it is set, make one attempt
35866         to call ice_handler_cb.
35867         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
35869 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
35871         * config/i386/i386-expand.cc (expand_vec_perm_blend):
35872         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
35873         and fix V2HImode handling.
35874         (expand_vec_perm_1): Try to emit BLEND instruction
35875         before MOVSS/MOVSD.
35876         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
35878 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
35880         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
35882 2023-03-15  Richard Biener  <rguenther@suse.de>
35884         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
35885         Do not diagnose clobbers.
35887 2023-03-15  Richard Biener  <rguenther@suse.de>
35889         PR tree-optimization/109139
35890         * tree-ssa-live.cc (remove_unused_locals): Look at the
35891         base address for unused decls on the LHS of .DEFERRED_INIT.
35893 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
35895         PR other/109086
35896         * builtins.cc (inline_string_cmp): Force the character
35897         difference into "result" pseudo-register, instead of reassign
35898         the pseudo-register.
35900 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
35902         * config.gcc: Add thead.o to RISC-V extra_objs.
35903         * config/riscv/peephole.md: Add mempair peephole passes.
35904         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
35905         prototype.
35906         (th_mempair_operands_p): Likewise.
35907         (th_mempair_order_operands): Likewise.
35908         (th_mempair_prepare_save_restore_operands): Likewise.
35909         (th_mempair_save_restore_regs): Likewise.
35910         (th_mempair_output_move): Likewise.
35911         * config/riscv/riscv.cc (riscv_save_reg): Move code.
35912         (riscv_restore_reg): Move code.
35913         (riscv_for_each_saved_reg): Add code to emit mempair insns.
35914         * config/riscv/t-riscv: Add thead.cc.
35915         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
35916         New insn.
35917         (*th_mempair_store_<GPR:mode>2): Likewise.
35918         (*th_mempair_load_extendsidi2): Likewise.
35919         (*th_mempair_load_zero_extendsidi2): Likewise.
35920         * config/riscv/thead.cc: New file.
35922 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
35924         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
35925         New constraint "th_f_fmv".
35926         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
35927         "th_r_fmv".
35928         * config/riscv/riscv.cc (riscv_split_doubleword_move):
35929         Add split code for XTheadFmv.
35930         (riscv_secondary_memory_needed): XTheadFmv does not need
35931         secondary memory.
35932         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
35933         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
35934         movdf_hardfloat_rv32.
35935         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
35936         (th_fmv_x_w): New INSN.
35937         (th_fmv_x_hw): New INSN.
35939 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
35941         * config/riscv/riscv.md (maddhisi4): New expand.
35942         (msubhisi4): New expand.
35943         * config/riscv/thead.md (*th_mula<mode>): New pattern.
35944         (*th_mulawsi): New pattern.
35945         (*th_mulawsi2): New pattern.
35946         (*th_maddhisi4): New pattern.
35947         (*th_sextw_maddhisi4): New pattern.
35948         (*th_muls<mode>): New pattern.
35949         (*th_mulswsi): New pattern.
35950         (*th_mulswsi2): New pattern.
35951         (*th_msubhisi4): New pattern.
35952         (*th_sextw_msubhisi4): New pattern.
35954 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
35956         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
35957         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
35958         Add prototype.
35959         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
35960         XTheadCondMov.
35961         (riscv_expand_conditional_move): New function.
35962         (riscv_expand_conditional_move_onesided): New function.
35963         * config/riscv/riscv.md: Add support for XTheadCondMov.
35964         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
35965         support for XTheadCondMov.
35966         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
35968 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
35970         * config/riscv/bitmanip.md (clzdi2): New expand.
35971         (clzsi2): New expand.
35972         (ctz<mode>2): New expand.
35973         (popcount<mode>2): New expand.
35974         (<bitmanip_optab>si2): Rename INSN.
35975         (*<bitmanip_optab>si2): Hide INSN name.
35976         (<bitmanip_optab>di2): Rename INSN.
35977         (*<bitmanip_optab>di2): Hide INSN name.
35978         (rotrsi3): Remove INSN.
35979         (rotr<mode>3): Add expand.
35980         (*rotrsi3): New INSN.
35981         (rotrdi3): Rename INSN.
35982         (*rotrdi3): Hide INSN name.
35983         (rotrsi3_sext): Rename INSN.
35984         (*rotrsi3_sext): Hide INSN name.
35985         (bswap<mode>2): Remove INSN.
35986         (bswapdi2): Add expand.
35987         (bswapsi2): Add expand.
35988         (*bswap<mode>2): Hide INSN name.
35989         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
35990         extraction.
35991         * config/riscv/riscv.md (extv<mode>): New expand.
35992         (extzv<mode>): New expand.
35993         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
35994         (*th_ext<mode>): New INSN.
35995         (*th_extu<mode>): New INSN.
35996         (*th_clz<mode>2): New INSN.
35997         (*th_rev<mode>2): New INSN.
35999 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
36001         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
36002         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
36004 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
36006         * config/riscv/riscv.md: Include thead.md
36007         * config/riscv/thead.md: New file.
36009 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
36011         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
36013 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
36015         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
36016         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
36017         (MASK_XTHEADBB): New.
36018         (MASK_XTHEADBS): New.
36019         (MASK_XTHEADCMO): New.
36020         (MASK_XTHEADCONDMOV): New.
36021         (MASK_XTHEADFMEMIDX): New.
36022         (MASK_XTHEADFMV): New.
36023         (MASK_XTHEADINT): New.
36024         (MASK_XTHEADMAC): New.
36025         (MASK_XTHEADMEMIDX): New.
36026         (MASK_XTHEADMEMPAIR): New.
36027         (MASK_XTHEADSYNC): New.
36028         (TARGET_XTHEADBA): New.
36029         (TARGET_XTHEADBB): New.
36030         (TARGET_XTHEADBS): New.
36031         (TARGET_XTHEADCMO): New.
36032         (TARGET_XTHEADCONDMOV): New.
36033         (TARGET_XTHEADFMEMIDX): New.
36034         (TARGET_XTHEADFMV): New.
36035         (TARGET_XTHEADINT): New.
36036         (TARGET_XTHEADMAC): New.
36037         (TARGET_XTHEADMEMIDX): New.
36038         (TARGET_XTHEADMEMPAIR): new.
36039         (TARGET_XTHEADSYNC): New.
36040         * config/riscv/riscv.opt: Add riscv_xthead_subext.
36042 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
36044         PR target/109117
36045         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
36046         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
36047         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
36049 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
36051         PR target/109109
36052         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
36053         when lo is equal to dhi and hi is a MEM which uses dlo register.
36055 2023-03-14  Martin Jambor  <mjambor@suse.cz>
36057         PR ipa/107925
36058         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
36059         global0 instead of zeroing when it does not have as many counts as
36060         it should.
36062 2023-03-14  Martin Jambor  <mjambor@suse.cz>
36064         PR ipa/107925
36065         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
36066         ipa count, remove assert, lenient_count_portion_handling, dump
36067         also orig_node_count.
36069 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
36071         * config/i386/i386-expand.cc (expand_vec_perm_movs):
36072         Handle V2SImode for TARGET_MMX_WITH_SSE.
36073         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
36074         using V2FI mode iterator to handle both V2SI and V2SF modes.
36076 2023-03-14  Sam James  <sam@gentoo.org>
36078         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
36079         including <sstream> earlier.
36080         * system.h: Add INCLUDE_SSTREAM.
36082 2023-03-14  Richard Biener  <rguenther@suse.de>
36084         * tree-ssa-live.cc (remove_unused_locals): Do not treat
36085         the .DEFERRED_INIT of a variable as use, instead remove
36086         that if it is the only use.
36088 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
36090         PR rtl-optimization/107762
36091         * expr.cc (emit_group_store): Revert latest change.
36093 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
36095         PR tree-optimization/109005
36096         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
36097         aggregate type check.
36099 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
36101         PR tree-optimization/109115
36102         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
36103         r.upper_bound () on r.undefined_p () range.
36105 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
36107         PR tree-optimization/106896
36108         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
36109         implementatoin with probability_in; avoid some asserts.
36111 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
36113         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
36115 2023-03-13  Sean Bright  <sean@seanbright.com>
36117         * doc/invoke.texi (Warning Options): Remove errant 'See'
36118         before @xref.
36120 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
36122         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
36123         REG_OK_FOR_BASE_P): Remove.
36125 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36127         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
36128         (=vd,vd,vr,vr): Ditto.
36129         * config/riscv/vector.md: Ditto.
36131 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36133         * config/riscv/riscv-vector-builtins.cc
36134         (function_expander::use_compare_insn): Add operand predicate check.
36136 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36138         * config/riscv/vector.md: Fine tune RA constraints.
36140 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
36142         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
36143         hsaco assemble/link.
36145 2023-03-13  Richard Biener  <rguenther@suse.de>
36147         PR tree-optimization/109046
36148         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
36149         piecewise complex loads.
36151 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
36153         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
36154         (aarch64_bf16_ptr_type_node): Adjust comment.
36155         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
36156         bfloat16_type_node rather than aarch64_bf16_type_node.
36157         (aarch64_libgcc_floating_mode_supported_p,
36158         aarch64_scalar_mode_supported_p): Also support BFmode.
36159         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
36160         (aarch64_invalid_binary_op): Remove BFmode related rejections.
36161         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
36162         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
36163         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
36164         aarch64_bf16_type_node.
36165         (aarch64_init_simd_builtin_types): Likewise.
36166         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
36167         which is created in tree.cc already.
36168         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
36170 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
36172         PR middle-end/109031
36173         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
36174         ensure that the type of x is as wide or wider than the type of a.
36176 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
36178         PR target/108583
36179         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
36180         (*bitmask_shift_plus<mode>): New.
36181         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
36182         (@aarch64_bitmask_udiv<mode>3): Remove.
36183         * config/aarch64/aarch64.cc
36184         (aarch64_vectorize_can_special_div_by_constant,
36185         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
36186         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
36187         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
36189 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
36191         PR target/108583
36192         * target.def (preferred_div_as_shifts_over_mult): New.
36193         * doc/tm.texi.in: Document it.
36194         * doc/tm.texi: Regenerate.
36195         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
36196         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
36197         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
36199 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
36200             Richard Sandiford  <richard.sandiford@arm.com>
36202         PR target/108583
36203         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
36204         single use.
36206 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
36207             Andrew MacLeod  <amacleod@redhat.com>
36209         PR target/108583
36210         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
36211         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
36212         Use it.
36213         (gimple_range_op_handler::maybe_non_standard): New.
36214         * range-op.cc (class operator_widen_plus_signed,
36215         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
36216         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
36217         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
36218         operator_widen_mult_unsigned::wi_fold,
36219         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
36220         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
36221         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
36222         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
36224 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
36226         PR target/108583
36227         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
36228         * doc/tm.texi.in: Likewise.
36229         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
36230         * expmed.cc (expand_divmod): Likewise.
36231         * expmed.h (expand_divmod): Likewise.
36232         * expr.cc (force_operand, expand_expr_divmod): Likewise.
36233         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
36234         * target.def (can_special_div_by_const): Remove.
36235         * target.h: Remove tree-core.h include
36236         * targhooks.cc (default_can_special_div_by_const): Remove.
36237         * targhooks.h (default_can_special_div_by_const): Remove.
36238         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
36239         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
36240         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
36242 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
36244         * doc/install.texi2html: Fix issue number typo in comment.
36246 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
36248         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
36249         bool.
36251 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
36253         * doc/invoke.texi (Optimize Options):  Add markup to
36254         description of asan-kernel-mem-intrinsic-prefix, and clarify
36255         wording slightly.
36257 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
36259         * doc/extend.texi (Named Address Spaces): Drop a redundant link
36260         to AVR-LibC.
36262 2023-03-11  Jeff Law  <jlaw@ventanamicro>
36264         PR web/88860
36265         * doc/extend.texi: Clarify Attribute Syntax a bit.
36267 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
36269         * doc/install.texi (Prerequisites): Suggest using newer versions
36270         of Texinfo.
36271         (Final install): Clean up and modernize discussion of how to
36272         build or obtain the GCC manuals.
36273         * doc/install.texi2html: Update comment to point to the PR instead
36274         of "makeinfo 4.7 brokenness" (it's not specific to that version).
36276 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
36278         PR target/107703
36279         * optabs.cc (expand_fix): For conversions from BFmode to integral,
36280         use shifts to convert it to SFmode first and then convert SFmode
36281         to integral.
36283 2023-03-10  Andrew Pinski  <apinski@marvell.com>
36285         * config/aarch64/aarch64.md: Add a new define_split
36286         to help combine.
36288 2023-03-10  Richard Biener  <rguenther@suse.de>
36290         * tree-ssa-structalias.cc (solve_graph): Immediately
36291         iterate self-cycles.
36293 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
36295         PR tree-optimization/109008
36296         * range-op-float.cc (float_widen_lhs_range): If not
36297         -frounding-math and not IBM double double format, extend lhs
36298         range just by 0.5ulp rather than 1ulp in each direction.
36300 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
36302         PR target/107998
36303         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
36304         $tmake_file.
36305         * config/i386/t-cygwin-w64: Remove.
36307 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
36309         PR plugins/108634
36310         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
36311         C++14, don't declare as extern const arrays.
36312         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
36313         static constexpr member arrays for C++11 or C++14.
36314         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
36315         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
36316         (TREE_CODE_LENGTH): For C++11 or C++14 use
36317         tree_code_length_tmpl <0>::tree_code_length instead of
36318         tree_code_length.
36319         * tree.cc (tree_code_type, tree_code_length): Remove.
36321 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
36323         PR other/108464
36324         * common.opt (fcanon-prefix-map): New option.
36325         * opts.cc: Include file-prefix-map.h.
36326         (flag_canon_prefix_map): New variable.
36327         (common_handle_option): Handle OPT_fcanon_prefix_map.
36328         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
36329         * file-prefix-map.h (flag_canon_prefix_map): Declare.
36330         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
36331         member.
36332         (add_prefix_map): Initialize canonicalize member from
36333         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
36334         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
36335         use lrealpath result only for map->canonicalize map entries.
36336         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
36337         * opts-global.cc (handle_common_deferred_options): Clear
36338         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
36339         * doc/invoke.texi (-fcanon-prefix-map): Document.
36340         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
36341         see also for -fcanon-prefix-map.
36342         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
36344 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
36346         PR c/108079
36347         * cgraphunit.cc (check_global_declaration): Don't warn for unused
36348         variables which have OPT_Wunused_variable warning suppressed.
36350 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
36352         PR tree-optimization/109008
36353         * range-op-float.cc (float_widen_lhs_range): If lb is
36354         minimum representable finite number or ub is maximum
36355         representable finite number, instead of widening it to
36356         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
36357         Temporarily clear flag_finite_math_only when canonicalizing
36358         the widened range.
36360 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36362         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
36363         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
36364         (gimple_fold_builtin):  Ditto.
36365         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
36366         (class vleff): Ditto.
36367         (BASE): Ditto.
36368         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
36369         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
36370         (vleff): Ditto.
36371         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
36372         (struct fault_load_def): Ditto.
36373         (SHAPE): Ditto.
36374         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
36375         * config/riscv/riscv-vector-builtins.cc
36376         (rvv_arg_type_info::get_tree_type): Add size_ptr.
36377         (gimple_folder::gimple_folder): New class.
36378         (gimple_folder::fold): Ditto.
36379         (gimple_fold_builtin): New function.
36380         (get_read_vl_instance): Ditto.
36381         (get_read_vl_decl): Ditto.
36382         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
36383         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
36384         (get_read_vl_instance): New function.
36385         (get_read_vl_decl):  Ditto.
36386         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
36387         (read_vl_insn_p): Ditto.
36388         (available_occurrence_p): Ditto.
36389         (backward_propagate_worthwhile_p): Ditto.
36390         (gen_vsetvl_pat): Adapt for vleff support.
36391         (get_forward_read_vl_insn): New function.
36392         (get_backward_fault_first_load_insn): Ditto.
36393         (source_equal_p): Adapt for vleff support.
36394         (first_ratio_invalid_for_second_sew_p): Remove.
36395         (first_ratio_invalid_for_second_lmul_p): Ditto.
36396         (first_lmul_less_than_second_lmul_p): Ditto.
36397         (first_ratio_less_than_second_ratio_p): Ditto.
36398         (support_relaxed_compatible_p): New function.
36399         (vector_insn_info::operator>): Remove.
36400         (vector_insn_info::operator>=): Refine.
36401         (vector_insn_info::parse_insn): Adapt for vleff support.
36402         (vector_insn_info::compatible_p): Ditto.
36403         (vector_insn_info::update_fault_first_load_avl): New function.
36404         (pass_vsetvl::transfer_after): Adapt for vleff support.
36405         (pass_vsetvl::demand_fusion): Ditto.
36406         (pass_vsetvl::cleanup_insns): Ditto.
36407         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
36408         redundant condtions.
36409         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
36410         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
36411         * config/riscv/riscv.md: Adapt for vleff support.
36412         * config/riscv/t-riscv: Ditto.
36413         * config/riscv/vector-iterators.md: New iterator.
36414         * config/riscv/vector.md (read_vlsi): New pattern.
36415         (read_vldi_zero_extend): Ditto.
36416         (@pred_fault_load<mode>): Ditto.
36418 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36420         * config/riscv/riscv-vector-builtins.cc
36421         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
36422         (function_expander::use_widen_ternop_insn): Ditto.
36423         * optabs.cc (maybe_gen_insn): Extend nops handling.
36425 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36427         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
36428         patterns according to RVV ISA.
36429         * config/riscv/vector-iterators.md: New iterators.
36430         * config/riscv/vector.md
36431         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
36432         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
36433         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
36434         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
36435         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
36436         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
36437         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
36438         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
36439         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
36440         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
36441         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
36442         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
36443         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
36444         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
36446 2023-03-10  Michael Collison  <collison@rivosinc.com>
36448         * tree-vect-loop-manip.cc (vect_do_peeling): Use
36449         result of constant_lower_bound instead of vf for the lower
36450         bound of the epilog loop trip count.
36452 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
36454         * passes.cc (emergency_dump_function): Finish graph generation.
36456 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
36458         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
36459         and bottom bit only.
36461 2023-03-09  Andrew Pinski  <apinski@marvell.com>
36463         PR tree-optimization/108980
36464         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
36465         Reorgnize the call to warning for not strict flexible arrays
36466         to be before the check of warned.
36468 2023-03-09  Jason Merrill  <jason@redhat.com>
36470         * doc/extend.texi: Comment out __is_deducible docs.
36472 2023-03-09  Jason Merrill  <jason@redhat.com>
36474         PR c++/105841
36475         * doc/extend.texi (Type Traits):: Document __is_deducible.
36477 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
36479         PR driver/108865
36480         * config.host: add object for x86_64-*-mingw*.
36481         * config/i386/sym-mingw32.cc: dummy file to attach
36482         symbol.
36483         * config/i386/utf8-mingw32.rc: windres resource file.
36484         * config/i386/winnt-utf8.manifest: XML manifest to
36485         enable UTF-8.
36486         * config/i386/x-mingw32: reference to x-mingw32-utf8.
36487         * config/i386/x-mingw32-utf8: Makefile fragment to
36488         embed UTF-8 manifest.
36490 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
36492         * lra-constraints.cc (process_alt_operands): Use operand modes for
36493         clobbered regs instead of the biggest access mode.
36495 2023-03-09  Richard Biener  <rguenther@suse.de>
36497         PR middle-end/108995
36498         * fold-const.cc (extract_muldiv_1): Avoid folding
36499         (CST * b) / CST2 when sanitizing overflow and we rely on
36500         overflow being undefined.
36502 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
36503             Richard Biener  <rguenther@suse.de>
36505         PR tree-optimization/109008
36506         * range-op-float.cc (float_widen_lhs_range): New function.
36507         (foperator_plus::op1_range, foperator_minus::op1_range,
36508         foperator_minus::op2_range, foperator_mult::op1_range,
36509         foperator_div::op1_range, foperator_div::op2_range): Use it.
36511 2023-03-07  Jonathan Grant  <jg@jguk.org>
36513         PR sanitizer/81649
36514         * doc/invoke.texi (Instrumentation Options):  Clarify
36515         LeakSanitizer behavior.
36517 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
36519         * doc/install.texi (Prerequisites): Add link to gmplib.org.
36521 2023-03-07  Pan Li  <pan2.li@intel.com>
36522             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36524         PR target/108185
36525         PR target/108654
36526         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
36527         modes.
36528         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
36529         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
36530         * genmodes.cc (adj_precision): New.
36531         (ADJUST_PRECISION): New.
36532         (emit_mode_adjustments): Handle ADJUST_PRECISION.
36534 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
36536         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
36538 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
36540         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
36541         {s|u}{max|min} in QI, HI and DI modes.
36542         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
36543         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
36544         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
36545         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
36546         saved in SGPRs.
36548 2023-03-06  Richard Biener  <rguenther@suse.de>
36550         PR tree-optimization/109025
36551         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
36552         the inner LC PHI use is the inner loop PHI latch definition
36553         before classifying an outer PHI as double reduction.
36555 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
36557         PR target/108429
36558         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
36559         generic.
36560         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
36561         (X86_TUNE_USE_SCATTER): Likewise.
36563 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
36565         PR target/109000
36566         * config/loongarch/loongarch.h (FP_RETURN): Use
36567         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
36568         (UNITS_PER_FP_ARG): Likewise.
36570 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36572         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
36573         (pass_vsetvl::backward_demand_fusion): Ditto.
36575 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
36576             SiYu Wu  <siyu@isrc.iscas.ac.cn>
36578         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
36579         instructions.
36580         (riscv_sm3p1_<mode>): New.
36581         (riscv_sm4ed_<mode>): New.
36582         (riscv_sm4ks_<mode>): New.
36583         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
36584         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
36585         ZKSH's built-in functions.
36587 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
36588             SiYu Wu  <siyu@isrc.iscas.ac.cn>
36590         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
36591         (riscv_sha256sig1_<mode>): New.
36592         (riscv_sha256sum0_<mode>): New.
36593         (riscv_sha256sum1_<mode>): New.
36594         (riscv_sha512sig0h): New.
36595         (riscv_sha512sig0l): New.
36596         (riscv_sha512sig1h): New.
36597         (riscv_sha512sig1l): New.
36598         (riscv_sha512sum0r): New.
36599         (riscv_sha512sum1r): New.
36600         (riscv_sha512sig0): New.
36601         (riscv_sha512sig1): New.
36602         (riscv_sha512sum0): New.
36603         (riscv_sha512sum1): New.
36604         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
36605         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
36606         built-in functions.
36607         (DIRECT_BUILTIN): Add new.
36609 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
36610             SiYu Wu  <siyu@isrc.iscas.ac.cn>
36612         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
36613         (DsA): New.
36614         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
36615         (riscv_aes32dsmi): New.
36616         (riscv_aes64ds): New.
36617         (riscv_aes64dsm): New.
36618         (riscv_aes64im): New.
36619         (riscv_aes64ks1i): New.
36620         (riscv_aes64ks2): New.
36621         (riscv_aes32esi): New.
36622         (riscv_aes32esmi): New.
36623         (riscv_aes64es): New.
36624         (riscv_aes64esm): New.
36625         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
36626         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
36627         ZKNE's built-in functions.
36629 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
36630             SiYu Wu  <siyu@isrc.iscas.ac.cn>
36632         * config/riscv/bitmanip.md: Add ZBKB's instructions.
36633         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
36634         * config/riscv/riscv.md: Add new type for crypto instructions.
36635         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
36636         description file.
36637         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
36638         extension's built-in function file.
36640 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
36641             SiYu Wu  <siyu@isrc.iscas.ac.cn>
36643         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
36644         (RISCV_FTYPE_NAME3): New.
36645         (RISCV_ATYPE_QI): New.
36646         (RISCV_ATYPE_HI): New.
36647         (RISCV_FTYPE_ATYPES2): New.
36648         (RISCV_FTYPE_ATYPES3): New.
36649         * config/riscv/riscv-ftypes.def (2): New.
36650         (3): New.
36652 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
36654         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
36655         use exact_log2().
36657 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36658             kito-cheng  <kito.cheng@sifive.com>
36660         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
36661         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
36662         (riscv_register_pragmas): Add builtin function check call.
36663         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
36664         (check_builtin_call): New function.
36665         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
36666         (class vreinterpret): Ditto.
36667         (class vlmul_ext): Ditto.
36668         (class vlmul_trunc): Ditto.
36669         (class vset): Ditto.
36670         (class vget): Ditto.
36671         (BASE): Ditto.
36672         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
36673         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
36674         (vluxei16): Ditto.
36675         (vluxei32): Ditto.
36676         (vluxei64): Ditto.
36677         (vloxei8): Ditto.
36678         (vloxei16): Ditto.
36679         (vloxei32): Ditto.
36680         (vloxei64): Ditto.
36681         (vsuxei8): Ditto.
36682         (vsuxei16): Ditto.
36683         (vsuxei32): Ditto.
36684         (vsuxei64): Ditto.
36685         (vsoxei8): Ditto.
36686         (vsoxei16): Ditto.
36687         (vsoxei32): Ditto.
36688         (vsoxei64): Ditto.
36689         (vundefined): Add new intrinsic.
36690         (vreinterpret): Ditto.
36691         (vlmul_ext): Ditto.
36692         (vlmul_trunc): Ditto.
36693         (vset): Ditto.
36694         (vget): Ditto.
36695         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
36696         (struct narrow_alu_def): Ditto.
36697         (struct reduc_alu_def): Ditto.
36698         (struct vundefined_def): Ditto.
36699         (struct misc_def): Ditto.
36700         (struct vset_def): Ditto.
36701         (struct vget_def): Ditto.
36702         (SHAPE): Ditto.
36703         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
36704         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
36705         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
36706         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
36707         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
36708         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
36709         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
36710         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
36711         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
36712         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
36713         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
36714         (DEF_RVV_LMUL1_OPS): Ditto.
36715         (DEF_RVV_LMUL2_OPS): Ditto.
36716         (DEF_RVV_LMUL4_OPS): Ditto.
36717         (vint16mf4_t): Ditto.
36718         (vint16mf2_t): Ditto.
36719         (vint16m1_t): Ditto.
36720         (vint16m2_t): Ditto.
36721         (vint16m4_t): Ditto.
36722         (vint16m8_t): Ditto.
36723         (vint32mf2_t): Ditto.
36724         (vint32m1_t): Ditto.
36725         (vint32m2_t): Ditto.
36726         (vint32m4_t): Ditto.
36727         (vint32m8_t): Ditto.
36728         (vint64m1_t): Ditto.
36729         (vint64m2_t): Ditto.
36730         (vint64m4_t): Ditto.
36731         (vint64m8_t): Ditto.
36732         (vuint16mf4_t): Ditto.
36733         (vuint16mf2_t): Ditto.
36734         (vuint16m1_t): Ditto.
36735         (vuint16m2_t): Ditto.
36736         (vuint16m4_t): Ditto.
36737         (vuint16m8_t): Ditto.
36738         (vuint32mf2_t): Ditto.
36739         (vuint32m1_t): Ditto.
36740         (vuint32m2_t): Ditto.
36741         (vuint32m4_t): Ditto.
36742         (vuint32m8_t): Ditto.
36743         (vuint64m1_t): Ditto.
36744         (vuint64m2_t): Ditto.
36745         (vuint64m4_t): Ditto.
36746         (vuint64m8_t): Ditto.
36747         (vint8mf4_t): Ditto.
36748         (vint8mf2_t): Ditto.
36749         (vint8m1_t): Ditto.
36750         (vint8m2_t): Ditto.
36751         (vint8m4_t): Ditto.
36752         (vint8m8_t): Ditto.
36753         (vuint8mf4_t): Ditto.
36754         (vuint8mf2_t): Ditto.
36755         (vuint8m1_t): Ditto.
36756         (vuint8m2_t): Ditto.
36757         (vuint8m4_t): Ditto.
36758         (vuint8m8_t): Ditto.
36759         (vint8mf8_t): Ditto.
36760         (vuint8mf8_t): Ditto.
36761         (vfloat32mf2_t): Ditto.
36762         (vfloat32m1_t): Ditto.
36763         (vfloat32m2_t): Ditto.
36764         (vfloat32m4_t): Ditto.
36765         (vfloat64m1_t): Ditto.
36766         (vfloat64m2_t): Ditto.
36767         (vfloat64m4_t): Ditto.
36768         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
36769         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
36770         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
36771         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
36772         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
36773         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
36774         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
36775         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
36776         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
36777         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
36778         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
36779         (DEF_RVV_LMUL1_OPS): Ditto.
36780         (DEF_RVV_LMUL2_OPS): Ditto.
36781         (DEF_RVV_LMUL4_OPS): Ditto.
36782         (DEF_RVV_TYPE_INDEX): Ditto.
36783         (required_extensions_p): Adapt for new intrinsic support/
36784         (get_required_extensions): New function.
36785         (check_required_extensions): Ditto.
36786         (unsigned_base_type_p): Remove.
36787         (rvv_arg_type_info::get_scalar_ptr_type): New function.
36788         (get_mode_for_bitsize): Remove.
36789         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
36790         (rvv_arg_type_info::get_base_vector_type): Ditto.
36791         (rvv_arg_type_info::get_function_type_index): Ditto.
36792         (DEF_RVV_BASE_TYPE): New def.
36793         (function_builder::apply_predication): New class.
36794         (function_expander::mask_mode): Ditto.
36795         (function_checker::function_checker): Ditto.
36796         (function_checker::report_non_ice): Ditto.
36797         (function_checker::report_out_of_range): Ditto.
36798         (function_checker::require_immediate): Ditto.
36799         (function_checker::require_immediate_range): Ditto.
36800         (function_checker::check): Ditto.
36801         (check_builtin_call): Ditto.
36802         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
36803         (DEF_RVV_BASE_TYPE): Ditto.
36804         (DEF_RVV_TYPE_INDEX): Ditto.
36805         (vbool64_t): Ditto.
36806         (vbool32_t): Ditto.
36807         (vbool16_t): Ditto.
36808         (vbool8_t): Ditto.
36809         (vbool4_t): Ditto.
36810         (vbool2_t): Ditto.
36811         (vbool1_t): Ditto.
36812         (vuint8mf8_t): Ditto.
36813         (vuint8mf4_t): Ditto.
36814         (vuint8mf2_t): Ditto.
36815         (vuint8m1_t): Ditto.
36816         (vuint8m2_t): Ditto.
36817         (vint8m4_t): Ditto.
36818         (vuint8m4_t): Ditto.
36819         (vint8m8_t): Ditto.
36820         (vuint8m8_t): Ditto.
36821         (vint16mf4_t): Ditto.
36822         (vuint16mf2_t): Ditto.
36823         (vuint16m1_t): Ditto.
36824         (vuint16m2_t): Ditto.
36825         (vuint16m4_t): Ditto.
36826         (vuint16m8_t): Ditto.
36827         (vint32mf2_t): Ditto.
36828         (vuint32m1_t): Ditto.
36829         (vuint32m2_t): Ditto.
36830         (vuint32m4_t): Ditto.
36831         (vuint32m8_t): Ditto.
36832         (vuint64m1_t): Ditto.
36833         (vuint64m2_t): Ditto.
36834         (vuint64m4_t): Ditto.
36835         (vuint64m8_t): Ditto.
36836         (vfloat32mf2_t): Ditto.
36837         (vfloat32m1_t): Ditto.
36838         (vfloat32m2_t): Ditto.
36839         (vfloat32m4_t): Ditto.
36840         (vfloat32m8_t): Ditto.
36841         (vfloat64m1_t): Ditto.
36842         (vfloat64m4_t): Ditto.
36843         (vector): Move it def.
36844         (scalar): Ditto.
36845         (mask): Ditto.
36846         (signed_vector): Ditto.
36847         (unsigned_vector): Ditto.
36848         (unsigned_scalar): Ditto.
36849         (vector_ptr): Ditto.
36850         (scalar_ptr): Ditto.
36851         (scalar_const_ptr): Ditto.
36852         (void): Ditto.
36853         (size): Ditto.
36854         (ptrdiff): Ditto.
36855         (unsigned_long): Ditto.
36856         (long): Ditto.
36857         (eew8_index): Ditto.
36858         (eew16_index): Ditto.
36859         (eew32_index): Ditto.
36860         (eew64_index): Ditto.
36861         (shift_vector): Ditto.
36862         (double_trunc_vector): Ditto.
36863         (quad_trunc_vector): Ditto.
36864         (oct_trunc_vector): Ditto.
36865         (double_trunc_scalar): Ditto.
36866         (double_trunc_signed_vector): Ditto.
36867         (double_trunc_unsigned_vector): Ditto.
36868         (double_trunc_unsigned_scalar): Ditto.
36869         (double_trunc_float_vector): Ditto.
36870         (float_vector): Ditto.
36871         (lmul1_vector): Ditto.
36872         (widen_lmul1_vector): Ditto.
36873         (eew8_interpret): Ditto.
36874         (eew16_interpret): Ditto.
36875         (eew32_interpret): Ditto.
36876         (eew64_interpret): Ditto.
36877         (vlmul_ext_x2): Ditto.
36878         (vlmul_ext_x4): Ditto.
36879         (vlmul_ext_x8): Ditto.
36880         (vlmul_ext_x16): Ditto.
36881         (vlmul_ext_x32): Ditto.
36882         (vlmul_ext_x64): Ditto.
36883         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
36884         (struct function_type_info): New function.
36885         (struct rvv_arg_type_info): Ditto.
36886         (class function_checker): New class.
36887         (rvv_arg_type_info::get_scalar_type): New function.
36888         (rvv_arg_type_info::get_vector_type): Ditto.
36889         (function_expander::ret_mode): New function.
36890         (function_checker::arg_mode): Ditto.
36891         (function_checker::ret_mode): Ditto.
36892         * config/riscv/t-riscv: Add generator.
36893         * config/riscv/vector-iterators.md: New iterators.
36894         * config/riscv/vector.md (vundefined<mode>): New pattern.
36895         (@vundefined<mode>): Ditto.
36896         (@vreinterpret<mode>): Ditto.
36897         (@vlmul_extx2<mode>): Ditto.
36898         (@vlmul_extx4<mode>): Ditto.
36899         (@vlmul_extx8<mode>): Ditto.
36900         (@vlmul_extx16<mode>): Ditto.
36901         (@vlmul_extx32<mode>): Ditto.
36902         (@vlmul_extx64<mode>): Ditto.
36903         (*vlmul_extx2<mode>): Ditto.
36904         (*vlmul_extx4<mode>): Ditto.
36905         (*vlmul_extx8<mode>): Ditto.
36906         (*vlmul_extx16<mode>): Ditto.
36907         (*vlmul_extx32<mode>): Ditto.
36908         (*vlmul_extx64<mode>): Ditto.
36909         * config/riscv/genrvv-type-indexer.cc: New file.
36911 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36913         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
36914         (slide1_sew64_helper): New function.
36915         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
36916         (get_unknown_min_value): Ditto.
36917         (force_vector_length_operand): Ditto.
36918         (gen_no_side_effects_vsetvl_rtx): Ditto.
36919         (get_vl_x2_rtx): Ditto.
36920         (slide1_sew64_helper): Ditto.
36921         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
36922         (class vrgather): Ditto.
36923         (class vrgatherei16): Ditto.
36924         (class vcompress): Ditto.
36925         (BASE): Ditto.
36926         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
36927         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
36928         (vslidedown): Ditto.
36929         (vslide1up): Ditto.
36930         (vslide1down): Ditto.
36931         (vfslide1up): Ditto.
36932         (vfslide1down): Ditto.
36933         (vrgather): Ditto.
36934         (vrgatherei16): Ditto.
36935         (vcompress): Ditto.
36936         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
36937         (vint8mf8_t): Ditto.
36938         (vint8mf4_t): Ditto.
36939         (vint8mf2_t): Ditto.
36940         (vint8m1_t): Ditto.
36941         (vint8m2_t): Ditto.
36942         (vint8m4_t): Ditto.
36943         (vint16mf4_t): Ditto.
36944         (vint16mf2_t): Ditto.
36945         (vint16m1_t): Ditto.
36946         (vint16m2_t): Ditto.
36947         (vint16m4_t): Ditto.
36948         (vint16m8_t): Ditto.
36949         (vint32mf2_t): Ditto.
36950         (vint32m1_t): Ditto.
36951         (vint32m2_t): Ditto.
36952         (vint32m4_t): Ditto.
36953         (vint32m8_t): Ditto.
36954         (vint64m1_t): Ditto.
36955         (vint64m2_t): Ditto.
36956         (vint64m4_t): Ditto.
36957         (vint64m8_t): Ditto.
36958         (vuint8mf8_t): Ditto.
36959         (vuint8mf4_t): Ditto.
36960         (vuint8mf2_t): Ditto.
36961         (vuint8m1_t): Ditto.
36962         (vuint8m2_t): Ditto.
36963         (vuint8m4_t): Ditto.
36964         (vuint16mf4_t): Ditto.
36965         (vuint16mf2_t): Ditto.
36966         (vuint16m1_t): Ditto.
36967         (vuint16m2_t): Ditto.
36968         (vuint16m4_t): Ditto.
36969         (vuint16m8_t): Ditto.
36970         (vuint32mf2_t): Ditto.
36971         (vuint32m1_t): Ditto.
36972         (vuint32m2_t): Ditto.
36973         (vuint32m4_t): Ditto.
36974         (vuint32m8_t): Ditto.
36975         (vuint64m1_t): Ditto.
36976         (vuint64m2_t): Ditto.
36977         (vuint64m4_t): Ditto.
36978         (vuint64m8_t): Ditto.
36979         (vfloat32mf2_t): Ditto.
36980         (vfloat32m1_t): Ditto.
36981         (vfloat32m2_t): Ditto.
36982         (vfloat32m4_t): Ditto.
36983         (vfloat32m8_t): Ditto.
36984         (vfloat64m1_t): Ditto.
36985         (vfloat64m2_t): Ditto.
36986         (vfloat64m4_t): Ditto.
36987         (vfloat64m8_t): Ditto.
36988         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
36989         * config/riscv/riscv.md: Adjust RVV instruction types.
36990         * config/riscv/vector-iterators.md (down): New iterator.
36991         (=vd,vr): New attribute.
36992         (UNSPEC_VSLIDE1UP): New unspec.
36993         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
36994         (*pred_slide<ud><mode>): Ditto.
36995         (*pred_slide<ud><mode>_extended): Ditto.
36996         (@pred_gather<mode>): Ditto.
36997         (@pred_gather<mode>_scalar): Ditto.
36998         (@pred_gatherei16<mode>): Ditto.
36999         (@pred_compress<mode>): Ditto.
37001 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
37003         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
37005 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
37007         * config/riscv/constraints.md (Wb1): New constraint.
37008         * config/riscv/predicates.md
37009         (vector_least_significant_set_mask_operand): New predicate.
37010         (vector_broadcast_mask_operand): Ditto.
37011         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
37012         (gen_scalar_move_mask): New function.
37013         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
37014         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
37015         (class vmv_s): Ditto.
37016         (BASE): Ditto.
37017         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
37018         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
37019         (vmv_s): Ditto.
37020         (vfmv_f): Ditto.
37021         (vfmv_s): Ditto.
37022         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
37023         (SHAPE): Ditto.
37024         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
37025         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
37026         (function_expander::use_exact_insn): New function.
37027         (function_expander::use_contiguous_load_insn): New function.
37028         (function_expander::use_contiguous_store_insn): New function.
37029         (function_expander::use_ternop_insn): New function.
37030         (function_expander::use_widen_ternop_insn): New function.
37031         (function_expander::use_scalar_move_insn): New function.
37032         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
37033         * config/riscv/riscv-vector-builtins.h
37034         (function_expander::add_scalar_move_mask_operand): New class.
37035         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
37036         (scalar_move_insn_p): Ditto.
37037         (has_vsetvl_killed_avl_p): Ditto.
37038         (anticipatable_occurrence_p): Ditto.
37039         (insert_vsetvl): Ditto.
37040         (get_vl_vtype_info): Ditto.
37041         (calculate_sew): Ditto.
37042         (calculate_vlmul): Ditto.
37043         (incompatible_avl_p): Ditto.
37044         (different_sew_p): Ditto.
37045         (different_lmul_p): Ditto.
37046         (different_ratio_p): Ditto.
37047         (different_tail_policy_p): Ditto.
37048         (different_mask_policy_p): Ditto.
37049         (possible_zero_avl_p): Ditto.
37050         (first_ratio_invalid_for_second_sew_p): Ditto.
37051         (first_ratio_invalid_for_second_lmul_p): Ditto.
37052         (second_ratio_invalid_for_first_sew_p): Ditto.
37053         (second_ratio_invalid_for_first_lmul_p): Ditto.
37054         (second_sew_less_than_first_sew_p): Ditto.
37055         (first_sew_less_than_second_sew_p): Ditto.
37056         (compare_lmul): Ditto.
37057         (second_lmul_less_than_first_lmul_p): Ditto.
37058         (first_lmul_less_than_second_lmul_p): Ditto.
37059         (first_ratio_less_than_second_ratio_p): Ditto.
37060         (second_ratio_less_than_first_ratio_p): Ditto.
37061         (DEF_INCOMPATIBLE_COND): Ditto.
37062         (greatest_sew): Ditto.
37063         (first_sew): Ditto.
37064         (second_sew): Ditto.
37065         (first_vlmul): Ditto.
37066         (second_vlmul): Ditto.
37067         (first_ratio): Ditto.
37068         (second_ratio): Ditto.
37069         (vlmul_for_first_sew_second_ratio): Ditto.
37070         (ratio_for_second_sew_first_vlmul): Ditto.
37071         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
37072         (always_unavailable): Ditto.
37073         (avl_unavailable_p): Ditto.
37074         (sew_unavailable_p): Ditto.
37075         (lmul_unavailable_p): Ditto.
37076         (ge_sew_unavailable_p): Ditto.
37077         (ge_sew_lmul_unavailable_p): Ditto.
37078         (ge_sew_ratio_unavailable_p): Ditto.
37079         (DEF_UNAVAILABLE_COND): Ditto.
37080         (same_sew_lmul_demand_p): Ditto.
37081         (propagate_avl_across_demands_p): Ditto.
37082         (reg_available_p): Ditto.
37083         (avl_info::has_non_zero_avl): Ditto.
37084         (vl_vtype_info::has_non_zero_avl): Ditto.
37085         (vector_insn_info::operator>=): Refactor.
37086         (vector_insn_info::parse_insn): Adjust for scalar move.
37087         (vector_insn_info::demand_vl_vtype): Remove.
37088         (vector_insn_info::compatible_p): New function.
37089         (vector_insn_info::compatible_avl_p): Ditto.
37090         (vector_insn_info::compatible_vtype_p): Ditto.
37091         (vector_insn_info::available_p): Ditto.
37092         (vector_insn_info::merge): Ditto.
37093         (vector_insn_info::fuse_avl): Ditto.
37094         (vector_insn_info::fuse_sew_lmul): Ditto.
37095         (vector_insn_info::fuse_tail_policy): Ditto.
37096         (vector_insn_info::fuse_mask_policy): Ditto.
37097         (vector_insn_info::dump): Ditto.
37098         (vector_infos_manager::release): Ditto.
37099         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
37100         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
37101         (pass_vsetvl::hard_empty_block_p): Ditto.
37102         (pass_vsetvl::backward_demand_fusion): Ditto.
37103         (pass_vsetvl::forward_demand_fusion): Ditto.
37104         (pass_vsetvl::refine_vsetvls): Ditto.
37105         (pass_vsetvl::cleanup_vsetvls): Ditto.
37106         (pass_vsetvl::commit_vsetvls): Ditto.
37107         (pass_vsetvl::propagate_avl): Ditto.
37108         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
37109         (struct demands_pair): Ditto.
37110         (struct demands_cond): Ditto.
37111         (struct demands_fuse_rule): Ditto.
37112         * config/riscv/vector-iterators.md: New iterator.
37113         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
37114         (*pred_broadcast<mode>): Ditto.
37115         (*pred_broadcast<mode>_extended_scalar): Ditto.
37116         (@pred_extract_first<mode>): Ditto.
37117         (*pred_extract_first<mode>): Ditto.
37118         (@pred_extract_first_trunc<mode>): Ditto.
37119         * config/riscv/riscv-vsetvl.def: New file.
37121 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
37123         * config/riscv/bitmanip.md: allow 0 constant in max/min
37124         pattern.
37126 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
37128         * config/riscv/bitmanip.md: Fix wrong index in the check.
37130 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
37132         PR middle-end/109006
37133         * vec.cc (test_auto_alias): Adjust comment for removal of
37134         m_vecdata.
37135         * read-rtl-function.cc (function_reader::parse_block): Likewise.
37136         * gdbhooks.py: Likewise.
37138 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
37140         PR testsuite/108973
37141         * selftest-diagnostic.cc
37142         (test_diagnostic_context::test_diagnostic_context): Set
37143         caret_max_width to 80.
37145 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
37147         * gimple-ssa-warn-access.cc
37148         (pass_waccess::check_dangling_stores): Skip non-stores.
37150 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
37152         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
37153         after vmsr and vmrs, and lower the case of P0.
37155 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
37157         PR middle-end/109006
37158         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
37160 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
37162         PR middle-end/109006
37163         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
37165 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
37167         PR c/108986
37168         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
37169         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
37170         suppressed on stmt.  For [static %E] warning, print access_nelts
37171         rather than access_size.  Fix up comment wording.
37173 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
37175         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
37176         arch14 instead of z16.
37178 2023-03-03  Anthony Green  <green@moxielogic.com>
37180         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
37182 2023-03-03  Anthony Green  <green@moxielogic.com>
37184         * config/moxie/constraints.md (A, B, W): Change
37185         define_constraint to define_memory_constraint.
37187 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
37189         * toplev.cc (process_options): Fix the spelling of
37190         "-fstack-clash-protection".
37192 2023-03-03  Richard Biener  <rguenther@suse.de>
37194         PR tree-optimization/109002
37195         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
37196         PHI-translate ANTIC_IN.
37198 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
37200         PR tree-optimization/108988
37201         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
37202         size_type_node before passing it as argument to fwrite.  Formatting
37203         fixes.
37205 2023-03-03  Richard Biener  <rguenther@suse.de>
37207         PR target/108738
37208         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
37209         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
37210         * config/i386/i386-features.h (scalar_chain::max_visits): New.
37211         (scalar_chain::build): Add bitmap parameter, return boolean.
37212         (scalar_chain::add_insn): Likewise.
37213         (scalar_chain::analyze_register_chain): Likewise.
37214         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
37215         Initialize max_visits.
37216         (scalar_chain::analyze_register_chain): When we exhaust
37217         max_visits, abort.  Also abort when running into any
37218         disallowed insn.
37219         (scalar_chain::add_insn): Propagate abort.
37220         (scalar_chain::build): Likewise.  When aborting amend
37221         the set of disallowed insn with the insns set.
37222         (convert_scalars_to_vector): Adjust.  Do not convert aborted
37223         chains.
37225 2023-03-03  Richard Biener  <rguenther@suse.de>
37227         PR debug/108772
37228         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
37229         generate a DIE for a function scope static.
37231 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
37233         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
37235 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
37237         PR target/108883
37238         * target.h (emit_support_tinfos_callback): New typedef.
37239         * targhooks.h (default_emit_support_tinfos): Declare.
37240         * targhooks.cc (default_emit_support_tinfos): New function.
37241         * target.def (emit_support_tinfos): New target hook.
37242         * doc/tm.texi.in (emit_support_tinfos): Document it.
37243         * doc/tm.texi: Regenerated.
37244         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
37245         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
37247 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
37249         * ira-costs.cc: Include print-rtl.h.
37250         (record_reg_classes, scan_one_insn): Add code to print debug info.
37251         (record_operand_costs): Find and use smaller cost for hard reg
37252         move.
37254 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
37255             Paul-Antoine Arras  <pa@codesourcery.com>
37257         * builtins.cc (mathfn_built_in_explicit): New.
37258         * config/gcn/gcn.cc: Include case-cfn-macros.h.
37259         (mathfn_built_in_explicit): Add prototype.
37260         (gcn_vectorize_builtin_vectorized_function): New.
37261         (gcn_libc_has_function): New.
37262         (TARGET_LIBC_HAS_FUNCTION): Define.
37263         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
37265 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
37267         PR tree-optimization/108979
37268         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
37269         operations on invariants.
37271 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
37273         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
37274         * config/s390/s390.cc (s390_option_override_internal): Make
37275         partial vector usage the default from z13 on.
37276         * config/s390/vector.md (len_load_v16qi): Add.
37277         (len_store_v16qi): Add.
37279 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
37281         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
37282         of constant 0 offset.
37284 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
37286         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
37287         instead of long.
37288         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
37290 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
37292         * config.gcc: add -with-{no-}msa build option.
37293         * config/mips/mips.h: Likewise.
37294         * doc/install.texi: Likewise.
37296 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
37298         PR tree-optimization/108603
37299         * explow.cc (convert_memory_address_addr_space_1): Only wrap
37300         the result of a recursive call in a CONST if no instructions
37301         were emitted.
37303 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
37305         PR tree-optimization/108430
37306         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
37307         of inverted condition.
37309 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
37311         PR c++/108934
37312         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
37313         comparison copy the bytes from ptr to a temporary buffer and clearing
37314         padding bits in there.
37316 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
37318         PR middle-end/108545
37319         * gimplify.cc (struct tree_operand_hash_no_se): New.
37320         (omp_index_mapping_groups_1, omp_index_mapping_groups,
37321         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
37322         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
37323         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
37324         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
37325         of tree_operand_hash.
37327 2023-03-01  LIU Hao  <lh_mouse@126.com>
37329         PR pch/14940
37330         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
37331         Remove the size limit `pch_VA_max_size`
37333 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
37335         PR middle-end/108546
37336         * omp-low.cc (lower_omp_target): Remove optional handling
37337         on the receiver side, i.e. inside target (data), for
37338         use_device_ptr.
37340 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
37342         PR debug/108967
37343         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
37344         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
37346 2023-03-01  Richard Biener  <rguenther@suse.de>
37348         PR tree-optimization/108970
37349         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
37350         Check we can copy the BBs.
37351         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
37352         check.
37353         (vect_do_peeling): Streamline error handling.
37355 2023-03-01  Richard Biener  <rguenther@suse.de>
37357         PR tree-optimization/108950
37358         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
37359         Check oprnd0 is defined in the loop.
37360         * tree-vect-loop.cc (vectorizable_reduction): Record all
37361         operands vector types, compute that of invariants and
37362         properly update their SLP nodes.
37364 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
37366         PR target/108240
37367         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
37368         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
37370 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
37372         PR middle-end/107411
37373         PR middle-end/107411
37374         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
37375         xasprintf.
37376         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
37377         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
37379 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
37381         PR sanitizer/108894
37382         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
37383         comparison rather than index > bound.
37384         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
37385         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
37386         * doc/invoke.texi (-fsanitize=bounds): Document that whether
37387         flexible array member-like arrays are instrumented or not depends
37388         on -fstrict-flex-arrays* options of strict_flex_array attributes.
37389         (-fsanitize=bounds-strict): Document that flexible array members
37390         are not instrumented.
37392 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
37394         PR target/108922
37395         Revert:
37396         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
37397         (fmod<mode>3): Ditto.
37398         (fpremxf4_i387): Ditto.
37399         (reminderxf3): Ditto.
37400         (reminder<mode>3): Ditto.
37401         (fprem1xf4_i387): Ditto.
37403 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
37405         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
37406         generating FFS with mismatched operand and result modes, by using
37407         an explicit SIGN_EXTEND/ZERO_EXTEND.
37408         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
37409         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
37411 2023-02-27  Patrick Palka  <ppalka@redhat.com>
37413         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
37414         * lra-int.h (lra_change_class): Likewise.
37415         * recog.h (which_op_alt): Likewise.
37416         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
37417         instead of static.
37419 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
37421         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
37422         New prototype.
37423         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
37424         New function.
37425         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
37426         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
37428 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
37430         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
37431         (xtensa_get_config_v3): New functions.
37433 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37435         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
37437 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
37439         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
37440         the macro to 0x1000000000.
37442 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
37444         PR modula2/108261
37445         * doc/gm2.texi (-fm2-pathname): New option documented.
37446         (-fm2-pathnameI): New option documented.
37447         (-fm2-prefix=): New option documented.
37448         (-fruntime-modules=): Update default module list.
37450 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
37452         PR target/108919
37453         * config/xtensa/xtensa-protos.h
37454         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
37455         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
37456         to xtensa_expand_call.
37457         (xtensa_expand_call): Emit the call and add a clobber expression
37458         for the static chain to it in case of windowed ABI.
37459         * config/xtensa/xtensa.md (call, call_value, sibcall)
37460         (sibcall_value): Call xtensa_expand_call and complete expansion
37461         right after that call.
37463 2023-02-24  Richard Biener  <rguenther@suse.de>
37465         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
37466         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
37467         changing alignment of vec<T, A, vl_embed> and simplifying
37468         address.
37469         (vec<T, A, vl_embed>::address): Compute as this + 1.
37470         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
37471         vector instead of the offset of the m_vecdata member.
37472         (auto_vec<T, N>::m_data): Turn storage into
37473         uninitialized unsigned char.
37474         (auto_vec<T, N>::auto_vec): Allow allocation of one
37475         stack member.  Initialize m_vec in a special way to
37476         avoid later stringop overflow diagnostics.
37477         * vec.cc (test_auto_alias): New.
37478         (vec_cc_tests): Call it.
37480 2023-02-24  Richard Biener  <rguenther@suse.de>
37482         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
37483         take a const reference to the object, use address to
37484         access data.
37485         (vec<T, A, vl_embed>::contains): Use address to access data.
37486         (vec<T, A, vl_embed>::operator[]): Use address instead of
37487         m_vecdata to access data.
37488         (vec<T, A, vl_embed>::iterate): Likewise.
37489         (vec<T, A, vl_embed>::copy): Likewise.
37490         (vec<T, A, vl_embed>::quick_push): Likewise.
37491         (vec<T, A, vl_embed>::pop): Likewise.
37492         (vec<T, A, vl_embed>::quick_insert): Likewise.
37493         (vec<T, A, vl_embed>::ordered_remove): Likewise.
37494         (vec<T, A, vl_embed>::unordered_remove): Likewise.
37495         (vec<T, A, vl_embed>::block_remove): Likewise.
37496         (vec<T, A, vl_heap>::address): Likewise.
37498 2023-02-24  Martin Liska  <mliska@suse.cz>
37500         PR sanitizer/108834
37501         * asan.cc (asan_add_global): Use proper TU name for normal
37502         global variables (and aux_base_name for the artificial one).
37504 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
37506         * config/i386/i386-builtin.def: Update description of BDESC
37507         and BDESC_FIRST in file comment to include mask2.
37509 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37511         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
37513 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
37515         PR middle-end/108854
37516         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
37517         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
37518         nodes and adjust their DECL_CONTEXT.
37520 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
37522         PR target/108881
37523         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
37524         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
37525         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
37526         __builtin_ia32_cvtne2ps2bf16_v8bf,
37527         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
37528         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
37529         __builtin_ia32_cvtneps2bf16_v8sf_mask,
37530         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
37531         __builtin_ia32_cvtneps2bf16_v4sf_mask,
37532         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
37533         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
37534         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
37535         __builtin_ia32_dpbf16ps_v4sf_mask,
37536         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
37537         OPTION_MASK_ISA_AVX512VL.
37539 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
37541         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
37542         Add non-compact 32-bit multilibs.
37544 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
37546         * config/mips/mips.md (*clo<mode>2): New pattern.
37548 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
37550         * config/mips/mips.h (machine_function): New variable
37551         use_hazard_barrier_return_p.
37552         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
37553         (mips_hb_return_internal): New insn pattern.
37554         * config/mips/mips.cc (mips_attribute_table): Add attribute
37555         use_hazard_barrier_return.
37556         (mips_use_hazard_barrier_return_p): New static function.
37557         (mips_function_attr_inlinable_p): Likewise.
37558         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
37559         Emit error for unsupported architecture choice.
37560         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
37561         Return false for use_hazard_barrier_return.
37562         (mips_expand_epilogue): Emit hazard barrier return.
37563         * doc/extend.texi: Document use_hazard_barrier_return.
37565 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
37567         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
37568         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
37569         for the gcc-internal headers.
37571 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
37573         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
37574         and $(POSTCOMPILE) instead of manual dependency listing.
37575         * config/xtensa/xtensa-dynconfig.c: Rename to ...
37576         * config/xtensa/xtensa-dynconfig.cc: ... this.
37578 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
37580         * doc/cfg.texi: Reorder index entries around @items.
37581         * doc/cpp.texi: Ditto.
37582         * doc/cppenv.texi: Ditto.
37583         * doc/cppopts.texi: Ditto.
37584         * doc/generic.texi: Ditto.
37585         * doc/install.texi: Ditto.
37586         * doc/extend.texi: Ditto.
37587         * doc/invoke.texi: Ditto.
37588         * doc/md.texi: Ditto.
37589         * doc/rtl.texi: Ditto.
37590         * doc/tm.texi.in: Ditto.
37591         * doc/trouble.texi: Ditto.
37592         * doc/tm.texi: Regenerate.
37594 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
37596         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
37597         the occurrence of general-purpose register used only once and for
37598         transferring intermediate value.
37600 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
37602         * config/xtensa/xtensa.cc (machine_function): Add new member
37603         'eliminated_callee_saved_bmp'.
37604         (xtensa_can_eliminate_callee_saved_reg_p): New function to
37605         determine whether the register can be eliminated or not.
37606         (xtensa_expand_prologue): Add invoking the above function and
37607         elimination the use of callee-saved register by using its stack
37608         slot through the stack pointer (or the frame pointer if needed)
37609         directly.
37610         (xtensa_expand_prologue): Modify to not emit register restoration
37611         insn from its stack slot if the register is already eliminated.
37613 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
37615         PR translation/108890
37616         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
37617         around fatal_error format strings.
37619 2023-02-23  Richard Biener  <rguenther@suse.de>
37621         * tree-ssa-structalias.cc (handle_lhs_call): Do not
37622         re-create rhsc, only truncate it.
37624 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
37626         PR middle-end/106258
37627         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
37628         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
37630 2023-02-23  Richard Biener  <rguenther@suse.de>
37632         * tree-if-conv.cc (tree_if_conversion): Properly manage
37633         memory of refs and the contained data references.
37635 2023-02-23  Richard Biener  <rguenther@suse.de>
37637         PR tree-optimization/108888
37638         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
37639         calls to predicate.
37640         (predicate_statements): Only predicate calls with PLF_2.
37642 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
37644         * config/xtensa/xtensa.md
37645         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
37646         Add missing "SI:" to PLUS RTXes.
37648 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
37650         PR target/108876
37651         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
37652         Emit (use (reg:SI A0_REG)) at the end in the sibling call
37653         (i.e. the same place as (return) in the normal call).
37655 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
37657         Revert:
37658         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
37660         PR target/108876
37661         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
37662         for A0_REG.
37663         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
37664         (sibcall_value, sibcall_value_internal): Add 'use' expression
37665         for A0_REG.
37667 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
37669         * doc/cppdiropts.texi: Reorder @opindex commands to precede
37670         @items they relate to.
37671         * doc/cppopts.texi: Ditto.
37672         * doc/cppwarnopts.texi: Ditto.
37673         * doc/invoke.texi: Ditto.
37674         * doc/lto.texi: Ditto.
37676 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
37678         * internal-fn.cc (expand_MASK_CALL): New.
37679         * internal-fn.def (MASK_CALL): New.
37680         * internal-fn.h (expand_MASK_CALL): New prototype.
37681         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
37682         for mask arguments also.
37683         * tree-if-conv.cc: Include cgraph.h.
37684         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
37685         (predicate_statements): Convert functions to IFN_MASK_CALL.
37686         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
37687         IFN_MASK_CALL as a SIMD function call.
37688         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
37689         IFN_MASK_CALL as an inbranch SIMD function call.
37690         Generate the mask vector arguments.
37692 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
37694         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
37695         (class widen_reducop): Ditto.
37696         (class freducop): Ditto.
37697         (class widen_freducop): Ditto.
37698         (BASE): Ditto.
37699         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
37700         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
37701         (vredmaxu): Ditto.
37702         (vredmax): Ditto.
37703         (vredminu): Ditto.
37704         (vredmin): Ditto.
37705         (vredand): Ditto.
37706         (vredor): Ditto.
37707         (vredxor): Ditto.
37708         (vwredsum): Ditto.
37709         (vwredsumu): Ditto.
37710         (vfredusum): Ditto.
37711         (vfredosum): Ditto.
37712         (vfredmax): Ditto.
37713         (vfredmin): Ditto.
37714         (vfwredosum): Ditto.
37715         (vfwredusum): Ditto.
37716         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
37717         (SHAPE): Ditto.
37718         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
37719         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
37720         (DEF_RVV_WU_OPS): Ditto.
37721         (DEF_RVV_WF_OPS): Ditto.
37722         (vint8mf8_t): Ditto.
37723         (vint8mf4_t): Ditto.
37724         (vint8mf2_t): Ditto.
37725         (vint8m1_t): Ditto.
37726         (vint8m2_t): Ditto.
37727         (vint8m4_t): Ditto.
37728         (vint8m8_t): Ditto.
37729         (vint16mf4_t): Ditto.
37730         (vint16mf2_t): Ditto.
37731         (vint16m1_t): Ditto.
37732         (vint16m2_t): Ditto.
37733         (vint16m4_t): Ditto.
37734         (vint16m8_t): Ditto.
37735         (vint32mf2_t): Ditto.
37736         (vint32m1_t): Ditto.
37737         (vint32m2_t): Ditto.
37738         (vint32m4_t): Ditto.
37739         (vint32m8_t): Ditto.
37740         (vuint8mf8_t): Ditto.
37741         (vuint8mf4_t): Ditto.
37742         (vuint8mf2_t): Ditto.
37743         (vuint8m1_t): Ditto.
37744         (vuint8m2_t): Ditto.
37745         (vuint8m4_t): Ditto.
37746         (vuint8m8_t): Ditto.
37747         (vuint16mf4_t): Ditto.
37748         (vuint16mf2_t): Ditto.
37749         (vuint16m1_t): Ditto.
37750         (vuint16m2_t): Ditto.
37751         (vuint16m4_t): Ditto.
37752         (vuint16m8_t): Ditto.
37753         (vuint32mf2_t): Ditto.
37754         (vuint32m1_t): Ditto.
37755         (vuint32m2_t): Ditto.
37756         (vuint32m4_t): Ditto.
37757         (vuint32m8_t): Ditto.
37758         (vfloat32mf2_t): Ditto.
37759         (vfloat32m1_t): Ditto.
37760         (vfloat32m2_t): Ditto.
37761         (vfloat32m4_t): Ditto.
37762         (vfloat32m8_t): Ditto.
37763         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
37764         (DEF_RVV_WU_OPS): Ditto.
37765         (DEF_RVV_WF_OPS): Ditto.
37766         (required_extensions_p): Add reduction support.
37767         (rvv_arg_type_info::get_base_vector_type): Ditto.
37768         (rvv_arg_type_info::get_tree_type): Ditto.
37769         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
37770         * config/riscv/riscv.md: Ditto.
37771         * config/riscv/vector-iterators.md (minu): Ditto.
37772         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
37773         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
37774         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
37775         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
37776         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
37777         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
37778         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
37780 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
37782         * config/riscv/iterators.md: New iterator.
37783         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
37784         (enum ternop_type): New enum.
37785         (class vmacc): New class.
37786         (class imac): Ditto.
37787         (class vnmsac): Ditto.
37788         (enum widen_ternop_type): New enum.
37789         (class vmadd): Ditto.
37790         (class vnmsub): Ditto.
37791         (class iwmac): Ditto.
37792         (class vwmacc): Ditto.
37793         (class vwmaccu): Ditto.
37794         (class vwmaccsu): Ditto.
37795         (class vwmaccus): Ditto.
37796         (class reverse_binop): Ditto.
37797         (class vfmacc): Ditto.
37798         (class vfnmsac): Ditto.
37799         (class vfmadd): Ditto.
37800         (class vfnmsub): Ditto.
37801         (class vfnmacc): Ditto.
37802         (class vfmsac): Ditto.
37803         (class vfnmadd): Ditto.
37804         (class vfmsub): Ditto.
37805         (class vfwmacc): Ditto.
37806         (class vfwnmacc): Ditto.
37807         (class vfwmsac): Ditto.
37808         (class vfwnmsac): Ditto.
37809         (class float_misc): Ditto.
37810         (class fcmp): Ditto.
37811         (class vfclass): Ditto.
37812         (class vfcvt_x): Ditto.
37813         (class vfcvt_rtz_x): Ditto.
37814         (class vfcvt_f): Ditto.
37815         (class vfwcvt_x): Ditto.
37816         (class vfwcvt_rtz_x): Ditto.
37817         (class vfwcvt_f): Ditto.
37818         (class vfncvt_x): Ditto.
37819         (class vfncvt_rtz_x): Ditto.
37820         (class vfncvt_f): Ditto.
37821         (class vfncvt_rod_f): Ditto.
37822         (BASE): Ditto.
37823         * config/riscv/riscv-vector-builtins-bases.h:
37824         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
37825         (vsext): Ditto.
37826         (vfadd): Ditto.
37827         (vfsub): Ditto.
37828         (vfrsub): Ditto.
37829         (vfwadd): Ditto.
37830         (vfwsub): Ditto.
37831         (vfmul): Ditto.
37832         (vfdiv): Ditto.
37833         (vfrdiv): Ditto.
37834         (vfwmul): Ditto.
37835         (vfmacc): Ditto.
37836         (vfnmsac): Ditto.
37837         (vfmadd): Ditto.
37838         (vfnmsub): Ditto.
37839         (vfnmacc): Ditto.
37840         (vfmsac): Ditto.
37841         (vfnmadd): Ditto.
37842         (vfmsub): Ditto.
37843         (vfwmacc): Ditto.
37844         (vfwnmacc): Ditto.
37845         (vfwmsac): Ditto.
37846         (vfwnmsac): Ditto.
37847         (vfsqrt): Ditto.
37848         (vfrsqrt7): Ditto.
37849         (vfrec7): Ditto.
37850         (vfmin): Ditto.
37851         (vfmax): Ditto.
37852         (vfsgnj): Ditto.
37853         (vfsgnjn): Ditto.
37854         (vfsgnjx): Ditto.
37855         (vfneg): Ditto.
37856         (vfabs): Ditto.
37857         (vmfeq): Ditto.
37858         (vmfne): Ditto.
37859         (vmflt): Ditto.
37860         (vmfle): Ditto.
37861         (vmfgt): Ditto.
37862         (vmfge): Ditto.
37863         (vfclass): Ditto.
37864         (vfmerge): Ditto.
37865         (vfmv_v): Ditto.
37866         (vfcvt_x): Ditto.
37867         (vfcvt_xu): Ditto.
37868         (vfcvt_rtz_x): Ditto.
37869         (vfcvt_rtz_xu): Ditto.
37870         (vfcvt_f): Ditto.
37871         (vfwcvt_x): Ditto.
37872         (vfwcvt_xu): Ditto.
37873         (vfwcvt_rtz_x): Ditto.
37874         (vfwcvt_rtz_xu): Ditto.
37875         (vfwcvt_f): Ditto.
37876         (vfncvt_x): Ditto.
37877         (vfncvt_xu): Ditto.
37878         (vfncvt_rtz_x): Ditto.
37879         (vfncvt_rtz_xu): Ditto.
37880         (vfncvt_f): Ditto.
37881         (vfncvt_rod_f): Ditto.
37882         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
37883         (struct move_def): Ditto.
37884         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
37885         (DEF_RVV_CONVERT_I_OPS): Ditto.
37886         (DEF_RVV_CONVERT_U_OPS): Ditto.
37887         (DEF_RVV_WCONVERT_I_OPS): Ditto.
37888         (DEF_RVV_WCONVERT_U_OPS): Ditto.
37889         (DEF_RVV_WCONVERT_F_OPS): Ditto.
37890         (vfloat64m1_t): Ditto.
37891         (vfloat64m2_t): Ditto.
37892         (vfloat64m4_t): Ditto.
37893         (vfloat64m8_t): Ditto.
37894         (vint32mf2_t): Ditto.
37895         (vint32m1_t): Ditto.
37896         (vint32m2_t): Ditto.
37897         (vint32m4_t): Ditto.
37898         (vint32m8_t): Ditto.
37899         (vint64m1_t): Ditto.
37900         (vint64m2_t): Ditto.
37901         (vint64m4_t): Ditto.
37902         (vint64m8_t): Ditto.
37903         (vuint32mf2_t): Ditto.
37904         (vuint32m1_t): Ditto.
37905         (vuint32m2_t): Ditto.
37906         (vuint32m4_t): Ditto.
37907         (vuint32m8_t): Ditto.
37908         (vuint64m1_t): Ditto.
37909         (vuint64m2_t): Ditto.
37910         (vuint64m4_t): Ditto.
37911         (vuint64m8_t): Ditto.
37912         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
37913         (DEF_RVV_CONVERT_U_OPS): Ditto.
37914         (DEF_RVV_WCONVERT_I_OPS): Ditto.
37915         (DEF_RVV_WCONVERT_U_OPS): Ditto.
37916         (DEF_RVV_WCONVERT_F_OPS): Ditto.
37917         (DEF_RVV_F_OPS): Ditto.
37918         (DEF_RVV_WEXTF_OPS): Ditto.
37919         (required_extensions_p): Adjust for floating-point support.
37920         (check_required_extensions): Ditto.
37921         (unsigned_base_type_p): Ditto.
37922         (get_mode_for_bitsize): Ditto.
37923         (rvv_arg_type_info::get_base_vector_type): Ditto.
37924         (rvv_arg_type_info::get_tree_type): Ditto.
37925         * config/riscv/riscv-vector-builtins.def (v_f): New define.
37926         (f): New define.
37927         (f_v): New define.
37928         (xu_v): New define.
37929         (f_w): New define.
37930         (xu_w): New define.
37931         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
37932         (function_expander::arg_mode): New function.
37933         * config/riscv/vector-iterators.md (sof): New iterator.
37934         (vfrecp): Ditto.
37935         (copysign): Ditto.
37936         (n): Ditto.
37937         (msac): Ditto.
37938         (msub): Ditto.
37939         (fixuns_trunc): Ditto.
37940         (floatuns): Ditto.
37941         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
37942         (@pred_<optab><mode>): Ditto.
37943         (@pred_<optab><mode>_scalar): Ditto.
37944         (@pred_<optab><mode>_reverse_scalar): Ditto.
37945         (@pred_<copysign><mode>): Ditto.
37946         (@pred_<copysign><mode>_scalar): Ditto.
37947         (@pred_mul_<optab><mode>): Ditto.
37948         (pred_mul_<optab><mode>_undef_merge): Ditto.
37949         (*pred_<madd_nmsub><mode>): Ditto.
37950         (*pred_<macc_nmsac><mode>): Ditto.
37951         (*pred_mul_<optab><mode>): Ditto.
37952         (@pred_mul_<optab><mode>_scalar): Ditto.
37953         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
37954         (*pred_<madd_nmsub><mode>_scalar): Ditto.
37955         (*pred_<macc_nmsac><mode>_scalar): Ditto.
37956         (*pred_mul_<optab><mode>_scalar): Ditto.
37957         (@pred_neg_mul_<optab><mode>): Ditto.
37958         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
37959         (*pred_<nmadd_msub><mode>): Ditto.
37960         (*pred_<nmacc_msac><mode>): Ditto.
37961         (*pred_neg_mul_<optab><mode>): Ditto.
37962         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
37963         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
37964         (*pred_<nmadd_msub><mode>_scalar): Ditto.
37965         (*pred_<nmacc_msac><mode>_scalar): Ditto.
37966         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
37967         (@pred_<misc_op><mode>): Ditto.
37968         (@pred_class<mode>): Ditto.
37969         (@pred_dual_widen_<optab><mode>): Ditto.
37970         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
37971         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
37972         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
37973         (@pred_widen_mul_<optab><mode>): Ditto.
37974         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
37975         (@pred_widen_neg_mul_<optab><mode>): Ditto.
37976         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
37977         (@pred_cmp<mode>): Ditto.
37978         (*pred_cmp<mode>): Ditto.
37979         (*pred_cmp<mode>_narrow): Ditto.
37980         (@pred_cmp<mode>_scalar): Ditto.
37981         (*pred_cmp<mode>_scalar): Ditto.
37982         (*pred_cmp<mode>_scalar_narrow): Ditto.
37983         (@pred_eqne<mode>_scalar): Ditto.
37984         (*pred_eqne<mode>_scalar): Ditto.
37985         (*pred_eqne<mode>_scalar_narrow): Ditto.
37986         (@pred_merge<mode>_scalar): Ditto.
37987         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
37988         (@pred_<fix_cvt><mode>): Ditto.
37989         (@pred_<float_cvt><mode>): Ditto.
37990         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
37991         (@pred_widen_<fix_cvt><mode>): Ditto.
37992         (@pred_widen_<float_cvt><mode>): Ditto.
37993         (@pred_extend<mode>): Ditto.
37994         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
37995         (@pred_narrow_<fix_cvt><mode>): Ditto.
37996         (@pred_narrow_<float_cvt><mode>): Ditto.
37997         (@pred_trunc<mode>): Ditto.
37998         (@pred_rod_trunc<mode>): Ditto.
38000 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
38002         PR middle-end/106258
38003         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
38004         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
38005         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
38006         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
38008 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
38010         * common.opt (-Wcomplain-wrong-lang): New.
38011         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
38012         * opts-common.cc (prune_options): Handle it.
38013         * opts-global.cc (complain_wrong_lang): Use it.
38015 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
38017         PR analyzer/108830
38018         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
38020 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
38022         PR target/108876
38023         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
38024         for A0_REG.
38025         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
38026         (sibcall_value, sibcall_value_internal): Add 'use' expression
38027         for A0_REG.
38029 2023-02-21  Richard Biener  <rguenther@suse.de>
38031         PR tree-optimization/108691
38032         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
38033         assert about calls_setjmp not becoming true when it was false.
38035 2023-02-21  Richard Biener  <rguenther@suse.de>
38037         PR tree-optimization/108793
38038         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
38039         Use convert operands to niter_type when computing num.
38041 2023-02-21  Richard Biener  <rguenther@suse.de>
38043         Revert:
38044         2023-02-13  Richard Biener  <rguenther@suse.de>
38046         PR tree-optimization/108691
38047         * tree-cfg.cc (notice_special_calls): When the CFG is built
38048         honor gimple_call_ctrl_altering_p.
38049         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
38050         temporarily if the call is not control-altering.
38051         * calls.cc (emit_call_1): Do not add REG_SETJMP if
38052         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
38054 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
38056         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
38057         true if register A0 (return address register) when -Og is specified.
38059 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
38061         * config/i386/predicates.md
38062         (general_x64constmem_operand): New predicate.
38063         * config/i386/i386.md (*cmpqi_ext<mode>_1):
38064         Use nonimm_x64constmem_operand.
38065         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
38066         (*addqi_ext<mode>_1): Ditto.
38067         (*testqi_ext<mode>_1): Ditto.
38068         (*andqi_ext<mode>_1): Ditto.
38069         (*andqi_ext<mode>_1_cc): Ditto.
38070         (*<any_or:code>qi_ext<mode>_1): Ditto.
38071         (*xorqi_ext<mode>_1_cc): Ditto.
38073 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
38075         PR target/108862
38076         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
38077         gen_umadddi4_highpart{,_le}.
38079 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
38081         * config/riscv/riscv.md (prefetch): Use r instead of p for the
38082         address operand.
38083         (riscv_prefetchi_<mode>): Ditto.
38085 2023-02-20  Richard Biener  <rguenther@suse.de>
38087         PR tree-optimization/108816
38088         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
38089         versioning condition split prerequesite, assert required
38090         invariant.
38092 2023-02-20  Richard Biener  <rguenther@suse.de>
38094         PR tree-optimization/108825
38095         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
38096         loop-local verfication only verify there's no pending SSA
38097         update.
38099 2023-02-20  Richard Biener  <rguenther@suse.de>
38101         PR tree-optimization/108819
38102         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
38103         we have an SSA name as iv_2 as expected.
38105 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
38107         PR tree-optimization/108819
38108         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
38110 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
38112         PR target/108832
38113         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
38114         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
38115         function.
38116         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
38117         with ix86_replace_reg_with_reg.
38119 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
38121         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
38123 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
38125         * config.gcc (triplet_abi): Set its value based on $with_abi,
38126         instead of $target.
38127         (la_canonical_triplet): Set it after $triplet_abi is set
38128         correctly.
38129         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
38130         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
38131         "f64" suffix).
38133 2023-02-18  Andrew Pinski  <apinski@marvell.com>
38135         * match.pd: Remove #if GIMPLE around the
38136         "1 - a" pattern
38138 2023-02-18  Andrew Pinski  <apinski@marvell.com>
38140         * value-query.h (get_range_query): Return the global ranges
38141         for a nullptr func.
38143 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
38145         * doc/invoke.texi (@item -Wall): Fix typo in
38146         -Wuse-after-free.
38148 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
38150         PR target/108831
38151         * config/i386/predicates.md
38152         (nonimm_x64constmem_operand): New predicate.
38153         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
38154         (*subqi_ext<mode>_0): Ditto.
38155         (*andqi_ext<mode>_0): Ditto.
38156         (*<any_or:code>qi_ext<mode>_0): Ditto.
38158 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
38160         PR target/108805
38161         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
38162         int_outermode instead of GET_MODE (tem) to prevent
38163         VOIDmode from entering simplify_gen_subreg.
38165 2023-02-17  Richard Biener  <rguenther@suse.de>
38167         PR tree-optimization/108821
38168         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
38169         move volatile accesses.
38171 2023-02-17  Richard Biener  <rguenther@suse.de>
38173         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
38174         called on virtual operands.
38175         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
38176         ssa_undefined_value_p calls.
38177         (vn_phi_insert): Likewise.
38178         (set_ssa_val_to): Likewise.
38179         (visit_phi): Avoid extra work with equivalences for
38180         virtual operand PHIs.
38182 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38184         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
38185         class.
38186         (class mask_nlogic): Ditto.
38187         (class mask_notlogic): Ditto.
38188         (class vmmv): Ditto.
38189         (class vmclr): Ditto.
38190         (class vmset): Ditto.
38191         (class vmnot): Ditto.
38192         (class vcpop): Ditto.
38193         (class vfirst): Ditto.
38194         (class mask_misc): Ditto.
38195         (class viota): Ditto.
38196         (class vid): Ditto.
38197         (BASE): Ditto.
38198         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38199         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
38200         (vmnand): Ditto.
38201         (vmandn): Ditto.
38202         (vmxor): Ditto.
38203         (vmor): Ditto.
38204         (vmnor): Ditto.
38205         (vmorn): Ditto.
38206         (vmxnor): Ditto.
38207         (vmmv): Ditto.
38208         (vmclr): Ditto.
38209         (vmset): Ditto.
38210         (vmnot): Ditto.
38211         (vcpop): Ditto.
38212         (vfirst): Ditto.
38213         (vmsbf): Ditto.
38214         (vmsif): Ditto.
38215         (vmsof): Ditto.
38216         (viota): Ditto.
38217         (vid): Ditto.
38218         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
38219         (struct mask_alu_def): Ditto.
38220         (SHAPE): Ditto.
38221         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
38222         * config/riscv/riscv-vector-builtins.cc: Ditto.
38223         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
38224         for dest it scalar RVV intrinsics.
38225         * config/riscv/vector-iterators.md (sof): New iterator.
38226         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
38227         (@pred_<optab>not<mode>): New pattern.
38228         (@pred_popcount<VB:mode><P:mode>): New pattern.
38229         (@pred_ffs<VB:mode><P:mode>): New pattern.
38230         (@pred_<misc_op><mode>): New pattern.
38231         (@pred_iota<mode>): New pattern.
38232         (@pred_series<mode>): New pattern.
38234 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38236         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
38237         (vsbc): Ditto.
38238         (vmerge): Ditto.
38239         (vmv_v): Ditto.
38240         * config/riscv/riscv-vector-builtins.cc: Ditto.
38242 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38243             kito-cheng  <kito.cheng@sifive.com>
38245         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
38246         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
38247         (sew64_scalar_helper): New function.
38248         * config/riscv/vector.md: Normalization.
38250 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38252         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
38253         (vsm): Ditto.
38254         (vsse): Ditto.
38255         (vsoxei64): Ditto.
38256         (vsub): Ditto.
38257         (vand): Ditto.
38258         (vor): Ditto.
38259         (vxor): Ditto.
38260         (vsll): Ditto.
38261         (vsra): Ditto.
38262         (vsrl): Ditto.
38263         (vmin): Ditto.
38264         (vmax): Ditto.
38265         (vminu): Ditto.
38266         (vmaxu): Ditto.
38267         (vmul): Ditto.
38268         (vmulh): Ditto.
38269         (vmulhu): Ditto.
38270         (vmulhsu): Ditto.
38271         (vdiv): Ditto.
38272         (vrem): Ditto.
38273         (vdivu): Ditto.
38274         (vremu): Ditto.
38275         (vnot): Ditto.
38276         (vsext): Ditto.
38277         (vzext): Ditto.
38278         (vwadd): Ditto.
38279         (vwsub): Ditto.
38280         (vwmul): Ditto.
38281         (vwmulu): Ditto.
38282         (vwmulsu): Ditto.
38283         (vwaddu): Ditto.
38284         (vwsubu): Ditto.
38285         (vsbc): Ditto.
38286         (vmsbc): Ditto.
38287         (vnsra): Ditto.
38288         (vmerge): Ditto.
38289         (vmv_v): Ditto.
38290         (vmsne): Ditto.
38291         (vmslt): Ditto.
38292         (vmsgt): Ditto.
38293         (vmsle): Ditto.
38294         (vmsge): Ditto.
38295         (vmsltu): Ditto.
38296         (vmsgtu): Ditto.
38297         (vmsleu): Ditto.
38298         (vmsgeu): Ditto.
38299         (vnmsac): Ditto.
38300         (vmadd): Ditto.
38301         (vnmsub): Ditto.
38302         (vwmacc): Ditto.
38303         (vsadd): Ditto.
38304         (vssub): Ditto.
38305         (vssubu): Ditto.
38306         (vaadd): Ditto.
38307         (vasub): Ditto.
38308         (vasubu): Ditto.
38309         (vsmul): Ditto.
38310         (vssra): Ditto.
38311         (vssrl): Ditto.
38312         (vnclip): Ditto.
38314 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38316         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
38317         (@pred_<optab><mode>_scalar): Ditto.
38318         (*pred_<optab><mode>_scalar): Ditto.
38319         (*pred_<optab><mode>_extended_scalar): Ditto.
38321 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38323         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
38324         (init_builtins): Ditto.
38325         (mangle_builtin_type): Ditto.
38326         (verify_type_context): Ditto.
38327         (handle_pragma_vector):  Ditto.
38328         (builtin_decl): Ditto.
38329         (expand_builtin): Ditto.
38330         (const_vec_all_same_in_range_p): Ditto.
38331         (legitimize_move): Ditto.
38332         (emit_vlmax_op): Ditto.
38333         (emit_nonvlmax_op): Ditto.
38334         (get_vlmul): Ditto.
38335         (get_ratio): Ditto.
38336         (get_ta): Ditto.
38337         (get_ma): Ditto.
38338         (get_avl_type): Ditto.
38339         (calculate_ratio): Ditto.
38340         (enum vlmul_type): Ditto.
38341         (simm5_p): Ditto.
38342         (neg_simm5_p): Ditto.
38343         (has_vi_variant_p): Ditto.
38345 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38347         * config/riscv/riscv-protos.h (simm32_p): Remove.
38348         * config/riscv/riscv-v.cc (simm32_p): Ditto.
38349         * config/riscv/vector.md: Use immediate_operand
38350         instead of riscv_vector::simm32_p.
38352 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
38354         * doc/invoke.texi (Optimize Options): Reword the explanation
38355         getting minimal, maximal and default values of a parameter.
38357 2023-02-16  Patrick Palka  <ppalka@redhat.com>
38359         * addresses.h: Mechanically drop 'static' from 'static inline'
38360         functions via s/^static inline/inline/g.
38361         * asan.h: Likewise.
38362         * attribs.h: Likewise.
38363         * basic-block.h: Likewise.
38364         * bitmap.h: Likewise.
38365         * cfghooks.h: Likewise.
38366         * cfgloop.h: Likewise.
38367         * cgraph.h: Likewise.
38368         * cselib.h: Likewise.
38369         * data-streamer.h: Likewise.
38370         * debug.h: Likewise.
38371         * df.h: Likewise.
38372         * diagnostic.h: Likewise.
38373         * dominance.h: Likewise.
38374         * dumpfile.h: Likewise.
38375         * emit-rtl.h: Likewise.
38376         * except.h: Likewise.
38377         * expmed.h: Likewise.
38378         * expr.h: Likewise.
38379         * fixed-value.h: Likewise.
38380         * gengtype.h: Likewise.
38381         * gimple-expr.h: Likewise.
38382         * gimple-iterator.h: Likewise.
38383         * gimple-predict.h: Likewise.
38384         * gimple-range-fold.h: Likewise.
38385         * gimple-ssa.h: Likewise.
38386         * gimple.h: Likewise.
38387         * graphite.h: Likewise.
38388         * hard-reg-set.h: Likewise.
38389         * hash-map.h: Likewise.
38390         * hash-set.h: Likewise.
38391         * hash-table.h: Likewise.
38392         * hwint.h: Likewise.
38393         * input.h: Likewise.
38394         * insn-addr.h: Likewise.
38395         * internal-fn.h: Likewise.
38396         * ipa-fnsummary.h: Likewise.
38397         * ipa-icf-gimple.h: Likewise.
38398         * ipa-inline.h: Likewise.
38399         * ipa-modref.h: Likewise.
38400         * ipa-prop.h: Likewise.
38401         * ira-int.h: Likewise.
38402         * ira.h: Likewise.
38403         * lra-int.h: Likewise.
38404         * lra.h: Likewise.
38405         * lto-streamer.h: Likewise.
38406         * memmodel.h: Likewise.
38407         * omp-general.h: Likewise.
38408         * optabs-query.h: Likewise.
38409         * optabs.h: Likewise.
38410         * plugin.h: Likewise.
38411         * pretty-print.h: Likewise.
38412         * range.h: Likewise.
38413         * read-md.h: Likewise.
38414         * recog.h: Likewise.
38415         * regs.h: Likewise.
38416         * rtl-iter.h: Likewise.
38417         * rtl.h: Likewise.
38418         * sbitmap.h: Likewise.
38419         * sched-int.h: Likewise.
38420         * sel-sched-ir.h: Likewise.
38421         * sese.h: Likewise.
38422         * sparseset.h: Likewise.
38423         * ssa-iterators.h: Likewise.
38424         * system.h: Likewise.
38425         * target-globals.h: Likewise.
38426         * target.h: Likewise.
38427         * timevar.h: Likewise.
38428         * tree-chrec.h: Likewise.
38429         * tree-data-ref.h: Likewise.
38430         * tree-iterator.h: Likewise.
38431         * tree-outof-ssa.h: Likewise.
38432         * tree-phinodes.h: Likewise.
38433         * tree-scalar-evolution.h: Likewise.
38434         * tree-sra.h: Likewise.
38435         * tree-ssa-alias.h: Likewise.
38436         * tree-ssa-live.h: Likewise.
38437         * tree-ssa-loop-manip.h: Likewise.
38438         * tree-ssa-loop.h: Likewise.
38439         * tree-ssa-operands.h: Likewise.
38440         * tree-ssa-propagate.h: Likewise.
38441         * tree-ssa-sccvn.h: Likewise.
38442         * tree-ssa.h: Likewise.
38443         * tree-ssanames.h: Likewise.
38444         * tree-streamer.h: Likewise.
38445         * tree-switch-conversion.h: Likewise.
38446         * tree-vectorizer.h: Likewise.
38447         * tree.h: Likewise.
38448         * wide-int.h: Likewise.
38450 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
38452         PR tree-optimization/108657
38453         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
38454         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
38455         is a call to internal or builtin function.
38457 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
38459         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
38460         using-declaration to unhide functions.
38462 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
38464         PR tree-optimization/108783
38465         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
38466         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
38467         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
38468         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
38470 2023-02-16  Richard Biener  <rguenther@suse.de>
38472         PR tree-optimization/108791
38473         * tree-ssa-forwprop.cc (optimize_vector_load): Build
38474         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
38475         type.
38477 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
38479         PR target/90458
38480         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
38481         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
38482         (ix86_expand_prologue): Likewise.
38484 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
38486         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
38488 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
38490         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
38491         int248_register_operand predicate in zero_extract sub-RTX.
38492         (*cmpqi_ext<mode>_2): Ditto.
38493         (*cmpqi_ext<mode>_3): Ditto.
38494         (*cmpqi_ext<mode>_4): Ditto.
38495         (*extzvqi_mem_rex64): Ditto.
38496         (*extzvqi): Ditto.
38497         (*insvqi_1_mem_rex64): Ditto.
38498         (@insv<mode>_1): Ditto.
38499         (*insvqi_1): Ditto.
38500         (*insvqi_2): Ditto.
38501         (*insvqi_3): Ditto.
38502         (*extendqi<SWI24:mode>_ext_1): Ditto.
38503         (*addqi_ext<mode>_1): Ditto.
38504         (*addqi_ext<mode>_2): Ditto.
38505         (*subqi_ext<mode>_2): Ditto.
38506         (*testqi_ext<mode>_1): Ditto.
38507         (*testqi_ext<mode>_2): Ditto.
38508         (*andqi_ext<mode>_1): Ditto.
38509         (*andqi_ext<mode>_1_cc): Ditto.
38510         (*andqi_ext<mode>_2): Ditto.
38511         (*<any_or:code>qi_ext<mode>_1): Ditto.
38512         (*<any_or:code>qi_ext<mode>_2): Ditto.
38513         (*xorqi_ext<mode>_1_cc): Ditto.
38514         (*negqi_ext<mode>_2): Ditto.
38515         (*ashlqi_ext<mode>_2): Ditto.
38516         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
38518 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
38520         * config/i386/predicates.md (int248_register_operand):
38521         Rename from extr_register_operand.
38522         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
38523         (*extzx<mode>): Ditto.
38524         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
38525         (*ashl<mode>3_mask): Ditto.
38526         (*<any_shiftrt:insn><mode>3_mask): Ditto.
38527         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
38528         (*<any_rotate:insn><mode>3_mask): Ditto.
38529         (*<btsc><mode>_mask): Ditto.
38530         (*btr<mode>_mask): Ditto.
38531         (*jcc_bt<mode>_mask_1): Ditto.
38533 2023-02-15  Richard Biener  <rguenther@suse.de>
38535         PR middle-end/26854
38536         * df-core.cc (df_worklist_propagate_forward): Put later
38537         blocks on worklist and only earlier blocks on pending.
38538         (df_worklist_propagate_backward): Likewise.
38539         (df_worklist_dataflow_doublequeue): Change the iteration
38540         to process new blocks in the same iteration if that
38541         maintains the iteration order.
38543 2023-02-15  Marek Polacek  <polacek@redhat.com>
38545         PR middle-end/106080
38546         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
38547         instead.
38549 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38551         * config/riscv/predicates.md: Refine codes.
38552         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
38553         * config/riscv/riscv-v.cc: Refine codes.
38554         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
38555         enum.
38556         (class imac): New class.
38557         (enum widen_ternop_type): New enum.
38558         (class iwmac): New class.
38559         (BASE): New class.
38560         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38561         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
38562         (vnmsac): Ditto.
38563         (vmadd): Ditto.
38564         (vnmsub): Ditto.
38565         (vwmacc): Ditto.
38566         (vwmaccu): Ditto.
38567         (vwmaccsu): Ditto.
38568         (vwmaccus): Ditto.
38569         * config/riscv/riscv-vector-builtins.cc
38570         (function_builder::apply_predication): Adjust for multiply-add support.
38571         (function_expander::add_vundef_operand): Refine codes.
38572         (function_expander::use_ternop_insn): New function.
38573         (function_expander::use_widen_ternop_insn): Ditto.
38574         * config/riscv/riscv-vector-builtins.h: New function.
38575         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
38576         (pred_mul_<optab><mode>_undef_merge): Ditto.
38577         (*pred_<madd_nmsub><mode>): Ditto.
38578         (*pred_<macc_nmsac><mode>): Ditto.
38579         (*pred_mul_<optab><mode>): Ditto.
38580         (@pred_mul_<optab><mode>_scalar): Ditto.
38581         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
38582         (*pred_<madd_nmsub><mode>_scalar): Ditto.
38583         (*pred_<macc_nmsac><mode>_scalar): Ditto.
38584         (*pred_mul_<optab><mode>_scalar): Ditto.
38585         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
38586         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
38587         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
38588         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
38589         (@pred_widen_mul_plus<su><mode>): Ditto.
38590         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
38591         (@pred_widen_mul_plussu<mode>): Ditto.
38592         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
38593         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
38595 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38597         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
38598         (vector_all_trues_mask_operand): New predicate.
38599         (vector_undef_operand): New predicate.
38600         (ltge_operator): New predicate.
38601         (comparison_except_ltge_operator): New predicate.
38602         (comparison_except_eqge_operator): New predicate.
38603         (ge_operator): New predicate.
38604         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
38605         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
38606         (BASE): Ditto.
38607         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38608         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
38609         (vmsne): Ditto.
38610         (vmslt): Ditto.
38611         (vmsgt): Ditto.
38612         (vmsle): Ditto.
38613         (vmsge): Ditto.
38614         (vmsltu): Ditto.
38615         (vmsgtu): Ditto.
38616         (vmsleu): Ditto.
38617         (vmsgeu): Ditto.
38618         * config/riscv/riscv-vector-builtins-shapes.cc
38619         (struct return_mask_def): Adjust for compare support.
38620         * config/riscv/riscv-vector-builtins.cc
38621         (function_expander::use_compare_insn): New function.
38622         * config/riscv/riscv-vector-builtins.h
38623         (function_expander::add_integer_operand): Ditto.
38624         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
38625         * config/riscv/riscv.md: Add vector min/max attributes.
38626         * config/riscv/vector-iterators.md (xnor): New iterator.
38627         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
38628         (*pred_cmp<mode>): Ditto.
38629         (*pred_cmp<mode>_narrow): Ditto.
38630         (@pred_ltge<mode>): Ditto.
38631         (*pred_ltge<mode>): Ditto.
38632         (*pred_ltge<mode>_narrow): Ditto.
38633         (@pred_cmp<mode>_scalar): Ditto.
38634         (*pred_cmp<mode>_scalar): Ditto.
38635         (*pred_cmp<mode>_scalar_narrow): Ditto.
38636         (@pred_eqne<mode>_scalar): Ditto.
38637         (*pred_eqne<mode>_scalar): Ditto.
38638         (*pred_eqne<mode>_scalar_narrow): Ditto.
38639         (*pred_cmp<mode>_extended_scalar): Ditto.
38640         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
38641         (*pred_eqne<mode>_extended_scalar): Ditto.
38642         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
38643         (@pred_ge<mode>_scalar): Ditto.
38644         (@pred_<optab><mode>): Ditto.
38645         (@pred_n<optab><mode>): Ditto.
38646         (@pred_<optab>n<mode>): Ditto.
38647         (@pred_not<mode>): Ditto.
38649 2023-02-15  Martin Jambor  <mjambor@suse.cz>
38651         PR ipa/108679
38652         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
38653         creation of non-scalar replacements even if IPA-CP knows their
38654         contents.
38656 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
38658         PR target/108787
38659         PR target/103109
38660         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
38661         expander, change operand 3 to be TImode, emit maddlddi4 and
38662         umadddi4_highpart{,_le} with its low half and finally add the high
38663         half to the result.
38665 2023-02-15  Martin Liska  <mliska@suse.cz>
38667         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
38669 2023-02-15  Richard Biener  <rguenther@suse.de>
38671         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
38672         for with_poison and alias worklist to it.
38673         (sanitize_asan_mark_poison): Likewise.
38675 2023-02-15  Richard Biener  <rguenther@suse.de>
38677         PR target/108738
38678         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
38679         Combine bitmap test and set.
38680         (scalar_chain::add_insn): Likewise.
38681         (scalar_chain::analyze_register_chain): Remove redundant
38682         attempt to add to queue and instead strengthen assert.
38683         Sink common attempts to mark the def dual-mode.
38684         (scalar_chain::add_to_queue): Remove redundant insn bitmap
38685         check.
38687 2023-02-15  Richard Biener  <rguenther@suse.de>
38689         PR target/108738
38690         * config/i386/i386-features.cc (convert_scalars_to_vector):
38691         Switch candidates bitmaps to tree view before building the chains.
38693 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
38695         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
38696         "failure trying to reload" call.
38698 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
38700         * gdbinit.in (phrs): New command.
38701         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
38702         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
38704 2023-02-14  David Faust  <david.faust@oracle.com>
38706         PR target/108790
38707         * config/bpf/constraints.md (q): New memory constraint.
38708         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
38709         (zero_extendqidi2): Likewise.
38710         (zero_extendsidi2): Likewise.
38711         (*mov<MM:mode>): Likewise.
38713 2023-02-14  Andrew Pinski  <apinski@marvell.com>
38715         PR tree-optimization/108355
38716         PR tree-optimization/96921
38717         * match.pd: Add pattern for "1 - bool_val".
38719 2023-02-14  Richard Biener  <rguenther@suse.de>
38721         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
38722         basic block index hashing on the availability of ->cclhs.
38723         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
38724         rely on ->cclhs availability.
38725         (vn_phi_lookup): Set ->cclhs only when we are eventually
38726         going to CSE the PHI.
38727         (vn_phi_insert): Likewise.
38729 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
38731         * gimplify.cc (gimplify_save_expr): Add missing guard.
38733 2023-02-14  Richard Biener  <rguenther@suse.de>
38735         PR tree-optimization/108782
38736         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
38737         Make sure we're not vectorizing an inner loop.
38739 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
38741         PR sanitizer/108777
38742         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
38743         * asan.h (asan_memfn_rtl): Declare.
38744         * asan.cc (asan_memfn_rtls): New variable.
38745         (asan_memfn_rtl): New function.
38746         * builtins.cc (expand_builtin): If
38747         param_asan_kernel_mem_intrinsic_prefix and function is
38748         kernel-{,hw}address sanitized, emit calls to
38749         __{,hw}asan_{memcpy,memmove,memset} rather than
38750         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
38751         instead of flag_sanitize & SANITIZE_ADDRESS to check if
38752         asan_intercepted_p functions shouldn't be expanded inline.
38754 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
38756         PR tree-optimization/96373
38757         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
38758         operations on the loop mask.  Reject partial vectors if this isn't
38759         possible.
38761 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
38763         PR rtl-optimization/108681
38764         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
38765         code to handle bare uses and clobbers.
38767 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
38769         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
38770         caller_save_p flag when clearing defined_p flag.
38771         (setup_reg_equiv): Ditto.
38772         * lra-constraints.cc (lra_constraints): Ditto.
38774 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
38776         PR target/108516
38777         * config/i386/predicates.md (extr_register_operand):
38778         New special predicate.
38779         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
38780         as operand 1 predicate.
38781         (*exzv<mode>): Ditto.
38782         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
38784 2023-02-13  Richard Biener  <rguenther@suse.de>
38786         PR tree-optimization/28614
38787         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
38788         walking all edges in most cases.
38789         (vn_nary_op_insert_pieces_predicated): Avoid repeated
38790         calls to can_track_predicate_on_edge unless checking is
38791         enabled.
38792         (process_bb): Instead call it once here for each edge
38793         we register possibly multiple predicates on.
38795 2023-02-13  Richard Biener  <rguenther@suse.de>
38797         PR tree-optimization/108691
38798         * tree-cfg.cc (notice_special_calls): When the CFG is built
38799         honor gimple_call_ctrl_altering_p.
38800         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
38801         temporarily if the call is not control-altering.
38802         * calls.cc (emit_call_1): Do not add REG_SETJMP if
38803         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
38805 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
38807         PR target/108102
38808         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
38809         (struct s390_sched_state): Initialise to zero.
38810         (s390_sched_variable_issue): For better debuggability also emit
38811         the current side.
38812         (s390_sched_init): Unconditionally reset scheduler state.
38814 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
38816         * ifcvt.h (noce_if_info::cond_inverted): New field.
38817         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
38818         values when cond_inverted is true.
38819         (noce_find_if_block): Allow the condition to be inverted when
38820         handling conditional moves.
38822 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
38824         * config/s390/predicates.md (execute_operation): Use
38825         constrain_operands instead of extract_constrain_insn in order to
38826         determine wheter there exists a valid alternative.
38828 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
38830         * common/config/arc/arc-common.cc (arc_option_optimization_table):
38831         Remove millicode from list.
38833 2023-02-13  Martin Liska  <mliska@suse.cz>
38835         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
38837 2023-02-13  Richard Biener  <rguenther@suse.de>
38839         PR tree-optimization/106722
38840         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
38841         whether we marked a stmt.
38842         (mark_control_dependent_edges_necessary): When
38843         mark_last_stmt_necessary didn't mark any stmt make sure
38844         to mark its control dependent edges.
38845         (propagate_necessity): Likewise.
38847 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
38849         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
38850         (DWARF_FRAME_REGISTERS): New.
38851         (DWARF_REG_TO_UNWIND_COLUMN): New.
38853 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
38855         * doc/sourcebuild.texi: Remove (broken) direct reference to
38856         "The GNU configure and build system".
38858 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
38860         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
38861         gen_add3_insn to gen_rtx_SET.
38862         (riscv_adjust_libcall_cfi_epilogue): Likewise.
38864 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38866         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
38867         (class vnclip): Ditto.
38868         (BASE): Ditto.
38869         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38870         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
38871         (vasub): Ditto.
38872         (vaaddu): Ditto.
38873         (vasubu): Ditto.
38874         (vsmul): Ditto.
38875         (vssra): Ditto.
38876         (vssrl): Ditto.
38877         (vnclipu): Ditto.
38878         (vnclip): Ditto.
38879         * config/riscv/vector-iterators.md (su): Add instruction.
38880         (aadd): Ditto.
38881         (vaalu): Ditto.
38882         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
38883         (@pred_<sat_op><mode>_scalar): Ditto.
38884         (*pred_<sat_op><mode>_scalar): Ditto.
38885         (*pred_<sat_op><mode>_extended_scalar): Ditto.
38886         (@pred_narrow_clip<v_su><mode>): Ditto.
38887         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
38889 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38891         * config/riscv/constraints.md (Wbr): Remove unused constraint.
38892         * config/riscv/predicates.md: Fix move operand predicate.
38893         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
38894         (class vncvt_x): Ditto.
38895         (class vmerge): Ditto.
38896         (class vmv_v): Ditto.
38897         (BASE): Ditto.
38898         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38899         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
38900         (vsrl): Ditto.
38901         (vnsrl): Ditto.
38902         (vnsra): Ditto.
38903         (vncvt_x): Ditto.
38904         (vmerge): Ditto.
38905         (vmv_v): Ditto.
38906         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
38907         (struct move_def): Ditto.
38908         (SHAPE): Ditto.
38909         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
38910         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
38911         (DEF_RVV_WEXTU_OPS): Ditto
38912         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
38913         (v_v): Ditto.
38914         (v_x): Ditto.
38915         (x_w): Ditto.
38916         (x): Ditto.
38917         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
38918         * config/riscv/vector-iterators.md (nmsac):New iterator.
38919         (nmsub): New iterator.
38920         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
38921         (@pred_merge<mode>_scalar): New pattern.
38922         (*pred_merge<mode>_scalar): New pattern.
38923         (*pred_merge<mode>_extended_scalar): New pattern.
38924         (@pred_narrow_<optab><mode>): New pattern.
38925         (@pred_narrow_<optab><mode>_scalar): New pattern.
38926         (@pred_trunc<mode>): New pattern.
38928 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38930         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
38931         (class vmsbc): Ditto.
38932         (BASE): Define new class.
38933         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38934         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
38935         (vmsbc): Ditto.
38936         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
38937         New class.
38938         (SHAPE): Ditto.
38939         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
38940         * config/riscv/riscv-vector-builtins.cc
38941         (function_expander::use_exact_insn): Adjust for new support
38942         * config/riscv/riscv-vector-builtins.h
38943         (function_base::has_merge_operand_p): New function.
38944         * config/riscv/vector-iterators.md: New iterator.
38945         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
38946         (@pred_msbc<mode>): Ditto.
38947         (@pred_madc<mode>_scalar): Ditto.
38948         (@pred_msbc<mode>_scalar): Ditto.
38949         (*pred_madc<mode>_scalar): Ditto.
38950         (*pred_madc<mode>_extended_scalar): Ditto.
38951         (*pred_msbc<mode>_scalar): Ditto.
38952         (*pred_msbc<mode>_extended_scalar): Ditto.
38953         (@pred_madc<mode>_overflow): Ditto.
38954         (@pred_msbc<mode>_overflow): Ditto.
38955         (@pred_madc<mode>_overflow_scalar): Ditto.
38956         (@pred_msbc<mode>_overflow_scalar): Ditto.
38957         (*pred_madc<mode>_overflow_scalar): Ditto.
38958         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
38959         (*pred_msbc<mode>_overflow_scalar): Ditto.
38960         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
38962 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38964         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
38965         * config/riscv/riscv-v.cc (simm32_p): Ditto.
38966         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
38967         (class vsbc): Ditto.
38968         (BASE): Ditto.
38969         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
38970         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
38971         (vsbc): Ditto.
38972         * config/riscv/riscv-vector-builtins-shapes.cc
38973         (struct no_mask_policy_def): Ditto.
38974         (SHAPE): Ditto.
38975         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
38976         * config/riscv/riscv-vector-builtins.cc
38977         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
38978         (rvv_arg_type_info::get_tree_type): Ditto.
38979         (function_expander::use_exact_insn): Ditto.
38980         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
38981         (function_base::use_mask_predication_p): New function.
38982         * config/riscv/vector-iterators.md: New iterator.
38983         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
38984         (@pred_sbc<mode>): Ditto.
38985         (@pred_adc<mode>_scalar): Ditto.
38986         (@pred_sbc<mode>_scalar): Ditto.
38987         (*pred_adc<mode>_scalar): Ditto.
38988         (*pred_adc<mode>_extended_scalar): Ditto.
38989         (*pred_sbc<mode>_scalar): Ditto.
38990         (*pred_sbc<mode>_extended_scalar): Ditto.
38992 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38994         * config/riscv/vector.md: use "zero" reg.
38996 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
38998         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
38999         class.
39000         (class vwmulsu): Ditto.
39001         (class vwcvt): Ditto.
39002         (BASE): Add integer widening support.
39003         * config/riscv/riscv-vector-builtins-bases.h: Ditto
39004         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
39005         (vwsub): New class.
39006         (vwmul): New class.
39007         (vwmulu): New class.
39008         (vwmulsu): New class.
39009         (vwaddu): New class.
39010         (vwsubu): New class.
39011         (vwcvt_x): New class.
39012         (vwcvtu_x): New class.
39013         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
39014         class.
39015         (struct widen_alu_def): New class.
39016         (SHAPE): New class.
39017         * config/riscv/riscv-vector-builtins-shapes.h: New class.
39018         * config/riscv/riscv-vector-builtins.cc
39019         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
39020         (rvv_arg_type_info::get_tree_type): Ditto.
39021         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
39022         (x_v): Ditto.
39023         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
39024         widening support.
39025         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
39026         * config/riscv/riscv.h (X0_REGNUM): New constant.
39027         * config/riscv/vector-iterators.md: New iterators.
39028         * config/riscv/vector.md
39029         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
39030         pattern.
39031         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
39032         Ditto.
39033         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
39034         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
39035         Ditto.
39036         (@pred_widen_mulsu<mode>): Ditto.
39037         (@pred_widen_mulsu<mode>_scalar): Ditto.
39038         (@pred_<optab><mode>): Ditto.
39040 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39041             kito-cheng  <kito.cheng@sifive.com>
39043         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
39044         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
39045         (BASE): Ditto.
39046         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
39047         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
39048         API support.
39049         (vmulhu): Ditto.
39050         (vmulhsu): Ditto.
39051         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
39052         New macro.
39053         (DEF_RVV_FULL_V_U_OPS): Ditto.
39054         (vint8mf8_t): Ditto.
39055         (vint8mf4_t): Ditto.
39056         (vint8mf2_t): Ditto.
39057         (vint8m1_t): Ditto.
39058         (vint8m2_t): Ditto.
39059         (vint8m4_t): Ditto.
39060         (vint8m8_t): Ditto.
39061         (vint16mf4_t): Ditto.
39062         (vint16mf2_t): Ditto.
39063         (vint16m1_t): Ditto.
39064         (vint16m2_t): Ditto.
39065         (vint16m4_t): Ditto.
39066         (vint16m8_t): Ditto.
39067         (vint32mf2_t): Ditto.
39068         (vint32m1_t): Ditto.
39069         (vint32m2_t): Ditto.
39070         (vint32m4_t): Ditto.
39071         (vint32m8_t): Ditto.
39072         (vint64m1_t): Ditto.
39073         (vint64m2_t): Ditto.
39074         (vint64m4_t): Ditto.
39075         (vint64m8_t): Ditto.
39076         (vuint8mf8_t): Ditto.
39077         (vuint8mf4_t): Ditto.
39078         (vuint8mf2_t): Ditto.
39079         (vuint8m1_t): Ditto.
39080         (vuint8m2_t): Ditto.
39081         (vuint8m4_t): Ditto.
39082         (vuint8m8_t): Ditto.
39083         (vuint16mf4_t): Ditto.
39084         (vuint16mf2_t): Ditto.
39085         (vuint16m1_t): Ditto.
39086         (vuint16m2_t): Ditto.
39087         (vuint16m4_t): Ditto.
39088         (vuint16m8_t): Ditto.
39089         (vuint32mf2_t): Ditto.
39090         (vuint32m1_t): Ditto.
39091         (vuint32m2_t): Ditto.
39092         (vuint32m4_t): Ditto.
39093         (vuint32m8_t): Ditto.
39094         (vuint64m1_t): Ditto.
39095         (vuint64m2_t): Ditto.
39096         (vuint64m4_t): Ditto.
39097         (vuint64m8_t): Ditto.
39098         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
39099         (DEF_RVV_FULL_V_U_OPS): Ditto.
39100         (check_required_extensions): Add vmulh support.
39101         (rvv_arg_type_info::get_tree_type): Ditto.
39102         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
39103         (enum rvv_base_type): Ditto.
39104         * config/riscv/riscv.opt: Add 'V' extension flag.
39105         * config/riscv/vector-iterators.md (su): New iterator.
39106         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
39107         (@pred_mulh<v_su><mode>_scalar): Ditto.
39108         (*pred_mulh<v_su><mode>_scalar): Ditto.
39109         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
39111 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39113         * config/riscv/iterators.md: Add sign_extend/zero_extend.
39114         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
39115         (BASE): Ditto.
39116         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
39117         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
39118         define.
39119         (vzext): Ditto.
39120         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
39121         for vsext/vzext support.
39122         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
39123         macro define.
39124         (DEF_RVV_QEXTI_OPS): Ditto.
39125         (DEF_RVV_OEXTI_OPS): Ditto.
39126         (DEF_RVV_WEXTU_OPS): Ditto.
39127         (DEF_RVV_QEXTU_OPS): Ditto.
39128         (DEF_RVV_OEXTU_OPS): Ditto.
39129         (vint16mf4_t): Ditto.
39130         (vint16mf2_t): Ditto.
39131         (vint16m1_t): Ditto.
39132         (vint16m2_t): Ditto.
39133         (vint16m4_t): Ditto.
39134         (vint16m8_t): Ditto.
39135         (vint32mf2_t): Ditto.
39136         (vint32m1_t): Ditto.
39137         (vint32m2_t): Ditto.
39138         (vint32m4_t): Ditto.
39139         (vint32m8_t): Ditto.
39140         (vint64m1_t): Ditto.
39141         (vint64m2_t): Ditto.
39142         (vint64m4_t): Ditto.
39143         (vint64m8_t): Ditto.
39144         (vuint16mf4_t): Ditto.
39145         (vuint16mf2_t): Ditto.
39146         (vuint16m1_t): Ditto.
39147         (vuint16m2_t): Ditto.
39148         (vuint16m4_t): Ditto.
39149         (vuint16m8_t): Ditto.
39150         (vuint32mf2_t): Ditto.
39151         (vuint32m1_t): Ditto.
39152         (vuint32m2_t): Ditto.
39153         (vuint32m4_t): Ditto.
39154         (vuint32m8_t): Ditto.
39155         (vuint64m1_t): Ditto.
39156         (vuint64m2_t): Ditto.
39157         (vuint64m4_t): Ditto.
39158         (vuint64m8_t): Ditto.
39159         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
39160         (DEF_RVV_QEXTI_OPS): Ditto.
39161         (DEF_RVV_OEXTI_OPS): Ditto.
39162         (DEF_RVV_WEXTU_OPS): Ditto.
39163         (DEF_RVV_QEXTU_OPS): Ditto.
39164         (DEF_RVV_OEXTU_OPS): Ditto.
39165         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
39166         support.
39167         (rvv_arg_type_info::get_tree_type): Ditto.
39168         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
39169         * config/riscv/vector-iterators.md (z): New attribute.
39170         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
39171         (@pred_<optab><mode>_vf4): Ditto.
39172         (@pred_<optab><mode>_vf8): Ditto.
39174 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39176         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
39177         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
39178         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
39179         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
39180         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
39181         (vssub): Ditto.
39182         (vsaddu): Ditto.
39183         (vssubu): Ditto.
39184         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
39185         support.
39186         (sll.vv): Ditto.
39187         (%3,%v4): Ditto.
39188         (%3,%4): Ditto.
39189         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
39190         (@pred_<optab><mode>_scalar): New pattern.
39191         (*pred_<optab><mode>_scalar): New pattern.
39192         (*pred_<optab><mode>_extended_scalar): New pattern.
39194 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39196         * config/riscv/iterators.md: Add neg and not.
39197         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
39198         (BASE): Ditto.
39199         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
39200         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
39201         into alu.
39202         (vsub): Ditto.
39203         (vand): Ditto.
39204         (vor): Ditto.
39205         (vxor): Ditto.
39206         (vsll): Ditto.
39207         (vsra): Ditto.
39208         (vsrl): Ditto.
39209         (vmin): Ditto.
39210         (vmax): Ditto.
39211         (vminu): Ditto.
39212         (vmaxu): Ditto.
39213         (vmul): Ditto.
39214         (vdiv): Ditto.
39215         (vrem): Ditto.
39216         (vdivu): Ditto.
39217         (vremu): Ditto.
39218         (vrsub): Ditto.
39219         (vneg): Ditto.
39220         (vnot): Ditto.
39221         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
39222         (struct alu_def): Ditto.
39223         (SHAPE): Ditto.
39224         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
39225         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
39226         * config/riscv/vector-iterators.md: New iterator.
39227         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
39229 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39231         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
39233 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
39235         PR ipa/108605
39236         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
39237         item->offset bit position is too large to be representable as
39238         unsigned int byte position.
39240 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
39242         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
39244 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
39246         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
39247         valid_combine only when ira_use_lra_p is true.
39249 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
39251         * params.opt (ira-simple-lra-insn-threshold): Add new param.
39252         * ira.cc (ira): Use the param to switch on simple LRA.
39254 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
39256         PR tree-optimization/108687
39257         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
39258         back to RFD_NONE mode for calculations.
39259         (ranger_cache::propagate_cache): Call the internal edge range API
39260         with RFD_READ_ONLY instead of changing the external routine.
39262 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
39264         PR tree-optimization/108520
39265         * gimple-range-infer.cc (check_assume_func): Invoke
39266         gimple_range_global directly instead using global_range_query.
39267         * value-query.cc (get_range_global): Add function context and
39268         avoid calling nonnull_arg_p if not cfun.
39269         (gimple_range_global): Add function context pointer.
39270         * value-query.h (imple_range_global): Add function context.
39272 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39274         * config/riscv/constraints.md (Wdm): Adjust constraint.
39275         (Wbr): New constraint.
39276         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
39277         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
39278         (emit_vlmax_op): New function.
39279         (emit_nonvlmax_op): Ditto.
39280         (simm32_p): Ditto.
39281         (neg_simm5_p): Ditto.
39282         (has_vi_variant_p): Ditto.
39283         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
39284         (emit_vlmax_op): New function.
39285         (emit_nonvlmax_op): Ditto.
39286         (expand_const_vector): Adjust function.
39287         (legitimize_move): Ditto.
39288         (simm32_p): New function.
39289         (simm5_p): Ditto.
39290         (neg_simm5_p): Ditto.
39291         (has_vi_variant_p): Ditto.
39292         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
39293         (BASE): Ditto.
39294         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
39295         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
39296         unsigned cases.
39297         (vmax): Ditto.
39298         (vminu): Remove signed cases.
39299         (vmaxu): Ditto.
39300         (vdiv): Remove unsigned cases.
39301         (vrem): Ditto.
39302         (vdivu): Remove signed cases.
39303         (vremu): Ditto.
39304         (vadd): Adjust.
39305         (vsub): Ditto.
39306         (vrsub): New class.
39307         (vand): Adjust.
39308         (vor): Ditto.
39309         (vxor): Ditto.
39310         (vmul): Ditto.
39311         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
39312         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
39313         * config/riscv/vector-iterators.md: New iterators.
39314         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
39315         support.
39316         (@pred_<optab><mode>_scalar): New pattern.
39317         (@pred_sub<mode>_reverse_scalar): Ditto.
39318         (*pred_<optab><mode>_scalar): Ditto.
39319         (*pred_<optab><mode>_extended_scalar): Ditto.
39320         (*pred_sub<mode>_reverse_scalar): Ditto.
39321         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
39323 2023-02-10  Richard Biener  <rguenther@suse.de>
39325         PR tree-optimization/108724
39326         * tree-vect-stmts.cc (vectorizable_operation): Avoid
39327         using word_mode vectors when vector lowering will
39328         decompose them to elementwise operations.
39330 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
39332         Revert:
39333         2023-02-09  Martin Liska  <mliska@suse.cz>
39335         PR target/100758
39336         * doc/extend.texi: Document that the function
39337         does not work correctly for old VIA processors.
39339 2023-02-10  Andrew Pinski  <apinski@marvell.com>
39340             Andrew Macleod   <amacleod@redhat.com>
39342         PR tree-optimization/108684
39343         * tree-ssa-dce.cc (simple_dce_from_worklist):
39344         Check all ssa names and not just non-vdef ones
39345         before accepting the inline-asm.
39346         Call unlink_stmt_vdef on the statement before
39347         removing it.
39349 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
39351         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
39352         * ira.cc (validate_equiv_mem): Check memref address variance.
39353         (no_equiv): Clear caller_save_p flag.
39354         (update_equiv_regs): Define caller save equivalence for
39355         valid_combine.
39356         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
39357         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
39358         call_save_p.  Use caller save equivalence depending on the arg.
39359         (split_reg): Adjust the call.
39361 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
39363         PR target/100758
39364         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
39365         (cpu_indicator_init): Call get_available_features for all CPUs with
39366         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
39367         fixes.
39369 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
39371         PR tree-optimization/108688
39372         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
39373         of BIT_INSERT_EXPR extracting exactly all inserted bits even
39374         when without mode precision.  Formatting fixes.
39376 2023-02-09  Andrew Pinski  <apinski@marvell.com>
39378         PR tree-optimization/108688
39379         * match.pd (bit_field_ref [bit_insert]): Avoid generating
39380         BIT_FIELD_REFs of non-mode-precision integral operands.
39382 2023-02-09  Martin Liska  <mliska@suse.cz>
39384         PR target/100758
39385         * doc/extend.texi: Document that the function
39386         does not work correctly for old VIA processors.
39388 2023-02-09  Andreas Schwab  <schwab@suse.de>
39390         * lto-wrapper.cc (merge_and_complain): Handle
39391         -funwind-tables and -fasynchronous-unwind-tables.
39392         (append_compiler_options): Likewise.
39394 2023-02-09  Richard Biener  <rguenther@suse.de>
39396         PR tree-optimization/26854
39397         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
39398         view around insert_updated_phi_nodes_for.
39399         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
39400         in tree view.
39401         (walk_aliased_vdefs_1): Likewise.
39403 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
39405         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
39407 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
39409         PR target/108505
39410         * config.gcc (tm_mlib_file): Define new variable.
39412 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
39414         PR tree-optimization/108692
39415         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
39416         widened_code which is different from code, don't call
39417         vect_look_through_possible_promotion but instead just check op is
39418         SSA_NAME with integral type for which vect_is_simple_use is true
39419         and call set_op on this_unprom.
39421 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
39423         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
39424         declaration.
39425         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
39426         definition.
39427         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
39428         to 'aarch_ra_sign_key'.
39429         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
39430         declaration.
39431         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
39432         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
39433         * config/arm/arm.opt: Define.
39435 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
39437         PR tree-optimization/108316
39438         * tree-vect-stmts.cc (get_load_store_type): When using
39439         internal functions for gather/scatter, make sure that the type
39440         of the offset argument is consistent with the offset vector type.
39442 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
39444         Revert:
39445         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
39447         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
39448         * ira.cc (validate_equiv_mem): Check memref address variance.
39449         (update_equiv_regs): Define caller save equivalence for
39450         valid_combine.
39451         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
39452         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
39453         call_save_p.  Use caller save equivalence depending on the arg.
39454         (split_reg): Adjust the call.
39456 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
39458         * tree.def (SAD_EXPR): Remove outdated comment about missing
39459         WIDEN_MINUS_EXPR.
39461 2023-02-07  Marek Polacek  <polacek@redhat.com>
39463         * doc/invoke.texi: Update -fchar8_t documentation.
39465 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
39467         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
39468         * ira.cc (validate_equiv_mem): Check memref address variance.
39469         (update_equiv_regs): Define caller save equivalence for
39470         valid_combine.
39471         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
39472         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
39473         call_save_p.  Use caller save equivalence depending on the arg.
39474         (split_reg): Adjust the call.
39476 2023-02-07  Richard Biener  <rguenther@suse.de>
39478         PR tree-optimization/26854
39479         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
39480         instead of immediate uses.
39482 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
39484         PR tree-optimization/106923
39485         * ipa-split.cc (execute_split_functions): Don't split returns_twice
39486         functions.
39488 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
39490         PR tree-optimization/106433
39491         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
39492         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
39494 2023-02-07  Jan Hubicka  <jh@suse.cz>
39496         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
39497         for znver4.
39499 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
39501         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
39502         (process_asm): Create a constructor for GCN_STACK_SIZE.
39503         (main): Parse the -mstack-size option.
39505 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
39507         PR target/104921
39508         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
39509         Use correct constraint for operand 3.
39511 2023-02-06  Martin Jambor  <mjambor@suse.cz>
39513         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
39515 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
39517         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
39518         New define_int_iterator.
39519         (bytepick_d_ashift_amount): Likewise.
39520         (bytepick_imm): New define_int_attr.
39521         (bytepick_w_lshiftrt_amount): Likewise.
39522         (bytepick_d_lshiftrt_amount): Likewise.
39523         (bytepick_w_<bytepick_imm>): New define_insn template.
39524         (bytepick_w_<bytepick_imm>_extend): Likewise.
39525         (bytepick_d_<bytepick_imm>): Likewise.
39526         (bytepick_w): Remove unused define_insn.
39527         (bytepick_d): Likewise.
39528         (UNSPEC_BYTEPICK_W): Remove unused unspec.
39529         (UNSPEC_BYTEPICK_D): Likewise.
39530         * config/loongarch/predicates.md (const_0_to_3_operand):
39531         Remove unused define_predicate.
39532         (const_0_to_7_operand): Likewise.
39534 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
39536         PR tree-optimization/108655
39537         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
39538         or -fsanitize=unreachable -fsanitize-trap=unreachable return
39539         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
39541 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
39543         * doc/install.texi (Specific): Remove PW32.
39545 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
39547         PR tree-optimization/108647
39548         * range-op.cc (operator_equal::op1_range,
39549         operator_not_equal::op1_range): Don't test op2 bound
39550         equality if op2.undefined_p (), instead set_varying.
39551         (operator_lt::op1_range, operator_le::op1_range,
39552         operator_gt::op1_range, operator_ge::op1_range): Return false if
39553         op2.undefined_p ().
39554         (operator_lt::op2_range, operator_le::op2_range,
39555         operator_gt::op2_range, operator_ge::op2_range): Return false if
39556         op1.undefined_p ().
39558 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
39560         PR tree-optimization/108639
39561         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
39562         widest_int.
39563         (irange::operator==): Same.
39565 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
39567         PR tree-optimization/108647
39568         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
39569         (foperator_lt::op2_range): Same.
39570         (foperator_le::op1_range): Same.
39571         (foperator_le::op2_range): Same.
39572         (foperator_gt::op1_range): Same.
39573         (foperator_gt::op2_range): Same.
39574         (foperator_ge::op1_range): Same.
39575         (foperator_ge::op2_range): Same.
39576         (foperator_unordered_lt::op1_range): Same.
39577         (foperator_unordered_lt::op2_range): Same.
39578         (foperator_unordered_le::op1_range): Same.
39579         (foperator_unordered_le::op2_range): Same.
39580         (foperator_unordered_gt::op1_range): Same.
39581         (foperator_unordered_gt::op2_range): Same.
39582         (foperator_unordered_ge::op1_range): Same.
39583         (foperator_unordered_ge::op2_range): Same.
39585 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
39587         PR tree-optimization/107570
39588         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
39590 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
39592         * doc/gm2.texi (Internals): Remove from menu.
39593         (Using): Comment out ifnohtml conditional.
39594         (Documentation): Use gcc url.
39595         (License): Node simplified.
39596         (Copying): New node.  Include gpl_v3_without_node.
39597         (Contributing): Node simplified.
39598         (Internals): Commented out.
39599         (Libraries): Node simplified.
39600         (Indices): Ditto.
39601         (Contents): Ditto.
39602         (Functions): Ditto.
39604 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
39606         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
39607         attribute.
39608         (mve_vqshluq_m_n_s<mode>): Likewise.
39609         (mve_vshlq_m_<supf><mode>): Likewise.
39610         (mve_vsriq_m_n_<supf><mode>): Likewise.
39611         (mve_vsubq_m_<supf><mode>): Likewise.
39613 2023-02-03  Martin Jambor  <mjambor@suse.cz>
39615         PR ipa/108384
39616         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
39617         when comparing to an IPA-CP value.
39618         (dump_list_of_param_indices): New function.
39619         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
39620         Dump removed candidates using dump_list_of_param_indices.
39621         * ipa-param-manipulation.cc
39622         (ipa_param_body_adjustments::modify_expression): Add assert checking
39623         sizes of a VIEW_CONVERT_EXPR will match.
39624         (ipa_param_body_adjustments::modify_assignment): Likewise.
39626 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
39628         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
39629         * config/riscv/riscv.cc: Ditto.
39631 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39633         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
39634         (sll.vv): Ditto.
39635         (%3,%4): Ditto.
39636         (%3,%v4): Ditto.
39637         * config/riscv/vector.md: Ditto.
39639 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39641         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
39642         * config/riscv/riscv-vector-builtins-bases.cc: New class.
39643         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
39644         (vsra): Ditto.
39645         (vsrl): Ditto.
39646         * config/riscv/riscv-vector-builtins.cc: Ditto.
39647         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
39649 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
39651         * toplev.cc (toplev::main): Only print the version information header
39652         from toplevel main().
39654 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
39656         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
39657         cond_{ashl|ashr|lshr}
39659 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
39661         PR rtl-optimization/108086
39662         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
39663         Adjust size-related commentary accordingly.
39665 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
39667         PR rtl-optimization/108508
39668         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
39669         the splay tree search gives the first clobber in the second group,
39670         make sure that the root of the first clobber group is updated
39671         correctly.  Enter the new clobber group into the definition splay
39672         tree.
39674 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
39676         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
39677         Fix finding best match score.
39679 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
39681         PR debug/106746
39682         PR rtl-optimization/108463
39683         PR target/108484
39684         * cselib.cc (cselib_current_insn): Move declaration earlier.
39685         (cselib_hasher::equal): For debug only locs, temporarily override
39686         cselib_current_insn to their l->setting_insn for the
39687         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
39688         promote some debug locs.
39689         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
39690         when using cselib call cselib_lookup_from_insn on the address but
39691         don't substitute it.
39693 2023-02-02  Richard Biener  <rguenther@suse.de>
39695         PR middle-end/108625
39696         * genmatch.cc (expr::gen_transform): Also disallow resimplification
39697         from pushing to lseq with force_leaf.
39698         (dt_simplify::gen_1): Likewise.
39700 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
39702         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
39703         (struct kernargs): Replace the common content with kernargs_abi.
39704         (struct heap): Delete.
39705         (main): Read GCN_STACK_SIZE envvar.
39706         Allocate space for the device stacks.
39707         Write the new kernargs fields.
39708         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
39709         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
39710         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
39711         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
39712         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
39713         Set up the stacks from the values in the kernargs, not private.
39714         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
39715         (gcn_hsa_declare_function_name): Turn off the private segment.
39716         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
39717         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
39718         * config/gcn/gcn.opt (mstack-size): Change the description.
39720 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
39722         PR target/108443
39723         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
39724         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
39725         addressing MVE predicate modes.
39726         (mve_bool_vec_to_const): Change to represent correct MVE predicate
39727         format.
39728         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
39729         modes.
39730         (arm_vector_mode_supported_p): Likewise.
39731         (arm_mode_to_pred_mode): Add V2QI.
39732         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
39733         qualifier.
39734         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
39735         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
39736         (v2qi_UP): New macro.
39737         (v4bi_UP): New macro.
39738         (v8bi_UP): New macro.
39739         (v16bi_UP): New macro.
39740         (arm_expand_builtin_args): Make it able to expand the new predicate
39741         modes.
39742         * config/arm/arm-modes.def (V2QI): New mode.
39743         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
39744         Pred4x4_t): Remove unused predicate builtin types.
39745         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
39746         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
39747         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
39748         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
39749         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
39750         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
39751         of MODE_VECTOR_BOOL.
39752         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
39753         (MVE_VPRED): Likewise.
39754         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
39755         (MVE_vctp): New mode attribute.
39756         (mode1): Remove.
39757         (VCTPQ): Remove.
39758         (VCTPQ_M): Remove.
39759         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
39760         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
39761         attributes.
39762         (mve_vpnothi): Rename this...
39763         (mve_vpnotv16bi): ... to this.
39764         (mve_vctp<mode1>q_mhi): Rename this...
39765         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
39766         (mve_vldrdq_gather_base_z_<supf>v2di,
39767         mve_vldrdq_gather_offset_z_<supf>v2di,
39768         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
39769         mve_vstrdq_scatter_base_p_<supf>v2di,
39770         mve_vstrdq_scatter_offset_p_<supf>v2di,
39771         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
39772         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
39773         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
39774         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
39775         mve_vldrdq_gather_base_wb_z_<supf>v2di,
39776         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
39777         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
39778         predicates.
39779         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
39780         these...
39781         (VCTP): ... with this.
39782         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
39783         (VCTP_M): ... with this.
39784         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
39785         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
39787 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
39789         PR target/107674
39790         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
39791         (arm_modes_tieable_p): Make MVE predicate modes tieable.
39792         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
39793         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
39794         simplify_subreg to simplify subregs where the outermode is not scalar.
39796 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
39798         PR target/107674
39799         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
39800         new qualifiers parameter and use unsigned short type for MVE predicate.
39801         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
39802         parameter.
39803         (arm_init_crypto_builtins): Likewise.
39805 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
39807         PR ipa/107300
39808         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
39809         * internal-fn.def (TRAP): Remove.
39810         * internal-fn.cc (expand_TRAP): Remove.
39811         * tree.cc (build_common_builtin_nodes): Define
39812         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
39813         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
39814         instead of BUILT_IN_TRAP.
39815         * gimple.cc (gimple_build_builtin_unreachable): Remove
39816         emitting internal function for BUILT_IN_TRAP.
39817         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
39818         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
39819         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
39820         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
39821         BUILT_IN_UNREACHABLE_TRAP.
39822         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
39823         * tree-cfg.cc (verify_gimple_call,
39824         pass_warn_function_return::execute): Likewise.
39825         * attribs.cc (decl_attributes): Don't report exclusions on
39826         BUILT_IN_UNREACHABLE_TRAP either.
39828 2023-02-02  liuhongt  <hongtao.liu@intel.com>
39830         PR tree-optimization/108601
39831         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
39832         * tree-vect-loop.cc
39833         (vectorizable_nonlinear_induction): Remove
39834         vect_can_peel_nonlinear_iv_p.
39835         (vect_can_peel_nonlinear_iv_p): Don't peel
39836         nonlinear iv(mult or shift) for epilog when vf is not
39837         constant and moved the defination to ..
39838         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
39839         .. Here.
39841 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
39843         PR middle-end/108435
39844         * tree-nested.cc (convert_nonlocal_omp_clauses)
39845         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
39846         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
39847         before calling declare_vars.
39848         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
39849         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
39850         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
39851         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
39853 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
39855         * common/config/aarch64/aarch64-common.cc
39856         (struct aarch64_option_extension): Add native_detect and document struct
39857         a bit more.
39858         (all_extensions): Set new field native_detect.
39859         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
39860         unused struct.
39862 2023-02-01  Martin Liska  <mliska@suse.cz>
39864         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
39865         value if set.
39867 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
39869         PR tree-optimization/108356
39870         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
39871         do a search of the DOM tree for a range.
39873 2023-02-01  Martin Liska  <mliska@suse.cz>
39875         PR ipa/108509
39876         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
39877         ony non-null values.
39878         * ipa.cc (walk_polymorphic_call_targets): Likewise.
39880 2023-02-01  Martin Liska  <mliska@suse.cz>
39882         PR driver/108572
39883         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
39884         -gz=zstd.
39886 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
39888         PR debug/108573
39889         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
39890         subregs in DEBUG_INSNs.
39892 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
39894         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
39896 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
39898         * config/s390/s390.cc (s390_restore_gpr_p): New function.
39899         (s390_preserve_gpr_arg_in_range_p): New function.
39900         (s390_preserve_gpr_arg_p): New function.
39901         (s390_preserve_fpr_arg_p): New function.
39902         (s390_register_info_stdarg_fpr): Rename to ...
39903         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
39904         (s390_register_info_stdarg_gpr): Rename to ...
39905         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
39906         (s390_register_info): Use the renamed functions above.
39907         (s390_optimize_register_info): Likewise.
39908         (save_fpr): Generate CFI for -mpreserve-args.
39909         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
39910         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
39911         (s390_optimize_prologue): Likewise.
39912         * config/s390/s390.opt: New option -mpreserve-args
39914 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
39916         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
39917         (restore_gprs): Likewise.
39918         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
39919         frame pointer if a frame-pointer is used.
39920         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
39921         * config/s390/s390.md (stack_tie): Add a register operand and
39922         rename to ...
39923         (@stack_tie<mode>): ... this.
39925 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
39927         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
39928         EMIT_CFI parameter.
39929         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
39930         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
39932 2023-02-01  Richard Biener  <rguenther@suse.de>
39934         PR middle-end/108500
39935         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
39936         with tree traversal algorithm.
39938 2023-02-01  Jason Merrill  <jason@redhat.com>
39940         * doc/invoke.texi: Document -Wno-changes-meaning.
39942 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
39944         * doc/invoke.texi (Static Analyzer Options): Add notes about
39945         limitations of -fanalyzer.
39947 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
39949         * config/riscv/constraints.md (vj): New.
39950         (vk): Ditto
39951         * config/riscv/iterators.md: Add more opcode.
39952         * config/riscv/predicates.md (vector_arith_operand): New.
39953         (vector_neg_arith_operand): New.
39954         (vector_shift_operand): New.
39955         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
39956         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
39957         (vsub): Ditto.
39958         (vand): Ditto.
39959         (vor): Ditto.
39960         (vxor): Ditto.
39961         (vsll): Ditto.
39962         (vsra): Ditto.
39963         (vsrl): Ditto.
39964         (vmin): Ditto.
39965         (vmax): Ditto.
39966         (vminu): Ditto.
39967         (vmaxu): Ditto.
39968         (vmul): Ditto.
39969         (vdiv): Ditto.
39970         (vrem): Ditto.
39971         (vdivu): Ditto.
39972         (vremu): Ditto.
39973         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
39974         (vsub): Ditto.
39975         (vand): Ditto.
39976         (vor): Ditto.
39977         (vxor): Ditto.
39978         (vsll): Ditto.
39979         (vsra): Ditto.
39980         (vsrl): Ditto.
39981         (vmin): Ditto.
39982         (vmax): Ditto.
39983         (vminu): Ditto.
39984         (vmaxu): Ditto.
39985         (vmul): Ditto.
39986         (vdiv): Ditto.
39987         (vrem): Ditto.
39988         (vdivu): Ditto.
39989         (vremu): Ditto.
39990         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
39991         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
39992         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
39993         (DEF_RVV_U_OPS): New.
39994         (rvv_arg_type_info::get_base_vector_type): Handle
39995         RVV_BASE_shift_vector.
39996         (rvv_arg_type_info::get_tree_type): Ditto.
39997         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
39998         RVV_BASE_shift_vector.
39999         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
40000         * config/riscv/vector-iterators.md: Handle more opcode.
40001         * config/riscv/vector.md (@pred_<optab><mode>): New.
40003 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
40005         PR target/108589
40006         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
40007         REG_P on SET_DEST.
40009 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
40011         PR tree-optimization/108608
40012         * tree-vect-loop.cc (vect_transform_reduction): Handle single
40013         def-use cycles that involve function calls rather than tree codes.
40015 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
40017         PR tree-optimization/108385
40018         * gimple-range-gori.cc (gori_compute::compute_operand_range):
40019         Allow VARYING computations to continue if there is a relation.
40020         * range-op.cc (pointer_plus_operator::op2_range): New.
40022 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
40024         PR tree-optimization/108359
40025         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
40026         (range_operator::fold_range): If op1 is equivalent to op2 then
40027         invoke new fold_in_parts_equiv to operate on sub-components.
40028         * range-op.h (wi_fold_in_parts_equiv): New prototype.
40030 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
40032         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
40033         not abort calculations if there is a valid relation available.
40034         (gori_compute::refine_using_relation): Pass correct relation trio.
40035         (gori_compute::compute_operand1_range): Create trio and use it.
40036         (gori_compute::compute_operand2_range): Ditto.
40037         * range-op.cc (operator_plus::op1_range): Use correct trio member.
40038         (operator_minus::op1_range): Use correct trio member.
40039         * value-relation.cc (value_relation::create_trio): New.
40040         * value-relation.h (value_relation::create_trio): New prototype.
40042 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
40044         PR target/108599
40045         * config/i386/i386-expand.cc
40046         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
40047         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
40048         equal to bitsize of mode.
40050 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
40052         PR rtl-optimization/108596
40053         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
40054         ends with asm goto and has a crossing fallthrough edge to the same bb
40055         that contains at least one of its labels by restoring EDGE_CROSSING
40056         flag even on possible edge from cur_bb to new_bb successor.
40058 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
40060         PR c++/105593
40061         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
40062         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
40063         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
40064         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
40065         uninitialized automatic variable __W.
40067 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
40069         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
40071 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40073         * config/riscv/riscv-protos.h (get_vector_mode): New function.
40074         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
40075         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
40076         (class loadstore): Adjust for indexed loads/stores support.
40077         (BASE): Ditto.
40078         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
40079         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
40080         (vluxei16): Ditto.
40081         (vluxei32): Ditto.
40082         (vluxei64): Ditto.
40083         (vloxei8): Ditto.
40084         (vloxei16): Ditto.
40085         (vloxei32): Ditto.
40086         (vloxei64): Ditto.
40087         (vsuxei8): Ditto.
40088         (vsuxei16): Ditto.
40089         (vsuxei32): Ditto.
40090         (vsuxei64): Ditto.
40091         (vsoxei8): Ditto.
40092         (vsoxei16): Ditto.
40093         (vsoxei32): Ditto.
40094         (vsoxei64): Ditto.
40095         * config/riscv/riscv-vector-builtins-shapes.cc
40096         (struct indexed_loadstore_def): New class.
40097         (SHAPE): Ditto.
40098         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
40099         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
40100         for indexed loads/stores support.
40101         (check_required_extensions): Ditto.
40102         (rvv_arg_type_info::get_base_vector_type): New function.
40103         (rvv_arg_type_info::get_tree_type): Ditto.
40104         (function_builder::add_unique_function): Adjust for indexed loads/stores
40105         support.
40106         (function_expander::use_exact_insn): New function.
40107         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
40108         indexed loads/stores support.
40109         (struct rvv_arg_type_info): Ditto.
40110         (function_expander::index_mode): New function.
40111         (function_base::apply_tail_policy_p): Ditto.
40112         (function_base::apply_mask_policy_p): Ditto.
40113         * config/riscv/vector-iterators.md (unspec): New unspec.
40114         * config/riscv/vector.md (unspec): Ditto.
40115         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
40116         pattern.
40117         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
40118         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
40119         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
40120         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
40121         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
40122         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
40123         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
40124         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
40125         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
40126         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
40127         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
40128         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
40129         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
40131 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
40133         * config.gcc: Recognize x86_64-*-gnu* targets and include
40134         i386/gnu64.h.
40135         * config/i386/gnu64.h: Define configuration for new target
40136         including ld.so location.
40138 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
40140         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
40141         ampere1a to include SM4.
40143 2023-01-30  Andrew Pinski  <apinski@marvell.com>
40145         PR tree-optimization/108582
40146         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
40147         for middlebb to have no phi nodes.
40149 2023-01-30  Richard Biener  <rguenther@suse.de>
40151         PR tree-optimization/108574
40152         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
40153         sameval and def, ignore the equivalence if there's the
40154         danger of oscillating between two values.
40156 2023-01-30  Andreas Schwab  <schwab@suse.de>
40158         * common/config/riscv/riscv-common.cc
40159         (riscv_option_optimization_table)
40160         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
40161         -fasynchronous-unwind-tables and -funwind-tables.
40162         * config.gcc (riscv*-*-linux*): Define
40163         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
40165 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
40167         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
40168         value of includedir.
40170 2023-01-30  Richard Biener  <rguenther@suse.de>
40172         PR ipa/108511
40173         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
40174         assert.
40176 2023-01-30  liuhongt  <hongtao.liu@intel.com>
40178         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
40179         * doc/invoke.texi: Ditto.
40181 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
40183         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
40184         (stmt_may_terminate_function_p): If assuming return or EH
40185         volatile asm is safe.
40186         (find_always_executed_bbs): Fix handling of terminating BBS and
40187         infinite loops; add debug output.
40188         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
40190 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
40192         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
40193         off-by-one in checking the permissible shift-amount.
40195 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
40197         * doc/extend.texi (Named Address Spaces): Update link to the
40198         AVR-Libc manual.
40200 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
40202         * doc/standards.texi (Standards): Fix markup.
40204 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
40206         * doc/standards.texi (Standards): Update link to Objective-C book.
40208 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
40210         * doc/invoke.texi (Instrumentation Options): Update reference to
40211         AddressSanitizer.
40213 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
40215         * doc/standards.texi: Update Go1 link.
40217 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40219         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
40220         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
40221         Support vlse/vsse.
40222         (BASE): Ditto.
40223         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
40224         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
40225         (vsse): New class.
40226         * config/riscv/riscv-vector-builtins.cc
40227         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
40228         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
40229         (@pred_strided_store<mode>): Ditto.
40231 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40233         * config/riscv/vector.md (tail_policy_op_idx): Remove.
40234         (mask_policy_op_idx): Remove.
40235         (avl_type_op_idx): Remove.
40237 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
40239         PR tree-optimization/96373
40240         * tree.h (sign_mask_for): Declare.
40241         * tree.cc (sign_mask_for): New function.
40242         (signed_or_unsigned_type_for): For vector types, try to use the
40243         related_int_vector_mode.
40244         * genmatch.cc (commutative_op): Handle conditional internal functions.
40245         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
40247 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
40249         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
40250         Use the likely minimum VF when bounding the denominators to
40251         the estimated number of iterations.
40253 2023-01-27  Richard Biener  <rguenther@suse.de>
40255         PR target/55522
40256         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
40257         and -Ofast FP environment side-effects.
40259 2023-01-27  Richard Biener  <rguenther@suse.de>
40261         PR target/55522
40262         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
40263         Don't add crtfastmath.o for -shared.
40265 2023-01-27  Richard Biener  <rguenther@suse.de>
40267         PR target/55522
40268         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
40269         for -shared.
40271 2023-01-27  Richard Biener  <rguenther@suse.de>
40273         PR target/55522
40274         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
40275         crtfastmath.o for -shared.
40277 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
40279         PR tree-optimization/108306
40280         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
40281         varying for shifts that are always out of void range.
40282         (operator_rshift::fold_range): Return [0, 0] not
40283         varying for shifts that are always out of void range.
40285 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
40287         PR tree-optimization/108447
40288         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
40289         Do not attempt to fold HONOR_NAN types.
40291 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40293         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
40294         Remove _m suffix for "vop_m" C++ overloaded API name.
40296 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40298         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
40299         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
40300         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
40301         (vsm): Ditto.
40302         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
40303         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
40304         (vbool64_t): Ditto.
40305         (vbool32_t): Ditto.
40306         (vbool16_t): Ditto.
40307         (vbool8_t): Ditto.
40308         (vbool4_t): Ditto.
40309         (vbool2_t): Ditto.
40310         (vbool1_t): Ditto.
40311         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
40312         (rvv_arg_type_info::get_tree_type): Ditto.
40313         (function_expander::use_contiguous_load_insn): Ditto.
40314         * config/riscv/vector.md (@pred_store<mode>): Ditto.
40316 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40318         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
40319         (vsetvl_discard_result_insn_p): New function.
40320         (reg_killed_by_bb_p): rename to find_reg_killed_by.
40321         (find_reg_killed_by): New name.
40322         (get_vl): allow it to be called by more functions.
40323         (has_vsetvl_killed_avl_p): Add condition.
40324         (get_avl): allow it to be called by more functions.
40325         (insn_should_be_added_p): New function.
40326         (get_all_nonphi_defs): Refine function.
40327         (get_all_sets): Ditto.
40328         (get_same_bb_set): New function.
40329         (any_insn_in_bb_p): Ditto.
40330         (any_set_in_bb_p): Ditto.
40331         (get_vl_vtype_info): Add VLMAX forward optimization.
40332         (source_equal_p): Fix issues.
40333         (extract_single_source): Refine.
40334         (avl_info::multiple_source_equal_p): New function.
40335         (avl_info::operator==): Adjust for final version.
40336         (vl_vtype_info::operator==): Ditto.
40337         (vl_vtype_info::same_avl_p): Ditto.
40338         (vector_insn_info::parse_insn): Ditto.
40339         (vector_insn_info::available_p): New function.
40340         (vector_insn_info::merge): Adjust for final version.
40341         (vector_insn_info::dump): Add hard_empty.
40342         (pass_vsetvl::hard_empty_block_p): New function.
40343         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
40344         (pass_vsetvl::forward_demand_fusion): Ditto.
40345         (pass_vsetvl::demand_fusion): Ditto.
40346         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
40347         (pass_vsetvl::compute_local_properties): Adjust for final version.
40348         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
40349         (pass_vsetvl::refine_vsetvls): Ditto.
40350         (pass_vsetvl::commit_vsetvls): Ditto.
40351         (pass_vsetvl::propagate_avl): New function.
40352         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
40353         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
40355 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
40357         PR other/108560
40358         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
40359         from size_t to int.
40361 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
40363         PR ipa/106061
40364         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
40365         redirection of calls to __builtin_trap in addition to redirection
40366         to __builtin_unreachable.
40368 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40370         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
40372 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40374         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
40375         (emit_vsetvl_insn): Ditto.
40377 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40379         * config/riscv/vector.md: Fix constraints.
40381 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40383         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
40385 2023-01-27  Patrick Palka  <ppalka@redhat.com>
40386             Jakub Jelinek  <jakub@redhat.com>
40388         * tree-core.h (tree_code_type, tree_code_length): For
40389         C++17 and later, add inline keyword, otherwise don't define
40390         the arrays, but declare extern arrays.
40391         * tree.cc (tree_code_type, tree_code_length): Define these
40392         arrays for C++14 and older.
40394 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40396         * config/riscv/riscv-vsetvl.h: Change it into public.
40398 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40400         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
40401         pass.
40403 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40405         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
40407 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40409         * config/riscv/vector.md: Fix incorrect attributes.
40411 2023-01-27  Richard Biener  <rguenther@suse.de>
40413         PR target/55522
40414         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
40415         Don't add crtfastmath.o for -shared.
40417 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
40419         * doc/options.texi (option, RejectNegative): Mention that
40420         -g-started options are also implicitly negatable.
40422 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
40424         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
40425         Use get_typenode_from_name to get fixed-width integer type
40426         nodes.
40427         * config/riscv/riscv-vector-builtins.def: Update define with
40428         fixed-width integer type nodes.
40430 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40432         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
40433         (real_insn_and_same_bb_p): New function.
40434         (same_bb_and_after_or_equal_p): Remove it.
40435         (before_p): New function.
40436         (reg_killed_by_bb_p): Ditto.
40437         (has_vsetvl_killed_avl_p): Ditto.
40438         (get_vl): Move location so that we can call it.
40439         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
40440         (available_occurrence_p): Ditto.
40441         (dominate_probability_p): Remove it.
40442         (can_backward_propagate_p): Remove it.
40443         (get_all_nonphi_defs): New function.
40444         (get_all_predecessors): Ditto.
40445         (any_insn_in_bb_p): Ditto.
40446         (insert_vsetvl): Adjust AVL REG.
40447         (source_equal_p): New function.
40448         (extract_single_source): Ditto.
40449         (avl_info::single_source_equal_p): Ditto.
40450         (avl_info::operator==): Adjust for AVL=REG.
40451         (vl_vtype_info::same_avl_p): Ditto.
40452         (vector_insn_info::set_demand_info): Remove it.
40453         (vector_insn_info::compatible_p): Adjust for AVL=REG.
40454         (vector_insn_info::compatible_avl_p): New function.
40455         (vector_insn_info::merge): Adjust AVL=REG.
40456         (vector_insn_info::dump): Ditto.
40457         (pass_vsetvl::merge_successors): Remove it.
40458         (enum fusion_type): New enum.
40459         (pass_vsetvl::get_backward_fusion_type): New function.
40460         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
40461         (pass_vsetvl::forward_demand_fusion): Ditto.
40462         (pass_vsetvl::demand_fusion): Ditto.
40463         (pass_vsetvl::prune_expressions): Ditto.
40464         (pass_vsetvl::compute_local_properties): Ditto.
40465         (pass_vsetvl::cleanup_vsetvls): Ditto.
40466         (pass_vsetvl::commit_vsetvls): Ditto.
40467         (pass_vsetvl::init): Ditto.
40468         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
40469         (enum merge_type): New enum.
40471 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40473         * config/riscv/riscv-vsetvl.cc
40474         (vector_infos_manager::vector_infos_manager): Add probability.
40475         (vector_infos_manager::dump): Ditto.
40476         (pass_vsetvl::compute_probabilities): Ditto.
40477         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
40479 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40481         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
40482         (vector_insn_info::merge): Ditto.
40483         (vector_insn_info::dump): Ditto.
40484         (pass_vsetvl::merge_successors): Ditto.
40485         (pass_vsetvl::backward_demand_fusion): Ditto.
40486         (pass_vsetvl::forward_demand_fusion): Ditto.
40487         (pass_vsetvl::commit_vsetvls): Ditto.
40488         * config/riscv/riscv-vsetvl.h: Ditto.
40490 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40492         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
40493         rinsn.
40495 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40497         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
40499 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40501         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
40502         Add pre-check for redundant flow.
40504 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40506         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
40507         (vector_infos_manager::free_bitmap_vectors): Ditto.
40508         (pass_vsetvl::pre_vsetvl): Adjust codes.
40509         * config/riscv/riscv-vsetvl.h: New function declaration.
40511 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40513         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
40514         (vector_insn_info::set_demand_info): New function.
40515         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
40516         (pass_vsetvl::merge_successors): Ditto.
40517         (pass_vsetvl::compute_global_backward_infos): Ditto.
40518         (pass_vsetvl::backward_demand_fusion): Ditto.
40519         (pass_vsetvl::forward_demand_fusion): Ditto.
40520         (pass_vsetvl::demand_fusion): New function.
40521         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
40522         * config/riscv/riscv-vsetvl.h: New function declaration.
40524 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40526         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
40528 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40530         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
40531         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
40533 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40535         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
40536         (backward_propagate_worthwhile_p): Fix non-worthwhile.
40538 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40540         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
40542 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40544         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
40545         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
40546         (pass_vsetvl::commit_vsetvls): Ditto.
40547         * config/riscv/riscv-vsetvl.h: New function declaration.
40549 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40551         * config/riscv/vector.md:
40553 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40555         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
40556         pred_store for vse.
40557         * config/riscv/riscv-vector-builtins.cc
40558         (function_expander::add_mem_operand): Refine function.
40559         (function_expander::use_contiguous_load_insn): Adjust new
40560         implementation.
40561         (function_expander::use_contiguous_store_insn): Ditto.
40562         * config/riscv/riscv-vector-builtins.h: Refine function.
40563         * config/riscv/vector.md (@pred_store<mode>): New pattern.
40565 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40567         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
40569 2023-01-26  Marek Polacek  <polacek@redhat.com>
40571         PR middle-end/108543
40572         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
40573         if it was previously set.
40575 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
40577         PR tree-optimization/108540
40578         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
40579         are singletons, use range_true even if op1 != op2
40580         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
40581         even if intersection of the ranges is empty and one has
40582         zero low bound and another zero high bound, use range_true_and_false
40583         rather than range_false.
40584         (foperator_not_equal::fold_range): If both op1 and op2
40585         are singletons, use range_false even if op1 != op2
40586         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
40587         even if intersection of the ranges is empty and one has
40588         zero low bound and another zero high bound, use range_true_and_false
40589         rather than range_true.
40591 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
40593         * value-relation.cc (kind_string): Add const.
40594         (rr_negate_table, rr_swap_table, rr_intersect_table,
40595         rr_union_table, rr_transitive_table): Add static const, change
40596         element type from relation_kind to unsigned char.
40597         (relation_negate, relation_swap, relation_intersect, relation_union,
40598         relation_transitive): Cast rr_*_table element to relation_kind.
40599         (relation_to_code): Add static const.
40600         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
40602 2023-01-26  Richard Biener  <rguenther@suse.de>
40604         PR tree-optimization/108547
40605         * gimple-predicate-analysis.cc (value_sat_pred_p):
40606         Use widest_int.
40608 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
40610         PR tree-optimization/108522
40611         * tree-object-size.cc (compute_object_offset): Make EXPR
40612         argument non-const.  Call component_ref_field_offset.
40614 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
40616         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
40617         FEATURE_STRING field.
40619 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
40621         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
40623 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
40625         PR modula2/102343
40626         PR modula2/108182
40627         * gcc.cc: Provide default specs for Modula-2 so that when the
40628         language is not built-in better diagnostics are emitted for
40629         attempts to use .mod or .m2i file extensions.
40631 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
40633         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
40635 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
40637         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
40639 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
40641         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
40642         Fix spacing.
40644 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
40646         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
40648 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
40650         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
40652 2023-01-25  Richard Biener  <rguenther@suse.de>
40654         PR tree-optimization/108523
40655         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
40656         backedge value for the result when using predication to
40657         prove equivalence.
40659 2023-01-25  Richard Biener  <rguenther@suse.de>
40661         * doc/lto.texi (Command line options): Reword and update reference
40662         to removed lto_read_all_file_options.
40664 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
40666         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
40667         tests.
40669 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
40671         * doc/contrib.texi: Add Jose E. Marchesi.
40673 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
40675         PR tree-optimization/108498
40676         * gimple-ssa-store-merging.cc (class store_operand_info):
40677         End coment with full stop rather than comma.
40678         (split_group): Likewise.
40679         (merged_store_group::apply_stores): Clear string_concatenation if
40680         start or end aren't on a byte boundary.
40682 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
40683             Jakub Jelinek  <jakub@redhat.com>
40685         PR tree-optimization/108522
40686         * tree-object-size.cc (compute_object_offset): Use
40687         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
40689 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
40691         * config/xtensa/xtensa.md:
40692         Fix exit from loops detecting references before overwriting in the
40693         split pattern.
40695 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
40697         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
40698         do elimination but only for hard register.
40699         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
40700         calls of get_hard_regno.
40702 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
40704         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
40705         of CPU version.
40707 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
40709         PR target/108177
40710         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
40711         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
40712         as input operand.
40714 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
40716         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
40717         and only include 'csky/t-csky-linux' when enable multilib.
40718         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
40719         define it when disable multilib.
40721 2023-01-24  Richard Biener  <rguenther@suse.de>
40723         PR tree-optimization/108500
40724         * dominance.h (calculate_dominance_info): Add parameter
40725         to indicate fast-query compute, defaulted to true.
40726         * dominance.cc (calculate_dominance_info): Honor
40727         fast-query compute parameter.
40728         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
40729         not compute the dominator fast-query DFS numbers.
40731 2023-01-24  Eric Biggers  <ebiggers@google.com>
40733         PR bootstrap/90543
40734         * optc-save-gen.awk: Fix copy-and-paste error.
40736 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
40738         PR c++/108474
40739         * cgraphbuild.cc: Include gimplify.h.
40740         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
40741         their corresponding DECL_VALUE_EXPR expressions after unsharing.
40743 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
40745         PR target/108505
40746         * config.gcc (tm_file): Move the variable out of loop.
40748 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
40749             Yang Yujie  <yangyujie@loongson.cn>
40751         PR target/107731
40752         * config/loongarch/loongarch.cc (loongarch_classify_address):
40753         Add precessint for CONST_INT.
40754         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
40755         (loongarch_print_operand): Increase the processing of '%c'.
40756         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
40757         And port the public operand modifiers information to this document.
40759 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
40761         * doc/invoke.texi (-mbranch-protection): Update documentation.
40763 2023-01-23  Richard Biener  <rguenther@suse.de>
40765         PR target/55522
40766         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
40767         for -shared.
40768         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
40769         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
40770         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
40771         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
40773 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
40775         * config/arm/aout.h (ra_auth_code): Add entry in enum.
40776         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
40777         to dwarf frame expression.
40778         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
40779         (arm_expand_prologue): Update frame related information and reg notes
40780         for pac/pacbit insn.
40781         (arm_regno_class): Check for pac pseudo reigster.
40782         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
40783         (arm_init_machine_status): Set pacspval_needed to zero.
40784         (arm_debugger_regno): Check for PAC register.
40785         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
40786         register.
40787         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
40788         (arm_unwind_emit): Update REG_CFA_REGISTER case._
40789         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
40790         (DWARF_PAC_REGNUM): Define.
40791         (IS_PAC_REGNUM): Likewise.
40792         (enum reg_class): Add PAC_REG entry.
40793         (machine_function): Add pacbti_needed state to structure.
40794         * config/arm/arm.md (RA_AUTH_CODE): Define.
40796 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
40798         * config.gcc ($tm_file): Update variable.
40799         * config/arm/arm-mlib.h: Create new header file.
40800         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
40801         multilib arch directory.
40802         (MULTILIB_REUSE): Add multilib reuse rules.
40803         (MULTILIB_MATCHES): Add multilib match rules.
40805 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
40807         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
40808         * config/arm/arm-tables.opt: Regenerate.
40809         * config/arm/arm-tune.md: Likewise.
40810         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
40811         * (-mfix-cmse-cve-2021-35465): Likewise.
40813 2023-01-23  Richard Biener  <rguenther@suse.de>
40815         PR tree-optimization/108482
40816         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
40817         .LOOP_DIST_ALIAS calls.
40819 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40821         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
40822         * config/arm/arm-protos.h: Update.
40823         * config/arm/aarch-common-protos.h: Declare
40824         'aarch_bti_arch_check'.
40825         * config/arm/arm.cc (aarch_bti_enabled) Update.
40826         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
40827         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
40828         * config/arm/arm.md (bti_nop): New insn.
40829         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
40830         (aarch-bti-insert.o): New target.
40831         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
40832         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
40833         compatibility.
40834         (gate): Make use of 'aarch_bti_arch_check'.
40835         * config/arm/arm-passes.def: New file.
40836         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
40838 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40840         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
40841         'aarch-bti-insert.o'.
40842         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
40843         proto.
40844         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
40845         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
40846         (aarch64_output_mi_thunk)
40847         (aarch64_print_patchable_function_entry)
40848         (aarch64_file_end_indicate_exec_stack): Update renamed function
40849         calls to renamed functions.
40850         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
40851         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
40852         target.
40853         * config/aarch64/aarch64-bti-insert.cc: Delete.
40854         * config/arm/aarch-bti-insert.cc: New file including and
40855         generalizing code from aarch64-bti-insert.cc.
40856         * config/arm/aarch-common-protos.h: Update.
40858 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40860         * config/arm/arm.h (arm_arch8m_main): Declare it.
40861         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
40862         Declare it.
40863         * config/arm/arm.cc (arm_arch8m_main): Define it.
40864         (arm_option_reconfigure_globals): Set arm_arch8m_main.
40865         (arm_compute_frame_layout, arm_expand_prologue)
40866         (thumb2_expand_return, arm_expand_epilogue)
40867         (arm_conditional_register_usage): Update for pac codegen.
40868         (arm_current_function_pac_enabled_p): New function.
40869         (aarch_bti_enabled) New function.
40870         (use_return_insn): Return zero when pac is enabled.
40871         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
40872         Add new patterns.
40873         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
40874         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
40876 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40878         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
40879         mbranch-protection.
40881 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40882             Tejas Belagod   <tbelagod@arm.com>
40884         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
40885         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
40887 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40888             Tejas Belagod   <tbelagod@arm.com>
40889             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
40891         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
40892         new pseudo register class _UVRSC_PAC.
40894 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40895             Tejas Belagod   <tbelagod@arm.com>
40897         * config/arm/arm-c.cc (arm_cpu_builtins): Define
40898         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
40899         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
40901 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40902             Tejas Belagod   <tbelagod@arm.com>
40904         * doc/sourcebuild.texi: Document arm_pacbti_hw.
40906 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40907             Tejas Belagod   <tbelagod@arm.com>
40908             Richard Earnshaw  <Richard.Earnshaw@arm.com>
40910         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
40911         -mbranch-protection option and initialize appropriate data structures.
40912         * config/arm/arm.opt (-mbranch-protection): New option.
40913         * doc/invoke.texi (Arm Options): Document it.
40915 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40916             Tejas Belagod   <tbelagod@arm.com>
40918         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
40919         * config/arm/arm-cpus.in (pacbti): New feature.
40920         * doc/invoke.texi (Arm Options): Document it.
40922 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
40923             Tejas Belagod   <tbelagod@arm.com>
40925         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
40926         (all_architectures): Fix comment.
40927         (aarch64_parse_extension): Rename return type, enum value names.
40928         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
40929         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
40930         Also rename corresponding enum values.
40931         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
40932         out aarch64_function_type and move it to common code as
40933         aarch_function_type in aarch-common.h.
40934         * config/aarch64/aarch64-protos.h: Include common types header,
40935         move out types aarch64_parse_opt_result and aarch64_key_type to
40936         aarch-common.h
40937         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
40938         and functions out into aarch-common.h and aarch-common.cc.  Fix up
40939         all the name changes resulting from the move.
40940         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
40941         and enum value.
40942         * config/aarch64/aarch64.opt: Include aarch-common.h to import
40943         type move.  Fix up name changes from factoring out common code and
40944         data.
40945         * config/arm/aarch-common-protos.h: Export factored out routines to both
40946         backends.
40947         * config/arm/aarch-common.cc: Include newly factored out types.
40948         Move all mbranch-protection code and data structures from
40949         aarch64.cc.
40950         * config/arm/aarch-common.h: New header that declares types shared
40951         between aarch32 and aarch64 backends.
40952         * config/arm/arm-protos.h: Declare types and variables that are
40953         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
40954         aarch_ra_sign_scope and aarch_enable_bti.
40955         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
40956         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
40957         * config/arm/arm.cc: Add missing includes.
40959 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
40961         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
40963 2023-01-23  Richard Biener  <rguenther@suse.de>
40965         PR tree-optimization/108449
40966         * cgraphunit.cc (check_global_declaration): Do not turn
40967         undefined statics into externs.
40969 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
40971         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
40972         and HI input modes.
40973         * config/pru/pru.md (clz): Fix generated code for QI and HI
40974         input modes.
40976 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
40978         * config/v850/v850.cc (v850_select_section): Put const volatile
40979         objects into read-only sections.
40981 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
40983         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
40984         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
40985         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
40987 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
40989         PR tree-optimization/108457
40990         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
40991         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
40992         argument instead of a temporary.  Formatting fixes.
40994 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
40996         PR tree-optimization/108447
40997         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
40998         (relation_tests): Add self-tests for relation_{intersect,union}
40999         commutativity.
41000         * selftest.h (relation_tests): Declare.
41001         * function-tests.cc (test_ranges): Call it.
41003 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
41005         PR target/108436
41006         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
41007         invalid third argument to __builtin_ia32_prefetch.
41009 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
41011         PR middle-end/108459
41012         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
41013         than fold_unary for NEGATE_EXPR.
41015 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
41017         PR target/108411
41018         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
41019         comment. Move assert about alignment a bit later.
41021 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
41023         PR tree-optimization/108440
41024         * tree-ssa-forwprop.cc: Include gimple-range.h.
41025         (simplify_rotate): For the forms with T2 wider than T and shift counts of
41026         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
41027         to B.  For the forms with T2 wider than T and shift counts of
41028         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
41029         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
41030         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
41031         pass specific ranger instead of get_global_range_query.
41032         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
41033         been created.
41035 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
41037         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
41038         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
41039         the pattern.
41040         (aarch64_simd_vec_copy_lane<mode>): Likewise.
41041         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
41043 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
41045         PR debug/106746
41046         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
41047         within debug insns.
41049 2023-01-18  Martin Jambor  <mjambor@suse.cz>
41051         PR ipa/107944
41052         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
41053         lcone_of chain also do not need the body.
41055 2023-01-18  Richard Biener  <rguenther@suse.de>
41057         Revert:
41058         2022-12-16  Richard Biener  <rguenther@suse.de>
41060         PR middle-end/108086
41061         * tree-inline.cc (remap_ssa_name): Do not unshare the
41062         result from the decl_map.
41064 2023-01-18  Murray Steele  <murray.steele@arm.com>
41066         PR target/108442
41067         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
41068         function.
41069         (__arm_vst1q_p_s8): Likewise.
41070         (__arm_vld1q_z_u8): Likewise.
41071         (__arm_vld1q_z_s8): Likewise.
41072         (__arm_vst1q_p_u16): Likewise.
41073         (__arm_vst1q_p_s16): Likewise.
41074         (__arm_vld1q_z_u16): Likewise.
41075         (__arm_vld1q_z_s16): Likewise.
41076         (__arm_vst1q_p_u32): Likewise.
41077         (__arm_vst1q_p_s32): Likewise.
41078         (__arm_vld1q_z_u32): Likewise.
41079         (__arm_vld1q_z_s32): Likewise.
41080         (__arm_vld1q_z_f16): Likewise.
41081         (__arm_vst1q_p_f16): Likewise.
41082         (__arm_vld1q_z_f32): Likewise.
41083         (__arm_vst1q_p_f32): Likewise.
41085 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
41087         * config/xtensa/xtensa.md (xorsi3_internal):
41088         Rename from the original of "xorsi3".
41089         (xorsi3): New expansion pattern that emits addition rather than
41090         bitwise-XOR when the second source is a constant of -2147483648
41091         if TARGET_DENSITY.
41093 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
41094             Andrew Pinski  <apinski@marvell.com>
41096         PR target/108396
41097         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
41098         vec_vsubcuqP with vec_vsubcuq.
41100 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
41102         PR target/108348
41103         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
41104         support for invalid uses of MMA opaque type in function arguments.
41106 2023-01-18  liuhongt  <hongtao.liu@intel.com>
41108         PR target/55522
41109         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
41110         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
41111         -share or -mno-daz-ftz is specified.
41112         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
41113         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
41115 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
41117         * config/bpf/bpf.cc (bpf_option_override): Disable
41118         -fstack-protector.
41120 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
41122         PR tree-optimization/106523
41123         * tree-ssa-forwprop.cc (simplify_rotate): For the
41124         patterns with (-Y) & (B - 1) in one operand's shift
41125         count and Y in another, if T2 has wider precision than T,
41126         punt if Y could have a value in [B, B2 - 1] range.
41128 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
41130         PR target/105980
41131         * config/i386/i386.cc (x86_output_mi_thunk): Disable
41132         -mforce-indirect-call for PIC in 32-bit mode.
41134 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
41136         PR ipa/106077
41137         * ipa-modref.cc (modref_access_analysis::analyze): Use
41138         find_always_executed_bbs.
41139         * ipa-sra.cc (process_scan_results): Likewise.
41140         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
41141         (find_always_executed_bbs): New function.
41142         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
41143         (find_always_executed_bbs): Declare.
41145 2023-01-16  Jan Hubicka  <jh@suse.cz>
41147         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
41148         by TARGET_USE_SCATTER.
41149         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
41150         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
41151         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
41152         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
41153         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
41154         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
41156 2023-01-16  Richard Biener  <rguenther@suse.de>
41158         PR target/55522
41159         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
41161 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
41163         PR target/96795
41164         PR target/107515
41165         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
41166         (__ARM_mve_coerce3): Likewise.
41168 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
41170         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
41172 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
41174         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
41175         (number_of_iterations_bitcount): Add call to the above.
41176         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
41177         c[lt]z idiom recognition.
41179 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
41181         * doc/sourcebuild.texi: Add missing target attributes.
41183 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
41185         PR tree-optimization/94793
41186         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
41187         for c[lt]z optabs.
41188         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
41189         (number_of_iterations_cltz_complement): New.
41190         (number_of_iterations_bitcount): Add call to the above.
41192 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
41194         * doc/extend.texi (Common Function Attributes): Fix grammar.
41196 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
41198         PR other/108413
41199         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
41200         * config/riscv/riscv-vsetvl.cc: Likewise.
41202 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
41204         PR c++/105593
41205         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
41206         disable -Winit-self using pragma GCC diagnostic ignored.
41207         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
41208         Likewise.
41209         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
41210         _mm256_undefined_si256): Likewise.
41211         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
41212         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
41213         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
41214         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
41216 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
41218         PR target/108272
41219         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
41220         support for invalid uses in inline asm, factor out the checking and
41221         erroring to lambda function check_and_error_invalid_use.
41223 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
41225         PR tree-optimization/107608
41226         * range-op-float.cc (range_operator_float::fold_range): Avoid
41227         folding into INF when flag_trapping_math.
41228         * value-range.h (frange::known_isinf): Return false for possible NANs.
41230 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
41232         * config.gcc (csky-*-*): Support --with-float=softfp.
41234 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
41236         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
41237         Rename to xtensa_adjust_reg_alloc_order.
41238         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
41239         Ditto.  And also remove code to reorder register numbers for
41240         leaf functions, rename the tables, and adjust the allocation
41241         order for the call0 ABI to use register A0 more.
41242         (xtensa_leaf_regs): Remove.
41243         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
41244         (order_regs_for_local_alloc): Rename as the above.
41245         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
41247 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
41249         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
41250         Change to define_insn_and_split to fold ldr+dup to ld1rq.
41251         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
41253 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
41255         * hash-table.h (is_deleted): Precheck !is_empty.
41256         (mark_deleted): Postcheck !is_empty.
41257         (copy constructor): Test is_empty before is_deleted.
41259 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
41261         PR target/40457
41262         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
41263         moves.
41265 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
41267         PR rtl-optimization/108274
41268         * function.cc (thread_prologue_and_epilogue_insns): Also update the
41269         DF information for calls in a few more cases.
41271 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
41273         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
41274         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
41275         define.
41276         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
41277         (MAX_SYNC_LIBFUNC_SIZE): Define.
41278         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
41279         enabled.
41280         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
41281         libcall when sync libcalls are disabled.
41282         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
41283         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
41284         are disabled on 32-bit target.
41285         * config/pa/pa.opt (matomic-libcalls): New option.
41286         * doc/invoke.texi (HPPA Options): Update.
41288 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
41290         PR rtl-optimization/108117
41291         PR rtl-optimization/108132
41292         * sched-deps.cc (deps_analyze_insn): Do not schedule across
41293         calls before reload.
41295 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
41297         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
41298         options for -mlibarch.
41299         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
41300         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
41302 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
41304         * attribs.cc (strict_flex_array_level_of): Move this function to ...
41305         * attribs.h (strict_flex_array_level_of): Remove the declaration.
41306         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
41307         replace the referece to strict_flex_array_level_of with
41308         DECL_NOT_FLEXARRAY.
41309         * tree.cc (component_ref_size): Likewise.
41311 2023-01-13  Richard Biener  <rguenther@suse.de>
41313         PR target/55522
41314         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
41315         crtfastmath.o for -shared.
41316         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
41318 2023-01-13  Richard Biener  <rguenther@suse.de>
41320         PR target/55522
41321         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
41322         crtfastmath.o for -shared.
41323         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
41324         Likewise.
41325         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
41326         Likewise.
41328 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
41330         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
41331         function.
41332         (TARGET_DWARF_FRAME_REG_MODE): Define.
41334 2023-01-13  Richard Biener  <rguenther@suse.de>
41336         PR target/107209
41337         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
41338         update EH info on the fly.
41340 2023-01-13  Richard Biener  <rguenther@suse.de>
41342         PR tree-optimization/108387
41343         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
41344         value before inserting expression into the tables.
41346 2023-01-12  Andrew Pinski  <apinski@marvell.com>
41347             Roger Sayle  <roger@nextmovesoftware.com>
41349         PR tree-optimization/92342
41350         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
41351         Use tcc_comparison and :c for the multiply.
41352         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
41354 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
41355             Richard Sandiford  <richard.sandiford@arm.com>
41357         PR target/105549
41358         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
41359         Check DECL_PACKED for bitfield.
41360         (aarch64_layout_arg): Warn when parameter passing ABI changes.
41361         (aarch64_function_arg_boundary): Do not warn here.
41362         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
41363         changes.
41365 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
41366             Richard Sandiford  <richard.sandiford@arm.com>
41368         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
41369         comment.
41370         (aarch64_layout_arg): Factorize warning conditions.
41371         (aarch64_function_arg_boundary): Fix typo.
41372         * function.cc (currently_expanding_function_start): New variable.
41373         (expand_function_start): Handle
41374         currently_expanding_function_start.
41375         * function.h (currently_expanding_function_start): Declare.
41377 2023-01-12  Richard Biener  <rguenther@suse.de>
41379         PR tree-optimization/99412
41380         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
41381         (swap_ops_for_binary_stmt): Remove reduction handling.
41382         (rewrite_expr_tree_parallel): Adjust.
41383         (reassociate_bb): Likewise.
41384         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
41386 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
41388         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
41389         Rearrange the emitting codes.
41391 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
41393         * config/xtensa/xtensa.md (*btrue):
41394         Correct value of the attribute "length" that depends on
41395         TARGET_DENSITY and operands, and add '?' character to the register
41396         constraint of the compared operand.
41398 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
41400         * hash-table.h (expand): Check elements and deleted counts.
41401         (verify): Likewise.
41403 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
41405         PR tree-optimization/71343
41406         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
41407         the value number of the expression X << C the same as the value
41408         number for the multiplication X * (1<<C).
41410 2023-01-11  David Faust  <david.faust@oracle.com>
41412         PR target/108293
41413         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
41414         floating point modes.
41416 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
41418         PR tree-optimization/108199
41419         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
41420         for bit-field references.
41422 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
41424         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
41425         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
41426         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
41427         OPTION_MASK_P10_FUSION.
41429 2023-01-11  Richard Biener  <rguenther@suse.de>
41431         PR tree-optimization/107767
41432         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
41433         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
41434         * tree-switch-conversion.cc (switch_conversion::collect):
41435         Count unique non-default targets accounting for later
41436         merging opportunities.
41438 2023-01-11  Martin Liska  <mliska@suse.cz>
41440         PR middle-end/107976
41441         * params.opt: Limit JT params.
41442         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
41444 2023-01-11  Richard Biener  <rguenther@suse.de>
41446         PR tree-optimization/108352
41447         * tree-ssa-threadbackward.cc
41448         (back_threader_profitability::profitable_path_p): Adjust
41449         heuristic that allows non-multi-way branch threads creating
41450         irreducible loops.
41451         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
41452         (--param fsm-scale-path-stmts): Adjust.
41453         * params.opt (--param=fsm-scale-path-blocks=): Remove.
41454         (-param=fsm-scale-path-stmts=): Adjust description.
41456 2023-01-11  Richard Biener  <rguenther@suse.de>
41458         PR tree-optimization/108353
41459         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
41460         Remove.
41461         (add_ssa_edge): Simplify.
41462         (add_control_edge): Likewise.
41463         (ssa_prop_init): Likewise.
41464         (ssa_prop_fini): Likewise.
41465         (ssa_propagation_engine::ssa_propagate): Likewise.
41467 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
41469         * config/s390/s390.md (*not<mode>): New pattern.
41471 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
41473         * config/xtensa/xtensa.cc (xtensa_insn_cost):
41474         Let insn cost for size be obtained by applying COSTS_N_INSNS()
41475         to instruction length and then dividing by 3.
41477 2023-01-10  Richard Biener  <rguenther@suse.de>
41479         PR tree-optimization/106293
41480         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
41481         process degenerate PHI defs.
41483 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
41485         PR rtl-optimization/106421
41486         * cprop.cc (bypass_block): Check that DEST is local to this
41487         function (non-NULL) before calling find_edge.
41489 2023-01-10  Martin Jambor  <mjambor@suse.cz>
41491         PR ipa/108110
41492         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
41493         sort_replacements, lookup_first_base_replacement and
41494         m_sorted_replacements_p.
41495         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
41496         (ipa_param_body_adjustments::register_replacement): Set
41497         m_sorted_replacements_p to false.
41498         (compare_param_body_replacement): New function.
41499         (ipa_param_body_adjustments::sort_replacements): Likewise.
41500         (ipa_param_body_adjustments::common_initialization): Call
41501         sort_replacements.
41502         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
41503         m_sorted_replacements_p.
41504         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
41505         std::lower_bound.
41506         (ipa_param_body_adjustments::lookup_first_base_replacement): New
41507         function.
41508         (ipa_param_body_adjustments::modify_call_stmt): Use
41509         lookup_first_base_replacement.
41510         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
41511         adjustments->sort_replacements.
41513 2023-01-10  Richard Biener  <rguenther@suse.de>
41515         PR tree-optimization/108314
41516         * tree-vect-stmts.cc (vectorizable_condition): Do not
41517         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
41519 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
41521         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
41523 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
41525         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
41527 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
41529         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
41530         defines for soft float abi.
41532 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
41534         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
41535         (smart_bclri): Likewise.
41536         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
41537         (fast_bclri): Likewise.
41538         (fast_cmpnesi_i): Likewise.
41539         (*fast_cmpltsi_i): Likewise.
41540         (*fast_cmpgeusi_i): Likewise.
41542 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
41544         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
41545         flag_fp_int_builtin_inexact || !flag_trapping_math.
41546         (<frm_pattern><mode>2): Likewise.
41548 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
41550         * config/s390/s390.cc (s390_register_info): Check call_used_regs
41551         instead of hard-coding the register numbers for call saved
41552         registers.
41553         (s390_optimize_register_info): Likewise.
41555 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
41557         * doc/gm2.texi (Overview): Fix @node markers.
41558         (Using): Likewise.  Remove subsections that were moved to Overview
41559         from the menu and move others around.
41561 2023-01-09  Richard Biener  <rguenther@suse.de>
41563         PR middle-end/108209
41564         * genmatch.cc (commutative_op): Fix return value for
41565         user-id with non-commutative first replacement.
41567 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
41569         PR target/107453
41570         * calls.cc (expand_call): For calls with
41571         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
41572         Formatting fix.
41574 2023-01-09  Richard Biener  <rguenther@suse.de>
41576         PR middle-end/69482
41577         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
41578         qualified accesses also force objects to memory.
41580 2023-01-09  Martin Liska  <mliska@suse.cz>
41582         PR lto/108330
41583         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
41584         NULL (deleleted value) to a hash_set.
41586 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
41588         * config/xtensa/xtensa.md (*splice_bits):
41589         New insn_and_split pattern.
41591 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
41593         * config/xtensa/xtensa.cc
41594         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
41595         New helper functions.
41596         (xtensa_set_return_address, xtensa_output_mi_thunk):
41597         Change to use the helper function.
41598         (xtensa_emit_adjust_stack_ptr): Ditto.
41599         And also change to try reusing the content of scratch register
41600         A9 if the register is not modified in the function body.
41602 2023-01-07  LIU Hao  <lh_mouse@126.com>
41604         PR middle-end/108300
41605         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
41606         before <windows.h>.
41607         * diagnostic-color.cc: Likewise.
41608         * plugin.cc: Likewise.
41609         * prefix.cc: Likewise.
41611 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
41613         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
41614         for handling real integer types.
41616 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
41618         Revert:
41619         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
41621         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
41622         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
41623         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
41624         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
41625         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
41626         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
41627         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
41628         (aarch64_simd_dupv2hf): New.
41629         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
41630         Add E_V2HFmode.
41631         * config/aarch64/iterators.md (VHSDF_P): New.
41632         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
41633         Vel, q, vp): Add V2HF.
41634         * config/arm/types.md (neon_fp_reduc_add_h): New.
41636 2023-01-06  Martin Liska  <mliska@suse.cz>
41638         PR middle-end/107966
41639         * doc/options.texi: Fix Var documentation in internal manual.
41641 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
41643         Revert:
41644         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
41646         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
41647         RTL expansion to allow condition (mask) to be shared/reused,
41648         by avoiding overwriting pseudos and adding REG_EQUAL notes.
41650 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
41652         * common.opt: Add -static-libgm2.
41653         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
41654         * doc/gm2.texi: Document static-libgm2.
41655         * gcc.cc (driver_handle_option): Allow static-libgm2.
41657 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
41659         * common/config/i386/i386-common.cc (processor_alias_table):
41660         Use CPU_ZNVER4 for znver4.
41661         * config/i386/i386.md: Add znver4.md.
41662         * config/i386/znver4.md: New.
41664 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
41666         PR tree-optimization/108253
41667         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
41668         types.
41670 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
41672         PR middle-end/108237
41673         * generic-match-head.cc: Include tree-pass.h.
41674         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
41675         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
41676         resp. PROP_gimple_lvec property set.
41678 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
41680         PR sanitizer/108256
41681         * convert.cc (do_narrow): Punt for MULT_EXPR if original
41682         type doesn't wrap around and -fsanitize=signed-integer-overflow
41683         is on.
41684         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
41686 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
41688         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
41689         * common/config/i386/i386-common.cc: Add Emeraldrapids.
41691 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
41693         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
41694         for meteorlake.
41696 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
41698         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
41699         default constructor to initialize it.
41700         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
41701         for last and iterate to handle recursive calls.  Delete leftover
41702         candidates at the end.
41703         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
41704         on local clones.
41705         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
41706         gc_candidate bit when a clone is used.
41708 2023-01-03  Florian Weimer  <fweimer@redhat.com>
41710         Revert:
41711         2023-01-02  Florian Weimer  <fweimer@redhat.com>
41713         * dwarf2cfi.cc (init_return_column_size): Remove.
41714         (init_one_dwarf_reg_size): Adjust.
41715         (generate_dwarf_reg_sizes): New function.  Extracted
41716         from expand_builtin_init_dwarf_reg_sizes.
41717         (expand_builtin_init_dwarf_reg_sizes): Call
41718         generate_dwarf_reg_sizes.
41719         * target.def (init_dwarf_reg_sizes_extra): Adjust
41720         hook signature.
41721         * config/msp430/msp430.cc
41722         (msp430_init_dwarf_reg_sizes_extra): Adjust.
41723         * config/rs6000/rs6000.cc
41724         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
41725         * doc/tm.texi: Update.
41727 2023-01-03  Florian Weimer  <fweimer@redhat.com>
41729         Revert:
41730         2023-01-02  Florian Weimer  <fweimer@redhat.com>
41732         * debug.h (dwarf_reg_sizes_constant): Declare.
41733         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
41735 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
41737         PR tree-optimization/105043
41738         * doc/extend.texi (Object Size Checking): Split out into two
41739         subsections and mention _FORTIFY_SOURCE.
41741 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
41743         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
41744         RTL expansion to allow condition (mask) to be shared/reused,
41745         by avoiding overwriting pseudos and adding REG_EQUAL notes.
41747 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
41749         PR target/108229
41750         * config/i386/i386-features.cc
41751         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
41752         the gain/cost of converting a MEM operand.
41754 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
41756         PR middle-end/108264
41757         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
41758         from source which doesn't have scalar integral mode first convert
41759         it to outer_mode.
41761 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
41763         PR rtl-optimization/108263
41764         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
41765         asm goto to EXIT.
41767 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
41769         PR target/87832
41770         * config/i386/lujiazui.md (lujiazui_div): New automaton.
41771         (lua_div): New unit.
41772         (lua_idiv_qi): Correct unit in the reservation.
41773         (lua_idiv_qi_load): Ditto.
41774         (lua_idiv_hi): Ditto.
41775         (lua_idiv_hi_load): Ditto.
41776         (lua_idiv_si): Ditto.
41777         (lua_idiv_si_load): Ditto.
41778         (lua_idiv_di): Ditto.
41779         (lua_idiv_di_load): Ditto.
41780         (lua_fdiv_SF): Ditto.
41781         (lua_fdiv_SF_load): Ditto.
41782         (lua_fdiv_DF): Ditto.
41783         (lua_fdiv_DF_load): Ditto.
41784         (lua_fdiv_XF): Ditto.
41785         (lua_fdiv_XF_load): Ditto.
41786         (lua_ssediv_SF): Ditto.
41787         (lua_ssediv_load_SF): Ditto.
41788         (lua_ssediv_V4SF): Ditto.
41789         (lua_ssediv_load_V4SF): Ditto.
41790         (lua_ssediv_V8SF): Ditto.
41791         (lua_ssediv_load_V8SF): Ditto.
41792         (lua_ssediv_SD): Ditto.
41793         (lua_ssediv_load_SD): Ditto.
41794         (lua_ssediv_V2DF): Ditto.
41795         (lua_ssediv_load_V2DF): Ditto.
41796         (lua_ssediv_V4DF): Ditto.
41797         (lua_ssediv_load_V4DF): Ditto.
41799 2023-01-02  Florian Weimer  <fweimer@redhat.com>
41801         * debug.h (dwarf_reg_sizes_constant): Declare.
41802         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
41804 2023-01-02  Florian Weimer  <fweimer@redhat.com>
41806         * dwarf2cfi.cc (init_return_column_size): Remove.
41807         (init_one_dwarf_reg_size): Adjust.
41808         (generate_dwarf_reg_sizes): New function.  Extracted
41809         from expand_builtin_init_dwarf_reg_sizes.
41810         (expand_builtin_init_dwarf_reg_sizes): Call
41811         generate_dwarf_reg_sizes.
41812         * target.def (init_dwarf_reg_sizes_extra): Adjust
41813         hook signature.
41814         * config/msp430/msp430.cc
41815         (msp430_init_dwarf_reg_sizes_extra): Adjust.
41816         * config/rs6000/rs6000.cc
41817         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
41818         * doc/tm.texi: Update.
41820 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
41822         * gcc.cc (process_command): Update copyright notice dates.
41823         * gcov-dump.cc (print_version): Ditto.
41824         * gcov.cc (print_version): Ditto.
41825         * gcov-tool.cc (print_version): Ditto.
41826         * gengtype.cc (create_file): Ditto.
41827         * doc/cpp.texi: Bump @copying's copyright year.
41828         * doc/cppinternals.texi: Ditto.
41829         * doc/gcc.texi: Ditto.
41830         * doc/gccint.texi: Ditto.
41831         * doc/gcov.texi: Ditto.
41832         * doc/install.texi: Ditto.
41833         * doc/invoke.texi: Ditto.
41835 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
41836             Uroš Bizjak  <ubizjak@gmail.com>
41838         * config/i386/i386.md (extendditi2): New define_insn.
41839         (define_split): Use DWIH mode iterator to treat new extendditi2
41840         identically to existing extendsidi2_1.
41841         (define_peephole2): Likewise.
41842         (define_peephole2): Likewise.
41843         (define_Split): Likewise.
41846 Copyright (C) 2023 Free Software Foundation, Inc.
41848 Copying and distribution of this file, with or without modification,
41849 are permitted in any medium without royalty provided the copyright
41850 notice and this notice are preserved.