Daily bump.
[official-gcc.git] / gcc / ChangeLog
blob3b4b4b792919e91f2d7b32c0d96bd85e5d73afcc
1 2023-08-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3         * config/riscv/autovec.md (len_fold_extract_last_<mode>): New pattern.
4         * config/riscv/riscv-protos.h (enum insn_type): New enum.
5         (expand_fold_extract_last): New function.
6         * config/riscv/riscv-v.cc (emit_nonvlmax_slide_insn): Ditto.
7         (emit_cpop_insn): Ditto.
8         (emit_nonvlmax_compress_insn): Ditto.
9         (expand_fold_extract_last): Ditto.
10         * config/riscv/vector.md: Fix vcpop.m ratio demand.
12 2023-08-25  Edwin Lu  <ewlu@rivosinc.com>
14         * config/riscv/sync-rvwmo.md: updated types to "multi" or
15                 "atomic" based on number of assembly lines generated
16         * config/riscv/sync-ztso.md: likewise
17         * config/riscv/sync.md: likewise
19 2023-08-25  Jin Ma  <jinma@linux.alibaba.com>
21         * common/config/riscv/riscv-common.cc: Add zfa extension version, which depends on
22         the F extension.
23         * config/riscv/constraints.md (zfli): Constrain the floating point number that the
24         instructions FLI.H/S/D can load.
25         * config/riscv/iterators.md (ceil): New.
26         * config/riscv/riscv-opts.h (MASK_ZFA): New.
27         (TARGET_ZFA): New.
28         * config/riscv/riscv-protos.h (riscv_float_const_rtx_index_for_fli): New.
29         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli): New.
30         (riscv_cannot_force_const_mem): If instruction FLI.H/S/D can be used, memory is
31         not applicable.
32         (riscv_const_insns): Likewise.
33         (riscv_legitimize_const_move): Likewise.
34         (riscv_split_64bit_move_p): If instruction FLI.H/S/D can be used, no split is
35         required.
36         (riscv_split_doubleword_move): Likewise.
37         (riscv_output_move): Output the mov instructions in zfa extension.
38         (riscv_print_operand): Output the floating-point value of the FLI.H/S/D immediate
39         in assembly.
40         (riscv_secondary_memory_needed): Likewise.
41         * config/riscv/riscv.md (fminm<mode>3): New.
42         (fmaxm<mode>3): New.
43         (movsidf2_low_rv32): New.
44         (movsidf2_high_rv32): New.
45         (movdfsisi3_rv32): New.
46         (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_zfa): New.
47         * config/riscv/riscv.opt: New.
49 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
51         * omp-api.h: New.
52         * omp-general.cc (omp_runtime_api_procname): New.
53         (omp_runtime_api_call): Moved here from omp-low.cc, and make
54         non-static.
55         * omp-general.h: Include omp-api.h.
56         * omp-low.cc (omp_runtime_api_call): Delete this copy.
58 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
60         * doc/generic.texi (OpenMP): Document OMP_STRUCTURED_BLOCK.
61         * doc/gimple.texi (GIMPLE instruction set): Add
62         GIMPLE_OMP_STRUCTURED_BLOCK.
63         (GIMPLE_OMP_STRUCTURED_BLOCK): New subsection.
64         * gimple-low.cc (lower_stmt): Error on GIMPLE_OMP_STRUCTURED_BLOCK.
65         * gimple-pretty-print.cc (dump_gimple_omp_block): Handle
66         GIMPLE_OMP_STRUCTURED_BLOCK.
67         (pp_gimple_stmt_1): Likewise.
68         * gimple-walk.cc (walk_gimple_stmt): Likewise.
69         * gimple.cc (gimple_build_omp_structured_block): New.
70         * gimple.def (GIMPLE_OMP_STRUCTURED_BLOCK): New.
71         * gimple.h (gimple_build_omp_structured_block): Declare.
72         (gimple_has_substatements): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
73         (CASE_GIMPLE_OMP): Likewise.
74         * gimplify.cc (is_gimple_stmt): Handle OMP_STRUCTURED_BLOCK.
75         (gimplify_expr): Likewise.
76         * omp-expand.cc (GIMPLE_OMP_STRUCTURED_BLOCK): Error on
77         GIMPLE_OMP_STRUCTURED_BLOCK.
78         * omp-low.cc (scan_omp_1_stmt): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
79         (lower_omp_1): Likewise.
80         (diagnose_sb_1): Likewise.
81         (diagnose_sb_2): Likewise.
82         * tree-inline.cc (remap_gimple_stmt): Handle
83         GIMPLE_OMP_STRUCTURED_BLOCK.
84         (estimate_num_insns): Likewise.
85         * tree-nested.cc (convert_nonlocal_reference_stmt): Likewise.
86         (convert_local_reference_stmt): Likewise.
87         (convert_gimple_call): Likewise.
88         * tree-pretty-print.cc (dump_generic_node): Handle
89         OMP_STRUCTURED_BLOCK.
90         * tree.def (OMP_STRUCTURED_BLOCK): New.
91         * tree.h (OMP_STRUCTURED_BLOCK_BODY): New.
93 2023-08-25  Vineet Gupta  <vineetg@rivosinc.com>
95         * config/riscv/riscv.cc (riscv_rtx_costs): Adjust const_int
96         cost. Add some comments about different constants handling.
98 2023-08-25  Andrew Pinski  <apinski@marvell.com>
100         * match.pd (`a ? one_zero : one_zero`): Move
101         below detection of minmax.
103 2023-08-25  Andrew Pinski  <apinski@marvell.com>
105         * match.pd (`a | C -> C`): New pattern.
107 2023-08-25  Uros Bizjak  <ubizjak@gmail.com>
109         * caller-save.cc (new_saved_hard_reg):
110         Rename TRUE/FALSE to true/false.
111         (setup_save_areas): Ditto.
112         * gcc.cc (set_collect_gcc_options): Ditto.
113         (driver::build_multilib_strings): Ditto.
114         (print_multilib_info): Ditto.
115         * genautomata.cc (gen_cpu_unit): Ditto.
116         (gen_query_cpu_unit): Ditto.
117         (gen_bypass): Ditto.
118         (gen_excl_set): Ditto.
119         (gen_presence_absence_set): Ditto.
120         (gen_presence_set): Ditto.
121         (gen_final_presence_set): Ditto.
122         (gen_absence_set): Ditto.
123         (gen_final_absence_set): Ditto.
124         (gen_automaton): Ditto.
125         (gen_regexp_repeat): Ditto.
126         (gen_regexp_allof): Ditto.
127         (gen_regexp_oneof): Ditto.
128         (gen_regexp_sequence): Ditto.
129         (process_decls): Ditto.
130         (reserv_sets_are_intersected): Ditto.
131         (initiate_excl_sets): Ditto.
132         (form_reserv_sets_list): Ditto.
133         (check_presence_pattern_sets): Ditto.
134         (check_absence_pattern_sets): Ditto.
135         (check_regexp_units_distribution): Ditto.
136         (check_unit_distributions_to_automata): Ditto.
137         (create_ainsns): Ditto.
138         (output_insn_code_cases): Ditto.
139         (output_internal_dead_lock_func): Ditto.
140         (form_important_insn_automata_lists): Ditto.
141         * gengtype-state.cc (read_state_files_list): Ditto.
142         * gengtype.cc (main): Ditto.
143         * gimple-array-bounds.cc (array_bounds_checker::check_array_bounds):
144         Ditto.
145         * gimple.cc (gimple_build_call_from_tree): Ditto.
146         (preprocess_case_label_vec_for_gimple): Ditto.
147         * gimplify.cc (gimplify_call_expr): Ditto.
148         * ordered-hash-map-tests.cc (test_map_of_int_to_strings): Ditto.
150 2023-08-25  Richard Biener  <rguenther@suse.de>
152         PR tree-optimization/111137
153         * tree-vect-data-refs.cc (vect_slp_analyze_load_dependences):
154         Properly handle grouped stores from other SLP instances.
156 2023-08-25  Richard Biener  <rguenther@suse.de>
158         * tree-vect-data-refs.cc (vect_slp_analyze_store_dependences):
159         Split out from vect_slp_analyze_node_dependences, remove
160         dead code.
161         (vect_slp_analyze_load_dependences): Split out from
162         vect_slp_analyze_node_dependences, adjust comments.  Process
163         queued stores before any disambiguation.
164         (vect_slp_analyze_node_dependences): Remove.
165         (vect_slp_analyze_instance_dependence): Adjust.
167 2023-08-25  Aldy Hernandez  <aldyh@redhat.com>
169         * range-op-float.cc (frelop_early_resolve): Rewrite for better NAN
170         handling.
171         (operator_not_equal::fold_range): Adjust for relations.
172         (operator_lt::fold_range): Same.
173         (operator_gt::fold_range): Same.
174         (foperator_unordered_equal::fold_range): Same.
175         (foperator_unordered_lt::fold_range): Same.
176         (foperator_unordered_le::fold_range): Same.
177         (foperator_unordered_gt::fold_range): Same.
178         (foperator_unordered_ge::fold_range): Same.
180 2023-08-25  Richard Biener  <rguenther@suse.de>
182         PR tree-optimization/111136
183         * tree-vect-loop.cc (vect_dissolve_slp_only_groups): For
184         stores force STMT_VINFO_STRIDED_P and also duplicate that
185         to all elements.
187 2023-08-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
189         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_local_properties):
190         Add early continue.
192 2023-08-25  liuhongt  <hongtao.liu@intel.com>
194         * config/i386/sse.md (vec_set<mode>): Removed.
195         (V_128H): Merge into ..
196         (V_128): .. this.
197         (V_256H): Merge into ..
198         (V_256): .. this.
199         (V_512): Add V32HF, V32BF.
200         (*ssse3_palignr<mode>_perm): Adjust mode iterator from V_128H
201         to V_128.
202         (vcond<mode><sseintvecmodelower>): Removed
203         (vcondu<mode><sseintvecmodelower>): Removed.
204         (avx_vbroadcastf128_<mode>): Refator from V_256H to V_256.
206 2023-08-25  Hongyu Wang  <hongyu.wang@intel.com>
208         PR target/111127
209         * config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode>_maskz):
210         Adjust paramter order.
212 2023-08-24  Uros Bizjak  <ubizjak@gmail.com>
214         PR target/94866
215         * config/i386/sse.md (*sse2_movq128_<mode>_1): New insn pattern.
217 2023-08-24  David Malcolm  <dmalcolm@redhat.com>
219         PR analyzer/105899
220         * doc/invoke.texi (Static Analyzer Options): Add "strcat" to the
221         list of functions known to the analyzer.
223 2023-08-24  Richard Biener  <rguenther@suse.de>
225         PR tree-optimization/111123
226         * tree-ssa-ccp.cc (pass_fold_builtins::execute): Do not
227         remove indirect clobbers here ...
228         * tree-outof-ssa.cc (rewrite_out_of_ssa): ... but here.
229         (remove_indirect_clobbers): New function.
231 2023-08-24  Jan Hubicka  <jh@suse.cz>
233         * cfg.h (struct control_flow_graph): New field full_profile.
234         * auto-profile.cc (afdo_annotate_cfg): Set full_profile to true.
235         * cfg.cc (init_flow): Set full_profile to false.
236         * graphite.cc (graphite_transform_loops): Set full_profile to false.
237         * lto-streamer-in.cc (input_cfg): Initialize full_profile flag.
238         * predict.cc (pass_profile::execute): Set full_profile to true.
239         * symtab-thunks.cc (expand_thunk): Set full_profile to true.
240         * tree-cfg.cc (gimple_verify_flow_info): Verify that profile is full
241         if full_profile is set.
242         * tree-inline.cc (initialize_cfun): Initialize full_profile.
243         (expand_call_inline): Combine full_profile.
245 2023-08-24  Richard Biener  <rguenther@suse.de>
247         * tree-vect-slp.cc (vect_build_slp_tree_1): Rename
248         load_p to ldst_p, fix mistakes and rely on
249         STMT_VINFO_DATA_REF.
251 2023-08-24  Jan Hubicka  <jh@suse.cz>
253         * gimple-harden-conditionals.cc (insert_check_and_trap): Set count
254         of newly build trap bb.
256 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
258         * config/riscv/riscv.cc (riscv_preferred_else_value): Remove it since
259         it forbid COND_LEN_FMS/COND_LEN_FNMS STMT fold.
260         (TARGET_PREFERRED_ELSE_VALUE): Ditto.
262 2023-08-24  Robin Dapp  <rdapp.gcc@gmail.com>
264         * common/config/riscv/riscv-common.cc: Add -fsched-pressure.
265         * config/riscv/riscv.cc (riscv_option_override): Set sched
266         pressure algorithm.
268 2023-08-24  Robin Dapp  <rdapp@ventanamicro.com>
270         * config/riscv/riscv.cc (riscv_print_operand): Allow vk operand.
272 2023-08-24  Richard Biener  <rguenther@suse.de>
274         PR tree-optimization/111125
275         * tree-vect-slp.cc (vect_slp_function): Split at novector
276         loop entry, do not push blocks in novector loops.
278 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
280         * doc/extend.texi: Document the C [[__extension__ ...]] construct.
282 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
284         * genmatch.cc (decision_tree::gen): Support
285         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
286         * gimple-match-exports.cc (gimple_simplify): Ditto.
287         (gimple_resimplify6): New function.
288         (gimple_resimplify7): New function.
289         (gimple_match_op::resimplify): Support
290         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
291         (convert_conditional_op): Ditto.
292         (build_call_internal): Ditto.
293         (try_conditional_simplification): Ditto.
294         (gimple_extract): Ditto.
295         * gimple-match.h (gimple_match_cond::gimple_match_cond): Ditto.
296         * internal-fn.cc (CASE): Ditto.
298 2023-08-24  Richard Biener  <rguenther@suse.de>
300         PR tree-optimization/111115
301         * tree-vectorizer.h (vect_slp_child_index_for_operand): New.
302         * tree-vect-data-refs.cc (can_group_stmts_p): Also group
303         .MASK_STORE.
304         * tree-vect-slp.cc (arg3_arg2_map): New.
305         (vect_get_operand_map): Handle IFN_MASK_STORE.
306         (vect_slp_child_index_for_operand): New function.
307         (vect_build_slp_tree_1): Handle statements with no LHS,
308         masked store ifns.
309         (vect_remove_slp_scalar_calls): Likewise.
310         * tree-vect-stmts.cc (vect_check_store_rhs): Lookup the
311         SLP child corresponding to the ifn value index.
312         (vectorizable_store): Likewise for the mask index.  Support
313         masked stores.
314         (vectorizable_load): Lookup the SLP child corresponding to the
315         ifn mask index.
317 2023-08-24  Richard Biener  <rguenther@suse.de>
319         PR tree-optimization/111125
320         * tree-vect-slp.cc (vectorizable_bb_reduc_epilogue): Account
321         for the remain_defs processing.
323 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
325         * config/aarch64/aarch64.cc: Include ssa.h.
326         (aarch64_multiply_add_p): Require the second operand of an
327         Advanced SIMD subtraction to be a multiplication.  Assume that
328         such an operation won't be fused if the second operand is used
329         multiple times and if the first operand is also a multiplication.
331 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
333         * tree-vect-loop.cc (vectorizable_reduction): Apply
334         LEN_FOLD_EXTRACT_LAST.
335         * tree-vect-stmts.cc (vectorizable_condition): Ditto.
337 2023-08-24  Richard Biener  <rguenther@suse.de>
339         PR tree-optimization/111128
340         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
341         Emit external shift operand inline if we promoted it with
342         another pattern stmt.
344 2023-08-24  Pan Li  <pan2.li@intel.com>
346         * config/riscv/autovec.md: Fix typo.
348 2023-08-24  Pan Li  <pan2.li@intel.com>
350         * config/riscv/riscv-vector-builtins-bases.cc
351         (class binop_frm): Removed.
352         (class reverse_binop_frm): Ditto.
353         (class widen_binop_frm): Ditto.
354         (class vfmacc_frm): Ditto.
355         (class vfnmacc_frm): Ditto.
356         (class vfmsac_frm): Ditto.
357         (class vfnmsac_frm): Ditto.
358         (class vfmadd_frm): Ditto.
359         (class vfnmadd_frm): Ditto.
360         (class vfmsub_frm): Ditto.
361         (class vfnmsub_frm): Ditto.
362         (class vfwmacc_frm): Ditto.
363         (class vfwnmacc_frm): Ditto.
364         (class vfwmsac_frm): Ditto.
365         (class vfwnmsac_frm): Ditto.
366         (class unop_frm): Ditto.
367         (class vfrec7_frm): Ditto.
368         (class binop): Add frm_op_type template arg.
369         (class unop): Ditto.
370         (class widen_binop): Ditto.
371         (class widen_binop_fp): Ditto.
372         (class reverse_binop): Ditto.
373         (class vfmacc): Ditto.
374         (class vfnmsac): Ditto.
375         (class vfmadd): Ditto.
376         (class vfnmsub): Ditto.
377         (class vfnmacc): Ditto.
378         (class vfmsac): Ditto.
379         (class vfnmadd): Ditto.
380         (class vfmsub): Ditto.
381         (class vfwmacc): Ditto.
382         (class vfwnmacc): Ditto.
383         (class vfwmsac): Ditto.
384         (class vfwnmsac): Ditto.
385         (class float_misc): Ditto.
387 2023-08-24  Andrew Pinski  <apinski@marvell.com>
389         PR tree-optimization/111109
390         * match.pd (ior(cond,cond), ior(vec_cond,vec_cond)):
391         Add check to make sure cmp and icmp are inverse.
393 2023-08-24  Andrew Pinski  <apinski@marvell.com>
395         PR tree-optimization/95929
396         * match.pd (convert?(-a)): New pattern
397         for 1bit integer types.
399 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
401         Revert:
402         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
404         * common/config/i386/cpuinfo.h (get_available_features):
405         Add avx10_set and version and detect avx10.1.
406         (cpu_indicator_init): Handle avx10.1-512.
407         * common/config/i386/i386-common.cc
408         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
409         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
410         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
411         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
412         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
413         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
414         -mavx10.1-512.
415         * common/config/i386/i386-cpuinfo.h (enum processor_features):
416         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
417         FEATURE_AVX10_512BIT.
418         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
419         AVX10_512BIT, AVX10_1 and AVX10_1_512.
420         * config/i386/constraints.md (Yk): Add AVX10_1.
421         (Yv): Ditto.
422         (k): Ditto.
423         * config/i386/cpuid.h (bit_AVX10): New.
424         (bit_AVX10_256): Ditto.
425         (bit_AVX10_512): Ditto.
426         * config/i386/i386-c.cc (ix86_target_macros_internal):
427         Define AVX10_512BIT and AVX10_1.
428         * config/i386/i386-isa.def
429         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
430         (AVX10_1): Add DEF_PTA(AVX10_1).
431         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
432         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
433         and avx10.1-512.
434         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
435         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
436         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
437         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
438         (ix86_conditional_register_usage): Ditto.
439         (ix86_hard_regno_mode_ok): Ditto.
440         (ix86_rtx_costs): Ditto.
441         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
442         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
443         -mavx10.1-512.
444         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
445         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
446         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
447         and avx10.1-512.
449 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
451         Revert:
452         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
454         * common/config/i386/i386-common.cc
455         (ix86_check_avx10): New function to check isa_flags and
456         isa_flags_explicit to emit warning when AVX10 is enabled
457         by "-m" option.
458         (ix86_check_avx512):  New function to check isa_flags and
459         isa_flags_explicit to emit warning when AVX512 is enabled
460         by "-m" option.
461         (ix86_handle_option): Do not change the flags when warning
462         is emitted.
463         * config/i386/driver-i386.cc (host_detect_local_cpu):
464         Do not append -mno-avx10.1 for -march=native.
466 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
468         Revert:
469         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
471         * common/config/i386/i386-common.cc
472         (ix86_check_avx10_vector_width): New function to check isa_flags
473         to emit a warning when there is a conflict in AVX10 options for
474         vector width.
475         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
476         * config/i386/driver-i386.cc (host_detect_local_cpu):
477         Do not append -mno-avx10-max-512bit for -march=native.
479 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
481         Revert:
482         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
484         * config/i386/avx512vldqintrin.h: Remove target attribute.
485         * config/i386/i386-builtin.def (BDESC):
486         Add OPTION_MASK_ISA2_AVX10_1.
487         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
488         * config/i386/i386-expand.cc
489         (ix86_check_builtin_isa_match): Ditto.
490         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
491         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
492         and avx10_1_or_avx512vl.
493         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
494         (VF1_128_256VLDQ_AVX10_1): Ditto.
495         (VI8_AVX512VLDQ_AVX10_1): Ditto.
496         (<sse>_andnot<mode>3<mask_name>):
497         Add TARGET_AVX10_1 and change isa attr from avx512dq to
498         avx10_1_or_avx512dq.
499         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
500         avx512vl to avx10_1_or_avx512vl.
501         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
502         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
503         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
504         Ditto.
505         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
506         Ditto.
507         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
508         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
509         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
510         Add TARGET_AVX10_1.
511         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
512         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
513         Remove target check.
514         (avx512dq_mul<mode>3<mask_name>): Ditto.
515         (*avx512dq_mul<mode>3<mask_name>): Ditto.
516         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
517         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
518         Remove target check.
519         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
520         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
521         Remove target check.
522         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
523         (mask_avx512vl_condition): Ditto.
524         (mask): Ditto.
526 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
528         Revert:
529         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
531         * config/i386/avx512vldqintrin.h: Remove target attribute.
532         * config/i386/i386-builtin.def (BDESC):
533         Add OPTION_MASK_ISA2_AVX10_1.
534         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
535         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
536         (VI48_AVX512VLDQ_AVX10_1): Ditto.
537         (VF2_AVX512VL): Remove.
538         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
539         Add TARGET_AVX10_1.
540         (*<code><mode>3<mask_name>): Change isa attribute to
541         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
542         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
543         to avx10_1_or_avx512vl.
544         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
545         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
546         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
547         Add TARGET_AVX10_1.
548         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
549         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
550         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
551         Add TARGET_AVX10_1.
552         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
553         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
554         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
555         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
556         (float<floatunssuffix>v4div4sf2<mask_name>):
557         Add TARGET_AVX10_1.
558         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
559         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
560         (float<floatunssuffix>v2div2sf2): Ditto.
561         (float<floatunssuffix>v2div2sf2_mask): Ditto.
562         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
563         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
564         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
565         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
566         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
567         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
568         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
569         Change when constraint is enabled.
571 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
573         Revert:
574         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
576         * config/i386/avx512vldqintrin.h: Remove target attribute.
577         * config/i386/i386-builtin.def (BDESC):
578         Add OPTION_MASK_ISA2_AVX10_1.
579         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
580         (VFH_AVX512VLDQ_AVX10_1): Ditto.
581         (VF1_AVX512VLDQ_AVX10_1): Ditto.
582         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
583         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
584         (vec_pack<floatprefix>_float_<mode>): Change iterator to
585         VI8_AVX512VLDQ_AVX10_1. Remove target check.
586         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
587         VF1_AVX512VLDQ_AVX10_1. Remove target check.
588         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
589         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
590         (avx512vl_vextractf128<mode>): Change iterator to
591         VI48F_256_DQVL_AVX10_1. Remove target check.
592         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
593         (vec_extract_hi_<mode>): Ditto.
594         (avx512vl_vinsert<mode>): Ditto.
595         (vec_set_lo_<mode><mask_name>): Ditto.
596         (vec_set_hi_<mode><mask_name>): Ditto.
597         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
598         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
599         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
600         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
601         * config/i386/subst.md (mask_avx512dq_condition): Add
602         TARGET_AVX10_1.
603         (mask_scalar_merge): Ditto.
605 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
607         Revert:
608         2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
610         PR target/111051
611         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
612         disabled.
614 2023-08-24  Richard Biener  <rguenther@suse.de>
616         PR debug/111080
617         * dwarf2out.cc (prune_unused_types_walk): Handle
618         DW_TAG_restrict_type, DW_TAG_shared_type, DW_TAG_atomic_type,
619         DW_TAG_immutable_type, DW_TAG_coarray_type, DW_TAG_unspecified_type
620         and DW_TAG_dynamic_type as to only output them when referenced.
622 2023-08-24  liuhongt  <hongtao.liu@intel.com>
624         * config/i386/i386.cc (ix86_invalid_conversion): Adjust GCC
625         V13 to GCC 13.1.
627 2023-08-24  liuhongt  <hongtao.liu@intel.com>
629         * common/config/i386/i386-common.cc (processor_names): Add new
630         member graniterapids-s and arrowlake-s.
631         * config/i386/i386-options.cc (processor_alias_table): Update
632         table with PROCESSOR_ARROWLAKE_S and
633         PROCESSOR_GRANITERAPIDS_D.
634         (m_GRANITERAPID_D): New macro.
635         (m_ARROWLAKE_S): Ditto.
636         (m_CORE_AVX512): Add m_GRANITERAPIDS_D.
637         (processor_cost_table): Add icelake_cost for
638         PROCESSOR_GRANITERAPIDS_D and alderlake_cost for
639         PROCESSOR_ARROWLAKE_S.
640         * config/i386/x86-tune.def: Hanlde m_ARROWLAKE_S same as
641         m_ARROWLAKE.
642         * config/i386/i386.h (enum processor_type): Add new member
643         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S.
644         * config/i386/i386-c.cc (ix86_target_macros_internal): Handle
645         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S
647 2023-08-23  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
649         * lra-eliminations.cc (eliminate_regs_in_insn): Use equivalences to
650         to help simplify code further.
652 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
654         * gimple-range-fold.cc (fold_using_range::range_of_phi): Tweak output.
655         * gimple-range-phi.cc (phi_group::phi_group): Remove unused members.
656         Initialize using a range instead of value and edge.
657         (phi_group::calculate_using_modifier): Use initializer value and
658         process for relations after trying for iteration convergence.
659         (phi_group::refine_using_relation): Use initializer range.
660         (phi_group::dump): Rework the dump output.
661         (phi_analyzer::process_phi): Allow multiple constant initilizers.
662         Dump groups immediately as created.
663         (phi_analyzer::dump): Tweak output.
664         * gimple-range-phi.h (phi_group::phi_group): Adjust prototype.
665         (phi_group::initial_value): Delete.
666         (phi_group::refine_using_relation): Adjust prototype.
667         (phi_group::m_initial_value): Delete.
668         (phi_group::m_initial_edge): Delete.
669         (phi_group::m_vr): Use int_range_max.
670         * tree-vrp.cc (execute_ranger_vrp): Don't dump phi groups.
672 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
674         * gimple-range-phi.cc (phi_analyzer::operator[]): Return NULL if
675         no group was created.
676         (phi_analyzer::process_phi): Do not create groups of one phi node.
678 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
680         * target.def (gen_ccmp_first, gen_ccmp_next): Use rtx_code for
681         CODE, CMP_CODE and BIT_CODE arguments.
682         * config/aarch64/aarch64.cc (aarch64_gen_ccmp_first): Likewise.
683         (aarch64_gen_ccmp_next): Likewise.
684         * doc/tm.texi: Regenerated.
686 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
688         * coretypes.h (rtx_code): Add forward declaration.
689         * rtl.h (rtx_code): Make compatible with forward declaration.
691 2023-08-23  Uros Bizjak  <ubizjak@gmail.com>
693         PR target/111010
694         * config/i386/i386.md (*concat<any_or_plus:mode><dwi>3_3):
695         Merge pattern from *concatditi3_3 and *concatsidi3_3 using
696         DWIH mode iterator.  Disable (=&r,m,m) alternative for
697         32-bit targets.
698         (*concat<any_or_plus:mode><dwi>3_3): Disable (=&r,m,m)
699         alternative for 32-bit targets.
701 2023-08-23  Zhangjin Liao  <liaozhangjin@eswincomputing.com>
703         * config/riscv/bitmanip.md (*<bitmanip_optab>disi2_sext): Add a more
704         appropriate type attribute.
706 2023-08-23  Lehua Ding  <lehua.ding@rivai.ai>
708         * config/riscv/autovec-opt.md (*cond_abs<mode>): New combine pattern.
709         (*copysign<mode>_neg): Ditto.
710         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Adjust.
711         (<optab><mode>2): Ditto.
712         (cond_<optab><mode>): New.
713         (cond_len_<optab><mode>): Ditto.
714         * config/riscv/riscv-protos.h (enum insn_type): New.
715         (expand_cond_len_unop): New helper func.
716         * config/riscv/riscv-v.cc (shuffle_merge_patterns): Adjust.
717         (expand_cond_len_unop): New helper func.
719 2023-08-23  Jan Hubicka  <jh@suse.cz>
721         * tree-ssa-loop-ch.cc (enum ch_decision): Fix comment.
722         (should_duplicate_loop_header_p): Fix return value for static exits.
723         (ch_base::copy_headers): Improve handling of ch_possible_zero_cost.
725 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
727         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
728         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
729         and update the final nest accordingly.
731 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
733         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
734         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
735         and update the final nest accordingly.
737 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
739         * tree-vect-stmts.cc (vectorizable_store): Remove vec oprnds,
740         adjust vec result_chain, vec_oprnd with auto_vec, and adjust
741         gvec_oprnds with auto_delete_vec.
743 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
745         * config/riscv/riscv-vsetvl.cc
746         (pass_vsetvl::global_eliminate_vsetvl_insn): Fix potential ICE.
748 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
750         * config/riscv/riscv-vsetvl.cc (ge_sew_ratio_unavailable_p):
751         Fix fuse rule bug.
752         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Ditto.
754 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
756         * config/riscv/vector.md: Add attribute.
758 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
760         * config/riscv/riscv-vsetvl.cc (change_insn): Clang format.
761         (vector_infos_manager::all_same_ratio_p): Ditto.
762         (vector_infos_manager::all_same_avl_p): Ditto.
763         (pass_vsetvl::refine_vsetvls): Ditto.
764         (pass_vsetvl::cleanup_vsetvls): Ditto.
765         (pass_vsetvl::commit_vsetvls): Ditto.
766         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
767         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
768         (pass_vsetvl::compute_probabilities): Ditto.
770 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
772         * config/riscv/t-riscv: Add riscv-vsetvl.def
774 2023-08-22  Vineet Gupta  <vineetg@rivosinc.com>
776         * config/riscv/riscv.opt: Add --param names
777         riscv-autovec-preference and riscv-autovec-lmul
779 2023-08-22  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
781         * config/riscv/t-linux: Add MULTIARCH_DIRNAME.
783 2023-08-22  Tobias Burnus  <tobias@codesourcery.com>
785         * tree-core.h (enum omp_clause_defaultmap_kind): Add
786         OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALL.
787         * gimplify.cc (gimplify_scan_omp_clauses): Handle it.
788         * tree-pretty-print.cc (dump_omp_clause): Likewise.
790 2023-08-22  Jakub Jelinek  <jakub@redhat.com>
792         PR c++/106652
793         * doc/extend.texi (_Float<n>): Drop obsolete sentence that the
794         types aren't supported in C++.
796 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
798         * doc/md.texi: Add LEN_FOLD_EXTRACT_LAST pattern.
799         * internal-fn.cc (fold_len_extract_direct): Ditto.
800         (expand_fold_len_extract_optab_fn): Ditto.
801         (direct_fold_len_extract_optab_supported_p): Ditto.
802         * internal-fn.def (LEN_FOLD_EXTRACT_LAST): Ditto.
803         * optabs.def (OPTAB_D): Ditto.
805 2023-08-22  Richard Biener  <rguenther@suse.de>
807         * tree-vect-stmts.cc (vectorizable_store): Do not bump
808         DR_GROUP_STORE_COUNT here.  Remove early out.
809         (vect_transform_stmt): Only call vectorizable_store on
810         the last element of an interleaving chain.
812 2023-08-22  Richard Biener  <rguenther@suse.de>
814         PR tree-optimization/94864
815         PR tree-optimization/94865
816         PR tree-optimization/93080
817         * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..): New pattern
818         for vector insertion from vector extraction.
820 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
821             Kewen.Lin  <linkw@linux.ibm.com>
823         * tree-vect-loop.cc (vect_verify_loop_lens): Add exists check.
824         (vectorizable_live_operation): Add live vectorization for length loop
825         control.
827 2023-08-22  David Malcolm  <dmalcolm@redhat.com>
829         PR analyzer/105899
830         * doc/invoke.texi: Remove -Wanalyzer-unterminated-string.
832 2023-08-22  Pan Li  <pan2.li@intel.com>
834         * config/riscv/riscv-vector-builtins-bases.cc
835         (vfwredusum_frm_obj): New declaration.
836         (BASE): Ditto.
837         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
838         * config/riscv/riscv-vector-builtins-functions.def
839         (vfwredusum_frm): New intrinsic function def.
841 2023-08-21  David Faust  <david.faust@oracle.com>
843         * config/bpf/bpf.md (neg): Second operand must be a register.
845 2023-08-21  Edwin Lu  <ewlu@rivosinc.com>
847         * config/riscv/bitmanip.md: Added bitmanip type to insns
848         that are missing types.
850 2023-08-21  Jeff Law  <jlaw@ventanamicro.com>
852         * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Avoid extraenous
853         newline.
855 2023-08-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
857         * config/aarch64/falkor-tag-collision-avoidance.cc (dump_insn_list):
858         Fix format specifier.
860 2023-08-21  Aldy Hernandez  <aldyh@redhat.com>
862         * value-range.cc (frange::union_nans): Return false if nothing
863         changed.
864         (range_tests_floats): New test.
866 2023-08-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
868         PR tree-optimization/111048
869         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): Set arg_npatterns
870         correctly.
871         (fold_vec_perm_cst): Remove workaround and again call
872         valid_mask_fold_vec_perm_cst_p for both VLS and VLA vectors.
873         (test_fold_vec_perm_cst::test_nunits_min_4): Add test-case.
875 2023-08-21  Richard Biener  <rguenther@suse.de>
877         PR tree-optimization/111082
878         * tree-vect-slp.cc (vectorize_slp_instance_root_stmt): Only
879         pun operations that can overflow.
881 2023-08-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
883         * lcm.cc (compute_antinout_edge): Export as global use.
884         (compute_earliest): Ditto.
885         (compute_rev_insert_delete): Ditto.
886         * lcm.h (compute_antinout_edge): Ditto.
887         (compute_earliest): Ditto.
889 2023-08-21  Richard Biener  <rguenther@suse.de>
891         PR tree-optimization/111070
892         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check we have
893         an SSA name before checking SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
895 2023-08-21  Andrew Pinski  <apinski@marvell.com>
897         PR tree-optimization/111002
898         * match.pd (view_convert(vec_cond(a,b,c))): New pattern.
900 2023-08-21  liuhongt  <hongtao.liu@intel.com>
902         * common/config/i386/cpuinfo.h (get_intel_cpu): Detect
903         Alderlake-N.
904         * common/config/i386/i386-common.cc (alias_table): Support
905         -march=gracemont as an alias of -march=alderlake.
907 2023-08-20  Uros Bizjak  <ubizjak@gmail.com>
909         * config/i386/i386-expand.cc (ix86_expand_sse_extend): Use ops[1]
910         instead of src in the call to ix86_expand_sse_cmp.
911         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Do not
912         force operands[1] to a register.
913         (<any_extend:insn>v4hiv4si2): Ditto.
914         (<any_extend:insn>v2siv2di2): Ditto.
916 2023-08-20  Andrew Pinski  <apinski@marvell.com>
918         PR tree-optimization/111006
919         PR tree-optimization/110986
920         * match.pd: (op(vec_cond(a,b,c))): Handle convert for op.
922 2023-08-20  Eric Gallager  <egallager@gcc.gnu.org>
924         PR target/90835
925         * Makefile.in: improve error message when /usr/include is
926         missing
928 2023-08-19  Tobias Burnus  <tobias@codesourcery.com>
930         PR middle-end/111017
931         * omp-expand.cc (expand_omp_for_init_vars): Pass after=true
932         to expand_omp_build_cond for 'factor != 0' condition, resulting
933         in pre-r12-5295-g47de0b56ee455e code for the gimple insert.
935 2023-08-19  Guo Jie  <guojie@loongson.cn>
936             Lulu Cheng  <chenglulu@loongson.cn>
938         * config/loongarch/t-loongarch: Add loongarch-driver.h into
939         TM_H. Add loongarch-def.h and loongarch-tune.h into
940         OPTIONS_H_EXTRA.
942 2023-08-18  Uros Bizjak  <ubizjak@gmail.com>
944         PR target/111023
945         * config/i386/i386-expand.cc (ix86_split_mmx_punpck):
946         Also handle V2QImode.
947         (ix86_expand_sse_extend): New function.
948         * config/i386/i386-protos.h (ix86_expand_sse_extend): New prototype.
949         * config/i386/mmx.md (<any_extend:insn>v4qiv4hi2): Enable for
950         TARGET_SSE2.  Expand through ix86_expand_sse_extend for !TARGET_SSE4_1.
951         (<any_extend:insn>v2hiv2si2): Ditto.
952         (<any_extend:insn>v2qiv2hi2): Ditto.
953         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Ditto.
954         (<any_extend:insn>v4hiv4si2): Ditto.
955         (<any_extend:insn>v2siv2di2): Ditto.
957 2023-08-18  Aldy Hernandez  <aldyh@redhat.com>
959         PR ipa/110753
960         * value-range.cc (irange::union_bitmask): Return FALSE if updated
961         bitmask is semantically equivalent to the original mask.
962         (irange::intersect_bitmask): Same.
963         (irange::get_bitmask): Add comment.
965 2023-08-18  Richard Biener  <rguenther@suse.de>
967         PR tree-optimization/111019
968         * tree-ssa-loop-im.cc (gather_mem_refs_stmt): When canonicalizing
969         also scrap base and offset in case the ref is indirect.
971 2023-08-18  Jose E. Marchesi  <jose.marchesi@oracle.com>
973         * config/bpf/bpf.opt (mframe-limit): Set default to 32767.
975 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
977         PR bootstrap/111021
978         * Makefile.in (TM_P_H): Add $(TREE_H) as dependence.
980 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
982         * tree-vect-stmts.cc (vect_build_scatter_store_calls): New, factor
983         out from ...
984         (vectorizable_store): ... here.
986 2023-08-18  Richard Biener  <rguenther@suse.de>
988         PR tree-optimization/111048
989         * fold-const.cc (fold_vec_perm_cst): Check for non-VLA
990         vectors first.
992 2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
994         PR target/111051
995         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
996         disabled.
998 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
1000         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
1001         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
1002         and update the final nest accordingly.
1004 2023-08-18  Andrew Pinski  <apinski@marvell.com>
1006         * doc/md.texi (Standard patterns): Document cond_neg, cond_one_cmpl,
1007         cond_len_neg and cond_len_one_cmpl.
1009 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
1011         * config/riscv/iterators.md (TARGET_HARD_FLOAT || TARGET_ZFINX): New.
1012         * config/riscv/pic.md (*local_pic_load<ANYF:mode>): Change ANYF.
1013         (*local_pic_load<ANYLSF:mode>): To ANYLSF.
1014         (*local_pic_load_32d<ANYF:mode>): Ditto.
1015         (*local_pic_load_32d<ANYLSF:mode>): Ditto.
1016         (*local_pic_store<ANYF:mode>): Ditto.
1017         (*local_pic_store<ANYLSF:mode>): Ditto.
1018         (*local_pic_store_32d<ANYF:mode>): Ditto.
1019         (*local_pic_store_32d<ANYLSF:mode>): Ditto.
1021 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
1022             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1024         * config/riscv/predicates.md (vector_const_0_operand): New.
1025         * config/riscv/vector.md (*pred_broadcast<mode>_zero): Ditto.
1027 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
1029         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion):
1030         Forbidden.
1032 2023-08-17  Andrew MacLeod  <amacleod@redhat.com>
1034         PR tree-optimization/111009
1035         * range-op.cc (operator_addr_expr::op1_range): Be more restrictive.
1037 2023-08-17  Vladimir N. Makarov  <vmakarov@redhat.com>
1039         * lra-spills.cc (assign_stack_slot_num_and_sort_pseudos): Moving
1040         slots_num initialization from here ...
1041         (lra_spill): ... to here before the 1st call of
1042         assign_stack_slot_num_and_sort_pseudos.  Add the 2nd call after
1043         fp->sp elimination.
1045 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
1047         PR c/106537
1048         * doc/invoke.texi (Option Summary): Mention
1049         -Wcompare-distinct-pointer-types under `Warning Options'.
1050         (Warning Options): Document -Wcompare-distinct-pointer-types.
1052 2023-08-17  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1054         * recog.cc (memory_address_addr_space_p): Mark possibly unused
1055         argument as unused.
1057 2023-08-17  Richard Biener  <rguenther@suse.de>
1059         PR tree-optimization/111039
1060         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for
1061         SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
1063 2023-08-17  Alex Coplan  <alex.coplan@arm.com>
1065         * doc/rtl.texi: Fix up sample code for RTL-SSA insn changes.
1067 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
1069         PR target/111046
1070         * config/bpf/bpf.cc (bpf_attribute_table): Add entry for the
1071         `naked' function attribute.
1072         (bpf_warn_func_return): New function.
1073         (TARGET_WARN_FUNC_RETURN): Define.
1074         (bpf_expand_prologue): Add preventive comment.
1075         (bpf_expand_epilogue): Likewise.
1076         * doc/extend.texi (BPF Function Attributes): Document the `naked'
1077         function attribute.
1079 2023-08-17  Richard Biener  <rguenther@suse.de>
1081         * tree-vect-slp.cc (vect_slp_check_for_roots): Use
1082         !needs_fold_left_reduction_p to decide whether we can
1083         handle the reduction with association.
1084         (vectorize_slp_instance_root_stmt): For TYPE_OVERFLOW_UNDEFINED
1085         reductions perform all arithmetic in an unsigned type.
1087 2023-08-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1089         * configure.ac (gcc_cv_ld64_version): Allow for dyld in ld -v
1090         output.
1091         * configure: Regenerate.
1093 2023-08-17  Pan Li  <pan2.li@intel.com>
1095         * config/riscv/riscv-vector-builtins-bases.cc
1096         (widen_freducop): Add frm_opt_type template arg.
1097         (vfwredosum_frm_obj): New declaration.
1098         (BASE): Ditto.
1099         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1100         * config/riscv/riscv-vector-builtins-functions.def
1101         (vfwredosum_frm): New intrinsic function def.
1103 2023-08-17  Pan Li  <pan2.li@intel.com>
1105         * config/riscv/riscv-vector-builtins-bases.cc
1106         (vfredosum_frm_obj): New declaration.
1107         (BASE): Ditto.
1108         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1109         * config/riscv/riscv-vector-builtins-functions.def
1110         (vfredosum_frm): New intrinsic function def.
1112 2023-08-17  Pan Li  <pan2.li@intel.com>
1114         * config/riscv/riscv-vector-builtins-bases.cc
1115         (class freducop): Add frm_op_type template arg.
1116         (vfredusum_frm_obj): New declaration.
1117         (BASE): Ditto.
1118         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1119         * config/riscv/riscv-vector-builtins-functions.def
1120         (vfredusum_frm): New intrinsic function def.
1121         * config/riscv/riscv-vector-builtins-shapes.cc
1122         (struct reduc_alu_frm_def): New class for frm shape.
1123         (SHAPE): New declaration.
1124         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
1126 2023-08-17  Pan Li  <pan2.li@intel.com>
1128         * config/riscv/riscv-vector-builtins-bases.cc
1129         (class vfncvt_f): Add frm_op_type template arg.
1130         (vfncvt_f_frm_obj): New declaration.
1131         (BASE): Ditto.
1132         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1133         * config/riscv/riscv-vector-builtins-functions.def
1134         (vfncvt_f_frm): New intrinsic function def.
1136 2023-08-17  Pan Li  <pan2.li@intel.com>
1138         * config/riscv/riscv-vector-builtins-bases.cc
1139         (vfncvt_xu_frm_obj): New declaration.
1140         (BASE): Ditto.
1141         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1142         * config/riscv/riscv-vector-builtins-functions.def
1143         (vfncvt_xu_frm): New intrinsic function def.
1145 2023-08-17  Pan Li  <pan2.li@intel.com>
1147         * config/riscv/riscv-vector-builtins-bases.cc
1148         (class vfncvt_x): Add frm_op_type template arg.
1149         (BASE): New declaration.
1150         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1151         * config/riscv/riscv-vector-builtins-functions.def
1152         (vfncvt_x_frm): New intrinsic function def.
1153         * config/riscv/riscv-vector-builtins-shapes.cc
1154         (struct narrow_alu_frm_def): New shape function for frm.
1155         (SHAPE): New declaration.
1156         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
1158 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
1160         * config/i386/avx512vldqintrin.h: Remove target attribute.
1161         * config/i386/i386-builtin.def (BDESC):
1162         Add OPTION_MASK_ISA2_AVX10_1.
1163         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
1164         (VFH_AVX512VLDQ_AVX10_1): Ditto.
1165         (VF1_AVX512VLDQ_AVX10_1): Ditto.
1166         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
1167         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
1168         (vec_pack<floatprefix>_float_<mode>): Change iterator to
1169         VI8_AVX512VLDQ_AVX10_1. Remove target check.
1170         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
1171         VF1_AVX512VLDQ_AVX10_1. Remove target check.
1172         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
1173         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
1174         (avx512vl_vextractf128<mode>): Change iterator to
1175         VI48F_256_DQVL_AVX10_1. Remove target check.
1176         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
1177         (vec_extract_hi_<mode>): Ditto.
1178         (avx512vl_vinsert<mode>): Ditto.
1179         (vec_set_lo_<mode><mask_name>): Ditto.
1180         (vec_set_hi_<mode><mask_name>): Ditto.
1181         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
1182         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
1183         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
1184         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
1185         * config/i386/subst.md (mask_avx512dq_condition): Add
1186         TARGET_AVX10_1.
1187         (mask_scalar_merge): Ditto.
1189 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
1191         * config/i386/avx512vldqintrin.h: Remove target attribute.
1192         * config/i386/i386-builtin.def (BDESC):
1193         Add OPTION_MASK_ISA2_AVX10_1.
1194         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
1195         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
1196         (VI48_AVX512VLDQ_AVX10_1): Ditto.
1197         (VF2_AVX512VL): Remove.
1198         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
1199         Add TARGET_AVX10_1.
1200         (*<code><mode>3<mask_name>): Change isa attribute to
1201         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
1202         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
1203         to avx10_1_or_avx512vl.
1204         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
1205         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
1206         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
1207         Add TARGET_AVX10_1.
1208         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
1209         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
1210         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
1211         Add TARGET_AVX10_1.
1212         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
1213         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
1214         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
1215         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
1216         (float<floatunssuffix>v4div4sf2<mask_name>):
1217         Add TARGET_AVX10_1.
1218         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
1219         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
1220         (float<floatunssuffix>v2div2sf2): Ditto.
1221         (float<floatunssuffix>v2div2sf2_mask): Ditto.
1222         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
1223         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
1224         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
1225         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
1226         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
1227         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
1228         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
1229         Change when constraint is enabled.
1231 2023-08-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1233         PR target/111037
1234         * config/riscv/riscv-vsetvl.cc (float_insn_valid_sew_p): New function.
1235         (second_sew_less_than_first_sew_p): Fix bug.
1236         (first_sew_less_than_second_sew_p): Ditto.
1238 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
1240         * config/i386/avx512vldqintrin.h: Remove target attribute.
1241         * config/i386/i386-builtin.def (BDESC):
1242         Add OPTION_MASK_ISA2_AVX10_1.
1243         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
1244         * config/i386/i386-expand.cc
1245         (ix86_check_builtin_isa_match): Ditto.
1246         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
1247         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
1248         and avx10_1_or_avx512vl.
1249         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
1250         (VF1_128_256VLDQ_AVX10_1): Ditto.
1251         (VI8_AVX512VLDQ_AVX10_1): Ditto.
1252         (<sse>_andnot<mode>3<mask_name>):
1253         Add TARGET_AVX10_1 and change isa attr from avx512dq to
1254         avx10_1_or_avx512dq.
1255         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
1256         avx512vl to avx10_1_or_avx512vl.
1257         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
1258         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
1259         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
1260         Ditto.
1261         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
1262         Ditto.
1263         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
1264         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
1265         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
1266         Add TARGET_AVX10_1.
1267         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
1268         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
1269         Remove target check.
1270         (avx512dq_mul<mode>3<mask_name>): Ditto.
1271         (*avx512dq_mul<mode>3<mask_name>): Ditto.
1272         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
1273         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
1274         Remove target check.
1275         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
1276         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
1277         Remove target check.
1278         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
1279         (mask_avx512vl_condition): Ditto.
1280         (mask): Ditto.
1282 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
1284         * common/config/i386/i386-common.cc
1285         (ix86_check_avx10_vector_width): New function to check isa_flags
1286         to emit a warning when there is a conflict in AVX10 options for
1287         vector width.
1288         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
1289         * config/i386/driver-i386.cc (host_detect_local_cpu):
1290         Do not append -mno-avx10-max-512bit for -march=native.
1292 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
1294         * common/config/i386/i386-common.cc
1295         (ix86_check_avx10): New function to check isa_flags and
1296         isa_flags_explicit to emit warning when AVX10 is enabled
1297         by "-m" option.
1298         (ix86_check_avx512):  New function to check isa_flags and
1299         isa_flags_explicit to emit warning when AVX512 is enabled
1300         by "-m" option.
1301         (ix86_handle_option): Do not change the flags when warning
1302         is emitted.
1303         * config/i386/driver-i386.cc (host_detect_local_cpu):
1304         Do not append -mno-avx10.1 for -march=native.
1306 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
1308         * common/config/i386/cpuinfo.h (get_available_features):
1309         Add avx10_set and version and detect avx10.1.
1310         (cpu_indicator_init): Handle avx10.1-512.
1311         * common/config/i386/i386-common.cc
1312         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
1313         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
1314         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
1315         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
1316         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
1317         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
1318         -mavx10.1-512.
1319         * common/config/i386/i386-cpuinfo.h (enum processor_features):
1320         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
1321         FEATURE_AVX10_512BIT.
1322         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
1323         AVX10_512BIT, AVX10_1 and AVX10_1_512.
1324         * config/i386/constraints.md (Yk): Add AVX10_1.
1325         (Yv): Ditto.
1326         (k): Ditto.
1327         * config/i386/cpuid.h (bit_AVX10): New.
1328         (bit_AVX10_256): Ditto.
1329         (bit_AVX10_512): Ditto.
1330         * config/i386/i386-c.cc (ix86_target_macros_internal):
1331         Define AVX10_512BIT and AVX10_1.
1332         * config/i386/i386-isa.def
1333         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
1334         (AVX10_1): Add DEF_PTA(AVX10_1).
1335         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
1336         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
1337         and avx10.1-512.
1338         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
1339         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
1340         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
1341         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
1342         (ix86_conditional_register_usage): Ditto.
1343         (ix86_hard_regno_mode_ok): Ditto.
1344         (ix86_rtx_costs): Ditto.
1345         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
1346         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
1347         -mavx10.1-512.
1348         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
1349         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
1350         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
1351         and avx10.1-512.
1353 2023-08-17  Sergei Trofimovich  <siarheit@google.com>
1355         * flag-types.h (vrp_mode): Remove unused.
1357 2023-08-17  Yanzhang Wang  <yanzhang.wang@intel.com>
1359         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Use
1360         CONSTM1_RTX.
1362 2023-08-17  Andrew Pinski  <apinski@marvell.com>
1364         * internal-fn.def (COND_NOT): New internal function.
1365         * match.pd (UNCOND_UNARY, COND_UNARY): Add bit_not/not
1366         to the lists.
1367         (`vec (a ? -1 : 0) ^ b`): New pattern to convert
1368         into conditional not.
1369         * optabs.def (cond_one_cmpl): New optab.
1370         (cond_len_one_cmpl): Likewise.
1372 2023-08-16  Surya Kumari Jangala  <jskumari@linux.ibm.com>
1374         PR rtl-optimization/110254
1375         * ira-color.cc (improve_allocation): Update array
1376         allocated_hard_reg_p.
1378 2023-08-16  Vladimir N. Makarov  <vmakarov@redhat.com>
1380         * lra-int.h (lra_update_fp2sp_elimination): Change the prototype.
1381         * lra-eliminations.cc (spill_pseudos): Record spilled pseudos.
1382         (lra_update_fp2sp_elimination): Ditto.
1383         (update_reg_eliminate): Adjust spill_pseudos call.
1384         * lra-spills.cc (lra_spill): Assign stack slots to pseudos spilled
1385         in lra_update_fp2sp_elimination.
1387 2023-08-16  Richard Ball  <richard.ball@arm.com>
1389         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A720 CPU.
1390         * config/aarch64/aarch64-tune.md: Regenerate.
1391         * doc/invoke.texi: Document Cortex-A720 CPU.
1393 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
1395         * config/riscv/autovec.md (<u>avg<v_double_trunc>3_floor):
1396         Implement expander.
1397         (<u>avg<v_double_trunc>3_ceil): Ditto.
1398         * config/riscv/vector-iterators.md (ashiftrt): New iterator.
1399         (ASHIFTRT): Ditto.
1401 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
1403         * internal-fn.cc (vec_extract_direct): Change type argument
1404         numbers.
1405         (expand_vec_extract_optab_fn): Call convert_optab_fn.
1406         (direct_vec_extract_optab_supported_p): Use
1407         convert_optab_supported_p.
1409 2023-08-16  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1410             Richard Sandiford  <richard.sandiford@arm.com>
1412         * fold-const.cc (INCLUDE_ALGORITHM): Add Include.
1413         (valid_mask_for_fold_vec_perm_cst_p): New function.
1414         (fold_vec_perm_cst): Likewise.
1415         (fold_vec_perm): Adjust assert and call fold_vec_perm_cst.
1416         (test_fold_vec_perm_cst): New namespace.
1417         (test_fold_vec_perm_cst::build_vec_cst_rand): New function.
1418         (test_fold_vec_perm_cst::validate_res): Likewise.
1419         (test_fold_vec_perm_cst::validate_res_vls): Likewise.
1420         (test_fold_vec_perm_cst::builder_push_elems): Likewise.
1421         (test_fold_vec_perm_cst::test_vnx4si_v4si): Likewise.
1422         (test_fold_vec_perm_cst::test_v4si_vnx4si): Likewise.
1423         (test_fold_vec_perm_cst::test_all_nunits): Likewise.
1424         (test_fold_vec_perm_cst::test_nunits_min_2): Likewise.
1425         (test_fold_vec_perm_cst::test_nunits_min_4): Likewise.
1426         (test_fold_vec_perm_cst::test_nunits_min_8): Likewise.
1427         (test_fold_vec_perm_cst::test_nunits_max_4): Likewise.
1428         (test_fold_vec_perm_cst::is_simple_vla_size): Likewise.
1429         (test_fold_vec_perm_cst::test): Likewise.
1430         (fold_const_cc_tests): Call test_fold_vec_perm_cst::test.
1432 2023-08-16  Pan Li  <pan2.li@intel.com>
1434         * config/riscv/riscv-vector-builtins-bases.cc
1435         (BASE): New declaration.
1436         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1437         * config/riscv/riscv-vector-builtins-functions.def
1438         (vfwcvt_xu_frm): New intrinsic function def.
1440 2023-08-16  Pan Li  <pan2.li@intel.com>
1442         * config/riscv/riscv-vector-builtins-bases.cc: Use explicit argument.
1444 2023-08-16  Pan Li  <pan2.li@intel.com>
1446         * config/riscv/riscv-vector-builtins-bases.cc
1447         (BASE): New declaration.
1448         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1449         * config/riscv/riscv-vector-builtins-functions.def
1450         (vfwcvt_x_frm): New intrinsic function def.
1452 2023-08-16  Pan Li  <pan2.li@intel.com>
1454         * config/riscv/riscv-vector-builtins-bases.cc (BASE): New declaration.
1455         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1456         * config/riscv/riscv-vector-builtins-functions.def
1457         (vfcvt_f_frm): New intrinsic function def.
1459 2023-08-16  Pan Li  <pan2.li@intel.com>
1461         * config/riscv/riscv-vector-builtins-bases.cc
1462         (BASE): New declaration.
1463         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1464         * config/riscv/riscv-vector-builtins-functions.def
1465         (vfcvt_xu_frm): New intrinsic function def..
1467 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
1469         PR target/110429
1470         * config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Skip vector
1471         extract when the element is 7 on BE while 8 on LE for byte or 3 on
1472         BE while 4 on LE for halfword.
1474 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
1476         PR target/106769
1477         * config/rs6000/vsx.md (expand vsx_extract_<mode>): Set it only
1478         for V8HI and V16QI.
1479         (vsx_extract_v4si): New expand for V4SI extraction.
1480         (vsx_extract_v4si_w1): New insn pattern for V4SI extraction on
1481         word 1 from BE order.
1482         (*mfvsrwz): New insn pattern for mfvsrwz.
1483         (*vsx_extract_<mode>_di_p9): Assert that it won't be generated on
1484         word 1 from BE order.
1485         (*vsx_extract_si): Remove.
1486         (*vsx_extract_v4si_w023): New insn and split pattern on word 0, 2,
1487         3 from BE order.
1489 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1491         * config/riscv/autovec.md (vec_mask_len_load_lanes<mode><vsingle>):
1492         New pattern.
1493         (vec_mask_len_store_lanes<mode><vsingle>): Ditto.
1494         * config/riscv/riscv-protos.h (expand_lanes_load_store): New function.
1495         * config/riscv/riscv-v.cc (get_mask_mode): Add tuple mask mode.
1496         (expand_lanes_load_store): New function.
1497         * config/riscv/vector-iterators.md: New iterator.
1499 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1501         * internal-fn.cc (internal_load_fn_p): Apply
1502         MASK_LEN_{LOAD_LANES,STORE_LANES} into vectorizer.
1503         (internal_store_fn_p): Ditto.
1504         (internal_fn_len_index): Ditto.
1505         (internal_fn_mask_index): Ditto.
1506         (internal_fn_stored_value_index): Ditto.
1507         * tree-vect-data-refs.cc (vect_store_lanes_supported): Ditto.
1508         (vect_load_lanes_supported): Ditto.
1509         * tree-vect-loop.cc: Ditto.
1510         * tree-vect-slp.cc (vect_slp_prefer_store_lanes_p): Ditto.
1511         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
1512         (get_group_load_store_type): Ditto.
1513         (vectorizable_store): Ditto.
1514         (vectorizable_load): Ditto.
1515         * tree-vectorizer.h (vect_store_lanes_supported): Ditto.
1516         (vect_load_lanes_supported): Ditto.
1518 2023-08-16  Pan Li  <pan2.li@intel.com>
1520         * config/riscv/riscv-vector-builtins-bases.cc
1521         (enum frm_op_type): New type for frm.
1522         (BASE): New declaration.
1523         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1524         * config/riscv/riscv-vector-builtins-functions.def
1525         (vfcvt_x_frm): New intrinsic function def.
1527 2023-08-16  liuhongt  <hongtao.liu@intel.com>
1529         * config/i386/i386-builtins.cc
1530         (ix86_vectorize_builtin_gather): Adjust for use_gather_8parts.
1531         * config/i386/i386-options.cc (parse_mtune_ctrl_str):
1532         Set/Clear tune features use_{gather,scatter}_{2parts, 4parts,
1533         8parts} for -mtune-crtl={,^}{use_gather,use_scatter}.
1534         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Adjust
1535         for use_scatter_8parts
1536         * config/i386/i386.h (TARGET_USE_GATHER): Rename to ..
1537         (TARGET_USE_GATHER_8PARTS): .. this.
1538         (TARGET_USE_SCATTER): Rename to ..
1539         (TARGET_USE_SCATTER_8PARTS): .. this.
1540         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Rename to
1541         (X86_TUNE_USE_GATHER_8PARTS): .. this.
1542         (X86_TUNE_USE_SCATTER): Rename to
1543         (X86_TUNE_USE_SCATTER_8PARTS): .. this.
1544         * config/i386/i386.opt: Add new options mgather, mscatter.
1546 2023-08-16  liuhongt  <hongtao.liu@intel.com>
1548         * config/i386/i386-options.cc (m_GDS): New macro.
1549         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't
1550         enable for m_GDS.
1551         (X86_TUNE_USE_GATHER_4PARTS): Ditto.
1552         (X86_TUNE_USE_GATHER): Ditto.
1554 2023-08-16  liuhongt  <hongtao.liu@intel.com>
1556         * config/i386/i386.md (movdf_internal): Generate vmovapd instead of
1557         vmovsd when moving DFmode between SSE_REGS.
1558         (movhi_internal): Generate vmovdqa instead of vmovsh when
1559         moving HImode between SSE_REGS.
1560         (mov<mode>_internal): Use vmovaps instead of vmovsh when
1561         moving HF/BFmode between SSE_REGS.
1563 2023-08-15  David Faust  <david.faust@oracle.com>
1565         * config/bpf/bpf.md (extendsisi2): Delete useless define_insn.
1567 2023-08-15  David Faust  <david.faust@oracle.com>
1569         PR target/111029
1570         * config/bpf/bpf.cc (bpf_print_register): Print 'w' registers
1571         for any mode 32-bits or smaller, not just SImode.
1573 2023-08-15  Martin Jambor  <mjambor@suse.cz>
1575         PR ipa/68930
1576         PR ipa/92497
1577         * ipa-prop.h (ipcp_get_aggregate_const): Declare.
1578         * ipa-prop.cc (ipcp_get_aggregate_const): New function.
1579         (ipcp_transform_function): Do not deallocate transformation info.
1580         * tree-ssa-sccvn.cc: Include alloc-pool.h, symbol-summary.h and
1581         ipa-prop.h.
1582         (vn_reference_lookup_2): When hitting default-def vuse, query
1583         IPA-CP transformation info for any known constants.
1585 2023-08-15  Chung-Lin Tang  <cltang@codesourcery.com>
1586             Thomas Schwinge  <thomas@codesourcery.com>
1588         * gimplify.cc (oacc_region_type_name): New function.
1589         (oacc_default_clause): If no 'default' clause appears on this
1590         compute construct, see if one appears on a lexically containing
1591         'data' construct.
1592         (gimplify_scan_omp_clauses): Upon OMP_CLAUSE_DEFAULT case, set
1593         ctx->oacc_default_clause_ctx to current context.
1595 2023-08-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1597         PR target/110989
1598         * config/riscv/predicates.md: Fix predicate.
1600 2023-08-15  Richard Biener  <rguenther@suse.de>
1602         * tree-vect-slp.cc (vect_analyze_slp_instance): Remove
1603         slp_inst_kind_ctor handling.
1604         (vect_analyze_slp): Simplify.
1605         (vect_build_slp_instance): Dump when we analyze a CTOR.
1606         (vect_slp_check_for_constructors): Rename to ...
1607         (vect_slp_check_for_roots): ... this.  Register a
1608         slp_root for CONSTRUCTORs instead of shoving them to
1609         the set of grouped stores.
1610         (vect_slp_analyze_bb_1): Adjust.
1612 2023-08-15  Richard Biener  <rguenther@suse.de>
1614         * tree-vectorizer.h (_slp_instance::remain_stmts): Change
1615         to ...
1616         (_slp_instance::remain_defs): ... this.
1617         (SLP_INSTANCE_REMAIN_STMTS): Rename to ...
1618         (SLP_INSTANCE_REMAIN_DEFS): ... this.
1619         (slp_root::remain): New.
1620         (slp_root::slp_root): Adjust.
1621         * tree-vect-slp.cc (vect_free_slp_instance): Adjust.
1622         (vect_build_slp_instance): Get extra remain parameter,
1623         adjust former handling of a cut off stmt.
1624         (vect_analyze_slp_instance): Adjust.
1625         (vect_analyze_slp): Likewise.
1626         (_bb_vec_info::~_bb_vec_info): Likewise.
1627         (vectorizable_bb_reduc_epilogue): Dump something if we fail.
1628         (vect_slp_check_for_constructors): Handle non-internal
1629         defs as remain defs of a reduction.
1630         (vectorize_slp_instance_root_stmt): Adjust.
1632 2023-08-15  Richard Biener  <rguenther@suse.de>
1634         * tree-ssa-loop-ivcanon.cc: Include tree-vectorizer.h
1635         (canonicalize_loop_induction_variables): Use find_loop_location.
1637 2023-08-15  Hans-Peter Nilsson  <hp@axis.com>
1639         PR bootstrap/111021
1640         * config/cris/cris-protos.h: Revert recent change.
1641         * config/cris/cris.cc (cris_legitimate_address_p): Remove
1642         code_helper unused parameter.
1643         (cris_legitimate_address_p_hook): New wrapper function.
1644         (TARGET_LEGITIMATE_ADDRESS_P): Change to
1645         cris_legitimate_address_p_hook.
1647 2023-08-15  Richard Biener  <rguenther@suse.de>
1649         PR tree-optimization/110963
1650         * tree-ssa-pre.cc (do_pre_regular_insertion): Also insert
1651         a PHI node when the expression is available on all edges
1652         and we insert at most one copy from a constant.
1654 2023-08-15  Richard Biener  <rguenther@suse.de>
1656         PR tree-optimization/110991
1657         * tree-ssa-loop-ivcanon.cc (constant_after_peeling): Handle
1658         VIEW_CONVERT_EXPR <op>, handle more simple IV-like SSA cycles
1659         that will end up constant.
1661 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
1663         PR bootstrap/111021
1664         * Makefile.in (RECOG_H): Add $(TREE_H) as dependence.
1666 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
1668         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
1669         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
1670         and update the final nest accordingly.
1672 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
1674         * tree-vect-stmts.cc (vectorizable_load): Remove some useless checks
1675         on VMAT_INVARIANT.
1677 2023-08-15  Pan Li  <pan2.li@intel.com>
1679         * mode-switching.cc (create_pre_exit): Add SET insn check.
1681 2023-08-15  Pan Li  <pan2.li@intel.com>
1683         * config/riscv/riscv-vector-builtins-bases.cc
1684         (class vfrec7_frm): New class for frm.
1685         (vfrec7_frm_obj): New declaration.
1686         (BASE): Ditto.
1687         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1688         * config/riscv/riscv-vector-builtins-functions.def
1689         (vfrec7_frm): New intrinsic function definition.
1690         * config/riscv/vector-iterators.md
1691         (VFMISC): Remove VFREC7.
1692         (misc_op): Ditto.
1693         (float_insn_type): Ditto.
1694         (VFMISC_FRM): New int iterator.
1695         (misc_frm_op): New op for frm.
1696         (float_frm_insn_type): New type for frm.
1697         * config/riscv/vector.md (@pred_<misc_frm_op><mode>):
1698         New pattern for misc frm.
1700 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
1702         * lra-constraints.cc (curr_insn_transform): Process output stack
1703         pointer reloads before emitting reload insns.
1705 2023-08-14  benjamin priour  <vultkayn@gcc.gnu.org>
1707         PR analyzer/110543
1708         * doc/invoke.texi: Add documentation of
1709         fanalyzer-show-events-in-system-headers
1711 2023-08-14  Jan Hubicka  <jh@suse.cz>
1713         PR gcov-profile/110988
1714         * tree-cfg.cc (fold_loop_internal_call): Avoid division by zero.
1716 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
1718         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
1719         Enable compressed builtins when ZC* extensions enabled.
1720         * config/riscv/riscv-shorten-memrefs.cc:
1721         Enable shorten_memrefs pass when ZC* extensions enabled.
1722         * config/riscv/riscv.cc (riscv_compressed_reg_p):
1723         Enable compressible registers when ZC* extensions enabled.
1724         (riscv_rtx_costs): Allow adjusting rtx costs when ZC* extensions enabled.
1725         (riscv_address_cost): Allow adjusting address cost when ZC* extensions enabled.
1726         (riscv_first_stack_step): Allow compression of the register saves
1727         without adding extra instructions.
1728         * config/riscv/riscv.h (FUNCTION_BOUNDARY): Adjusts function boundary
1729         to 16 bits when ZC* extensions enabled.
1731 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
1733         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): New extensions.
1734         * config/riscv/riscv-opts.h (MASK_ZCA): New mask.
1735         (MASK_ZCB): Ditto.
1736         (MASK_ZCE): Ditto.
1737         (MASK_ZCF): Ditto.
1738         (MASK_ZCD): Ditto.
1739         (MASK_ZCMP): Ditto.
1740         (MASK_ZCMT): Ditto.
1741         (TARGET_ZCA): New target.
1742         (TARGET_ZCB): Ditto.
1743         (TARGET_ZCE): Ditto.
1744         (TARGET_ZCF): Ditto.
1745         (TARGET_ZCD): Ditto.
1746         (TARGET_ZCMP): Ditto.
1747         (TARGET_ZCMT): Ditto.
1748         * config/riscv/riscv.opt: New target variable.
1750 2023-08-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1752         Revert:
1753         2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
1755         * genrecog.cc (print_nonbool_test): Fix type error of
1756         switch (SUBREG_BYTE (op))'.
1758 2023-08-14  Richard Biener  <rguenther@suse.de>
1760         * tree-cfg.cc (print_loop_info): Dump to 'file', not 'dump_file'.
1762 2023-08-14  Pan Li  <pan2.li@intel.com>
1764         * config/riscv/riscv-vector-builtins-bases.cc
1765         (class unop_frm): New class for frm.
1766         (vfsqrt_frm_obj): New declaration.
1767         (BASE): Ditto.
1768         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1769         * config/riscv/riscv-vector-builtins-functions.def
1770         (vfsqrt_frm): New intrinsic function definition.
1772 2023-08-14  Pan Li  <pan2.li@intel.com>
1774         * config/riscv/riscv-vector-builtins-bases.cc
1775         (class vfwnmsac_frm): New class for frm.
1776         (vfwnmsac_frm_obj): New declaration.
1777         (BASE): Ditto.
1778         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1779         * config/riscv/riscv-vector-builtins-functions.def
1780         (vfwnmsac_frm): New intrinsic function definition.
1782 2023-08-14  Pan Li  <pan2.li@intel.com>
1784         * config/riscv/riscv-vector-builtins-bases.cc
1785         (class vfwmsac_frm): New class for frm.
1786         (vfwmsac_frm_obj): New declaration.
1787         (BASE): Ditto.
1788         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1789         * config/riscv/riscv-vector-builtins-functions.def
1790         (vfwmsac_frm): New intrinsic function definition.
1792 2023-08-14  Pan Li  <pan2.li@intel.com>
1794         * config/riscv/riscv-vector-builtins-bases.cc
1795         (class vfwnmacc_frm): New class for frm.
1796         (vfwnmacc_frm_obj): New declaration.
1797         (BASE): Ditto.
1798         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1799         * config/riscv/riscv-vector-builtins-functions.def
1800         (vfwnmacc_frm): New intrinsic function definition.
1802 2023-08-14  Cui, Lili  <lili.cui@intel.com>
1804         * common/config/i386/cpuinfo.h (get_intel_cpu): Add model value 0xba
1805         to Raptorlake.
1807 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
1809         * config/mmix/predicates.md (mmix_address_operand): Use
1810         lra_in_progress, not reload_in_progress.
1812 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
1814         * config/mmix/mmix.cc: Re-enable LRA.
1816 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
1818         * config/mmix/predicates.md (frame_pointer_operand): Handle FP+offset
1819         when lra_in_progress.
1821 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
1823         * config/mmix/mmix.cc: Disable LRA for MMIX.
1825 2023-08-14  Pan Li  <pan2.li@intel.com>
1827         * config/riscv/riscv-vector-builtins-bases.cc
1828         (class vfwmacc_frm): New class for vfwmacc frm.
1829         (vfwmacc_frm_obj): New declaration.
1830         (BASE): Ditto.
1831         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1832         * config/riscv/riscv-vector-builtins-functions.def
1833         (vfwmacc_frm): Function definition for vfwmacc.
1834         * config/riscv/riscv-vector-builtins.cc
1835         (function_expander::use_widen_ternop_insn): Add frm support.
1837 2023-08-14  Pan Li  <pan2.li@intel.com>
1839         * config/riscv/riscv-vector-builtins-bases.cc
1840         (class vfnmsub_frm): New class for vfnmsub frm.
1841         (vfnmsub_frm): New declaration.
1842         (BASE): Ditto.
1843         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1844         * config/riscv/riscv-vector-builtins-functions.def
1845         (vfnmsub_frm): New function declaration.
1847 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
1849         * lra-constraints.cc (curr_insn_transform): Set done_p up and
1850         check it on true after processing output stack pointer reload.
1852 2023-08-12  Jakub Jelinek  <jakub@redhat.com>
1854         * Makefile.in (USER_H): Add stdckdint.h.
1855         * ginclude/stdckdint.h: New file.
1857 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1859         PR target/110994
1860         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Add TARGET_VETOR.
1862 2023-08-12  Patrick Palka  <ppalka@redhat.com>
1864         * tree-pretty-print.cc (dump_generic_node) <case TREE_VEC>:
1865         Delimit output with braces.
1867 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1869         PR target/110985
1870         * config/riscv/riscv-v.cc (expand_vec_series): Refactor the expander.
1872 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1874         * config/riscv/autovec.md: Add VLS CONST_VECTOR.
1875         * config/riscv/riscv.cc (riscv_const_insns): Ditto.
1876         * config/riscv/vector.md: Ditto.
1878 2023-08-11  David Malcolm  <dmalcolm@redhat.com>
1880         PR analyzer/105899
1881         * doc/analyzer.texi (__analyzer_get_strlen): New.
1882         * doc/invoke.texi: Add -Wanalyzer-unterminated-string.
1884 2023-08-11  Jeff Law  <jlaw@ventanamicro.com>
1886         * config/rx/rx.md (subdi3): Fix test for borrow.
1888 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1890         PR middle-end/110989
1891         * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype.
1892         (vectorizable_load): Ditto.
1894 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
1896         * config/bpf/bpf.md (allocate_stack): Define.
1897         * config/bpf/bpf.h (FIRST_PSEUDO_REGISTER): Make room for fake
1898         stack pointer register.
1899         (FIXED_REGISTERS): Adjust accordingly.
1900         (CALL_USED_REGISTERS): Likewise.
1901         (REG_CLASS_CONTENTS): Likewise.
1902         (REGISTER_NAMES): Likewise.
1903         * config/bpf/bpf.cc (bpf_compute_frame_layout): Do not reserve
1904         space for callee-saved registers.
1905         (bpf_expand_prologue): Do not save callee-saved registers in xbpf.
1906         (bpf_expand_epilogue): Do not restore callee-saved registers in
1907         xbpf.
1909 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
1911         * config/bpf/bpf.cc (bpf_function_arg_advance): Do not complain
1912         about too many arguments if function is always inlined.
1914 2023-08-11  Patrick Palka  <ppalka@redhat.com>
1916         * tree-pretty-print.cc (dump_generic_node) <case COMPONENT_REF>:
1917         Don't call component_ref_field_offset if the RHS isn't a decl.
1919 2023-08-11  John David Anglin  <danglin@gcc.gnu.org>
1921         PR bootstrap/110646
1922         * gensupport.cc(class conlist): Use strtol instead of std::stoi.
1924 2023-08-11  Vladimir N. Makarov  <vmakarov@redhat.com>
1926         * lra-constraints.cc (goal_alt_out_sp_reload_p): New flag.
1927         (process_alt_operands): Set the flag.
1928         (curr_insn_transform): Modify stack pointer offsets if output
1929         stack pointer reload is generated.
1931 2023-08-11  Joseph Myers  <joseph@codesourcery.com>
1933         * configure: Regenerate.
1935 2023-08-11  Richard Biener  <rguenther@suse.de>
1937         PR tree-optimization/110979
1938         * tree-vect-loop.cc (vectorizable_reduction): For
1939         FOLD_LEFT_REDUCTION without target support make sure
1940         we don't need to honor signed zeros and sign dependent rounding.
1942 2023-08-11  Richard Biener  <rguenther@suse.de>
1944         * tree-vect-slp.cc (vect_slp_region): Provide opt-info for all SLP
1945         subgraph entries.  Dump the used vector size based on the
1946         SLP subgraph entry root vector type.
1948 2023-08-11  Pan Li  <pan2.li@intel.com>
1950         * config/riscv/riscv-vector-builtins-bases.cc
1951         (class vfmsub_frm): New class for vfmsub frm.
1952         (vfmsub_frm): New declaration.
1953         (BASE): Ditto.
1954         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1955         * config/riscv/riscv-vector-builtins-functions.def
1956         (vfmsub_frm): New function declaration.
1958 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1960         * doc/md.texi: Add vec_mask_len_{load_lanes,store_lanes} patterns.
1961         * internal-fn.cc (expand_partial_load_optab_fn): Ditto.
1962         (expand_partial_store_optab_fn): Ditto.
1963         * internal-fn.def (MASK_LEN_LOAD_LANES): Ditto.
1964         (MASK_LEN_STORE_LANES): Ditto.
1965         * optabs.def (OPTAB_CD): Ditto.
1967 2023-08-11  Pan Li  <pan2.li@intel.com>
1969         * config/riscv/riscv-vector-builtins-bases.cc
1970         (class vfnmadd_frm): New class for vfnmadd frm.
1971         (vfnmadd_frm): New declaration.
1972         (BASE): Ditto.
1973         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1974         * config/riscv/riscv-vector-builtins-functions.def
1975         (vfnmadd_frm): New function declaration.
1977 2023-08-11  Drew Ross  <drross@redhat.com>
1978             Jakub Jelinek  <jakub@redhat.com>
1980         PR tree-optimization/109938
1981         * match.pd (((x ^ y) & z) | x -> (z & y) | x): New simplification.
1983 2023-08-11  Pan Li  <pan2.li@intel.com>
1985         * config/riscv/riscv-vector-builtins-bases.cc
1986         (class vfmadd_frm): New class for vfmadd frm.
1987         (vfmadd_frm_obj): New declaration.
1988         (BASE): Ditto.
1989         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
1990         * config/riscv/riscv-vector-builtins-functions.def
1991         (vfmadd_frm): New function definition.
1993 2023-08-11  Pan Li  <pan2.li@intel.com>
1995         * config/riscv/riscv-vector-builtins-bases.cc
1996         (class vfnmsac_frm): New class for vfnmsac frm.
1997         (vfnmsac_frm_obj): New declaration.
1998         (BASE): Ditto.
1999         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2000         * config/riscv/riscv-vector-builtins-functions.def
2001         (vfnmsac_frm): New function definition.
2003 2023-08-11  Jakub Jelinek  <jakub@redhat.com>
2005         * doc/extend.texi (Typeof): Document typeof_unqual
2006         and __typeof_unqual__.
2008 2023-08-11  Andrew Pinski  <apinski@marvell.com>
2010         PR tree-optimization/110954
2011         * generic-match-head.cc (bitwise_inverted_equal_p): Add
2012         wascmp argument and set it accordingly.
2013         * gimple-match-head.cc (bitwise_inverted_equal_p): Add
2014         wascmp argument to the macro.
2015         (gimple_bitwise_inverted_equal_p): Add
2016         wascmp argument and set it accordingly.
2017         * match.pd (`a & ~a`, `a ^| ~a`): Update call
2018         to bitwise_inverted_equal_p and handle wascmp case.
2019         (`(~x | y) & x`, `(~x | y) & x`, `a?~t:t`): Update
2020         call to bitwise_inverted_equal_p and check to see
2021         if was !wascmp or if precision was 1.
2023 2023-08-11  Martin Uecker  <uecker@tugraz.at>
2025         PR c/84510
2026         * doc/invoke.texi: Update.
2028 2023-08-11  Pan Li  <pan2.li@intel.com>
2030         * config/riscv/riscv-vector-builtins-bases.cc
2031         (class vfmsac_frm): New class for vfmsac frm.
2032         (vfmsac_frm_obj): New declaration.
2033         (BASE): Ditto.
2034         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2035         * config/riscv/riscv-vector-builtins-functions.def
2036         (vfmsac_frm): New function definition
2038 2023-08-10  Jan Hubicka  <jh@suse.cz>
2040         PR middle-end/110923
2041         * tree-ssa-loop-split.cc (split_loop): Watch for division by zero.
2043 2023-08-10  Patrick O'Neill  <patrick@rivosinc.com>
2045         * common/config/riscv/riscv-common.cc: Add Ztso and mark Ztso as
2046         dependent on 'a' extension.
2047         * config/riscv/riscv-opts.h (MASK_ZTSO): New mask.
2048         (TARGET_ZTSO): New target.
2049         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_acquire): Add
2050         Ztso case.
2051         (riscv_memmodel_needs_amo_release): Add Ztso case.
2052         (riscv_print_operand): Add Ztso case for LR/SC annotations.
2053         * config/riscv/riscv.md: Import sync-rvwmo.md and sync-ztso.md.
2054         * config/riscv/riscv.opt: Add Ztso target variable.
2055         * config/riscv/sync.md (mem_thread_fence_1): Expand to RVWMO or
2056         Ztso specific insn.
2057         (atomic_load<mode>): Expand to RVWMO or Ztso specific insn.
2058         (atomic_store<mode>): Expand to RVWMO or Ztso specific insn.
2059         * config/riscv/sync-rvwmo.md: New file. Seperate out RVWMO
2060         specific load/store/fence mappings.
2061         * config/riscv/sync-ztso.md: New file. Seperate out Ztso
2062         specific load/store/fence mappings.
2064 2023-08-10  Jan Hubicka  <jh@suse.cz>
2066         * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Special case loops with
2067         0 iteration count.
2069 2023-08-10  Jan Hubicka  <jh@suse.cz>
2071         * tree-ssa-threadupdate.cc (ssa_fix_duplicate_block_edges): Fix profile update.
2073 2023-08-10  Jan Hubicka  <jh@suse.cz>
2075         * profile-count.cc (profile_count::differs_from_p): Fix overflow and
2076         handling of undefined values.
2078 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
2080         PR c/102989
2081         * tree-ssa-phiopt.cc (single_non_singleton_phi_for_edges): Never
2082         return virtual phis and return NULL if there is a virtual phi
2083         where the arguments from E0 and E1 edges aren't equal.
2085 2023-08-10  Richard Biener  <rguenther@suse.de>
2087         * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK,
2088         VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW.
2090 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2092         PR target/110962
2093         * config/riscv/autovec.md (vec_duplicate<mode>): New pattern.
2095 2023-08-10  Pan Li  <pan2.li@intel.com>
2097         * config/riscv/riscv-vector-builtins-bases.cc
2098         (class vfnmacc_frm): New class for vfnmacc.
2099         (vfnmacc_frm_obj): New declaration.
2100         (BASE): Ditto.
2101         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2102         * config/riscv/riscv-vector-builtins-functions.def
2103         (vfnmacc_frm): New function definition.
2105 2023-08-10  Pan Li  <pan2.li@intel.com>
2107         * config/riscv/riscv-vector-builtins-bases.cc
2108         (class vfmacc_frm): New class for vfmacc frm.
2109         (vfmacc_frm_obj): New declaration.
2110         (BASE): Ditto.
2111         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
2112         * config/riscv/riscv-vector-builtins-functions.def
2113         (vfmacc_frm): New function definition.
2115 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2117         PR target/110964
2118         * config/riscv/riscv-v.cc (expand_cond_len_ternop): Add integer ternary.
2120 2023-08-10  Richard Biener  <rguenther@suse.de>
2122         * tree-vectorizer.h (vectorizable_live_operation): Remove
2123         gimple_stmt_iterator * argument.
2124         * tree-vect-loop.cc (vectorizable_live_operation): Likewise.
2125         Adjust plumbing around vect_get_loop_mask.
2126         (vect_analyze_loop_operations): Adjust.
2127         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): Likewise.
2128         (vect_bb_slp_mark_live_stmts): Likewise.
2129         (vect_schedule_slp_node): Likewise.
2130         * tree-vect-stmts.cc (can_vectorize_live_stmts): Likewise.
2131         Remove gimple_stmt_iterator * argument.
2132         (vect_transform_stmt): Adjust.
2134 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2136         * config/riscv/vector-iterators.md: Add missing modes.
2138 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
2140         PR c/102989
2141         * lto-streamer-in.cc (lto_input_tree_1): Assert TYPE_PRECISION
2142         is up to WIDE_INT_MAX_PRECISION rather than MAX_BITSIZE_MODE_ANY_INT.
2144 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
2146         PR c/102989
2147         * expr.cc (expand_expr_real_1) <case MEM_REF>: Add an early return for
2148         EXPAND_WRITE or EXPAND_MEMORY modifiers to avoid testing it multiple
2149         times.
2151 2023-08-10  liuhongt  <hongtao.liu@intel.com>
2153         PR target/110832
2154         * config/i386/mmx.md: (movq_<mode>_to_sse): Also do not
2155         sanitize upper part of V4HFmode register with
2156         -fno-trapping-math.
2157         (<insn>v4hf3): Enable for ix86_partial_vec_fp_math.
2158         (<divv4hf3): Ditto.
2159         (<insn>v2hf3): Ditto.
2160         (divv2hf3): Ditto.
2161         (movd_v2hf_to_sse): Do not sanitize upper part of V2HFmode
2162         register with -fno-trapping-math.
2164 2023-08-10  Pan Li  <pan2.li@intel.com>
2165             Kito Cheng  <kito.cheng@sifive.com>
2167         * config/riscv/riscv-protos.h
2168         (enum floating_point_rounding_mode): Add NONE, DYN_EXIT and DYN_CALL.
2169         (get_frm_mode): New declaration.
2170         * config/riscv/riscv-v.cc (get_frm_mode): New function to get frm mode.
2171         * config/riscv/riscv-vector-builtins.cc
2172         (function_expander::use_ternop_insn): Take care of frm reg.
2173         * config/riscv/riscv.cc (riscv_static_frm_mode_p): Migrate to FRM_XXX.
2174         (riscv_emit_frm_mode_set): Ditto.
2175         (riscv_emit_mode_set): Ditto.
2176         (riscv_frm_adjust_mode_after_call): Ditto.
2177         (riscv_frm_mode_needed): Ditto.
2178         (riscv_frm_mode_after): Ditto.
2179         (riscv_mode_entry): Ditto.
2180         (riscv_mode_exit): Ditto.
2181         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
2182         * config/riscv/vector.md
2183         (rne,rtz,rdn,rup,rmm,dyn,dyn_exit,dyn_call,none): Removed
2184         (symbol_ref): * config/riscv/vector.md: Set frm_mode attr explicitly.
2186 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2188         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix
2189         incorrect anticipate info.
2191 2023-08-09  Tsukasa OI  <research_trasio@irq.a4lg.com>
2193         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
2194         Remove 'Zve32d' from the version list.
2196 2023-08-09  Jin Ma  <jinma@linux.alibaba.com>
2198         * config/riscv/riscv.cc (riscv_sched_variable_issue): New function.
2199         (TARGET_SCHED_VARIABLE_ISSUE): New macro.
2200         Co-authored-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
2201         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
2203 2023-08-09  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
2205         * config/riscv/riscv.cc (riscv_legitimize_address): Handle folding.
2206         (mem_shadd_or_shadd_rtx_p): New function.
2208 2023-08-09  Andrew Pinski  <apinski@marvell.com>
2210         PR tree-optimization/110937
2211         PR tree-optimization/100798
2212         * match.pd (`a ? ~b : b`): Handle this
2213         case.
2215 2023-08-09  Uros Bizjak  <ubizjak@gmail.com>
2217         * config/i386/i386.opt (mpartial-vector-fp-math): Add dot.
2219 2023-08-09  Richard Ball  <richard.ball@arm.com>
2221         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A520 CPU.
2222         * config/aarch64/aarch64-tune.md: Regenerate.
2223         * doc/invoke.texi: Document Cortex-A520 CPU.
2225 2023-08-09  Carl Love  <cel@us.ibm.com>
2227         * config/rs6000/rs6000-builtins.def (vcmpneb, vcmpneh, vcmpnew):
2228         Move definitions to Altivec stanza.
2229         * config/rs6000/altivec.md (vcmpneb, vcmpneh, vcmpnew): New
2230         define_expand.
2232 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2234         PR target/110950
2235         * config/riscv/riscv-v.cc (expand_const_vector): Add NPATTERNS = 1
2236         stepped vector support.
2238 2023-08-09  liuhongt  <hongtao.liu@intel.com>
2240         * common/config/i386/cpuinfo.h (get_available_features):
2241         Rename local variable subleaf_level to max_subleaf_level.
2243 2023-08-09  Richard Biener  <rguenther@suse.de>
2245         PR rtl-optimization/110587
2246         * lra-assigns.cc (find_hard_regno_for_1): Re-order checks.
2248 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
2250         PR tree-optimization/110248
2251         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Check if
2252         the given code is for ifn LEN_{LOAD,STORE}, if yes then make it not
2253         legitimate when outer code is PLUS.
2255 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
2257         PR tree-optimization/110248
2258         * recog.cc (memory_address_addr_space_p): Add one more argument ch of
2259         type code_helper and pass it to targetm.addr_space.legitimate_address_p
2260         instead of ERROR_MARK.
2261         (offsettable_address_addr_space_p): Update one function pointer with
2262         one more argument of type code_helper as its assignees
2263         memory_address_addr_space_p and strict_memory_address_addr_space_p
2264         have been adjusted, and adjust some call sites with ERROR_MARK.
2265         * recog.h (tree.h): New include header file for tree_code ERROR_MARK.
2266         (memory_address_addr_space_p): Adjust with one more unnamed argument
2267         of type code_helper with default ERROR_MARK.
2268         (strict_memory_address_addr_space_p): Likewise.
2269         * reload.cc (strict_memory_address_addr_space_p): Add one unnamed
2270         argument of type code_helper.
2271         * tree-ssa-address.cc (valid_mem_ref_p): Add one more argument ch of
2272         type code_helper and pass it to memory_address_addr_space_p.
2273         * tree-ssa-address.h (valid_mem_ref_p): Adjust the declaration with
2274         one more unnamed argument of type code_helper with default value
2275         ERROR_MARK.
2276         * tree-ssa-loop-ivopts.cc (get_address_cost): Use ERROR_MARK as code
2277         by default, change it with ifn code for USE_PTR_ADDRESS type use, and
2278         pass it to all valid_mem_ref_p calls.
2280 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
2282         PR tree-optimization/110248
2283         * coretypes.h (class code_helper): Add forward declaration.
2284         * doc/tm.texi: Regenerate.
2285         * lra-constraints.cc (valid_address_p): Call target hook
2286         targetm.addr_space.legitimate_address_p with an extra parameter
2287         ERROR_MARK as its prototype changes.
2288         * recog.cc (memory_address_addr_space_p): Likewise.
2289         * reload.cc (strict_memory_address_addr_space_p): Likewise.
2290         * target.def (legitimate_address_p, addr_space.legitimate_address_p):
2291         Extend with one more argument of type code_helper, update the
2292         documentation accordingly.
2293         * targhooks.cc (default_legitimate_address_p): Adjust for the
2294         new code_helper argument.
2295         (default_addr_space_legitimate_address_p): Likewise.
2296         * targhooks.h (default_legitimate_address_p): Likewise.
2297         (default_addr_space_legitimate_address_p): Likewise.
2298         * config/aarch64/aarch64.cc (aarch64_legitimate_address_hook_p): Adjust
2299         with extra unnamed code_helper argument with default ERROR_MARK.
2300         * config/alpha/alpha.cc (alpha_legitimate_address_p): Likewise.
2301         * config/arc/arc.cc (arc_legitimate_address_p): Likewise.
2302         * config/arm/arm-protos.h (arm_legitimate_address_p): Likewise.
2303         (tree.h): New include for tree_code ERROR_MARK.
2304         * config/arm/arm.cc (arm_legitimate_address_p): Adjust with extra
2305         unnamed code_helper argument with default ERROR_MARK.
2306         * config/avr/avr.cc (avr_addr_space_legitimate_address_p): Likewise.
2307         * config/bfin/bfin.cc (bfin_legitimate_address_p): Likewise.
2308         * config/bpf/bpf.cc (bpf_legitimate_address_p): Likewise.
2309         * config/c6x/c6x.cc (c6x_legitimate_address_p): Likewise.
2310         * config/cris/cris-protos.h (cris_legitimate_address_p): Likewise.
2311         (tree.h): New include for tree_code ERROR_MARK.
2312         * config/cris/cris.cc (cris_legitimate_address_p): Adjust with extra
2313         unnamed code_helper argument with default ERROR_MARK.
2314         * config/csky/csky.cc (csky_legitimate_address_p): Likewise.
2315         * config/epiphany/epiphany.cc (epiphany_legitimate_address_p):
2316         Likewise.
2317         * config/frv/frv.cc (frv_legitimate_address_p): Likewise.
2318         * config/ft32/ft32.cc (ft32_addr_space_legitimate_address_p): Likewise.
2319         * config/gcn/gcn.cc (gcn_addr_space_legitimate_address_p): Likewise.
2320         * config/h8300/h8300.cc (h8300_legitimate_address_p): Likewise.
2321         * config/i386/i386.cc (ix86_legitimate_address_p): Likewise.
2322         * config/ia64/ia64.cc (ia64_legitimate_address_p): Likewise.
2323         * config/iq2000/iq2000.cc (iq2000_legitimate_address_p): Likewise.
2324         * config/lm32/lm32.cc (lm32_legitimate_address_p): Likewise.
2325         * config/loongarch/loongarch.cc (loongarch_legitimate_address_p):
2326         Likewise.
2327         * config/m32c/m32c.cc (m32c_legitimate_address_p): Likewise.
2328         (m32c_addr_space_legitimate_address_p): Likewise.
2329         * config/m32r/m32r.cc (m32r_legitimate_address_p): Likewise.
2330         * config/m68k/m68k.cc (m68k_legitimate_address_p): Likewise.
2331         * config/mcore/mcore.cc (mcore_legitimate_address_p): Likewise.
2332         * config/microblaze/microblaze-protos.h (tree.h): New include for
2333         tree_code ERROR_MARK.
2334         (microblaze_legitimate_address_p): Adjust with extra unnamed
2335         code_helper argument with default ERROR_MARK.
2336         * config/microblaze/microblaze.cc (microblaze_legitimate_address_p):
2337         Likewise.
2338         * config/mips/mips.cc (mips_legitimate_address_p): Likewise.
2339         * config/mmix/mmix.cc (mmix_legitimate_address_p): Likewise.
2340         * config/mn10300/mn10300.cc (mn10300_legitimate_address_p): Likewise.
2341         * config/moxie/moxie.cc (moxie_legitimate_address_p): Likewise.
2342         * config/msp430/msp430.cc (msp430_legitimate_address_p): Likewise.
2343         (msp430_addr_space_legitimate_address_p): Adjust with extra code_helper
2344         argument with default ERROR_MARK and adjust the call to function
2345         msp430_legitimate_address_p.
2346         * config/nds32/nds32.cc (nds32_legitimate_address_p): Adjust with extra
2347         unnamed code_helper argument with default ERROR_MARK.
2348         * config/nios2/nios2.cc (nios2_legitimate_address_p): Likewise.
2349         * config/nvptx/nvptx.cc (nvptx_legitimate_address_p): Likewise.
2350         * config/or1k/or1k.cc (or1k_legitimate_address_p): Likewise.
2351         * config/pa/pa.cc (pa_legitimate_address_p): Likewise.
2352         * config/pdp11/pdp11.cc (pdp11_legitimate_address_p): Likewise.
2353         * config/pru/pru.cc (pru_addr_space_legitimate_address_p): Likewise.
2354         * config/riscv/riscv.cc (riscv_legitimate_address_p): Likewise.
2355         * config/rl78/rl78-protos.h (rl78_as_legitimate_address): Likewise.
2356         (tree.h): New include for tree_code ERROR_MARK.
2357         * config/rl78/rl78.cc (rl78_as_legitimate_address): Adjust with
2358         extra unnamed code_helper argument with default ERROR_MARK.
2359         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Likewise.
2360         (rs6000_debug_legitimate_address_p): Adjust with extra code_helper
2361         argument and adjust the call to function rs6000_legitimate_address_p.
2362         * config/rx/rx.cc (rx_is_legitimate_address): Adjust with extra
2363         unnamed code_helper argument with default ERROR_MARK.
2364         * config/s390/s390.cc (s390_legitimate_address_p): Likewise.
2365         * config/sh/sh.cc (sh_legitimate_address_p): Likewise.
2366         * config/sparc/sparc.cc (sparc_legitimate_address_p): Likewise.
2367         * config/v850/v850.cc (v850_legitimate_address_p): Likewise.
2368         * config/vax/vax.cc (vax_legitimate_address_p): Likewise.
2369         * config/visium/visium.cc (visium_legitimate_address_p): Likewise.
2370         * config/xtensa/xtensa.cc (xtensa_legitimate_address_p): Likewise.
2371         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2372         Likewise.
2373         (tree.h): New include for tree_code ERROR_MARK.
2374         * config/stormy16/stormy16.cc (xstormy16_legitimate_address_p):
2375         Adjust with extra unnamed code_helper argument with default
2376         ERROR_MARK.
2378 2023-08-09  liuhongt  <hongtao.liu@intel.com>
2380         * common/config/i386/cpuinfo.h (get_available_features): Check
2381         EAX for valid subleaf before use CPUID.
2383 2023-08-08  Jeff Law  <jlaw@ventanamicro.com>
2385         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use word_mode
2386         for the temporary when canonicalizing the condition.
2388 2023-08-08  Cupertino Miranda  <cupertino.miranda@oracle.com>
2390         * config/bpf/core-builtins.cc: Cleaned include headers.
2391         (struct cr_builtins): Added GTY.
2392         (cr_builtins_ref): Created.
2393         (builtins_data) Changed to GC root.
2394         (allocate_builtin_data): Changed.
2395         Included gt-core-builtins.h.
2396         * config/bpf/coreout.cc: (bpf_core_extra) Added GTY.
2397         (bpf_core_extra_ref): Created.
2398         (bpf_comment_info): Changed to GC root.
2399         (bpf_core_reloc_add, output_btfext_header, btf_ext_init): Changed.
2401 2023-08-08  Uros Bizjak  <ubizjak@gmail.com>
2403         PR target/110832
2404         * config/i386/i386.opt (mpartial-vector-fp-math): New option.
2405         * config/i386/mmx.md (movq_<mode>_to_sse): Do not sanitize
2406         upper part of V2SFmode register with -fno-trapping-math.
2407         (<plusminusmult:insn>v2sf3): Enable for ix86_partial_vec_fp_math.
2408         (divv2sf3): Ditto.
2409         (<smaxmin:code>v2sf3): Ditto.
2410         (sqrtv2sf2): Ditto.
2411         (*mmx_haddv2sf3_low): Ditto.
2412         (*mmx_hsubv2sf3_low): Ditto.
2413         (vec_addsubv2sf3): Ditto.
2414         (vec_cmpv2sfv2si): Ditto.
2415         (vcond<V2FI:mode>v2sf): Ditto.
2416         (fmav2sf4): Ditto.
2417         (fmsv2sf4): Ditto.
2418         (fnmav2sf4): Ditto.
2419         (fnmsv2sf4): Ditto.
2420         (fix_truncv2sfv2si2): Ditto.
2421         (fixuns_truncv2sfv2si2): Ditto.
2422         (floatv2siv2sf2): Ditto.
2423         (floatunsv2siv2sf2): Ditto.
2424         (nearbyintv2sf2): Ditto.
2425         (rintv2sf2): Ditto.
2426         (lrintv2sfv2si2): Ditto.
2427         (ceilv2sf2): Ditto.
2428         (lceilv2sfv2si2): Ditto.
2429         (floorv2sf2): Ditto.
2430         (lfloorv2sfv2si2): Ditto.
2431         (btruncv2sf2): Ditto.
2432         (roundv2sf2): Ditto.
2433         (lroundv2sfv2si2): Ditto.
2434         * doc/invoke.texi (x86 Options): Document
2435         -mpartial-vector-fp-math option.
2437 2023-08-08  Andrew Pinski  <apinski@marvell.com>
2439         PR tree-optimization/103281
2440         PR tree-optimization/28794
2441         * vr-values.cc (simplify_using_ranges::simplify_cond_using_ranges_1): Split out
2442         majority to ...
2443         (simplify_using_ranges::simplify_compare_using_ranges_1): Here.
2444         (simplify_using_ranges::simplify_casted_cond): Rename to ...
2445         (simplify_using_ranges::simplify_casted_compare): This
2446         and change arguments to take op0 and op1.
2447         (simplify_using_ranges::simplify_compare_assign_using_ranges_1): New method.
2448         (simplify_using_ranges::simplify): For tcc_comparison assignments call
2449         simplify_compare_assign_using_ranges_1.
2450         * vr-values.h (simplify_using_ranges): Add
2451         new methods, simplify_compare_using_ranges_1 and simplify_compare_assign_using_ranges_1.
2452         Rename simplify_casted_cond and simplify_casted_compare and
2453         update argument types.
2455 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
2457         * genmatch.cc: Log line numbers indirectly.
2459 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
2461         * genmatch.cc: Make sinfo map ordered.
2462         * Makefile.in: Require the ordered map header for genmatch.o.
2464 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
2466         * ordered-hash-map.h: Add get_or_insert.
2467         * ordered-hash-map-tests.cc: Use get_or_insert in tests.
2469 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2471         * config/riscv/autovec.md (cond_<optab><mode>): New pattern.
2472         (cond_len_<optab><mode>): Ditto.
2473         (cond_fma<mode>): Ditto.
2474         (cond_len_fma<mode>): Ditto.
2475         (cond_fnma<mode>): Ditto.
2476         (cond_len_fnma<mode>): Ditto.
2477         (cond_fms<mode>): Ditto.
2478         (cond_len_fms<mode>): Ditto.
2479         (cond_fnms<mode>): Ditto.
2480         (cond_len_fnms<mode>): Ditto.
2481         * config/riscv/riscv-protos.h (riscv_get_v_regno_alignment): Export
2482         global.
2483         (enum insn_type): Add new enum type.
2484         (prepare_ternary_operands): New function.
2485         * config/riscv/riscv-v.cc (emit_vlmax_masked_fp_mu_insn): Ditto.
2486         (emit_nonvlmax_tumu_insn): Ditto.
2487         (emit_nonvlmax_fp_tumu_insn): Ditto.
2488         (expand_cond_len_binop): Add condtional operations.
2489         (expand_cond_len_ternop): Ditto.
2490         (prepare_ternary_operands): New function.
2491         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_release): Export
2492         riscv_get_v_regno_alignment as global scope.
2493         * config/riscv/vector.md: Fix ternary bugs.
2495 2023-08-08  Richard Biener  <rguenther@suse.de>
2497         PR tree-optimization/49955
2498         * tree-vectorizer.h (_slp_instance::remain_stmts): New.
2499         (SLP_INSTANCE_REMAIN_STMTS): Likewise.
2500         * tree-vect-slp.cc (vect_free_slp_instance): Release
2501         SLP_INSTANCE_REMAIN_STMTS.
2502         (vect_build_slp_instance): Make the number of lanes of
2503         a BB reduction even.
2504         (vectorize_slp_instance_root_stmt): Handle unvectorized
2505         defs of a BB reduction.
2507 2023-08-08  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2509         * internal-fn.cc (get_len_internal_fn): New function.
2510         (DEF_INTERNAL_COND_FN): Ditto.
2511         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
2512         * internal-fn.h (get_len_internal_fn): Ditto.
2513         * tree-vect-stmts.cc (vectorizable_call): Add CALL auto-vectorization.
2515 2023-08-08  Richard Biener  <rguenther@suse.de>
2517         PR tree-optimization/110924
2518         * tree-ssa-live.h (virtual_operand_live): Update comment.
2519         * tree-ssa-live.cc (virtual_operand_live::get_live_in): Remove
2520         optimization, look at each predecessor.
2521         * tree-ssa-sink.cc (pass_sink_code::execute): Mark backedges.
2523 2023-08-08  yulong  <shiyulong@iscas.ac.cn>
2525         * config/riscv/riscv-v.cc (slide1_sew64_helper): Modify.
2527 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2529         * config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg.
2530         * config/riscv/vector.md: Ditto.
2532 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2534         * config/riscv/autovec.md: Add VLS shift.
2536 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2538         * config/riscv/autovec-vls.md (<optab><mode>3): Add VLS modes.
2539         * config/riscv/vector-iterators.md: Ditto.
2540         * config/riscv/vector.md: Ditto.
2542 2023-08-07  Jonathan Wakely  <jwakely@redhat.com>
2544         * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
2546 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
2548         * configure: Regenerate.
2550 2023-08-07  John Ericson  <git@JohnEricson.me>
2552         * configure: Regenerate.
2554 2023-08-07  Alan Modra  <amodra@gmail.com>
2556         * configure: Regenerate.
2558 2023-08-07  Alexander von Gluck IV  <kallisti5@unixzen.com>
2560         * configure: Regenerate.
2562 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
2564         * configure: Regenerate.
2566 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
2568         * configure: Regenerate.
2570 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
2572         * configure: Regenerate.
2574 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
2576         * configure: Regenerate.
2578 2023-08-07  Jeff Law  <jlaw@ventanamicro.com>
2580         * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
2581         VOIDmode operands to conditional before canonicalization.
2583 2023-08-07  Manolis Tsamis  <manolis.tsamis@vrull.eu>
2585         * regcprop.cc (maybe_copy_reg_attrs): Remove unnecessary function.
2586         (find_oldest_value_reg): Inline stack_pointer_rtx check.
2587         (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check.
2589 2023-08-07  Martin Jambor  <mjambor@suse.cz>
2591         PR ipa/110378
2592         * ipa-param-manipulation.h (class ipa_param_body_adjustments): New
2593         members get_ddef_if_exists_and_is_used and mark_clobbers_dead.
2594         * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers.
2595         (ptr_parm_has_nonarg_uses): Likewise.
2596         * ipa-param-manipulation.cc
2597         (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New.
2598         (ipa_param_body_adjustments::mark_dead_statements): Move initial
2599         checks to get_ddef_if_exists_and_is_used.
2600         (ipa_param_body_adjustments::mark_clobbers_dead): New.
2601         (ipa_param_body_adjustments::common_initialization): Call
2602         mark_clobbers_dead when splitting.
2604 2023-08-07  Raphael Zinsly  <rzinsly@ventanamicro.com>
2606         * config/riscv/riscv.cc (riscv_expand_int_scc): Add invert_ptr
2607         as an argument and pass it to riscv_emit_int_order_test.
2608         (riscv_expand_conditional_move): Handle cases where the condition
2609         is not EQ/NE or the second argument to the conditional is not
2610         (const_int 0).
2611         * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype.
2612         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
2614 2023-08-07  Andrew Pinski  <apinski@marvell.com>
2616         PR tree-optimization/109959
2617         * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
2618         New patterns.
2620 2023-08-07  Richard Biener  <rguenther@suse.de>
2622         * tree-ssa-sink.cc (pass_sink_code::execute): Do not
2623         calculate post-dominators.  Calculate RPO on the inverted
2624         graph and process blocks in that order.
2626 2023-08-07  liuhongt  <hongtao.liu@intel.com>
2628         PR target/110926
2629         * config/i386/i386-protos.h
2630         (vpternlog_redundant_operand_mask): Adjust parameter type.
2631         * config/i386/i386.cc (vpternlog_redundant_operand_mask): Use
2632         INTVAL instead of XINT, also adjust parameter type from rtx*
2633         to rtx since the function only needs operands[4] in vpternlog
2634         pattern.
2635         (substitute_vpternlog_operands): Pass operands[4] instead of
2636         operands to vpternlog_redundant_operand_mask.
2637         * config/i386/sse.md: Ditto.
2639 2023-08-07  Richard Biener  <rguenther@suse.de>
2641         * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
2642         around dumping code.
2644 2023-08-07  liuhongt  <hongtao.liu@intel.com>
2646         PR target/110762
2647         * config/i386/mmx.md (<insn><mode>3): Changed from define_insn
2648         to define_expand and break into ..
2649         (<insn>v4hf3): .. this.
2650         (divv4hf3): .. this.
2651         (<insn>v2hf3): .. this.
2652         (divv2hf3): .. this.
2653         (movd_v2hf_to_sse): New define_expand.
2654         (movq_<mode>_to_sse): Extend to V4HFmode.
2655         (mmxdoublevecmode): Ditto.
2656         (V2FI_V4HF): New mode iterator.
2657         * config/i386/sse.md (*vec_concatv4sf): Extend to hanlde V8HF
2658         by using mode iterator V4SF_V8HF, renamed to ..
2659         (*vec_concat<mode>): .. this.
2660         (*vec_concatv4sf_0): Extend to handle V8HF by using mode
2661         iterator V4SF_V8HF, renamed to ..
2662         (*vec_concat<mode>_0): .. this.
2663         (*vec_concatv8hf_movss): New define_insn.
2664         (V4SF_V8HF): New mode iterator.
2666 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2668         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
2670 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2672         * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16".
2673         (*mmx_pinsrb): Likewise.
2674         (*mmx_pextrb): Likewise.
2675         (*mmx_pextrb_zext): Likewise.
2676         (mmx_pshufbv8qi3): Likewise.
2677         (mmx_pshufbv4qi3): Likewise.
2678         (mmx_pswapdv2si2): Likewise.
2679         (*pinsrb): Likewise.
2680         (*pextrb): Likewise.
2681         (*pextrb_zext): Likewise.
2682         * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
2683         (*sse2_eq<mode>3): Likewise.
2684         (*sse2_gt<mode>3): Likewise.
2685         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
2686         (*vec_extract<mode>): Likewise.
2687         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
2688         (*vec_extractv16qi_zext): Likewise.
2689         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
2690         (ssse3_pmaddubsw128): Likewise.
2691         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
2692         (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise.
2693         (<ssse3_avx2>_psign<mode>3): Likewise.
2694         (<ssse3_avx2>_palignr<mode>): Likewise.
2695         (*abs<mode>2): Likewise.
2696         (sse4_2_pcmpestr): Likewise.
2697         (sse4_2_pcmpestri): Likewise.
2698         (sse4_2_pcmpestrm): Likewise.
2699         (sse4_2_pcmpestr_cconly): Likewise.
2700         (sse4_2_pcmpistr): Likewise.
2701         (sse4_2_pcmpistri): Likewise.
2702         (sse4_2_pcmpistrm): Likewise.
2703         (sse4_2_pcmpistr_cconly): Likewise.
2704         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
2705         (vgf2p8affineqb_<mode><mask_name>): Likewise.
2706         (vgf2p8mulb_<mode><mask_name>): Likewise.
2707         (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and
2708         "prefix_extra".
2709         (*<code>v16qi3 [umaxmin]): Likewise.
2711 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2713         * config/i386/i386.md (sse4_1_round<mode>2): Make
2714         "length_immediate" uniformly 1.
2715         * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise.
2716         (mmx_pblendvb_<mode>): Likewise.
2718 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2720         * config/i386/sse.md
2721         (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add
2722         "prefix" attribute.
2723         (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
2724         Likewise.
2726 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2728         * config/i386/sse.md (xop_phadd<u>bw): Add "prefix",
2729         "prefix_extra", and "mode" attributes.
2730         (xop_phadd<u>bd): Likewise.
2731         (xop_phadd<u>bq): Likewise.
2732         (xop_phadd<u>wd): Likewise.
2733         (xop_phadd<u>wq): Likewise.
2734         (xop_phadd<u>dq): Likewise.
2735         (xop_phsubbw): Likewise.
2736         (xop_phsubwd): Likewise.
2737         (xop_phsubdq): Likewise.
2738         (xop_rotl<mode>3): Add "prefix" and "prefix_extra" attributes.
2739         (xop_rotr<mode>3): Likewise.
2740         (xop_frcz<mode>2): Likewise.
2741         (*xop_vmfrcz<mode>2): Likewise.
2742         (xop_vrotl<mode>3): Add "prefix" attribute. Change
2743         "prefix_extra" to 1.
2744         (xop_sha<mode>3): Likewise.
2745         (xop_shl<mode>3): Likewise.
2747 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2749         * config/i386/sse.md
2750         (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop
2751         "prefix_extra".
2752         (avx512dq_vextract<shuffletype>64x2_1_mask): Likewise.
2753         (*avx512dq_vextract<shuffletype>64x2_1): Likewise.
2754         (avx512f_vextract<shuffletype>32x4_1_mask): Likewise.
2755         (*avx512f_vextract<shuffletype>32x4_1): Likewise.
2756         (vec_extract_lo_<mode>_mask [AVX512 forms]): Likewise.
2757         (vec_extract_lo_<mode> [AVX512 forms]): Likewise.
2758         (vec_extract_hi_<mode>_mask [AVX512 forms]): Likewise.
2759         (vec_extract_hi_<mode> [AVX512 forms]): Likewise.
2760         (@vec_extract_lo_<mode> [AVX512 forms]): Likewise.
2761         (@vec_extract_hi_<mode> [AVX512 forms]): Likewise.
2762         (vec_extract_lo_v64qi): Likewise.
2763         (vec_extract_hi_v64qi): Likewise.
2764         (*vec_widen_umult_even_v16si<mask_name>): Likewise.
2765         (*vec_widen_smult_even_v16si<mask_name>): Likewise.
2766         (*avx512f_<code><mode>3<mask_name>): Likewise.
2767         (*vec_extractv4ti): Likewise.
2768         (avx512bw_<code>v32qiv32hi2<mask_name>): Likewise.
2769         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Likewise.
2770         Add "length_immediate".
2772 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2774         * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop
2775         "prefix_extra".
2776         (@rdseed<mode>): Likewise.
2777         * config/i386/mmx.md (<code><mode>3 [smaxmin and umaxmin cases]):
2778         Adjust "prefix_extra".
2779         * config/i386/sse.md (@vec_set<mode>_0): Likewise.
2780         (*sse4_1_<code><mode>3<mask_name>): Likewise.
2781         (*avx2_eq<mode>3): Likewise.
2782         (avx2_gt<mode>3): Likewise.
2783         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
2784         (*vec_extract<mode>): Likewise.
2785         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
2787 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2789         * config/i386/i386.md (rd<fsgs>base<mode>): Add "prefix_0f" and
2790         "prefix_rep". Drop "prefix_extra".
2791         (wr<fsgs>base<mode>): Likewise.
2792         (ptwrite<mode>): Likewise.
2794 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2796         * config/i386/i386.md (isa): Move up.
2797         (length_immediate): Handle "fma4".
2798         (prefix): Handle "ssemuladd".
2799         * config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute.
2800         (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
2801         Likewise.
2802         (<avx512>_fmadd_<mode>_mask<round_name>): Likewise.
2803         (<avx512>_fmadd_<mode>_mask3<round_name>): Likewise.
2804         (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
2805         Likewise.
2806         (<avx512>_fmsub_<mode>_mask<round_name>): Likewise.
2807         (<avx512>_fmsub_<mode>_mask3<round_name>): Likewise.
2808         (*fma_fnmadd_<mode>): Likewise.
2809         (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
2810         Likewise.
2811         (<avx512>_fnmadd_<mode>_mask<round_name>): Likewise.
2812         (<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise.
2813         (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
2814         Likewise.
2815         (<avx512>_fnmsub_<mode>_mask<round_name>): Likewise.
2816         (<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise.
2817         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
2818         Likewise.
2819         (<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise.
2820         (<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise.
2821         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
2822         Likewise.
2823         (<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise.
2824         (<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise.
2825         (*fmai_fmadd_<mode>): Likewise.
2826         (*fmai_fmsub_<mode>): Likewise.
2827         (*fmai_fnmadd_<mode><round_name>): Likewise.
2828         (*fmai_fnmsub_<mode><round_name>): Likewise.
2829         (avx512f_vmfmadd_<mode>_mask<round_name>): Likewise.
2830         (avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise.
2831         (avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise.
2832         (*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise.
2833         (avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise.
2834         (*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise.
2835         (avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise.
2836         (avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise.
2837         (avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise.
2838         (*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise.
2839         (*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise.
2840         (*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise.
2841         (*fma4i_vmfmadd_<mode>): Likewise.
2842         (*fma4i_vmfmsub_<mode>): Likewise.
2843         (*fma4i_vmfnmadd_<mode>): Likewise.
2844         (*fma4i_vmfnmsub_<mode>): Likewise.
2845         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise.
2846         (<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise.
2847         (avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
2848         Likewise.
2849         (avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise.
2850         (xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise.
2851         (xop_p<macs>dql): Likewise.
2852         (xop_p<macs>dqh): Likewise.
2853         (xop_p<macs>wd): Likewise.
2854         (xop_p<madcs>wd): Likewise.
2855         (fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute.
2857 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2859         * config/i386/i386.md (length_immediate): Handle "sse4arg".
2860         (prefix): Likewise.
2861         (*xop_pcmov_<mode>): Add "mode" attribute.
2862         * config/i386/mmx.md (*xop_maskcmp<mode>3): Drop "prefix_data16",
2863         "prefix_rep", "prefix_extra", and "length_immediate" attributes.
2864         (*xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
2865         (*xop_pcmov_<mode>): Add "mode" attribute.
2866         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Add "mode"
2867         attribute.
2868         (xop_maskcmp<mode>3): Drop "prefix_data16", "prefix_rep",
2869         "prefix_extra", and "length_immediate" attributes.
2870         (xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
2871         (xop_maskcmp_uns2<mode>3): Drop "prefix_data16", "prefix_extra",
2872         and "length_immediate" attributes. Switch "type" to "sse4arg".
2873         (xop_pcom_tf<mode>3): Likewise.
2874         (xop_vpermil2<mode>3): Drop "length_immediate" attribute.
2876 2023-08-07  Jan Beulich  <jbeulich@suse.com>
2878         * config/i386/i386.md (prefix_extra): Correct comment. Fold
2879         cases yielding 2 into ones yielding 1.
2881 2023-08-07  Jan Hubicka  <jh@suse.cz>
2883         PR tree-optimization/106293
2884         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
2885         * tree-vect-loop.cc (vect_transform_loop): Likewise.
2887 2023-08-07  Andrew Pinski  <apinski@marvell.com>
2889         PR tree-optimization/96695
2890         * match.pd (min_value, max_value): Extend to
2891         pointer types too.
2893 2023-08-06  Jan Hubicka  <jh@suse.cz>
2895         * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
2896         __builtin_expect that CPU likely supports cpuid.
2898 2023-08-06  Jan Hubicka  <jh@suse.cz>
2900         * tree-loop-distribution.cc (loop_distribution::execute): Disable
2901         distribution for loops with estimated iterations 0.
2903 2023-08-06  Jan Hubicka  <jh@suse.cz>
2905         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
2907 2023-08-04  Xiao Zeng  <zengxiao@eswincomputing.com>
2909         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
2910         more Zicond patterns.  Fix whitespace typo.
2911         (riscv_rtx_costs): Remove accidental code duplication.
2912         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
2914 2023-08-04  Yan Simonaytes  <simonaytes.yan@ispras.ru>
2916         PR target/110202
2917         * config/i386/i386-protos.h
2918         (vpternlog_redundant_operand_mask): Declare.
2919         (substitute_vpternlog_operands): Declare.
2920         * config/i386/i386.cc
2921         (vpternlog_redundant_operand_mask): New helper.
2922         (substitute_vpternlog_operands): New function.  Use them...
2923         * config/i386/sse.md: ... here in new VPTERNLOG define_splits.
2925 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
2927         * expmed.cc (extract_bit_field_1): Document that an UNSIGNEDP
2928         value of -1 is equivalent to don't care.
2929         (extract_integral_bit_field): Indicate that we don't require
2930         the most significant word to be zero extended, if we're about
2931         to sign extend it.
2932         (extract_fixed_bit_field_1): Document that an UNSIGNEDP value
2933         of -1 is equivalent to don't care.  Don't clear the most
2934         significant bits with AND mask when UNSIGNEDP is -1.
2936 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
2938         * config/i386/sse.md (define_split): Convert highpart:DF extract
2939         from V2DFmode register into a sse2_storehpd instruction.
2940         (define_split): Likewise, convert lowpart:DF extract from V2DF
2941         register into a sse2_storelpd instruction.
2943 2023-08-04  Qing Zhao  <qing.zhao@oracle.com>
2945         * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
2946         new option.
2948 2023-08-04  Vladimir N. Makarov  <vmakarov@redhat.com>
2950         * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
2951         against early clobber hard regs.
2953 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
2955         * doc/extend.texi: Document it.
2957 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
2959         PR target/106346
2960         * config/aarch64/aarch64-simd.md (vec_widen_<sur>shiftl_lo_<mode>,
2961         vec_widen_<sur>shiftl_hi_<mode>): Remove.
2962         (aarch64_<sur>shll<mode>_internal): Renamed to...
2963         (aarch64_<su>shll<mode>): .. This.
2964         (aarch64_<sur>shll2<mode>_internal): Renamed to...
2965         (aarch64_<su>shll2<mode>): .. This.
2966         (aarch64_<sur>shll_n<mode>, aarch64_<sur>shll2_n<mode>): Re-use new
2967         optabs.
2968         * config/aarch64/constraints.md (D2, DL): New.
2969         * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New.
2971 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
2973         * gensupport.cc (conlist): Support length 0 attribute.
2975 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
2977         * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
2978         (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
2980 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
2982         * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling
2983         of constants.
2984         (aarch64_adjust_stmt_cost): Use it.
2985         (aarch64_vector_costs::count_ops): Likewise.
2986         (aarch64_vector_costs::add_stmt_cost): Pass vinfo to
2987         aarch64_adjust_stmt_cost.
2989 2023-08-04  Richard Biener  <rguenther@suse.de>
2991         PR tree-optimization/110838
2992         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
2993         Fix right-shift value sanitizing.  Properly emit external
2994         def mangling in the preheader rather than in the pattern
2995         def sequence where it will fail vectorizing.
2997 2023-08-04  Matthew Malcomson  <matthew.malcomson@arm.com>
2999         PR middle-end/110316
3000         PR middle-end/9903
3001         * timevar.cc (NANOSEC_PER_SEC, TICKS_TO_NANOSEC,
3002         CLOCKS_TO_NANOSEC, nanosec_to_floating_sec, percent_of): New.
3003         (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Remove these macros.
3004         (timer::validate_phases): Use integral arithmetic to check
3005         validity.
3006         (timer::print_row, timer::print): Convert from integral
3007         nanoseconds to floating point seconds before printing.
3008         (timer::all_zero): Change limit to nanosec count instead of
3009         fractional count of seconds.
3010         (make_json_for_timevar_time_def): Convert from integral
3011         nanoseconds to floating point seconds before recording.
3012         * timevar.h (struct timevar_time_def): Update all measurements
3013         to use uint64_t nanoseconds rather than seconds stored in a
3014         double.
3016 2023-08-04  Richard Biener  <rguenther@suse.de>
3018         PR tree-optimization/110838
3019         * match.pd (([rl]shift @0 out-of-bounds) -> zero): Restrict
3020         the arithmetic right-shift case to non-negative operands.
3022 2023-08-04  Pan Li  <pan2.li@intel.com>
3024         Revert:
3025         2023-08-04  Pan Li  <pan2.li@intel.com>
3027         * config/riscv/riscv-vector-builtins-bases.cc
3028         (class vfmacc_frm): New class for vfmacc frm.
3029         (vfmacc_frm_obj): New declaration.
3030         (BASE): Ditto.
3031         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
3032         * config/riscv/riscv-vector-builtins-functions.def
3033         (vfmacc_frm): New function definition.
3034         * config/riscv/riscv-vector-builtins.cc
3035         (function_expander::use_ternop_insn): Add frm operand support.
3036         * config/riscv/vector.md: Add vfmuladd to frm_mode.
3038 2023-08-04  Pan Li  <pan2.li@intel.com>
3040         Revert:
3041         2023-08-04  Pan Li  <pan2.li@intel.com>
3043         * config/riscv/riscv-vector-builtins-bases.cc
3044         (class vfnmacc_frm): New class for vfnmacc.
3045         (vfnmacc_frm_obj): New declaration.
3046         (BASE): Ditto.
3047         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
3048         * config/riscv/riscv-vector-builtins-functions.def
3049         (vfnmacc_frm): New function definition.
3051 2023-08-04  Pan Li  <pan2.li@intel.com>
3053         Revert:
3054         2023-08-04  Pan Li  <pan2.li@intel.com>
3056         * config/riscv/riscv-vector-builtins-bases.cc
3057         (class vfmsac_frm): New class for vfmsac frm.
3058         (vfmsac_frm_obj): New declaration.
3059         (BASE): Ditto.
3060         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
3061         * config/riscv/riscv-vector-builtins-functions.def
3062         (vfmsac_frm): New function definition.
3064 2023-08-04  Pan Li  <pan2.li@intel.com>
3066         Revert:
3067         2023-08-04  Pan Li  <pan2.li@intel.com>
3069         * config/riscv/riscv-vector-builtins-bases.cc
3070         (class vfnmsac_frm): New class for vfnmsac frm.
3071         (vfnmsac_frm_obj): New declaration.
3072         (BASE): Ditto.
3073         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
3074         * config/riscv/riscv-vector-builtins-functions.def
3075         (vfnmsac_frm): New function definition.
3077 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
3079         * config/avr/avr-mcus.def (avr64dd14, avr64dd20, avr64dd28, avr64dd32)
3080         (avr64ea28, avr64ea32, avr64ea48, attiny424, attiny426, attiny427)
3081         (attiny824, attiny826, attiny827, attiny1624, attiny1626, attiny1627)
3082         (attiny3224, attiny3226, attiny3227, avr16dd14, avr16dd20, avr16dd28)
3083         (avr16dd32, avr32dd14, avr32dd20, avr32dd28, avr32dd32)
3084         (attiny102, attiny104): New devices.
3085         * doc/avr-mmcu.texi: Regenerate.
3087 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
3089         * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
3090         and PM_OFFSET entries.
3092 2023-08-04  Andrew Pinski  <apinski@marvell.com>
3094         PR tree-optimization/110874
3095         * gimple-match-head.cc (gimple_bit_not_with_nop): New declaration.
3096         (gimple_maybe_cmp): Likewise.
3097         (gimple_bitwise_inverted_equal_p): Rewrite to use gimple_bit_not_with_nop
3098         and gimple_maybe_cmp instead of being recursive.
3099         * match.pd (bit_not_with_nop): New match pattern.
3100         (maybe_cmp): Likewise.
3102 2023-08-04  Drew Ross  <drross@redhat.com>
3104         PR middle-end/101955
3105         * match.pd ((signed x << c) >> c): New canonicalization.
3107 2023-08-04  Pan Li  <pan2.li@intel.com>
3109         * config/riscv/riscv-vector-builtins-bases.cc
3110         (class vfnmsac_frm): New class for vfnmsac frm.
3111         (vfnmsac_frm_obj): New declaration.
3112         (BASE): Ditto.
3113         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
3114         * config/riscv/riscv-vector-builtins-functions.def
3115         (vfnmsac_frm): New function definition.
3117 2023-08-04  Pan Li  <pan2.li@intel.com>
3119         * config/riscv/riscv-vector-builtins-bases.cc
3120         (class vfmsac_frm): New class for vfmsac frm.
3121         (vfmsac_frm_obj): New declaration.
3122         (BASE): Ditto.
3123         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
3124         * config/riscv/riscv-vector-builtins-functions.def
3125         (vfmsac_frm): New function definition.
3127 2023-08-04  Pan Li  <pan2.li@intel.com>
3129         * config/riscv/riscv-vector-builtins-bases.cc
3130         (class vfnmacc_frm): New class for vfnmacc.
3131         (vfnmacc_frm_obj): New declaration.
3132         (BASE): Ditto.
3133         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
3134         * config/riscv/riscv-vector-builtins-functions.def
3135         (vfnmacc_frm): New function definition.
3137 2023-08-04  Hao Liu  <hliu@os.amperecomputing.com>
3139         PR target/110625
3140         * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check
3141         STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction.
3143 2023-08-04  Pan Li  <pan2.li@intel.com>
3145         * config/riscv/riscv-vector-builtins-bases.cc
3146         (class vfmacc_frm): New class for vfmacc frm.
3147         (vfmacc_frm_obj): New declaration.
3148         (BASE): Ditto.
3149         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
3150         * config/riscv/riscv-vector-builtins-functions.def
3151         (vfmacc_frm): New function definition.
3152         * config/riscv/riscv-vector-builtins.cc
3153         (function_expander::use_ternop_insn): Add frm operand support.
3154         * config/riscv/vector.md: Add vfmuladd to frm_mode.
3156 2023-08-04  Pan Li  <pan2.li@intel.com>
3158         * config/riscv/riscv-vector-builtins-bases.cc
3159         (vfwmul_frm_obj): New declaration.
3160         (vfwmul_frm): Ditto.
3161         * config/riscv/riscv-vector-builtins-bases.h:
3162         (vfwmul_frm): Ditto.
3163         * config/riscv/riscv-vector-builtins-functions.def
3164         (vfwmul_frm): New function definition.
3165         * config/riscv/vector.md: (frm_mode) Add vfwmul to frm_mode.
3167 2023-08-04  Pan Li  <pan2.li@intel.com>
3169         * config/riscv/riscv-vector-builtins-bases.cc
3170         (binop_frm): New declaration.
3171         (reverse_binop_frm): Likewise.
3172         (BASE): Likewise.
3173         * config/riscv/riscv-vector-builtins-bases.h:
3174         (vfdiv_frm): New extern declaration.
3175         (vfrdiv_frm): Likewise.
3176         * config/riscv/riscv-vector-builtins-functions.def
3177         (vfdiv_frm): New function definition.
3178         (vfrdiv_frm): Likewise.
3179         * config/riscv/vector.md: Add vfdiv to frm_mode.
3181 2023-08-03  Jan Hubicka  <jh@suse.cz>
3183         * tree-cfg.cc (print_loop_info): Print entry count.
3185 2023-08-03  Jan Hubicka  <jh@suse.cz>
3187         * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
3189 2023-08-03  Jan Hubicka  <jh@suse.cz>
3191         PR bootstrap/110857
3192         * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
3193         unadjusted_exit_count.
3195 2023-08-03  Aldy Hernandez  <aldyh@redhat.com>
3197         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
3198         value/mask.
3200 2023-08-03  Xiao Zeng  <zengxiao@eswincomputing.com>
3202         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
3203         various Zicond patterns.
3204         * config/riscv/riscv.md (mov<mode>cc): Allow TARGET_ZICOND.  Use
3205         sfb_alu_operand for both arms of the conditional move.
3206         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
3208 2023-08-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
3210         PR target/107844
3211         PR target/107479
3212         PR target/107480
3213         PR target/107481
3214         * config.gcc: Added core-builtins.cc and .o files.
3215         * config/bpf/bpf-passes.def: Removed file.
3216         * config/bpf/bpf-protos.h (bpf_add_core_reloc,
3217         bpf_replace_core_move_operands): New prototypes.
3218         * config/bpf/bpf.cc (enum bpf_builtins, is_attr_preserve_access,
3219         maybe_make_core_relo, bpf_core_field_info, bpf_core_compute,
3220         bpf_core_get_index, bpf_core_new_decl, bpf_core_walk,
3221         bpf_is_valid_preserve_field_info_arg, is_attr_preserve_access,
3222         handle_attr_preserve, pass_data_bpf_core_attr, pass_bpf_core_attr):
3223         Removed.
3224         (def_builtin, bpf_expand_builtin, bpf_resolve_overloaded_builtin): Changed.
3225         * config/bpf/bpf.md (define_expand mov<MM:mode>): Changed.
3226         (mov_reloc_core<mode>): Added.
3227         * config/bpf/core-builtins.cc (struct cr_builtin, enum
3228         cr_decision struct cr_local, struct cr_final, struct
3229         core_builtin_helpers, enum bpf_plugin_states): Added types.
3230         (builtins_data, core_builtin_helpers, core_builtin_type_defs):
3231         Added variables.
3232         (allocate_builtin_data, get_builtin-data, search_builtin_data,
3233         remove_parser_plugin, compare_same_kind, compare_same_ptr_expr,
3234         compare_same_ptr_type, is_attr_preserve_access, core_field_info,
3235         bpf_core_get_index, compute_field_expr,
3236         pack_field_expr_for_access_index, pack_field_expr_for_preserve_field,
3237         process_field_expr, pack_enum_value, process_enum_value, pack_type,
3238         process_type, bpf_require_core_support, make_core_relo, read_kind,
3239         kind_access_index, kind_preserve_field_info, kind_enum_value,
3240         kind_type_id, kind_preserve_type_info, get_core_builtin_fndecl_for_type,
3241         bpf_handle_plugin_finish_type, bpf_init_core_builtins,
3242         construct_builtin_core_reloc, bpf_resolve_overloaded_core_builtin,
3243         bpf_expand_core_builtin, bpf_add_core_reloc,
3244         bpf_replace_core_move_operands): Added functions.
3245         * config/bpf/core-builtins.h (enum bpf_builtins): Added.
3246         (bpf_init_core_builtins, bpf_expand_core_builtin,
3247         bpf_resolve_overloaded_core_builtin): Added functions.
3248         * config/bpf/coreout.cc (struct bpf_core_extra): Added.
3249         (bpf_core_reloc_add, output_asm_btfext_core_reloc): Changed.
3250         * config/bpf/coreout.h (bpf_core_reloc_add) Changed prototype.
3251         * config/bpf/t-bpf: Added core-builtins.o.
3252         * doc/extend.texi: Added documentation for new BPF builtins.
3254 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
3256         * gimple-range-fold.cc (fold_using_range::range_of_range_op): Add
3257         ranges to the call to relation_fold_and_or.
3258         (fold_using_range::relation_fold_and_or): Add op1 and op2 ranges.
3259         (fur_source::register_outgoing_edges): Add op1 and op2 ranges.
3260         * gimple-range-fold.h (relation_fold_and_or): Adjust params.
3261         * gimple-range-gori.cc (gori_compute::compute_operand_range): Add
3262         a varying op1 and op2 to call.
3263         * range-op-float.cc (range_operator::op1_op2_relation): New dafaults.
3264         (operator_equal::op1_op2_relation): New float version.
3265         (operator_not_equal::op1_op2_relation): Ditto.
3266         (operator_lt::op1_op2_relation): Ditto.
3267         (operator_le::op1_op2_relation): Ditto.
3268         (operator_gt::op1_op2_relation): Ditto.
3269         (operator_ge::op1_op2_relation) Ditto.
3270         * range-op-mixed.h (operator_equal::op1_op2_relation): New float
3271         prototype.
3272         (operator_not_equal::op1_op2_relation): Ditto.
3273         (operator_lt::op1_op2_relation): Ditto.
3274         (operator_le::op1_op2_relation): Ditto.
3275         (operator_gt::op1_op2_relation): Ditto.
3276         (operator_ge::op1_op2_relation): Ditto.
3277         * range-op.cc (range_op_handler::op1_op2_relation): Dispatch new
3278         variations.
3279         (range_operator::op1_op2_relation): Add extra params.
3280         (operator_equal::op1_op2_relation): Ditto.
3281         (operator_not_equal::op1_op2_relation): Ditto.
3282         (operator_lt::op1_op2_relation): Ditto.
3283         (operator_le::op1_op2_relation): Ditto.
3284         (operator_gt::op1_op2_relation): Ditto.
3285         (operator_ge::op1_op2_relation): Ditto.
3286         * range-op.h (range_operator): New prototypes.
3287         (range_op_handler): Ditto.
3289 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
3291         * gimple-range-gori.cc (gori_compute::compute_operand1_range):
3292         Use identity relation.
3293         (gori_compute::compute_operand2_range): Ditto.
3294         * value-relation.cc (get_identity_relation): New.
3295         * value-relation.h (get_identity_relation): New prototype.
3297 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
3299         * value-range.h (Value_Range::set_varying): Set the type.
3300         (Value_Range::set_zero): Ditto.
3301         (Value_Range::set_nonzero): Ditto.
3303 2023-08-03  Jeff Law  <jeffreyalaw@gmail.com>
3305         * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
3306         recent commit.
3308 2023-08-03  Pan Li  <pan2.li@intel.com>
3310         * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
3312 2023-08-03  Richard Sandiford  <richard.sandiford@arm.com>
3314         * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
3316 2023-08-03  Richard Biener  <rguenther@suse.de>
3318         PR tree-optimization/110838
3319         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
3320         Adjust the shift operand of RSHIFT_EXPRs.
3322 2023-08-03  Richard Biener  <rguenther@suse.de>
3324         PR tree-optimization/110702
3325         * tree-ssa-loop-ivopts.cc (rewrite_use_address): When
3326         we created a NULL pointer based access rewrite that to
3327         a LEA.
3329 2023-08-03  Richard Biener  <rguenther@suse.de>
3331         * tree-ssa-sink.cc: Include tree-ssa-live.h.
3332         (pass_sink_code::execute): Instantiate virtual_operand_live
3333         and pass it down.
3334         (sink_code_in_bb): Pass down virtual_operand_live.
3335         (statement_sink_location): Get virtual_operand_live and
3336         verify we are not sinking loads across stores by looking up
3337         the live virtual operand at the sink location.
3339 2023-08-03  Richard Biener  <rguenther@suse.de>
3341         * tree-ssa-live.h (class virtual_operand_live): New.
3342         * tree-ssa-live.cc (virtual_operand_live::init): New.
3343         (virtual_operand_live::get_live_in): Likewise.
3344         (virtual_operand_live::get_live_out): Likewise.
3346 2023-08-03  Richard Biener  <rguenther@suse.de>
3348         * passes.def: Exchange loop splitting and final value
3349         replacement passes.
3351 2023-08-03  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
3353         * config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
3354         New function which handles bswap patterns for vec_perm_const.
3355         (vectorize_vec_perm_const_1): Call new function.
3356         * config/s390/vector.md (*bswap<mode>): Fix operands in output
3357         template.
3358         (*vstbr<mode>): New insn.
3360 2023-08-03  Alexandre Oliva  <oliva@adacore.com>
3362         * config/vxworks-smp.opt: New.  Introduce -msmp.
3363         * config.gcc: Enable it on powerpc* vxworks prior to 7r*.
3364         * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose
3365         lib_smp when -msmp is present in the command line.
3366         * doc/invoke.texi: Document it.
3368 2023-08-03  Yanzhang Wang  <yanzhang.wang@intel.com>
3370         * config/riscv/riscv.cc (riscv_save_reg_p): Save ra for leaf
3371         when enabling -mno-omit-leaf-frame-pointer
3372         (riscv_option_override): Override omit-frame-pointer.
3373         (riscv_frame_pointer_required): Save s0 for non-leaf function
3374         (TARGET_FRAME_POINTER_REQUIRED): Override defination
3375         * config/riscv/riscv.opt: Add option support.
3377 2023-08-03  Roger Sayle  <roger@nextmovesoftware.com>
3379         PR target/110792
3380         * config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
3381         place operand in a register before gen_<insn>64ti2_doubleword.
3382         (<any_rotate>di3): Likewise, for rotations by 32 bits, place
3383         operand in a register before gen_<insn>32di2_doubleword.
3384         (<any_rotate>32di2_doubleword): Constrain operand to be in register.
3385         (<any_rotate>64ti2_doubleword): Likewise.
3387 2023-08-03  Pan Li  <pan2.li@intel.com>
3389         * config/riscv/riscv-vector-builtins-bases.cc
3390         (vfmul_frm_obj): New declaration.
3391         (Base): Likewise.
3392         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
3393         * config/riscv/riscv-vector-builtins-functions.def
3394         (vfmul_frm): New function definition.
3395         * config/riscv/vector.md: Add vfmul to frm_mode.
3397 2023-08-03  Andrew Pinski  <apinski@marvell.com>
3399         * match.pd (`~X & X`): Check that the types match.
3400         (`~x | x`, `~x ^ x`): Likewise.
3402 2023-08-03  Pan Li  <pan2.li@intel.com>
3404         * config/riscv/riscv-vector-builtins-bases.h: Remove
3405         redudant declaration.
3407 2023-08-03  Pan Li  <pan2.li@intel.com>
3409         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add
3410         vfwsub frm.
3411         * config/riscv/riscv-vector-builtins-bases.h: Add declaration.
3412         * config/riscv/riscv-vector-builtins-functions.def (vfwsub_frm):
3413         Add vfwsub function definitions.
3415 2023-08-02  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
3417         PR rtl-optimization/110867
3418         * combine.cc (simplify_compare_const): Try the optimization only
3419         in case the constant fits into the comparison mode.
3421 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
3423         * config/riscv/zicond.md: Remove incorrect zicond patterns and
3424         renumber/rename them.
3425         (zero.nez.<GPR:MODE><X:mode>.opt2): Fix output string.
3427 2023-08-02  Richard Biener  <rguenther@suse.de>
3429         * tree-phinodes.h (add_phi_node_to_bb): Remove.
3430         * tree-phinodes.cc  (add_phi_node_to_bb): Make static.
3432 2023-08-02  Jan Beulich  <jbeulich@suse.com>
3434         * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
3435         two of the alternatives.
3437 2023-08-02  Richard Biener  <rguenther@suse.de>
3439         PR tree-optimization/92335
3440         * tree-ssa-sink.cc (select_best_block): Before loop
3441         optimizations avoid sinking unconditional loads/stores
3442         in innermost loops to conditional executed places.
3444 2023-08-02  Andrew Pinski  <apinski@marvell.com>
3446         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
3447         the comparison operands before comparing them.
3449 2023-08-02  Andrew Pinski  <apinski@marvell.com>
3451         * match.pd (`~X & X`, `~X | X`): Move over to
3452         use bitwise_inverted_equal_p, removing :c as bitwise_inverted_equal_p
3453         handles that already.
3454         Remove range test simplifications to true/false as they
3455         are now handled by these patterns.
3457 2023-08-02  Andrew Pinski  <apinski@marvell.com>
3459         * tree-ssa-phiopt.cc (match_simplify_replacement): Mark's cond
3460         statement's lhs and rhs to check if trivial dead.
3461         Rename inserted_exprs to exprs_maybe_dce; also move it so
3462         bitmap is not allocated if not needed.
3464 2023-08-02  Pan Li  <pan2.li@intel.com>
3466         * config/riscv/riscv-vector-builtins-bases.cc
3467         (class widen_binop_frm): New class for binop frm.
3468         (BASE): Add vfwadd_frm.
3469         * config/riscv/riscv-vector-builtins-bases.h: New declaration.
3470         * config/riscv/riscv-vector-builtins-functions.def
3471         (vfwadd_frm): New function definition.
3472         * config/riscv/riscv-vector-builtins-shapes.cc
3473         (BASE_NAME_MAX_LEN): New macro.
3474         (struct alu_frm_def): Leverage new base class.
3475         (struct build_frm_base): New build base for frm.
3476         (struct widen_alu_frm_def): New struct for widen alu frm.
3477         (SHAPE): Add widen_alu_frm shape.
3478         * config/riscv/riscv-vector-builtins-shapes.h: New declaration.
3479         * config/riscv/vector.md (frm_mode): Add vfwalu type.
3481 2023-08-02  Jan Hubicka  <jh@suse.cz>
3483         * cfgloop.h (loop_count_in): Declare.
3484         * cfgloopanal.cc (expected_loop_iterations_by_profile): Use count_in.
3485         (loop_count_in): Move here from ...
3486         * cfgloopmanip.cc (loop_count_in): ... here.
3487         (scale_loop_profile): Improve dumping; cast iteration bound to sreal.
3489 2023-08-02  Jan Hubicka  <jh@suse.cz>
3491         * cfg.cc (scale_strictly_dominated_blocks): New function.
3492         * cfg.h (scale_strictly_dominated_blocks): Declare.
3493         * tree-cfg.cc (fold_loop_internal_call): Fixup CFG profile.
3495 2023-08-02  Richard Biener  <rguenther@suse.de>
3497         PR rtl-optimization/110587
3498         * lra-spills.cc (return_regno_p): Remove.
3499         (regno_in_use_p): Likewise.
3500         (lra_final_code_change): Do not remove noop moves
3501         between hard registers.
3503 2023-08-02  liuhongt  <hongtao.liu@intel.com>
3505         PR target/81904
3506         * config/i386/sse.md (vec_fmaddsub<mode>4): Extend to vector
3507         HFmode, use mode iterator VFH instead.
3508         (vec_fmsubadd<mode>4): Ditto.
3509         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
3510         Remove scalar mode from iterator, use VFH_AVX512VL instead.
3511         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
3512         Ditto.
3514 2023-08-02  liuhongt  <hongtao.liu@intel.com>
3516         * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
3517         pre_reload define_insn_and_split.
3519 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
3521         * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
3522         using Zicond to implement some conditional moves.
3524 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
3526         * config/riscv/zicond.md: Use the X iterator instead of ANYI
3527         on the comparison input operands.
3529 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
3531         * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add
3532         Zicond costing.
3533         (case SET): For INSNs that just set a REG, take the cost from the
3534         SET_SRC.
3535         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
3537 2023-08-02  Hu, Lin1  <lin1.hu@intel.com>
3539         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_INT8_SET):
3540         Change OPTION_MASK_ISA2_AMX_TILE to OPTION_MASK_ISA2_AMX_TILE_SET.
3541         (OPTION_MASK_ISA2_AMX_BF16_SET): Ditto
3542         (OPTION_MASK_ISA2_AMX_FP16_SET): Ditto
3543         (OPTION_MASK_ISA2_AMX_COMPLEX_SET): Ditto
3544         (OPTION_MASK_ISA_ABM_SET):
3545         Change OPTION_MASK_ISA_POPCNT to OPTION_MASK_ISA_POPCNT_SET.
3547 2023-08-01  Andreas Krebbel  <krebbel@linux.ibm.com>
3549         * config/s390/s390.cc (s390_encode_section_info): Assume external
3550         symbols without explicit alignment to be unaligned if
3551         -munaligned-symbols has been specified.
3552         * config/s390/s390.opt (-munaligned-symbols): New option.
3554 2023-08-01  Richard Ball  <richard.ball@arm.com>
3556         * gimple-fold.cc (fold_ctor_reference):
3557         Add support for poly_int.
3559 2023-08-01  Georg-Johann Lay  <avr@gjlay.de>
3561         PR target/110220
3562         * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
3563         LABEL_NUSES of new conditional branch instruction.
3565 2023-08-01  Jan Hubicka  <jh@suse.cz>
3567         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
3568         constant prologue peeling.
3570 2023-08-01  Christophe Lyon  <christophe.lyon@linaro.org>
3572         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
3574 2023-08-01  Pan Li  <pan2.li@intel.com>
3575             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3577         * config/riscv/riscv.cc (DYNAMIC_FRM_RTL): New macro.
3578         (STATIC_FRM_P): Ditto.
3579         (struct mode_switching_info): New struct for mode switching.
3580         (struct machine_function): Add new field mode switching.
3581         (riscv_emit_frm_mode_set): Add DYN_CALL emit.
3582         (riscv_frm_adjust_mode_after_call): New function for call mode.
3583         (riscv_frm_emit_after_call_in_bb_end): New function for emit
3584         insn when call as the end of bb.
3585         (riscv_frm_mode_needed): New function for frm mode needed.
3586         (frm_unknown_dynamic_p): Remove call check.
3587         (riscv_mode_needed): Extrac function for frm.
3588         (riscv_frm_mode_after): Add DYN_CALL after.
3589         (riscv_mode_entry): Remove backup rtl initialization.
3590         * config/riscv/vector.md (frm_mode): Add dyn_call.
3591         (fsrmsi_restore_exit): Rename to _volatile.
3592         (fsrmsi_restore_volatile): Likewise.
3594 2023-08-01  Pan Li  <pan2.li@intel.com>
3596         * config/riscv/riscv-vector-builtins-bases.cc
3597         (class reverse_binop_frm): Add new template for reversed frm.
3598         (vfsub_frm_obj): New obj.
3599         (vfrsub_frm_obj): Likewise.
3600         * config/riscv/riscv-vector-builtins-bases.h:
3601         (vfsub_frm): New declaration.
3602         (vfrsub_frm): Likewise.
3603         * config/riscv/riscv-vector-builtins-functions.def
3604         (vfsub_frm): New function define.
3605         (vfrsub_frm): Likewise.
3607 2023-08-01  Andrew Pinski  <apinski@marvell.com>
3609         PR tree-optimization/93044
3610         * match.pd (nested int casts): A truncation (to the same size or smaller)
3611         can always remove the inner cast.
3613 2023-07-31  Hamza Mahfooz  <someguy@effective-light.com>
3615         PR c/65213
3616         * doc/invoke.texi (-Wmissing-variable-declarations): Document
3617         new option.
3619 2023-07-31  Andrew Pinski  <apinski@marvell.com>
3621         PR tree-optimization/106164
3622         * match.pd (`a != b & a <= b`, `a != b & a >= b`,
3623         `a == b | a < b`, `a == b | a > b`): Handle these cases
3624         too.
3626 2023-07-31  Andrew Pinski  <apinski@marvell.com>
3628         PR tree-optimization/106164
3629         * match.pd: Extend the `(X CMP1 CST1) AND/IOR (X CMP2 CST2)`
3630         patterns to support `(X CMP1 Y) AND/IOR (X CMP2 Y)`.
3632 2023-07-31  Andrew Pinski  <apinski@marvell.com>
3634         PR tree-optimization/100864
3635         * generic-match-head.cc (bitwise_inverted_equal_p): New function.
3636         * gimple-match-head.cc (bitwise_inverted_equal_p): New macro.
3637         (gimple_bitwise_inverted_equal_p): New function.
3638         * match.pd ((~x | y) & x): Use bitwise_inverted_equal_p
3639         instead of direct matching bit_not.
3641 2023-07-31  Costas Argyris  <costas.argyris@gmail.com>
3643         PR driver/77576
3644         * gcc-ar.cc (main): Expand argv and use
3645         temporary response file to call ar if any
3646         expansions were made.
3648 2023-07-31  Andrew MacLeod  <amacleod@redhat.com>
3650         PR tree-optimization/110582
3651         * gimple-range-fold.cc (fur_list::get_operand): Do not use the
3652         range vector for non-ssa names.
3654 2023-07-31  David Malcolm  <dmalcolm@redhat.com>
3656         PR analyzer/109361
3657         * diagnostic-client-data-hooks.h (class sarif_object): New forward
3658         decl.
3659         (diagnostic_client_data_hooks::add_sarif_invocation_properties):
3660         New vfunc.
3661         * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h".
3662         (class sarif_invocation): Inherit from sarif_object rather than
3663         json::object.
3664         (class sarif_result): Likewise.
3665         (class sarif_ice_notification): Likewise.
3666         (sarif_object::get_or_create_properties): New.
3667         (sarif_invocation::prepare_to_flush): Add "context" param.  Use it
3668         to call the context's add_sarif_invocation_properties hook.
3669         (sarif_builder::flush_to_file): Pass m_context to
3670         sarif_invocation::prepare_to_flush.
3671         * diagnostic-format-sarif.h: New header.
3672         * doc/invoke.texi (Developer Options): Clarify that -ftime-report
3673         writes to stderr.  Document that if SARIF diagnostic output is
3674         requested then any timing information is written in JSON form as
3675         part of the SARIF output, rather than to stderr.
3676         * timevar.cc: Include "json.h".
3677         (timer::named_items::m_hash_map): Split out type into...
3678         (timer::named_items::hash_map_t): ...this new typedef.
3679         (timer::named_items::make_json): New function.
3680         (timevar_diff): New function.
3681         (make_json_for_timevar_time_def): New function.
3682         (timer::timevar_def::make_json): New function.
3683         (timer::make_json): New function.
3684         * timevar.h (class json::value): New forward decl.
3685         (timer::make_json): New decl.
3686         (timer::timevar_def::make_json): New decl.
3687         * tree-diagnostic-client-data-hooks.cc: Include
3688         "diagnostic-format-sarif.h" and "timevar.h".
3689         (compiler_data_hooks::add_sarif_invocation_properties): New vfunc
3690         implementation.
3692 2023-07-31  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
3694         * combine.cc (simplify_compare_const): Narrow comparison of
3695         memory and constant.
3696         (try_combine): Adapt new function signature.
3697         (simplify_comparison): Adapt new function signature.
3699 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
3701         * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
3702         variable.
3703         (expand_vector_init_insert_elems): Ditto.
3705 2023-07-31  Hao Liu  <hliu@os.amperecomputing.com>
3707         PR target/110625
3708         * config/aarch64/aarch64.cc (count_ops): Only '* count' for
3709         single_defuse_cycle while counting reduction_latency.
3711 2023-07-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3713         * internal-fn.def (DEF_INTERNAL_COND_FN): New macro.
3714         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
3715         (COND_ADD): Remove.
3716         (COND_SUB): Ditto.
3717         (COND_MUL): Ditto.
3718         (COND_DIV): Ditto.
3719         (COND_MOD): Ditto.
3720         (COND_RDIV): Ditto.
3721         (COND_MIN): Ditto.
3722         (COND_MAX): Ditto.
3723         (COND_FMIN): Ditto.
3724         (COND_FMAX): Ditto.
3725         (COND_AND): Ditto.
3726         (COND_IOR): Ditto.
3727         (COND_XOR): Ditto.
3728         (COND_SHL): Ditto.
3729         (COND_SHR): Ditto.
3730         (COND_FMA): Ditto.
3731         (COND_FMS): Ditto.
3732         (COND_FNMA): Ditto.
3733         (COND_FNMS): Ditto.
3734         (COND_NEG): Ditto.
3735         (COND_LEN_ADD): Ditto.
3736         (COND_LEN_SUB): Ditto.
3737         (COND_LEN_MUL): Ditto.
3738         (COND_LEN_DIV): Ditto.
3739         (COND_LEN_MOD): Ditto.
3740         (COND_LEN_RDIV): Ditto.
3741         (COND_LEN_MIN): Ditto.
3742         (COND_LEN_MAX): Ditto.
3743         (COND_LEN_FMIN): Ditto.
3744         (COND_LEN_FMAX): Ditto.
3745         (COND_LEN_AND): Ditto.
3746         (COND_LEN_IOR): Ditto.
3747         (COND_LEN_XOR): Ditto.
3748         (COND_LEN_SHL): Ditto.
3749         (COND_LEN_SHR): Ditto.
3750         (COND_LEN_FMA): Ditto.
3751         (COND_LEN_FMS): Ditto.
3752         (COND_LEN_FNMA): Ditto.
3753         (COND_LEN_FNMS): Ditto.
3754         (COND_LEN_NEG): Ditto.
3755         (ADD): New macro define.
3756         (SUB): Ditto.
3757         (MUL): Ditto.
3758         (DIV): Ditto.
3759         (MOD): Ditto.
3760         (RDIV): Ditto.
3761         (MIN): Ditto.
3762         (MAX): Ditto.
3763         (FMIN): Ditto.
3764         (FMAX): Ditto.
3765         (AND): Ditto.
3766         (IOR): Ditto.
3767         (XOR): Ditto.
3768         (SHL): Ditto.
3769         (SHR): Ditto.
3770         (FMA): Ditto.
3771         (FMS): Ditto.
3772         (FNMA): Ditto.
3773         (FNMS): Ditto.
3774         (NEG): Ditto.
3776 2023-07-31  Roger Sayle  <roger@nextmovesoftware.com>
3778         PR target/110843
3779         * config/i386/i386-features.cc (compute_convert_gain): Check
3780         TARGET_AVX512VL (not TARGET_AVX512F) when considering V2DImode
3781         and V4SImode rotates in STV.
3782         (general_scalar_chain::convert_rotate): Likewise.
3784 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
3786         * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`.
3787         * config/riscv/riscv-protos.h (get_mask_mode): Update return
3788         type.
3789         * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove
3790         `.require ()`.
3791         (emit_vlmax_insn): Ditto.
3792         (emit_vlmax_fp_insn): Ditto.
3793         (emit_vlmax_ternary_insn): Ditto.
3794         (emit_vlmax_fp_ternary_insn): Ditto.
3795         (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
3796         (emit_nonvlmax_insn): Ditto.
3797         (emit_vlmax_slide_insn): Ditto.
3798         (emit_nonvlmax_slide_tu_insn): Ditto.
3799         (emit_vlmax_merge_insn): Ditto.
3800         (emit_vlmax_masked_insn): Ditto.
3801         (emit_nonvlmax_masked_insn): Ditto.
3802         (emit_vlmax_masked_store_insn): Ditto.
3803         (emit_nonvlmax_masked_store_insn): Ditto.
3804         (emit_vlmax_masked_mu_insn): Ditto.
3805         (emit_nonvlmax_tu_insn): Ditto.
3806         (emit_nonvlmax_fp_tu_insn): Ditto.
3807         (emit_scalar_move_insn): Ditto.
3808         (emit_vlmax_compress_insn): Ditto.
3809         (emit_vlmax_reduction_insn): Ditto.
3810         (emit_vlmax_fp_reduction_insn): Ditto.
3811         (emit_nonvlmax_fp_reduction_insn): Ditto.
3812         (expand_vec_series): Ditto.
3813         (expand_vector_init_merge_repeating_sequence): Ditto.
3814         (expand_vec_perm): Ditto.
3815         (shuffle_merge_patterns): Ditto.
3816         (shuffle_compress_patterns): Ditto.
3817         (shuffle_decompress_patterns): Ditto.
3818         (expand_reduction): Ditto.
3819         (get_mask_mode): Update return type.
3820         * config/riscv/riscv.cc (riscv_get_mask_mode): Check vector type
3821         is valid, and use new get_mask_mode interface.
3823 2023-07-31  Pan Li  <pan2.li@intel.com>
3825         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
3826         Move rm suffix before mask.
3828 2023-07-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3830         * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern.
3831         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec
3832         support.
3834 2023-07-29  Roger Sayle  <roger@nextmovesoftware.com>
3836         PR target/110790
3837         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
3838         (extzv<mode>): Likewise.
3839         (insv<mode>): Likewise.
3840         (*testqi_ext_3): Likewise.
3841         (*btr<mode>_2): Likewise.
3842         (define_split): Likewise.
3843         (*btsq_imm): Likewise.
3844         (*btrq_imm): Likewise.
3845         (*btcq_imm): Likewise.
3846         (define_peephole2 x3): Likewise.
3847         (*bt<mode>): Likewise
3848         (*bt<mode>_mask): New define_insn_and_split.
3849         (*jcc_bt<mode>): Use QImode for offsets.
3850         (*jcc_bt<mode>_1): Delete obsolete pattern.
3851         (*jcc_bt<mode>_mask): Use QImode offsets.
3852         (*jcc_bt<mode>_mask_1): Likewise.
3853         (define_split): Likewise.
3854         (*bt<mode>_setcqi): Likewise.
3855         (*bt<mode>_setncqi): Likewise.
3856         (*bt<mode>_setnc<mode>): Likewise.
3857         (*bt<mode>_setncqi_2): Likewise.
3858         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
3859         (bmi2_bzhi_<mode>3): Use QImode offsets.
3860         (*bmi2_bzhi_<mode>3): Likewise.
3861         (*bmi2_bzhi_<mode>3_1): Likewise.
3862         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
3863         (@tbm_bextri_<mode>): Likewise.
3865 2023-07-29  Jan Hubicka  <jh@suse.cz>
3867         * profile-count.cc (profile_probability::sqrt): New member function.
3868         (profile_probability::pow): Likewise.
3869         * profile-count.h: (profile_probability::sqrt): Declare
3870         (profile_probability::pow): Likewise.
3871         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
3873 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
3875         * gimple-range-cache.cc (ssa_cache::merge_range): New.
3876         (ssa_lazy_cache::merge_range): New.
3877         * gimple-range-cache.h (class ssa_cache): Adjust protoypes.
3878         (class ssa_lazy_cache): Ditto.
3879         * gimple-range.cc (assume_query::calculate_op): Use merge_range.
3881 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
3883         * tree-ssa-propagate.cc (substitute_and_fold_engine::value_on_edge):
3884         Move from value-query.cc.
3885         (substitute_and_fold_engine::value_of_stmt): Ditto.
3886         (substitute_and_fold_engine::range_of_expr): New.
3887         * tree-ssa-propagate.h (substitute_and_fold_engine): Inherit from
3888         range_query.  New prototypes.
3889         * value-query.cc (value_query::value_on_edge): Relocate.
3890         (value_query::value_of_stmt): Ditto.
3891         * value-query.h (class value_query): Remove.
3892         (class range_query): Remove base class.  Adjust prototypes.
3894 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
3896         PR tree-optimization/110205
3897         * gimple-range-cache.h (ranger_cache::m_estimate): Delete.
3898         * range-op-mixed.h (operator_bitwise_xor::op1_op2_relation_effect):
3899         Add final override.
3900         * range-op.cc (operator_lshift): Add missing final overrides.
3901         (operator_rshift): Ditto.
3903 2023-07-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
3905         * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
3906         optimizations in BPF target.
3908 2023-07-28  Honza  <jh@ryzen4.suse.cz>
3910         * cfgloopmanip.cc (loop_count_in): Break out from ...
3911         (loop_exit_for_scaling): Break out from ...
3912         (update_loop_exit_probability_scale_dom_bbs): Break out from ...;
3913         add more sanity check and debug info.
3914         (scale_loop_profile): ... here.
3915         (create_empty_loop_on_edge): Fix whitespac.
3916         * cfgloopmanip.h (update_loop_exit_probability_scale_dom_bbs): Declare.
3917         * loop-unroll.cc (unroll_loop_constant_iterations): Use
3918         update_loop_exit_probability_scale_dom_bbs.
3919         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Remove.
3920         (tree_transform_and_unroll_loop): Use
3921         update_loop_exit_probability_scale_dom_bbs.
3922         * tree-ssa-loop-split.cc (split_loop): Use
3923         update_loop_exit_probability_scale_dom_bbs.
3925 2023-07-28  Jan Hubicka  <jh@suse.cz>
3927         PR middle-end/77689
3928         * tree-ssa-loop-split.cc: Include value-query.h.
3929         (split_at_bb_p): Analyze cases where EQ/NE can be turned
3930         into LT/LE/GT/GE; return updated guard code.
3931         (split_loop): Use guard code.
3933 2023-07-28  Roger Sayle  <roger@nextmovesoftware.com>
3934             Richard Biener  <rguenther@suse.de>
3936         PR middle-end/28071
3937         PR rtl-optimization/110587
3938         * expr.cc (emit_group_load_1): Simplify logic for calling
3939         force_reg on ORIG_SRC, to avoid making a copy if the source
3940         is already in a pseudo register.
3942 2023-07-28  Jan Hubicka  <jh@suse.cz>
3944         PR middle-end/106923
3945         * tree-ssa-loop-split.cc (connect_loops): Change probability
3946         of the test preconditioning second loop to very_likely.
3947         (fix_loop_bb_probability): Handle correctly case where
3948         on of the arms of the conditional is empty.
3949         (split_loop): Fold the test guarding first condition to
3950         see if it is constant true; Set correct entry block
3951         probabilities of the split loops; determine correct loop
3952         eixt probabilities.
3954 2023-07-28  xuli  <xuli1@eswincomputing.com>
3956         * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
3957         vsadd[u] and vssub[u].
3958         * config/riscv/vector.md: Ditto.
3960 2023-07-28  Jan Hubicka  <jh@suse.cz>
3962         * tree-ssa-loop-split.cc (split_loop): Also support NE driven
3963         loops when IV test is not overflowing.
3965 2023-07-28  liuhongt  <hongtao.liu@intel.com>
3967         PR target/110788
3968         * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add
3969         UNSPEC_MASKOP.
3970         (avx512cd_maskw_vec_dup<mode>): Ditto.
3972 2023-07-27  David Faust  <david.faust@oracle.com>
3974         PR target/110782
3975         PR target/110784
3976         * config/bpf/bpf.opt (msmov): New option.
3977         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
3978         * config/bpf/bpf.md (*extendsidi2): New.
3979         (extendhidi2): New.
3980         (extendqidi2): New.
3981         (extendsisi2): New.
3982         (extendhisi2): New.
3983         (extendqisi2): New.
3984         * doc/invoke.texi (Option Summary): Add -msmov eBPF option.
3985         (eBPF Options): Add -m[no-]smov.  Document that -mcpu=v4
3986         also enables -msmov.
3988 2023-07-27  David Faust  <david.faust@oracle.com>
3990         * doc/invoke.texi (Option Summary): Remove -mkernel eBPF option.
3991         Add -mbswap and -msdiv eBPF options.
3992         (eBPF Options): Remove -mkernel.  Add -mno-{jmpext, jmp32,
3993         alu32, v3-atomics, bswap, sdiv}.  Document that -mcpu=v4 also
3994         enables -msdiv.
3996 2023-07-27  David Faust  <david.faust@oracle.com>
3998         * config/bpf/bpf.md (add<AM:mode>3): Use %w2 instead of %w1
3999         in pseudo-C dialect output template.
4000         (sub<AM:mode>3): Likewise.
4002 2023-07-27  Jan Hubicka  <jh@suse.cz>
4004         * tree-vect-loop.cc (optimize_mask_stores): Make store
4005         likely.
4007 2023-07-27  Jan Hubicka  <jh@suse.cz>
4009         * cfgloop.h (single_dom_exit): Declare.
4010         * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare.
4011         * cfgrtl.cc (struct cfg_hooks): Fix comment.
4012         * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge.
4013         * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here.
4014         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling):
4015         Break out from ...
4016         (tree_transform_and_unroll_loop): ... here;
4018 2023-07-27  Jan Hubicka  <jh@suse.cz>
4020         * cfgloopmanip.cc (scale_dominated_blocks_in_loop): Move here from
4021         tree-ssa-loop-manip.cc and avoid recursion.
4022         (scale_loop_profile): Use scale_dominated_blocks_in_loop.
4023         (duplicate_loop_body_to_header_edge): Add DLTHE_FLAG_FLAT_PROFILE
4024         flag.
4025         * cfgloopmanip.h (DLTHE_FLAG_FLAT_PROFILE): Define.
4026         (scale_dominated_blocks_in_loop): Declare.
4027         * predict.cc (dump_prediction): Do not ICE on uninitialized probability.
4028         (change_edge_frequency): Remove.
4029         * predict.h (change_edge_frequency): Remove.
4030         * tree-ssa-loop-manip.cc (scale_dominated_blocks_in_loop): Move to
4031         cfgloopmanip.cc.
4032         (niter_for_unrolled_loop): Remove.
4033         (tree_transform_and_unroll_loop): Fix profile update.
4035 2023-07-27  Jan Hubicka  <jh@suse.cz>
4037         * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
4038         to guessed; fix count of new_bb.
4040 2023-07-27  Jan Hubicka  <jh@suse.cz>
4042         * profile-count.h (profile_count::apply_probability): Fix
4043         handling of uninitialized probabilities, optimize scaling
4044         by probability 1.
4046 2023-07-27  Richard Biener  <rguenther@suse.de>
4048         PR tree-optimization/91838
4049         * gimple-match-head.cc: Include attribs.h and asan.h.
4050         * generic-match-head.cc: Likewise.
4051         * match.pd (([rl]shift @0 out-of-bounds) -> zero): New pattern.
4053 2023-07-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4055         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
4056         (ADJUST_ALIGNMENT): Ditto.
4057         (ADJUST_PRECISION): Ditto.
4058         (VLS_MODES): Ditto.
4059         (VECTOR_MODE_WITH_PREFIX): Ditto.
4060         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro.
4061         * config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function.
4062         * config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include.
4063         (legitimize_move): Enable basic VLS modes support.
4064         (get_vlmul): Ditto.
4065         (get_ratio): Ditto.
4066         (get_vector_mode): Ditto.
4067         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes.
4068         * config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function.
4069         (VLS_ENTRY): New macro.
4070         (riscv_v_ext_mode_p): Add vls modes.
4071         (riscv_get_v_regno_alignment): New function.
4072         (riscv_print_operand): Add vls modes.
4073         (riscv_hard_regno_nregs): Ditto.
4074         (riscv_hard_regno_mode_ok): Ditto.
4075         (riscv_regmode_natural_size): Ditto.
4076         (riscv_vectorize_preferred_vector_alignment): Ditto.
4077         * config/riscv/riscv.md: Ditto.
4078         * config/riscv/vector-iterators.md: Ditto.
4079         * config/riscv/vector.md: Ditto.
4080         * config/riscv/autovec-vls.md: New file.
4082 2023-07-27  Pan Li  <pan2.li@intel.com>
4084         * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
4085         (vread_csr): Ditto.
4086         (vwrite_csr): Ditto.
4088 2023-07-27  demin.han  <demin.han@starfivetech.com>
4090         * config/riscv/autovec.md: Delete which_alternative use in split
4092 2023-07-27  Richard Biener  <rguenther@suse.de>
4094         * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
4095         use a worklist ...
4096         (pass_sink_code::execute): ... in the caller.
4098 2023-07-27  Kewen Lin  <linkw@linux.ibm.com>
4099             Richard Biener  <rguenther@suse.de>
4101         PR tree-optimization/110776
4102         * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
4103         as scalar load.
4105 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
4107         * config/riscv/riscv.md: Include zicond.md
4108         * config/riscv/zicond.md: New file.
4110 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
4112         * common/config/riscv/riscv-common.cc: New extension.
4113         * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
4114         (TARGET_ZICOND): New target.
4116 2023-07-26  Carl Love  <cel@us.ibm.com>
4118         * config/rs6000/rs6000-c.cc (find_instance): Add new parameter that
4119         specifies the number of built-in arguments to check.
4120         (altivec_resolve_overloaded_builtin): Update calls to find_instance
4121         to pass the number of built-in arguments to be checked.
4123 2023-07-26  David Faust  <david.faust@oracle.com>
4125         * config/bpf/bpf.opt (mv3-atomics): New option.
4126         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
4127         * config/bpf/bpf.h (enum_reg_class): Add R0 class.
4128         (REG_CLASS_NAMES): Likewise.
4129         (REG_CLASS_CONTENTS): Likewise.
4130         (REGNO_REG_CLASS): Handle R0.
4131         * config/bpf/bpf.md (UNSPEC_XADD): Rename to UNSPEC_AADD.
4132         (UNSPEC_AAND): New unspec.
4133         (UNSPEC_AOR): Likewise.
4134         (UNSPEC_AXOR): Likewise.
4135         (UNSPEC_AFADD): Likewise.
4136         (UNSPEC_AFAND): Likewise.
4137         (UNSPEC_AFOR): Likewise.
4138         (UNSPEC_AFXOR): Likewise.
4139         (UNSPEC_AXCHG): Likewise.
4140         (UNSPEC_ACMPX): Likewise.
4141         (atomic_add<mode>): Use UNSPEC_AADD and atomic type attribute.
4142         Move to...
4143         * config/bpf/atomic.md: ...Here. New file.
4144         * config/bpf/constraints.md (t): New constraint for R0.
4145         * doc/invoke.texi (eBPF Options): Document -mv3-atomics.
4147 2023-07-26  Matthew Malcomson  <matthew.malcomson@arm.com>
4149         * tree-vect-stmts.cc (get_group_load_store_type): Reformat
4150         comment.
4152 2023-07-26  Carl Love  <cel@us.ibm.com>
4154         * config/rs6000/rs6000-builtins.def: Rename
4155         __builtin_altivec_vreplace_un_uv2di as __builtin_altivec_vreplace_un_udi
4156         __builtin_altivec_vreplace_un_uv4si as __builtin_altivec_vreplace_un_usi
4157         __builtin_altivec_vreplace_un_v2df as __builtin_altivec_vreplace_un_df
4158         __builtin_altivec_vreplace_un_v2di as __builtin_altivec_vreplace_un_di
4159         __builtin_altivec_vreplace_un_v4sf as __builtin_altivec_vreplace_un_sf
4160         __builtin_altivec_vreplace_un_v4si as __builtin_altivec_vreplace_un_si.
4161         Rename VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_UV4SI as
4162         VREPLACE_UN_USI, VREPLACE_UN_V2DF as VREPLACE_UN_DF,
4163         VREPLACE_UN_V2DI as VREPLACE_UN_DI, VREPLACE_UN_V4SF as
4164         VREPLACE_UN_SF, VREPLACE_UN_V4SI as VREPLACE_UN_SI.
4165         Rename vreplace_un_v2di as vreplace_un_di, vreplace_un_v4si as
4166         vreplace_un_si, vreplace_un_v2df as vreplace_un_df,
4167         vreplace_un_v2di as vreplace_un_di, vreplace_un_v4sf as
4168         vreplace_un_sf, vreplace_un_v4si as vreplace_un_si.
4169         * config/rs6000/rs6000-c.cc (find_instance): Add case
4170         RS6000_OVLD_VEC_REPLACE_UN.
4171         * config/rs6000/rs6000-overload.def (__builtin_vec_replace_un):
4172         Fix first argument type.  Rename VREPLACE_UN_UV4SI as
4173         VREPLACE_UN_USI, VREPLACE_UN_V4SI as VREPLACE_UN_SI,
4174         VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_V2DI as
4175         VREPLACE_UN_DI, VREPLACE_UN_V4SF as VREPLACE_UN_SF,
4176         VREPLACE_UN_V2DF as VREPLACE_UN_DF.
4177         * config/rs6000/vsx.md (REPLACE_ELT): Rename the mode_iterator
4178         REPLACE_ELT_V for vector modes.
4179         (REPLACE_ELT): New scalar mode iterator.
4180         (REPLACE_ELT_char): Add scalar attributes.
4181         (vreplace_un_<mode>): Change iterator and mode attribute.
4183 2023-07-26  David Malcolm  <dmalcolm@redhat.com>
4185         PR analyzer/104940
4186         * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
4188 2023-07-26  Richard Biener  <rguenther@suse.de>
4190         PR tree-optimization/106081
4191         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
4192         Assign layout -1 to splats.
4194 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
4196         * range-op-mixed.h (class operator_cast): Add update_bitmask.
4197         * range-op.cc (operator_cast::update_bitmask): New.
4198         (operator_cast::fold_range): Call update_bitmask.
4200 2023-07-26  Li Xu  <xuli1@eswincomputing.com>
4202         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Change
4203         scalar type to float16, eliminate warning.
4204         (vfloat16mf4x3_t): Ditto.
4205         (vfloat16mf4x4_t): Ditto.
4206         (vfloat16mf4x5_t): Ditto.
4207         (vfloat16mf4x6_t): Ditto.
4208         (vfloat16mf4x7_t): Ditto.
4209         (vfloat16mf4x8_t): Ditto.
4210         (vfloat16mf2x2_t): Ditto.
4211         (vfloat16mf2x3_t): Ditto.
4212         (vfloat16mf2x4_t): Ditto.
4213         (vfloat16mf2x5_t): Ditto.
4214         (vfloat16mf2x6_t): Ditto.
4215         (vfloat16mf2x7_t): Ditto.
4216         (vfloat16mf2x8_t): Ditto.
4217         (vfloat16m1x2_t): Ditto.
4218         (vfloat16m1x3_t): Ditto.
4219         (vfloat16m1x4_t): Ditto.
4220         (vfloat16m1x5_t): Ditto.
4221         (vfloat16m1x6_t): Ditto.
4222         (vfloat16m1x7_t): Ditto.
4223         (vfloat16m1x8_t): Ditto.
4224         (vfloat16m2x2_t): Ditto.
4225         (vfloat16m2x3_t): Ditto.
4226         (vfloat16m2x4_t): Ditto.
4227         (vfloat16m4x2_t): Ditto.
4228         * config/riscv/vector-iterators.md: add RVVM4x2DF in iterator V4T.
4229         * config/riscv/vector.md: add tuple mode in attr sew.
4231 2023-07-26  Uros Bizjak  <ubizjak@gmail.com>
4233         PR target/110762
4234         * config/i386/i386.md (plusminusmult): New code iterator.
4235         * config/i386/mmx.md (mmxdoublevecmode): New mode attribute.
4236         (movq_<mode>_to_sse): New expander.
4237         (<plusminusmult:insn>v2sf3): Macroize expander from addv2sf3,
4238         subv2sf3 and mulv2sf3 using plusminusmult code iterator.  Rewrite
4239         as a wrapper around V4SFmode operation.
4240         (mmx_addv2sf3): Change operand 1 and operand 2 predicates to
4241         nonimmediate_operand.
4242         (*mmx_addv2sf3): Remove SSE alternatives.  Change operand 1 and
4243         operand 2 predicates to nonimmediate_operand.
4244         (mmx_subv2sf3): Change operand 2 predicate to nonimmediate_operand.
4245         (mmx_subrv2sf3): Change operand 1 predicate to nonimmediate_operand.
4246         (*mmx_subv2sf3): Remove SSE alternatives.  Change operand 1 and
4247         operand 2 predicates to nonimmediate_operand.
4248         (mmx_mulv2sf3): Change operand 1 and operand 2 predicates to
4249         nonimmediate_operand.
4250         (*mmx_mulv2sf3): Remove SSE alternatives.  Change operand 1 and
4251         operand 2 predicates to nonimmediate_operand.
4252         (divv2sf3): Rewrite as a wrapper around V4SFmode operation.
4253         (<smaxmin:code>v2sf3): Ditto.
4254         (mmx_<smaxmin:code>v2sf3): Change operand 1 and operand 2
4255         predicates to nonimmediate_operand.
4256         (*mmx_<smaxmin:code>v2sf3): Remove SSE alternatives.  Change
4257         operand 1 and operand 2 predicates to nonimmediate_operand.
4258         (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
4259         (sqrtv2sf2): Rewrite as a wrapper around V4SFmode operation.
4260         (*mmx_haddv2sf3_low): Ditto.
4261         (*mmx_hsubv2sf3_low): Ditto.
4262         (vec_addsubv2sf3): Ditto.
4263         (*mmx_maskcmpv2sf3_comm): Remove.
4264         (*mmx_maskcmpv2sf3): Remove.
4265         (vec_cmpv2sfv2si): Rewrite as a wrapper around V4SFmode operation.
4266         (vcond<V2FI:mode>v2sf): Ditto.
4267         (fmav2sf4): Ditto.
4268         (fmsv2sf4): Ditto.
4269         (fnmav2sf4): Ditto.
4270         (fnmsv2sf4): Ditto.
4271         (fix_truncv2sfv2si2): Ditto.
4272         (fixuns_truncv2sfv2si2): Ditto.
4273         (mmx_fix_truncv2sfv2si2): Remove SSE alternatives.
4274         Change operand 1 predicate to nonimmediate_operand.
4275         (floatv2siv2sf2): Rewrite as a wrapper around V4SFmode operation.
4276         (floatunsv2siv2sf2): Ditto.
4277         (mmx_floatv2siv2sf2): Remove SSE alternatives.
4278         Change operand 1 predicate to nonimmediate_operand.
4279         (nearbyintv2sf2): Rewrite as a wrapper around V4SFmode operation.
4280         (rintv2sf2): Ditto.
4281         (lrintv2sfv2si2): Ditto.
4282         (ceilv2sf2): Ditto.
4283         (lceilv2sfv2si2): Ditto.
4284         (floorv2sf2): Ditto.
4285         (lfloorv2sfv2si2): Ditto.
4286         (btruncv2sf2): Ditto.
4287         (roundv2sf2): Ditto.
4288         (lroundv2sfv2si2): Ditto.
4289         (*mmx_roundv2sf2): Remove.
4291 2023-07-26  Jose E. Marchesi  <jose.marchesi@oracle.com>
4293         * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
4295 2023-07-26  Richard Biener  <rguenther@suse.de>
4297         PR tree-optimization/110799
4298         * tree-ssa-pre.cc (compute_avail): More thoroughly match
4299         up TBAA behavior of redundant loads.
4301 2023-07-26  Jakub Jelinek  <jakub@redhat.com>
4303         PR tree-optimization/110755
4304         * range-op-float.cc (frange_arithmetic): Change +0 result to -0
4305         for PLUS_EXPR or MINUS_EXPR if -frounding-math, inf is negative and
4306         it is exact op1 + (-op1) or op1 - op1.
4308 2023-07-26  Kewen Lin  <linkw@linux.ibm.com>
4310         PR target/110741
4311         * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
4312         operands output with "x".
4314 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
4316         * range-op.cc (class operator_absu): Add update_bitmask.
4317         (operator_absu::update_bitmask): New.
4319 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
4321         * range-op-mixed.h (class operator_abs): Add update_bitmask.
4322         * range-op.cc (operator_abs::update_bitmask): New.
4324 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
4326         * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
4327         * range-op.cc (operator_bitwise_not::update_bitmask): New.
4329 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
4331         * range-op.cc (update_known_bitmask): Handle unary operators.
4333 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
4335         * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
4337 2023-07-26  Jin Ma  <jinma@linux.alibaba.com>
4339         * config/riscv/riscv.md: Likewise.
4341 2023-07-26  Jan Hubicka  <jh@suse.cz>
4343         * profile-count.cc (profile_count::to_sreal_scale): Value is not know
4344         if we divide by zero.
4346 2023-07-25  David Faust  <david.faust@oracle.com>
4348         * config/bpf/bpf.cc (bpf_print_operand_address): Don't print
4349         enclosing parentheses for pseudo-C dialect.
4350         * config/bpf/bpf.md (zero_exdendhidi2): Add parentheses around
4351         operands of pseudo-C dialect output templates where needed.
4352         (zero_extendqidi2): Likewise.
4353         (zero_extendsidi2): Likewise.
4354         (*mov<MM:mode>): Likewise.
4356 2023-07-25  Aldy Hernandez  <aldyh@redhat.com>
4358         * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
4359         (bit_value_mult_const): Same.
4360         (get_individual_bits): Same.
4362 2023-07-25  Haochen Gui  <guihaoc@gcc.gnu.org>
4364         PR target/103605
4365         * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Gimple
4366         fold RS6000_BIF_XSMINDP and RS6000_BIF_XSMAXDP when fast-math is set.
4367         * config/rs6000/rs6000.md (FMINMAX): New int iterator.
4368         (minmax_op): New int attribute.
4369         (UNSPEC_FMAX, UNSPEC_FMIN): New unspecs.
4370         (f<minmax_op><mode>3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN.
4371         * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set
4372         pattern to fmaxdf3.
4373         (__builtin_vsx_xsmindp): Set pattern to fmindf3.
4375 2023-07-24  David Faust  <david.faust@oracle.com>
4377         * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
4379 2023-07-24  Drew Ross  <drross@redhat.com>
4380             Jakub Jelinek  <jakub@redhat.com>
4382         PR middle-end/109986
4383         * generic-match-head.cc (bitwise_equal_p): New macro.
4384         * gimple-match-head.cc (bitwise_equal_p): New macro.
4385         (gimple_nop_convert): Declare.
4386         (gimple_bitwise_equal_p): Helper for bitwise_equal_p.
4387         * match.pd ((~X | Y) ^ X -> ~(X & Y)): New simplification.
4389 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
4391         * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
4392         single quote rather than backquote in diagnostic.
4394 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
4396         PR target/110783
4397         * config/bpf/bpf.opt: New command-line option -msdiv.
4398         * config/bpf/bpf.md: Conditionalize sdiv/smod on bpf_has_sdiv.
4399         * config/bpf/bpf.cc (bpf_option_override): Initialize
4400         bpf_has_sdiv.
4401         * doc/invoke.texi (eBPF Options): Document -msdiv.
4403 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
4405         * config/riscv/riscv.cc (riscv_option_override): Spell out
4406         greater than and use cannot in diagnostic string.
4408 2023-07-24  Richard Biener  <rguenther@suse.de>
4410         * tree-vectorizer.h (_slp_tree::push_vec_def): Add.
4411         (_slp_tree::vec_stmts): Remove.
4412         (SLP_TREE_VEC_STMTS): Remove.
4413         * tree-vect-slp.cc (_slp_tree::push_vec_def): Define.
4414         (_slp_tree::_slp_tree): Adjust.
4415         (_slp_tree::~_slp_tree): Likewise.
4416         (vect_get_slp_vect_def): Simplify.
4417         (vect_get_slp_defs): Likewise.
4418         (vect_transform_slp_perm_load_1): Adjust.
4419         (vect_add_slp_permutation): Likewise.
4420         (vect_schedule_slp_node): Likewise.
4421         (vectorize_slp_instance_root_stmt): Likewise.
4422         (vect_schedule_scc): Likewise.
4423         * tree-vect-stmts.cc (vectorizable_bswap): Use push_vec_def.
4424         (vectorizable_call): Likewise.
4425         (vectorizable_call): Likewise.
4426         (vect_create_vectorized_demotion_stmts): Likewise.
4427         (vectorizable_conversion): Likewise.
4428         (vectorizable_assignment): Likewise.
4429         (vectorizable_shift): Likewise.
4430         (vectorizable_operation): Likewise.
4431         (vectorizable_load): Likewise.
4432         (vectorizable_condition): Likewise.
4433         (vectorizable_comparison): Likewise.
4434         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Adjust.
4435         (vectorize_fold_left_reduction): Use push_vec_def.
4436         (vect_transform_reduction): Likewise.
4437         (vect_transform_cycle_phi): Likewise.
4438         (vectorizable_lc_phi): Likewise.
4439         (vectorizable_phi): Likewise.
4440         (vectorizable_recurr): Likewise.
4441         (vectorizable_induction): Likewise.
4442         (vectorizable_live_operation): Likewise.
4444 2023-07-24  Richard Biener  <rguenther@suse.de>
4446         * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
4448 2023-07-24  Richard Biener  <rguenther@suse.de>
4450         * config/i386/i386-builtins.cc: Remove tree-vectorizer.h include.
4451         * config/i386/i386-expand.cc: Likewise.
4452         * config/i386/i386-features.cc: Likewise.
4453         * config/i386/i386-options.cc: Likewise.
4455 2023-07-24  Robin Dapp  <rdapp@ventanamicro.com>
4457         * tree-vect-stmts.cc (vectorizable_conversion): Handle
4458         more demotion/promotion for modifier == NONE.
4460 2023-07-24  Roger Sayle  <roger@nextmovesoftware.com>
4462         PR target/110787
4463         PR target/110790
4464         Revert patch.
4465         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
4466         (extzv<mode>): Likewise.
4467         (insv<mode>): Likewise.
4468         (*testqi_ext_3): Likewise.
4469         (*btr<mode>_2): Likewise.
4470         (define_split): Likewise.
4471         (*btsq_imm): Likewise.
4472         (*btrq_imm): Likewise.
4473         (*btcq_imm): Likewise.
4474         (define_peephole2 x3): Likewise.
4475         (*bt<mode>): Likewise
4476         (*bt<mode>_mask): New define_insn_and_split.
4477         (*jcc_bt<mode>): Use QImode for offsets.
4478         (*jcc_bt<mode>_1): Delete obsolete pattern.
4479         (*jcc_bt<mode>_mask): Use QImode offsets.
4480         (*jcc_bt<mode>_mask_1): Likewise.
4481         (define_split): Likewise.
4482         (*bt<mode>_setcqi): Likewise.
4483         (*bt<mode>_setncqi): Likewise.
4484         (*bt<mode>_setnc<mode>): Likewise.
4485         (*bt<mode>_setncqi_2): Likewise.
4486         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
4487         (bmi2_bzhi_<mode>3): Use QImode offsets.
4488         (*bmi2_bzhi_<mode>3): Likewise.
4489         (*bmi2_bzhi_<mode>3_1): Likewise.
4490         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
4491         (@tbm_bextri_<mode>): Likewise.
4493 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
4495         * config/bpf/bpf-opts.h (enum bpf_kernel_version): Remove enum.
4496         * config/bpf/bpf.opt (mkernel): Remove option.
4497         * config/bpf/bpf.cc (bpf_target_macros): Do not define
4498         BPF_KERNEL_VERSION_CODE.
4500 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
4502         PR target/110786
4503         * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default.
4504         (mbswap): New option.
4505         * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4.
4506         * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap.
4507         * config/bpf/bpf.md: Use bswap instructions if available for
4508         bswap* insn, and fix constraint.
4509         * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap.
4511 2023-07-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4513         * config/riscv/autovec.md (fold_left_plus_<mode>): New pattern.
4514         (mask_len_fold_left_plus_<mode>): Ditto.
4515         * config/riscv/riscv-protos.h (enum insn_type): New enum.
4516         (enum reduction_type): Ditto.
4517         (expand_reduction): Add in-order reduction.
4518         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_reduction_insn): New function.
4519         (expand_reduction): Add in-order reduction.
4521 2023-07-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
4523         * tree-vect-loop.cc (get_masked_reduction_fn): Add mask_len_fold_left_plus.
4524         (vectorize_fold_left_reduction): Ditto.
4525         (vectorizable_reduction): Ditto.
4526         (vect_transform_reduction): Ditto.
4528 2023-07-24  Richard Biener  <rguenther@suse.de>
4530         PR tree-optimization/110777
4531         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
4532         Avoid propagating abnormals.
4534 2023-07-24  Richard Biener  <rguenther@suse.de>
4536         PR tree-optimization/110766
4537         * tree-scalar-evolution.cc
4538         (analyze_and_compute_bitwise_induction_effect): Check the PHI
4539         is defined in the loop header.
4541 2023-07-24  Kewen Lin  <linkw@linux.ibm.com>
4543         PR tree-optimization/110740
4544         * tree-vect-loop.cc (vect_analyze_loop_costing): Do not vectorize a
4545         loop with a single scalar iteration.
4547 2023-07-24  Pan Li  <pan2.li@intel.com>
4549         * config/riscv/riscv-vector-builtins-shapes.cc
4550         (struct alu_frm_def): Take range check.
4552 2023-07-22  Vineet Gupta  <vineetg@rivosinc.com>
4554         PR target/110748
4555         * config/riscv/predicates.md (const_0_operand): Add back
4556         const_double.
4558 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
4560         * config/i386/i386-expand.cc (ix86_expand_move): Disable the
4561         64-bit insertions into TImode optimizations with -O0, unless
4562         the function has the "naked" attribute (for PR target/110533).
4564 2023-07-22  Andrew Pinski  <apinski@marvell.com>
4566         PR target/110778
4567         * rtl.h (extended_count): Change last argument type
4568         to bool.
4570 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
4572         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
4573         (extzv<mode>): Likewise.
4574         (insv<mode>): Likewise.
4575         (*testqi_ext_3): Likewise.
4576         (*btr<mode>_2): Likewise.
4577         (define_split): Likewise.
4578         (*btsq_imm): Likewise.
4579         (*btrq_imm): Likewise.
4580         (*btcq_imm): Likewise.
4581         (define_peephole2 x3): Likewise.
4582         (*bt<mode>): Likewise
4583         (*bt<mode>_mask): New define_insn_and_split.
4584         (*jcc_bt<mode>): Use QImode for offsets.
4585         (*jcc_bt<mode>_1): Delete obsolete pattern.
4586         (*jcc_bt<mode>_mask): Use QImode offsets.
4587         (*jcc_bt<mode>_mask_1): Likewise.
4588         (define_split): Likewise.
4589         (*bt<mode>_setcqi): Likewise.
4590         (*bt<mode>_setncqi): Likewise.
4591         (*bt<mode>_setnc<mode>): Likewise.
4592         (*bt<mode>_setncqi_2): Likewise.
4593         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
4594         (bmi2_bzhi_<mode>3): Use QImode offsets.
4595         (*bmi2_bzhi_<mode>3): Likewise.
4596         (*bmi2_bzhi_<mode>3_1): Likewise.
4597         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
4598         (@tbm_bextri_<mode>): Likewise.
4600 2023-07-22  Jeff Law  <jlaw@ventanamicro.com>
4602         * config/bfin/bfin.md (ones): Fix length computation.
4604 2023-07-22  Vladimir N. Makarov  <vmakarov@redhat.com>
4606         * lra-eliminations.cc (update_reg_eliminate): Fix the assert.
4607         (lra_update_fp2sp_elimination): Use HARD_FRAME_POINTER_REGNUM
4608         instead of FRAME_POINTER_REGNUM to spill pseudos.
4610 2023-07-21  Roger Sayle  <roger@nextmovesoftware.com>
4611             Richard Biener  <rguenther@suse.de>
4613         PR c/110699
4614         * gimplify.cc (gimplify_compound_lval):  If the array's type
4615         is error_mark_node then return GS_ERROR.
4617 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
4619         PR target/110770
4620         * config/bpf/bpf.opt: Added option -masm=<dialect>.
4621         * config/bpf/bpf-opts.h (enum bpf_asm_dialect): New type.
4622         * config/bpf/bpf.cc (bpf_print_register): New function.
4623         (bpf_print_register): Support pseudo-c syntax for registers.
4624         (bpf_print_operand_address): Likewise.
4625         * config/bpf/bpf.h (ASM_SPEC): handle -msasm.
4626         (ASSEMBLER_DIALECT): Define.
4627         * config/bpf/bpf.md: Added pseudo-c templates.
4628         * doc/invoke.texi (-masm=): New eBPF option item.
4630 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
4632         * config/bpf/bpf.md: fixed template for neg instruction.
4634 2023-07-21  Jan Hubicka  <jh@suse.cz>
4636         PR target/110727
4637         * tree-vect-loop.cc (scale_profile_for_vect_loop): Avoid scaling flat
4638         profiles by vectorization factor.
4639         (vect_transform_loop): Check for flat profiles.
4641 2023-07-21  Jan Hubicka  <jh@suse.cz>
4643         * cfgloop.h (maybe_flat_loop_profile): Declare
4644         * cfgloopanal.cc (maybe_flat_loop_profile): New function.
4645         * tree-cfg.cc (print_loop_info): Print info about flat profiles.
4647 2023-07-21  Jan Hubicka  <jh@suse.cz>
4649         * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int
4650         * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise.
4651         * predict.cc (estimate_bb_frequencies): Likewise.
4652         * profile.cc (branch_prob): Likewise.
4653         * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise
4655 2023-07-21  Iain Sandoe  <iain@sandoe.co.uk>
4657         * config.in: Regenerate.
4658         * config/darwin.h (DARWIN_LD_DEMANGLE): New.
4659         (LINK_COMMAND_SPEC_A): Add demangle handling.
4660         * configure: Regenerate.
4661         * configure.ac: Detect linker support for '-demangle'.
4663 2023-07-21  Jan Hubicka  <jh@suse.cz>
4665         * sreal.cc (sreal::to_nearest_int): New.
4666         (sreal_verify_basics): Verify also to_nearest_int.
4667         (verify_aritmetics): Likewise.
4668         (sreal_verify_conversions): New.
4669         (sreal_cc_tests): Call sreal_verify_conversions.
4670         * sreal.h: (sreal::to_nearest_int): Declare
4672 2023-07-21  Jan Hubicka  <jh@suse.cz>
4674         * tree-ssa-loop-ch.cc (enum ch_decision): New enum.
4675         (should_duplicate_loop_header_p): Return info on profitability.
4676         (do_while_loop_p): Watch for constant conditionals.
4677         (update_profile_after_ch): Do not sanity check that all
4678         static exits are taken.
4679         (ch_base::copy_headers): Run on all loops.
4680         (pass_ch::process_loop_p): Improve heuristics by handling also
4681         do_while loop and duplicating shortest sequence containing all
4682         winning blocks.
4684 2023-07-21  Jan Hubicka  <jh@suse.cz>
4686         * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
4687         tests first; update finite_p flag.
4689 2023-07-21  Jan Hubicka  <jh@suse.cz>
4691         * cfgloop.cc (flow_loop_dump): Use print_loop_info.
4692         * cfgloop.h (print_loop_info): Declare.
4693         * tree-cfg.cc (print_loop_info): Break out from ...; add
4694         printing of missing fields and profile
4695         (print_loop): ... here.
4697 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4699         * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
4701 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4703         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
4704         (vectorizable_operation): Ditto.
4706 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4708         * config/riscv/autovec.md: Align order of mask and len.
4709         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
4710         (expand_gather_scatter): Ditto.
4711         * doc/md.texi: Ditto.
4712         * internal-fn.cc (add_len_and_mask_args): Ditto.
4713         (add_mask_and_len_args): Ditto.
4714         (expand_partial_load_optab_fn): Ditto.
4715         (expand_partial_store_optab_fn): Ditto.
4716         (expand_scatter_store_optab_fn): Ditto.
4717         (expand_gather_load_optab_fn): Ditto.
4718         (internal_fn_len_index): Ditto.
4719         (internal_fn_mask_index): Ditto.
4720         (internal_len_load_store_bias): Ditto.
4721         * tree-vect-stmts.cc (vectorizable_store): Ditto.
4722         (vectorizable_load): Ditto.
4724 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4726         * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN.
4727         (mask_len_load<mode><vm>): Ditto.
4728         (len_maskstore<mode><vm>): Ditto.
4729         (mask_len_store<mode><vm>): Ditto.
4730         (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
4731         (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
4732         (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
4733         (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
4734         (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
4735         (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
4736         (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
4737         (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
4738         (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
4739         (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
4740         (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
4741         (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
4742         (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
4743         (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
4744         (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
4745         (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
4746         (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
4747         (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
4748         (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
4749         (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
4750         (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
4751         (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
4752         (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
4753         (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
4754         (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
4755         (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
4756         (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
4757         (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
4758         * doc/md.texi: Ditto.
4759         * genopinit.cc (main): Ditto.
4760         (CMP_NAME): Ditto. Ditto.
4761         * gimple-fold.cc (arith_overflowed_p): Ditto.
4762         (gimple_fold_partial_load_store_mem_ref): Ditto.
4763         (gimple_fold_call): Ditto.
4764         * internal-fn.cc (len_maskload_direct): Ditto.
4765         (mask_len_load_direct): Ditto.
4766         (len_maskstore_direct): Ditto.
4767         (mask_len_store_direct): Ditto.
4768         (expand_call_mem_ref): Ditto.
4769         (expand_len_maskload_optab_fn): Ditto.
4770         (expand_mask_len_load_optab_fn): Ditto.
4771         (expand_len_maskstore_optab_fn): Ditto.
4772         (expand_mask_len_store_optab_fn): Ditto.
4773         (direct_len_maskload_optab_supported_p): Ditto.
4774         (direct_mask_len_load_optab_supported_p): Ditto.
4775         (direct_len_maskstore_optab_supported_p): Ditto.
4776         (direct_mask_len_store_optab_supported_p): Ditto.
4777         (internal_load_fn_p): Ditto.
4778         (internal_store_fn_p): Ditto.
4779         (internal_gather_scatter_fn_p): Ditto.
4780         (internal_fn_len_index): Ditto.
4781         (internal_fn_mask_index): Ditto.
4782         (internal_fn_stored_value_index): Ditto.
4783         (internal_len_load_store_bias): Ditto.
4784         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
4785         (MASK_LEN_GATHER_LOAD): Ditto.
4786         (LEN_MASK_LOAD): Ditto.
4787         (MASK_LEN_LOAD): Ditto.
4788         (LEN_MASK_SCATTER_STORE): Ditto.
4789         (MASK_LEN_SCATTER_STORE): Ditto.
4790         (LEN_MASK_STORE): Ditto.
4791         (MASK_LEN_STORE): Ditto.
4792         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
4793         (supports_vec_scatter_store_p): Ditto.
4794         * optabs-tree.cc (target_supports_mask_load_store_p): Ditto.
4795         (target_supports_len_load_store_p): Ditto.
4796         * optabs.def (OPTAB_CD): Ditto.
4797         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto.
4798         (call_may_clobber_ref_p_1): Ditto.
4799         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto.
4800         (dse_optimize_stmt): Ditto.
4801         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
4802         (get_alias_ptr_type_for_ptr_address): Ditto.
4803         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
4804         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
4805         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
4806         (vect_get_strided_load_store_ops): Ditto.
4807         (vectorizable_store): Ditto.
4808         (vectorizable_load): Ditto.
4810 2023-07-21  Haochen Jiang  <haochen.jiang@intel.com>
4812         * config/i386/i386.opt: Fix a typo.
4814 2023-07-21  Richard Biener  <rguenther@suse.de>
4816         PR tree-optimization/88540
4817         * tree-ssa-phiopt.cc (minmax_replacement): Do not give up
4818         with NaNs but handle the simple case by if-converting to a
4819         COND_EXPR.
4821 2023-07-21  Andrew Pinski  <apinski@marvell.com>
4823         * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
4824         transformation.
4826 2023-07-21  Richard Biener  <rguenther@suse.de>
4828         PR tree-optimization/110742
4829         * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout):
4830         Do not materialize an edge permutation in an external node with
4831         vector defs.
4832         (vect_slp_analyze_node_operations_1): Guard purely internal
4833         nodes better.
4835 2023-07-21  Jan Hubicka  <jh@suse.cz>
4837         * cfgloop.cc: Include sreal.h.
4838         (flow_loop_dump): Dump sreal iteration exsitmate.
4839         (get_estimated_loop_iterations): Update.
4840         * cfgloop.h (expected_loop_iterations_by_profile): Declare.
4841         * cfgloopanal.cc (expected_loop_iterations_by_profile): New function.
4842         (expected_loop_iterations_unbounded): Use new API.
4843         * cfgloopmanip.cc (scale_loop_profile): Use
4844         expected_loop_iterations_by_profile
4845         * predict.cc (pass_profile::execute): Likewise.
4846         * profile.cc (branch_prob): Likewise.
4847         * tree-ssa-loop-niter.cc: Include sreal.h.
4848         (estimate_numbers_of_iterations): Likewise
4850 2023-07-21  Kewen Lin  <linkw@linux.ibm.com>
4852         PR tree-optimization/110744
4853         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Correct the index of bias
4854         operand for ifn IFN_LEN_STORE.
4856 2023-07-21  liuhongt  <hongtao.liu@intel.com>
4858         PR target/89701
4859         * common.opt: (fcf-protection=): Add EnumSet attribute to
4860         support combination of params.
4862 2023-07-21  David Malcolm  <dmalcolm@redhat.com>
4864         PR middle-end/110612
4865         * text-art/table.cc (table_geometry::table_geometry): Drop m_table
4866         field.
4867         (table_geometry::table_x_to_canvas_x): Add cast to comparison.
4868         (table_geometry::table_y_to_canvas_y): Likewise.
4869         * text-art/table.h (table_geometry::m_table): Drop unused field.
4870         * text-art/widget.h (wrapper_widget::update_child_alloc_rects):
4871         Add "override".
4873 2023-07-20  Uros Bizjak  <ubizjak@gmail.com>
4875         PR target/110717
4876         * config/i386/i386-features.cc
4877         (general_scalar_chain::compute_convert_gain): Calculate gain
4878         for extend higpart case.
4879         (general_scalar_chain::convert_op): Handle
4880         ASHIFTRT/ASHIFT combined RTX.
4881         (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for
4882         SImode for SSE2 targets.  Handle ASHIFTRT/ASHIFT combined RTX.
4883         * config/i386/i386.md (*extend<dwi>2_doubleword_highpart):
4884         New define_insn_and_split pattern.
4885         (*extendv2di2_highpart_stv): Ditto.
4887 2023-07-20  Vladimir N. Makarov  <vmakarov@redhat.com>
4889         * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
4890         simplification.
4892 2023-07-20  Andrew Pinski  <apinski@marvell.com>
4894         * combine.cc (dump_combine_stats): Remove.
4895         (dump_combine_total_stats): Remove.
4896         (total_attempts, total_merges, total_extras,
4897         total_successes): Remove.
4898         (combine_instructions): Don't increment total stats
4899         instead use statistics_counter_event.
4900         * dumpfile.cc (print_combine_total_stats): Remove.
4901         * dumpfile.h (print_combine_total_stats): Remove.
4902         (dump_combine_total_stats): Remove.
4903         * passes.cc (finish_optimization_passes):
4904         Don't call print_combine_total_stats.
4905         * rtl.h (dump_combine_total_stats): Remove.
4906         (dump_combine_stats): Remove.
4908 2023-07-20  Jan Hubicka  <jh@suse.cz>
4910         * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
4911         logical ops.
4913 2023-07-20  Martin Jambor  <mjambor@suse.cz>
4915         * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New.
4916         (analyzer-text-art-ideal-canvas-width): Likewise.
4917         (analyzer-text-art-string-ellipsis-head-len): Likewise.
4918         (analyzer-text-art-string-ellipsis-tail-len): Likewise.
4920 2023-07-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
4922         * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
4923         Refine code structure.
4925 2023-07-20  Jan Hubicka  <jh@suse.cz>
4927         * tree-ssa-loop-ch.cc (edge_range_query): Rename to ...
4928         (get_range_query): ... this one; do
4929         (static_loop_exit): Add query parametr, turn ranger to reference.
4930         (loop_static_stmt_p): New function.
4931         (loop_static_op_p): New function.
4932         (loop_iv_derived_p): Remove.
4933         (loop_combined_static_and_iv_p): New function.
4934         (should_duplicate_loop_header_p): Discover combined onditionals;
4935         do not track iv derived; improve dumps.
4936         (pass_ch::execute): Fix whitespace.
4938 2023-07-20  Richard Biener  <rguenther@suse.de>
4940         PR tree-optimization/110204
4941         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
4942         Look through copies generated by PRE.
4944 2023-07-20  Matthew Malcomson  <matthew.malcomson@arm.com>
4946         * tree-vect-stmts.cc (get_group_load_store_type): Account for
4947         `gap` when checking if need to peel twice.
4949 2023-07-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4951         PR middle-end/77928
4952         * doc/extend.texi: Document iseqsig builtin.
4953         * builtins.cc (fold_builtin_iseqsig): New function.
4954         (fold_builtin_2): Handle BUILT_IN_ISEQSIG.
4955         (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG.
4956         * builtins.def (BUILT_IN_ISEQSIG): New built-in.
4958 2023-07-20  Pan Li  <pan2.li@intel.com>
4960         * config/riscv/vector.md: Fix incorrect match_operand.
4962 2023-07-20  Roger Sayle  <roger@nextmovesoftware.com>
4964         * config/i386/i386-expand.cc (ix86_expand_move): Don't call
4965         force_reg, to use SUBREG rather than create a new pseudo when
4966         inserting DFmode fields into TImode with insvti_{high,low}part.
4967         * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two
4968         define_insn_and_split...
4969         (*concatditi3_3): 64-bit implementation.  Provide alternative
4970         that allows register allocation to use SSE registers that is
4971         split into vec_concatv2di after reload.
4972         (*concatsidi3_3): 32-bit implementation.
4974 2023-07-20  Richard Biener  <rguenther@suse.de>
4976         PR middle-end/61747
4977         * internal-fn.cc (expand_vec_cond_optab_fn): When the
4978         value operands are equal to the original comparison operands
4979         preserve that equality by re-using the comparison expansion.
4980         * optabs.cc (emit_conditional_move): When the value operands
4981         are equal to the comparison operands and would be forced to
4982         a register by prepare_cmp_insn do so earlier, preserving the
4983         equality.
4985 2023-07-20  Pan Li  <pan2.li@intel.com>
4987         * config/riscv/vector.md: Align pattern format.
4989 2023-07-20  Haochen Jiang  <haochen.jiang@intel.com>
4991         * doc/invoke.texi: Remove AVX512VP2INTERSECT in
4992         Granite Rapids{, D} from documentation.
4994 2023-07-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4996         * config/riscv/autovec.md
4997         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>):
4998         Refactor RVV machine modes.
4999         (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
5000         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
5001         (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
5002         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
5003         (len_mask_gather_load<mode><mode>): Ditto.
5004         (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
5005         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
5006         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
5007         (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
5008         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
5009         (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
5010         (len_mask_scatter_store<mode><mode>): Ditto.
5011         (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
5012         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto.
5013         (ADJUST_NUNITS): Ditto.
5014         (ADJUST_ALIGNMENT): Ditto.
5015         (ADJUST_BYTESIZE): Ditto.
5016         (ADJUST_PRECISION): Ditto.
5017         (RVV_MODES): Ditto.
5018         (RVV_WHOLE_MODES): Ditto.
5019         (RVV_FRACT_MODE): Ditto.
5020         (RVV_NF8_MODES): Ditto.
5021         (RVV_NF4_MODES): Ditto.
5022         (VECTOR_MODES_WITH_PREFIX): Ditto.
5023         (VECTOR_MODE_WITH_PREFIX): Ditto.
5024         (RVV_TUPLE_MODES): Ditto.
5025         (RVV_NF2_MODES): Ditto.
5026         (RVV_TUPLE_PARTIAL_MODES): Ditto.
5027         * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto.
5028         (ENTRY): Ditto.
5029         (TUPLE_ENTRY): Ditto.
5030         (get_vlmul): Ditto.
5031         (get_nf): Ditto.
5032         (get_ratio): Ditto.
5033         (preferred_simd_mode): Ditto.
5034         (autovectorize_vector_modes): Ditto.
5035         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
5036         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
5037         (vbool64_t): Ditto.
5038         (vbool32_t): Ditto.
5039         (vbool16_t): Ditto.
5040         (vbool8_t): Ditto.
5041         (vbool4_t): Ditto.
5042         (vbool2_t): Ditto.
5043         (vbool1_t): Ditto.
5044         (vint8mf8_t): Ditto.
5045         (vuint8mf8_t): Ditto.
5046         (vint8mf4_t): Ditto.
5047         (vuint8mf4_t): Ditto.
5048         (vint8mf2_t): Ditto.
5049         (vuint8mf2_t): Ditto.
5050         (vint8m1_t): Ditto.
5051         (vuint8m1_t): Ditto.
5052         (vint8m2_t): Ditto.
5053         (vuint8m2_t): Ditto.
5054         (vint8m4_t): Ditto.
5055         (vuint8m4_t): Ditto.
5056         (vint8m8_t): Ditto.
5057         (vuint8m8_t): Ditto.
5058         (vint16mf4_t): Ditto.
5059         (vuint16mf4_t): Ditto.
5060         (vint16mf2_t): Ditto.
5061         (vuint16mf2_t): Ditto.
5062         (vint16m1_t): Ditto.
5063         (vuint16m1_t): Ditto.
5064         (vint16m2_t): Ditto.
5065         (vuint16m2_t): Ditto.
5066         (vint16m4_t): Ditto.
5067         (vuint16m4_t): Ditto.
5068         (vint16m8_t): Ditto.
5069         (vuint16m8_t): Ditto.
5070         (vint32mf2_t): Ditto.
5071         (vuint32mf2_t): Ditto.
5072         (vint32m1_t): Ditto.
5073         (vuint32m1_t): Ditto.
5074         (vint32m2_t): Ditto.
5075         (vuint32m2_t): Ditto.
5076         (vint32m4_t): Ditto.
5077         (vuint32m4_t): Ditto.
5078         (vint32m8_t): Ditto.
5079         (vuint32m8_t): Ditto.
5080         (vint64m1_t): Ditto.
5081         (vuint64m1_t): Ditto.
5082         (vint64m2_t): Ditto.
5083         (vuint64m2_t): Ditto.
5084         (vint64m4_t): Ditto.
5085         (vuint64m4_t): Ditto.
5086         (vint64m8_t): Ditto.
5087         (vuint64m8_t): Ditto.
5088         (vfloat16mf4_t): Ditto.
5089         (vfloat16mf2_t): Ditto.
5090         (vfloat16m1_t): Ditto.
5091         (vfloat16m2_t): Ditto.
5092         (vfloat16m4_t): Ditto.
5093         (vfloat16m8_t): Ditto.
5094         (vfloat32mf2_t): Ditto.
5095         (vfloat32m1_t): Ditto.
5096         (vfloat32m2_t): Ditto.
5097         (vfloat32m4_t): Ditto.
5098         (vfloat32m8_t): Ditto.
5099         (vfloat64m1_t): Ditto.
5100         (vfloat64m2_t): Ditto.
5101         (vfloat64m4_t): Ditto.
5102         (vfloat64m8_t): Ditto.
5103         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
5104         (TUPLE_ENTRY): Ditto.
5105         * config/riscv/riscv-vsetvl.cc (change_insn): Ditto.
5106         * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto.
5107         (riscv_v_adjust_nunits): Ditto.
5108         (riscv_v_adjust_bytesize): Ditto.
5109         (riscv_v_adjust_precision): Ditto.
5110         (riscv_convert_vector_bits): Ditto.
5111         * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto.
5112         * config/riscv/riscv.md: Ditto.
5113         * config/riscv/vector-iterators.md: Ditto.
5114         * config/riscv/vector.md
5115         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
5116         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
5117         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
5118         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
5119         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
5120         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
5121         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
5122         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
5123         (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto.
5124         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
5125         (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto.
5126         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
5127         (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto.
5128         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
5129         (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto.
5130         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
5131         (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto.
5132         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
5133         (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto.
5134         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
5135         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
5136         (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto.
5137         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
5138         (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto.
5139         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
5140         (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto.
5141         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
5142         (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto.
5143         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
5144         (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto.
5145         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
5146         (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto.
5147         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
5149 2023-07-19  Vladimir N. Makarov  <vmakarov@redhat.com>
5151         * lra-int.h (lra_update_fp2sp_elimination): New prototype.
5152         (lra_asm_insn_error): New prototype.
5153         * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
5154         existence.
5155         (lra_spill): Call lra_update_fp2sp_elimination.
5156         * lra-eliminations.cc: Remove trailing spaces.
5157         (elimination_fp2sp_occured_p): New static flag.
5158         (lra_eliminate_regs_1): Set the flag up.
5159         (update_reg_eliminate): Modify the assert for stack to frame
5160         pointer elimination.
5161         (lra_update_fp2sp_elimination): New function.
5162         (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
5164 2023-07-19  Andrew Carlotti  <andrew.carlotti@arm.com>
5166         * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
5167         dependency.
5168         * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
5169         dependencies from target pragmas.
5170         * config/aarch64/arm_fp16.h (target): Likewise.
5171         * config/aarch64/arm_neon.h (target): Likewise.
5173 2023-07-19  Andrew Pinski  <apinski@marvell.com>
5175         PR tree-optimization/110252
5176         * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
5177         (auto_flow_sensitive::auto_flow_sensitive): New constructor.
5178         (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
5179         (match_simplify_replacement): Temporarily
5180         remove the flow sensitive info on the two statements that might
5181         be moved.
5183 2023-07-19  Andrew Pinski  <apinski@marvell.com>
5185         * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
5186         with flow_sensitive_info_storage.
5187         (follow_outer_ssa_edges): Update how to save off the flow
5188         sensitive info.
5189         (maybe_fold_comparisons_from_match_pd): Update restoring
5190         of flow sensitive info.
5191         * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
5192         (flow_sensitive_info_storage::restore): New method.
5193         (flow_sensitive_info_storage::save_and_clear): New method.
5194         (flow_sensitive_info_storage::clear_storage): New method.
5195         * tree-ssanames.h (class flow_sensitive_info_storage): New class.
5197 2023-07-19  Andrew Pinski  <apinski@marvell.com>
5199         PR tree-optimization/110726
5200         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
5201         Add checks to make sure the type was one bit precision
5202         intergal type.
5204 2023-07-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
5206         * doc/md.texi: Add mask_len_fold_left_plus.
5207         * internal-fn.cc (mask_len_fold_left_direct): Ditto.
5208         (expand_mask_len_fold_left_optab_fn): Ditto.
5209         (direct_mask_len_fold_left_optab_supported_p): Ditto.
5210         * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
5211         * optabs.def (OPTAB_D): Ditto.
5213 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
5215         * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
5217 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
5219         PR tree-optimization/110731
5220         * wide-int.cc (wi::divmod_internal): Always unpack dividend and
5221         divisor as UNSIGNED regardless of sgn.
5223 2023-07-19  Lehua Ding  <lehua.ding@rivai.ai>
5225         * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
5226         (standard_extensions_p): Add check.
5227         (riscv_subset_list::add): Just return NULL if it failed before.
5228         (riscv_subset_list::parse_std_ext): Continue parse when find a error
5229         (riscv_subset_list::parse): Just return NULL if it failed before.
5230         * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
5232 2023-07-19  Jan Beulich  <jbeulich@suse.com>
5234         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
5235         Use gen_vec_set_0.
5236         (ix86_expand_vector_extract): Use gen_vec_extract_lo /
5237         gen_vec_extract_hi.
5238         (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
5239         gen_vec_interleave_low. Rename local variable.
5241 2023-07-19  Jan Beulich  <jbeulich@suse.com>
5243         * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
5244         alternative. Move AVX512VL part of condition to new "enabled"
5245         attribute.
5247 2023-07-19  liuhongt  <hongtao.liu@intel.com>
5249         PR target/109504
5250         * config/i386/i386-builtins.cc
5251         (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
5252         (ix86_register_bf16_builtin_type): Ditto.
5253         * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
5254         isn't available, undef the macros which are used to check the
5255         backend support of the _Float16/__bf16 types when building
5256         libstdc++ and libgcc.
5257         * config/i386/i386.cc (construct_container): Issue errors for
5258         HFmode/BFmode when TARGET_SSE2 is not available.
5259         (function_value_32): Ditto.
5260         (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
5261         (ix86_libgcc_floating_mode_supported_p): Ditto.
5262         (ix86_emit_support_tinfos): Adjust codes.
5263         (ix86_invalid_conversion): Return diagnostic message string
5264         when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
5265         (ix86_invalid_unary_op): New function.
5266         (ix86_invalid_binary_op): Ditto.
5267         (TARGET_INVALID_UNARY_OP): Define.
5268         (TARGET_INVALID_BINARY_OP): Define.
5269         * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
5270         related instrinsics header files.
5271         * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
5273 2023-07-18  Uros Bizjak  <ubizjak@gmail.com>
5275         * dwarf2asm.cc: Change FALSE to false.
5276         * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
5277         * dwarf2out.cc (matches_main_base): Change return type from
5278         int to bool.  Change "last_match" variable to bool.
5279         (dump_struct_debug): Change return type from int to bool.
5280         Change "matches" and "result" function arguments to bool.
5281         (is_pseudo_reg): Change return type from int to bool.
5282         (is_tagged_type): Ditto.
5283         (same_loc_p): Ditto.
5284         (same_dw_val_p): Change return type from int to bool and adjust
5285         function body accordingly.
5286         (same_attr_p): Ditto.
5287         (same_die_p): Ditto.
5288         (is_type_die): Ditto.
5289         (is_declaration_die): Ditto.
5290         (should_move_die_to_comdat): Ditto.
5291         (is_base_type): Ditto.
5292         (is_based_loc): Ditto.
5293         (local_scope_p): Ditto.
5294         (class_scope_p): Ditto.
5295         (class_or_namespace_scope_p): Ditto.
5296         (is_tagged_type): Ditto.
5297         (is_rust): Use void argument.
5298         (is_nested_in_subprogram): Change return type from int to bool.
5299         (contains_subprogram_definition): Ditto.
5300         (gen_struct_or_union_type_die): Change "nested", "complete"
5301         and "ns_decl" variables to bool.
5302         (is_naming_typedef_decl): Change FALSE to false.
5304 2023-07-18  Jan Hubicka  <jh@suse.cz>
5306         * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
5307         for queries not in headers.
5308         (static_loop_exit): Add basic blck parameter; update use of
5309         edge_range_query
5310         (should_duplicate_loop_header_p): Add ranger and static_exits
5311         parameter.  Do not account statements that will be optimized
5312         out after duplicaiton in overall size. Add ranger query to
5313         find static exits.
5314         (update_profile_after_ch):  Take static_exits has set instead of
5315         single eliminated_edge.
5316         (ch_base::copy_headers): Do all analysis in the first pass;
5317         remember invariant_exits and static_exits.
5319 2023-07-18  Jason Merrill  <jason@redhat.com>
5321         * fold-const.cc (native_interpret_aggregate): Skip empty fields.
5323 2023-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
5325         * doc/gm2.texi (Semantic checking): Change example testwithptr
5326         to testnew6.
5328 2023-07-18  Richard Biener  <rguenther@suse.de>
5330         PR middle-end/105715
5331         * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
5332         (pass_gimple_isel::execute): ... this.  Duplicate
5333         comparison defs of COND_EXPRs.
5335 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5337         * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
5338         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
5339         (riscv_convert_vector_bits): Ditto.
5341 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5343         * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
5344         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
5346 2023-07-18  Juergen Christ  <jchrist@linux.ibm.com>
5348         * config/s390/vx-builtins.md: New vsel pattern.
5350 2023-07-18  liuhongt  <hongtao.liu@intel.com>
5352         PR target/110438
5353         * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
5354         Remove # from assemble output.
5356 2023-07-18  liuhongt  <hongtao.liu@intel.com>
5358         PR target/110591
5359         * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
5360         to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
5361         3 define_peephole2 after the pattern.
5363 2023-07-18  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
5365         * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
5367 2023-07-18  Pan Li  <pan2.li@intel.com>
5368             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5370         * config/riscv/riscv.cc (struct machine_function): Add new field.
5371         (riscv_static_frm_mode_p): New function.
5372         (riscv_emit_frm_mode_set): New function for emit FRM.
5373         (riscv_emit_mode_set): Extract function for FRM.
5374         (riscv_mode_needed): Fix the TODO.
5375         (riscv_mode_entry): Initial dynamic frm RTL.
5376         (riscv_mode_exit): Return DYN_EXIT.
5377         * config/riscv/riscv.md: Add rdfrm.
5378         * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
5379         * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
5380         (fsrm): Removed.
5381         (fsrmsi_backup): New pattern for swap.
5382         (fsrmsi_restore): New pattern for restore.
5383         (fsrmsi_restore_exit): New pattern for restore exit.
5384         (frrmsi): New pattern for backup.
5386 2023-07-17  Arsen Arsenović  <arsen@aarsen.me>
5388         * doc/extend.texi: Add @cindex on __auto_type.
5390 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
5392         * combine-stack-adj.cc (stack_memref_p): Change return type from
5393         int to bool and adjust function body accordingly.
5394         (rest_of_handle_stack_adjustments): Change return type to void.
5396 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
5398         * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
5399         (cant_combine_insn_p): Change return type from int to bool and adjust
5400         function body accordingly.
5401         (can_combine_p): Ditto.
5402         (combinable_i3pat): Ditto.  Change "i1_not_in_src" and "i0_not_in_src"
5403         function arguments from int to bool.
5404         (contains_muldiv): Change return type from int to bool and adjust
5405         function body accordingly.
5406         (try_combine): Ditto. Change "new_direct_jump" pointer function
5407         argument from int to bool.  Change "substed_i2", "substed_i1",
5408         "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
5409         "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
5410         "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
5411         "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
5412         "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
5413         "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
5414         from int to bool.
5415         (subst): Change "in_dest", "in_cond" and "unique_copy" function
5416         arguments from int to bool.
5417         (combine_simplify_rtx): Change "in_dest" and "in_cond" function
5418         arguments from int to bool.
5419         (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
5420         function argument from int to bool.
5421         (force_int_to_mode): Change "just_select" function argument
5422         from int to bool.  Change "next_select" variable to bool.
5423         (rtx_equal_for_field_assignment_p): Change return type from
5424         int to bool and adjust function body accordingly.
5425         (merge_outer_ops): Ditto.  Change "pcomp_p" pointer function
5426         argument from int to bool.
5427         (get_last_value_validate): Change return type from int to bool
5428         and adjust function body accordingly.
5429         (reg_dead_at_p): Ditto.
5430         (reg_bitfield_target_p): Ditto.
5431         (combine_instructions): Ditto.  Change "new_direct_jump"
5432         variable to bool.
5433         (can_combine_p): Change return type from int to bool
5434         and adjust function body accordingly.
5435         (likely_spilled_retval_p): Ditto.
5436         (can_change_dest_mode): Change "added_sets" function argument
5437         from int to bool.
5438         (find_split_point): Change "unsignedp" variable to bool.
5439         (simplify_if_then_else): Change "comparison_p" and "swapped"
5440         variables to bool.
5441         (simplify_set): Change "other_changed" variable to bool.
5442         (expand_compound_operation): Change "unsignedp" variable to bool.
5443         (force_to_mode): Change "just_select" function argument
5444         from int to bool.  Change "next_select" variable to bool.
5445         (extended_count): Change "unsignedp" function argument to bool.
5446         (simplify_shift_const_1): Change "complement_p" variable to bool.
5447         (simplify_comparison): Change "changed" variable to bool.
5448         (rest_of_handle_combine): Change return type to void.
5450 2023-07-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
5452         PR plugins/110610
5453         * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
5455 2023-07-17  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
5457         * ira.cc (setup_reg_class_relations): Continue
5458         if regclass cl3 is hard_reg_set_empty_p.
5460 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5462         * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
5464 2023-07-17  Martin Jambor  <mjambor@suse.cz>
5466         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
5467         entry_count.
5469 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
5471         * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
5473 2023-07-17  Lehua Ding  <lehua.ding@rivai.ai>
5475         PR target/110696
5476         * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
5477         recur add all implied extensions.
5478         (riscv_subset_list::check_implied_ext): Add new method.
5479         (riscv_subset_list::parse): Call checker check_implied_ext.
5480         * config/riscv/riscv-subset.h: Add new method.
5482 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5484         * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
5485         (reduc_smax_scal_<mode>): Ditto.
5486         (reduc_umax_scal_<mode>): Ditto.
5487         (reduc_smin_scal_<mode>): Ditto.
5488         (reduc_umin_scal_<mode>): Ditto.
5489         (reduc_and_scal_<mode>): Ditto.
5490         (reduc_ior_scal_<mode>): Ditto.
5491         (reduc_xor_scal_<mode>): Ditto.
5492         * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
5493         (expand_reduction): New function.
5494         * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
5495         (emit_vlmax_fp_reduction_insn): Ditto.
5496         (get_m1_mode): Ditto.
5497         (expand_cond_len_binop): Fix name.
5498         (expand_reduction): New function
5499         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
5500         (validate_change_or_fail): New function.
5501         (change_insn): Fix VSETVL BUG.
5502         (change_vsetvl_insn): Ditto.
5503         (pass_vsetvl::backward_demand_fusion): Ditto.
5504         (pass_vsetvl::df_post_optimization): Ditto.
5506 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
5508         * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
5510 2023-07-17  Christoph Müllner  <christoph.muellner@vrull.eu>
5512         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
5513         Remove parameter name from declaration of unused parameter.
5515 2023-07-17  Kewen Lin  <linkw@linux.ibm.com>
5517         PR tree-optimization/110652
5518         * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
5519         NULL_TREE.
5521 2023-07-17  Richard Biener  <rguenther@suse.de>
5523         PR tree-optimization/110669
5524         * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
5525         Check we matched a header PHI.
5527 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
5529         * tree-ssanames.cc (set_bitmask): New.
5530         * tree-ssanames.h (set_bitmask): New.
5532 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
5534         * value-range.cc (irange_bitmask::verify_mask): Mask need not be
5535         normalized.
5536         * value-range.h (irange_bitmask::union_): Normalize beforehand.
5537         (irange_bitmask::intersect): Same.
5539 2023-07-17  Andrew Pinski  <apinski@marvell.com>
5541         PR tree-optimization/95923
5542         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
5544 2023-07-17  Roger Sayle  <roger@nextmovesoftware.com>
5546         * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
5547         to the std::sort comparison lambda function const.
5549 2023-07-17  Andrew Pinski  <apinski@marvell.com>
5551         PR tree-optimization/110666
5552         * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
5554 2023-07-17  Mo, Zewei  <zewei.mo@intel.com>
5556         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
5557         Arrow Lake and Arrow Lake S.
5558         * common/config/i386/i386-common.cc:
5559         (processor_name): Add arrowlake.
5560         (processor_alias_table): Add arrow lake, arrow lake s and lunar
5561         lake.
5562         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
5563         Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
5564         * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
5565         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
5566         arrowlake-s.
5567         * config/i386/i386-c.cc (ix86_target_macros_internal): Add
5568         arrowlake.
5569         * config/i386/i386-options.cc (m_ARROWLAKE): New.
5570         (processor_cost_table): Add arrowlake.
5571         * config/i386/i386.h (enum processor_type):
5572         Add PROCESSOR_ARROWLAKE.
5573         * config/i386/x86-tune.def: Add m_ARROWLAKE.
5574         * doc/extend.texi: Add arrowlake and arrowlake-s.
5575         * doc/invoke.texi: Ditto.
5577 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
5579         * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
5580         have the same iterator. Also renaming all the occurence to
5581         VI2_AVX2_AVX512BW.
5582         (usdot_prod<mode>): New define_expand.
5583         (udot_prod<mode>): Ditto.
5585 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
5587         * common/config/i386/cpuinfo.h (get_available_features):
5588         Detech SM4.
5589         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
5590         OPTION_MASK_ISA2_SM4_UNSET): New.
5591         (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
5592         (ix86_handle_option): Handle -msm4.
5593         * common/config/i386/i386-cpuinfo.h (enum processor_features):
5594         Add FEATURE_SM4.
5595         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
5596         sm4.
5597         * config.gcc: Add sm4intrin.h.
5598         * config/i386/cpuid.h (bit_SM4): New.
5599         * config/i386/i386-builtin.def (BDESC): Add new builtins.
5600         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
5601         __SM4__.
5602         * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
5603         * config/i386/i386-options.cc (isa2_opts): Add -msm4.
5604         (ix86_valid_target_attribute_inner_p): Handle sm4.
5605         * config/i386/i386.opt: Add option -msm4.
5606         * config/i386/immintrin.h: Include sm4intrin.h
5607         * config/i386/sse.md (vsm4key4_<mode>): New define insn.
5608         (vsm4rnds4_<mode>): Ditto.
5609         * doc/extend.texi: Document sm4.
5610         * doc/invoke.texi: Document -msm4.
5611         * doc/sourcebuild.texi: Document target sm4.
5612         * config/i386/sm4intrin.h: New file.
5614 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
5616         * common/config/i386/cpuinfo.h (get_available_features):
5617         Detect SHA512.
5618         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
5619         OPTION_MASK_ISA2_SHA512_UNSET): New.
5620         (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
5621         (ix86_handle_option): Handle -msha512.
5622         * common/config/i386/i386-cpuinfo.h (enum processor_features):
5623         Add FEATURE_SHA512.
5624         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
5625         sha512.
5626         * config.gcc: Add sha512intrin.h.
5627         * config/i386/cpuid.h (bit_SHA512): New.
5628         * config/i386/i386-builtin-types.def:
5629         Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
5630         * config/i386/i386-builtin.def (BDESC): Add new builtins.
5631         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
5632         __SHA512__.
5633         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
5634         V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
5635         * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
5636         * config/i386/i386-options.cc (isa2_opts): Add -msha512.
5637         (ix86_valid_target_attribute_inner_p): Handle sha512.
5638         * config/i386/i386.opt: Add option -msha512.
5639         * config/i386/immintrin.h: Include sha512intrin.h.
5640         * config/i386/sse.md (vsha512msg1): New define insn.
5641         (vsha512msg2): Ditto.
5642         (vsha512rnds2): Ditto.
5643         * doc/extend.texi: Document sha512.
5644         * doc/invoke.texi: Document -msha512.
5645         * doc/sourcebuild.texi: Document target sha512.
5646         * config/i386/sha512intrin.h: New file.
5648 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
5650         * common/config/i386/cpuinfo.h (get_available_features):
5651         Detect SM3.
5652         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
5653         OPTION_MASK_ISA2_SM3_UNSET): New.
5654         (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
5655         (ix86_handle_option): Handle -msm3.
5656         * common/config/i386/i386-cpuinfo.h (enum processor_features):
5657         Add FEATURE_SM3.
5658         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
5659         SM3.
5660         * config.gcc: Add sm3intrin.h
5661         * config/i386/cpuid.h (bit_SM3): New.
5662         * config/i386/i386-builtin-types.def:
5663         Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
5664         * config/i386/i386-builtin.def (BDESC): Add new builtins.
5665         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
5666         __SM3__.
5667         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
5668         V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
5669         * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
5670         * config/i386/i386-options.cc (isa2_opts): Add -msm3.
5671         (ix86_valid_target_attribute_inner_p): Handle sm3.
5672         * config/i386/i386.opt: Add option -msm3.
5673         * config/i386/immintrin.h: Include sm3intrin.h.
5674         * config/i386/sse.md (vsm3msg1): New define insn.
5675         (vsm3msg2): Ditto.
5676         (vsm3rnds2): Ditto.
5677         * doc/extend.texi: Document sm3.
5678         * doc/invoke.texi: Document -msm3.
5679         * doc/sourcebuild.texi: Document target sm3.
5680         * config/i386/sm3intrin.h: New file.
5682 2023-07-17  Kong Lingling  <lingling.kong@intel.com>
5683             Haochen Jiang  <haochen.jiang@intel.com>
5685         * common/config/i386/cpuinfo.h (get_available_features): Detect
5686         avxvnniint16.
5687         * common/config/i386/i386-common.cc
5688         (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
5689         (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
5690         (ix86_handle_option): Handle -mavxvnniint16.
5691         * common/config/i386/i386-cpuinfo.h (enum processor_features):
5692         Add FEATURE_AVXVNNIINT16.
5693         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
5694         avxvnniint16.
5695         * config.gcc: Add avxvnniint16.h.
5696         * config/i386/avxvnniint16intrin.h: New file.
5697         * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
5698         * config/i386/i386-builtin.def: Add new builtins.
5699         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
5700         __AVXVNNIINT16__.
5701         * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
5702         (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
5703         * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
5704         * config/i386/i386.opt: Add option -mavxvnniint16.
5705         * config/i386/immintrin.h: Include avxvnniint16.h.
5706         * config/i386/sse.md
5707         (vpdp<vpdpwprodtype>_<mode>): New define_insn.
5708         * doc/extend.texi: Document avxvnniint16.
5709         * doc/invoke.texi: Document -mavxvnniint16.
5710         * doc/sourcebuild.texi: Document target avxvnniint16.
5712 2023-07-16  Jan Hubicka  <jh@suse.cz>
5714         PR middle-end/110649
5715         * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
5716         (vect_transform_loop): Move scale_profile_for_vect_loop after
5717         upper bound updates.
5719 2023-07-16  Jan Hubicka  <jh@suse.cz>
5721         PR tree-optimization/110649
5722         * tree-vect-loop.cc (optimize_mask_stores): Set correctly
5723         probability of the if-then-else construct.
5725 2023-07-16  Jan Hubicka  <jh@suse.cz>
5727         PR middle-end/110649
5728         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
5730 2023-07-15  Andrew Pinski  <apinski@marvell.com>
5732         * doc/contrib.texi: Update my entry.
5734 2023-07-15  John David Anglin  <danglin@gcc.gnu.org>
5736         * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
5737         R27_REGNUM.
5738         (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
5739         (tld_load): Likewise.
5740         (tgd_load_pic): Change to expander.
5741         (tld_load_pic, tld_offset_load, tp_load): Likewise.
5742         (tie_load_pic, tle_load): Likewise.
5743         (tgd_load_picsi, tgd_load_picdi): New.
5744         (tld_load_picsi, tld_load_picdi): New.
5745         (tld_offset_load<P:mode>): New.
5746         (tp_load<P:mode>): New.
5747         (tie_load_picsi, tie_load_picdi): New.
5748         (tle_load<P:mode>): New.
5750 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
5752         * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
5753         (vcmlaq_rot180, vcmlaq_rot270): New.
5754         * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
5755         (vcmlaq_rot180, vcmlaq_rot270): New.
5756         * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
5757         (vcmlaq_rot180, vcmlaq_rot270): New.
5758         * config/arm/arm-mve-builtins.cc
5759         (function_instance::has_inactive_argument): Handle vcmlaq,
5760         vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
5761         * config/arm/arm_mve.h (vcmlaq): Delete.
5762         (vcmlaq_rot180): Delete.
5763         (vcmlaq_rot270): Delete.
5764         (vcmlaq_rot90): Delete.
5765         (vcmlaq_m): Delete.
5766         (vcmlaq_rot180_m): Delete.
5767         (vcmlaq_rot270_m): Delete.
5768         (vcmlaq_rot90_m): Delete.
5769         (vcmlaq_f16): Delete.
5770         (vcmlaq_rot180_f16): Delete.
5771         (vcmlaq_rot270_f16): Delete.
5772         (vcmlaq_rot90_f16): Delete.
5773         (vcmlaq_f32): Delete.
5774         (vcmlaq_rot180_f32): Delete.
5775         (vcmlaq_rot270_f32): Delete.
5776         (vcmlaq_rot90_f32): Delete.
5777         (vcmlaq_m_f32): Delete.
5778         (vcmlaq_m_f16): Delete.
5779         (vcmlaq_rot180_m_f32): Delete.
5780         (vcmlaq_rot180_m_f16): Delete.
5781         (vcmlaq_rot270_m_f32): Delete.
5782         (vcmlaq_rot270_m_f16): Delete.
5783         (vcmlaq_rot90_m_f32): Delete.
5784         (vcmlaq_rot90_m_f16): Delete.
5785         (__arm_vcmlaq_f16): Delete.
5786         (__arm_vcmlaq_rot180_f16): Delete.
5787         (__arm_vcmlaq_rot270_f16): Delete.
5788         (__arm_vcmlaq_rot90_f16): Delete.
5789         (__arm_vcmlaq_f32): Delete.
5790         (__arm_vcmlaq_rot180_f32): Delete.
5791         (__arm_vcmlaq_rot270_f32): Delete.
5792         (__arm_vcmlaq_rot90_f32): Delete.
5793         (__arm_vcmlaq_m_f32): Delete.
5794         (__arm_vcmlaq_m_f16): Delete.
5795         (__arm_vcmlaq_rot180_m_f32): Delete.
5796         (__arm_vcmlaq_rot180_m_f16): Delete.
5797         (__arm_vcmlaq_rot270_m_f32): Delete.
5798         (__arm_vcmlaq_rot270_m_f16): Delete.
5799         (__arm_vcmlaq_rot90_m_f32): Delete.
5800         (__arm_vcmlaq_rot90_m_f16): Delete.
5801         (__arm_vcmlaq): Delete.
5802         (__arm_vcmlaq_rot180): Delete.
5803         (__arm_vcmlaq_rot270): Delete.
5804         (__arm_vcmlaq_rot90): Delete.
5805         (__arm_vcmlaq_m): Delete.
5806         (__arm_vcmlaq_rot180_m): Delete.
5807         (__arm_vcmlaq_rot270_m): Delete.
5808         (__arm_vcmlaq_rot90_m): Delete.
5810 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
5812         * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
5813         (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
5814         * config/arm/iterators.md (MVE_VCMLAQ_M): New.
5815         (mve_insn): Add vcmla.
5816         (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
5817         VCMLAQ_ROT270_M_F.
5818         (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
5819         VCMLAQ_ROT270_M_F.
5820         * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
5821         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
5822         (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
5823         (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
5824         into ...
5825         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
5827 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
5829         * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
5830         (vcmulq_rot180, vcmulq_rot270): New.
5831         * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
5832         (vcmulq_rot180, vcmulq_rot270): New.
5833         * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
5834         (vcmulq_rot180, vcmulq_rot270): New.
5835         * config/arm/arm_mve.h (vcmulq_rot90): Delete.
5836         (vcmulq_rot270): Delete.
5837         (vcmulq_rot180): Delete.
5838         (vcmulq): Delete.
5839         (vcmulq_m): Delete.
5840         (vcmulq_rot180_m): Delete.
5841         (vcmulq_rot270_m): Delete.
5842         (vcmulq_rot90_m): Delete.
5843         (vcmulq_x): Delete.
5844         (vcmulq_rot90_x): Delete.
5845         (vcmulq_rot180_x): Delete.
5846         (vcmulq_rot270_x): Delete.
5847         (vcmulq_rot90_f16): Delete.
5848         (vcmulq_rot270_f16): Delete.
5849         (vcmulq_rot180_f16): Delete.
5850         (vcmulq_f16): Delete.
5851         (vcmulq_rot90_f32): Delete.
5852         (vcmulq_rot270_f32): Delete.
5853         (vcmulq_rot180_f32): Delete.
5854         (vcmulq_f32): Delete.
5855         (vcmulq_m_f32): Delete.
5856         (vcmulq_m_f16): Delete.
5857         (vcmulq_rot180_m_f32): Delete.
5858         (vcmulq_rot180_m_f16): Delete.
5859         (vcmulq_rot270_m_f32): Delete.
5860         (vcmulq_rot270_m_f16): Delete.
5861         (vcmulq_rot90_m_f32): Delete.
5862         (vcmulq_rot90_m_f16): Delete.
5863         (vcmulq_x_f16): Delete.
5864         (vcmulq_x_f32): Delete.
5865         (vcmulq_rot90_x_f16): Delete.
5866         (vcmulq_rot90_x_f32): Delete.
5867         (vcmulq_rot180_x_f16): Delete.
5868         (vcmulq_rot180_x_f32): Delete.
5869         (vcmulq_rot270_x_f16): Delete.
5870         (vcmulq_rot270_x_f32): Delete.
5871         (__arm_vcmulq_rot90_f16): Delete.
5872         (__arm_vcmulq_rot270_f16): Delete.
5873         (__arm_vcmulq_rot180_f16): Delete.
5874         (__arm_vcmulq_f16): Delete.
5875         (__arm_vcmulq_rot90_f32): Delete.
5876         (__arm_vcmulq_rot270_f32): Delete.
5877         (__arm_vcmulq_rot180_f32): Delete.
5878         (__arm_vcmulq_f32): Delete.
5879         (__arm_vcmulq_m_f32): Delete.
5880         (__arm_vcmulq_m_f16): Delete.
5881         (__arm_vcmulq_rot180_m_f32): Delete.
5882         (__arm_vcmulq_rot180_m_f16): Delete.
5883         (__arm_vcmulq_rot270_m_f32): Delete.
5884         (__arm_vcmulq_rot270_m_f16): Delete.
5885         (__arm_vcmulq_rot90_m_f32): Delete.
5886         (__arm_vcmulq_rot90_m_f16): Delete.
5887         (__arm_vcmulq_x_f16): Delete.
5888         (__arm_vcmulq_x_f32): Delete.
5889         (__arm_vcmulq_rot90_x_f16): Delete.
5890         (__arm_vcmulq_rot90_x_f32): Delete.
5891         (__arm_vcmulq_rot180_x_f16): Delete.
5892         (__arm_vcmulq_rot180_x_f32): Delete.
5893         (__arm_vcmulq_rot270_x_f16): Delete.
5894         (__arm_vcmulq_rot270_x_f32): Delete.
5895         (__arm_vcmulq_rot90): Delete.
5896         (__arm_vcmulq_rot270): Delete.
5897         (__arm_vcmulq_rot180): Delete.
5898         (__arm_vcmulq): Delete.
5899         (__arm_vcmulq_m): Delete.
5900         (__arm_vcmulq_rot180_m): Delete.
5901         (__arm_vcmulq_rot270_m): Delete.
5902         (__arm_vcmulq_rot90_m): Delete.
5903         (__arm_vcmulq_x): Delete.
5904         (__arm_vcmulq_rot90_x): Delete.
5905         (__arm_vcmulq_rot180_x): Delete.
5906         (__arm_vcmulq_rot270_x): Delete.
5908 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
5910         * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
5911         (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
5912         * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
5913         (MVE_VCADDQ_VCMULQ_M): New.
5914         (mve_insn): Add vcmul.
5915         (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
5916         VCMULQ_ROT270_M_F.
5917         (VCMUL): Delete.
5918         (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
5919         VCMULQ_ROT270_M_F.
5920         * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
5921         @mve_<mve_insn>q<mve_rot>_f<mode>.
5922         (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
5923         (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
5924         into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
5926 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
5928         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
5929         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
5930         * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
5931         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
5932         * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
5933         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
5934         * config/arm/arm-mve-builtins-functions.h (class
5935         unspec_mve_function_exact_insn_rot): New.
5936         * config/arm/arm_mve.h (vcaddq_rot90): Delete.
5937         (vcaddq_rot270): Delete.
5938         (vhcaddq_rot90): Delete.
5939         (vhcaddq_rot270): Delete.
5940         (vcaddq_rot270_m): Delete.
5941         (vcaddq_rot90_m): Delete.
5942         (vhcaddq_rot270_m): Delete.
5943         (vhcaddq_rot90_m): Delete.
5944         (vcaddq_rot90_x): Delete.
5945         (vcaddq_rot270_x): Delete.
5946         (vhcaddq_rot90_x): Delete.
5947         (vhcaddq_rot270_x): Delete.
5948         (vcaddq_rot90_u8): Delete.
5949         (vcaddq_rot270_u8): Delete.
5950         (vhcaddq_rot90_s8): Delete.
5951         (vhcaddq_rot270_s8): Delete.
5952         (vcaddq_rot90_s8): Delete.
5953         (vcaddq_rot270_s8): Delete.
5954         (vcaddq_rot90_u16): Delete.
5955         (vcaddq_rot270_u16): Delete.
5956         (vhcaddq_rot90_s16): Delete.
5957         (vhcaddq_rot270_s16): Delete.
5958         (vcaddq_rot90_s16): Delete.
5959         (vcaddq_rot270_s16): Delete.
5960         (vcaddq_rot90_u32): Delete.
5961         (vcaddq_rot270_u32): Delete.
5962         (vhcaddq_rot90_s32): Delete.
5963         (vhcaddq_rot270_s32): Delete.
5964         (vcaddq_rot90_s32): Delete.
5965         (vcaddq_rot270_s32): Delete.
5966         (vcaddq_rot90_f16): Delete.
5967         (vcaddq_rot270_f16): Delete.
5968         (vcaddq_rot90_f32): Delete.
5969         (vcaddq_rot270_f32): Delete.
5970         (vcaddq_rot270_m_s8): Delete.
5971         (vcaddq_rot270_m_s32): Delete.
5972         (vcaddq_rot270_m_s16): Delete.
5973         (vcaddq_rot270_m_u8): Delete.
5974         (vcaddq_rot270_m_u32): Delete.
5975         (vcaddq_rot270_m_u16): Delete.
5976         (vcaddq_rot90_m_s8): Delete.
5977         (vcaddq_rot90_m_s32): Delete.
5978         (vcaddq_rot90_m_s16): Delete.
5979         (vcaddq_rot90_m_u8): Delete.
5980         (vcaddq_rot90_m_u32): Delete.
5981         (vcaddq_rot90_m_u16): Delete.
5982         (vhcaddq_rot270_m_s8): Delete.
5983         (vhcaddq_rot270_m_s32): Delete.
5984         (vhcaddq_rot270_m_s16): Delete.
5985         (vhcaddq_rot90_m_s8): Delete.
5986         (vhcaddq_rot90_m_s32): Delete.
5987         (vhcaddq_rot90_m_s16): Delete.
5988         (vcaddq_rot270_m_f32): Delete.
5989         (vcaddq_rot270_m_f16): Delete.
5990         (vcaddq_rot90_m_f32): Delete.
5991         (vcaddq_rot90_m_f16): Delete.
5992         (vcaddq_rot90_x_s8): Delete.
5993         (vcaddq_rot90_x_s16): Delete.
5994         (vcaddq_rot90_x_s32): Delete.
5995         (vcaddq_rot90_x_u8): Delete.
5996         (vcaddq_rot90_x_u16): Delete.
5997         (vcaddq_rot90_x_u32): Delete.
5998         (vcaddq_rot270_x_s8): Delete.
5999         (vcaddq_rot270_x_s16): Delete.
6000         (vcaddq_rot270_x_s32): Delete.
6001         (vcaddq_rot270_x_u8): Delete.
6002         (vcaddq_rot270_x_u16): Delete.
6003         (vcaddq_rot270_x_u32): Delete.
6004         (vhcaddq_rot90_x_s8): Delete.
6005         (vhcaddq_rot90_x_s16): Delete.
6006         (vhcaddq_rot90_x_s32): Delete.
6007         (vhcaddq_rot270_x_s8): Delete.
6008         (vhcaddq_rot270_x_s16): Delete.
6009         (vhcaddq_rot270_x_s32): Delete.
6010         (vcaddq_rot90_x_f16): Delete.
6011         (vcaddq_rot90_x_f32): Delete.
6012         (vcaddq_rot270_x_f16): Delete.
6013         (vcaddq_rot270_x_f32): Delete.
6014         (__arm_vcaddq_rot90_u8): Delete.
6015         (__arm_vcaddq_rot270_u8): Delete.
6016         (__arm_vhcaddq_rot90_s8): Delete.
6017         (__arm_vhcaddq_rot270_s8): Delete.
6018         (__arm_vcaddq_rot90_s8): Delete.
6019         (__arm_vcaddq_rot270_s8): Delete.
6020         (__arm_vcaddq_rot90_u16): Delete.
6021         (__arm_vcaddq_rot270_u16): Delete.
6022         (__arm_vhcaddq_rot90_s16): Delete.
6023         (__arm_vhcaddq_rot270_s16): Delete.
6024         (__arm_vcaddq_rot90_s16): Delete.
6025         (__arm_vcaddq_rot270_s16): Delete.
6026         (__arm_vcaddq_rot90_u32): Delete.
6027         (__arm_vcaddq_rot270_u32): Delete.
6028         (__arm_vhcaddq_rot90_s32): Delete.
6029         (__arm_vhcaddq_rot270_s32): Delete.
6030         (__arm_vcaddq_rot90_s32): Delete.
6031         (__arm_vcaddq_rot270_s32): Delete.
6032         (__arm_vcaddq_rot270_m_s8): Delete.
6033         (__arm_vcaddq_rot270_m_s32): Delete.
6034         (__arm_vcaddq_rot270_m_s16): Delete.
6035         (__arm_vcaddq_rot270_m_u8): Delete.
6036         (__arm_vcaddq_rot270_m_u32): Delete.
6037         (__arm_vcaddq_rot270_m_u16): Delete.
6038         (__arm_vcaddq_rot90_m_s8): Delete.
6039         (__arm_vcaddq_rot90_m_s32): Delete.
6040         (__arm_vcaddq_rot90_m_s16): Delete.
6041         (__arm_vcaddq_rot90_m_u8): Delete.
6042         (__arm_vcaddq_rot90_m_u32): Delete.
6043         (__arm_vcaddq_rot90_m_u16): Delete.
6044         (__arm_vhcaddq_rot270_m_s8): Delete.
6045         (__arm_vhcaddq_rot270_m_s32): Delete.
6046         (__arm_vhcaddq_rot270_m_s16): Delete.
6047         (__arm_vhcaddq_rot90_m_s8): Delete.
6048         (__arm_vhcaddq_rot90_m_s32): Delete.
6049         (__arm_vhcaddq_rot90_m_s16): Delete.
6050         (__arm_vcaddq_rot90_x_s8): Delete.
6051         (__arm_vcaddq_rot90_x_s16): Delete.
6052         (__arm_vcaddq_rot90_x_s32): Delete.
6053         (__arm_vcaddq_rot90_x_u8): Delete.
6054         (__arm_vcaddq_rot90_x_u16): Delete.
6055         (__arm_vcaddq_rot90_x_u32): Delete.
6056         (__arm_vcaddq_rot270_x_s8): Delete.
6057         (__arm_vcaddq_rot270_x_s16): Delete.
6058         (__arm_vcaddq_rot270_x_s32): Delete.
6059         (__arm_vcaddq_rot270_x_u8): Delete.
6060         (__arm_vcaddq_rot270_x_u16): Delete.
6061         (__arm_vcaddq_rot270_x_u32): Delete.
6062         (__arm_vhcaddq_rot90_x_s8): Delete.
6063         (__arm_vhcaddq_rot90_x_s16): Delete.
6064         (__arm_vhcaddq_rot90_x_s32): Delete.
6065         (__arm_vhcaddq_rot270_x_s8): Delete.
6066         (__arm_vhcaddq_rot270_x_s16): Delete.
6067         (__arm_vhcaddq_rot270_x_s32): Delete.
6068         (__arm_vcaddq_rot90_f16): Delete.
6069         (__arm_vcaddq_rot270_f16): Delete.
6070         (__arm_vcaddq_rot90_f32): Delete.
6071         (__arm_vcaddq_rot270_f32): Delete.
6072         (__arm_vcaddq_rot270_m_f32): Delete.
6073         (__arm_vcaddq_rot270_m_f16): Delete.
6074         (__arm_vcaddq_rot90_m_f32): Delete.
6075         (__arm_vcaddq_rot90_m_f16): Delete.
6076         (__arm_vcaddq_rot90_x_f16): Delete.
6077         (__arm_vcaddq_rot90_x_f32): Delete.
6078         (__arm_vcaddq_rot270_x_f16): Delete.
6079         (__arm_vcaddq_rot270_x_f32): Delete.
6080         (__arm_vcaddq_rot90): Delete.
6081         (__arm_vcaddq_rot270): Delete.
6082         (__arm_vhcaddq_rot90): Delete.
6083         (__arm_vhcaddq_rot270): Delete.
6084         (__arm_vcaddq_rot270_m): Delete.
6085         (__arm_vcaddq_rot90_m): Delete.
6086         (__arm_vhcaddq_rot270_m): Delete.
6087         (__arm_vhcaddq_rot90_m): Delete.
6088         (__arm_vcaddq_rot90_x): Delete.
6089         (__arm_vcaddq_rot270_x): Delete.
6090         (__arm_vhcaddq_rot90_x): Delete.
6091         (__arm_vhcaddq_rot270_x): Delete.
6093 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
6095         * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
6096         (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
6097         * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
6098         (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
6099         VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
6100         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
6101         VHCADDQ_ROT270_S.
6102         (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
6103         VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
6104         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
6105         VHCADDQ_ROT270_M_S.
6106         (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
6107         VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
6108         VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
6109         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
6110         (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
6111         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
6112         UNSPEC_VCADD270.
6113         (VCADDQ_ROT270_M): Delete.
6114         (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
6115         (VCADDQ_ROT90_M): Delete.
6116         * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
6117         (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
6118         into ...
6119         (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
6120         (mve_vcaddq<mve_rot><mode>): Rename into ...
6121         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
6122         (mve_vcaddq_rot270_m_<supf><mode>)
6123         (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
6124         (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
6125         (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
6126         (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
6127         into ...
6128         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
6130 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
6132         PR target/110588
6133         * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
6134         preparation statement over braces for a single statement.
6135         (*bt<mode>_setncqi): Likewise.
6136         (*bt<mode>_setncqi_2): New define_insn_and_split.
6138 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
6140         * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
6141         case inserting of 64-bit values into a TImode register, to handle
6142         both DImode and DFmode using either *insvti_lowpart_1
6143         or *isnvti_highpart_1.
6145 2023-07-14  Uros Bizjak  <ubizjak@gmail.com>
6147         PR target/110206
6148         * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
6149         * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
6150         * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
6151         * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
6152         when the original source contains a paradoxical subreg.
6154 2023-07-14  Jan Hubicka  <jh@suse.cz>
6156         * passes.cc (execute_function_todo): Remove
6157         TODO_rebuild_frequencies
6158         * passes.def: Add rebuild_frequencies pass.
6159         * predict.cc (estimate_bb_frequencies): Drop
6160         force parameter.
6161         (tree_estimate_probability): Update call of
6162         estimate_bb_frequencies.
6163         (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
6164         first and do not rebuild if not necessary.
6165         (class pass_rebuild_frequencies): New.
6166         (make_pass_rebuild_frequencies): New.
6167         * profile-count.h: Add profile_count::very_large_p.
6168         * tree-inline.cc (optimize_inline_calls): Do not return
6169         TODO_rebuild_frequencies
6170         * tree-pass.h (TODO_rebuild_frequencies): Remove.
6171         (make_pass_rebuild_frequencies): Declare.
6173 2023-07-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6175         * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
6176         * config/riscv/riscv-protos.h (enum insn_type): New enum.
6177         (expand_cond_len_ternop): New function.
6178         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
6179         (expand_cond_len_ternop): Ditto.
6181 2023-07-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
6183         PR target/110657
6184         * config/bpf/bpf.md: Enable instruction scheduling.
6186 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
6188         PR tree-optimization/109154
6189         * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
6190         (struct bb_predicate): Add no_predicate_stmts.
6191         (set_bb_predicate): Increase predicate count.
6192         (set_bb_predicate_gimplified_stmts): Conditionally initialize
6193         no_predicate_stmts.
6194         (get_bb_num_predicate_stmts): New.
6195         (init_bb_predicate): Initialzie no_predicate_stmts.
6196         (release_bb_predicate): Cleanup no_predicate_stmts.
6197         (insert_gimplified_predicates): Preserve no_predicate_stmts.
6199 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
6201         PR tree-optimization/109154
6202         * tree-if-conv.cc (gen_simplified_condition,
6203         gen_phi_nest_statement): New.
6204         (gen_phi_arg_condition, predicate_scalar_phi): Use it.
6206 2023-07-14  Richard Biener  <rguenther@suse.de>
6208         * gimple.h (gimple_phi_arg): New const overload.
6209         (gimple_phi_arg_def): Make gimple arg const.
6210         (gimple_phi_arg_def_from_edge): New inline function.
6211         * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
6212         Likewise.
6213         * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
6214         new inline function.
6215         (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
6217 2023-07-14  Monk Chiang  <monk.chiang@sifive.com>
6219         * common/config/riscv/riscv-common.cc:
6220         (riscv_implied_info): Add zihintntl item.
6221         (riscv_ext_version_table): Ditto.
6222         (riscv_ext_flag_table): Ditto.
6223         * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
6224         (TARGET_ZIHINTNTL): Ditto.
6226 2023-07-14  Die Li  <lidie@eswincomputing.com>
6228         * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
6230 2023-07-14  Oleg Endo  <olegendo@gcc.gnu.org>
6232         PR target/101469
6233         * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
6234         used by the address of the following memory operand.
6236 2023-07-13  Mikael Pettersson  <mikpelinux@gmail.com>
6238         PR target/107841
6239         * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
6240         deallocate alloca-only frame.
6242 2023-07-13  Iain Sandoe  <iain@sandoe.co.uk>
6244         PR target/110624
6245         * config/darwin.h (DARWIN_PLATFORM_ID): New.
6246         (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
6247         and SDK data to the static linker.
6249 2023-07-13  Carl Love  <cel@us.ibm.com>
6251         * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
6252         built-in definition return type.
6253         * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
6254         define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
6255         * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
6256         argument to return FPSCR fields.
6257         * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
6258         the return value.  Add description for
6259         __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
6261 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
6263         PR target/106966
6264         * config/alpha/alpha.cc (alpha_emit_set_long_const):
6265         Always use DImode when constructing long const.
6267 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
6269         * haifa-sched.cc: Change TRUE/FALSE to true/false.
6270         * ira.cc: Ditto.
6271         * lra-assigns.cc: Ditto.
6272         * lra-constraints.cc: Ditto.
6273         * sel-sched.cc: Ditto.
6275 2023-07-13  Andrew Pinski  <apinski@marvell.com>
6277         PR tree-optimization/110293
6278         PR tree-optimization/110539
6279         * match.pd: Expand the `x != (typeof x)(x == 0)`
6280         pattern to handle where the inner and outer comparsions
6281         are either `!=` or `==` and handle other constants
6282         than 0.
6284 2023-07-13  Vladimir N. Makarov  <vmakarov@redhat.com>
6286         PR middle-end/109520
6287         * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
6288         (lra_asm_insn_error): New prototype.
6289         * lra.cc: Include rtl_error.h.
6290         (lra_set_insn_recog_data): Initialize asm_reloads_num.
6291         (lra_asm_insn_error): New func whose code is taken from ...
6292         * lra-assigns.cc (lra_split_hard_reg_for): ... here.  Use lra_asm_insn_error.
6293         * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
6295 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6297         * genmatch.cc (commutative_op): Add COND_LEN_*
6298         * internal-fn.cc (first_commutative_argument): Ditto.
6299         (CASE): Ditto.
6300         (get_unconditional_internal_fn): Ditto.
6301         (can_interpret_as_conditional_op_p): Ditto.
6302         (internal_fn_len_index): Ditto.
6303         * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
6304         * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
6305         (convert_mult_to_fma): Ditto.
6306         (math_opts_dom_walker::after_dom_children): Ditto.
6308 2023-07-13  Pan Li  <pan2.li@intel.com>
6310         * config/riscv/riscv.cc (vxrm_rtx): New static var.
6311         (frm_rtx): Ditto.
6312         (global_state_unknown_p): Removed.
6313         (riscv_entity_mode_after): Removed.
6314         (asm_insn_p): New function.
6315         (vxrm_unknown_p): New function for fixed-point.
6316         (riscv_vxrm_mode_after): Ditto.
6317         (frm_unknown_dynamic_p): New function for floating-point.
6318         (riscv_frm_mode_after): Ditto.
6319         (riscv_mode_after): Leverage new functions.
6321 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6323         * tree-vect-stmts.cc (vect_model_load_cost): Remove.
6324         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
6325         calling vect_model_load_cost.
6327 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6329         * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
6330         handle memory_access_type VMAT_CONTIGUOUS, remove some
6331         VMAT_CONTIGUOUS_PERMUTE related handlings.
6332         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
6333         without calling vect_model_load_cost.
6335 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6337         * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
6338         VMAT_CONTIGUOUS_REVERSE any more.
6339         (vectorizable_load): Adjust the costing handling on
6340         VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
6342 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6344         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
6345         VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
6346         (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
6347         assert it will never get VMAT_LOAD_STORE_LANES.
6349 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6351         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
6352         VMAT_GATHER_SCATTER without calling vect_model_load_cost.
6353         (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
6354         remove VMAT_GATHER_SCATTER related handlings and the related parameter
6355         gs_info.
6357 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6359         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
6360         on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
6361         vect_model_load_cost.
6362         (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
6363         VMAT_STRIDED_SLP any more, and remove their related handlings.
6365 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6367         * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
6368         (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
6369         hoisting decision and without calling vect_model_load_cost.
6370         (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
6371         and remove VMAT_INVARIANT related handlings.
6373 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6375         * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
6376         on costing with one extra argument cost_vec.
6377         (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
6378         (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
6379         gs_info.decl set any more.
6381 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6383         * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
6384         to vect_model_load_cost down to some different transform paths
6385         according to the handlings of different vect_memory_access_types.
6387 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
6389         * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
6391 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6393         * config/riscv/autovec.md
6394         (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
6395         (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
6396         (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
6397         (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
6398         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
6399         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
6400         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
6401         (len_mask_gather_load<mode><mode>): Ditto.
6402         (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
6403         (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
6404         (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
6405         (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
6406         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
6407         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
6408         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
6409         (len_mask_scatter_store<mode><mode>): Ditto.
6410         * config/riscv/predicates.md (const_1_operand): New predicate.
6411         (vector_gs_scale_operand_16): Ditto.
6412         (vector_gs_scale_operand_32): Ditto.
6413         (vector_gs_scale_operand_64): Ditto.
6414         (vector_gs_extension_operand): Ditto.
6415         (vector_gs_scale_operand_16_rv32): Ditto.
6416         (vector_gs_scale_operand_32_rv32): Ditto.
6417         * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
6418         (expand_gather_scatter): New function.
6419         * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
6420         (emit_vlmax_masked_store_insn): New function.
6421         (emit_nonvlmax_masked_store_insn): Ditto.
6422         (modulo_sel_indices): Ditto.
6423         (expand_vec_perm): Fix SLP for gather/scatter.
6424         (prepare_gather_scatter): New function.
6425         (expand_gather_scatter): Ditto.
6426         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
6427         (subreg:SI (DI CONST_POLY_INT)).
6428         * config/riscv/vector-iterators.md: Add gather/scatter.
6429         * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
6430         (@vec_duplicate<mode>): Ditto.
6431         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
6432         Fix name.
6433         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
6435 2023-07-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6437         * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
6438         * config/riscv/riscv-protos.h (enum insn_type): New enum.
6439         (expand_cond_len_binop): New function.
6440         * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
6441         (emit_nonvlmax_fp_tu_insn): Ditto.
6442         (need_fp_rounding_p): Ditto.
6443         (expand_cond_len_binop): Ditto.
6444         * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
6445         (TARGET_PREFERRED_ELSE_VALUE): New target hook.
6447 2023-07-12  Jan Hubicka  <jh@suse.cz>
6449         * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
6450         (gimple_duplicate_seme_region): ... this; break out profile updating
6451         code to ...
6452         * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
6453         (ch_base::copy_headers): Update.
6454         * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
6455         (gimple_duplicate_seme_region): ... this.
6457 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
6459         PR tree-optimization/107043
6460         * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
6462 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
6464         PR tree-optimization/107053
6465         * gimple-range-op.cc (cfn_popcount): Use known set bits.
6467 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
6469         * ira.cc (equiv_init_varies_p): Change return type from int to bool
6470         and adjust function body accordingly.
6471         (equiv_init_movable_p): Ditto.
6472         (memref_used_between_p): Ditto.
6473         * lra-constraints.cc (valid_address_p): Ditto.
6475 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
6477         * range-op.cc (irange_to_masked_value): Remove.
6478         (update_known_bitmask): Update irange value/mask pair instead of
6479         only updating nonzero bits.
6481 2023-07-12  Jan Hubicka  <jh@suse.cz>
6483         * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
6484         parameter and rewrite profile updating code to handle edges elimination.
6485         * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
6486         * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
6487         (loop_iv_derived_p): New function.
6488         (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
6489         of PHIs and propagation of IV derived variables.
6490         (ch_base::copy_headers): Pass around the invariant edges hash set.
6492 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
6494         * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
6495         (last_active_insn): Change "skip_use_p" function argument to bool.
6496         (noce_operand_ok): Change return type from int to bool.
6497         (find_cond_trap): Ditto.
6498         (block_jumps_and_fallthru_p): Change "fallthru_p" and
6499         "jump_p" variables to bool.
6500         (noce_find_if_block): Change return type from int to bool.
6501         (cond_exec_find_if_block): Ditto.
6502         (find_if_case_1): Ditto.
6503         (find_if_case_2): Ditto.
6504         (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
6505         (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
6506         (cond_exec_process_insns): Change return type from int to bool.
6507         Change "mod_ok" function arg to bool.
6508         (cond_exec_process_if_block): Change return type from int to bool.
6509         Change "do_multiple_p" function arg to bool.  Change "then_mod_ok"
6510         variable to bool.
6511         (noce_emit_store_flag): Change return type from int to bool.
6512         Change "reversep" function arg to bool.  Change "cond_complex"
6513         variable to bool.
6514         (noce_try_move): Change return type from int to bool.
6515         (noce_try_ifelse_collapse): Ditto.
6516         (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
6517         (noce_try_addcc): Change return type from int to bool.  Change
6518         "subtract" variable to bool.
6519         (noce_try_store_flag_constants): Change return type from int to bool.
6520         (noce_try_store_flag_mask): Ditto.  Change "reversep" variable to bool.
6521         (noce_try_cmove): Change return type from int to bool.
6522         (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
6523         (noce_try_minmax): Change return type from int to bool.  Change
6524         "unsignedp" variable to bool.
6525         (noce_try_abs): Change return type from int to bool.  Change
6526         "negate" variable to bool.
6527         (noce_try_sign_mask): Change return type from int to bool.
6528         (noce_try_move): Ditto.
6529         (noce_try_store_flag_constants): Ditto.
6530         (noce_try_cmove): Ditto.
6531         (noce_try_cmove_arith): Ditto.
6532         (noce_try_minmax): Ditto.  Change "unsignedp" variable to bool.
6533         (noce_try_bitop): Change return type from int to bool.
6534         (noce_operand_ok): Ditto.
6535         (noce_convert_multiple_sets): Ditto.
6536         (noce_convert_multiple_sets_1): Ditto.
6537         (noce_process_if_block): Ditto.
6538         (check_cond_move_block): Ditto.
6539         (cond_move_process_if_block): Ditto. Change "success_p"
6540         variable to bool.
6541         (rest_of_handle_if_conversion): Change return type to void.
6543 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6545         * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
6546         (CASE): Ditto.
6547         (get_conditional_len_internal_fn): New function.
6548         * internal-fn.h (get_conditional_len_internal_fn): Ditto.
6549         * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
6550         support.
6552 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
6554         PR target/91681
6555         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
6557 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
6559         PR target/91681
6560         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
6561         define_insn_and_split derived from *add<dwi>3_doubleword_concat
6562         and *add<dwi>3_doubleword_zext.
6564 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
6566         PR target/110598
6567         * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
6568         optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
6569         (peephole2): Simplify rega = 0; rega op= rega cases.
6571 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
6573         * config/i386/i386-expand.cc (ix86_expand_int_compare): If
6574         testing a TImode SUBREG of a 128-bit vector register against
6575         zero, use a PTEST instruction instead of first moving it to
6576         a pair of scalar registers.
6578 2023-07-12  Robin Dapp  <rdapp@ventanamicro.com>
6580         * genopinit.cc (main): Adjust maximal number of optabs and
6581         machine modes.
6582         * gensupport.cc (find_optab): Shift optab by 20 and mode by
6583         10 bits.
6584         * optabs-query.h (optab_handler): Ditto.
6585         (convert_optab_handler): Ditto.
6587 2023-07-12  Richard Biener  <rguenther@suse.de>
6589         PR tree-optimization/110630
6590         * tree-vect-slp.cc (vect_add_slp_permutation): New
6591         offset parameter, honor that for the extract code generation.
6592         (vectorizable_slp_permutation_1): Handle offsetted identities.
6594 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6596         * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
6597         (umul<mode>3_highpart): Ditto.
6599 2023-07-12  Jan Beulich  <jbeulich@suse.com>
6601         * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
6602         alternative. Adjust original last alternative's "prefix"
6603         attribute to maybe_evex.
6605 2023-07-12  Jan Beulich  <jbeulich@suse.com>
6607         * config/i386/sse.md (vec_dupv4sf): Make first alternative use
6608         vbroadcastss for AVX2. New AVX512F alternative.
6609         (*vec_dupv4si): New AVX2 and AVX512F alternatives using
6610         vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
6612 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6614         * config/riscv/peephole.md: Remove XThead* peephole passes.
6615         * config/riscv/thead.md: Include thead-peephole.md.
6616         * config/riscv/thead-peephole.md: New file.
6618 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6620         * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
6621         New prototype.
6622         (riscv_index_reg_class): Likewise.
6623         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
6624         (riscv_index_reg_class): New function.
6625         * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
6626         riscv_index_reg_class().
6627         (REGNO_OK_FOR_INDEX_P): Call new function
6628         riscv_regno_ok_for_index_p().
6630 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6632         * config/riscv/riscv-protos.h (enum riscv_address_type):
6633         New location of type definition.
6634         (struct riscv_address_info): Likewise.
6635         * config/riscv/riscv.cc (enum riscv_address_type):
6636         Old location of type definition.
6637         (struct riscv_address_info): Likewise.
6639 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6641         * config/riscv/riscv.h (Xmode): New macro.
6643 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6645         * config/riscv/riscv.cc (riscv_print_operand_address): Use
6646         output_addr_const rather than riscv_print_operand.
6648 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6650         * config/riscv/thead.md: Adjust constraints of th_addsl.
6652 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6654         * config/riscv/thead.cc (th_mempair_operands_p):
6655         Fix documentation of th_mempair_order_operands().
6657 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6659         * config/riscv/thead.cc (th_mempair_save_regs):
6660         Emit REG_FRAME_RELATED_EXPR notes in prologue.
6662 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
6664         * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
6665         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
6666         New XThead extension INSN.
6667         (*zero_extendsidi2_th_extu): New XThead extension INSN.
6668         (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
6670 2023-07-12  liuhongt  <hongtao.liu@intel.com>
6672         PR target/110438
6673         PR target/110202
6674         * config/i386/predicates.md
6675         (int_float_vector_all_ones_operand): New predicate.
6676         * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
6677         define_insn.
6678         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
6679         Ditto.
6680         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
6681         Ditto.
6682         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
6683         define_insn_and_split to avoid false dependence.
6684         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
6685         (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
6686         of operands 1 to '0' to avoid false dependence.
6687         (*andnot<mode>3): Ditto.
6688         (iornot<mode>3): Ditto.
6689         (*<nlogic><mode>3): Ditto.
6691 2023-07-12  Mo, Zewei  <zewei.mo@intel.com>
6693         * common/config/i386/cpuinfo.h
6694         (get_intel_cpu): Handle Granite Rapids D.
6695         * common/config/i386/i386-common.cc:
6696         (processor_alias_table): Add graniterapids-d.
6697         * common/config/i386/i386-cpuinfo.h
6698         (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
6699         * config.gcc: Add -march=graniterapids-d.
6700         * config/i386/driver-i386.cc (host_detect_local_cpu):
6701         Handle graniterapids-d.
6702         * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
6703         * doc/extend.texi: Add graniterapids-d.
6704         * doc/invoke.texi: Ditto.
6706 2023-07-12  Haochen Jiang  <haochen.jiang@intel.com>
6708         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
6709         Add OPTION_MASK_ISA_AVX512VL.
6710         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
6711         Ditto.
6713 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6715         * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
6716         * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
6717         (shuffle_compress_patterns): Ditto.
6718         (expand_vec_perm_const_1): Ditto.
6720 2023-07-11  Uros Bizjak  <ubizjak@gmail.com>
6722         * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
6723         * cfghooks.h (struct cfg_hooks): Change return type of
6724         verify_flow_info from integer to bool.
6725         * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
6726         (can_delete_label_p): Ditto.
6727         (rtl_verify_flow_info): Change return type from int to bool
6728         and adjust function body accordingly.  Change "err" variable to bool.
6729         (rtl_verify_flow_info_1): Ditto.
6730         (free_bb_for_insn): Change return type to void.
6731         (rtl_merge_blocks): Change "b_empty" variable to bool.
6732         (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
6733         (verify_hot_cold_block_grouping): Change return type from int to bool.
6734         Change "err" variable to bool.
6735         (rtl_verify_edges): Ditto.
6736         (rtl_verify_bb_insns): Ditto.
6737         (rtl_verify_bb_pointers): Ditto.
6738         (rtl_verify_bb_insn_chain): Ditto.
6739         (rtl_verify_fallthru): Ditto.
6740         (rtl_verify_bb_layout): Ditto.
6741         (purge_all_dead_edges): Change "purged" variable to bool.
6742         * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
6743         * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
6744         (load_killed_in_block_p): Change return type from int to bool
6745         and adjust function body accordingly.
6746         (oprs_unchanged_p): Return true/false.
6747         (rest_of_handle_gcse2): Change return type to void.
6748         * tree-cfg.cc (gimple_verify_flow_info): Change return type from
6749         int to bool.  Change "err" variable to bool.
6751 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
6753         * doc/gm2.texi (-Wuninit-variable-checking=) New item.
6755 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6757         * doc/md.texi: Add COND_LEN_* operations for loop control with length.
6758         * internal-fn.cc (cond_len_unary_direct): Ditto.
6759         (cond_len_binary_direct): Ditto.
6760         (cond_len_ternary_direct): Ditto.
6761         (expand_cond_len_unary_optab_fn): Ditto.
6762         (expand_cond_len_binary_optab_fn): Ditto.
6763         (expand_cond_len_ternary_optab_fn): Ditto.
6764         (direct_cond_len_unary_optab_supported_p): Ditto.
6765         (direct_cond_len_binary_optab_supported_p): Ditto.
6766         (direct_cond_len_ternary_optab_supported_p): Ditto.
6767         * internal-fn.def (COND_LEN_ADD): Ditto.
6768         (COND_LEN_SUB): Ditto.
6769         (COND_LEN_MUL): Ditto.
6770         (COND_LEN_DIV): Ditto.
6771         (COND_LEN_MOD): Ditto.
6772         (COND_LEN_RDIV): Ditto.
6773         (COND_LEN_MIN): Ditto.
6774         (COND_LEN_MAX): Ditto.
6775         (COND_LEN_FMIN): Ditto.
6776         (COND_LEN_FMAX): Ditto.
6777         (COND_LEN_AND): Ditto.
6778         (COND_LEN_IOR): Ditto.
6779         (COND_LEN_XOR): Ditto.
6780         (COND_LEN_SHL): Ditto.
6781         (COND_LEN_SHR): Ditto.
6782         (COND_LEN_FMA): Ditto.
6783         (COND_LEN_FMS): Ditto.
6784         (COND_LEN_FNMA): Ditto.
6785         (COND_LEN_FNMS): Ditto.
6786         (COND_LEN_NEG): Ditto.
6787         * optabs.def (OPTAB_D): Ditto.
6789 2023-07-11  Richard Biener  <rguenther@suse.de>
6791         PR tree-optimization/110614
6792         * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
6793         SLP splats are not suitable for re-align ops.
6795 2023-07-10  Peter Bergner  <bergner@linux.ibm.com>
6797         * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
6798         MEM_P usage.
6799         (vsx_quad_dform_memory_operand): Likewise.
6801 2023-07-10  Uros Bizjak  <ubizjak@gmail.com>
6803         * reorg.cc (stop_search_p): Change return type from int to bool
6804         and adjust function body accordingly.
6805         (resource_conflicts_p): Ditto.
6806         (insn_references_resource_p): Change return type from int to bool.
6807         (insn_sets_resource_p): Ditto.
6808         (redirect_with_delay_slots_safe_p): Ditto.
6809         (condition_dominates_p): Change return type from int to bool
6810         and adjust function body accordingly.
6811         (redirect_with_delay_list_safe_p): Ditto.
6812         (check_annul_list_true_false): Ditto.  Change "annul_true_p"
6813         function argument to bool.
6814         (steal_delay_list_from_target): Change "pannul_p" function
6815         argument to bool pointer.  Change "must_annul" and "used_annul"
6816         variables from int to bool.
6817         (steal_delay_list_from_fallthrough): Ditto.
6818         (own_thread_p): Change return type from int to bool and adjust
6819         function body accordingly.  Change "allow_fallthrough" function
6820         argument to bool.
6821         (reorg_redirect_jump): Change return type from int to bool.
6822         (fill_simple_delay_slots): Change "non_jumps_p" function
6823         argument from int to bool.  Change "maybe_never" varible to bool.
6824         (fill_slots_from_thread): Change "likely", "thread_if_true" and
6825         "own_thread" function arguments to bool.  Change "lose" and
6826         "must_annul" variables to bool.
6827         (delete_from_delay_slot): Change "had_barrier" variable to bool.
6828         (try_merge_delay_insns): Change "annul_p" variable to bool.
6829         (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
6830         variables to bool.
6831         (rest_of_handle_delay_slots): Change return type from int to void
6832         and adjust function body accordingly.
6834 2023-07-10  Kito Cheng  <kito.cheng@sifive.com>
6836         * doc/extend.texi (RISC-V Operand Modifiers): New.
6838 2023-07-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6840         * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
6841         (insert_insn_end_basic_block): Ditto.
6842         (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
6843         * gcse.cc (insert_insn_end_basic_block):  Export as global function.
6844         * gcse.h (insert_insn_end_basic_block): Ditto.
6846 2023-07-10  Christophe Lyon   <christophe.lyon@linaro.org>
6848         PR target/110268
6849         * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
6850         (arm_builtin_decl): Hahndle MVE builtins.
6851         * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
6852         (add_unique_function): Fix handling of
6853         __ARM_MVE_PRESERVE_USER_NAMESPACE.
6854         (add_overloaded_function): Likewise.
6855         * config/arm/arm-protos.h (builtin_decl): New declaration.
6857 2023-07-10  Christophe Lyon  <christophe.lyon@linaro.org>
6859         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
6861 2023-07-10  Xi Ruoyao  <xry111@xry111.site>
6863         PR tree-optimization/110557
6864         * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
6865         Ensure the output sign-extended if necessary.
6867 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
6869         * config/i386/i386.md (peephole2): Transform xchg insn with a
6870         REG_UNUSED note to a (simple) move.
6871         (*insvti_lowpart_1): New define_insn_and_split.
6872         (*insvdi_lowpart_1): Likewise.
6874 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
6876         * config/i386/i386-features.cc (compute_convert_gain): Tweak
6877         gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
6878         (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
6879         avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
6881 2023-07-10  liuhongt  <hongtao.liu@intel.com>
6883         PR target/110170
6884         * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
6885         splitter to detect fp max pattern.
6886         (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
6888 2023-07-09  Jan Hubicka  <jh@suse.cz>
6890         * cfg.cc (check_bb_profile): Dump counts with relative frequency.
6891         (dump_edge_info): Likewise.
6892         (dump_bb_info): Likewise.
6893         * profile-count.cc (profile_count::dump): Add comma between quality and
6894         freq.
6896 2023-07-08  Jan Hubicka  <jh@suse.cz>
6898         PR tree-optimization/110600
6899         * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
6901 2023-07-08  Jan Hubicka  <jh@suse.cz>
6903         PR middle-end/110590
6904         * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
6905         inner loops and be more careful about inconsistent profiles.
6906         (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
6907         exit is followed by other exit.
6909 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
6911         * cprop.cc (reg_available_p): Change return type from int to bool.
6912         (reg_not_set_p): Ditto.
6913         (try_replace_reg): Ditto.  Change "success" variable to bool.
6914         (cprop_jump): Change return type from int to void
6915         and adjust function body accordingly.
6916         (constprop_register): Ditto.
6917         (cprop_insn): Ditto.  Change "changed" variable to bool.
6918         (local_cprop_pass): Change return type from int to void
6919         and adjust function body accordingly.
6920         (bypass_block): Ditto.  Change "change", "may_be_loop_header"
6921         and "removed_p" variables to bool.
6922         (bypass_conditional_jumps): Change return type from int to void
6923         and adjust function body accordingly.  Change "changed"
6924         variable to bool.
6925         (one_cprop_pass): Ditto.
6927 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
6929         * gcse.cc (expr_equiv_p): Change return type from int to bool.
6930         (oprs_unchanged_p): Change return type from int to void
6931         and adjust function body accordingly.
6932         (oprs_anticipatable_p): Ditto.
6933         (oprs_available_p): Ditto.
6934         (insert_expr_in_table): Ditto.  Change "antic_p" and "avail_p"
6935         arguments to bool. Change "found" variable to bool.
6936         (load_killed_in_block_p): Change return type from int to void and
6937         adjust function body accordingly.  Change "avail_p" argument to bool.
6938         (pre_expr_reaches_here_p): Change return type from int to void
6939         and adjust function body accordingly.
6940         (pre_delete): Ditto.  Change "changed" variable to bool.
6941         (pre_gcse): Change return type from int to void
6942         and adjust function body accordingly. Change "did_insert" and
6943         "changed" variables to bool.
6944         (one_pre_gcse_pass): Change return type from int to void
6945         and adjust function body accordingly.  Change "changed" variable
6946         to bool.
6947         (should_hoist_expr_to_dom): Change return type from int to void
6948         and adjust function body accordingly.  Change
6949         "visited_allocated_locally" variable to bool.
6950         (hoist_code): Change return type from int to void and adjust
6951         function body accordingly.  Change "changed" variable to bool.
6952         (one_code_hoisting_pass): Ditto.
6953         (pre_edge_insert): Change return type from int to void and adjust
6954         function body accordingly.  Change "did_insert" variable to bool.
6955         (pre_expr_reaches_here_p_work): Change return type from int to void
6956         and adjust function body accordingly.
6957         (simple_mem): Ditto.
6958         (want_to_gcse_p): Change return type from int to void
6959         and adjust function body accordingly.
6960         (can_assign_to_reg_without_clobbers_p): Update function body
6961         for bool return type.
6962         (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
6963         (pre_insert_copies): Change "added_copy" variable to bool.
6965 2023-07-08  Jonathan Wakely  <jwakely@redhat.com>
6967         PR c++/110595
6968         PR c++/110596
6969         * doc/invoke.texi (Warning Options): Fix typos.
6971 2023-07-07  Jan Hubicka  <jh@suse.cz>
6973         * profile-count.cc (profile_count::dump): Add FUN
6974         parameter; print relative frequency.
6975         (profile_count::debug): Update.
6976         * profile-count.h (profile_count::dump): Update
6977         prototype.
6979 2023-07-07  Roger Sayle  <roger@nextmovesoftware.com>
6981         PR target/43644
6982         PR target/110533
6983         * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
6984         TImode destinations from paradoxical SUBREGs (setting the lowpart)
6985         into explicit zero extensions.  Use *insvti_highpart_1 instruction
6986         to set the highpart of a TImode destination.
6988 2023-07-07  Jan Hubicka  <jh@suse.cz>
6990         * predict.cc (force_edge_cold): Use
6991         set_edge_probability_and_rescale_others; improve dumps.
6993 2023-07-07  Jan Hubicka  <jh@suse.cz>
6995         * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
6996         after exit.
6997         * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
6998         is known.
7000 2023-07-07  Juergen Christ  <jchrist@linux.ibm.com>
7002         * config/s390/s390.cc (vec_init): Fix default case
7004 2023-07-07  Vladimir N. Makarov  <vmakarov@redhat.com>
7006         * lra-assigns.cc (assign_by_spills): Add reload insns involving
7007         reload pseudos with non-refined class to be processed on the next
7008         sub-pass.
7009         * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
7010         (in_class_p): Use it.
7011         (print_curr_insn_alt): New func.
7012         (process_alt_operands): Use it.  Improve debug info.
7013         (curr_insn_transform): Use print_curr_insn_alt.  Refine reload
7014         pseudo class if it is not refined yet.
7016 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
7018         * value-range.cc (irange::get_bitmask_from_range): Return all the
7019         known bits for a singleton.
7020         (irange::set_range_from_bitmask): Set a range of a singleton when
7021         all bits are known.
7023 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
7025         * value-range.cc (irange::intersect): Leave normalization to
7026         caller.
7028 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
7030         * data-streamer-in.cc (streamer_read_value_range): Adjust for
7031         value/mask.
7032         * data-streamer-out.cc (streamer_write_vrange): Same.
7033         * range-op.cc (operator_cast::fold_range): Same.
7034         * value-range-pretty-print.cc
7035         (vrange_printer::print_irange_bitmasks): Same.
7036         * value-range-storage.cc (irange_storage::write_lengths_address):
7037         Same.
7038         (irange_storage::set_irange): Same.
7039         (irange_storage::get_irange): Same.
7040         (irange_storage::size): Same.
7041         (irange_storage::dump): Same.
7042         * value-range-storage.h: Same.
7043         * value-range.cc (debug): New.
7044         (irange_bitmask::dump): New.
7045         (add_vrange): Adjust for value/mask.
7046         (irange::operator=): Same.
7047         (irange::set): Same.
7048         (irange::verify_range): Same.
7049         (irange::operator==): Same.
7050         (irange::contains_p): Same.
7051         (irange::irange_single_pair_union): Same.
7052         (irange::union_): Same.
7053         (irange::intersect): Same.
7054         (irange::invert): Same.
7055         (irange::get_nonzero_bits_from_range): Rename to...
7056         (irange::get_bitmask_from_range): ...this.
7057         (irange::set_range_from_nonzero_bits): Rename to...
7058         (irange::set_range_from_bitmask): ...this.
7059         (irange::set_nonzero_bits): Rename to...
7060         (irange::update_bitmask): ...this.
7061         (irange::get_nonzero_bits): Rename to...
7062         (irange::get_bitmask): ...this.
7063         (irange::intersect_nonzero_bits): Rename to...
7064         (irange::intersect_bitmask): ...this.
7065         (irange::union_nonzero_bits): Rename to...
7066         (irange::union_bitmask): ...this.
7067         (irange_bitmask::verify_mask): New.
7068         * value-range.h (class irange_bitmask): New.
7069         (irange_bitmask::set_unknown): New.
7070         (irange_bitmask::unknown_p): New.
7071         (irange_bitmask::irange_bitmask): New.
7072         (irange_bitmask::get_precision): New.
7073         (irange_bitmask::get_nonzero_bits): New.
7074         (irange_bitmask::set_nonzero_bits): New.
7075         (irange_bitmask::operator==): New.
7076         (irange_bitmask::union_): New.
7077         (irange_bitmask::intersect): New.
7078         (class irange): Friend vrange_printer.
7079         (irange::varying_compatible_p): Adjust for bitmask.
7080         (irange::set_varying): Same.
7081         (irange::set_nonzero): Same.
7083 2023-07-07  Jan Beulich  <jbeulich@suse.com>
7085         * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
7087 2023-07-07  Jan Beulich  <jbeulich@suse.com>
7089         * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
7090         alternative. Switch new last alternative's "isa" attribute to
7091         "avx512vl".
7092         (vec_extract_hi_v32qi): Likewise.
7094 2023-07-07  Pan Li  <pan2.li@intel.com>
7095             Robin Dapp  <rdapp@ventanamicro.com>
7097         * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
7098         when FRM_MODE_DYN.
7099         (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
7100         (riscv_mode_exit): Likewise for exit mode.
7101         (riscv_mode_needed): Likewise for needed mode.
7102         (riscv_mode_after): Likewise for after mode.
7104 2023-07-07  Pan Li  <pan2.li@intel.com>
7106         * config/riscv/vector.md: Fix typo.
7108 2023-07-06  Jan Hubicka  <jh@suse.cz>
7110         PR middle-end/25623
7111         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
7112         of iterations determined.
7113         * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
7115 2023-07-06  Jan Hubicka  <jh@suse.cz>
7117         * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
7118         probability update to be safe on loops with subloops.
7119         Make bound parameter to be iteration bound.
7120         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
7121         of scale_loop_profile.
7122         * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
7124 2023-07-06  Hao Liu OS  <hliu@os.amperecomputing.com>
7126         PR tree-optimization/110449
7127         * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
7128         vec_loop for the unrolled loop.
7130 2023-07-06  Jan Hubicka  <jh@suse.cz>
7132         * cfg.cc (set_edge_probability_and_rescale_others): New function.
7133         (update_bb_profile_for_threading): Use it; simplify the rest.
7134         * cfg.h (set_edge_probability_and_rescale_others): Declare.
7135         * profile-count.h (profile_probability::apply_scale): New.
7137 2023-07-06  Claudiu Zissulescu  <claziss@gmail.com>
7139         * doc/extend.texi (ARC Built-in Functions): Update documentation
7140         with missing builtins.
7142 2023-07-06  Richard Biener  <rguenther@suse.de>
7144         PR tree-optimization/110556
7145         * tree-ssa-tail-merge.cc (gimple_equal_p): Check
7146         assign code and all operands of non-stores.
7148 2023-07-06  Richard Biener  <rguenther@suse.de>
7150         PR tree-optimization/110563
7151         * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
7152         Remove second argument.
7153         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
7154         Remove for_epilogue_p argument.  Merge assert ...
7155         (vect_analyze_loop_2): ... with check done before determining
7156         partial vectors by moving it after.
7157         * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
7159 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
7161         * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
7162         few things re 'reorder' option and strings.
7163         * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
7165 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
7167         * gengtype-parse.cc: Clean up obsolete parametrized structs
7168         remnants.
7169         * gengtype.cc: Likewise.
7170         * gengtype.h: Likewise.
7172 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
7174         * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
7175         Adjust all users.
7177 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
7179         * gengtype-parse.cc (token_names): Add '"user"'.
7180         * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
7181         'FIRST_TOKEN_WITH_VALUE'.
7183 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
7185         * doc/gty.texi (GTY Options) <string_length>: Enhance.
7187 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
7189         * gengtype.cc (write_root, write_roots): Explicitly reject
7190         'string_length' option.
7191         * doc/gty.texi (GTY Options) <string_length>: Document.
7193 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
7195         * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
7196         (ggc_pch_write_object): Remove 'bool is_string' argument.
7197         * ggc-common.cc: Adjust.
7198         * ggc-page.cc: Likewise.
7200 2023-07-06  Roger Sayle  <roger@nextmovesoftware.com>
7202         * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
7204 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
7206         * doc/extend.texi: Move x86 inlining rule to a new subsubsection
7207         and add description for inling of function with arch and tune
7208         attributes.
7210 2023-07-06  Richard Biener  <rguenther@suse.de>
7212         PR tree-optimization/110515
7213         * tree-ssa-pre.cc (compute_avail): Make code dealing
7214         with hoisting loads with different alias-sets more
7215         robust.
7217 2023-07-06  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
7219         * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
7221 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
7223         * config/i386/i386.cc (ix86_can_inline_p): If callee has
7224         default arch=x86-64 and tune=generic, do not block the
7225         inlining to its caller. Also allow callee with different
7226         arch= to be inlined if it has always_inline attribute and
7227         it's ISA is subset of caller's.
7229 2023-07-06  liuhongt  <hongtao.liu@intel.com>
7231         * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
7232         DF/SFmode AND/IOR/XOR/ANDN operations.
7234 2023-07-06  Andrew Pinski  <apinski@marvell.com>
7236         PR middle-end/110554
7237         * tree-vect-generic.cc (expand_vector_condition): For comparisons,
7238         just build using boolean_type_node instead of the cond_type.
7239         For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
7240         that will feed into the COND_EXPR.
7242 2023-07-06  liuhongt  <hongtao.liu@intel.com>
7244         PR target/110170
7245         * config/i386/i386.md (movdf_internal): Disparage slightly for
7246         2 alternatives (r,v) and (v,r) by adding constraint modifier
7247         '?'.
7249 2023-07-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
7251         PR target/106907
7252         * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
7253         initialization of new_addr.
7255 2023-07-06  Hao Liu  <hliu@os.amperecomputing.com>
7257         PR tree-optimization/110474
7258         * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
7259         unroll factor while selecting the epilog vect loop VF.
7261 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
7263         * gimple-range-gori.cc (compute_operand_range): Convert to a tail
7264         call.
7266 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
7268         * gimple-range-gori.cc (compute_operand_range): After calling
7269         compute_operand2_range, recursively call self if needed.
7270         (compute_operand2_range): Turn into a leaf function.
7271         (gori_compute::compute_operand1_and_operand2_range): Finish
7272         operand2 calculation.
7273         * gimple-range-gori.h (compute_operand2_range): Remove name param.
7275 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
7277         * gimple-range-gori.cc (compute_operand_range): After calling
7278         compute_operand1_range, recursively call self if needed.
7279         (compute_operand1_range): Turn into a leaf function.
7280         (gori_compute::compute_operand1_and_operand2_range): Finish
7281         operand1 calculation.
7282         * gimple-range-gori.h (compute_operand1_range): Remove name param.
7284 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
7286         * gimple-range-gori.cc (compute_operand_range): Check for
7287         operand interdependence when both op1 and op2 are computed.
7288         (compute_operand1_and_operand2_range): No checks required now.
7290 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
7292         * gimple-range-gori.cc (compute_operand_range): Check for
7293         a relation between op1 and op2 and use that instead.
7294         (compute_operand1_range): Don't look for a relation override.
7295         (compute_operand2_range): Ditto.
7297 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
7299         * doc/contrib.texi (Contributors): Update my entry.
7301 2023-07-05  Filip Kastl  <filip.kastl@gmail.com>
7303         * value-prof.cc (gimple_mod_subtract_transform): Correct edge
7304         prob calculation.
7306 2023-07-05  Uros Bizjak  <ubizjak@gmail.com>
7308         * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
7309         scehdule_more_p and contributes_to_priority indirect frunction
7310         type from int to bool.
7311         (no_real_insns_p): Change return type from int to bool.
7312         (contributes_to_priority): Ditto.
7313         * haifa-sched.cc (no_real_insns_p): Change return type from
7314         int to bool and adjust function body accordingly.
7315         * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
7316         variable type from int to bool.
7317         (ps_insn_advance_column): Change return type from int to bool.
7318         (ps_has_conflicts): Ditto. Change "has_conflicts"
7319         variable type from int to bool.
7320         * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
7321         (conditions_mutex_p): Ditto.
7322         * sched-ebb.cc (schedule_more_p): Ditto.
7323         (ebb_contributes_to_priority): Change return type from
7324         int to bool and adjust function body accordingly.
7325         * sched-rgn.cc (is_cfg_nonregular): Ditto.
7326         (check_live_1): Ditto.
7327         (is_pfree): Ditto.
7328         (find_conditional_protection): Ditto.
7329         (is_conditionally_protected): Ditto.
7330         (is_prisky): Ditto.
7331         (is_exception_free): Ditto.
7332         (haifa_find_rgns): Change "unreachable" and "too_large_failure"
7333         variables from int to bool.
7334         (extend_rgns): Change "rescan" variable from int to bool.
7335         (check_live): Change return type from
7336         int to bool and adjust function body accordingly.
7337         (can_schedule_ready_p): Ditto.
7338         (schedule_more_p): Ditto.
7339         (contributes_to_priority): Ditto.
7341 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
7343         * doc/md.texi: Document that vec_set and vec_extract must not
7344         fail.
7345         * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
7346         (gimple_expand_vec_set_extract_expr): ...to this.
7347         (gimple_expand_vec_exprs): Call renamed function.
7348         * internal-fn.cc (vec_extract_direct): Add.
7349         (expand_vec_extract_optab_fn): New function to expand
7350         vec_extract optab.
7351         (direct_vec_extract_optab_supported_p): Add.
7352         * internal-fn.def (VEC_EXTRACT): Add.
7353         * optabs.cc (can_vec_extract_var_idx_p): New function.
7354         * optabs.h (can_vec_extract_var_idx_p): Declare.
7356 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
7358         * config/riscv/autovec.md: Add gen_lowpart.
7360 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
7362         * config/riscv/autovec.md: Allow register index operand.
7364 2023-07-05  Pan Li  <pan2.li@intel.com>
7366         * config/riscv/riscv-vector-builtins.cc
7367         (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
7369 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
7371         * config/riscv/autovec.md: Use float_truncate.
7373 2023-07-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
7375         * internal-fn.cc (internal_fn_len_index): Apply
7376         LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
7377         (internal_fn_mask_index): Ditto.
7378         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
7379         (supports_vec_scatter_store_p): Ditto.
7380         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
7381         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
7382         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
7383         (vect_get_strided_load_store_ops): Ditto.
7384         (vectorizable_store): Ditto.
7385         (vectorizable_load): Ditto.
7387 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
7388             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7390         * simplify-rtx.cc (native_encode_rtx): Ditto.
7391         (native_decode_vector_rtx): Ditto.
7392         (simplify_const_vector_byte_offset): Ditto.
7393         (simplify_const_vector_subreg): Ditto.
7394         * tree.cc (build_truth_vector_type_for_mode): Ditto.
7395         * varasm.cc (output_constant_pool_2): Ditto.
7397 2023-07-05  YunQiang Su  <yunqiang.su@cipunited.com>
7399         * config/mips/mips.cc (mips_expand_block_move): don't expand for
7400         r6 with -mno-unaligned-access option if one or both of src and
7401         dest are unaligned. restruct: return directly if length is not const.
7402         (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
7404 2023-07-05  Jan Beulich  <jbeulich@suse.com>
7406         PR target/100711
7407         * config/i386/sse.md: New splitters to simplify
7408         not;vec_duplicate as a singular vpternlog.
7409         (one_cmpl<mode>2): Allow broadcast for operand 1.
7410         (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
7412 2023-07-05  Jan Beulich  <jbeulich@suse.com>
7414         PR target/100711
7415         * config/i386/sse.md: New splitters to simplify
7416         not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
7418 2023-07-05  Jan Beulich  <jbeulich@suse.com>
7420         PR target/100711
7421         * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
7422         form of splitter for PR target/100711.
7424 2023-07-05  Richard Biener  <rguenther@suse.de>
7426         PR middle-end/110541
7427         * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
7428         reality.
7430 2023-07-05  Jan Beulich  <jbeulich@suse.com>
7432         PR target/93768
7433         * config/i386/sse.md (*andnot<mode>3): Add new alternatives
7434         for memory form operand 1.
7436 2023-07-05  Jan Beulich  <jbeulich@suse.com>
7438         PR target/93768
7439         * config/i386/i386.cc (ix86_rtx_costs): Further special-case
7440         bitwise vector operations.
7441         * config/i386/sse.md (*iornot<mode>3): New insn.
7442         (*xnor<mode>3): Likewise.
7443         (*<nlogic><mode>3): Likewise.
7444         (andor): New code iterator.
7445         (nlogic): New code attribute.
7446         (ternlog_nlogic): Likewise.
7448 2023-07-05  Richard Biener  <rguenther@suse.de>
7450         * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
7452 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
7454         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
7456 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
7458         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
7459         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
7460         (ADJUST_ALIGNMENT): Ditto.
7461         (RVV_TUPLE_PARTIAL_MODES): Ditto.
7462         (ADJUST_NUNITS): Ditto.
7463         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
7464         New types.
7465         (vfloat16mf4x3_t): Ditto.
7466         (vfloat16mf4x4_t): Ditto.
7467         (vfloat16mf4x5_t): Ditto.
7468         (vfloat16mf4x6_t): Ditto.
7469         (vfloat16mf4x7_t): Ditto.
7470         (vfloat16mf4x8_t): Ditto.
7471         (vfloat16mf2x2_t): Ditto.
7472         (vfloat16mf2x3_t): Ditto.
7473         (vfloat16mf2x4_t): Ditto.
7474         (vfloat16mf2x5_t): Ditto.
7475         (vfloat16mf2x6_t): Ditto.
7476         (vfloat16mf2x7_t): Ditto.
7477         (vfloat16mf2x8_t): Ditto.
7478         (vfloat16m1x2_t): Ditto.
7479         (vfloat16m1x3_t): Ditto.
7480         (vfloat16m1x4_t): Ditto.
7481         (vfloat16m1x5_t): Ditto.
7482         (vfloat16m1x6_t): Ditto.
7483         (vfloat16m1x7_t): Ditto.
7484         (vfloat16m1x8_t): Ditto.
7485         (vfloat16m2x2_t): Ditto.
7486         (vfloat16m2x3_t): Ditto.
7487         (vfloat16m2x4_t): Ditto.
7488         (vfloat16m4x2_t): Ditto.
7489         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
7490         (vfloat16mf4x3_t): Ditto.
7491         (vfloat16mf4x4_t): Ditto.
7492         (vfloat16mf4x5_t): Ditto.
7493         (vfloat16mf4x6_t): Ditto.
7494         (vfloat16mf4x7_t): Ditto.
7495         (vfloat16mf4x8_t): Ditto.
7496         (vfloat16mf2x2_t): Ditto.
7497         (vfloat16mf2x3_t): Ditto.
7498         (vfloat16mf2x4_t): Ditto.
7499         (vfloat16mf2x5_t): Ditto.
7500         (vfloat16mf2x6_t): Ditto.
7501         (vfloat16mf2x7_t): Ditto.
7502         (vfloat16mf2x8_t): Ditto.
7503         (vfloat16m1x2_t): Ditto.
7504         (vfloat16m1x3_t): Ditto.
7505         (vfloat16m1x4_t): Ditto.
7506         (vfloat16m1x5_t): Ditto.
7507         (vfloat16m1x6_t): Ditto.
7508         (vfloat16m1x7_t): Ditto.
7509         (vfloat16m1x8_t): Ditto.
7510         (vfloat16m2x2_t): Ditto.
7511         (vfloat16m2x3_t): Ditto.
7512         (vfloat16m2x4_t): Ditto.
7513         (vfloat16m4x2_t): Ditto.
7514         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
7515         * config/riscv/riscv.md: New.
7516         * config/riscv/vector-iterators.md: New.
7518 2023-07-04  Andrew Pinski  <apinski@marvell.com>
7520         PR tree-optimization/110487
7521         * match.pd (a !=/== CST1 ? CST2 : CST3): Always
7522         build a nonstandard integer and use that.
7524 2023-07-04  Andrew Pinski  <apinski@marvell.com>
7526         * match.pd (a?-1:0): Cast type an integer type
7527         rather the type before the negative.
7528         (a?0:-1): Likewise.
7530 2023-07-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7532         * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
7533         Change to use HARD_REG_BIT and its macros.
7534         * config/xtensa/xtensa.md
7535         (peephole2: regmove elimination during DFmode input reload):
7536         Likewise.
7538 2023-07-04  Richard Biener  <rguenther@suse.de>
7540         PR tree-optimization/110491
7541         * tree-ssa-phiopt.cc (match_simplify_replacement): Check
7542         whether the PHI args are possibly undefined before folding
7543         the COND_EXPR.
7545 2023-07-04  Pan Li  <pan2.li@intel.com>
7546             Thomas Schwinge  <thomas@codesourcery.com>
7548         * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
7549         bits for machine mode table.
7550         * lto-streamer-out.cc (lto_write_mode_table): Stream out the
7551         HOST machine mode bits.
7552         * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
7553         * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
7554         as the table size.
7555         * tree-streamer.h (streamer_mode_table): Ditto.
7556         (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
7557         as the packing limit.
7558         (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
7560 2023-07-04  Thomas Schwinge  <thomas@codesourcery.com>
7562         * lto-streamer.h (class lto_input_block): Capture
7563         'lto_file_decl_data *file_data' instead of just
7564         'unsigned char *mode_table'.
7565         * ipa-devirt.cc (ipa_odr_read_section): Adjust.
7566         * ipa-fnsummary.cc (inline_read_section): Likewise.
7567         * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
7568         * ipa-modref.cc (read_section): Likewise.
7569         * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
7570         Likewise.
7571         * ipa-sra.cc (isra_read_summary_section): Likewise.
7572         * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
7573         * lto-section-in.cc (lto_create_simple_input_block): Likewise.
7574         * lto-streamer-in.cc (lto_read_body_or_constructor)
7575         (lto_input_toplevel_asms): Likewise.
7576         * tree-streamer.h (bp_unpack_machine_mode): Likewise.
7578 2023-07-04  Richard Biener  <rguenther@suse.de>
7580         * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
7581         (empty_bb_or_one_feeding_into_p): Check for them.
7582         * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
7583         * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
7585 2023-07-04  Richard Biener  <rguenther@suse.de>
7587         * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
7588         check guarding scalar_niter underflow.
7590 2023-07-04  Hao Liu  <hliu@os.amperecomputing.com>
7592         PR tree-optimization/110531
7593         * tree-vect-loop.cc (vect_analyze_loop_1): initialize
7594         slp_done_for_suggested_uf to false.
7596 2023-07-04  Richard Biener  <rguenther@suse.de>
7598         PR tree-optimization/110228
7599         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
7600         Mark SSA may-undefs.
7601         (bb_no_side_effects_p): Check stmt uses for undefs.
7603 2023-07-04  Richard Biener  <rguenther@suse.de>
7605         PR tree-optimization/110436
7606         * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
7607         force live but not relevant pattern stmts relevant.
7609 2023-07-04  Lili Cui  <lili.cui@intel.com>
7611         * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
7612         * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
7614 2023-07-04  Richard Biener  <rguenther@suse.de>
7616         PR middle-end/110495
7617         * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
7618         since we do not set TREE_OVERFLOW on those since the
7619         introduction of VL vectors.
7620         * match.pd (x +- CST +- CST): For VECTOR_CST do not look
7621         at TREE_OVERFLOW to determine validity of association.
7623 2023-07-04  Richard Biener  <rguenther@suse.de>
7625         PR tree-optimization/110310
7626         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
7627         Move costing part ...
7628         (vect_analyze_loop_costing): ... here.  Integrate better
7629         estimate for epilogues from ...
7630         (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
7631         with actual epilogue status.
7632         * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
7633         avoid cancelling epilogue vectorization.
7634         (vect_update_epilogue_niters): Remove.  No longer update
7635         epilogue LOOP_VINFO_NITERS.
7637 2023-07-04  Pan Li  <pan2.li@intel.com>
7639         Revert:
7640         2023-07-03  Pan Li  <pan2.li@intel.com>
7642         * config/riscv/vector.md: Fix typo.
7644 2023-07-04  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
7646         * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
7647         * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
7648         (expand_gather_load_optab_fn): Ditto.
7649         (internal_load_fn_p): Ditto.
7650         (internal_store_fn_p): Ditto.
7651         (internal_gather_scatter_fn_p): Ditto.
7652         (internal_fn_len_index): Ditto.
7653         (internal_fn_mask_index): Ditto.
7654         (internal_fn_stored_value_index): Ditto.
7655         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
7656         (LEN_MASK_SCATTER_STORE): Ditto.
7657         * optabs.def (OPTAB_CD): Ditto.
7659 2023-07-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7661         * config/riscv/riscv-vsetvl.cc
7662         (vector_insn_info::parse_insn): Add early break.
7664 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
7666         * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
7667         ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
7669 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
7671         * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
7673 2023-07-03  Christoph Müllner  <christoph.muellner@vrull.eu>
7675         * common/config/riscv/riscv-common.cc: Add support for zvbb,
7676         zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
7677         zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
7678         * config/riscv/arch-canonicalize: Add canonicalization info for
7679         zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
7680         * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
7681         (MASK_ZVBC): Likewise.
7682         (TARGET_ZVBB): Likewise.
7683         (TARGET_ZVBC): Likewise.
7684         (MASK_ZVKG): Likewise.
7685         (MASK_ZVKNED): Likewise.
7686         (MASK_ZVKNHA): Likewise.
7687         (MASK_ZVKNHB): Likewise.
7688         (MASK_ZVKSED): Likewise.
7689         (MASK_ZVKSH): Likewise.
7690         (MASK_ZVKN): Likewise.
7691         (MASK_ZVKNC): Likewise.
7692         (MASK_ZVKNG): Likewise.
7693         (MASK_ZVKS): Likewise.
7694         (MASK_ZVKSC): Likewise.
7695         (MASK_ZVKSG): Likewise.
7696         (MASK_ZVKT): Likewise.
7697         (TARGET_ZVKG): Likewise.
7698         (TARGET_ZVKNED): Likewise.
7699         (TARGET_ZVKNHA): Likewise.
7700         (TARGET_ZVKNHB): Likewise.
7701         (TARGET_ZVKSED): Likewise.
7702         (TARGET_ZVKSH): Likewise.
7703         (TARGET_ZVKN): Likewise.
7704         (TARGET_ZVKNC): Likewise.
7705         (TARGET_ZVKNG): Likewise.
7706         (TARGET_ZVKS): Likewise.
7707         (TARGET_ZVKSC): Likewise.
7708         (TARGET_ZVKSG): Likewise.
7709         (TARGET_ZVKT): Likewise.
7710         * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
7712 2023-07-03  Andrew Pinski  <apinski@marvell.com>
7714         PR middle-end/110510
7715         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
7717 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
7719         * config/darwin.h: Avoid duplicate multiply_defined specs on
7720         earlier Darwin versions with shared libgcc.
7722 2023-07-03  Uros Bizjak  <ubizjak@gmail.com>
7724         * tree.h (tree_int_cst_equal): Change return type from int to bool.
7725         (operand_equal_for_phi_arg_p): Ditto.
7726         (tree_map_base_marked_p): Ditto.
7727         * tree.cc (contains_placeholder_p): Update function body
7728         for bool return type.
7729         (type_cache_hasher::equal): Ditto.
7730         (tree_map_base_hash): Change return type
7731         from int to void and adjust function body accordingly.
7732         (tree_int_cst_equal): Ditto.
7733         (operand_equal_for_phi_arg_p): Ditto.
7734         (get_narrower): Change "first" variable to bool.
7735         (cl_option_hasher::equal): Update function body for bool return type.
7736         * ggc.h (ggc_set_mark): Change return type from int to bool.
7737         (ggc_marked_p): Ditto.
7738         * ggc-page.cc (gt_ggc_mx): Change return type
7739         from int to void and adjust function body accordingly.
7740         (ggc_set_mark): Ditto.
7742 2023-07-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
7744         * config/riscv/autovec.md: Change order of
7745         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
7746         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
7747         * doc/md.texi: Ditto.
7748         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
7749         * internal-fn.cc (len_maskload_direct): Ditto.
7750         (len_maskstore_direct): Ditto.
7751         (add_len_and_mask_args): New function.
7752         (expand_partial_load_optab_fn): Change order of
7753         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
7754         (expand_partial_store_optab_fn): Ditto.
7755         (internal_fn_len_index): New function.
7756         (internal_fn_mask_index): Change order of
7757         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
7758         (internal_fn_stored_value_index): Ditto.
7759         (internal_len_load_store_bias): Ditto.
7760         * internal-fn.h (internal_fn_len_index): New function.
7761         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
7762         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
7763         * tree-vect-stmts.cc (vectorizable_store): Ditto.
7764         (vectorizable_load): Ditto.
7766 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
7768         PR modula2/110125
7769         * doc/gm2.texi (Semantic checking): Include examples using
7770         -Wuninit-variable-checking.
7772 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7774         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
7775         (*single_widen_fnma<mode>): Ditto.
7776         (*double_widen_fms<mode>): Ditto.
7777         (*single_widen_fms<mode>): Ditto.
7778         (*double_widen_fnms<mode>): Ditto.
7779         (*single_widen_fnms<mode>): Ditto.
7781 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7783         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
7784         into "*" in pattern name which simplifies build files.
7785         (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
7786         (*pred_single_widen_mul<mode>): New pattern.
7788 2023-07-03  Richard Sandiford  <richard.sandiford@arm.com>
7790         * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
7791         the index to be 0 or 1.
7793 2023-07-03  Lehua Ding  <lehua.ding@rivai.ai>
7795         Revert:
7796         2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7798         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
7799         (*single_widen_fnma<mode>): Ditto.
7800         (*double_widen_fms<mode>): Ditto.
7801         (*single_widen_fms<mode>): Ditto.
7802         (*double_widen_fnms<mode>): Ditto.
7803         (*single_widen_fnms<mode>): Ditto.
7805 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7807         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
7808         (*single_widen_fnma<mode>): Ditto.
7809         (*double_widen_fms<mode>): Ditto.
7810         (*single_widen_fms<mode>): Ditto.
7811         (*double_widen_fnms<mode>): Ditto.
7812         (*single_widen_fnms<mode>): Ditto.
7814 2023-07-03  Pan Li  <pan2.li@intel.com>
7816         * config/riscv/vector.md: Fix typo.
7818 2023-07-03  Richard Biener  <rguenther@suse.de>
7820         PR tree-optimization/110506
7821         * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
7822         TYPE_PRECISION access with INTEGRAL_TYPE_P check.
7824 2023-07-03  Richard Biener  <rguenther@suse.de>
7826         PR tree-optimization/110506
7827         * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
7828         type before relying on TYPE_PRECISION to produce a nonzero mask.
7830 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7832         * config/mips/mips.md(*and<mode>3_mips16): Generates
7833         ZEB/ZEH instructions.
7835 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7837         * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
7838         address register to M16_REGS for MIPS16.
7839         (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
7840         (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
7841         (AVAIL_NON_MIPS16 (cache..)): Update to
7842         AVAIL_MIPS16E2_OR_NON_MIPS16.
7843         * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
7844         * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
7846 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7848         * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
7849         for ISA_HAS_MIPS16E2.
7850         (ISA_HAS_SYNC): Same as above.
7851         (ISA_HAS_LL_SC): Same as above.
7853 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7855         * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
7856         Add logics for generating instruction.
7857         * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
7858         * config/mips/mips.md(mov_<load>l): Generates instructions.
7859         (mov_<load>r): Same as above.
7860         (mov_<store>l): Adjusted for the conditions above.
7861         (mov_<store>r): Same as above.
7862         (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
7863         (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
7865 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7867         * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
7868         (mips_const_insns): Same as above.
7869         (mips_output_move): Same as above.
7870         (mips_output_function_prologue): Same as above.
7871         * config/mips/mips.md: Same as above
7873 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7875         * config/mips/constraints.md(Yz): New constraints for mips16e2.
7876         * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
7877         (mips_bit_clear_info): Same as above.
7878         * config/mips/mips.cc(mips_bit_clear_info): New function for
7879         generating instructions.
7880         (mips_bit_clear_p): Same as above.
7881         * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
7882         * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
7883         (*and<mode>3): Generates INS instruction.
7884         (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
7885         (ior<mode>3): Add logics for ORI instruction.
7886         (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
7887         (*ior<mode>3_mips16): Add logics for XORI instruction.
7888         (*xor<mode>3_mips16): Generates XORI instrucion.
7889         (*extzv<mode>): Add logics for EXT instruction.
7890         (*insv<mode>): Add logics for INS instruction.
7891         * config/mips/predicates.md(bit_clear_operand): New predicate for
7892         generating bitwise instructions.
7893         (and_reg_operand): Add logics for generating bitwise instructions.
7895 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7897         * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
7898         that uses global pointer register.
7899         (mips16_unextended_reference_p): Same as above.
7900         (mips_pic_base_register): Same as above.
7901         (mips_init_relocs): Same as above.
7902         * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
7903         (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
7904         * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
7905         (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
7907 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7909         * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
7910         * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
7911         (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
7912         (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
7913         (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
7914         * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
7916 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
7918         * config/mips/mips.cc(mips_file_start): Add mips16e2 info
7919         for output file.
7920         * config/mips/mips.h(__mips_mips16e2): Defined a new
7921         predefine macro.
7922         (ISA_HAS_MIPS16E2): Defined a new macro.
7923         (ASM_SPEC): Pass mmips16e2 to the assembler.
7924         * config/mips/mips.opt: Add -m(no-)mips16e2 option.
7925         * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
7926         * doc/invoke.texi: Add -m(no-)mips16e2 option..
7928 2023-07-02  Jakub Jelinek  <jakub@redhat.com>
7930         PR tree-optimization/110508
7931         * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
7932         REALPART_EXPR opf nlhs if re2 is non-NULL.
7934 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7936         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
7937         Simplify.
7938         * config/xtensa/xtensa.md (*xtensa_clamps):
7939         Add TARGET_MINMAX to the condition.
7941 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7943         * config/xtensa/xtensa.md (*eqne_INT_MIN):
7944         Add missing ":SI" to the match_operator.
7946 2023-07-02  Iain Sandoe  <iain@sandoe.co.uk>
7948         PR target/108743
7949         * config/darwin.opt: Add fconstant-cfstrings alias to
7950         mconstant-cfstrings.
7951         * doc/invoke.texi: Amend invocation descriptions to reflect
7952         that the fconstant-cfstrings is a target-option alias and to
7953         add the missing mconstant-cfstrings option description to the
7954         Darwin section.
7956 2023-07-01  Jan Hubicka  <jh@suse.cz>
7958         * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
7959         parmaeter; update profile.
7960         * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
7961         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
7962         (static_loop_exit): ... this; return the edge to be elliminated.
7963         (ch_base::copy_headers): Handle profile updating for eliminated exits.
7965 2023-07-01  Roger Sayle  <roger@nextmovesoftware.com>
7967         * config/i386/i386-features.cc (compute_convert_gain): Provide
7968         gains/costs for ROTATE and ROTATERT (by an integer constant).
7969         (general_scalar_chain::convert_rotate): New helper function to
7970         convert a DImode or SImode rotation by an integer constant into
7971         SSE vector form.
7972         (general_scalar_chain::convert_insn): Call the new convert_rotate
7973         for ROTATE and ROTATERT.
7974         (general_scalar_to_vector_candidate_p): Consider ROTATE and
7975         ROTATERT to be candidates if the second operand is an integer
7976         constant, valid for a rotation (or shift) in the given mode.
7977         * config/i386/i386-features.h (general_scalar_chain): Add new
7978         helper method convert_rotate.
7980 2023-07-01  Jan Hubicka  <jh@suse.cz>
7982         PR tree-optimization/103680
7983         * cfg.cc (update_bb_profile_for_threading): Fix profile update;
7984         make message clearer.
7986 2023-06-30  Qing Zhao  <qing.zhao@oracle.com>
7988         PR tree-optimization/101832
7989         * tree-object-size.cc (addr_object_size): Handle structure/union type
7990         when it has flexible size.
7992 2023-06-30  Eric Botcazou  <ebotcazou@adacore.com>
7994         * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
7995         (fold_nonarray_ctor_reference): Likewise.  Specifically deal
7996         with integral bit-fields.
7997         (fold_ctor_reference): Make sure that the constructor uses the
7998         native storage order.
8000 2023-06-30  Jan Hubicka  <jh@suse.cz>
8002         PR middle-end/109849
8003         * predict.cc (estimate_bb_frequencies): Turn to static function.
8004         (expr_expected_value_1): Fix handling of binary expressions with
8005         predicted values.
8006         * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
8007         (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
8008         queue.
8009         * predict.h (estimate_bb_frequencies): No longer declare it.
8011 2023-06-30  Uros Bizjak  <ubizjak@gmail.com>
8013         * fold-const.h (multiple_of_p): Change return type from int to bool.
8014         * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
8015         neg_conp_p and neg_var_p variables to bool.
8016         (const_binop): Change sat_p variable to bool.
8017         (merge_ranges): Change no_overlap variable to bool.
8018         (extract_muldiv_1): Change same_p variable to bool.
8019         (tree_swap_operands_p): Update function body for bool return type.
8020         (fold_truth_andor): Change commutative variable to bool.
8021         (multiple_of_p): Change return type
8022         from int to void and adjust function body accordingly.
8023         * optabs.h (expand_twoval_unop): Change return type from int to bool.
8024         (expand_twoval_binop): Ditto.
8025         (can_compare_p): Ditto.
8026         (have_add2_insn): Ditto.
8027         (have_addptr3_insn): Ditto.
8028         (have_sub2_insn): Ditto.
8029         (have_insn_for): Ditto.
8030         * optabs.cc (add_equal_note): Ditto.
8031         (widen_operand): Change no_extend argument from int to bool.
8032         (expand_binop): Ditto.
8033         (expand_twoval_unop): Change return type
8034         from int to void and adjust function body accordingly.
8035         (expand_twoval_binop): Ditto.
8036         (can_compare_p): Ditto.
8037         (have_add2_insn): Ditto.
8038         (have_addptr3_insn): Ditto.
8039         (have_sub2_insn): Ditto.
8040         (have_insn_for): Ditto.
8042 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
8044         * config/aarch64/aarch64-simd.md
8045         (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
8046         Expansions for abd vec widen optabs.
8047         (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
8048         * config/aarch64/iterators.md (USMAX_EXT): Code attributes
8049         that give the appropriate extend RTL for the max RTL.
8051 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
8053         * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
8054         * optabs.def (vec_widen_sabd_optab,
8055         vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
8056         vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
8057         vec_widen_uabd_optab,
8058         vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
8059         vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
8060         New optabs.
8061         * doc/md.texi: Document them.
8062         * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
8063         to build a VEC_WIDEN_ABD call if the input precision is smaller
8064         than the precision of the output.
8065         (vect_recog_widen_abd_pattern): Should an ABD expression be
8066         found preceeding an extension, replace the two with a
8067         VEC_WIDEN_ABD.
8069 2023-06-30  Pan Li  <pan2.li@intel.com>
8071         * config/riscv/vector.md: Refactor the common condition.
8073 2023-06-30  Richard Biener  <rguenther@suse.de>
8075         PR tree-optimization/110496
8076         * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
8077         verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
8079 2023-06-30  Richard Biener  <rguenther@suse.de>
8081         PR middle-end/110489
8082         * statistics.cc (curr_statistics_hash): Add argument
8083         indicating whether we should allocate the hash.
8084         (statistics_fini_pass): If the hash isn't allocated
8085         only print the summary header.
8087 2023-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
8088             Thomas Schwinge  <thomas@codesourcery.com>
8090         * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
8092 2023-06-30  Jovan Dmitrović  <jovan.dmitrovic@syrmia.com>
8094         PR target/109435
8095         * config/mips/mips.cc (mips_function_arg_alignment): Returns
8096         the alignment of function argument. In case of typedef type,
8097         it returns the aligment of the aliased type.
8098         (mips_function_arg_boundary): Relocated calculation of the
8099         aligment of function arguments.
8101 2023-06-29  Jan Hubicka  <jh@suse.cz>
8103         PR tree-optimization/109849
8104         * ipa-fnsummary.cc (decompose_param_expr): Skip
8105         functions returning its parameter.
8106         (set_cond_stmt_execution_predicate): Return early
8107         if predicate was constructed.
8109 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
8111         PR c/77650
8112         * doc/extend.texi: Document GCC extension on a structure containing
8113         a flexible array member to be a member of another structure.
8115 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
8117         * print-tree.cc (print_node): Print new bit type_include_flexarray.
8118         * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
8119         as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
8120         * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
8121         in bit no_named_args_stdarg_p properly for its corresponding type.
8122         * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
8123         out bit no_named_args_stdarg_p properly for its corresponding type.
8124         * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
8126 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
8128         * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
8129         * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
8130         * tree-vrp.h (maybe_set_nonzero_bits): Remove.
8132 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
8134         * value-range.cc (frange::set): Do not call verify_range.
8135         (frange::normalize_kind): Verify range.
8136         (frange::union_nans): Do not call verify_range.
8137         (frange::union_): Same.
8138         (frange::intersect): Same.
8139         (irange::irange_single_pair_union): Call normalize_kind if
8140         necessary.
8141         (irange::union_): Same.
8142         (irange::intersect): Same.
8143         (irange::set_range_from_nonzero_bits): Verify range.
8144         (irange::set_nonzero_bits): Call normalize_kind if necessary.
8145         (irange::get_nonzero_bits): Tweak comment.
8146         (irange::intersect_nonzero_bits): Call normalize_kind if
8147         necessary.
8148         (irange::union_nonzero_bits): Same.
8149         * value-range.h (irange::normalize_kind): Verify range.
8151 2023-06-29  Uros Bizjak  <ubizjak@gmail.com>
8153         * cselib.h (rtx_equal_for_cselib_1):
8154         Change return type from int to bool.
8155         (references_value_p): Ditto.
8156         (rtx_equal_for_cselib_p): Ditto.
8157         * expr.h (can_store_by_pieces): Ditto.
8158         (try_casesi): Ditto.
8159         (try_tablejump): Ditto.
8160         (safe_from_p): Ditto.
8161         * sbitmap.h (bitmap_equal_p): Ditto.
8162         * cselib.cc (references_value_p): Change return type
8163         from int to void and adjust function body accordingly.
8164         (rtx_equal_for_cselib_1): Ditto.
8165         * expr.cc (is_aligning_offset): Ditto.
8166         (can_store_by_pieces): Ditto.
8167         (mostly_zeros_p): Ditto.
8168         (all_zeros_p): Ditto.
8169         (safe_from_p): Ditto.
8170         (is_aligning_offset): Ditto.
8171         (try_casesi): Ditto.
8172         (try_tablejump): Ditto.
8173         (store_constructor): Change "need_to_clear" and
8174         "const_bounds_p" variables to bool.
8175         * sbitmap.cc (bitmap_equal_p):  Change return type from int to bool.
8177 2023-06-29  Robin Dapp  <rdapp@ventanamicro.com>
8179         * tree-ssa-math-opts.cc (divmod_candidate_p): Use
8180         element_precision.
8182 2023-06-29  Richard Biener  <rguenther@suse.de>
8184         PR tree-optimization/110460
8185         * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
8186         Only allow integral, pointer and scalar float type scalar_type.
8188 2023-06-29  Lili Cui  <lili.cui@intel.com>
8190         PR tree-optimization/110148
8191         * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
8192         ops in this function.
8194 2023-06-29  Richard Biener  <rguenther@suse.de>
8196         PR middle-end/110452
8197         * expr.cc (store_constructor): Handle uniform boolean
8198         vectors with integer mode specially.
8200 2023-06-29  Richard Biener  <rguenther@suse.de>
8202         PR middle-end/110461
8203         * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
8204         for VECTOR_TYPE_P.
8206 2023-06-29  Richard Sandiford  <richard.sandiford@arm.com>
8208         * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
8209         (array_slice): Relax va_gc constructor to handle all vectors
8210         with a vl_embed layout.
8212 2023-06-29  Pan Li  <pan2.li@intel.com>
8214         * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
8215         (riscv_mode_needed): Likewise.
8216         (riscv_entity_mode_after): Likewise.
8217         (riscv_mode_after): Likewise.
8218         (riscv_mode_entry): Likewise.
8219         (riscv_mode_exit): Likewise.
8220         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
8221         for FRM.
8222         * config/riscv/riscv.md: Add FRM register.
8223         * config/riscv/vector-iterators.md: Add FRM type.
8224         * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
8225         (fsrm): Define new insn for fsrm instruction.
8227 2023-06-29  Pan Li  <pan2.li@intel.com>
8229         * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
8230         Add macro for static frm min and max.
8231         * config/riscv/riscv-vector-builtins-bases.cc
8232         (class binop_frm): New class for floating-point with frm.
8233         (BASE): Add vfadd for frm.
8234         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
8235         * config/riscv/riscv-vector-builtins-functions.def
8236         (vfadd_frm): Likewise.
8237         * config/riscv/riscv-vector-builtins-shapes.cc
8238         (struct alu_frm_def): New struct for alu with frm.
8239         (SHAPE): Add alu with frm.
8240         * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
8241         * config/riscv/riscv-vector-builtins.cc
8242         (function_checker::report_out_of_range_and_not): New function
8243         for report out of range and not val.
8244         (function_checker::require_immediate_range_or): New function
8245         for checking in range or one val.
8246         * config/riscv/riscv-vector-builtins.h: Add function decl.
8248 2023-06-29  Cui, Lili  <lili.cui@intel.com>
8250         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
8251         from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
8253 2023-06-28  Hans-Peter Nilsson  <hp@axis.com>
8255         PR target/110144
8256         * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
8257         to insn before validating it.
8259 2023-06-28  Jan Hubicka  <jh@suse.cz>
8261         PR middle-end/110334
8262         * ipa-fnsummary.h (ipa_fn_summary): Add
8263         safe_to_inline_to_always_inline.
8264         * ipa-inline.cc (can_early_inline_edge_p): ICE
8265         if SSA is not built; do cycle checking for
8266         always_inline functions.
8267         (inline_always_inline_functions): Be recrusive;
8268         watch for cycles; do not updat overall summary.
8269         (early_inliner): Do not give up on always_inlines.
8270         * ipa-utils.cc (ipa_reverse_postorder): Do not skip
8271         always inlines.
8273 2023-06-28  Uros Bizjak  <ubizjak@gmail.com>
8275         * output.h (leaf_function_p): Change return type from int to bool.
8276         (final_forward_branch_p): Ditto.
8277         (only_leaf_regs_used): Ditto.
8278         (maybe_assemble_visibility): Ditto.
8279         * varasm.h (supports_one_only): Ditto.
8280         * rtl.h (compute_alignments): Change return type from int to void.
8281         * final.cc (app_on): Change return type from int to bool.
8282         (compute_alignments): Change return type from int to void
8283         and adjust function body accordingly.
8284         (shorten_branches):  Change "something_changed" variable
8285         type from int to bool.
8286         (leaf_function_p):  Change return type from int to bool
8287         and adjust function body accordingly.
8288         (final_forward_branch_p): Ditto.
8289         (only_leaf_regs_used): Ditto.
8290         * varasm.cc (contains_pointers_p): Change return type from
8291         int to bool and adjust function body accordingly.
8292         (compare_constant): Ditto.
8293         (maybe_assemble_visibility): Ditto.
8294         (supports_one_only): Ditto.
8296 2023-06-28  Manolis Tsamis  <manolis.tsamis@vrull.eu>
8298         PR debug/110308
8299         * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
8300         (maybe_copy_reg_attrs): New function.
8301         (find_oldest_value_reg): Use maybe_copy_reg_attrs.
8302         (copyprop_hardreg_forward_1): Ditto.
8304 2023-06-28  Richard Biener  <rguenther@suse.de>
8306         PR tree-optimization/110434
8307         * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
8308         VAR we replace with <retval>.
8310 2023-06-28  Richard Biener  <rguenther@suse.de>
8312         PR tree-optimization/110451
8313         * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
8314         tcc_comparison are expensive.
8316 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
8318         * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
8319         for TImode comparisons on 32-bit architectures.
8320         * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
8321         SWIM1248x to exclude/avoid TImode being conditional on -m64.
8322         (cbranchti4): New define_expand for TImode on both TARGET_64BIT
8323         and/or with TARGET_SSE4_1.
8324         * config/i386/predicates.md (ix86_timode_comparison_operator):
8325         New predicate that depends upon TARGET_64BIT.
8326         (ix86_timode_comparison_operand): Likewise.
8328 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
8330         PR target/78794
8331         * config/i386/i386-features.cc (compute_convert_gain): Provide
8332         more accurate gains for conversion of scalar comparisons to
8333         PTEST.
8335 2023-06-28  Richard Biener  <rguenther@suse.de>
8337         PR tree-optimization/110443
8338         * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
8339         gather loads.
8341 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
8343         * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
8344         (peephole2 for move_and_compare): New.
8345         (mode_iterator WORD): New.  Set the mode to SI/DImode by
8346         TARGET_POWERPC64.
8347         (*mov<mode>_internal2): Change the mode iterator from P to WORD.
8348         (split pattern for compare_and_move): Likewise.
8350 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8352         * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
8353         (*single_widen_fma<mode>): Ditto.
8355 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
8357         PR target/104124
8358         * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
8359         to...
8360         (altivec_vupkhs<VU_char>_direct): ...this.
8361         * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
8362         predicate to test if a constant can be loaded with vspltisw and
8363         vupkhsw.
8364         (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
8365         a vector constant can be synthesized with a vspltisw and a vupkhsw.
8366         * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
8367         Declare.
8368         * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
8369         function to return true if OP mode is V2DI and can be synthesized
8370         with vupkhsw and vspltisw.
8371         * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
8372         constants with vspltisw and vupkhsw.
8374 2023-06-28  Jan Hubicka  <jh@suse.cz>
8376         PR tree-optimization/110377
8377         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
8378         the ranger query.
8379         (ipa_analyze_node): Enable ranger.
8381 2023-06-28  Richard Biener  <rguenther@suse.de>
8383         * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
8384         (TYPE_PRECISION_RAW): Provide raw access to the precision
8385         field.
8386         * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
8387         (gimple_canonical_types_compatible_p): Likewise.
8388         * tree-streamer-out.cc (pack_ts_type_common_value_fields):
8389         Stream TYPE_PRECISION_RAW.
8390         * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
8391         Likewise.
8392         * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
8394 2023-06-28  Alexandre Oliva  <oliva@adacore.com>
8396         * doc/extend.texi (zero-call-used-regs): Document leafy and
8397         variants thereof.
8398         * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
8399         LEAFY and variants.
8400         * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
8401         functions in leafy mode.
8402         * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
8404 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8406         * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
8407         * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
8408         Remove.
8409         (@pred_single_widen_add<mode>): New pattern.
8410         (@pred_single_widen_sub<mode>): New pattern.
8412 2023-06-28  liuhongt  <hongtao.liu@intel.com>
8414         * config/i386/i386.cc (ix86_invalid_conversion): New function.
8415         (TARGET_INVALID_CONVERSION): Define as
8416         ix86_invalid_conversion.
8418 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
8420         * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
8421         expander.
8422         (<float_cvt><vnconvert><mode>2): Ditto.
8423         (<optab><mode><vnconvert>2): Ditto.
8424         (<float_cvt><mode><vnconvert>2): Ditto.
8425         * config/riscv/vector-iterators.md: Add vnconvert.
8427 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
8429         * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
8430         expander.
8431         (extend<v_quad_trunc><mode>2): Ditto.
8432         (trunc<mode><v_double_trunc>2): Ditto.
8433         (trunc<mode><v_quad_trunc>2): Ditto.
8434         * config/riscv/vector-iterators.md: Add VQEXTF and HF to
8435         V_QUAD_TRUNC and v_quad_trunc.
8437 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
8439         * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
8440         expander.
8442 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
8444         * config/riscv/autovec.md (copysign<mode>3): Add expander.
8445         (xorsign<mode>3): Ditto.
8446         * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
8447         New class.
8448         * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
8449         (xorsign): Ditto.
8450         (n): Ditto.
8451         (x): Ditto.
8452         * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
8453         (@pred_ncopysign<mode>_scalar): Ditto.
8455 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
8457         * config/riscv/autovec.md: VF_AUTO -> VF.
8458         * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
8459         VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
8460         VHF_LMUL1.
8461         * config/riscv/vector.md: Use new iterators.
8463 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
8465         * match.pd: Use element_mode and check if target supports
8466         operation with new type.
8468 2023-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
8470         * config/aarch64/aarch64-sve-builtins-base.cc
8471         (svdupq_impl::fold_nonconst_dupq): New method.
8472         (svdupq_impl::fold): Call fold_nonconst_dupq.
8474 2023-06-27  Andrew Pinski  <apinski@marvell.com>
8476         PR middle-end/110420
8477         PR middle-end/103979
8478         PR middle-end/98619
8479         * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
8481 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
8483         * ipa-cp.cc (decide_whether_version_node): Adjust comment.
8484         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
8485         for Value_Range.
8486         (set_switch_stmt_execution_predicate): Same.
8487         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
8489 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
8491         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
8492         ipa_vr instead of value_range.
8493         (gt_pch_nx): Same.
8494         (gt_ggc_mx): Same.
8495         (ipa_get_value_range): Same.
8496         * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
8497         ipa_vr.
8498         (gt_ggc_mx): Same.
8500 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
8502         * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
8503         * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
8504         (ipa_set_jfunc_vr): Take a range.
8505         (ipa_compute_jump_functions_for_edge): Pass range to
8506         ipa_set_jfunc_vr.
8507         (ipa_write_jump_function): Call streamer write helper.
8508         (ipa_read_jump_function): Call streamer read helper.
8509         * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
8511 2023-06-27  Richard Sandiford  <richard.sandiford@arm.com>
8513         * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
8514         as a probable initializer rather than a probable complete statement.
8516 2023-06-27  Richard Biener  <rguenther@suse.de>
8518         PR tree-optimization/96208
8519         * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
8520         a non-grouped load if it is the same for all lanes.
8521         (vect_build_slp_tree_2): Handle not grouped loads.
8522         (vect_optimize_slp_pass::remove_redundant_permutations):
8523         Likewise.
8524         (vect_transform_slp_perm_load_1): Likewise.
8525         * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
8526         (get_group_load_store_type): Likewise.  Handle
8527         invariant accesses.
8528         (vectorizable_load): Likewise.
8530 2023-06-27  liuhongt  <hongtao.liu@intel.com>
8532         PR rtl-optimization/110237
8533         * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
8534         UNSPEC_MASKMOV.
8535         (maskstore<mode><avx512fmaskmodelower): Ditto.
8536         (*<avx512>_store<mode>_mask): New define_insn, it's renamed
8537         from original <avx512>_store<mode>_mask.
8539 2023-06-27  liuhongt  <hongtao.liu@intel.com>
8541         * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
8542         Move flag_expensive_optimizations && !optimize_size to ..
8543         * config/i386/i386-options.cc (ix86_option_override_internal):
8544         .. this, it makes -mvzeroupper independent of optimization
8545         level, but still keeps the behavior of architecture
8546         tuning(emit_vzeroupper) unchanged.
8548 2023-06-27  liuhongt  <hongtao.liu@intel.com>
8550         PR target/82735
8551         * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
8552         vzeroupper for vzeroupper call_insn.
8554 2023-06-27  Andrew Pinski  <apinski@marvell.com>
8556         * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
8557         defbuiltin usage.
8559 2023-06-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8561         * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
8562         with base != 0.
8564 2023-06-26  Andrew Pinski  <apinski@marvell.com>
8566         * doc/extend.texi (access attribute): Add
8567         cindex for it.
8568         (interrupt/interrupt_handler attribute):
8569         Likewise.
8571 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8573         * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
8574         Use <DWI> instead of <V2XWIDE>.
8575         (aarch64_sqrshrun_n<mode>): Likewise.
8577 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8579         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
8580         Rename to...
8581         (aarch64_rnd_imm_p): ... This.
8582         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
8583         Rename to...
8584         (aarch64_int_rnd_operand): ... This.
8585         (aarch64_simd_rshrn_imm_vec): Delete.
8586         * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
8587         Adjust for the above.
8588         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
8589         (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
8590         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
8591         (aarch64_sqrshrun_n<mode>_insn): Likewise.
8592         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
8593         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
8594         (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
8595         (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
8596         * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
8597         Rename to...
8598         (aarch64_rnd_imm_p): ... This.
8600 2023-06-26  Andreas Krebbel  <krebbel@linux.ibm.com>
8602         * config/s390/s390.cc (s390_encode_section_info): Set
8603         SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
8604         misaligned.
8606 2023-06-26  Jan Hubicka  <jh@suse.cz>
8608         PR tree-optimization/109849
8609         * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
8610         count of newly constructed forwarder block.
8612 2023-06-26  Andrew Carlotti  <andrew.carlotti@arm.com>
8614         * doc/optinfo.texi: Fix "steam" -> "stream".
8616 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8618         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
8619         fix LEN_STORE.
8620         (dse_optimize_stmt): Add LEN_MASK_STORE.
8622 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8624         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
8625         fold of LOAD/STORE with length.
8627 2023-06-26  Andrew MacLeod  <amacleod@redhat.com>
8629         * gimple-range-gori.cc (compute_operand1_and_operand2_range):
8630         Check for interdependence between operands 1 and 2.
8632 2023-06-26  Richard Sandiford  <richard.sandiford@arm.com>
8634         * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
8635         into account when costing non-widening/truncating conversions.
8637 2023-06-26  Richard Biener  <rguenther@suse.de>
8639         PR tree-optimization/110381
8640         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
8641         Materialize permutes before fold-left reductions.
8643 2023-06-26  Pan Li  <pan2.li@intel.com>
8645         * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
8647 2023-06-26  Richard Biener  <rguenther@suse.de>
8649         * varasm.cc (initializer_constant_valid_p_1): Also
8650         constrain the type of value to be scalar integral
8651         before dispatching to narrowing_initializer_constant_valid_p.
8653 2023-06-26  Richard Biener  <rguenther@suse.de>
8655         * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
8656         Use element_precision.
8658 2023-06-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8660         * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
8661         vcond patterns.
8662         (vcondu<V:mode><VI:mode>): Ditto.
8663         * config/riscv/riscv-protos.h (expand_vcond): Ditto.
8664         * config/riscv/riscv-v.cc (expand_vcond): Ditto.
8666 2023-06-26  Richard Biener  <rguenther@suse.de>
8668         PR tree-optimization/110392
8669         * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
8670         Do early exits on true/false predicate only after normalization.
8672 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8674         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
8675         "length".
8677 2023-06-26  Roger Sayle  <roger@nextmovesoftware.com>
8679         * config/i386/i386.md (peephole2): Simplify zeroing a register
8680         followed by an IOR, XOR or PLUS operation on it, into a move.
8681         (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
8682         eliminate (and hide from reload) unnecessary word to doubleword
8683         extensions that are followed by left shifts by sufficiently large,
8684         but valid, bit counts.
8686 2023-06-26  liuhongt  <hongtao.liu@intel.com>
8688         PR tree-optimization/110371
8689         PR tree-optimization/110018
8690         * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
8691         save intermediate type operand instead of "subtle" vec_dest
8692         for case NONE.
8694 2023-06-26  liuhongt  <hongtao.liu@intel.com>
8696         PR tree-optimization/110371
8697         PR tree-optimization/110018
8698         * tree-vect-stmts.cc (vectorizable_conversion): Don't use
8699         intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
8701 2023-06-26  Hongyu Wang  <hongyu.wang@intel.com>
8703         * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
8704         Override tune_string with arch_string if tune_string is not
8705         explicitly specified.
8707 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8709         * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
8710         AVL propagation.
8711         * config/riscv/riscv-vsetvl.h: New function.
8713 2023-06-25  Li Xu  <xuli1@eswincomputing.com>
8715         * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
8716         emit_move_insn
8718 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8720         * config/riscv/autovec.md (len_load_<mode>): Remove.
8721         (len_maskload<mode><vm>): Remove.
8722         (len_store_<mode>): New pattern.
8723         (len_maskstore<mode><vm>): New pattern.
8724         * config/riscv/predicates.md (autovec_length_operand): New predicate.
8725         * config/riscv/riscv-protos.h (enum insn_type): New enum.
8726         (expand_load_store): New function.
8727         * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
8728         (emit_nonvlmax_masked_insn): Ditto.
8729         (expand_load_store): Ditto.
8730         * config/riscv/riscv-vector-builtins.cc
8731         (function_expander::use_contiguous_store_insn): Add avl_type operand
8732         into pred_store.
8733         * config/riscv/vector.md: Ditto.
8735 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8737         * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
8738         argument index.
8740 2023-06-25  Pan Li  <pan2.li@intel.com>
8742         * config/riscv/vector.md: Revert.
8744 2023-06-25  Pan Li  <pan2.li@intel.com>
8746         * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
8747         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
8748         (ADJUST_ALIGNMENT): Ditto.
8749         (RVV_TUPLE_PARTIAL_MODES): Ditto.
8750         (ADJUST_NUNITS): Ditto.
8751         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
8752         (vfloat16mf4x3_t): Ditto.
8753         (vfloat16mf4x4_t): Ditto.
8754         (vfloat16mf4x5_t): Ditto.
8755         (vfloat16mf4x6_t): Ditto.
8756         (vfloat16mf4x7_t): Ditto.
8757         (vfloat16mf4x8_t): Ditto.
8758         (vfloat16mf2x2_t): Ditto.
8759         (vfloat16mf2x3_t): Ditto.
8760         (vfloat16mf2x4_t): Ditto.
8761         (vfloat16mf2x5_t): Ditto.
8762         (vfloat16mf2x6_t): Ditto.
8763         (vfloat16mf2x7_t): Ditto.
8764         (vfloat16mf2x8_t): Ditto.
8765         (vfloat16m1x2_t): Ditto.
8766         (vfloat16m1x3_t): Ditto.
8767         (vfloat16m1x4_t): Ditto.
8768         (vfloat16m1x5_t): Ditto.
8769         (vfloat16m1x6_t): Ditto.
8770         (vfloat16m1x7_t): Ditto.
8771         (vfloat16m1x8_t): Ditto.
8772         (vfloat16m2x2_t): Ditto.
8773         (vfloat16m2x3_t): Diito.
8774         (vfloat16m2x4_t): Diito.
8775         (vfloat16m4x2_t): Diito.
8776         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
8777         (vfloat16mf4x3_t): Ditto.
8778         (vfloat16mf4x4_t): Ditto.
8779         (vfloat16mf4x5_t): Ditto.
8780         (vfloat16mf4x6_t): Ditto.
8781         (vfloat16mf4x7_t): Ditto.
8782         (vfloat16mf4x8_t): Ditto.
8783         (vfloat16mf2x2_t): Ditto.
8784         (vfloat16mf2x3_t): Ditto.
8785         (vfloat16mf2x4_t): Ditto.
8786         (vfloat16mf2x5_t): Ditto.
8787         (vfloat16mf2x6_t): Ditto.
8788         (vfloat16mf2x7_t): Ditto.
8789         (vfloat16mf2x8_t): Ditto.
8790         (vfloat16m1x2_t): Ditto.
8791         (vfloat16m1x3_t): Ditto.
8792         (vfloat16m1x4_t): Ditto.
8793         (vfloat16m1x5_t): Ditto.
8794         (vfloat16m1x6_t): Ditto.
8795         (vfloat16m1x7_t): Ditto.
8796         (vfloat16m1x8_t): Ditto.
8797         (vfloat16m2x2_t): Ditto.
8798         (vfloat16m2x3_t): Ditto.
8799         (vfloat16m2x4_t): Ditto.
8800         (vfloat16m4x2_t): Ditto.
8801         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
8802         * config/riscv/riscv.md: Ditto.
8803         * config/riscv/vector-iterators.md: Ditto.
8805 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8807         * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
8808         (gimple_fold_partial_load_store_mem_ref): Ditto.
8809         (gimple_fold_partial_store): Ditto.
8810         (gimple_fold_call): Ditto.
8812 2023-06-25  liuhongt  <hongtao.liu@intel.com>
8814         PR target/110309
8815         * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
8816         Refine pattern with UNSPEC_MASKLOAD.
8817         (maskload<mode><avx512fmaskmodelower>): Ditto.
8818         (*<avx512>_load<mode>_mask): Extend mode iterator to
8819         VI12HFBF_AVX512VL.
8820         (*<avx512>_load<mode>): Ditto.
8822 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8824         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
8826 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8828         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
8829         LEN_MASK_{LOAD,STORE}
8831 2023-06-25  yulong  <shiyulong@iscas.ac.cn>
8833         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
8835 2023-06-24  Roger Sayle  <roger@nextmovesoftware.com>
8837         * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
8839 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8841         * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
8842         (*fma<VI:mode><P:mode>): Ditto.
8843         (*fnma<mode>): Ditto.
8844         (*fnma<VI:mode><P:mode>): Ditto.
8846 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8848         * config/riscv/autovec.md (fma<mode>4): New pattern.
8849         (*fma<mode>): Ditto.
8850         (fnma<mode>4): Ditto.
8851         (*fnma<mode>): Ditto.
8852         (fms<mode>4): Ditto.
8853         (*fms<mode>): Ditto.
8854         (fnms<mode>4): Ditto.
8855         (*fnms<mode>): Ditto.
8856         * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
8857         New function.
8858         * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
8859         * config/riscv/vector.md: Fix attribute bug.
8861 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8863         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
8864         Apply LEN_MASK_{LOAD,STORE}.
8866 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8868         * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
8869         Add LEN_MASK_{LOAD,STORE}.
8871 2023-06-24  David Malcolm  <dmalcolm@redhat.com>
8873         * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
8874         * diagnostic.cc: Likewise.
8875         * text-art/box-drawing.cc: Likewise.
8876         * text-art/canvas.cc: Likewise.
8877         * text-art/ruler.cc: Likewise.
8878         * text-art/selftests.cc: Likewise.
8879         * text-art/selftests.h (text_art::canvas): New forward decl.
8880         * text-art/style.cc: Add #define INCLUDE_VECTOR.
8881         * text-art/styled-string.cc: Likewise.
8882         * text-art/table.cc: Likewise.
8883         * text-art/table.h: Remove #include <vector>.
8884         * text-art/theme.cc: Add #define INCLUDE_VECTOR.
8885         * text-art/types.h: Check that INCLUDE_VECTOR is defined.
8886         Remove #include of <vector> and <string>.
8887         * text-art/widget.cc: Add #define INCLUDE_VECTOR.
8888         * text-art/widget.h: Remove #include <vector>.
8890 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8892         * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
8893         (internal_load_fn_p): Add LEN_MASK_LOAD.
8894         (internal_store_fn_p): Add LEN_MASK_STORE.
8895         (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
8896         (internal_fn_stored_value_index): Add LEN_MASK_STORE.
8897         (internal_len_load_store_bias):  Add LEN_MASK_{LOAD,STORE}.
8898         * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
8899         (get_len_load_store_mode): Ditto.
8900         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
8901         (get_len_load_store_mode): Ditto.
8902         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
8903         (get_all_ones_mask): New function.
8904         (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
8905         (vectorizable_load): Ditto.
8907 2023-06-23  Marek Polacek  <polacek@redhat.com>
8909         * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
8910         -std=gnu++26.  Document that for C++23, its value is 202302L.
8911         * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
8912         * dwarf2out.cc (highest_c_language): Handle GNU C++26.
8913         (gen_compile_unit_die): Likewise.
8915 2023-06-23  Jan Hubicka  <jh@suse.cz>
8917         * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
8918         demand.
8919         (pass_phiprop::execute): Do not compute it here; return
8920         update_ssa_only_virtuals if something changed.
8921         (pass_data_phiprop): Remove TODO_update_ssa from todos.
8923 2023-06-23   Michael Meissner  <meissner@linux.ibm.com>
8924             Aaron Sawdey   <acsawdey@linux.ibm.com>
8926         PR target/105325
8927         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
8928         allowed prefixed lwa to be generated.
8929         * config/rs6000/fusion.md: Regenerate.
8930         * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
8931         * config/rs6000/rs6000.md (prefixed attribute): Add support for load
8932         plus compare immediate fused insns.
8933         (maybe_prefixed): Likewise.
8935 2023-06-23  Roger Sayle  <roger@nextmovesoftware.com>
8937         * simplify-rtx.cc (simplify_subreg):  Optimize lowpart SUBREGs
8938         of ASHIFT to const0_rtx with sufficiently large shift count.
8939         Optimize highpart SUBREGs of ASHIFT as the shift operand when
8940         the shift count is the correct offset.  Optimize SUBREGs of
8941         multi-word logic operations if the SUBREGs of both operands
8942         can be simplified.
8944 2023-06-23  Richard Biener  <rguenther@suse.de>
8946         * varasm.cc (initializer_constant_valid_p_1): Only
8947         allow conversions between scalar floating point types.
8949 2023-06-23  Richard Biener  <rguenther@suse.de>
8951         * tree-vect-stmts.cc (vectorizable_assignment):
8952         Properly handle non-integral operands when analyzing
8953         conversions.
8955 2023-06-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
8957         PR tree-optimization/110280
8958         * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
8959         using build_vector_from_val with the element of input operand, and
8960         mask's type if operand and mask's types don't match.
8962 2023-06-23  Richard Biener  <rguenther@suse.de>
8964         * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
8965         the truth_value_p case with !VECTOR_TYPE_P.
8967 2023-06-23  Richard Biener  <rguenther@suse.de>
8969         * tree-vect-patterns.cc (vect_look_through_possible_promotion):
8970         Exit early when the type isn't scalar integral.
8972 2023-06-23  Richard Biener  <rguenther@suse.de>
8974         * match.pd ((outertype)((innertype0)a+(innertype1)b)
8975         -> ((newtype)a+(newtype)b)): Use element_precision
8976         where appropriate.
8978 2023-06-23  Richard Biener  <rguenther@suse.de>
8980         * fold-const.cc (fold_binary_loc): Use element_precision
8981         when trying (double)float1 CMP (double)float2 to
8982         float1 CMP float2 simplification.
8983         * match.pd: Likewise.
8985 2023-06-23  Richard Biener  <rguenther@suse.de>
8987         * tree-vect-stmts.cc (vectorizable_load): Avoid useless
8988         copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
8990 2023-06-23  Richard Biener  <rguenther@suse.de>
8992         * tree-vect-stmts.cc (vector_vector_composition_type):
8993         Handle composition of a vector from a number of elements that
8994         happens to match its number of lanes.
8996 2023-06-22  Marek Polacek  <polacek@redhat.com>
8998         * configure.ac (--enable-host-bind-now): New check.  Add
8999         -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
9000         * configure: Regenerate.
9001         * doc/install.texi: Document --enable-host-bind-now.
9003 2023-06-22  Di Zhao OS  <dizhao@os.amperecomputing.com>
9005         * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
9007 2023-06-22  Richard Biener  <rguenther@suse.de>
9009         PR tree-optimization/110332
9010         * tree-ssa-phiprop.cc (propagate_with_phi): Always
9011         check aliasing with edge inserted loads.
9013 2023-06-22  Roger Sayle  <roger@nextmovesoftware.com>
9014             Uros Bizjak  <ubizjak@gmail.com>
9016         * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
9017         expansion of ptestc with equal operands as producing const1_rtx.
9018         * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
9019         estimates of UNSPEC_PTEST, where the ptest performs the PAND
9020         or PAND of its operands.
9021         * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
9022         of reg_equal_p operands into an x86_stc instruction.
9023         (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
9024         (define_split): Similar to above for strict_low_part destinations.
9025         (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
9027 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
9029         PR analyzer/106626
9030         * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
9031         * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
9032         text art.
9033         (fanalyzer-debug-text-art): New.
9035 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
9037         * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
9038         text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
9039         text-art/style.o, text-art/styled-string.o, text-art/table.o,
9040         text-art/theme.o, and text-art/widget.o.
9041         * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
9042         (COLOR_FG_BRIGHT_RED): New.
9043         (COLOR_FG_BRIGHT_GREEN): New.
9044         (COLOR_FG_BRIGHT_YELLOW): New.
9045         (COLOR_FG_BRIGHT_BLUE): New.
9046         (COLOR_FG_BRIGHT_MAGENTA): New.
9047         (COLOR_FG_BRIGHT_CYAN): New.
9048         (COLOR_FG_BRIGHT_WHITE): New.
9049         (COLOR_BG_BRIGHT_BLACK): New.
9050         (COLOR_BG_BRIGHT_RED): New.
9051         (COLOR_BG_BRIGHT_GREEN): New.
9052         (COLOR_BG_BRIGHT_YELLOW): New.
9053         (COLOR_BG_BRIGHT_BLUE): New.
9054         (COLOR_BG_BRIGHT_MAGENTA): New.
9055         (COLOR_BG_BRIGHT_CYAN): New.
9056         (COLOR_BG_BRIGHT_WHITE): New.
9057         * common.opt (fdiagnostics-text-art-charset=): New option.
9058         (diagnostic-text-art.h): New SourceInclude.
9059         (diagnostic_text_art_charset) New Enum and EnumValues.
9060         * configure: Regenerate.
9061         * configure.ac (gccdepdir): Add text-art to loop.
9062         * diagnostic-diagram.h: New file.
9063         * diagnostic-format-json.cc (json_emit_diagram): New.
9064         (diagnostic_output_format_init_json): Wire it up to
9065         context->m_diagrams.m_emission_cb.
9066         * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
9067         "text-art/canvas.h".
9068         (sarif_result::on_nested_diagnostic): Move code to...
9069         (sarif_result::add_related_location): ...this new function.
9070         (sarif_result::on_diagram): New.
9071         (sarif_builder::emit_diagram): New.
9072         (sarif_builder::make_message_object_for_diagram): New.
9073         (sarif_emit_diagram): New.
9074         (diagnostic_output_format_init_sarif): Set
9075         context->m_diagrams.m_emission_cb to sarif_emit_diagram.
9076         * diagnostic-text-art.h: New file.
9077         * diagnostic.cc: Include "diagnostic-text-art.h",
9078         "diagnostic-diagram.h", and "text-art/theme.h".
9079         (diagnostic_initialize): Initialize context->m_diagrams and
9080         call diagnostics_text_art_charset_init.
9081         (diagnostic_finish): Clean up context->m_diagrams.m_theme.
9082         (diagnostic_emit_diagram): New.
9083         (diagnostics_text_art_charset_init): New.
9084         * diagnostic.h (text_art::theme): New forward decl.
9085         (class diagnostic_diagram): Likewise.
9086         (diagnostic_context::m_diagrams): New field.
9087         (diagnostic_emit_diagram): New decl.
9088         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
9089         -fdiagnostics-text-art-charset=.
9090         (-fdiagnostics-plain-output): Add
9091         -fdiagnostics-text-art-charset=none.
9092         * gcc.cc: Include "diagnostic-text-art.h".
9093         (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
9094         * opts-common.cc (decode_cmdline_options_to_array): Add
9095         "-fdiagnostics-text-art-charset=none" to expanded_args for
9096         -fdiagnostics-plain-output.
9097         * opts.cc: Include "diagnostic-text-art.h".
9098         (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
9099         * pretty-print.cc (pp_unicode_character): New.
9100         * pretty-print.h (pp_unicode_character): New decl.
9101         * selftest-run-tests.cc: Include "text-art/selftests.h".
9102         (selftest::run_tests): Call text_art_tests.
9103         * text-art/box-drawing-chars.inc: New file, generated by
9104         contrib/unicode/gen-box-drawing-chars.py.
9105         * text-art/box-drawing.cc: New file.
9106         * text-art/box-drawing.h: New file.
9107         * text-art/canvas.cc: New file.
9108         * text-art/canvas.h: New file.
9109         * text-art/ruler.cc: New file.
9110         * text-art/ruler.h: New file.
9111         * text-art/selftests.cc: New file.
9112         * text-art/selftests.h: New file.
9113         * text-art/style.cc: New file.
9114         * text-art/styled-string.cc: New file.
9115         * text-art/table.cc: New file.
9116         * text-art/table.h: New file.
9117         * text-art/theme.cc: New file.
9118         * text-art/theme.h: New file.
9119         * text-art/types.h: New file.
9120         * text-art/widget.cc: New file.
9121         * text-art/widget.h: New file.
9123 2023-06-21  Uros Bizjak  <ubizjak@gmail.com>
9125         * function.h (emit_initial_value_sets):
9126         Change return type from int to void.
9127         (aggregate_value_p): Change return type from int to bool.
9128         (prologue_contains): Ditto.
9129         (epilogue_contains): Ditto.
9130         (prologue_epilogue_contains): Ditto.
9131         * function.cc (temp_slot): Make "in_use" variable bool.
9132         (make_slot_available): Update for changed "in_use" variable.
9133         (assign_stack_temp_for_type): Ditto.
9134         (emit_initial_value_sets): Change return type from int to void
9135         and update function body accordingly.
9136         (instantiate_virtual_regs): Ditto.
9137         (rest_of_handle_thread_prologue_and_epilogue): Ditto.
9138         (safe_insn_predicate): Change return type from int to bool.
9139         (aggregate_value_p): Change return type from int to bool
9140         and update function body accordingly.
9141         (prologue_contains): Change return type from int to bool.
9142         (prologue_epilogue_contains): Ditto.
9144 2023-06-21  Alexander Monakov  <amonakov@ispras.ru>
9146         * common.opt (fp_contract_mode) [on]: Remove fallback.
9147         * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
9148         * doc/invoke.texi (-ffp-contract): Update.
9149         * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
9151 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9153         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
9154         Add alternatives to prefer to avoid same input and output Z register.
9155         (mask_gather_load<mode><v_int_container>): Likewise.
9156         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
9157         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
9158         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
9159         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
9160         Likewise.
9161         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
9162         Likewise.
9163         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9164         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
9165         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9166         <SVE_2BHSI:mode>_sxtw): Likewise.
9167         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9168         <SVE_2BHSI:mode>_uxtw): Likewise.
9169         (@aarch64_ldff1_gather<mode>): Likewise.
9170         (@aarch64_ldff1_gather<mode>): Likewise.
9171         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
9172         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
9173         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
9174         <VNx4_NARROW:mode>): Likewise.
9175         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9176         <VNx2_NARROW:mode>): Likewise.
9177         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9178         <VNx2_NARROW:mode>_sxtw): Likewise.
9179         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9180         <VNx2_NARROW:mode>_uxtw): Likewise.
9181         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
9182         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
9183         <SVE_PARTIAL_I:mode>): Likewise.
9185 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9187         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
9188         Convert to compact alternatives syntax.
9189         (mask_gather_load<mode><v_int_container>): Likewise.
9190         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
9191         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
9192         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
9193         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
9194         Likewise.
9195         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
9196         Likewise.
9197         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9198         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
9199         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9200         <SVE_2BHSI:mode>_sxtw): Likewise.
9201         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9202         <SVE_2BHSI:mode>_uxtw): Likewise.
9203         (@aarch64_ldff1_gather<mode>): Likewise.
9204         (@aarch64_ldff1_gather<mode>): Likewise.
9205         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
9206         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
9207         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
9208         <VNx4_NARROW:mode>): Likewise.
9209         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9210         <VNx2_NARROW:mode>): Likewise.
9211         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9212         <VNx2_NARROW:mode>_sxtw): Likewise.
9213         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9214         <VNx2_NARROW:mode>_uxtw): Likewise.
9215         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
9216         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
9217         <SVE_PARTIAL_I:mode>): Likewise.
9219 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9221         Revert:
9222         2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9224         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
9225         Convert to compact alternatives syntax.
9226         (mask_gather_load<mode><v_int_container>): Likewise.
9227         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
9228         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
9229         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
9230         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
9231         Likewise.
9232         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
9233         Likewise.
9234         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9235         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
9236         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9237         <SVE_2BHSI:mode>_sxtw): Likewise.
9238         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9239         <SVE_2BHSI:mode>_uxtw): Likewise.
9240         (@aarch64_ldff1_gather<mode>): Likewise.
9241         (@aarch64_ldff1_gather<mode>): Likewise.
9242         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
9243         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
9244         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
9245         <VNx4_NARROW:mode>): Likewise.
9246         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9247         <VNx2_NARROW:mode>): Likewise.
9248         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9249         <VNx2_NARROW:mode>_sxtw): Likewise.
9250         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9251         <VNx2_NARROW:mode>_uxtw): Likewise.
9252         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
9253         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
9254         <SVE_PARTIAL_I:mode>): Likewise.
9256 2023-06-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
9258         * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
9259         (get_len_load_store_mode): Ditto.
9260         * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
9261         (get_len_load_store_mode): Ditto.
9262         * optabs-tree.cc (can_vec_mask_load_store_p): New function.
9263         (get_len_load_store_mode): Ditto.
9264         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
9265         (get_len_load_store_mode): Ditto.
9266         * tree-if-conv.cc: include optabs-tree instead of optabs-query
9268 2023-06-21  Richard Biener  <rguenther@suse.de>
9270         * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
9271         split_constant_offset for the POINTER_PLUS_EXPR case.
9273 2023-06-21  Richard Biener  <rguenther@suse.de>
9275         * tree-ssa-loop-ivopts.cc (record_group_use): Use
9276         split_constant_offset.
9278 2023-06-21  Richard Biener  <rguenther@suse.de>
9280         * tree-loop-distribution.cc (classify_builtin_st): Use
9281         split_constant_offset.
9282         * tree-ssa-loop-ivopts.h (strip_offset): Remove.
9283         * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
9285 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9287         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
9288         Convert to compact alternatives syntax.
9289         (mask_gather_load<mode><v_int_container>): Likewise.
9290         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
9291         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
9292         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
9293         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
9294         Likewise.
9295         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
9296         Likewise.
9297         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9298         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
9299         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9300         <SVE_2BHSI:mode>_sxtw): Likewise.
9301         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
9302         <SVE_2BHSI:mode>_uxtw): Likewise.
9303         (@aarch64_ldff1_gather<mode>): Likewise.
9304         (@aarch64_ldff1_gather<mode>): Likewise.
9305         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
9306         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
9307         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
9308         <VNx4_NARROW:mode>): Likewise.
9309         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9310         <VNx2_NARROW:mode>): Likewise.
9311         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9312         <VNx2_NARROW:mode>_sxtw): Likewise.
9313         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
9314         <VNx2_NARROW:mode>_uxtw): Likewise.
9315         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
9316         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
9317         <SVE_PARTIAL_I:mode>): Likewise.
9319 2023-06-21  Tamar Christina  <tamar.christina@arm.com>
9321         PR other/110329
9322         * doc/md.texi: Replace backslashchar.
9324 2023-06-21  Richard Biener  <rguenther@suse.de>
9326         * config/i386/i386.cc (ix86_vector_costs::finish_cost):
9327         Overload.  For masked main loops make sure the vectorization
9328         factor isn't more than double the number of iterations.
9330 2023-06-21  Jan Beulich  <jbeulich@suse.com>
9332         * config/i386/i386-expand.cc (ix86_expand_copysign): Request
9333         value duplication by ix86_build_signbit_mask() when AVX512F and
9334         not HFmode.
9335         * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
9336         2-alternative form. Adjust "mode" attribute. Add "enabled"
9337         attribute.
9338         (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
9339         && !TARGET_PREFER_AVX256.
9340         (*<avx512>_vpternlog<mode>_2): Likewise.
9341         (*<avx512>_vpternlog<mode>_3): Likewise.
9343 2023-06-21  liuhongt  <hongtao.liu@intel.com>
9345         PR target/110018
9346         * tree-vect-stmts.cc (vectorizable_conversion): Use
9347         intermiediate integer type for float_expr/fix_trunc_expr when
9348         direct optab is not existed.
9350 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
9352         PR bootstrap/110324
9353         * gensupport.cc (convert_syntax): Explicitly check for RTX code.
9355 2023-06-20  Richard Sandiford  <richard.sandiford@arm.com>
9357         * config/aarch64/aarch64.md (stack_tie): Hard-code the first
9358         register operand to the stack pointer.  Require the second register
9359         operand to have the number specified in a separate const_int operand.
9360         * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
9361         (aarch64_allocate_and_probe_stack_space): Use it.
9362         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
9363         (aarch64_expand_epilogue): Likewise.
9365 2023-06-20  Jakub Jelinek  <jakub@redhat.com>
9367         PR middle-end/79173
9368         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
9369         IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
9370         type.
9372 2023-06-20  Uros Bizjak  <ubizjak@gmail.com>
9374         * calls.h (setjmp_call_p): Change return type from int to bool.
9375         * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
9376         (store_one_arg): Change return type from int to bool
9377         and adjust function body accordingly.  Change "sibcall_failure"
9378         variable to bool.
9379         (finalize_must_preallocate): Ditto.  Change *must_preallocate pointer
9380         argument  to bool.  Change "partial_seen" variable to bool.
9381         (load_register_parameters):  Change *sibcall_failure
9382         pointer argument to bool.
9383         (check_sibcall_argument_overlap_1): Change return type from int to bool
9384         and adjust function body accordingly.
9385         (check_sibcall_argument_overlap):  Ditto.  Change
9386         "mark_stored_args_map" argument to bool.
9387         (emit_call_1): Change "already_popped" variable to bool.
9388         (setjmp_call_p): Change return type from int to bool
9389         and adjust function body accordingly.
9390         (initialize_argument_information): Change *must_preallocate
9391         pointer argument to bool.
9392         (expand_call): Change "pcc_struct_value", "must_preallocate"
9393         and "sibcall_failure" variables to bool.
9394         (emit_library_call_value_1): Change "pcc_struct_value"
9395         variable to bool.
9397 2023-06-20  Martin Jambor  <mjambor@suse.cz>
9399         PR ipa/110276
9400         * ipa-sra.cc (struct caller_issues): New field there_is_one.
9401         (check_for_caller_issues): Set it.
9402         (check_all_callers_for_issues): Check it.
9404 2023-06-20  Martin Jambor  <mjambor@suse.cz>
9406         * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
9407         (struct ipcp_transformation): Rearrange members according to
9408         C++ class coding convention, add m_uid_to_idx,
9409         get_param_index and maybe_create_parm_idx_map.
9410         * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
9411         (compare_uids): Likewise.
9412         (ipcp_transformation::maype_create_parm_idx_map): Likewise.
9413         * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
9414         (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
9415         (ipcp_update_vr): Likewise.
9416         (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
9417         out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
9419 2023-06-20  Carl Love  <cel@us.ibm.com>
9421         * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
9422         Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
9423         Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
9424         Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
9425         Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
9426         (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
9427         CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
9428         * config/rs6000/rs6000-builtins.def
9429         (__builtin_vsx_scalar_extract_exp_to_vec,
9430         __builtin_vsx_scalar_extract_sig_to_vec,
9431         __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
9432         Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
9433         xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
9434         * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
9435         Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
9436         overloaded instance. Update comments.
9437         * config/rs6000/rs6000-overload.def
9438         (__builtin_vec_scalar_insert_exp): Add new overload definition with
9439         vector arguments.
9440         (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
9441         overloaded definitions.
9442         * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
9443         (DI_to_TI): New mode attribute.
9444         Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
9445         Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
9446         Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
9447         * doc/extend.texi (scalar_extract_exp_to_vec,
9448         scalar_extract_sig_to_vec): Add documentation for new builtins.
9449         (scalar_insert_exp): Add new overloaded builtin definition.
9451 2023-06-20  Li Xu  <xuli1@eswincomputing.com>
9453         * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
9454         size of vector mask mode to one rvv register.
9456 2023-06-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9458         * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
9460 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
9462         * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
9463         switch handler.
9465 2023-06-20  Richard Biener  <rguenther@suse.de>
9467         * tree-ssa-dse.cc (dse_classify_store): When we found
9468         no defs and the basic-block with the original definition
9469         ends in __builtin_unreachable[_trap] the store is dead.
9471 2023-06-20  Richard Biener  <rguenther@suse.de>
9473         * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
9474         keep the virtual SSA form up-to-date.
9476 2023-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9478         * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
9479         New define_insn_and_split.
9481 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
9483         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
9485 2023-06-20  Jan Beulich  <jbeulich@suse.com>
9487         * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
9488         constraint. Add new AVX512F alternative.
9490 2023-06-20  Richard Biener  <rguenther@suse.de>
9492         PR debug/110295
9493         * dwarf2out.cc (process_scope_var): Continue processing
9494         the decl after setting a parent in case the existing DIE
9495         was in limbo.
9497 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
9499         * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
9500         (riscv_arg_has_vector): Simplify.
9501         (riscv_pass_in_vector_p): Adjust warning message.
9503 2023-06-19  Jin Ma  <jinma@linux.alibaba.com>
9505         * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
9506         (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
9507         * config/riscv/riscv.md (riscv_frcsr): New patterns.
9508         (riscv_fscsr): Likewise.
9510 2023-06-19  Toru Kisuki  <tkisuki@tachyum.com>
9512         PR rtl-optimization/110305
9513         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
9514         Handle HONOR_SNANS for x + 0.0.
9516 2023-06-19  Jan Hubicka  <jh@suse.cz>
9518         PR tree-optimization/109811
9519         PR tree-optimization/109849
9520         * passes.def: Add phiprop to early optimization passes.
9521         * tree-ssa-phiprop.cc: Allow clonning.
9523 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
9525         * config/aarch64/aarch64.md (arches): Add nosimd.
9526         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
9527         compact syntax.
9529 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
9530             Omar Tahir  <Omar.Tahir2@arm.com>
9532         * gensupport.cc (class conlist, add_constraints, add_attributes,
9533         skip_spaces, expect_char, preprocess_compact_syntax,
9534         parse_section_layout, parse_section, convert_syntax): New.
9535         (process_rtx): Check for conversion.
9536         * genoutput.cc (process_template): Check for unresolved iterators.
9537         (class data): Add compact_syntax_p.
9538         (gen_insn): Use it.
9539         * gensupport.h (compact_syntax): New.
9540         (hash-set.h): Include.
9541         * doc/md.texi: Document it.
9543 2023-06-19  Uros Bizjak  <ubizjak@gmail.com>
9545         * recog.h (check_asm_operands): Change return type from int to bool.
9546         (insn_invalid_p): Ditto.
9547         (verify_changes): Ditto.
9548         (apply_change_group): Ditto.
9549         (constrain_operands): Ditto.
9550         (constrain_operands_cached): Ditto.
9551         (validate_replace_rtx_subexp): Ditto.
9552         (validate_replace_rtx): Ditto.
9553         (validate_replace_rtx_part): Ditto.
9554         (validate_replace_rtx_part_nosimplify): Ditto.
9555         (added_clobbers_hard_reg_p): Ditto.
9556         (peep2_regno_dead_p): Ditto.
9557         (peep2_reg_dead_p): Ditto.
9558         (store_data_bypass_p): Ditto.
9559         (if_test_bypass_p): Ditto.
9560         * rtl.h (split_all_insns_noflow): Change
9561         return type from unsigned int to void.
9562         * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
9563         of generated added_clobbers_hard_reg_p from int to bool and adjust
9564         function body accordingly.  Change "used" variable type from
9565         int to bool.
9566         * recog.cc (check_asm_operands): Change return type
9567         from int to bool and adjust function body accordingly.
9568         (insn_invalid_p): Ditto.  Change "is_asm" variable to bool.
9569         (verify_changes): Change return type from int to bool.
9570         (apply_change_group): Change return type from int to bool
9571         and adjust function body accordingly.
9572         (validate_replace_rtx_subexp): Change return type from int to bool.
9573         (validate_replace_rtx): Ditto.
9574         (validate_replace_rtx_part): Ditto.
9575         (validate_replace_rtx_part_nosimplify): Ditto.
9576         (constrain_operands_cached): Ditto.
9577         (constrain_operands): Ditto.  Change "lose" and "win"
9578         variables type from int to bool.
9579         (split_all_insns_noflow): Change return type from unsigned int
9580         to void and adjust function body accordingly.
9581         (peep2_regno_dead_p): Change return type from int to bool.
9582         (peep2_reg_dead_p): Ditto.
9583         (peep2_find_free_register): Change "success"
9584         variable type from int to bool
9585         (store_data_bypass_p_1): Change return type from int to bool.
9586         (store_data_bypass_p): Ditto.
9588 2023-06-19  Li Xu  <xuli1@eswincomputing.com>
9590         * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
9591         Zve32f extension.
9593 2023-06-19  Pan Li  <pan2.li@intel.com>
9595         PR target/110299
9596         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
9597         modes.
9598         * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
9599         VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
9600         VF_ZVE63 and VF_ZVE32.
9601         * config/riscv/vector.md
9602         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
9603         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
9604         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
9605         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
9606         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
9607         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
9608         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
9609         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
9610         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
9611         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
9613 2023-06-19  Pan Li  <pan2.li@intel.com>
9615         PR target/110277
9616         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
9617         ret_mode.
9618         * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
9619         VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
9620         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
9621         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
9622         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
9623         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
9624         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
9625         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
9626         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
9627         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
9628         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
9629         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
9630         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
9631         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
9633 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
9635         * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
9636         (gcn_init_libfuncs): Add div and mod functions for all modes.
9637         Add placeholders for divmod functions.
9638         (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
9640 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
9642         * tree-vect-generic.cc: Include optabs-libfuncs.h.
9643         (get_compute_type): Check optab_libfunc.
9644         * tree-vect-stmts.cc: Include optabs-libfuncs.h.
9645         (vectorizable_operation): Check optab_libfunc.
9647 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
9649         * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
9650         * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
9651         (V_MOV, V_MOV_ALT): Likewise.
9652         (scalar_mode, SCALAR_MODE): Add TImode.
9653         (vnsi, VnSI, vndi, VnDI): Likewise.
9654         (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
9655         (mov<mode>, mov<mode>_unspec): Use V_MOV.
9656         (*mov<mode>_4reg): New insn.
9657         (mov<mode>_exec): New 4reg variant.
9658         (mov<mode>_sgprbase): Likewise.
9659         (reload_in<mode>, reload_out<mode>): Use V_MOV.
9660         (vec_set<mode>): Likewise.
9661         (vec_duplicate<mode><exec>): New 4reg variant.
9662         (vec_extract<mode><scalar_mode>): Likewise.
9663         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
9664         (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
9665         (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
9666         (fold_extract_last_<mode>): Use V_MOV.
9667         (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
9668         (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
9669         (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
9670         gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
9671         gather<mode>_insn_2offsets<exec>): Use V_MOV.
9672         (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
9673         scatter<mode>_insn_1offset<exec_scatter>,
9674         scatter<mode>_insn_1offset_ds<exec_scatter>,
9675         scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
9676         (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
9677         mask_scatter_store<mode><vnsi>): Likewise.
9678         * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
9679         (gcn_hard_regno_mode_ok): Likewise.
9680         (GEN_VNM): Add TImode support.
9681         (USE_TI): New macro. Separate TImode operations from non-TImode ones.
9682         (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
9683         V8TImode, and V2TImode.
9684         (print_operand):  Add 'J' and 'K' print codes.
9686 2023-06-19  Richard Biener  <rguenther@suse.de>
9688         PR tree-optimization/110298
9689         * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
9690         Clear number of iterations info before cleaning up the CFG.
9692 2023-06-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9694         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
9695         Simplify vec_concat of lowpart subreg and high part vec_select.
9697 2023-06-19  Tobias Burnus  <tobias@codesourcery.com>
9699         * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
9701 2023-06-19  Richard Sandiford  <richard.sandiford@arm.com>
9703         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
9704         Handle null niters_skip.
9706 2023-06-19  Richard Biener  <rguenther@suse.de>
9708         * config/aarch64/aarch64.cc
9709         (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
9710         to LOOP_VINFO_MASKS.
9712 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
9714         PR target/105523
9715         * common/config/avr/avr-common.cc: Remove setting
9716         of OPT_fdelete_null_pointer_checks.
9717         * config/avr/avr.cc (avr_option_override): Clear
9718         flag_delete_null_pointer_checks if zero_address_valid.
9719         (avr_addr_space_zero_address_valid): New function.
9720         (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
9721         hook.
9723 2023-06-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
9724             Robin Dapp  <rdapp.gcc@gmail.com>
9726         * doc/md.texi: Add len_mask{load,store}.
9727         * genopinit.cc (main): Ditto.
9728         (CMP_NAME): Ditto.
9729         * internal-fn.cc (len_maskload_direct): Ditto.
9730         (len_maskstore_direct): Ditto.
9731         (expand_call_mem_ref): Ditto.
9732         (expand_partial_load_optab_fn): Ditto.
9733         (expand_len_maskload_optab_fn): Ditto.
9734         (expand_partial_store_optab_fn): Ditto.
9735         (expand_len_maskstore_optab_fn): Ditto.
9736         (direct_len_maskload_optab_supported_p): Ditto.
9737         (direct_len_maskstore_optab_supported_p): Ditto.
9738         * internal-fn.def (LEN_MASK_LOAD): Ditto.
9739         (LEN_MASK_STORE): Ditto.
9740         * optabs.def (OPTAB_CD): Ditto.
9742 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
9744         * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
9746 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
9748         * config/riscv/autovec.md (<optab><mode>3): Implement binop
9749         expander.
9750         * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
9751         (enum vxrm_field_enum): Rename this...
9752         (enum fixed_point_rounding_mode): ...to this.
9753         (enum frm_field_enum): Rename this...
9754         (enum floating_point_rounding_mode): ...to this.
9755         * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
9756         * config/riscv/riscv.cc (riscv_const_insns): Clarify const
9757         vector handling.
9758         (riscv_libgcc_floating_mode_supported_p): Adjust comment.
9759         (riscv_excess_precision): Do not convert to float for ZVFH.
9760         * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
9762 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
9764         * config/riscv/vector-iterators.md: Add VI_QH iterator.
9765         * config/riscv/autovec-opt.md
9766         (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
9767         that includes sign extension.
9768         (@pred_extract_first_sextsi<mode>): Dito for SImode.
9770 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
9772         * config/riscv/autovec.md (vec_set<mode>): Implement.
9773         (vec_extract<mode><vel>): Implement.
9774         * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
9775         (emit_vlmax_slide_insn): Declare.
9776         (emit_nonvlmax_slide_tu_insn): Declare.
9777         (emit_scalar_move_insn): Export.
9778         (emit_nonvlmax_integer_move_insn): Export.
9779         * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
9780         (emit_nonvlmax_slide_tu_insn): New function.
9781         (emit_vlmax_masked_mu_insn): No change.
9782         (emit_vlmax_integer_move_insn): Export.
9784 2023-06-19  Richard Biener  <rguenther@suse.de>
9786         * tree-vectorizer.h (enum vect_partial_vector_style): New.
9787         (_loop_vec_info::partial_vector_style): Likewise.
9788         (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
9789         (rgroup_controls::compare_type): Add.
9790         (vec_loop_masks): Change from a typedef to auto_vec<>
9791         to a structure.
9792         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
9793         Adjust.  Convert niters_skip to compare_type.
9794         (vect_set_loop_condition_partial_vectors_avx512): New function
9795         implementing the AVX512 partial vector codegen.
9796         (vect_set_loop_condition): Dispatch to the correct
9797         vect_set_loop_condition_partial_vectors_* function based on
9798         LOOP_VINFO_PARTIAL_VECTORS_STYLE.
9799         (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
9800         in the original niter type.
9801         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
9802         partial_vector_style.
9803         (can_produce_all_loop_masks_p): Adjust.
9804         (vect_verify_full_masking): Produce the rgroup_controls vector
9805         here.  Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
9806         (vect_verify_full_masking_avx512): New function implementing
9807         verification of AVX512 style masking.
9808         (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
9809         (vect_analyze_loop_2): Also try AVX512 style masking.
9810         Adjust condition.
9811         (vect_estimate_min_profitable_iters): Implement AVX512 style
9812         mask producing cost.
9813         (vect_record_loop_mask): Do not build the rgroup_controls
9814         vector here but record masks in a hash-set.
9815         (vect_get_loop_mask): Implement AVX512 style mask query,
9816         complementing the existing while_ult style.
9818 2023-06-19  Richard Biener  <rguenther@suse.de>
9820         * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
9821         argument.
9822         * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
9823         (vectorize_fold_left_reduction): Adjust.
9824         (vect_transform_reduction): Likewise.
9825         (vectorizable_live_operation): Likewise.
9826         * tree-vect-stmts.cc (vectorizable_call): Likewise.
9827         (vectorizable_operation): Likewise.
9828         (vectorizable_store): Likewise.
9829         (vectorizable_load): Likewise.
9830         (vectorizable_condition): Likewise.
9832 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
9834         PR target/110086
9835         * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
9836         Add Optimization option property.
9838 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
9840         * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
9841         Add new pattern for the abovementioned case.
9843 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
9845         * config/xtensa/xtensa.cc
9846         (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
9848 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
9850         * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
9852 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
9854         * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
9856 2023-06-19  liuhongt  <hongtao.liu@intel.com>
9858         PR target/110235
9859         * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
9860         Substitute with ..
9861         (sse2_packsswb<mask_name>): .. this, ..
9862         (avx2_packsswb<mask_name>): .. this and ..
9863         (avx512bw_packsswb<mask_name>): .. this.
9864         (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
9865         (sse2_packssdw<mask_name>): .. this, ..
9866         (avx2_packssdw<mask_name>): .. this and ..
9867         (avx512bw_packssdw<mask_name>): .. this.
9869 2023-06-19  liuhongt  <hongtao.liu@intel.com>
9871         PR target/110235
9872         * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
9873         UNSPEC_US_TRUNCATE instead of original us_truncate for
9874         packusdw/packuswb.
9875         * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
9876         with ..
9877         (mmx_packsswb): .. this and ..
9878         (mmx_packuswb): .. this.
9879         (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
9880         us_truncate.
9881         (s_trunsuffix): Removed code iterator.
9882         (any_s_truncate): Ditto.
9883         * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
9884         UNSPEC_US_TRUNCATE instead of original us_truncate.
9885         (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
9886         * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
9888 2023-06-18  Pan Li  <pan2.li@intel.com>
9890         * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
9892 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
9894         * rtl.h (*rtx_equal_p_callback_function):
9895         Change return type from int to bool.
9896         (rtx_equal_p): Ditto.
9897         (*hash_rtx_callback_function): Ditto.
9898         * rtl.cc (rtx_equal_p): Change return type from int to bool
9899         and adjust function body accordingly.
9900         * early-remat.cc (scratch_equal): Ditto.
9901         * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
9902         (hash_with_unspec_callback): Ditto.
9904 2023-06-18  Jeff Law  <jlaw@ventanamicro.com>
9906         * config/arc/arc.md (movqi_insn): Allow certain constants to
9907         be stored into memory in the pattern's condition.
9908         (movsf_insn): Similarly.
9910 2023-06-18  Honza  <jh@ryzen3.suse.cz>
9912         PR tree-optimization/109849
9913         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
9914         ES; handle ipa_predicate::not_sra_candidate.
9915         (evaluate_properties_for_edge): Pass es to
9916         evaluate_conditions_for_known_args.
9917         (ipa_fn_summary_t::duplicate): Handle sra candidates.
9918         (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
9919         (load_or_store_of_ptr_parameter): New function.
9920         (points_to_possible_sra_candidate_p): New function.
9921         (analyze_function_body): Initialize points_to_possible_sra_candidate;
9922         determine sra predicates.
9923         (estimate_ipcp_clone_size_and_time): Update call of
9924         evaluate_conditions_for_known_args.
9925         (remap_edge_params): Update points_to_possible_sra_candidate.
9926         (read_ipa_call_summary): Stream points_to_possible_sra_candidate
9927         (write_ipa_call_summary): Likewise.
9928         * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
9929         (dump_condition): Dump it.
9930         * ipa-predicate.h (struct inline_param_summary): Add
9931         points_to_possible_sra_candidate.
9933 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
9935         * config/i386/i386-expand.cc (ix86_expand_carry): New helper
9936         function for setting the carry flag.
9937         (ix86_expand_builtin) <handlecarry>: Use it here.
9938         * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
9939         * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
9940         (usubc<mode>5): Likewise.
9942 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
9944         * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
9945         for the immediate constant shift count.
9946         (*concat<mode><dwi>3_2): Likewise.
9947         (*concat<mode><dwi>3_3): Likewise.
9948         (*concat<mode><dwi>3_4): Likewise.
9949         (*concat<mode><dwi>3_5): Likewise.
9950         (*concat<mode><dwi>3_6): Likewise.
9952 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
9954         * cse.cc (hash_rtx_cb): Rename to hash_rtx.
9955         (hash_rtx): Remove.
9956         * early-remat.cc (remat_candidate_hasher::equal): Update
9957         to call rtx_equal_p with rtx_equal_p_callback_function argument.
9958         * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
9959         (rtx_equal_p): Remove.
9960         * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
9961         argument with NULL default value.
9962         (rtx_equal_p_cb): Remove function declaration.
9963         (hash_rtx_cb): Ditto.
9964         (hash_rtx): Add hash_rtx_callback_function argument
9965         with NULL default value.
9966         * sel-sched-ir.cc (free_nop_pool): Update function comment.
9967         (skip_unspecs_callback): Ditto.
9968         (vinsn_init): Update to call hash_rtx with
9969         hash_rtx_callback_function argument.
9970         (vinsn_equal_p): Ditto.
9972 2023-06-18  yulong  <shiyulong@iscas.ac.cn>
9974         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
9975         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
9976         (ADJUST_ALIGNMENT): Ditto.
9977         (RVV_TUPLE_PARTIAL_MODES): Ditto.
9978         (ADJUST_NUNITS): Ditto.
9979         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
9980         New types.
9981         (vfloat16mf4x3_t): Ditto.
9982         (vfloat16mf4x4_t): Ditto.
9983         (vfloat16mf4x5_t): Ditto.
9984         (vfloat16mf4x6_t): Ditto.
9985         (vfloat16mf4x7_t): Ditto.
9986         (vfloat16mf4x8_t): Ditto.
9987         (vfloat16mf2x2_t): Ditto.
9988         (vfloat16mf2x3_t): Ditto.
9989         (vfloat16mf2x4_t): Ditto.
9990         (vfloat16mf2x5_t): Ditto.
9991         (vfloat16mf2x6_t): Ditto.
9992         (vfloat16mf2x7_t): Ditto.
9993         (vfloat16mf2x8_t): Ditto.
9994         (vfloat16m1x2_t): Ditto.
9995         (vfloat16m1x3_t): Ditto.
9996         (vfloat16m1x4_t): Ditto.
9997         (vfloat16m1x5_t): Ditto.
9998         (vfloat16m1x6_t): Ditto.
9999         (vfloat16m1x7_t): Ditto.
10000         (vfloat16m1x8_t): Ditto.
10001         (vfloat16m2x2_t): Ditto.
10002         (vfloat16m2x3_t): Ditto.
10003         (vfloat16m2x4_t): Ditto.
10004         (vfloat16m4x2_t): Ditto.
10005         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
10006         (vfloat16mf4x3_t): Ditto.
10007         (vfloat16mf4x4_t): Ditto.
10008         (vfloat16mf4x5_t): Ditto.
10009         (vfloat16mf4x6_t): Ditto.
10010         (vfloat16mf4x7_t): Ditto.
10011         (vfloat16mf4x8_t): Ditto.
10012         (vfloat16mf2x2_t): Ditto.
10013         (vfloat16mf2x3_t): Ditto.
10014         (vfloat16mf2x4_t): Ditto.
10015         (vfloat16mf2x5_t): Ditto.
10016         (vfloat16mf2x6_t): Ditto.
10017         (vfloat16mf2x7_t): Ditto.
10018         (vfloat16mf2x8_t): Ditto.
10019         (vfloat16m1x2_t): Ditto.
10020         (vfloat16m1x3_t): Ditto.
10021         (vfloat16m1x4_t): Ditto.
10022         (vfloat16m1x5_t): Ditto.
10023         (vfloat16m1x6_t): Ditto.
10024         (vfloat16m1x7_t): Ditto.
10025         (vfloat16m1x8_t): Ditto.
10026         (vfloat16m2x2_t): Ditto.
10027         (vfloat16m2x3_t): Ditto.
10028         (vfloat16m2x4_t): Ditto.
10029         (vfloat16m4x2_t): Ditto.
10030         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
10031         * config/riscv/riscv.md: New.
10032         * config/riscv/vector-iterators.md: New.
10034 2023-06-17  Roger Sayle  <roger@nextmovesoftware.com>
10036         * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
10037         CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
10038         Generalize special case for converting TImode to V1TImode to handle
10039         all 128-bit vector conversions.
10041 2023-06-17  Costas Argyris  <costas.argyris@gmail.com>
10043         * gcc-ar.cc (main): Refactor to slightly reduce code
10044         duplication.  Avoid unnecessary elements in nargv.
10046 2023-06-16  Pan Li  <pan2.li@intel.com>
10048         PR target/110265
10049         * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
10050         integer reduction expand.
10051         * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
10052         and the LMUL1 attr respectively.
10053         * config/riscv/vector.md
10054         (@pred_reduc_<reduc><mode><vlmul1>): Removed.
10055         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
10056         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
10057         (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
10058         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
10059         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
10060         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
10062 2023-06-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10064         PR target/110264
10065         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
10067 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
10069         PR middle-end/79173
10070         * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
10071         BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
10072         BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
10073         types.
10074         * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
10075         BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
10076         * builtins.cc (fold_builtin_addc_subc): New function.
10077         (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
10078         * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
10080 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
10082         PR tree-optimization/110271
10083         * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
10084         <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
10085         instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
10087 2023-06-16  Martin Jambor  <mjambor@suse.cz>
10089         * configure: Regenerate.
10091 2023-06-16  Roger Sayle  <roger@nextmovesoftware.com>
10092             Uros Bizjak  <ubizjak@gmail.com>
10094         PR target/31985
10095         * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
10096         define_insn_and_split combine *add<dwi>3_doubleword with
10097         a *concat<mode><dwi>3 for more efficient lowering after reload.
10099 2023-06-16  Vladimir N. Makarov  <vmakarov@redhat.com>
10101         * ira-lives.cc: Include except.h.
10102         (process_bb_node_lives): Ignore conflicts from cleanup exceptions
10103         when the pseudo does not live at the exception landing pad.
10105 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
10107         * doc/invoke.texi: Document -Welaborated-enum-base.
10109 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10111         * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
10112         (ushrn2_n): ... This.
10113         (sqshrn2_n): Rename builtins to...
10114         (ssqshrn2_n): ... This.
10115         (uqshrn2_n): Rename builtins to...
10116         (uqushrn2_n): ... This.
10117         * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
10118         (vqshrn_high_n_s32): Likewise.
10119         (vqshrn_high_n_s64): Likewise.
10120         (vqshrn_high_n_u16): Likewise.
10121         (vqshrn_high_n_u32): Likewise.
10122         (vqshrn_high_n_u64): Likewise.
10123         (vshrn_high_n_s16): Likewise.
10124         (vshrn_high_n_s32): Likewise.
10125         (vshrn_high_n_s64): Likewise.
10126         (vshrn_high_n_u16): Likewise.
10127         (vshrn_high_n_u32): Likewise.
10128         (vshrn_high_n_u64): Likewise.
10129         * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
10130         Rename to...
10131         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
10132         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
10133         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
10134         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
10135         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
10136         (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
10137         (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
10138         Update expander for the above.
10140 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10142         * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
10143         (shrn2_n): ... This.
10144         (rshrn2): Rename builtins to...
10145         (rshrn2_n): ... This.
10146         * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
10147         (vrshrn_high_n_s32): Likewise.
10148         (vrshrn_high_n_s64): Likewise.
10149         (vrshrn_high_n_u16): Likewise.
10150         (vrshrn_high_n_u32): Likewise.
10151         (vrshrn_high_n_u64): Likewise.
10152         (vshrn_high_n_s16): Likewise.
10153         (vshrn_high_n_s32): Likewise.
10154         (vshrn_high_n_s64): Likewise.
10155         (vshrn_high_n_u16): Likewise.
10156         (vshrn_high_n_u32): Likewise.
10157         (vshrn_high_n_u64): Likewise.
10158         * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
10159         Delete.
10160         (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
10161         (aarch64_shrn2<mode>_insn_le): Likewise.
10162         (aarch64_shrn2<mode>_insn_be): Likewise.
10163         (aarch64_shrn2<mode>): Likewise.
10164         (aarch64_rshrn2<mode>_insn_le): Likewise.
10165         (aarch64_rshrn2<mode>_insn_be): Likewise.
10166         (aarch64_rshrn2<mode>): Likewise.
10167         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
10168         (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
10169         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
10170         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
10171         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
10172         (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
10173         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
10174         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
10175         (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
10176         (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
10177         (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
10178         (aarch64_sqshrun2_n<mode>): New define_expand.
10179         (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
10180         (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
10181         (aarch64_sqrshrun2_n<mode>): New define_expand.
10182         * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
10183         UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
10184         Delete unspec values.
10185         (VQSHRN_N): Delete int iterator.
10187 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10189         * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
10190         * config/aarch64/aarch64-simd.md
10191         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
10192         (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
10193         Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
10194         * config/aarch64/iterators.md (shrn_s): New code attribute.
10196 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10198         * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
10199         Rename to...
10200         (aarch64_<shrn_op>shrn_n<mode>): ... This.  Reimplement with RTL codes.
10201         (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
10202         (aarch64_sqrshrun_n<mode>_insn): Likewise.
10203         (aarch64_sqshrun_n<mode>_insn): Likewise.
10204         (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
10205         (aarch64_sqshrun_n<mode>): Likewise.
10206         (aarch64_sqrshrun_n<mode>): Likewise.
10207         * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
10209 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10211         * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
10212         (shrn_n): ... This.
10213         (rshrn): Rename builtins to...
10214         (rshrn_n): ... This.
10215         * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
10216         (vshrn_n_s32): Likewise.
10217         (vshrn_n_s64): Likewise.
10218         (vshrn_n_u16): Likewise.
10219         (vshrn_n_u32): Likewise.
10220         (vshrn_n_u64): Likewise.
10221         (vrshrn_n_s16): Likewise.
10222         (vrshrn_n_s32): Likewise.
10223         (vrshrn_n_s64): Likewise.
10224         (vrshrn_n_u16): Likewise.
10225         (vrshrn_n_u32): Likewise.
10226         (vrshrn_n_u64): Likewise.
10227         * config/aarch64/aarch64-simd.md
10228         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
10229         (aarch64_shrn<mode>): Likewise.
10230         (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
10231         (aarch64_rshrn<mode>): Likewise.
10232         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
10233         (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
10234         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
10235         (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
10236         (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
10237         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
10238         (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
10239         (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
10240         (aarch64_sqshrun_n<mode>): Likewise.
10241         (aarch64_sqrshrun_n<mode>): Likewise.
10242         * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
10243         (TRUNCEXTEND): New code attribute.
10244         (TRUNC_SHIFT): Likewise.
10245         (shrn_op): Likewise.
10246         * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
10247         New predicate.
10249 2023-06-16  Pan Li  <pan2.li@intel.com>
10251         * config/riscv/riscv-vsetvl.cc
10252         (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
10254 2023-06-16  Richard Biener  <rguenther@suse.de>
10256         PR tree-optimization/110278
10257         * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
10258         (x != (typeof x)(x == 0) -> true): Likewise.
10260 2023-06-16  Pali Rohár  <pali@kernel.org>
10262         * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
10263         (REAL_LIBGCC_SPEC): New define.
10264         * config/i386/mingw.opt: Add mcrtdll=
10265         * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
10266         (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
10267         (STARTFILE_SPEC): Adjust for -mcrtdll=.
10268         * doc/invoke.texi: Add mcrtdll= documentation.
10270 2023-06-16  Simon Dardis  <simon.dardis@imgtec.com>
10272         * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
10273         (mips_handle_code_readable_attr):New static function.
10274         (mips_get_code_readable_attr):New static enum function.
10275         (mips_set_current_function):Set the code_readable mode.
10276         (mips_option_override):Same as above.
10277         * doc/extend.texi:Document code_readable.
10279 2023-06-16  Richard Biener  <rguenther@suse.de>
10281         PR tree-optimization/110269
10282         * fold-const.cc (fold_binary_loc): Merge x != 0 folding
10283         with tree_expr_nonzero_p ...
10284         * match.pd (cmp (convert? addr@0) integer_zerop): With this
10285         pattern.
10287 2023-06-15  Marek Polacek  <polacek@redhat.com>
10289         * Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
10290         Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
10291         ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
10292         * configure.ac (--enable-host-shared): Don't set PICFLAG here.
10293         (--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
10294         check.
10295         * configure: Regenerate.
10296         * doc/install.texi: Document --enable-host-pie.
10298 2023-06-15  Manolis Tsamis  <manolis.tsamis@vrull.eu>
10300         * regcprop.cc (maybe_mode_change): Enable stack pointer
10301         propagation.
10303 2023-06-15  Andrew MacLeod  <amacleod@redhat.com>
10305         PR tree-optimization/110266
10306         * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
10307         complex type.
10308         (adjust_realpart_expr): Ditto.
10310 2023-06-15  Jan Beulich  <jbeulich@suse.com>
10312         * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
10313         vmovddup.
10315 2023-06-15  Jan Beulich  <jbeulich@suse.com>
10317         * config/i386/constraints.md: Mention k and r for B.
10319 2023-06-15  Lulu Cheng  <chenglulu@loongson.cn>
10320             Andrew Pinski  <apinski@marvell.com>
10322         PR target/110136
10323         * config/loongarch/loongarch.md: Modify the register constraints for template
10324         "jumptable" and "indirect_jump" from "r" to "e".
10326 2023-06-15  Xi Ruoyao  <xry111@xry111.site>
10328         * config/loongarch/loongarch-tune.h (loongarch_align): New
10329         struct.
10330         * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
10331         array.
10332         * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
10333         the array.
10334         * config/loongarch/loongarch.cc
10335         (loongarch_option_override_internal): Set the value of
10336         -falign-functions= if -falign-functions is enabled but no value
10337         is given.  Likewise for -falign-labels=.
10339 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
10341         PR middle-end/79173
10342         * internal-fn.def (UADDC, USUBC): New internal functions.
10343         * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
10344         (commutative_ternary_fn_p): Return true also for IFN_UADDC.
10345         * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
10346         * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
10347         match_uaddc_usubc): New functions.
10348         (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
10349         for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
10350         other optimizations have been successful for those.
10351         * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
10352         * fold-const-call.cc (fold_const_call): Likewise.
10353         * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
10354         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
10355         * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
10356         patterns.
10357         * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
10358         define_expand patterns.
10359         (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
10360         into NOTE_INSN_DELETED note rather than nop instruction.
10361         (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
10362         Likewise.
10364 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
10366         PR middle-end/79173
10367         * config/i386/i386.md (subborrow<mode>): Add alternative with
10368         memory destination and add for it define_peephole2
10369         TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
10370         destination in these patterns.
10372 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
10374         PR middle-end/79173
10375         * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
10376         addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
10377         define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
10378         using memory destination in these patterns.
10380 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
10382         * gimple-fold.cc (gimple_fold_call): Move handling of arg0
10383         as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
10384         and .{ADD,SUB,MUL}_OVERFLOW calls from here...
10385         * fold-const-call.cc (fold_const_call): ... here.
10387 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
10389         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
10390         Rename to <su>abd<mode>3.
10391         * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
10392         to <su>abd<mode>3.
10394 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
10396         * doc/md.texi (sabd, uabd): Document them.
10397         * internal-fn.def (ABD): Use new optab.
10398         * optabs.def (sabd_optab, uabd_optab): New optabs,
10399         * tree-vect-patterns.cc (vect_recog_absolute_difference):
10400         Recognize the following idiom abs (a - b).
10401         (vect_recog_sad_pattern): Refactor to use
10402         vect_recog_absolute_difference.
10403         (vect_recog_abd_pattern): Use patterns found by
10404         vect_recog_absolute_difference to build a new ABD
10405         internal call.
10407 2023-06-15  chenxiaolong  <chenxl04200420@163.com>
10409         * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
10410         of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
10412 2023-06-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10414         * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
10415         (expand_vec_perm_const_1): Add merge optmization.
10417 2023-06-15  Lehua Ding  <lehua.ding@rivai.ai>
10419         PR target/110119
10420         * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
10421         (riscv_pass_by_reference): Return true for vector mode
10423 2023-06-15  Pan Li  <pan2.li@intel.com>
10425         * config/riscv/autovec-opt.md: Align the predictor sytle.
10426         * config/riscv/autovec.md: Ditto.
10428 2023-06-15  Pan Li  <pan2.li@intel.com>
10430         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
10431         Take elen instead of scalar BITS_PER_WORD.
10432         (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
10433         instead of scaler BITS_PER_WORD.
10435 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
10437         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
10439 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10441         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
10442         Fix signed comparison warning in loop from npats to enelts.
10444 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
10446         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
10447         to offloading compilation.
10448         * config/gcn/mkoffload.cc (main): Adjust.
10449         * config/nvptx/mkoffload.cc (main): Likewise.
10450         * doc/invoke.texi (foffload-options): Update example.
10452 2023-06-14  liuhongt  <hongtao.liu@intel.com>
10454         PR target/110227
10455         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
10456         for alternative 2 since there's no evex version for vpcmpeqd
10457         ymm, ymm, ymm.
10459 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
10461         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
10463 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
10465         * config/sh/divtab.cc: Remove.
10467 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
10469         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
10470         superfluous spaces around \t for vpcmpeqd.
10472 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
10474         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
10475         clearing vectors with only a single element.  Set CLEARED if the
10476         vector was initialized to zero.
10478 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
10480         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
10481         #include.
10482         (ENTRY): Undef.
10483         (TUPLE_ENTRY): Undef.
10485 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10487         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
10488         (shuffle_generic_patterns): Ditto.
10489         (expand_vec_perm_const_1): Ditto.
10491 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10493         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
10494         (shuffle_decompress_patterns): Ditto.
10496 2023-06-13  Richard Biener  <rguenther@suse.de>
10498         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
10500 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
10501             Kito Cheng  <kito.cheng@sifive.com>
10503         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
10504         warning flag if func is not builtin
10505         * config/riscv/riscv.cc
10506         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
10507         (riscv_arg_has_vector): Determine whether the arg is vector type.
10508         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
10509         (riscv_init_cumulative_args): The same as header.
10510         (riscv_get_arg_info): Add the checking.
10511         (riscv_function_value): Check the func return and set warning flag
10512         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
10513         determine whether warning psabi or not.
10515 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10517         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
10518         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
10519         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
10520         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
10521         with TP_TPIDRURO.
10522         (arm_output_load_tpidr): Define.
10523         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
10524         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
10525         assembly.
10526         (reload_tp_hard): Likewise.
10527         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
10528         arm_tp_type.
10529         * doc/invoke.texi (Arm Options, mtp): Document new values.
10531 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10533         PR target/108779
10534         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
10535         AARCH64_TPIDRRO_EL0 value.
10536         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
10537         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
10538         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
10539         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
10541 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
10543         * range-op-float.cc (frange_nextafter): Drop inline.
10544         (frelop_early_resolve): Add static.
10545         (frange_float): Likewise.
10547 2023-06-13  Richard Biener  <rguenther@suse.de>
10549         PR middle-end/110232
10550         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
10551         to check whether the buffer covers the whole vector.
10553 2023-06-13  Richard Biener  <rguenther@suse.de>
10555         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
10556         .MASK_LOAD and friends set the size of the access to unknown.
10558 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
10560         PR target/96339
10561         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
10562         calls that have a constant input predicate vector.
10563         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
10564         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
10565         (svlast_impl::vect_all_same): Check if all vector elements are equal.
10567 2023-06-13  Andi Kleen  <ak@linux.intel.com>
10569         * config/i386/gcc-auto-profile: Regenerate.
10571 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10573         * config/riscv/vector-iterators.md: Fix requirement.
10575 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10577         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
10578         (shuffle_decompress_patterns): New function.
10579         (expand_vec_perm_const_1): Add decompress optimization.
10581 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
10583         PR rtl-optimization/101188
10584         * postreload.cc (reload_cse_move2add_invalidate): New function,
10585         extracted from...
10586         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
10588 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
10590         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
10591         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
10592         and if maxv == 1, use constant element for duplicating into register.
10594 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
10596         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
10597         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
10598         (gimplify_adjust_omp_clauses): Change
10599         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
10600         GOMP_MAP_FORCE_PRESENT.
10601         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
10602         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
10603         to/from clauses with present modifier.
10605 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10607         PR tree-optimization/110205
10608         * range-op-float.cc (range_operator::fold_range): Add default FII
10609         fold routine.
10610         * range-op-mixed.h (class operator_gt): Add missing final overrides.
10611         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
10612         (operator_lshift ::update_bitmask): Add final override.
10613         (operator_rshift ::update_bitmask): Add final override.
10614         * range-op.h (range_operator::fold_range): Add FII prototype.
10616 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10618         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
10619         Use range_op_handler directly.
10620         * range-op.cc (range_op_handler::range_op_handler): Unsigned
10621         param instead of tree-code.
10622         (ptr_op_widen_plus_signed): Delete.
10623         (ptr_op_widen_plus_unsigned): Delete.
10624         (ptr_op_widen_mult_signed): Delete.
10625         (ptr_op_widen_mult_unsigned): Delete.
10626         (range_op_table::initialize_integral_ops): Add new opcodes.
10627         * range-op.h (range_op_handler): Use unsigned.
10628         (OP_WIDEN_MULT_SIGNED): New.
10629         (OP_WIDEN_MULT_UNSIGNED): New.
10630         (OP_WIDEN_PLUS_SIGNED): New.
10631         (OP_WIDEN_PLUS_UNSIGNED): New.
10632         (RANGE_OP_TABLE_SIZE): New.
10633         (range_op_table::operator []): Use unsigned.
10634         (range_op_table::set): Use unsigned.
10635         (m_range_tree): Make unsigned.
10636         (ptr_op_widen_mult_signed): Remove.
10637         (ptr_op_widen_mult_unsigned): Remove.
10638         (ptr_op_widen_plus_signed): Remove.
10639         (ptr_op_widen_plus_unsigned): Remove.
10641 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10643         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
10644         manually as there is no access to the default operator.
10645         (cfn_copysign::fold_range): Don't check for validity.
10646         (cfn_ubsan::fold_range): Ditto.
10647         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
10648         * range-op.cc (default_operator): New.
10649         (range_op_handler::range_op_handler): Use default_operator
10650         instead of NULL.
10651         (range_op_handler::operator bool): Move from header, compare
10652         against default operator.
10653         (range_op_handler::range_op): New.
10654         * range-op.h (range_op_handler::operator bool): Move.
10656 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10658         * range-op.cc (unified_table): Delete.
10659         (range_op_table operator_table): Instantiate.
10660         (range_op_table::range_op_table): Rename from unified_table.
10661         (range_op_handler::range_op_handler): Use range_op_table.
10662         * range-op.h (range_op_table::operator []): Inline.
10663         (range_op_table::set): Inline.
10665 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10667         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
10668         pass type.
10669         * gimple-range-op.cc (get_code): Rename from get_code_and_type
10670         and simplify.
10671         (gimple_range_op_handler::supported_p): No need for type.
10672         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
10673         (cfn_copysign::fold_range): Ditto.
10674         (cfn_ubsan::fold_range): Ditto.
10675         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
10676         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
10677         * range-op-float.cc (operator_plus::op1_range): Ditto.
10678         (operator_mult::op1_range): Ditto.
10679         (range_op_float_tests): Ditto.
10680         * range-op.cc (get_op_handler): Remove.
10681         (range_op_handler::set_op_handler): Remove.
10682         (operator_plus::op1_range): No need for type.
10683         (operator_minus::op1_range): Ditto.
10684         (operator_mult::op1_range): Ditto.
10685         (operator_exact_divide::op1_range): Ditto.
10686         (operator_cast::op1_range): Ditto.
10687         (perator_bitwise_not::fold_range): Ditto.
10688         (operator_negate::fold_range): Ditto.
10689         * range-op.h (range_op_handler::range_op_handler): Remove type param.
10690         (range_cast): No need for type.
10691         (range_op_table::operator[]): Check for enum_code >= 0.
10692         * tree-data-ref.cc (compute_distributive_range): No need for type.
10693         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
10694         * value-query.cc (range_query::get_tree_range): Ditto.
10695         * value-relation.cc (relation_oracle::validate_relation): Ditto.
10696         * vr-values.cc (range_of_var_in_loop): Ditto.
10697         (simplify_using_ranges::fold_cond_with_ops): Ditto.
10699 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10701         * range-op-mixed.h (operator_max): Remove final.
10702         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
10703         (pointer_table::pointer_table): Remove.
10704         (class hybrid_max_operator): New.
10705         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
10706         * range-op.cc (pointer_tree_table): Remove.
10707         (unified_table::unified_table): Comment out MAX_EXPR.
10708         (get_op_handler): Remove check of pointer table.
10709         * range-op.h (class pointer_table): Remove.
10711 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10713         * range-op-mixed.h (operator_min): Remove final.
10714         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
10715         (class hybrid_min_operator): New.
10716         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
10717         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
10719 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10721         * range-op-mixed.h (operator_bitwise_or): Remove final.
10722         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
10723         (class hybrid_or_operator): New.
10724         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
10725         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
10727 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10729         * range-op-mixed.h (operator_bitwise_and): Remove final.
10730         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
10731         (class hybrid_and_operator): New.
10732         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
10733         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
10735 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10737         * Makefile.in (OBJS): Add range-op-ptr.o.
10738         * range-op-mixed.h (update_known_bitmask): Move prototype here.
10739         (minus_op1_op2_relation_effect): Move prototype here.
10740         (wi_includes_zero_p): Move function to here.
10741         (wi_zero_p): Ditto.
10742         * range-op.cc (update_known_bitmask): Remove static.
10743         (wi_includes_zero_p): Move to header.
10744         (wi_zero_p): Move to header.
10745         (minus_op1_op2_relation_effect): Remove static.
10746         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
10747         (pointer_plus_operator): Ditto.
10748         (pointer_min_max_operator): Ditto.
10749         (pointer_and_operator): Ditto.
10750         (pointer_or_operator): Ditto.
10751         (pointer_table): Ditto.
10752         (range_op_table::initialize_pointer_ops): Ditto.
10753         * range-op-ptr.cc: New.
10755 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10757         * range-op-mixed.h (class operator_max): Move from...
10758         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
10759         (get_op_handler): Remove the integral table.
10760         (class operator_max): Move from here.
10761         (integral_table::integral_table): Delete.
10762         * range-op.h (class integral_table): Delete.
10764 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10766         * range-op-mixed.h (class operator_min): Move from...
10767         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
10768         (class operator_min): Move from here.
10769         (integral_table::integral_table): Remove MIN_EXPR.
10771 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10773         * range-op-mixed.h (class operator_bitwise_or): Move from...
10774         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
10775         (class operator_bitwise_or): Move from here.
10776         (integral_table::integral_table): Remove BIT_IOR_EXPR.
10778 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10780         * range-op-mixed.h (class operator_bitwise_and): Move from...
10781         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
10782         (get_op_handler): Check for a pointer table entry first.
10783         (class operator_bitwise_and): Move from here.
10784         (integral_table::integral_table): Remove BIT_AND_EXPR.
10786 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10788         * range-op-mixed.h (class operator_bitwise_xor): Move from...
10789         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
10790         (class operator_bitwise_xor): Move from here.
10791         (integral_table::integral_table): Remove BIT_XOR_EXPR.
10792         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
10794 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10796         * range-op-mixed.h (class operator_bitwise_not): Move from...
10797         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
10798         (class operator_bitwise_not): Move from here.
10799         (integral_table::integral_table): Remove BIT_NOT_EXPR.
10800         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
10802 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
10804         * range-op-mixed.h (class operator_addr_expr): Move from...
10805         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
10806         (class operator_addr_expr): Move from here.
10807         (integral_table::integral_table): Remove ADDR_EXPR.
10808         (pointer_table::pointer_table): Remove ADDR_EXPR.
10810 2023-06-12  Pan Li  <pan2.li@intel.com>
10812         * config/riscv/riscv-vector-builtins-types.def
10813         (vfloat16m1_t): Add type to lmul1 ops.
10814         (vfloat16m2_t): Likewise.
10815         (vfloat16m4_t): Likewise.
10817 2023-06-12  Richard Biener  <rguenther@suse.de>
10819         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
10820         .MASK_STORE and friend set the size of the access to
10821         unknown.
10823 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
10825         * config.in: Regenerate.
10826         * configure: Regenerate.
10827         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
10829 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10831         * config/riscv/autovec-opt.md
10832         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
10833         (*<any_shiftrt:optab>trunc<mode>): Ditto.
10834         * config/riscv/autovec.md (<optab><mode>3): Change to
10835         define_insn_and_split.
10836         (v<optab><mode>3): Ditto.
10837         (trunc<mode><v_double_trunc>2): Ditto.
10839 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10841         * simplify-rtx.cc (simplify_const_unary_operation):
10842         Handle US_TRUNCATE, SS_TRUNCATE.
10844 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
10846         PR modula2/109952
10847         * doc/gm2.texi (Standard procedures): Fix Next link.
10849 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
10851         * config.in: Regenerate.
10853 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10855         PR middle-end/110142
10856         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
10857         subtype to vect_widened_op_tree and remove subtype parameter, also
10858         remove superfluous overloaded function definition.
10859         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
10860         to call to vect_recog_widen_op_pattern.
10861         (vect_recog_widen_minus_pattern): Likewise.
10863 2023-06-12  liuhongt  <hongtao.liu@intel.com>
10865         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
10866         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
10867         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
10868         (vec_unpacks_lo_<mode>): Ditto.
10869         (vec_unpacks_hi_<mode>): Ditto.
10870         (sse_movlhps_<mode>): New define_insn.
10871         (ssse3_palignr<mode>_perm): Extend to V_128H.
10872         (V_128H): New mode iterator.
10873         (ssepackPHmode): New mode attribute.
10874         (vunpck_extract_mode): Ditto.
10875         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
10876         (vpckfloat_temp_mode): Ditto.
10877         (vpckfloat_op_mode): Ditto.
10878         (vunpckfixt_mode): Extend to VxHF.
10879         (vunpckfixt_model): Ditto.
10880         (vunpckfixt_extract_mode): Ditto.
10882 2023-06-12  Richard Biener  <rguenther@suse.de>
10884         PR middle-end/110200
10885         * genmatch.cc (expr::gen_transform): Put braces around
10886         the if arm for the (convert ...) short-cut.
10888 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
10890         PR target/109932
10891         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
10892         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
10894 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
10896         PR target/110011
10897         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
10898         floating constant itself for real_to_target call.
10900 2023-06-12  Pan Li  <pan2.li@intel.com>
10902         * config/riscv/riscv-vector-builtins-types.def
10903         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
10904         (vfloat16mf2_t): Ditto.
10905         (vfloat16m1_t): Ditto.
10906         (vfloat16m2_t): Ditto.
10907         (vfloat16m4_t): Ditto.
10909 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
10911         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
10912         Do not require a stack frame when debugging is enabled for AIX.
10914 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
10916         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
10917         Remove attribute values.
10918         (insv_notbit): New post-reload insn.
10919         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
10920         (*insv.not-bit.0_split, *insv.not-bit.7_split)
10921         (*insv.xor-extract_split): Split to insv_notbit.
10922         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
10923         (*insv.xor-extract): Remove post-reload insns.
10924         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
10925         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
10926         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
10927         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
10929 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
10931         PR target/109907
10932         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
10933         (MSB, SIZE): New mode attributes.
10934         (any_shift): New code iterator.
10935         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
10936         (*lshr<mode>3_const_split): Add constraint alternative for
10937         the case of shift-offset = MSB.  Ditch "length" attribute.
10938         (extzv<mode): New. replaces extzv.  Adjust following patterns.
10939         Use avr_out_extr, avr_out_extr_not to print asm.
10940         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
10941         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
10942         * config/avr/constraints.md (C15, C23, C31, Yil): New
10943         * config/avr/predicates.md (reg_or_low_io_operand)
10944         (const7_operand, reg_or_low_io_operand)
10945         (const15_operand, const_0_to_15_operand)
10946         (const23_operand, const_0_to_23_operand)
10947         (const31_operand, const_0_to_31_operand): New.
10948         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
10949         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
10950         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
10951         MSB case to new insn constraint "r" for operands[1].
10952         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
10953         Handle these cases.
10954         (avr_rtx_costs_1): Adjust cost for a new pattern.
10956 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10958         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
10959         (vector_insn_info::parse_insn): Add rtx_insn parse.
10960         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
10961         (get_first_vsetvl): New function.
10962         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
10963         (pass_vsetvl::cleanup_insns): Remove it.
10964         (pass_vsetvl::ssa_post_optimization): New function.
10965         (has_no_uses): Ditto.
10966         (pass_vsetvl::propagate_avl): Remove it.
10967         (pass_vsetvl::df_post_optimization): New function.
10968         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
10969         * config/riscv/riscv-vsetvl.h: Adapt declaration.
10971 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
10973         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
10974         (ipcp_vr_lattice::print): Call dump method.
10975         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
10976         Value_Range.
10977         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
10978         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
10979         range.
10980         (initialize_node_lattices): Pass type when appropriate.
10981         (ipa_vr_operation_and_type_effects): Make type agnostic.
10982         (ipa_value_range_from_jfunc): Same.
10983         (propagate_vr_across_jump_function): Same.
10984         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
10985         (evaluate_properties_for_edge): Same.
10986         * ipa-prop.cc (ipa_vr::get_vrange): Same.
10987         (ipcp_update_vr): Same.
10988         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
10989         (ipa_range_set_and_normalize): Same.
10991 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
10993         PR target/109650
10994         PR target/92729
10995         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
10996         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
10997         (avr_pass_data_ifelse): New pass_data for it.
10998         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
10999         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
11000         (avr_out_cmp_ext): New functions.
11001         (compare_condtition): Make sure REG_CC dies in the branch insn.
11002         (avr_rtx_costs_1): Add computation of cbranch costs.
11003         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
11004         [ADJUST_LEN_CMP_SEXT]Handle them.
11005         (TARGET_CANONICALIZE_COMPARISON): New define.
11006         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
11007         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
11008         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
11009         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
11010         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
11011         (avr_out_cmp_zext): New Protos
11012         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
11013         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
11014         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
11015         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
11016         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
11017         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
11018         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
11019         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
11020         (adjust_len) [add_set_ZN, cmp_zext]: New.
11021         (QIPSI): New mode iterator.
11022         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
11023         (gelt): New code iterator.
11024         (gelt_eqne): New code attribute.
11025         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
11026         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
11027         (*cmpqi_sign_extend): Remove insns.
11028         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
11029         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
11030         * config/avr/predicates.md (scratch_or_d_register_operand): New.
11031         * config/avr/constraints.md (Yxx): New constraint.
11033 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11035         * config/riscv/autovec.md (select_vl<mode>): New pattern.
11036         * config/riscv/riscv-protos.h (expand_select_vl): New function.
11037         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
11039 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11041         * range-op-float.cc (foperator_mult_div_base): Delete.
11042         (foperator_mult_div_base::find_range): Make static local function.
11043         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
11044         (operator_mult::op1_range): Rename from foperator_mult.
11045         (operator_mult::op2_range): Ditto.
11046         (operator_mult::rv_fold): Ditto.
11047         (float_table::float_table): Remove MULT_EXPR.
11048         (class foperator_div): Inherit from range_operator.
11049         (float_table::float_table): Delete.
11050         * range-op-mixed.h (class operator_mult): Combined from integer
11051         and float files.
11052         * range-op.cc (float_tree_table): Delete.
11053         (op_mult): New object.
11054         (unified_table::unified_table): Add MULT_EXPR.
11055         (get_op_handler): Do not check float table any longer.
11056         (class cross_product_operator): Move to range-op-mixed.h.
11057         (class operator_mult): Move to range-op-mixed.h.
11058         (integral_table::integral_table): Remove MULT_EXPR.
11059         (pointer_table::pointer_table): Remove MULT_EXPR.
11060         * range-op.h (float_table): Remove.
11062 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11064         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
11065         to range-op-mixed.h
11066         (operator_negate::fold_range): Rename from foperator_negate.
11067         (operator_negate::op1_range): Ditto.
11068         (float_table::float_table): Remove NEGATE_EXPR.
11069         * range-op-mixed.h (class operator_negate): Combined from integer
11070         and float files.
11071         * range-op.cc (op_negate): New object.
11072         (unified_table::unified_table): Add NEGATE_EXPR.
11073         (class operator_negate): Move to range-op-mixed.h.
11074         (integral_table::integral_table): Remove NEGATE_EXPR.
11075         (pointer_table::pointer_table): Remove NEGATE_EXPR.
11077 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11079         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
11080         to range-op-mixed.h
11081         (operator_minus::fold_range): Rename from foperator_minus.
11082         (operator_minus::op1_range): Ditto.
11083         (operator_minus::op2_range): Ditto.
11084         (operator_minus::rv_fold): Ditto.
11085         (float_table::float_table): Remove MINUS_EXPR.
11086         * range-op-mixed.h (class operator_minus): Combined from integer
11087         and float files.
11088         * range-op.cc (op_minus): New object.
11089         (unified_table::unified_table): Add MINUS_EXPR.
11090         (class operator_minus): Move to range-op-mixed.h.
11091         (integral_table::integral_table): Remove MINUS_EXPR.
11092         (pointer_table::pointer_table): Remove MINUS_EXPR.
11094 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11096         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
11097         to range-op-mixed.h
11098         (operator_abs::fold_range): Rename from foperator_abs.
11099         (operator_abs::op1_range): Ditto.
11100         (float_table::float_table): Remove ABS_EXPR.
11101         * range-op-mixed.h (class operator_abs): Combined from integer
11102         and float files.
11103         * range-op.cc (op_abs): New object.
11104         (unified_table::unified_table): Add ABS_EXPR.
11105         (class operator_abs): Move to range-op-mixed.h.
11106         (integral_table::integral_table): Remove ABS_EXPR.
11107         (pointer_table::pointer_table): Remove ABS_EXPR.
11109 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11111         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
11112         to range-op-mixed.h
11113         (operator_plus::fold_range): Rename from foperator_plus.
11114         (operator_plus::op1_range): Ditto.
11115         (operator_plus::op2_range): Ditto.
11116         (operator_plus::rv_fold): Ditto.
11117         (float_table::float_table): Remove PLUS_EXPR.
11118         * range-op-mixed.h (class operator_plus): Combined from integer
11119         and float files.
11120         * range-op.cc (op_plus): New object.
11121         (unified_table::unified_table): Add PLUS_EXPR.
11122         (class operator_plus): Move to range-op-mixed.h.
11123         (integral_table::integral_table): Remove PLUS_EXPR.
11124         (pointer_table::pointer_table): Remove PLUS_EXPR.
11126 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11128         * range-op-mixed.h (class operator_cast): Combined from integer
11129         and float files.
11130         * range-op.cc (op_cast): New object.
11131         (unified_table::unified_table): Add op_cast
11132         (class operator_cast): Move to range-op-mixed.h.
11133         (integral_table::integral_table): Remove op_cast
11134         (pointer_table::pointer_table): Remove op_cast.
11136 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11138         * range-op-float.cc (operator_cst::fold_range): New.
11139         * range-op-mixed.h (class operator_cst): Move from integer file.
11140         * range-op.cc (op_cst): New object.
11141         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
11142         (class operator_cst): Move to range-op-mixed.h.
11143         (integral_table::integral_table): Remove op_cst.
11144         (pointer_table::pointer_table): Remove op_cst.
11146 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11148         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
11149         to range-op-mixed.h
11150         (operator_identity::fold_range): Rename from foperator_identity.
11151         (operator_identity::op1_range): Ditto.
11152         (float_table::float_table): Remove fop_identity.
11153         * range-op-mixed.h (class operator_identity): Combined from integer
11154         and float files.
11155         * range-op.cc (op_identity): New object.
11156         (unified_table::unified_table): Add op_identity.
11157         (class operator_identity): Move to range-op-mixed.h.
11158         (integral_table::integral_table): Remove identity.
11159         (pointer_table::pointer_table): Remove identity.
11161 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11163         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
11164         to range-op-mixed.h
11165         (operator_ge::fold_range): Rename from foperator_ge.
11166         (operator_ge::op1_range): Ditto.
11167         (float_table::float_table): Remove GE_EXPR.
11168         * range-op-mixed.h (class operator_ge): Combined from integer
11169         and float files.
11170         * range-op.cc (op_ge): New object.
11171         (unified_table::unified_table): Add GE_EXPR.
11172         (class operator_ge): Move to range-op-mixed.h.
11173         (ge_op1_op2_relation): Fold into
11174         operator_ge::op1_op2_relation.
11175         (integral_table::integral_table): Remove GE_EXPR.
11176         (pointer_table::pointer_table): Remove GE_EXPR.
11177         * range-op.h (ge_op1_op2_relation): Delete.
11179 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11181         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
11182         to range-op-mixed.h
11183         (operator_gt::fold_range): Rename from foperator_gt.
11184         (operator_gt::op1_range): Ditto.
11185         (float_table::float_table): Remove GT_EXPR.
11186         * range-op-mixed.h (class operator_gt): Combined from integer
11187         and float files.
11188         * range-op.cc (op_gt): New object.
11189         (unified_table::unified_table): Add GT_EXPR.
11190         (class operator_gt): Move to range-op-mixed.h.
11191         (gt_op1_op2_relation): Fold into
11192         operator_gt::op1_op2_relation.
11193         (integral_table::integral_table): Remove GT_EXPR.
11194         (pointer_table::pointer_table): Remove GT_EXPR.
11195         * range-op.h (gt_op1_op2_relation): Delete.
11197 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11199         * range-op-float.cc (foperator_le): Remove.  Move prototypes
11200         to range-op-mixed.h
11201         (operator_le::fold_range): Rename from foperator_le.
11202         (operator_le::op1_range): Ditto.
11203         (float_table::float_table): Remove LE_EXPR.
11204         * range-op-mixed.h (class operator_le): Combined from integer
11205         and float files.
11206         * range-op.cc (op_le): New object.
11207         (unified_table::unified_table): Add LE_EXPR.
11208         (class operator_le): Move to range-op-mixed.h.
11209         (le_op1_op2_relation): Fold into
11210         operator_le::op1_op2_relation.
11211         (integral_table::integral_table): Remove LE_EXPR.
11212         (pointer_table::pointer_table): Remove LE_EXPR.
11213         * range-op.h (le_op1_op2_relation): Delete.
11215 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11217         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
11218         to range-op-mixed.h
11219         (operator_lt::fold_range): Rename from foperator_lt.
11220         (operator_lt::op1_range): Ditto.
11221         (float_table::float_table): Remove LT_EXPR.
11222         * range-op-mixed.h (class operator_lt): Combined from integer
11223         and float files.
11224         * range-op.cc (op_lt): New object.
11225         (unified_table::unified_table): Add LT_EXPR.
11226         (class operator_lt): Move to range-op-mixed.h.
11227         (lt_op1_op2_relation): Fold into
11228         operator_lt::op1_op2_relation.
11229         (integral_table::integral_table): Remove LT_EXPR.
11230         (pointer_table::pointer_table): Remove LT_EXPR.
11231         * range-op.h (lt_op1_op2_relation): Delete.
11233 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11235         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
11236         to range-op-mixed.h
11237         (operator_equal::fold_range): Rename from foperator_not_equal.
11238         (operator_equal::op1_range): Ditto.
11239         (float_table::float_table): Remove NE_EXPR.
11240         * range-op-mixed.h (class operator_not_equal): Combined from integer
11241         and float files.
11242         * range-op.cc (op_equal): New object.
11243         (unified_table::unified_table): Add NE_EXPR.
11244         (class operator_not_equal): Move to range-op-mixed.h.
11245         (not_equal_op1_op2_relation): Fold into
11246         operator_not_equal::op1_op2_relation.
11247         (integral_table::integral_table): Remove NE_EXPR.
11248         (pointer_table::pointer_table): Remove NE_EXPR.
11249         * range-op.h (not_equal_op1_op2_relation): Delete.
11251 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11253         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
11254         to range-op-mixed.h
11255         (operator_equal::fold_range): Rename from foperator_equal.
11256         (operator_equal::op1_range): Ditto.
11257         (float_table::float_table): Remove EQ_EXPR.
11258         * range-op-mixed.h (class operator_equal): Combined from integer
11259         and float files.
11260         * range-op.cc (op_equal): New object.
11261         (unified_table::unified_table): Add EQ_EXPR.
11262         (class operator_equal): Move to range-op-mixed.h.
11263         (equal_op1_op2_relation): Fold into
11264         operator_equal::op1_op2_relation.
11265         (integral_table::integral_table): Remove EQ_EXPR.
11266         (pointer_table::pointer_table): Remove EQ_EXPR.
11267         * range-op.h (equal_op1_op2_relation): Delete.
11269 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
11271         * range-op-float.cc (class float_table): Move to header.
11272         (float_table::float_table): Move float only operators to...
11273         (range_op_table::initialize_float_ops): Here.
11274         * range-op-mixed.h: New.
11275         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
11276         to top of file.
11277         (float_tree_table): Moved from range-op-float.cc.
11278         (unified_tree_table): New.
11279         (unified_table::unified_table): New.  Call initialize routines.
11280         (get_op_handler): Check unified table first.
11281         (range_op_handler::range_op_handler): Handle no type constructor.
11282         (integral_table::integral_table): Move integral only operators to...
11283         (range_op_table::initialize_integral_ops): Here.
11284         (pointer_table::pointer_table): Move pointer only operators to...
11285         (range_op_table::initialize_pointer_ops): Here.
11286         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
11287         (get_bool_state): Ditto.
11288         (empty_range_varying): Ditto.
11289         (relop_early_resolve): Ditto.
11290         (class range_op_table): Add new init methods for range types.
11291         (class integral_table): Move declaration to here.
11292         (class pointer_table): Move declaration to here.
11293         (class float_table): Move declaration to here.
11295 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
11296             Richard Sandiford <richard.sandiford@arm.com>
11297             Richard Biener  <rguenther@suse.de>
11299         * doc/md.texi: Add SELECT_VL support.
11300         * internal-fn.def (SELECT_VL): Ditto.
11301         * optabs.def (OPTAB_D): Ditto.
11302         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
11303         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
11304         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
11305         (vectorizable_store): Ditto.
11306         (vectorizable_load): Ditto.
11307         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
11309 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
11311         PR ipa/109886
11312         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
11313         type as well.
11315 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
11317         * range-op.cc (range_cast): Move to...
11318         * range-op.h (range_cast): Here and add generic a version.
11320 2023-06-09  Marek Polacek  <polacek@redhat.com>
11322         PR c/39589
11323         PR c++/96868
11324         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
11325         warn about designated initializers in C only.
11327 2023-06-09  Andrew Pinski  <apinski@marvell.com>
11329         PR tree-optimization/97711
11330         PR tree-optimization/110155
11331         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
11332         ((zero_one != 0) ? z <op> y : y): Likewise.
11334 2023-06-09  Andrew Pinski  <apinski@marvell.com>
11336         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
11337         multiply rather than negation/bit_and.
11339 2023-06-09  Andrew Pinski  <apinski@marvell.com>
11341         * match.pd (`X & -Y -> X * Y`): Allow for truncation
11342         and the same type for unsigned types.
11344 2023-06-09  Andrew Pinski  <apinski@marvell.com>
11346         PR tree-optimization/110165
11347         PR tree-optimization/110166
11348         * match.pd (zero_one_valued_p): Don't accept
11349         signed 1-bit integers.
11351 2023-06-09  Richard Biener  <rguenther@suse.de>
11353         * match.pd (two conversions in a row): Use element_precision
11354         to DTRT for VECTOR_TYPE.
11356 2023-06-09  Pan Li  <pan2.li@intel.com>
11358         * config/riscv/riscv.md (enabled): Move to another place, and
11359         add fp_vector_disabled to the cond.
11360         (fp_vector_disabled): New attr defined for disabling fp.
11361         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
11363 2023-06-09  Pan Li  <pan2.li@intel.com>
11365         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
11366         literal to int.
11368 2023-06-09  liuhongt  <hongtao.liu@intel.com>
11370         PR target/110108
11371         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
11372         view_convert_expr mask to signed type when folding pblendvb
11373         builtins.
11375 2023-06-09  liuhongt  <hongtao.liu@intel.com>
11377         PR target/110108
11378         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
11379         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
11380         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
11381         TARGET_64BIT.
11382         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
11383         real codename for __builtin_ia32_pabs{b,w,d}.
11385 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
11387         * gimple-range-op.cc
11388         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
11389         (gimple_range_op_handler::maybe_builtin_call): Adjust.
11390         * gimple-range-op.h (operand1, operand2): Use m_operator.
11391         * range-op.cc (integral_table, pointer_table): Relocate.
11392         (get_op_handler): Rename from get_handler and handle all types.
11393         (range_op_handler::range_op_handler): Relocate.
11394         (range_op_handler::set_op_handler): Relocate and adjust.
11395         (range_op_handler::range_op_handler): Relocate.
11396         (dispatch_trio): New.
11397         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
11398         (range_op_handler::dispatch_kind): New.
11399         (range_op_handler::fold_range): Relocate and Use new dispatch value.
11400         (range_op_handler::op1_range): Ditto.
11401         (range_op_handler::op2_range): Ditto.
11402         (range_op_handler::lhs_op1_relation): Ditto.
11403         (range_op_handler::lhs_op2_relation): Ditto.
11404         (range_op_handler::op1_op2_relation): Ditto.
11405         (range_op_handler::set_op_handler): Use m_operator member.
11406         * range-op.h (range_op_handler::operator bool): Use m_operator.
11407         (range_op_handler::dispatch_kind): New.
11408         (range_op_handler::m_valid): Delete.
11409         (range_op_handler::m_int): Delete
11410         (range_op_handler::m_float): Delete
11411         (range_op_handler::m_operator): New.
11412         (range_op_table::operator[]): Relocate from .cc file.
11413         (range_op_table::set): Ditto.
11414         * value-range.h (class vrange): Make range_op_handler a friend.
11416 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
11418         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
11419         (cfn_pass_through_arg1): Adjust using statemenmt.
11420         (cfn_signbit): Change base class, adjust using statement.
11421         (cfn_copysign): Ditto.
11422         (cfn_sqrt): Ditto.
11423         (cfn_sincos): Ditto.
11424         * range-op-float.cc (fold_range): Change class to range_operator.
11425         (rv_fold): Ditto.
11426         (op1_range): Ditto
11427         (op2_range): Ditto
11428         (lhs_op1_relation): Ditto.
11429         (lhs_op2_relation): Ditto.
11430         (op1_op2_relation): Ditto.
11431         (foperator_*): Ditto.
11432         (class float_table): New.  Inherit from range_op_table.
11433         (floating_tree_table) Change to range_op_table pointer.
11434         (class floating_op_table): Delete.
11435         * range-op.cc (operator_equal): Adjust using statement.
11436         (operator_not_equal): Ditto.
11437         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
11438         (operator_minus, operator_cast): Ditto.
11439         (operator_bitwise_and, pointer_plus_operator): Ditto.
11440         (get_float_handle): Change return type.
11441         * range-op.h (range_operator_float): Delete.  Relocate all methods
11442         into class range_operator.
11443         (range_op_handler::m_float): Change type to range_operator.
11444         (floating_op_table): Delete.
11445         (floating_tree_table): Change type.
11447 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
11449         * range-op.cc (range_operator::fold_range): Call virtual routine.
11450         (range_operator::update_bitmask): New.
11451         (operator_equal::update_bitmask): New.
11452         (operator_not_equal::update_bitmask): New.
11453         (operator_lt::update_bitmask): New.
11454         (operator_le::update_bitmask): New.
11455         (operator_gt::update_bitmask): New.
11456         (operator_ge::update_bitmask): New.
11457         (operator_ge::update_bitmask): New.
11458         (operator_plus::update_bitmask): New.
11459         (operator_minus::update_bitmask): New.
11460         (operator_pointer_diff::update_bitmask): New.
11461         (operator_min::update_bitmask): New.
11462         (operator_max::update_bitmask): New.
11463         (operator_mult::update_bitmask): New.
11464         (operator_div:operator_div):New.
11465         (operator_div::update_bitmask): New.
11466         (operator_div::m_code): New member.
11467         (operator_exact_divide::operator_exact_divide): New constructor.
11468         (operator_lshift::update_bitmask): New.
11469         (operator_rshift::update_bitmask): New.
11470         (operator_bitwise_and::update_bitmask): New.
11471         (operator_bitwise_or::update_bitmask): New.
11472         (operator_bitwise_xor::update_bitmask): New.
11473         (operator_trunc_mod::update_bitmask): New.
11474         (op_ident, op_unknown, op_ptr_min_max): New.
11475         (op_nop, op_convert): Delete.
11476         (op_ssa, op_paren, op_obj_type): Delete.
11477         (op_realpart, op_imagpart): Delete.
11478         (op_ptr_min, op_ptr_max): Delete.
11479         (pointer_plus_operator:update_bitmask): New.
11480         (range_op_table::set): Do not use m_code.
11481         (integral_table::integral_table): Adjust to single instances.
11482         * range-op.h (range_operator::range_operator): Delete.
11483         (range_operator::m_code): Delete.
11484         (range_operator::update_bitmask): New.
11486 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
11488         * range-op-float.cc (range_operator_float::fold_range): Return
11489         NAN of the result type.
11491 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
11493         * optabs.cc (expand_ffs): Add forward declaration.
11494         (expand_doubleword_clz): Rename to ...
11495         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
11496         handle also doubleword CTZ and FFS in addition to CLZ.
11497         (expand_unop): Adjust caller.  Also call it for doubleword
11498         ctz_optab and ffs_optab.
11500 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
11502         PR target/110152
11503         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
11504         n_words == 2 recurse with mmx_ok as first argument rather than false.
11506 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
11508         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
11509         avoid sign extension/undefined behaviour when setting each bit.
11511 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
11512             Uros Bizjak  <ubizjak@gmail.com>
11514         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
11515         Use new x86_stc instruction when the carry flag must be set.
11516         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
11517         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
11518         * config/i386/i386.h (TARGET_SLOW_STC): New define.
11519         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
11520         (x86_stc): New define_insn.
11521         (define_peephole2): Convert x86_stc into alternate implementation
11522         on pentium4 without -Os when a QImode register is available.
11523         (*x86_cmc): New define_insn.
11524         (define_peephole2): Convert *x86_cmc into alternate implementation
11525         on pentium4 without -Os when a QImode register is available.
11526         (*setccc): New define_insn_and_split for a no-op CCCmode move.
11527         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
11528         recognize (and eliminate) the carry flag being copied to itself.
11529         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
11530         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
11532 2023-06-07  Andrew Pinski  <apinski@marvell.com>
11534         * match.pd: Fix comment for the
11535         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
11537 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
11538             Jeff Law   <jlaw@ventanamicro.com>
11540         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
11541         (rotrsi3_sext): Expose generator.
11542         (rotlsi3 pattern): Hide generator.
11543         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
11544         declaration.
11545         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
11546         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
11547         (mulsi3, <optab>si3): Likewise.
11548         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
11549         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
11550         (<u>mulsidi3): Likewise.
11551         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
11552         (mulsi3_extended, <optab>si3_extended): Likewise.
11553         (splitter for shadd feeding divison): Update RTL pattern to account
11554         for changes in how 32 bit ops are expanded for TARGET_64BIT.
11555         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
11557 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
11559         PR target/109725
11560         * config/riscv/riscv.cc (riscv_print_operand): Calculate
11561         memmodel only when it is valid.
11563 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
11565         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
11566         for constant element of a vector.
11568 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
11570         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
11571         instead compare tree_nonzero_bits <= 1U rather than just == 1.
11573 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
11575         PR target/110132
11576         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
11577         New. Use it ...
11578         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
11579         names for builtins.
11580         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
11581         setup if in_lto_p, just like we do for SVE.
11582         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
11583         (__arm_st64b): Delete.
11584         (__arm_st64bv): Delete.
11585         (__arm_st64bv0): Delete.
11587 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
11589         PR target/110100
11590         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
11591         Use input operand for the destination address.
11592         * config/aarch64/aarch64.md (st64b): Fix constraint on address
11593         operand.
11595 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
11597         PR target/110100
11598         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
11599         Replace eight consecutive spaces with tabs.
11600         (aarch64_init_ls64_builtins): Likewise.
11601         (aarch64_expand_builtin_ls64): Likewise.
11602         * config/aarch64/aarch64.md (ld64b): Likewise.
11603         (st64b): Likewise.
11604         (st64bv): Likewise
11605         (st64bv0): Likewise.
11607 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
11609         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
11610         offset table pseudo to a general reg subset.
11612 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11614         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
11615         Rename to...
11616         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
11617         with RTL codes.
11618         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
11619         (aarch64_sqxtun2<mode>_le): Likewise.
11620         (aarch64_sqxtun2<mode>_be): Likewise.
11621         (aarch64_sqxtun2<mode>): Adjust for the above.
11622         (aarch64_sqmovun<mode>): New define_expand.
11623         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
11624         (half_mask): New mode attribute.
11625         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
11626         New predicate.
11628 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11630         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
11631         Reimplement as...
11632         (aarch64_addp<mode>_insn): ... This...
11633         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
11634         (aarch64_addp<mode>): New define_expand.
11636 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11638         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
11639         * config/riscv/riscv-v.cc
11640         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
11641         handling.
11642         (rvv_builder::single_step_npatterns_p): New function.
11643         (rvv_builder::npatterns_all_equal_p): Ditto.
11644         (const_vec_all_in_range_p): Support POLY handling.
11645         (gen_const_vector_dup): Ditto.
11646         (emit_vlmax_gather_insn): Add vrgatherei16.
11647         (emit_vlmax_masked_gather_mu_insn): Ditto.
11648         (expand_const_vector): Add VLA SLP const vector support.
11649         (expand_vec_perm): Support POLY.
11650         (struct expand_vec_perm_d): New struct.
11651         (shuffle_generic_patterns): New function.
11652         (expand_vec_perm_const_1): Ditto.
11653         (expand_vec_perm_const): Ditto.
11654         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
11655         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
11657 2023-06-07  Andrew Pinski  <apinski@marvell.com>
11659         PR middle-end/110117
11660         * expr.cc (expand_single_bit_test): Handle
11661         const_int from expand_expr.
11663 2023-06-07  Andrew Pinski  <apinski@marvell.com>
11665         * expr.cc (do_store_flag): Rearrange the
11666         TER code so that it overrides the nonzero bits
11667         info if we had `a & POW2`.
11669 2023-06-07  Andrew Pinski  <apinski@marvell.com>
11671         PR tree-optimization/110134
11672         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
11673         types.
11674         (-A CMP CST -> B CMP (-CST)): Likewise.
11676 2023-06-07  Andrew Pinski  <apinski@marvell.com>
11678         PR tree-optimization/89263
11679         PR tree-optimization/99069
11680         PR tree-optimization/20083
11681         PR tree-optimization/94898
11682         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
11683         one of the operands are constant.
11685 2023-06-07  Andrew Pinski  <apinski@marvell.com>
11687         * match.pd (zero_one_valued_p): Match 0 integer constant
11688         too.
11690 2023-06-07  Pan Li  <pan2.li@intel.com>
11692         * config/riscv/riscv-vector-builtins-types.def
11693         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
11694         (vfloat32m1_t): Ditto.
11695         (vfloat32m2_t): Ditto.
11696         (vfloat32m4_t): Ditto.
11697         (vfloat32m8_t): Ditto.
11698         (vint16mf4_t): Ditto.
11699         (vint16mf2_t): Ditto.
11700         (vint16m1_t): Ditto.
11701         (vint16m2_t): Ditto.
11702         (vint16m4_t): Ditto.
11703         (vint16m8_t): Ditto.
11704         (vuint16mf4_t): Ditto.
11705         (vuint16mf2_t): Ditto.
11706         (vuint16m1_t): Ditto.
11707         (vuint16m2_t): Ditto.
11708         (vuint16m4_t): Ditto.
11709         (vuint16m8_t): Ditto.
11710         (vint32mf2_t): Ditto.
11711         (vint32m1_t): Ditto.
11712         (vint32m2_t): Ditto.
11713         (vint32m4_t): Ditto.
11714         (vint32m8_t): Ditto.
11715         (vuint32mf2_t): Ditto.
11716         (vuint32m1_t): Ditto.
11717         (vuint32m2_t): Ditto.
11718         (vuint32m4_t): Ditto.
11719         (vuint32m8_t): Ditto.
11721 2023-06-07  Jason Merrill  <jason@redhat.com>
11723         PR c++/58487
11724         * doc/invoke.texi: Document it.
11726 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
11728         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
11729         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
11730         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
11731         NOT (BITREVERSE x) as BITREVERSE (NOT x).
11732         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
11733         Optimize PARITY (BITREVERSE x) as PARITY x.
11734         Optimize BITREVERSE (BITREVERSE x) as x.
11735         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
11736         BITREVERSE of a constant integer at compile-time.
11737         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
11738         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
11739         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
11740         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
11741         Optimize COPYSIGN (x, ABS y) as ABS x.
11742         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
11743         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
11744         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
11745         arguments at compile-time.
11747 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
11749         * rtl.h (function_invariant_p): Change return type from int to bool.
11750         * reload1.cc (function_invariant_p): Change return type from
11751         int to bool and adjust function body accordingly.
11753 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11755         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
11756         (*single_<optab>mult_plus<mode>): Ditto.
11757         (*double_<optab>mult_plus<mode>): Ditto.
11758         (*sign_zero_extend_fma): Ditto.
11759         (*zero_sign_extend_fma): Ditto.
11760         * config/riscv/riscv-protos.h (enum insn_type): New enum.
11762 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
11763             Tobias Burnus  <tobias@codesourcery.com>
11765         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
11766         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
11767         set.
11768         (omp_get_attachment): Handle map clauses with 'present' modifier.
11769         (omp_group_base): Likewise.
11770         (gimplify_scan_omp_clauses): Reorder present maps to come first.
11771         Set GOVD flags for present defaultmaps.
11772         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
11773         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
11774         clauses.
11775         (lower_omp_target): Handle map clauses with 'present' modifier.
11776         Handle 'to' and 'from' clauses with 'present'.
11777         * tree-core.h (enum omp_clause_defaultmap_kind): Add
11778         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
11779         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
11780         'from' clauses with 'present' modifier.  Handle present defaultmap.
11781         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
11783 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
11785         * config/rs6000/genfusion.pl: Delete some dead code.
11787 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
11789         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
11790         split out from...
11791         (gen_ld_cmpi_p10): ... this.
11793 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
11795         PR target/106907
11796         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
11797         duplicate expression.
11799 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11801         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
11802         Handle unsigned reduc_plus_scal_ builtins.
11803         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
11804         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
11805         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
11806         __builtin_aarch64_reduc_plus_scal_v2di.
11807         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
11809 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11811         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
11812         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
11813         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
11815 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11817         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
11818         (aarch64_shrn<mode>_insn_be): Delete.
11819         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
11820         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
11821         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
11822         (aarch64_rshrn<mode>_insn_le): Delete.
11823         (aarch64_rshrn<mode>_insn_be): Delete.
11824         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
11825         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
11827 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11829         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
11830         Define prototype.
11831         (aarch64_pars_overlap_p): Likewise.
11832         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
11833         Express in terms of UNSPEC_ADDV.
11834         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
11835         (*aarch64_<su>addlv<mode>_reduction): Define.
11836         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
11837         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
11838         (aarch64_pars_overlap_p): Likewise.
11839         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
11840         (VQUADW): New mode attribute.
11841         (VWIDE2X_S): Likewise.
11842         (USADDLV): Delete.
11843         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
11844         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
11846 2023-06-06  Richard Biener  <rguenther@suse.de>
11848         PR middle-end/110055
11849         * gimplify.cc (gimplify_target_expr): Do not emit
11850         CLOBBERs for variables which have static storage duration
11851         after gimplifying their initializers.
11853 2023-06-06  Richard Biener  <rguenther@suse.de>
11855         PR tree-optimization/109143
11856         * tree-ssa-structalias.cc (solution_set_expand): Avoid
11857         one bitmap iteration and optimize bit range setting.
11859 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
11861         PR bootstrap/110120
11862         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
11863         XVECEXP, not XEXP, to access first item of a PARALLEL.
11865 2023-06-06  Pan Li  <pan2.li@intel.com>
11867         * config/riscv/riscv-vector-builtins-types.def
11868         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
11869         (vfloat16mf2_t): Likewise.
11870         (vfloat16m1_t): Likewise.
11871         (vfloat16m2_t): Likewise.
11872         (vfloat16m4_t): Likewise.
11873         (vfloat16m8_t): Likewise.
11874         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
11875         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
11877 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
11879         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
11880         for cfi reg/mem machmode
11881         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
11883 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
11885         * config/riscv/vector-iterators.md:
11886         Fix 'REQUIREMENT' for machine_mode 'MODE'.
11887         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
11888         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
11889         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
11891 2023-06-06  Pan Li  <pan2.li@intel.com>
11893         * config/riscv/vector-iterators.md: Fix typo in mode attr.
11895 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
11896             Joel Hutton  <joel.hutton@arm.com>
11898         * doc/generic.texi: Remove old tree codes.
11899         * expr.cc (expand_expr_real_2): Remove old tree code cases.
11900         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
11901         * optabs-tree.cc (optab_for_tree_code): Likewise.
11902         (supportable_half_widening_operation): Likewise.
11903         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
11904         * tree-inline.cc (estimate_operator_cost): Likewise.
11905         (op_symbol_code): Likewise.
11906         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
11907         (vect_analyze_data_ref_accesses): Likewise.
11908         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
11909         * cfgexpand.cc (expand_debug_expr): Likewise.
11910         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
11911         (supportable_widening_operation): Likewise.
11912         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
11913         Likewise.
11914         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
11915         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
11916         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
11917         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
11918         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
11919         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
11920         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
11921         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
11923 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
11924             Joel Hutton  <joel.hutton@arm.com>
11925             Tamar Christina  <tamar.christina@arm.com>
11927         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
11928         this ...
11929         (vec_widen_<su>add_lo_<mode>): ... to this.
11930         (vec_widen_<su>addl_hi_<mode>): Rename this ...
11931         (vec_widen_<su>add_hi_<mode>): ... to this.
11932         (vec_widen_<su>subl_lo_<mode>): Rename this ...
11933         (vec_widen_<su>sub_lo_<mode>): ... to this.
11934         (vec_widen_<su>subl_hi_<mode>): Rename this ...
11935         (vec_widen_<su>sub_hi_<mode>): ...to this.
11936         * doc/generic.texi: Document new IFN codes.
11937         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
11938         (commutative_binary_fn_p): Add widen_plus fn's.
11939         (widening_fn_p): New function.
11940         (narrowing_fn_p): New function.
11941         (direct_internal_fn_optab): Change visibility.
11942         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
11943         internal_fn that expands into multiple internal_fns for widening.
11944         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
11945         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
11946         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
11947         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
11948         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
11949         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
11950         (lookup_hilo_internal_fn): Likewise.
11951         (widening_fn_p): Likewise.
11952         (Narrowing_fn_p): Likewise.
11953         * optabs.cc (commutative_optab_p): Add widening plus optabs.
11954         * optabs.def (OPTAB_D): Define widen add, sub optabs.
11955         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
11956         patterns with a hi/lo or even/odd split.
11957         (vect_recog_sad_pattern): Refactor to use new IFN codes.
11958         (vect_recog_widen_plus_pattern): Likewise.
11959         (vect_recog_widen_minus_pattern): Likewise.
11960         (vect_recog_average_pattern): Likewise.
11961         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
11962         _HILO IFNs.
11963         (supportable_widening_operation): Likewise.
11964         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
11966 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
11967             Joel Hutton  <joel.hutton@arm.com>
11969         * tree-vect-patterns.cc: Add include for gimple-iterator.
11970         (vect_recog_widen_op_pattern): Refactor to use code_helper.
11971         (vect_gimple_build): New function.
11972         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
11973         code_helper.
11974         (vectorizable_call): Likewise.
11975         (vect_gen_widened_results_half): Likewise.
11976         (vect_create_vectorized_demotion_stmts): Likewise.
11977         (vect_create_vectorized_promotion_stmts): Likewise.
11978         (vect_create_half_widening_stmts): Likewise.
11979         (vectorizable_conversion): Likewise.
11980         (supportable_widening_operation): Likewise.
11981         (supportable_narrowing_operation): Likewise.
11982         * tree-vectorizer.h (supportable_widening_operation): Change
11983         prototype to use code_helper.
11984         (supportable_narrowing_operation): Likewise.
11985         (vect_gimple_build): New function prototype.
11986         * tree.h (code_helper::safe_as_tree_code): New function.
11987         (code_helper::safe_as_fn_code): New function.
11989 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
11991         * wide-int.cc (wi::bitreverse_large): New function implementing
11992         bit reversal of an integer.
11993         * wide-int.h (wi::bitreverse): New (template) function prototype.
11994         (bitreverse_large): Prototype helper function/implementation.
11995         (wi::bitreverse): New template wrapper around bitreverse_large.
11997 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
11999         * rtl.h (print_rtl_single): Change return type from int to void.
12000         (print_rtl_single_with_indent): Ditto.
12001         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
12002         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
12003         (rtx_writer::print_rtx_operand_code_0): Ditto.
12004         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
12005         (rtx_writer::print_rtx_operand_code_i): Ditto.
12006         (rtx_writer::print_rtx_operand_code_u): Ditto.
12007         (rtx_writer::print_rtx_operand): Ditto.
12008         (rtx_writer::print_rtx): Ditto.
12009         (rtx_writer::finish_directive): Ditto.
12010         (print_rtl_single): Change return type from int to void
12011         and adjust function body accordingly.
12012         (rtx_writer::print_rtl_single_with_indent): Ditto.
12014 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
12016         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
12017         (reg_class_subset_p): Ditto.
12018         * reginfo.cc (reg_classes_intersect_p): Ditto.
12019         (reg_class_subset_p): Ditto.
12021 2023-06-05  Pan Li  <pan2.li@intel.com>
12023         * config/riscv/riscv-vector-builtins-types.def
12024         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
12025         (vfloat32m1_t): Ditto.
12026         (vfloat32m2_t): Ditto.
12027         (vfloat32m4_t): Ditto.
12028         (vfloat32m8_t): Ditto.
12029         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
12030         (vint16mf2_t): Ditto.
12031         (vint16m1_t): Ditto.
12032         (vint16m2_t): Ditto.
12033         (vint16m4_t): Ditto.
12034         (vint16m8_t): Ditto.
12035         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
12036         (vuint16mf2_t): Ditto.
12037         (vuint16m1_t): Ditto.
12038         (vuint16m2_t): Ditto.
12039         (vuint16m4_t): Ditto.
12040         (vuint16m8_t): Ditto.
12041         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
12042         (vint32m1_t): Ditto.
12043         (vint32m2_t): Ditto.
12044         (vint32m4_t): Ditto.
12045         (vint32m8_t): Ditto.
12046         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
12047         (vuint32m1_t): Ditto.
12048         (vuint32m2_t): Ditto.
12049         (vuint32m4_t): Ditto.
12050         (vuint32m8_t): Ditto.
12051         * config/riscv/vector-iterators.md: Add FP=16 support for V,
12052         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
12054 2023-06-05  Andrew Pinski  <apinski@marvell.com>
12056         PR bootstrap/110085
12057         * Makefile.in (clean): Remove the removing of
12058         MULTILIB_DIR/MULTILIB_OPTIONS directories.
12060 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
12062         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
12063         prototype.
12064         * config/mips/mips.cc (speculation_barrier_libfunc): New static
12065         variable.
12066         (mips_init_libfuncs): Initialize it.
12067         (mips_emit_speculation_barrier): New function.
12068         * config/mips/mips.md (speculation_barrier): Call
12069         mips_emit_speculation_barrier.
12071 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12073         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
12074         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
12075         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
12076         (rvv_builder::get_merged_repeating_sequence): Ditto.
12077         (rvv_builder::get_merge_scalar_mask): Ditto.
12078         (emit_scalar_move_insn): Ditto.
12079         (emit_vlmax_integer_move_insn): Ditto.
12080         (emit_nonvlmax_integer_move_insn): Ditto.
12081         (emit_vlmax_gather_insn): Ditto.
12082         (emit_vlmax_masked_gather_mu_insn): Ditto.
12083         (get_repeating_sequence_dup_machine_mode): Ditto.
12085 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12087         * config/riscv/autovec.md: Split arguments.
12088         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
12089         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
12091 2023-06-04  Andrew Pinski  <apinski@marvell.com>
12093         * expr.cc (do_store_flag): Improve for single bit testing
12094         not against zero but against that single bit.
12096 2023-06-04  Andrew Pinski  <apinski@marvell.com>
12098         * expr.cc (do_store_flag): Extend the one bit checking case
12099         to handle the case where we don't have an and but rather still
12100         one bit is known to be non-zero.
12102 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
12104         * config/h8300/constraints.md (Zz): Make this a normal
12105         constraint.
12106         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
12107         * config/h8300/logical.md (H8/SX bit patterns): Remove.
12109 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
12111         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
12112         New insn_and_split patterns.
12114 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12116         PR target/110109
12117         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
12118         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
12119         (@vlmul_extx4<mode>): Ditto.
12120         (@vlmul_extx8<mode>): Ditto.
12121         (@vlmul_extx16<mode>): Ditto.
12122         (@vlmul_extx32<mode>): Ditto.
12123         (@vlmul_extx64<mode>): Ditto.
12124         (*vlmul_extx2<mode>): Ditto.
12125         (*vlmul_extx4<mode>): Ditto.
12126         (*vlmul_extx8<mode>): Ditto.
12127         (*vlmul_extx16<mode>): Ditto.
12128         (*vlmul_extx32<mode>): Ditto.
12129         (*vlmul_extx64<mode>): Ditto.
12131 2023-06-04  Pan Li  <pan2.li@intel.com>
12133         * config/riscv/riscv-vector-builtins-types.def
12134         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
12135         (vfloat32m1_t): Likewise.
12136         (vfloat32m2_t): Likewise.
12137         (vfloat32m4_t): Likewise.
12138         (vfloat32m8_t): Likewise.
12139         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
12140         * config/riscv/vector-iterators.md: Add single to half machine
12141         mode conversion.
12143 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12145         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
12146         (*n<optab><mode>): Ditto.
12147         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
12148         (*n<optab><mode>): Ditto.
12149         * config/riscv/vector.md: Ditto.
12151 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
12153         PR target/110083
12154         * config/i386/i386-features.cc (scalar_chain::convert_compare):
12155         Update or delete REG_EQUAL notes, converting CONST_INT and
12156         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
12158 2023-06-04  Jason Merrill  <jason@redhat.com>
12160         PR c++/97720
12161         * tree-eh.cc (lower_resx): Pass the exception pointer to the
12162         failure_decl.
12163         * except.h: Tweak comment.
12165 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
12167         * postreload.cc (move2add_use_add2_insn): Handle
12168         trivial single_sets.  Rename variable PAT to SET.
12169         (move2add_use_add3_insn, reload_cse_move2add): Similar.
12171 2023-06-04  Pan Li  <pan2.li@intel.com>
12173         * config/riscv/riscv-vector-builtins-types.def
12174         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
12175         (vfloat16mf2_t): Likewise.
12176         (vfloat16m1_t): Likewise.
12177         (vfloat16m2_t): Likewise.
12178         (vfloat16m4_t): Likewise.
12179         (vfloat16m8_t): Likewise.
12180         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
12181         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
12182         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
12183         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
12184         vlmul and ratio.
12186 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
12188         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
12189         correct offset.
12191 2023-06-03  Die Li  <lidie@eswincomputing.com>
12193         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
12195 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12197         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
12199 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12201         * config/riscv/vector.md: Add vector-opt.md.
12202         * config/riscv/autovec-opt.md: New file.
12204 2023-06-03  liuhongt  <hongtao.liu@intel.com>
12206         PR tree-optimization/110067
12207         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
12208         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
12210 2023-06-03  liuhongt  <hongtao.liu@intel.com>
12212         PR target/92658
12213         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
12214         (truncv2si<mode>2): Ditto.
12216 2023-06-02  Andrew Pinski  <apinski@marvell.com>
12218         PR rtl-optimization/102733
12219         * dse.cc (store_info): Add addrspace field.
12220         (record_store): Record the address space
12221         and check to make sure they are the same.
12223 2023-06-02  Andrew Pinski  <apinski@marvell.com>
12225         PR rtl-optimization/110042
12226         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
12227         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
12229 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
12231         PR target/110044
12232         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
12233         Make sure that we do not have a cap on field alignment before altering
12234         the struct layout based on the type alignment of the first entry.
12236 2023-06-02  David Faust  <david.faust@oracle.com>
12238         PR debug/110073
12239         * btfout.cc (btf_absolute_func_id): New function.
12240         (btf_asm_func_type): Call it here.  Change index parameter from
12241         size_t to ctf_id_t.  Use PRIu64 formatter.
12243 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
12245         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
12246         (btf_asm_datasec_type): Likewise.
12248 2023-06-02  Carl Love  <cel@us.ibm.com>
12250         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
12251         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
12253 2023-06-02  Jason Merrill  <jason@redhat.com>
12255         PR c++/110070
12256         PR c++/105838
12257         * tree.h (DECL_MERGEABLE): New.
12258         * tree-core.h (struct tree_decl_common): Mention it.
12259         * gimplify.cc (gimplify_init_constructor): Check it.
12260         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
12261         * varasm.cc (categorize_decl_for_section): Likewise.
12263 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
12265         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
12266         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
12267         (stack_regs_mentioned_p): Change return type from int to bool
12268         and adjust function body accordingly.
12269         (stack_regs_mentioned): Ditto.
12270         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
12271         variable to bool.
12272         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
12273         (swap_rtx_condition_1): Change return type from int to bool
12274         and adjust function body accordingly.  Change "r" variable to bool.
12275         (swap_rtx_condition): Change return type from int to bool
12276         and adjust function body accordingly.
12277         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
12278         (subst_stack_regs): Ditto.
12279         (convert_regs_entry): Change return type from int to bool and adjust
12280         function body accordingly.  Change "inserted" variable to bool.
12281         (convert_regs_1): Recode handling of control_flow_insn_deleted.
12282         (convert_regs_2): Recode handling of cfg_altered.
12283         (convert_regs): Ditto.  Change "inserted" variable to bool.
12285 2023-06-02  Jason Merrill  <jason@redhat.com>
12287         PR c++/95226
12288         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
12289         (initializer_constant_valid_p_1): Compare float precision.
12291 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
12293         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
12294         semantics.
12296 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
12298         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
12299         (vect_set_loop_condition_partial_vectors): Ditto.
12301 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
12303         PR target/110088
12304         * config/avr/avr.md: Add an RTL peephole to optimize operations on
12305         non-LD_REGS after a move from LD_REGS.
12306         (piaop): New code iterator.
12308 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
12310         PR testsuite/66005
12311         * doc/install.texi: Document (optional) Perl usage for parallel
12312         testing of libgomp.
12314 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
12316         PR bootstrap/82856
12317         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
12318         later)".
12320 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12321             KuanLin Chen  <best124612@gmail.com>
12323         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
12324         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
12326 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12328         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
12330 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12332         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
12334 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12336         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
12337         __RISCV_ prefix.
12338         (DEF_RVV_FRM_ENUM): Ditto.
12340 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12342         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
12343         intrinsic API expander
12344         * config/riscv/vector.md
12345         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
12346         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
12347         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
12349 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12351         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
12352         * config/riscv/predicates.md (vector_perm_operand): New predicate.
12353         * config/riscv/riscv-protos.h (enum insn_type): New enum.
12354         (expand_vec_perm): New function.
12355         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
12356         (gen_const_vector_dup): Ditto.
12357         (emit_vlmax_gather_insn): Ditto.
12358         (emit_vlmax_masked_gather_mu_insn): Ditto.
12359         (expand_vec_perm): Ditto.
12361 2023-06-01  Jason Merrill  <jason@redhat.com>
12363         * doc/invoke.texi (-Wpedantic): Improve clarity.
12365 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
12367         * rtl.h (exp_equiv_p): Change return type from int to bool.
12368         * cse.cc (mention_regs): Change return type from int to bool
12369         and adjust function body accordingly.
12370         (exp_equiv_p): Ditto.
12371         (insert_regs): Ditto. Change "modified" function argument to bool
12372         and update usage accordingly.
12373         (record_jump_cond): Remove always zero "reversed_nonequality"
12374         function argument and update usage accordingly.
12375         (fold_rtx): Change "changed" variable to bool.
12376         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
12377         (is_dead_reg): Change return type from int to bool.
12379 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
12381         * config/xtensa/xtensa.md (adddi3, subdi3):
12382         New RTL generation patterns implemented according to the instruc-
12383         tion idioms described in the Xtensa ISA reference manual (p. 600).
12385 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
12386             Uros Bizjak  <ubizjak@gmail.com>
12388         PR target/109973
12389         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
12390         CODE_for_sse4_1_ptestzv2di.
12391         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
12392         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
12393         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
12394         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
12395         when expanding UNSPEC_PTEST to compare against zero.
12396         * config/i386/i386-features.cc (scalar_chain::convert_compare):
12397         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
12398         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
12399         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
12400         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
12401         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
12402         check for suitable matching modes for the UNSPEC_PTEST pattern.
12403         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
12404         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
12405         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
12406         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
12407         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
12408         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
12409         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
12410         current behavior.
12411         (*ptest<mode>_and): Specify CCZ to only perform this optimization
12412         when only the Z flag is required.
12414 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
12416         PR target/109954
12417         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
12419 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12421         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
12422         Add =r,m and =r,m alternatives.
12423         (load_pair<DREG:mode><DREG2:mode>): Likewise.
12424         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
12426 2023-06-01  Pan Li  <pan2.li@intel.com>
12428         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
12429         and zvfh.
12430         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
12431         (main): Disable FP16 tuple.
12432         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
12433         (TARGET_VECTOR_ELEN_FP_16): Ditto.
12434         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
12435         Add FP16.
12436         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
12437         (vfloat16mf2_t): Ditto.
12438         (vfloat16m1_t): Ditto.
12439         (vfloat16m2_t): Ditto.
12440         (vfloat16m4_t): Ditto.
12441         (vfloat16m8_t): Ditto.
12442         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
12443         New macro.
12444         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
12445         machine mode based on TARGET_VECTOR_ELEN_FP_16.
12447 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12449         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
12450         (DEF_RVV_FRM_ENUM): New macro.
12451         (handle_pragma_vector): Add FRM enum
12452         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
12453         (RNE): Ditto.
12454         (RTZ): Ditto.
12455         (RDN): Ditto.
12456         (RUP): Ditto.
12457         (RMM): Ditto.
12459 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
12460             Richard Sandiford  <richard.sandiford@arm.com>
12462         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
12463         Update call to wi::bswap.
12464         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
12465         Update call to wi::bswap.
12466         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
12467         Update calls to wi::bswap.
12468         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
12469         (wi::bswap_large): New function, with revised API.
12470         * wide-int.h (wi::bswap): New (template) function prototype.
12471         (wide_int_storage::bswap): Remove method.
12472         (sext_large, zext_large): Consistent indentation/line wrapping.
12473         (bswap_large): Prototype helper function containing implementation.
12474         (wi::bswap): New template wrapper around bswap_large.
12476 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12478         PR target/99195
12479         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
12480         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
12481         (usdot_prod<vsi2qi>): Rename to...
12482         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
12483         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
12484         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
12485         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
12486         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
12487         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
12488         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
12489         ... This.
12491 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12493         PR target/99195
12494         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
12495         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
12496         (aarch64_sq<r>dmulh_n<mode>): Rename to...
12497         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
12498         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
12499         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
12500         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
12501         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
12502         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
12503         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
12504         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
12505         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
12506         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
12507         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
12509 2023-05-31  David Faust  <david.faust@oracle.com>
12511         * btfout.cc (btf_kind_names): New.
12512         (btf_kind_name): New.
12513         (btf_absolute_var_id): New utility function.
12514         (btf_relative_var_id): Likewise.
12515         (btf_relative_func_id): Likewise.
12516         (btf_absolute_datasec_id): Likewise.
12517         (btf_asm_type_ref): New.
12518         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
12519         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
12520         (btf_asm_varent): Likewise.
12521         (btf_asm_func_arg): Likewise.
12522         (btf_asm_datasec_entry): Likewise.
12523         (btf_asm_datasec_type): Likewise.
12524         (btf_asm_func_type): Likewise. Add index parameter.
12525         (btf_asm_enum_const): Likewise.
12526         (btf_asm_sou_member): Likewise.
12527         (output_btf_vars): Update btf_asm_* call accordingly.
12528         (output_asm_btf_sou_fields): Likewise.
12529         (output_asm_btf_enum_list): Likewise.
12530         (output_asm_btf_func_args_list): Likewise.
12531         (output_asm_btf_vlen_bytes): Likewise.
12532         (output_btf_func_types): Add ctf_container_ref parameter.
12533         Pass it to btf_asm_func_type.
12534         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
12535         (btf_output): Update output_btf_func_types call similarly.
12537 2023-05-31  David Faust  <david.faust@oracle.com>
12539         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
12540         and BTF_KIND_FWD which do not use the size/type field at all.
12542 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
12544         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
12545         (active_insn_p): Ditto.
12546         (in_sequence_p): Ditto.
12547         (unshare_all_rtl): Change return type from int to void.
12548         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
12549         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
12550         and adjust function body accordingly.
12551         (mem_expr_equal_p): Ditto.
12552         (unshare_all_rtl): Change return type from int to void
12553         and adjust function body accordingly.
12554         (verify_rtx_sharing): Remove unneeded return.
12555         (active_insn_p): Change return type from int to bool
12556         and adjust function body accordingly.
12557         (in_sequence_p): Ditto.
12559 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
12561         * rtl.h (true_dependence): Change return type from int to bool.
12562         (canon_true_dependence): Ditto.
12563         (read_dependence): Ditto.
12564         (anti_dependence): Ditto.
12565         (canon_anti_dependence): Ditto.
12566         (output_dependence): Ditto.
12567         (canon_output_dependence): Ditto.
12568         (may_alias_p): Ditto.
12569         * alias.h (alias_sets_conflict_p): Ditto.
12570         (alias_sets_must_conflict_p): Ditto.
12571         (objects_must_conflict_p): Ditto.
12572         (nonoverlapping_memrefs_p): Ditto.
12573         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
12574         (record_set): Ditto.
12575         (base_alias_check): Ditto.
12576         (find_base_value): Ditto.
12577         (mems_in_disjoint_alias_sets_p): Ditto.
12578         (get_alias_set_entry): Ditto.
12579         (decl_for_component_ref): Ditto.
12580         (write_dependence_p): Ditto.
12581         (memory_modified_1): Ditto.
12582         (mems_in_disjoint_alias_set_p): Change return type from int to bool
12583         and adjust function body accordingly.
12584         (alias_sets_conflict_p): Ditto.
12585         (alias_sets_must_conflict_p): Ditto.
12586         (objects_must_conflict_p): Ditto.
12587         (rtx_equal_for_memref_p): Ditto.
12588         (base_alias_check): Ditto.
12589         (read_dependence): Ditto.
12590         (nonoverlapping_memrefs_p): Ditto.
12591         (true_dependence_1): Ditto.
12592         (true_dependence): Ditto.
12593         (canon_true_dependence): Ditto.
12594         (write_dependence_p): Ditto.
12595         (anti_dependence): Ditto.
12596         (canon_anti_dependence): Ditto.
12597         (output_dependence): Ditto.
12598         (canon_output_dependence): Ditto.
12599         (may_alias_p): Ditto.
12600         (init_alias_analysis): Change "changed" variable to bool.
12602 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12604         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
12605         expand into define_insn_and_split.
12607 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12609         * config/riscv/vector.md: Remove FRM.
12611 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12613         * config/riscv/vector.md: Remove FRM.
12615 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12617         * config/riscv/vector.md: Remove FRM.
12619 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
12621         PR target/110039
12622         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
12623         pattern.
12625 2023-05-31  Richard Biener  <rguenther@suse.de>
12627         PR ipa/109983
12628         PR tree-optimization/109143
12629         * tree-ssa-structalias.cc (struct topo_info): Remove.
12630         (init_topo_info): Likewise.
12631         (free_topo_info): Likewise.
12632         (compute_topo_order): Simplify API, put the component
12633         with ESCAPED last so it's processed first.
12634         (topo_visit): Adjust.
12635         (solve_graph): Likewise.
12637 2023-05-31  Richard Biener  <rguenther@suse.de>
12639         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
12640         New.
12641         (add_graph_edge): Count redundant edges we avoid to create.
12642         (dump_sa_stats): Dump them.
12643         (ipa_pta_execute): Do not dump generating constraints when
12644         we are not dumping them.
12646 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12648         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
12649         output template to avoid explicit switch on which_alternative.
12650         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
12651         (and<mode>3): Likewise.
12652         (ior<mode>3): Likewise.
12653         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
12655 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
12657         * config/xtensa/predicates.md (xtensa_bit_join_operator):
12658         New predicate.
12659         * config/xtensa/xtensa.md (ior_op): Remove.
12660         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
12661         insn_and_split pattern of the same name to express and capture
12662         the bit-combining operation with both sides swapped.
12663         In addition, replace use of code iterator with new operator
12664         predicate.
12665         (*shlrd_const, *shlrd_per_byte):
12666         Likewise regarding the code iterator.
12668 2023-05-31  Cui, Lili  <lili.cui@intel.com>
12670         PR tree-optimization/110038
12671         * params.opt: Add a limit on tree-reassoc-width.
12672         * tree-ssa-reassoc.cc
12673         (rewrite_expr_tree_parallel): Add width limit.
12675 2023-05-31  Pan Li  <pan2.li@intel.com>
12677         * common/config/riscv/riscv-common.cc:
12678         (riscv_implied_info): Add zvfh item.
12679         (riscv_ext_version_table): Ditto.
12680         (riscv_ext_flag_table): Ditto.
12681         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
12682         (TARGET_ZVFH): Ditto.
12684 2023-05-30  liuhongt  <hongtao.liu@intel.com>
12686         PR tree-optimization/108804
12687         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
12688         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
12689         Add new parameter narrow_src_p.
12690         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
12691         vectorization by truncating to lower precision.
12692         * tree-vectorizer.h (vect_get_range_info): New declare.
12694 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
12696         * lra-int.h (lra_update_sp_offset): Add the prototype.
12697         * lra.cc (setup_sp_offset): Change the return type.  Use
12698         lra_update_sp_offset.
12699         * lra-eliminations.cc (lra_update_sp_offset): New function.
12700         (lra_process_new_insns): Push the current insn to reprocess if the
12701         input reload changes sp offset.
12703 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
12705         PR target/110041
12706         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
12707         Fix misleading identation.
12709 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
12711         * rtl.h (comparison_dominates_p): Change return type from int to bool.
12712         (condjump_p): Ditto.
12713         (any_condjump_p): Ditto.
12714         (any_uncondjump_p): Ditto.
12715         (simplejump_p): Ditto.
12716         (returnjump_p): Ditto.
12717         (eh_returnjump_p): Ditto.
12718         (onlyjump_p): Ditto.
12719         (invert_jump_1): Ditto.
12720         (invert_jump): Ditto.
12721         (rtx_renumbered_equal_p): Ditto.
12722         (redirect_jump_1): Ditto.
12723         (redirect_jump): Ditto.
12724         (condjump_in_parallel_p): Ditto.
12725         * jump.cc (invert_exp_1): Adjust forward declaration.
12726         (comparison_dominates_p): Change return type from int to bool
12727         and adjust function body accordingly.
12728         (simplejump_p): Ditto.
12729         (condjump_p): Ditto.
12730         (condjump_in_parallel_p): Ditto.
12731         (any_uncondjump_p): Ditto.
12732         (any_condjump_p): Ditto.
12733         (returnjump_p): Ditto.
12734         (eh_returnjump_p): Ditto.
12735         (onlyjump_p): Ditto.
12736         (redirect_jump_1): Ditto.
12737         (redirect_jump): Ditto.
12738         (invert_exp_1): Ditto.
12739         (invert_jump_1): Ditto.
12740         (invert_jump): Ditto.
12741         (rtx_renumbered_equal_p): Ditto.
12743 2023-05-30  Andrew Pinski  <apinski@marvell.com>
12745         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
12746         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
12747         Add ne as a possible cmp.
12748         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
12750 2023-05-30  Andrew Pinski  <apinski@marvell.com>
12752         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
12753         pattern.
12755 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
12757         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
12758         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
12759         (and (extend X) C) as (zero_extend (and X C)), to also optimize
12760         modes wider than HOST_WIDE_INT.
12762 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
12764         PR target/107172
12765         * simplify-rtx.cc (simplify_const_relational_operation): Return
12766         early if we have a MODE_CC comparison that isn't a COMPARE against
12767         const0_rtx.
12769 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
12771         * config/riscv/riscv.cc (riscv_const_insns): Allow
12772         const_vec_duplicates.
12774 2023-05-30  liuhongt  <hongtao.liu@intel.com>
12776         PR middle-end/108938
12777         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
12778         function, cut from original find_bswap_or_nop function.
12779         (find_bswap_or_nop): Add a new parameter, detect bswap +
12780         rotate and save rotate result in the new parameter.
12781         (bswap_replace): Add a new parameter to indicate rotate and
12782         generate rotate stmt if needed.
12783         (maybe_optimize_vector_constructor): Adjust for new rotate
12784         parameter in the upper 2 functions.
12785         (pass_optimize_bswap::execute): Ditto.
12786         (imm_store_chain_info::output_merged_store): Ditto.
12788 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12790         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
12791         (aarch64_<su>adalp<mode>): New define_expand.
12792         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
12793         (aarch64_<su>addlp<mode>): Convert to define_expand.
12794         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
12795         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
12796         (ADALP): Likewise.
12797         (USADDLP): Likewise.
12798         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
12800 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12802         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
12803         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
12804         srhadd, urhadd builtin codes for standard optab ones.
12805         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
12806         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
12807         unspec.
12808         (<u>avg<mode>3_ceil): Rename to...
12809         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
12810         unspec.
12811         (aarch64_<su>hsub<mode>): New define_expand.
12812         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
12813         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
12814         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
12816 2023-05-30  Andreas Schwab  <schwab@suse.de>
12818         PR target/110036
12819         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
12820         match libsanitizer.
12822 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12824         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
12825         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
12826         Declare prototype.
12827         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
12828         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
12829         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
12830         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
12831         (aarch64_<sra_op>sra_n<mode>): New define_expand.
12832         (aarch64_<sra_op>rsra_n<mode>): Likewise.
12833         (aarch64_<sur>sra_n<mode>): Rename to...
12834         (aarch64_<sur>sra_ndi): ... This.
12835         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
12836         any_target_p argument.
12837         (aarch64_extract_vec_duplicate_wide_int): Define.
12838         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
12839         (aarch64_const_vec_rnd_cst_p): Likewise.
12840         (aarch64_vector_mode_supported_any_target_p): Likewise.
12841         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
12842         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
12843         (VSRA): Adjust for the above.
12844         (sur): Likewise.
12845         (V2XWIDE): New mode_attr.
12846         (vec_or_offset): Likewise.
12847         (SHIFTEXTEND): Likewise.
12848         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
12849         predicate.
12850         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
12851         clarify that it applies to current target options.
12852         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
12853         * doc/tm.texi.in: Regenerate.
12854         * stor-layout.cc (mode_for_vector): Check
12855         vector_mode_supported_any_target_p when iterating through vector modes.
12856         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
12857         clarify that it applies to current target options.
12858         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
12860 2023-05-30  Lili Cui  <lili.cui@intel.com>
12862         PR tree-optimization/98350
12863         * tree-ssa-reassoc.cc
12864         (rewrite_expr_tree_parallel): Rewrite this function.
12865         (rank_ops_for_fma): New.
12866         (reassociate_bb): Handle new function.
12868 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
12870         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
12871         (rtx_unstable_p): Ditto.
12872         (reg_mentioned_p): Ditto.
12873         (reg_referenced_p): Ditto.
12874         (reg_used_between_p): Ditto.
12875         (reg_set_between_p): Ditto.
12876         (modified_between_p): Ditto.
12877         (no_labels_between_p): Ditto.
12878         (modified_in_p): Ditto.
12879         (reg_set_p): Ditto.
12880         (multiple_sets): Ditto.
12881         (set_noop_p): Ditto.
12882         (noop_move_p): Ditto.
12883         (reg_overlap_mentioned_p): Ditto.
12884         (dead_or_set_p): Ditto.
12885         (dead_or_set_regno_p): Ditto.
12886         (find_reg_fusage): Ditto.
12887         (find_regno_fusage): Ditto.
12888         (side_effects_p): Ditto.
12889         (volatile_refs_p): Ditto.
12890         (volatile_insn_p): Ditto.
12891         (may_trap_p_1): Ditto.
12892         (may_trap_p): Ditto.
12893         (may_trap_or_fault_p): Ditto.
12894         (computed_jump_p): Ditto.
12895         (auto_inc_p): Ditto.
12896         (loc_mentioned_in_p): Ditto.
12897         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
12898         (rtx_unstable_p): Change return type from int to bool
12899         and adjust function body accordingly.
12900         (rtx_addr_can_trap_p): Ditto.
12901         (reg_mentioned_p): Ditto.
12902         (no_labels_between_p): Ditto.
12903         (reg_used_between_p): Ditto.
12904         (reg_referenced_p): Ditto.
12905         (reg_set_between_p): Ditto.
12906         (reg_set_p): Ditto.
12907         (modified_between_p): Ditto.
12908         (modified_in_p): Ditto.
12909         (multiple_sets): Ditto.
12910         (set_noop_p): Ditto.
12911         (noop_move_p): Ditto.
12912         (reg_overlap_mentioned_p): Ditto.
12913         (dead_or_set_p): Ditto.
12914         (dead_or_set_regno_p): Ditto.
12915         (find_reg_fusage): Ditto.
12916         (find_regno_fusage): Ditto.
12917         (remove_node_from_insn_list): Ditto.
12918         (volatile_insn_p): Ditto.
12919         (volatile_refs_p): Ditto.
12920         (side_effects_p): Ditto.
12921         (may_trap_p_1): Ditto.
12922         (may_trap_p): Ditto.
12923         (may_trap_or_fault_p): Ditto.
12924         (computed_jump_p): Ditto.
12925         (auto_inc_p): Ditto.
12926         (loc_mentioned_in_p): Ditto.
12927         * combine.cc (can_combine_p): Update indirect function.
12929 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12931         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
12932         * config/riscv/iterators.md: New attribute.
12933         * config/riscv/vector-iterators.md: New attribute.
12935 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12937         * config/riscv/riscv.md: Fix signed and unsigned comparison
12938         warning.
12940 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12942         * config/riscv/autovec.md (fnma<mode>4): New pattern.
12943         (*fnma<mode>): Ditto.
12945 2023-05-29  Die Li  <lidie@eswincomputing.com>
12947         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
12948         Delete.
12949         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
12950         process for TARGET_XTHEADCONDMOV
12952 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
12954         PR target/110021
12955         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
12956         TARGET_AVX512BW to generate truncv16hiv16qi2.
12958 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
12960         * config/riscv/riscv.md (and<mode>3): New expander.
12961         (*and<mode>3) New pattern.
12962         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
12963         predicate.
12965 2023-05-29  Pan Li  <pan2.li@intel.com>
12967         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
12968         comments and rename local variables.
12969         (emit_nonvlmax_insn): Diito.
12970         (emit_vlmax_merge_insn): Ditto.
12971         (emit_vlmax_cmp_insn): Ditto.
12972         (emit_vlmax_cmp_mu_insn): Ditto.
12973         (emit_scalar_move_insn): Ditto.
12975 2023-05-29  Pan Li  <pan2.li@intel.com>
12977         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
12978         magic number.
12979         (emit_nonvlmax_insn): Ditto.
12980         (emit_vlmax_merge_insn): Ditto.
12981         (emit_vlmax_cmp_insn): Ditto.
12982         (emit_vlmax_cmp_mu_insn): Ditto.
12983         (expand_vec_series): Ditto.
12985 2023-05-29  Pan Li  <pan2.li@intel.com>
12987         * config/riscv/riscv-protos.h (enum insn_type): New type.
12988         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
12989         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
12990         class member.
12991         (rvv_builder::get_merged_repeating_sequence): Ditto.
12992         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
12993         to evaluate the optimization cost.
12994         (rvv_builder::get_merge_scalar_mask): New function to get the merge
12995         mask.
12996         (emit_scalar_move_insn): New function to emit vmv.s.x.
12997         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
12998         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
12999         vmv.v.x.
13000         (get_repeating_sequence_dup_machine_mode): New function to get the dup
13001         machine mode.
13002         (expand_vector_init_merge_repeating_sequence): New function to perform
13003         the optimization.
13004         (expand_vec_init): Add this vector init optimization.
13005         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
13007 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
13009         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
13010         put onto the increment when it is inserted after the position.
13012 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
13014         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
13015         on constants.
13017 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13019         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
13021 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13023         * config/riscv/autovec.md (fma<mode>4): New pattern.
13024         (*fma<mode>): Ditto.
13025         * config/riscv/riscv-protos.h (enum insn_type): New enum.
13026         (emit_vlmax_ternary_insn): New function.
13027         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
13029 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13031         * config/riscv/vector.md: Fix vimuladd instruction bug.
13033 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13035         * config/riscv/riscv.cc (global_state_unknown_p): New function.
13036         (riscv_mode_after): Fix incorrect VXM.
13038 2023-05-29  Pan Li  <pan2.li@intel.com>
13040         * common/config/riscv/riscv-common.cc:
13041         (riscv_implied_info): Add zvfhmin item.
13042         (riscv_ext_version_table): Ditto.
13043         (riscv_ext_flag_table): Ditto.
13044         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
13045         (TARGET_ZFHMIN): Align indent.
13046         (TARGET_ZFH): Ditto.
13047         (TARGET_ZVFHMIN): New macro.
13049 2023-05-27  liuhongt  <hongtao.liu@intel.com>
13051         PR target/100711
13052         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
13053         to VI_AVX2 to cover more modes.
13055 2023-05-27  liuhongt  <hongtao.liu@intel.com>
13057         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
13058         Remove ATOM and ICELAKE(and later) core processors.
13060 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
13062         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
13063         (abs<mode>2): Add.
13064         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
13065         Declare.
13066         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
13067         function.
13069 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
13070             Juzhe Zhong  <juzhe.zhong@rivai.ai>
13072         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
13073         expander.
13074         (<optab><v_quad_trunc><mode>2): Dito.
13075         (<optab><v_oct_trunc><mode>2): Dito.
13076         (trunc<mode><v_double_trunc>2): Dito.
13077         (trunc<mode><v_quad_trunc>2): Dito.
13078         (trunc<mode><v_oct_trunc>2): Dito.
13079         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
13080         (autovectorize_vector_modes): Define.
13081         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
13082         hook.
13083         (autovectorize_vector_modes): Implement hook.
13084         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
13085         Implement target hook.
13086         (riscv_vectorize_related_mode): Implement target hook.
13087         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
13088         (TARGET_VECTORIZE_RELATED_MODE): Define.
13089         * config/riscv/vector-iterators.md: Add lowercase versions of
13090         mode_attr iterators.
13092 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
13093             Tobias Burnus  <tobias@codesourcery.com>
13095         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
13096         (ASM_SPEC): Use XNACKOPT.
13097         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
13098         (enum hsaco_attr_type): ... this, and generalize the names.
13099         (TARGET_XNACK): New macro.
13100         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
13101         but -mxnack=off.
13102         (output_file_start): Update xnack handling.
13103         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
13104         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
13105         (sram_ecc_type): Rename to ...
13106         (hsaco_attr_type: ... this.)
13107         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
13108         (TEST_XNACK): Delete.
13109         (TEST_XNACK_ANY): New macro.
13110         (TEST_XNACK_ON): New macro.
13111         (main): Support the new -mxnack=on/off/any syntax.
13112         * doc/invoke.texi (-mxnack): Update for new syntax.
13114 2023-05-26  Andrew Pinski  <apinski@marvell.com>
13116         * genmatch.cc (emit_debug_printf): New function.
13117         (dt_simplify::gen_1): Emit printf into the code
13118         before the `return true` or returning the folded result
13119         instead of emitting it always.
13121 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
13123         * config/xtensa/xtensa-protos.h
13124         (xtensa_expand_block_set_unrolled_loop,
13125         xtensa_expand_block_set_small_loop): Remove.
13126         (xtensa_expand_block_set): New prototype.
13127         * config/xtensa/xtensa.cc
13128         (xtensa_expand_block_set_libcall): New subfunction.
13129         (xtensa_expand_block_set_unrolled_loop,
13130         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
13131         (xtensa_expand_block_set): New function that calls the above
13132         subfunctions.
13133         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
13134         xtensa_expand_block_set().
13136 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
13138         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
13139         New prototype.
13140         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
13141         New function.
13142         * config/xtensa/constraints.md (O):
13143         Change to use the above function.
13144         * config/xtensa/xtensa.md (*subsi3_from_const):
13145         New insn_and_split pattern.
13147 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
13149         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
13150         Retract excessive line folding, and correct the value of
13151         the "length" insn attribute related to TARGET_DENSITY.
13152         (*extzvsi-1bit_addsubx): Ditto.
13154 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
13156         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
13157         Do not disable call to ix86_expand_vecop_qihi2.
13159 2023-05-26  liuhongt  <hongtao.liu@intel.com>
13161         PR target/109610
13162         PR target/109858
13163         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
13164         calculation when !hard_regno_mode_ok for GENERAL_REGS and
13165         mode, otherwise still use GENERAL_REGS.
13167 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13169         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
13170         explict VL and drop VL in ops.
13172 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
13174         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
13175         in different BB blocks.
13177 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
13179         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
13180         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
13181         instructions when available.  Emulate truncation via
13182         ix86_expand_vec_perm_const_1 when native truncate insn
13183         is not available.
13184         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
13185         when available.  Trivially rename some variables.
13186         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
13187         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
13188         calculation of V*QImode emulations to account for generation of
13189         2x-wider mode instructions.
13190         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
13191         emulations to account for generation of 2x-wider mode instructions.
13193 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
13195         PR target/104327
13196         * config/avr/avr.cc (avr_can_inline_p): New static function.
13197         (TARGET_CAN_INLINE_P): Define to that function.
13199 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
13201         PR target/82931
13202         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
13203         Handle any bit position and use mode QISI.
13204         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
13205         of 2 insns for bit-transfer of respective style.
13207 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
13209         * config/arm/iterators.md (MVE_6): Remove.
13210         * config/arm/mve.md: Replace MVE_6 with MVE_5.
13212 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13213             Richard Sandiford  <richard.sandiford@arm.com>
13215         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
13216         function.
13217         (vect_set_loop_controls_directly): Add decrement IV support.
13218         (vect_set_loop_condition_partial_vectors): Ditto.
13219         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
13220         variable.
13221         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
13222         macro.
13224 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13226         PR target/99195
13227         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
13228         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
13229         Fix canonicalization of PLUS operands.
13230         (aarch64_fcmla<rot><mode>): Rename to...
13231         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
13232         Fix canonicalization of PLUS operands.
13233         (aarch64_fcmla_lane<rot><mode>): Rename to...
13234         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
13235         Fix canonicalization of PLUS operands.
13236         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
13237         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
13238         Fix canonicalization of PLUS operands.
13239         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
13241 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
13243         * config/arm/arm.md (rbitsi2): Rename to...
13244         (arm_rbit): ... This.
13245         (ctzsi2): Adjust for the above.
13246         (arm_rev16si2): Convert to define_expand.
13247         (arm_rev16si2_alt1): New pattern.
13248         (arm_rev16si2_alt): Rename to...
13249         (*arm_rev16si2_alt2): ... This.
13250         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
13251         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
13252         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
13253         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
13255 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
13257         PR target/109800
13258         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
13259         instead of DFmode.
13260         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
13261         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
13262         DFmode as an rvalue.
13264 2023-05-25  Richard Biener  <rguenther@suse.de>
13266         PR target/109955
13267         * tree-vect-stmts.cc (vectorizable_condition): For
13268         embedded comparisons also handle the case when the target
13269         only provides vec_cmp and vcond_mask.
13271 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
13273         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
13274         TLS Local Dynamic.
13276 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
13278         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
13279         (seq_cost_ignoring_scalar_moves): Likewise.
13280         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
13282 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13284         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
13285         (vcage_f32): Likewise.
13286         (vcages_f32): Likewise.
13287         (vcageq_f32): Likewise.
13288         (vcaged_f64): Likewise.
13289         (vcageq_f64): Likewise.
13290         (vcagts_f32): Likewise.
13291         (vcagt_f32): Likewise.
13292         (vcagt_f64): Likewise.
13293         (vcagtq_f32): Likewise.
13294         (vcagtd_f64): Likewise.
13295         (vcagtq_f64): Likewise.
13296         (vcale_f32): Likewise.
13297         (vcale_f64): Likewise.
13298         (vcaled_f64): Likewise.
13299         (vcales_f32): Likewise.
13300         (vcaleq_f32): Likewise.
13301         (vcaleq_f64): Likewise.
13302         (vcalt_f32): Likewise.
13303         (vcalt_f64): Likewise.
13304         (vcaltd_f64): Likewise.
13305         (vcaltq_f32): Likewise.
13306         (vcaltq_f64): Likewise.
13307         (vcalts_f32): Likewise.
13309 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
13311         PR target/109173
13312         PR target/109174
13313         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
13314         int to const int or const int to const unsigned int.
13315         (_mm512_mask_srli_epi16): Ditto.
13316         (_mm512_slli_epi16): Ditto.
13317         (_mm512_mask_slli_epi16): Ditto.
13318         (_mm512_maskz_slli_epi16): Ditto.
13319         (_mm512_srai_epi16): Ditto.
13320         (_mm512_mask_srai_epi16): Ditto.
13321         (_mm512_maskz_srai_epi16): Ditto.
13322         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
13323         (_mm512_mask_slli_epi64): Ditto.
13324         (_mm512_maskz_slli_epi64): Ditto.
13325         (_mm512_srli_epi64): Ditto.
13326         (_mm512_mask_srli_epi64): Ditto.
13327         (_mm512_maskz_srli_epi64): Ditto.
13328         (_mm512_srai_epi64): Ditto.
13329         (_mm512_mask_srai_epi64): Ditto.
13330         (_mm512_maskz_srai_epi64): Ditto.
13331         (_mm512_slli_epi32): Ditto.
13332         (_mm512_mask_slli_epi32): Ditto.
13333         (_mm512_maskz_slli_epi32): Ditto.
13334         (_mm512_srli_epi32): Ditto.
13335         (_mm512_mask_srli_epi32): Ditto.
13336         (_mm512_maskz_srli_epi32): Ditto.
13337         (_mm512_srai_epi32): Ditto.
13338         (_mm512_mask_srai_epi32): Ditto.
13339         (_mm512_maskz_srai_epi32): Ditto.
13340         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
13341         (_mm256_maskz_srai_epi16): Ditto.
13342         (_mm_mask_srai_epi16): Ditto.
13343         (_mm_maskz_srai_epi16): Ditto.
13344         (_mm256_mask_slli_epi16): Ditto.
13345         (_mm256_maskz_slli_epi16): Ditto.
13346         (_mm_mask_slli_epi16): Ditto.
13347         (_mm_maskz_slli_epi16): Ditto.
13348         (_mm_maskz_srli_epi16): Ditto.
13349         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
13350         (_mm256_maskz_srli_epi32): Ditto.
13351         (_mm_mask_srli_epi32): Ditto.
13352         (_mm_maskz_srli_epi32): Ditto.
13353         (_mm256_mask_srli_epi64): Ditto.
13354         (_mm256_maskz_srli_epi64): Ditto.
13355         (_mm_mask_srli_epi64): Ditto.
13356         (_mm_maskz_srli_epi64): Ditto.
13357         (_mm256_mask_srai_epi32): Ditto.
13358         (_mm256_maskz_srai_epi32): Ditto.
13359         (_mm_mask_srai_epi32): Ditto.
13360         (_mm_maskz_srai_epi32): Ditto.
13361         (_mm256_srai_epi64): Ditto.
13362         (_mm256_mask_srai_epi64): Ditto.
13363         (_mm256_maskz_srai_epi64): Ditto.
13364         (_mm_srai_epi64): Ditto.
13365         (_mm_mask_srai_epi64): Ditto.
13366         (_mm_maskz_srai_epi64): Ditto.
13367         (_mm_mask_slli_epi32): Ditto.
13368         (_mm_maskz_slli_epi32): Ditto.
13369         (_mm_mask_slli_epi64): Ditto.
13370         (_mm_maskz_slli_epi64): Ditto.
13371         (_mm256_mask_slli_epi32): Ditto.
13372         (_mm256_maskz_slli_epi32): Ditto.
13373         (_mm256_mask_slli_epi64): Ditto.
13374         (_mm256_maskz_slli_epi64): Ditto.
13376 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13378         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
13379         instructions.
13381 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
13383         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
13384         * data-streamer-out.cc (streamer_write_vrange): Same.
13385         * value-range.h (class vrange): Make streamer_write_vrange a friend.
13387 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
13389         * value-query.cc (range_query::get_tree_range): Set NAN directly
13390         if necessary.
13391         * value-range.cc (frange::set): Assert that bounds are not NAN.
13393 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
13395         * value-range.cc (add_vrange): Handle known NANs.
13397 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
13399         * value-range.h (frange::set_nan): New.
13401 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
13403         PR target/100106
13404         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
13405         requires stricter alignment than MEM's.
13407 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
13409         PR tree-optimization/107822
13410         PR tree-optimization/107986
13411         * Makefile.in (OBJS): Add gimple-range-phi.o.
13412         * gimple-range-cache.h (ranger_cache::m_estimate): New
13413         phi_analyzer pointer member.
13414         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
13415         phi_analyzer if no loop info is available.
13416         * gimple-range-phi.cc: New file.
13417         * gimple-range-phi.h: New file.
13418         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
13420 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
13422         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
13423         to contructors.
13424         (fold_range): Add range_query parameter.
13425         (fur_relation::fur_relation): New.
13426         (fur_relation::trio): New.
13427         (fur_relation::register_relation): New.
13428         (fold_relations): New.
13429         * gimple-range-fold.h (fold_range): Adjust prototypes.
13430         (fold_relations): New.
13432 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
13434         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
13435         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
13436         (ranger_cache::const_query): New.
13437         * gimple-range.cc (gimple_ranger::const_query): New.
13438         * gimple-range.h (gimple_ranger::const_query): New prototype.
13440 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
13442         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
13443         (ssa_cache::dump_range_query): Delete.
13444         (ssa_lazy_cache::dump_range_query): Delete.
13445         (ssa_lazy_cache::get_range): Move from header file.
13446         (ssa_lazy_cache::clear_range): ditto.
13447         (ssa_lazy_cache::clear): Ditto.
13448         * gimple-range-cache.h (class ssa_cache): Virtualize.
13449         (class ssa_lazy_cache): Inherit and virtualize.
13451 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
13453         * value-range.h (vrange::kind): Remove.
13455 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
13457         PR middle-end/109840
13458         * match.pd <popcount optimizations>: Preserve zero-extension when
13459         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
13460         popcount((T)x), so the popcount's argument keeps the same type.
13461         <parity optimizations>:  Likewise preserve extensions when
13462         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
13463         parity((T)x), so that the parity's argument type is the same.
13465 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
13467         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
13468         (ipcp_store_vr_results): Same.
13469         * ipa-prop.cc (ipa_vr::ipa_vr): New.
13470         (ipa_vr::get_vrange): New.
13471         (ipa_vr::set_unknown): New.
13472         (ipa_vr::streamer_read): New.
13473         (ipa_vr::streamer_write): New.
13474         (write_ipcp_transformation_info): Use new ipa_vr API.
13475         (read_ipcp_transformation_info): Same.
13476         (ipa_vr::nonzero_p): Delete.
13477         (ipcp_update_vr): Use new ipa_vr API.
13478         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
13479         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
13481 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
13483         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
13484         silence overflow warnings later on.
13486 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
13488         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
13489         Remove handling of V8QImode.
13490         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
13491         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
13492         (v<insn>v4qi3): Ditto.
13493         * config/i386/sse.md (v<insn>v8qi3): Remove.
13495 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13497         PR target/99195
13498         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
13499         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
13500         (aarch64_simd_ashr<mode>): Rename to...
13501         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
13502         (aarch64_simd_imm_shl<mode>): Rename to...
13503         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
13504         (aarch64_simd_reg_sshl<mode>): Rename to...
13505         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
13506         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
13507         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
13508         (aarch64_simd_reg_shl<mode>_signed): Rename to...
13509         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
13510         (vec_shr_<mode>): Rename to...
13511         (vec_shr_<mode><vczle><vczbe>): ... This.
13512         (aarch64_<sur>shl<mode>): Rename to...
13513         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
13514         (aarch64_<sur>q<r>shl<mode>): Rename to...
13515         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
13517 2023-05-24  Richard Biener  <rguenther@suse.de>
13519         PR target/109944
13520         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
13521         Perform final vector composition using
13522         ix86_expand_vector_init_general instead of setting
13523         the highpart and lowpart which causes spilling.
13525 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
13527         PR tree-optimization/109695
13528         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
13529         changed param.
13530         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
13531         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
13532         flag to set_global_range.
13533         (gimple_ranger::prefill_stmt_dependencies): Ditto.
13535 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
13537         PR tree-optimization/109695
13538         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
13539         a positive int.
13540         (temporal_cache::current_p): Check always_current method.
13541         (temporal_cache::set_always_current): Add param and set value
13542         appropriately.
13543         (temporal_cache::always_current_p): New.
13544         (ranger_cache::get_global_range): Adjust.
13545         (ranger_cache::set_global_range): set always current first.
13547 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
13549         PR tree-optimization/109695
13550         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
13551         fold_range with global query to choose an initial value.
13553 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13555         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
13556         prefix.
13558 2023-05-24  Richard Biener  <rguenther@suse.de>
13560         PR tree-optimization/109849
13561         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
13562         expressions but take the first sets.
13564 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
13566         PR modula2/109952
13567         * doc/gm2.texi (High procedure function): New node.
13568         (Using): New menu entry for High procedure function.
13570 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
13572         PR rtl-optimization/109940
13573         * early-remat.cc (postorder_index): Rename to...
13574         (rpo_index): ...this.
13575         (compare_candidates): Sort by decreasing rpo_index rather than
13576         increasing postorder_index.
13577         (early_remat::sort_candidates): Calculate the forward RPO from
13578         DF_FORWARD.
13579         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
13580         rather than DF_BACKWARD in reverse.
13582 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13584         PR target/109939
13585         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
13586         qualifier_none for the return operand.
13588 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13590         * config/riscv/autovec.md (<optab><mode>3): New pattern.
13591         (one_cmpl<mode>2): Ditto.
13592         (*<optab>not<mode>): Ditto.
13593         (*n<optab><mode>): Ditto.
13594         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
13595         one_cmpl.
13597 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
13599         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
13600         calculation on n_perms by considering nvectors_per_build.
13602 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13603             Richard Sandiford  <richard.sandiford@arm.com>
13605         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
13606         (vec_cmp<mode><vm>): New pattern.
13607         (vec_cmpu<mode><vm>): New pattern.
13608         (vcond<V:mode><VI:mode>): New pattern.
13609         (vcondu<V:mode><VI:mode>): New pattern.
13610         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
13611         (emit_vlmax_merge_insn): New function.
13612         (emit_vlmax_cmp_insn): Ditto.
13613         (emit_vlmax_cmp_mu_insn): Ditto.
13614         (expand_vec_cmp): Ditto.
13615         (expand_vec_cmp_float): Ditto.
13616         (expand_vcond): Ditto.
13617         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
13618         (emit_vlmax_cmp_insn): Ditto.
13619         (emit_vlmax_cmp_mu_insn): Ditto.
13620         (get_cmp_insn_code): Ditto.
13621         (expand_vec_cmp): Ditto.
13622         (expand_vec_cmp_float): Ditto.
13623         (expand_vcond): Ditto.
13625 2023-05-24  Pan Li  <pan2.li@intel.com>
13627         * config/riscv/genrvv-type-indexer.cc (main): Add
13628         unsigned_eew*_lmul1_interpret for indexer.
13629         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
13630         Register vuint*m1_t interpret function.
13631         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
13632         New macro for vuint8m1_t.
13633         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
13634         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
13635         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
13636         (vbool1_t): Add to unsigned_eew*_interpret_ops.
13637         (vbool2_t): Likewise.
13638         (vbool4_t): Likewise.
13639         (vbool8_t): Likewise.
13640         (vbool16_t): Likewise.
13641         (vbool32_t): Likewise.
13642         (vbool64_t): Likewise.
13643         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
13644         New macro for vuint*m1_t.
13645         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
13646         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
13647         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
13648         (required_extensions_p): Add vuint*m1_t interpret case.
13649         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
13650         Add vuint*m1_t interpret to base type.
13651         (unsigned_eew16_lmul1_interpret): Likewise.
13652         (unsigned_eew32_lmul1_interpret): Likewise.
13653         (unsigned_eew64_lmul1_interpret): Likewise.
13655 2023-05-24  Pan Li  <pan2.li@intel.com>
13657         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
13658         for the eew size list.
13659         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
13660         (main): Add signed_eew*_lmul1_interpret for indexer.
13661         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
13662         Register vint*m1_t interpret function.
13663         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
13664         New macro for vint8m1_t.
13665         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
13666         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
13667         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
13668         (vbool1_t): Add to signed_eew*_interpret_ops.
13669         (vbool2_t): Likewise.
13670         (vbool4_t): Likewise.
13671         (vbool8_t): Likewise.
13672         (vbool16_t): Likewise.
13673         (vbool32_t): Likewise.
13674         (vbool64_t): Likewise.
13675         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
13676         New macro for vint*m1_t.
13677         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
13678         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
13679         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
13680         (required_extensions_p): Add vint8m1_t interpret case.
13681         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
13682         Add vint*m1_t interpret to base type.
13683         (signed_eew16_lmul1_interpret): Likewise.
13684         (signed_eew32_lmul1_interpret): Likewise.
13685         (signed_eew64_lmul1_interpret): Likewise.
13687 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13689         * config/riscv/autovec.md: Adjust for new interface.
13690         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
13691         (emit_nonvlmax_insn): Add AVL operand.
13692         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
13693         (emit_nonvlmax_insn): Add AVL operand.
13694         (sew64_scalar_helper): Adjust for new interface.
13695         (expand_tuple_move): Ditto.
13696         * config/riscv/vector.md: Ditto.
13698 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13700         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
13701         (expand_const_vector): Ditto.
13702         (legitimize_move): Ditto.
13703         (sew64_scalar_helper): Ditto.
13704         (expand_tuple_move): Ditto.
13705         (expand_vector_init_insert_elems): Ditto.
13706         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
13708 2023-05-24  liuhongt  <hongtao.liu@intel.com>
13710         PR target/109900
13711         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
13712         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
13713         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
13714         (ix86_masked_all_ones): Handle 64-bit mask.
13715         * config/i386/i386-builtin.def: Replace icode of related
13716         non-mask simd abs builtins with CODE_FOR_nothing.
13718 2023-05-23  Martin Uecker  <uecker@tugraz.at>
13720         PR c/109450
13721         * function.cc (gimplify_parm_type): Remove function.
13722         (gimplify_parameters): Call gimplify_type_sizes.
13724 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
13726         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
13727         and change to also accept '*subx' pattern.
13728         (*subx): Remove.
13730 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
13732         * config/xtensa/predicates.md (addsub_operator): New.
13733         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
13734         *extzvsi-1bit_addsubx): New insn_and_split patterns.
13735         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
13736         Add a special case about ifcvt 'noce_try_cmove()' to handle
13737         constant loads that do not fit into signed 12 bits in the
13738         patterns added above.
13740 2023-05-23  Richard Biener  <rguenther@suse.de>
13742         PR tree-optimization/109747
13743         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
13744         the SLP node only once to the cost hook.
13746 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
13748         * config/avr/avr.cc (avr_insn_cost): New static function.
13749         (TARGET_INSN_COST): Define to that function.
13751 2023-05-23  Richard Biener  <rguenther@suse.de>
13753         PR target/109944
13754         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
13755         For vector construction or splats apply GPR->XMM move
13756         costing.  QImode memory can be handled directly only
13757         with SSE4.1 pinsrb.
13759 2023-05-23  Richard Biener  <rguenther@suse.de>
13761         PR tree-optimization/108752
13762         * tree-vect-stmts.cc (vectorizable_operation): For bit
13763         operations with generic word_mode vectors do not cost
13764         an extra stmt.  For plus, minus and negate also cost the
13765         constant materialization.
13767 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
13769         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
13770         Call ix86_expand_vec_shift_qihi_constant for shifts
13771         with constant count operand.
13772         * config/i386/i386.cc (ix86_shift_rotate_cost):
13773         Handle V4QImode and V8QImode.
13774         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
13775         (<insn>v4qi3): Ditto.
13777 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13779         * config/riscv/vector.md: Add mode.
13781 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
13783         PR tree-optimization/109934
13784         * value-range.cc (irange::invert): Remove buggy special case.
13786 2023-05-23  Richard Biener  <rguenther@suse.de>
13788         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
13789         ANTIC_OUT.
13791 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
13793         PR target/109632
13794         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
13795         subregs between any scalars that are 64 bits or smaller.
13796         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
13797         (bits_etype): New int attribute.
13798         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
13799         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
13800         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
13802 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
13804         * doc/md.texi: Document that <FOO> can be used to refer to the
13805         numerical value of an int iterator FOO.  Tweak other parts of
13806         the int iterator documentation.
13807         * read-rtl.cc (iterator_group::has_self_attr): New field.
13808         (map_attr_string): When has_self_attr is true, make <FOO>
13809         expand to the current value of iterator FOO.
13810         (initialize_iterators): Set has_self_attr for int iterators.
13812 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13814         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
13815         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
13816         (RVV_UNOP_NUM): New macro.
13817         (RVV_BINOP_NUM): Ditto.
13818         (legitimize_move): Refactor the framework of RVV auto-vectorization.
13819         (emit_vlmax_op): Ditto.
13820         (emit_vlmax_reg_op): Ditto.
13821         (emit_len_op): Ditto.
13822         (emit_len_binop): Ditto.
13823         (emit_vlmax_tany_many): Ditto.
13824         (emit_nonvlmax_tany_many): Ditto.
13825         (sew64_scalar_helper): Ditto.
13826         (expand_tuple_move): Ditto.
13827         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
13828         (emit_pred_binop): Ditto.
13829         (emit_vlmax_op): Ditto.
13830         (emit_vlmax_tany_many): New function.
13831         (emit_len_op): Remove.
13832         (emit_nonvlmax_tany_many): New function.
13833         (emit_vlmax_reg_op): Remove.
13834         (emit_len_binop): Ditto.
13835         (emit_index_op): Ditto.
13836         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
13837         (expand_const_vector): Ditto.
13838         (legitimize_move): Ditto.
13839         (sew64_scalar_helper): Ditto.
13840         (expand_tuple_move): Ditto.
13841         (expand_vector_init_insert_elems): Ditto.
13842         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
13843         * config/riscv/vector.md: Ditto.
13845 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13847         PR target/109855
13848         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
13849         and constraint for operand 0.
13850         (add_vec_concat_subst_be): Likewise.
13852 2023-05-23  Richard Biener  <rguenther@suse.de>
13854         PR tree-optimization/109849
13855         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
13856         and use that to determine what to hoist.
13858 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
13860         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
13861         specific treatment for bit-fields only if they have an integral type
13862         and filter out non-integral bit-fields that do not start and end on
13863         a byte boundary.
13865 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
13867         PR tree-optimization/109920
13868         * value-range.h (RESIZABLE>::~int_range): Use delete[].
13870 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
13872         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
13873         calcuation of integer vector mode costs to reflect generated
13874         instruction sequences of different integer vector modes and
13875         different target ABIs.  Remove "speed" function argument.
13876         (ix86_rtx_costs): Update call for removed function argument.
13877         (ix86_vector_costs::add_stmt_cost): Ditto.
13879 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
13881         * value-range.h (class Value_Range): Implement set_zero,
13882         set_nonzero, and nonzero_p.
13884 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
13886         * config/i386/i386.cc (ix86_multiplication_cost): Add
13887         the cost of a memory read to the cost of V?QImode sequences.
13889 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13891         * config/riscv/riscv-v.cc: Add "m_" prefix.
13893 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13895         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
13896         multiple-rgroup of length.
13897         * tree-vect-stmts.cc (vectorizable_store): Ditto.
13898         (vectorizable_load): Ditto.
13899         * tree-vectorizer.h (vect_get_loop_len): Ditto.
13901 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13903         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
13904         codes.
13906 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
13908         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
13909         handling for the case index == count.
13911 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
13913         PR target/90622
13914         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
13915         Don't fold to XOR / AND / XOR if just one bit is copied to the
13916         same position.
13918 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
13920         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
13921         builtin for bit reversal using brev instruction.
13922         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
13923         NVPTX_BUILTIN_BREVLL.
13924         (nvptx_init_builtins): Define "brev" and "brevll".
13925         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
13926         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
13927         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
13928         section, document __builtin_nvptx_brev{,ll}.
13930 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
13932         PR tree-optimization/109505
13933         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
13934         Combine successive equal operations with constants,
13935         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
13936         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
13937         operands.
13939 2023-05-21  Andrew Pinski  <apinski@marvell.com>
13941         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
13943 2023-05-21  Pan Li  <pan2.li@intel.com>
13945         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
13946         rest bool size, aka 2, 4, 8, 16, 32, 64.
13947         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
13948         Register vbool[2|4|8|16|32|64] interpret function.
13949         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
13950         New macro for vbool2_t.
13951         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
13952         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
13953         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
13954         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
13955         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
13956         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
13957         (vint16m1_t): Likewise.
13958         (vint32m1_t): Likewise.
13959         (vint64m1_t): Likewise.
13960         (vuint8m1_t): Likewise.
13961         (vuint16m1_t): Likewise.
13962         (vuint32m1_t): Likewise.
13963         (vuint64m1_t): Likewise.
13964         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
13965         New macro for vbool2_t.
13966         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
13967         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
13968         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
13969         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
13970         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
13971         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
13972         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
13973         vbool2_t interprect to base type.
13974         (bool4_interpret): Likewise.
13975         (bool8_interpret): Likewise.
13976         (bool16_interpret): Likewise.
13977         (bool32_interpret): Likewise.
13978         (bool64_interpret): Likewise.
13980 2023-05-21  Andrew Pinski  <apinski@marvell.com>
13982         PR middle-end/109919
13983         * expr.cc (expand_single_bit_test): Don't use the
13984         target for expand_expr.
13986 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
13988         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
13989         section.
13991 2023-05-20  Pan Li  <pan2.li@intel.com>
13993         * mode-switching.cc (entity_map): Initialize the array to zero.
13994         (bb_info): Ditto.
13996 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
13998         PR target/105753
13999         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
14000         Remove superfluous "parallel" in insn pattern.
14001         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
14002         printing error text to assembly.
14004 2023-05-20  Andrew Pinski  <apinski@marvell.com>
14006         * expr.cc (fold_single_bit_test): Rename to ...
14007         (expand_single_bit_test): This and expand directly.
14008         (do_store_flag): Update for the rename function.
14010 2023-05-20  Andrew Pinski  <apinski@marvell.com>
14012         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
14013         instead of shift/and.
14015 2023-05-20  Andrew Pinski  <apinski@marvell.com>
14017         * expr.cc (fold_single_bit_test): Add an assert
14018         and simplify based on code being NE_EXPR or EQ_EXPR.
14020 2023-05-20  Andrew Pinski  <apinski@marvell.com>
14022         * expr.cc (fold_single_bit_test): Take inner and bitnum
14023         instead of arg0 and arg1. Update the code.
14024         (do_store_flag): Don't create a tree when calling
14025         fold_single_bit_test instead just call it with the bitnum
14026         and the inner tree.
14028 2023-05-20  Andrew Pinski  <apinski@marvell.com>
14030         * expr.cc (fold_single_bit_test): Use get_def_for_expr
14031         instead of checking the inner's code.
14033 2023-05-20  Andrew Pinski  <apinski@marvell.com>
14035         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
14036         (fold_single_bit_test): This and simplify.
14038 2023-05-20  Andrew Pinski  <apinski@marvell.com>
14040         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
14041         expr.cc.
14042         (fold_single_bit_test): Likewise.
14043         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
14044         (fold_single_bit_test): Likewise and make static.
14045         * fold-const.h (fold_single_bit_test): Remove declaration.
14047 2023-05-20  Die Li  <lidie@eswincomputing.com>
14049         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
14050         checking.
14052 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
14054         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
14056 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
14058         PR target/106888
14059         * config/riscv/bitmanip.md
14060         (<bitmanip_optab>disi2): Match with any_extend.
14061         (<bitmanip_optab>disi2_sext): New pattern to match
14062         with sign extend using an ANDI instruction.
14064 2023-05-19  Nathan Sidwell  <nathan@acm.org>
14066         PR other/99451
14067         * opts.h (handle_deferred_dump_options): Declare.
14068         * opts-global.cc (handle_common_deferred_options): Do not handle
14069         dump options here.
14070         (handle_deferred_dump_options): New.
14071         * toplev.cc (toplev::main): Call it after plugin init.
14073 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
14075         * config/riscv/constraints.md (DsS, DsD): Restore agreement
14076         with shiftm1 mode attribute.
14078 2023-05-19  Andrew Pinski  <apinski@marvell.com>
14080         PR driver/33980
14081         * gcc.cc (default_compilers["@c-header"]): Add %w
14082         after the --output-pch.
14084 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
14086         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
14087         to hival, ASHIFT the corresponding regs.
14089 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
14091         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
14093 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
14095         PR tree-optimization/105776
14096         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
14097         non-NULL, allow division statement to have a cast as single imm use
14098         rather than comparison/condition.
14099         (match_arith_overflow): In that case remove the cast stmt in addition
14100         to the division statement.
14102 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
14104         PR tree-optimization/101856
14105         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
14106         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
14107         support it but umul_highpart_optab does.
14109 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
14111         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
14112         of tree_to_shwi on array indices.  Minor tweaks.
14114 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14116         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
14117         * attribs.cc (diag_attr_exclusions): Ditto.
14118         (decl_attributes): Ditto.
14119         (build_type_attribute_qual_variant): Ditto.
14120         * builtins.cc (fold_builtin_carg): Ditto.
14121         (fold_builtin_next_arg): Ditto.
14122         (do_mpc_arg2): Ditto.
14123         * cfgexpand.cc (expand_return): Ditto.
14124         * cgraph.h (decl_in_symtab_p): Ditto.
14125         (symtab_node::get_create): Ditto.
14126         * dwarf2out.cc (base_type_die): Ditto.
14127         (implicit_ptr_descriptor): Ditto.
14128         (gen_array_type_die): Ditto.
14129         (gen_type_die_with_usage): Ditto.
14130         (optimize_location_into_implicit_ptr): Ditto.
14131         * expr.cc (do_store_flag): Ditto.
14132         * fold-const.cc (negate_expr_p): Ditto.
14133         (fold_negate_expr_1): Ditto.
14134         (fold_convert_const): Ditto.
14135         (fold_convert_loc): Ditto.
14136         (constant_boolean_node): Ditto.
14137         (fold_binary_op_with_conditional_arg): Ditto.
14138         (build_fold_addr_expr_with_type_loc): Ditto.
14139         (fold_comparison): Ditto.
14140         (fold_checksum_tree): Ditto.
14141         (tree_unary_nonnegative_warnv_p): Ditto.
14142         (integer_valued_real_unary_p): Ditto.
14143         (fold_read_from_constant_string): Ditto.
14144         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
14145         * gimple-expr.cc (useless_type_conversion_p): Ditto.
14146         (is_gimple_reg): Ditto.
14147         (is_gimple_asm_val): Ditto.
14148         (mark_addressable): Ditto.
14149         * gimple-expr.h (is_gimple_variable): Ditto.
14150         (virtual_operand_p): Ditto.
14151         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
14152         * gimplify.cc (gimplify_bind_expr): Ditto.
14153         (gimplify_return_expr): Ditto.
14154         (gimple_add_padding_init_for_auto_var): Ditto.
14155         (gimplify_addr_expr): Ditto.
14156         (omp_add_variable): Ditto.
14157         (omp_notice_variable): Ditto.
14158         (omp_get_base_pointer): Ditto.
14159         (omp_strip_components_and_deref): Ditto.
14160         (omp_strip_indirections): Ditto.
14161         (omp_accumulate_sibling_list): Ditto.
14162         (omp_build_struct_sibling_lists): Ditto.
14163         (gimplify_adjust_omp_clauses_1): Ditto.
14164         (gimplify_adjust_omp_clauses): Ditto.
14165         (gimplify_omp_for): Ditto.
14166         (goa_lhs_expr_p): Ditto.
14167         (gimplify_one_sizepos): Ditto.
14168         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
14169         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
14170         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
14171         (propagate_controlled_uses): Ditto.
14172         * ipa-sra.cc (type_prevails_p): Ditto.
14173         (scan_expr_access): Ditto.
14174         * optabs-tree.cc (optab_for_tree_code): Ditto.
14175         * toplev.cc (wrapup_global_declaration_1): Ditto.
14176         * trans-mem.cc (transaction_invariant_address_p): Ditto.
14177         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
14178         (verify_gimple_comparison): Ditto.
14179         (verify_gimple_assign_binary): Ditto.
14180         (verify_gimple_assign_single): Ditto.
14181         * tree-complex.cc (get_component_ssa_name): Ditto.
14182         * tree-emutls.cc (lower_emutls_2): Ditto.
14183         * tree-inline.cc (copy_tree_body_r): Ditto.
14184         (estimate_move_cost): Ditto.
14185         (copy_decl_for_dup_finish): Ditto.
14186         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
14187         (note_nonlocal_vla_type): Ditto.
14188         (convert_local_omp_clauses): Ditto.
14189         (remap_vla_decls): Ditto.
14190         (fixup_vla_decls): Ditto.
14191         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
14192         * tree-pretty-print.cc (print_declaration): Ditto.
14193         (print_call_name): Ditto.
14194         * tree-sra.cc (compare_access_positions): Ditto.
14195         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
14196         * tree-ssa-ccp.cc (get_default_value): Ditto.
14197         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
14198         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
14199         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
14200         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
14201         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
14202         * tree-ssa-sink.cc (statement_sink_location): Ditto.
14203         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
14204         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
14205         * tree-ssa-uninit.cc (warn_uninit): Ditto.
14206         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
14207         (non_rewritable_mem_ref_base): Ditto.
14208         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
14209         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
14210         * tree-vect-generic.cc (do_binop): Ditto.
14211         (do_cond): Ditto.
14212         * tree-vect-stmts.cc (vect_init_vector): Ditto.
14213         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
14214         * tree.cc (sign_mask_for): Ditto.
14215         (verify_type_variant): Ditto.
14216         (gimple_canonical_types_compatible_p): Ditto.
14217         (verify_type): Ditto.
14218         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
14219         * var-tracking.cc (prepare_call_arguments): Ditto.
14220         (vt_add_function_parameters): Ditto.
14221         * varasm.cc (decode_addr_const): Ditto.
14223 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14225         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
14226         (lower_reduction_clauses): Ditto.
14227         (lower_send_clauses): Ditto.
14228         (lower_omp_task_reductions): Ditto.
14229         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
14230         (worker_single_copy): Ditto.
14231         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
14232         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
14234 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14236         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
14237         tree.h.
14238         (lto_read_body_or_constructor): Ditto.
14239         * lto-streamer-out.cc (tree_is_indexable): Ditto.
14240         (lto_output_var_decl_ref): Ditto.
14241         (DFS::DFS_write_tree_body): Ditto.
14242         (wrap_refs): Ditto.
14243         (write_symbol_extension_info): Ditto.
14245 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
14247         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
14248         defines from tree.h.
14249         (aarch64_mangle_type): Ditto.
14250         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
14251         (alpha_gimplify_va_arg_1): Ditto.
14252         * config/arc/arc.cc (arc_encode_section_info): Ditto.
14253         (arc_is_aux_reg_p): Ditto.
14254         (arc_is_uncached_mem_p): Ditto.
14255         (arc_handle_aux_attribute): Ditto.
14256         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
14257         (arm_handle_cmse_nonsecure_call): Ditto.
14258         (arm_set_default_type_attributes): Ditto.
14259         (arm_is_segment_info_known): Ditto.
14260         (arm_mangle_type): Ditto.
14261         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
14262         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
14263         (avr_decl_absdata_p): Ditto.
14264         (avr_insert_attributes): Ditto.
14265         (avr_section_type_flags): Ditto.
14266         (avr_encode_section_info): Ditto.
14267         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
14268         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
14269         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
14270         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
14271         (csky_mangle_type): Ditto.
14272         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
14273         * config/darwin.cc (is_objc_metadata): Ditto.
14274         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
14275         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
14276         * config/frv/frv.cc (frv_emit_movsi): Ditto.
14277         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
14278         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
14279         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
14280         * config/i386/i386-expand.cc: Ditto.
14281         * config/i386/i386.cc (type_natural_mode): Ditto.
14282         (ix86_function_arg): Ditto.
14283         (ix86_data_alignment): Ditto.
14284         (ix86_local_alignment): Ditto.
14285         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
14286         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
14287         (i386_pe_type_dllexport_p): Ditto.
14288         (i386_pe_adjust_class_at_definition): Ditto.
14289         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
14290         (i386_pe_binds_local_p): Ditto.
14291         (i386_pe_section_type_flags): Ditto.
14292         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
14293         (ia64_gimplify_va_arg): Ditto.
14294         (ia64_in_small_data_p): Ditto.
14295         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
14296         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
14297         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
14298         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
14299         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
14300         (mcore_encode_section_info): Ditto.
14301         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
14302         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
14303         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
14304         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
14305         (pass_in_memory): Ditto.
14306         (nvptx_generate_vector_shuffle): Ditto.
14307         (nvptx_lockless_update): Ditto.
14308         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
14309         (pa_function_value): Ditto.
14310         (pa_function_arg): Ditto.
14311         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
14312         (TEXT_SPACE_P): Ditto.
14313         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
14314         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
14315         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
14316         (riscv_mangle_type): Ditto.
14317         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
14318         (rl78_addsi3_internal): Ditto.
14319         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
14320         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
14321         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
14322         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
14323         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
14324         (rs6000_function_arg_advance_1): Ditto.
14325         (rs6000_function_arg): Ditto.
14326         (rs6000_pass_by_reference): Ditto.
14327         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
14328         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
14329         (rs6000_set_default_type_attributes): Ditto.
14330         (rs6000_elf_in_small_data_p): Ditto.
14331         (IN_NAMED_SECTION): Ditto.
14332         (rs6000_xcoff_encode_section_info): Ditto.
14333         (rs6000_function_value): Ditto.
14334         (invalid_arg_for_unprototyped_fn): Ditto.
14335         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
14336         (s390_vec_n_elem): Ditto.
14337         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
14338         (s390_function_arg_integer): Ditto.
14339         (s390_return_in_memory): Ditto.
14340         (s390_encode_section_info): Ditto.
14341         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
14342         (sh_function_value): Ditto.
14343         * config/sol2.cc (solaris_insert_attributes): Ditto.
14344         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
14345         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
14346         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
14347         (xstormy16_handle_below100_attribute): Ditto.
14348         * config/v850/v850.cc (v850_encode_section_info): Ditto.
14349         (v850_insert_attributes): Ditto.
14350         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
14351         (visium_return_in_memory): Ditto.
14352         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
14354 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
14356         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
14357         (ix86_expand_vecop_qihi): Add op2vec bool variable.
14358         Do not set REG_EQUAL note.
14359         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
14360         Add prototype.
14361         * config/i386/i386.cc (ix86_multiplication_cost): Handle
14362         V4QImode and V8QImode.
14363         * config/i386/mmx.md (mulv8qi3): New expander.
14364         (mulv4qi3): Ditto.
14365         * config/i386/sse.md (mulv8qi3): Remove.
14367 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
14369         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
14371 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
14373         PR bootstrap/105831
14374         * config.gcc: Use = operator instead of ==.
14376 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
14378         PR bootstrap/105831
14379         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
14380         * configure.ac: Likewise.
14381         * configure: Regenerate.
14383 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
14385         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
14386         (__ARM_mve_coerce1): Remove.
14387         (__ARM_mve_coerce2): Remove.
14388         (__ARM_mve_coerce3): Remove.
14389         (__ARM_mve_coerce_i_scalar): New.
14390         (__ARM_mve_coerce_s8_ptr): New.
14391         (__ARM_mve_coerce_u8_ptr): New.
14392         (__ARM_mve_coerce_s16_ptr): New.
14393         (__ARM_mve_coerce_u16_ptr): New.
14394         (__ARM_mve_coerce_s32_ptr): New.
14395         (__ARM_mve_coerce_u32_ptr): New.
14396         (__ARM_mve_coerce_s64_ptr): New.
14397         (__ARM_mve_coerce_u64_ptr): New.
14398         (__ARM_mve_coerce_f_scalar): New.
14399         (__ARM_mve_coerce_f16_ptr): New.
14400         (__ARM_mve_coerce_f32_ptr): New.
14401         (__arm_vst4q): Change _coerce_ overloads.
14402         (__arm_vbicq): Change _coerce_ overloads.
14403         (__arm_vld1q): Change _coerce_ overloads.
14404         (__arm_vld1q_z): Change _coerce_ overloads.
14405         (__arm_vld2q): Change _coerce_ overloads.
14406         (__arm_vld4q): Change _coerce_ overloads.
14407         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
14408         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
14409         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
14410         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
14411         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
14412         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
14413         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
14414         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
14415         (__arm_vst1q_p): Change _coerce_ overloads.
14416         (__arm_vst2q): Change _coerce_ overloads.
14417         (__arm_vst1q): Change _coerce_ overloads.
14418         (__arm_vstrhq): Change _coerce_ overloads.
14419         (__arm_vstrhq_p): Change _coerce_ overloads.
14420         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
14421         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
14422         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
14423         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
14424         (__arm_vstrwq_p): Change _coerce_ overloads.
14425         (__arm_vstrwq): Change _coerce_ overloads.
14426         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
14427         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
14428         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
14429         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
14430         (__arm_vsetq_lane): Change _coerce_ overloads.
14431         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
14432         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
14433         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
14434         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
14435         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
14436         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
14437         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
14438         (__arm_vidupq_x_u8): Change _coerce_ overloads.
14439         (__arm_vddupq_x_u8): Change _coerce_ overloads.
14440         (__arm_vidupq_x_u16): Change _coerce_ overloads.
14441         (__arm_vddupq_x_u16): Change _coerce_ overloads.
14442         (__arm_vidupq_x_u32): Change _coerce_ overloads.
14443         (__arm_vddupq_x_u32): Change _coerce_ overloads.
14444         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
14445         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
14446         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
14447         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
14448         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
14449         (__arm_vidupq_u16): Change _coerce_ overloads.
14450         (__arm_vidupq_u32): Change _coerce_ overloads.
14451         (__arm_vidupq_u8): Change _coerce_ overloads.
14452         (__arm_vddupq_u16): Change _coerce_ overloads.
14453         (__arm_vddupq_u32): Change _coerce_ overloads.
14454         (__arm_vddupq_u8): Change _coerce_ overloads.
14455         (__arm_viwdupq_m): Change _coerce_ overloads.
14456         (__arm_viwdupq_u16): Change _coerce_ overloads.
14457         (__arm_viwdupq_u32): Change _coerce_ overloads.
14458         (__arm_viwdupq_u8): Change _coerce_ overloads.
14459         (__arm_vdwdupq_m): Change _coerce_ overloads.
14460         (__arm_vdwdupq_u16): Change _coerce_ overloads.
14461         (__arm_vdwdupq_u32): Change _coerce_ overloads.
14462         (__arm_vdwdupq_u8): Change _coerce_ overloads.
14463         (__arm_vstrbq): Change _coerce_ overloads.
14464         (__arm_vstrbq_p): Change _coerce_ overloads.
14465         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
14466         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
14467         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
14468         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
14469         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
14471 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
14473         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
14474         scalar constant.
14476 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
14478         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
14479         (__arm_vadcq_u32): Likewise.
14480         (__arm_vadcq_m_s32): Likewise.
14481         (__arm_vadcq_m_u32): Likewise.
14482         (__arm_vsbcq_s32): Likewise.
14483         (__arm_vsbcq_u32): Likewise.
14484         (__arm_vsbcq_m_s32): Likewise.
14485         (__arm_vsbcq_m_u32): Likewise.
14486         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
14488 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
14490         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
14491         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
14492         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
14493         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
14494         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
14495         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
14496         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
14497         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
14498         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
14499         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
14500         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
14501         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
14502         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
14503         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
14504         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
14505         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
14506         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
14507         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
14508         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
14509         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
14510         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
14511         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
14512         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
14513         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
14514         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
14515         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
14516         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
14517         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
14518         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
14519         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
14520         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
14521         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
14522         (mve_vorrq_m_f<mode>)
14523         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
14524         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
14525         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
14526         capitalization in the emitted asm.
14528 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
14530         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
14531         predicates.md.
14532         (Ri): Move constraint definition from predicates.md.
14533         (Rl): Define new constraint.
14534         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
14535         missing constraint.
14536         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
14537         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
14538         op 2. Fix asm output spacing.
14539         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
14540         * config/arm/predicates.md (Ri) Move constraint to constraints.md
14541         (mve_vldrd_immediate): Move it from
14542         constraints.md.
14543         (mve_vstrw_immediate): New predicate.
14545 2023-05-18  Pan Li  <pan2.li@intel.com>
14546             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
14547             Kito Cheng  <kito.cheng@sifive.com>
14548             Richard Biener  <rguenther@suse.de>
14549             Richard Sandiford  <richard.sandiford@arm.com>
14551         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
14552         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
14553         (struct table_elt): Extend machine_mode to 16 bits.
14554         (struct set): Ditto.
14555         * genmodes.cc (emit_mode_wider): Extend type from char to short.
14556         (emit_mode_complex): Ditto.
14557         (emit_mode_inner): Ditto.
14558         (emit_class_narrowest_mode): Ditto.
14559         * genopinit.cc (main): Extend the machine_mode limit.
14560         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
14561         re-ordered the struct fields for padding.
14562         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
14563         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
14564         (get_mode_alignment): Extend type from char to short.
14565         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
14566         removed the ATTRIBUTE_PACKED.
14567         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
14568         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
14569         m_kind to 2 bits and remove m_spare.
14570         * rtl.h (RTX_CODE_BITSIZE): New macro.
14571         (struct rtx_def): Swap both the bit size and location between the
14572         rtx_code and the machine_mode.
14573         (subreg_shape::unique_id): Extend the machine_mode limit.
14574         * rtlanal.h: Extend machine_mode to 16 bits.
14575         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
14576         bits and re-ordered the struct fields for padding.
14577         (struct tree_decl_common): Extend machine_mode to 16 bits.
14579 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
14581         * genrecog.cc (print_nonbool_test): Fix type error of
14582         switch (SUBREG_BYTE (op))'.
14584 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
14586         * common/config/riscv/riscv-common.cc: Remove
14587         trailing spaces on lines.
14588         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
14589         * config/riscv/riscv.h (enum reg_class): Likewise.
14590         * config/riscv/riscv.md: Likewise.
14592 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
14594         * config/pa/pa.md (clear_cache): New.
14596 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
14598         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
14599         parenthesis.  Fix misnamed index entry.
14600         <concept>: Fix misnamed index entry.
14602 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
14604         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
14605         combined from ...
14606         (*<optab>si3_mask, *<optab>di3_mask): Here.
14607         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
14608         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
14609         pattern.
14610         (*<bitmanip_optab>si3_sext_mask): Likewise.
14611         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
14612         and const_di_mask_operand.
14613         (bitmanip_rotate): New iterator.
14614         (bitmanip_optab): Add rotates.
14615         * config/riscv/predicates.md (const_si_mask_operand): Renamed
14616         from const31_operand.  Generalize to handle more mask constants.
14617         (const_di_mask_operand): Similarly.
14619 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
14621         PR c++/109884
14622         * config/i386/i386-builtin-types.def (FLOAT128): Use
14623         float128t_type_node rather than float128_type_node.
14625 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
14627         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
14628         FP_CONTRACT_FAST (no functional change).
14630 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
14632         * config/i386/i386.cc (ix86_multiplication_cost): Correct
14633         calcuation of integer vector mode costs to reflect generated
14634         instruction sequences of different integer vector modes and
14635         different target ABIs.
14637 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14639         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
14640         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
14641         (riscv_mode_needed): Ditto.
14642         (riscv_mode_after): Ditto.
14643         (riscv_mode_entry): Ditto.
14644         (riscv_mode_exit): Ditto.
14645         (riscv_mode_priority): Ditto.
14646         (TARGET_MODE_EMIT): New target hook.
14647         (TARGET_MODE_NEEDED): Ditto.
14648         (TARGET_MODE_AFTER): Ditto.
14649         (TARGET_MODE_ENTRY): Ditto.
14650         (TARGET_MODE_EXIT): Ditto.
14651         (TARGET_MODE_PRIORITY): Ditto.
14652         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
14653         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
14654         * config/riscv/riscv.md: Add csrwvxrm.
14655         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
14656         (vxrmsi): New pattern.
14658 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14660         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
14661         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
14662         (struct narrow_alu_def): Ditto.
14663         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
14664         (function_expander::use_exact_insn): Ditto.
14665         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
14666         (function_base::has_rounding_mode_operand_p): New function.
14668 2023-05-17  Andrew Pinski  <apinski@marvell.com>
14670         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
14671         against 0 instead of calling integer_zerop.
14673 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14675         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
14676         (DEF_RVV_VXRM_ENUM): New macro.
14677         (handle_pragma_vector): Add vxrm enum register.
14678         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
14679         (RNU): Ditto.
14680         (RNE): Ditto.
14681         (RDN): Ditto.
14682         (ROD): Ditto.
14684 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
14686         * value-range.h (Value_Range::operator=): New.
14688 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
14690         * value-range.cc (vrange::operator=): Add a stub to copy
14691         unsupported ranges.
14692         * value-range.h (is_a <unsupported_range>): New.
14693         (Value_Range::operator=): Support copying unsupported ranges.
14695 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
14697         * data-streamer-in.cc (streamer_read_real_value): New.
14698         (streamer_read_value_range): New.
14699         * data-streamer-out.cc (streamer_write_real_value): New.
14700         (streamer_write_vrange): New.
14701         * data-streamer.h (streamer_write_vrange): New.
14702         (streamer_read_value_range): New.
14704 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
14706         PR c++/109532
14707         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
14708         is ignored for a fixed underlying type.
14709         (C++ Dialect Options): Likewise for -fstrict-enums.
14711 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
14713         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
14714         special case.
14716 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
14718         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
14719         New.
14720         (s390_atomic_align_for_mode): New.
14722 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
14724         * wide-int.cc (wi::from_array): Add missing closing paren in function
14725         comment.
14727 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
14729         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
14730         suggested unroll factor once the previous analysis fails.
14732 2023-05-17  Pan Li  <pan2.li@intel.com>
14734         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
14735         macro.
14736         (main): Add bool1 to the type indexer.
14737         * config/riscv/riscv-vector-builtins-functions.def
14738         (vreinterpret): Register vbool1 interpret function.
14739         * config/riscv/riscv-vector-builtins-types.def
14740         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
14741         (vint8m1_t): Add the type to bool1_interpret_ops.
14742         (vint16m1_t): Ditto.
14743         (vint32m1_t): Ditto.
14744         (vint64m1_t): Ditto.
14745         (vuint8m1_t): Ditto.
14746         (vuint16m1_t): Ditto.
14747         (vuint32m1_t): Ditto.
14748         (vuint64m1_t): Ditto.
14749         * config/riscv/riscv-vector-builtins.cc
14750         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
14751         (required_extensions_p): Add bool1 interpret case.
14752         * config/riscv/riscv-vector-builtins.def
14753         (bool1_interpret): Add bool1 interpret to base type.
14754         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
14755         with VB dest for vreinterpret.
14757 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
14759         PR target/106708
14760         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
14761         constants through "lis; xoris".
14763 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
14765         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
14766         default rs6000 target pass for O2 and above.
14767         * doc/invoke.texi: Document -free
14769 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
14771         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
14772         Fix wrong select_kind...
14774 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
14776         * config/s390/s390-protos.h (s390_expand_setmem): Change
14777         function signature.
14778         * config/s390/s390.cc (s390_expand_setmem): For memset's less
14779         than or equal to 256 byte do not perform a libc call.
14780         * config/s390/s390.md: Change expander into a version which
14781         takes 8 operands.
14783 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
14785         * config/s390/s390-protos.h (s390_expand_movmem): New.
14786         * config/s390/s390.cc (s390_expand_movmem): New.
14787         * config/s390/s390.md (movmem<mode>): New.
14788         (*mvcrl): New.
14789         (mvcrl): New.
14791 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
14793         * config/s390/s390-protos.h (s390_expand_cpymem): Change
14794         function signature.
14795         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
14796         than or equal to 256 byte do not perform a libc call.
14797         (s390_expand_insv): Adapt new function signature of
14798         s390_expand_cpymem.
14799         * config/s390/s390.md: Change expander into a version which
14800         takes 8 operands.
14802 2023-05-16  Andrew Pinski  <apinski@marvell.com>
14804         PR tree-optimization/109424
14805         * match.pd: Add patterns for min/max of zero_one_valued
14806         values to `&`/`|`.
14808 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14810         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
14811         * config/riscv/riscv-vector-builtins.cc
14812         (function_expander::use_ternop_insn): Add default rounding mode.
14813         (function_expander::use_widen_ternop_insn): Ditto.
14814         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
14815         (riscv_hard_regno_mode_ok): Ditto.
14816         (riscv_conditional_register_usage): Ditto.
14817         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
14818         (FRM_REG_P): Ditto.
14819         (RISCV_DWARF_FRM): Ditto.
14820         * config/riscv/riscv.md: Ditto.
14821         * config/riscv/vector-iterators.md: split no frm and has frm operations.
14822         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
14823         (@pred_<optab><mode>): Ditto.
14825 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
14827         PR tree-optimization/109695
14828         * value-range.cc (irange::operator=): Resize range.
14829         (irange::union_): Same.
14830         (irange::intersect): Same.
14831         (irange::invert): Same.
14832         (int_range_max): Default to 3 sub-ranges and resize as needed.
14833         * value-range.h (irange::maybe_resize): New.
14834         (~int_range): New.
14835         (int_range::int_range): Adjust for resizing.
14836         (int_range::operator=): Same.
14838 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
14840         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
14841         range copying
14842         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
14843         when range changed.
14845 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14847         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
14848         * config/riscv/riscv-vector-builtins.cc
14849         (function_expander::use_exact_insn): Add default rounding mode operand.
14850         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
14851         (riscv_hard_regno_mode_ok): Ditto.
14852         (riscv_conditional_register_usage): Ditto.
14853         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
14854         (VXRM_REG_P): Ditto.
14855         (RISCV_DWARF_VXRM): Ditto.
14856         * config/riscv/riscv.md: Ditto.
14857         * config/riscv/vector.md: Ditto
14859 2023-05-15  Pan Li  <pan2.li@intel.com>
14861         * optabs.cc (maybe_gen_insn): Add case to generate instruction
14862         that has 11 operands.
14864 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14866         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
14867         logic for vector modes.
14869 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14871         PR target/99195
14872         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
14873         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
14874         (aarch64_cmtst<mode>): Rename to...
14875         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
14876         (*aarch64_cmtst_same_<mode>): Rename to...
14877         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
14878         (*aarch64_cmtstdi): Rename to...
14879         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
14880         (aarch64_fac<optab><mode>): Rename to...
14881         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
14883 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14885         PR target/99195
14886         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
14887         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
14889 2023-05-15  Pan Li  <pan2.li@intel.com>
14890             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14891             kito-cheng  <kito.cheng@sifive.com>
14893         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
14894         deciding the mode is constant or not.
14895         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
14897 2023-05-15  Richard Biener  <rguenther@suse.de>
14899         PR tree-optimization/109848
14900         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
14901         TARGET_MEM_REF address preparation before the store, not
14902         before the CTOR.
14904 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14906         * config/riscv/riscv.cc
14907         (riscv_vectorize_preferred_vector_alignment): New function.
14908         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
14910 2023-05-14  Andrew Pinski  <apinski@marvell.com>
14912         PR tree-optimization/109829
14913         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
14915 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
14917         PR target/109807
14918         * config/i386/i386.cc: Revert the 2023-05-11 change.
14919         (ix86_widen_mult_cost): Return high value instead of
14920         ICEing for unsupported modes.
14922 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
14924         * config/i386/i386.cc (x86_function_profiler): Take
14925         ix86_direct_extern_access into account when generating calls
14926         to __fentry__()
14928 2023-05-14  Pan Li  <pan2.li@intel.com>
14930         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
14931         Refactor the or pattern to switch cases.
14933 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
14935         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
14936         aarch64_expand_vector_init to this, and remove  interleaving case.
14937         Recursively call aarch64_expand_vector_init_fallback, instead of
14938         aarch64_expand_vector_init.
14939         (aarch64_unzip_vector_init): New function.
14940         (aarch64_expand_vector_init): Likewise.
14942 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
14944         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
14945         Pull out function call from the gcc_assert.
14947 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
14949         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
14950         (policy_to_str): New.
14951         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
14953 2023-05-13  Andrew Pinski  <apinski@marvell.com>
14955         PR tree-optimization/109834
14956         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
14957         (popcount(rotate(x,y))->popcount(x)): Likewise.
14959 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
14961         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
14962         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
14963         gen_extend_insn to generate zero/sign extension instructions.
14964         Fix comments.
14965         (ix86_expand_vecop_qihi): Initialize interleave functions
14966         for MULT code only.  Fix comments.
14968 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
14970         PR target/109797
14971         * config/i386/mmx.md (mulv2si3): Remove expander.
14972         (mulv2si3): Rename insn pattern from *mulv2si.
14974 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
14976         PR libstdc++/109816
14977         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
14978         '!lto_stream_offload_p'.
14980 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
14981             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14983         PR target/109743
14984         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
14985         (local_avl_compatible_p): New.
14986         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
14987         for LCM, rewrite as a backward algorithm.
14988         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
14989         interface, handle a BB at once.
14991 2023-05-12  Richard Biener  <rguenther@suse.de>
14993         PR tree-optimization/64731
14994         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
14995         handle TARGET_MEM_REF destinations of stores from vector
14996         CTORs.
14998 2023-05-12  Richard Biener  <rguenther@suse.de>
15000         PR tree-optimization/109791
15001         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
15002         New pattern.
15003         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
15004         Likewise.
15006 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15008         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
15009         * config/arm/arm-mve-builtins-base.def (vsriq): New.
15010         * config/arm/arm-mve-builtins-base.h (vsriq): New.
15011         * config/arm/arm-mve-builtins.cc
15012         (function_instance::has_inactive_argument): Handle vsriq.
15013         * config/arm/arm_mve.h (vsriq): Remove.
15014         (vsriq_m): Remove.
15015         (vsriq_n_u8): Remove.
15016         (vsriq_n_s8): Remove.
15017         (vsriq_n_u16): Remove.
15018         (vsriq_n_s16): Remove.
15019         (vsriq_n_u32): Remove.
15020         (vsriq_n_s32): Remove.
15021         (vsriq_m_n_s8): Remove.
15022         (vsriq_m_n_u8): Remove.
15023         (vsriq_m_n_s16): Remove.
15024         (vsriq_m_n_u16): Remove.
15025         (vsriq_m_n_s32): Remove.
15026         (vsriq_m_n_u32): Remove.
15027         (__arm_vsriq_n_u8): Remove.
15028         (__arm_vsriq_n_s8): Remove.
15029         (__arm_vsriq_n_u16): Remove.
15030         (__arm_vsriq_n_s16): Remove.
15031         (__arm_vsriq_n_u32): Remove.
15032         (__arm_vsriq_n_s32): Remove.
15033         (__arm_vsriq_m_n_s8): Remove.
15034         (__arm_vsriq_m_n_u8): Remove.
15035         (__arm_vsriq_m_n_s16): Remove.
15036         (__arm_vsriq_m_n_u16): Remove.
15037         (__arm_vsriq_m_n_s32): Remove.
15038         (__arm_vsriq_m_n_u32): Remove.
15039         (__arm_vsriq): Remove.
15040         (__arm_vsriq_m): Remove.
15042 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15044         * config/arm/iterators.md (mve_insn): Add vsri.
15045         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
15046         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
15047         (mve_vsriq_m_n_<supf><mode>): Rename into ...
15048         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15050 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15052         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
15053         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
15055 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15057         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
15058         * config/arm/arm-mve-builtins-base.def (vsliq): New.
15059         * config/arm/arm-mve-builtins-base.h (vsliq): New.
15060         * config/arm/arm-mve-builtins.cc
15061         (function_instance::has_inactive_argument): Handle vsliq.
15062         * config/arm/arm_mve.h (vsliq): Remove.
15063         (vsliq_m): Remove.
15064         (vsliq_n_u8): Remove.
15065         (vsliq_n_s8): Remove.
15066         (vsliq_n_u16): Remove.
15067         (vsliq_n_s16): Remove.
15068         (vsliq_n_u32): Remove.
15069         (vsliq_n_s32): Remove.
15070         (vsliq_m_n_s8): Remove.
15071         (vsliq_m_n_s32): Remove.
15072         (vsliq_m_n_s16): Remove.
15073         (vsliq_m_n_u8): Remove.
15074         (vsliq_m_n_u32): Remove.
15075         (vsliq_m_n_u16): Remove.
15076         (__arm_vsliq_n_u8): Remove.
15077         (__arm_vsliq_n_s8): Remove.
15078         (__arm_vsliq_n_u16): Remove.
15079         (__arm_vsliq_n_s16): Remove.
15080         (__arm_vsliq_n_u32): Remove.
15081         (__arm_vsliq_n_s32): Remove.
15082         (__arm_vsliq_m_n_s8): Remove.
15083         (__arm_vsliq_m_n_s32): Remove.
15084         (__arm_vsliq_m_n_s16): Remove.
15085         (__arm_vsliq_m_n_u8): Remove.
15086         (__arm_vsliq_m_n_u32): Remove.
15087         (__arm_vsliq_m_n_u16): Remove.
15088         (__arm_vsliq): Remove.
15089         (__arm_vsliq_m): Remove.
15091 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15093         * config/arm/iterators.md (mve_insn>): Add vsli.
15094         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
15095         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15096         (mve_vsliq_m_n_<supf><mode>): Rename into ...
15097         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15099 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15101         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
15102         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
15104 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15106         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
15107         * config/arm/arm-mve-builtins-base.def (vpselq): New.
15108         * config/arm/arm-mve-builtins-base.h (vpselq): New.
15109         * config/arm/arm_mve.h (vpselq): Remove.
15110         (vpselq_u8): Remove.
15111         (vpselq_s8): Remove.
15112         (vpselq_u16): Remove.
15113         (vpselq_s16): Remove.
15114         (vpselq_u32): Remove.
15115         (vpselq_s32): Remove.
15116         (vpselq_u64): Remove.
15117         (vpselq_s64): Remove.
15118         (vpselq_f16): Remove.
15119         (vpselq_f32): Remove.
15120         (__arm_vpselq_u8): Remove.
15121         (__arm_vpselq_s8): Remove.
15122         (__arm_vpselq_u16): Remove.
15123         (__arm_vpselq_s16): Remove.
15124         (__arm_vpselq_u32): Remove.
15125         (__arm_vpselq_s32): Remove.
15126         (__arm_vpselq_u64): Remove.
15127         (__arm_vpselq_s64): Remove.
15128         (__arm_vpselq_f16): Remove.
15129         (__arm_vpselq_f32): Remove.
15130         (__arm_vpselq): Remove.
15132 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15134         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
15135         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
15137 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15139         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
15140         gen_mve_vpselq.
15141         * config/arm/iterators.md (MVE_VPSELQ_F): New.
15142         (mve_insn): Add vpsel.
15143         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
15144         (@mve_<mve_insn>q_<supf><mode>): ... this.
15145         (@mve_vpselq_f<mode>): Rename into ...
15146         (@mve_<mve_insn>q_f<mode>): ... this.
15148 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15150         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
15151         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
15152         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
15153         * config/arm/arm-mve-builtins.cc
15154         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
15155         vfmsq.
15156         * config/arm/arm_mve.h (vfmaq): Remove.
15157         (vfmasq): Remove.
15158         (vfmsq): Remove.
15159         (vfmaq_m): Remove.
15160         (vfmasq_m): Remove.
15161         (vfmsq_m): Remove.
15162         (vfmaq_f16): Remove.
15163         (vfmaq_n_f16): Remove.
15164         (vfmasq_n_f16): Remove.
15165         (vfmsq_f16): Remove.
15166         (vfmaq_f32): Remove.
15167         (vfmaq_n_f32): Remove.
15168         (vfmasq_n_f32): Remove.
15169         (vfmsq_f32): Remove.
15170         (vfmaq_m_f32): Remove.
15171         (vfmaq_m_f16): Remove.
15172         (vfmaq_m_n_f32): Remove.
15173         (vfmaq_m_n_f16): Remove.
15174         (vfmasq_m_n_f32): Remove.
15175         (vfmasq_m_n_f16): Remove.
15176         (vfmsq_m_f32): Remove.
15177         (vfmsq_m_f16): Remove.
15178         (__arm_vfmaq_f16): Remove.
15179         (__arm_vfmaq_n_f16): Remove.
15180         (__arm_vfmasq_n_f16): Remove.
15181         (__arm_vfmsq_f16): Remove.
15182         (__arm_vfmaq_f32): Remove.
15183         (__arm_vfmaq_n_f32): Remove.
15184         (__arm_vfmasq_n_f32): Remove.
15185         (__arm_vfmsq_f32): Remove.
15186         (__arm_vfmaq_m_f32): Remove.
15187         (__arm_vfmaq_m_f16): Remove.
15188         (__arm_vfmaq_m_n_f32): Remove.
15189         (__arm_vfmaq_m_n_f16): Remove.
15190         (__arm_vfmasq_m_n_f32): Remove.
15191         (__arm_vfmasq_m_n_f16): Remove.
15192         (__arm_vfmsq_m_f32): Remove.
15193         (__arm_vfmsq_m_f16): Remove.
15194         (__arm_vfmaq): Remove.
15195         (__arm_vfmasq): Remove.
15196         (__arm_vfmsq): Remove.
15197         (__arm_vfmaq_m): Remove.
15198         (__arm_vfmasq_m): Remove.
15199         (__arm_vfmsq_m): Remove.
15201 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15203         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
15204         VFMSQ_M_F.
15205         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
15206         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
15207         (mve_insn): Add vfma, vfmas, vfms.
15208         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
15209         into ...
15210         (@mve_<mve_insn>q_f<mode>): ... this.
15211         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
15212         (@mve_<mve_insn>q_n_f<mode>): ... this.
15213         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
15214         @mve_<mve_insn>q_m_f<mode>.
15215         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
15216         @mve_<mve_insn>q_m_n_f<mode>.
15218 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15220         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
15221         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
15223 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15225         * config/arm/arm-mve-builtins-base.cc
15226         (FUNCTION_WITH_RTX_M_N_NO_F): New.
15227         (vmvnq): New.
15228         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
15229         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
15230         * config/arm/arm_mve.h (vmvnq): Remove.
15231         (vmvnq_m): Remove.
15232         (vmvnq_x): Remove.
15233         (vmvnq_s8): Remove.
15234         (vmvnq_s16): Remove.
15235         (vmvnq_s32): Remove.
15236         (vmvnq_n_s16): Remove.
15237         (vmvnq_n_s32): Remove.
15238         (vmvnq_u8): Remove.
15239         (vmvnq_u16): Remove.
15240         (vmvnq_u32): Remove.
15241         (vmvnq_n_u16): Remove.
15242         (vmvnq_n_u32): Remove.
15243         (vmvnq_m_u8): Remove.
15244         (vmvnq_m_s8): Remove.
15245         (vmvnq_m_u16): Remove.
15246         (vmvnq_m_s16): Remove.
15247         (vmvnq_m_u32): Remove.
15248         (vmvnq_m_s32): Remove.
15249         (vmvnq_m_n_s16): Remove.
15250         (vmvnq_m_n_u16): Remove.
15251         (vmvnq_m_n_s32): Remove.
15252         (vmvnq_m_n_u32): Remove.
15253         (vmvnq_x_s8): Remove.
15254         (vmvnq_x_s16): Remove.
15255         (vmvnq_x_s32): Remove.
15256         (vmvnq_x_u8): Remove.
15257         (vmvnq_x_u16): Remove.
15258         (vmvnq_x_u32): Remove.
15259         (vmvnq_x_n_s16): Remove.
15260         (vmvnq_x_n_s32): Remove.
15261         (vmvnq_x_n_u16): Remove.
15262         (vmvnq_x_n_u32): Remove.
15263         (__arm_vmvnq_s8): Remove.
15264         (__arm_vmvnq_s16): Remove.
15265         (__arm_vmvnq_s32): Remove.
15266         (__arm_vmvnq_n_s16): Remove.
15267         (__arm_vmvnq_n_s32): Remove.
15268         (__arm_vmvnq_u8): Remove.
15269         (__arm_vmvnq_u16): Remove.
15270         (__arm_vmvnq_u32): Remove.
15271         (__arm_vmvnq_n_u16): Remove.
15272         (__arm_vmvnq_n_u32): Remove.
15273         (__arm_vmvnq_m_u8): Remove.
15274         (__arm_vmvnq_m_s8): Remove.
15275         (__arm_vmvnq_m_u16): Remove.
15276         (__arm_vmvnq_m_s16): Remove.
15277         (__arm_vmvnq_m_u32): Remove.
15278         (__arm_vmvnq_m_s32): Remove.
15279         (__arm_vmvnq_m_n_s16): Remove.
15280         (__arm_vmvnq_m_n_u16): Remove.
15281         (__arm_vmvnq_m_n_s32): Remove.
15282         (__arm_vmvnq_m_n_u32): Remove.
15283         (__arm_vmvnq_x_s8): Remove.
15284         (__arm_vmvnq_x_s16): Remove.
15285         (__arm_vmvnq_x_s32): Remove.
15286         (__arm_vmvnq_x_u8): Remove.
15287         (__arm_vmvnq_x_u16): Remove.
15288         (__arm_vmvnq_x_u32): Remove.
15289         (__arm_vmvnq_x_n_s16): Remove.
15290         (__arm_vmvnq_x_n_s32): Remove.
15291         (__arm_vmvnq_x_n_u16): Remove.
15292         (__arm_vmvnq_x_n_u32): Remove.
15293         (__arm_vmvnq): Remove.
15294         (__arm_vmvnq_m): Remove.
15295         (__arm_vmvnq_x): Remove.
15297 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15299         * config/arm/iterators.md (mve_insn): Add vmvn.
15300         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
15301         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15302         (mve_vmvnq_m_<supf><mode>): Rename into ...
15303         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15304         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
15305         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15307 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15309         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
15310         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
15312 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15314         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
15315         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
15316         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
15317         * config/arm/arm_mve.h (vbrsrq): Remove.
15318         (vbrsrq_m): Remove.
15319         (vbrsrq_x): Remove.
15320         (vbrsrq_n_f16): Remove.
15321         (vbrsrq_n_f32): Remove.
15322         (vbrsrq_n_u8): Remove.
15323         (vbrsrq_n_s8): Remove.
15324         (vbrsrq_n_u16): Remove.
15325         (vbrsrq_n_s16): Remove.
15326         (vbrsrq_n_u32): Remove.
15327         (vbrsrq_n_s32): Remove.
15328         (vbrsrq_m_n_s8): Remove.
15329         (vbrsrq_m_n_s32): Remove.
15330         (vbrsrq_m_n_s16): Remove.
15331         (vbrsrq_m_n_u8): Remove.
15332         (vbrsrq_m_n_u32): Remove.
15333         (vbrsrq_m_n_u16): Remove.
15334         (vbrsrq_m_n_f32): Remove.
15335         (vbrsrq_m_n_f16): Remove.
15336         (vbrsrq_x_n_s8): Remove.
15337         (vbrsrq_x_n_s16): Remove.
15338         (vbrsrq_x_n_s32): Remove.
15339         (vbrsrq_x_n_u8): Remove.
15340         (vbrsrq_x_n_u16): Remove.
15341         (vbrsrq_x_n_u32): Remove.
15342         (vbrsrq_x_n_f16): Remove.
15343         (vbrsrq_x_n_f32): Remove.
15344         (__arm_vbrsrq_n_u8): Remove.
15345         (__arm_vbrsrq_n_s8): Remove.
15346         (__arm_vbrsrq_n_u16): Remove.
15347         (__arm_vbrsrq_n_s16): Remove.
15348         (__arm_vbrsrq_n_u32): Remove.
15349         (__arm_vbrsrq_n_s32): Remove.
15350         (__arm_vbrsrq_m_n_s8): Remove.
15351         (__arm_vbrsrq_m_n_s32): Remove.
15352         (__arm_vbrsrq_m_n_s16): Remove.
15353         (__arm_vbrsrq_m_n_u8): Remove.
15354         (__arm_vbrsrq_m_n_u32): Remove.
15355         (__arm_vbrsrq_m_n_u16): Remove.
15356         (__arm_vbrsrq_x_n_s8): Remove.
15357         (__arm_vbrsrq_x_n_s16): Remove.
15358         (__arm_vbrsrq_x_n_s32): Remove.
15359         (__arm_vbrsrq_x_n_u8): Remove.
15360         (__arm_vbrsrq_x_n_u16): Remove.
15361         (__arm_vbrsrq_x_n_u32): Remove.
15362         (__arm_vbrsrq_n_f16): Remove.
15363         (__arm_vbrsrq_n_f32): Remove.
15364         (__arm_vbrsrq_m_n_f32): Remove.
15365         (__arm_vbrsrq_m_n_f16): Remove.
15366         (__arm_vbrsrq_x_n_f16): Remove.
15367         (__arm_vbrsrq_x_n_f32): Remove.
15368         (__arm_vbrsrq): Remove.
15369         (__arm_vbrsrq_m): Remove.
15370         (__arm_vbrsrq_x): Remove.
15372 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15374         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
15375         (mve_insn): Add vbrsr.
15376         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
15377         (@mve_<mve_insn>q_n_f<mode>): ... this.
15378         (mve_vbrsrq_n_<supf><mode>): Rename into ...
15379         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15380         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
15381         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15382         (mve_vbrsrq_m_n_f<mode>): Rename into ...
15383         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
15385 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15387         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
15388         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
15390 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15392         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
15393         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
15394         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
15395         * config/arm/arm_mve.h (vqshluq): Remove.
15396         (vqshluq_m): Remove.
15397         (vqshluq_n_s8): Remove.
15398         (vqshluq_n_s16): Remove.
15399         (vqshluq_n_s32): Remove.
15400         (vqshluq_m_n_s8): Remove.
15401         (vqshluq_m_n_s16): Remove.
15402         (vqshluq_m_n_s32): Remove.
15403         (__arm_vqshluq_n_s8): Remove.
15404         (__arm_vqshluq_n_s16): Remove.
15405         (__arm_vqshluq_n_s32): Remove.
15406         (__arm_vqshluq_m_n_s8): Remove.
15407         (__arm_vqshluq_m_n_s16): Remove.
15408         (__arm_vqshluq_m_n_s32): Remove.
15409         (__arm_vqshluq): Remove.
15410         (__arm_vqshluq_m): Remove.
15412 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15414         * config/arm/iterators.md (mve_insn): Add vqshlu.
15415         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
15416         (VQSHLUQ_M_N, VQSHLUQ_N): New.
15417         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
15418         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15419         (mve_vqshluq_m_n_s<mode>): Change name into ...
15420         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15422 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15424         * config/arm/arm-mve-builtins-shapes.cc
15425         (binary_lshift_unsigned): New.
15426         * config/arm/arm-mve-builtins-shapes.h
15427         (binary_lshift_unsigned): New.
15429 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15431         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
15432         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
15433         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
15434         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
15435         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
15436         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
15437         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
15438         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
15439         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
15440         (vrmlaldavhaxq): Remove.
15441         (vrmlsldavhaq): Remove.
15442         (vrmlsldavhaxq): Remove.
15443         (vrmlaldavhaq_p): Remove.
15444         (vrmlaldavhaxq_p): Remove.
15445         (vrmlsldavhaq_p): Remove.
15446         (vrmlsldavhaxq_p): Remove.
15447         (vrmlaldavhaq_s32): Remove.
15448         (vrmlaldavhaq_u32): Remove.
15449         (vrmlaldavhaxq_s32): Remove.
15450         (vrmlsldavhaq_s32): Remove.
15451         (vrmlsldavhaxq_s32): Remove.
15452         (vrmlaldavhaq_p_s32): Remove.
15453         (vrmlaldavhaq_p_u32): Remove.
15454         (vrmlaldavhaxq_p_s32): Remove.
15455         (vrmlsldavhaq_p_s32): Remove.
15456         (vrmlsldavhaxq_p_s32): Remove.
15457         (__arm_vrmlaldavhaq_s32): Remove.
15458         (__arm_vrmlaldavhaq_u32): Remove.
15459         (__arm_vrmlaldavhaxq_s32): Remove.
15460         (__arm_vrmlsldavhaq_s32): Remove.
15461         (__arm_vrmlsldavhaxq_s32): Remove.
15462         (__arm_vrmlaldavhaq_p_s32): Remove.
15463         (__arm_vrmlaldavhaq_p_u32): Remove.
15464         (__arm_vrmlaldavhaxq_p_s32): Remove.
15465         (__arm_vrmlsldavhaq_p_s32): Remove.
15466         (__arm_vrmlsldavhaxq_p_s32): Remove.
15467         (__arm_vrmlaldavhaq): Remove.
15468         (__arm_vrmlaldavhaxq): Remove.
15469         (__arm_vrmlsldavhaq): Remove.
15470         (__arm_vrmlsldavhaxq): Remove.
15471         (__arm_vrmlaldavhaq_p): Remove.
15472         (__arm_vrmlaldavhaxq_p): Remove.
15473         (__arm_vrmlsldavhaq_p): Remove.
15474         (__arm_vrmlsldavhaxq_p): Remove.
15476 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15478         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
15479         (MVE_VRMLxLDAVHAxQ_P): New.
15480         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
15481         vrmlsldavhax.
15482         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
15483         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
15484         VRMLALDAVHAQ_P_S.
15485         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
15486         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
15487         (mve_vrmlsldavhaq_sv4si): Merge into ...
15488         (@mve_<mve_insn>q_<supf>v4si): ... this.
15489         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
15490         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
15491         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
15492         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
15494 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15496         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
15497         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
15498         New.
15499         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
15500         * config/arm/arm_mve.h (vqdmulltq): Remove.
15501         (vqdmullbq): Remove.
15502         (vqdmullbq_m): Remove.
15503         (vqdmulltq_m): Remove.
15504         (vqdmulltq_s16): Remove.
15505         (vqdmulltq_n_s16): Remove.
15506         (vqdmullbq_s16): Remove.
15507         (vqdmullbq_n_s16): Remove.
15508         (vqdmulltq_s32): Remove.
15509         (vqdmulltq_n_s32): Remove.
15510         (vqdmullbq_s32): Remove.
15511         (vqdmullbq_n_s32): Remove.
15512         (vqdmullbq_m_n_s32): Remove.
15513         (vqdmullbq_m_n_s16): Remove.
15514         (vqdmullbq_m_s32): Remove.
15515         (vqdmullbq_m_s16): Remove.
15516         (vqdmulltq_m_n_s32): Remove.
15517         (vqdmulltq_m_n_s16): Remove.
15518         (vqdmulltq_m_s32): Remove.
15519         (vqdmulltq_m_s16): Remove.
15520         (__arm_vqdmulltq_s16): Remove.
15521         (__arm_vqdmulltq_n_s16): Remove.
15522         (__arm_vqdmullbq_s16): Remove.
15523         (__arm_vqdmullbq_n_s16): Remove.
15524         (__arm_vqdmulltq_s32): Remove.
15525         (__arm_vqdmulltq_n_s32): Remove.
15526         (__arm_vqdmullbq_s32): Remove.
15527         (__arm_vqdmullbq_n_s32): Remove.
15528         (__arm_vqdmullbq_m_n_s32): Remove.
15529         (__arm_vqdmullbq_m_n_s16): Remove.
15530         (__arm_vqdmullbq_m_s32): Remove.
15531         (__arm_vqdmullbq_m_s16): Remove.
15532         (__arm_vqdmulltq_m_n_s32): Remove.
15533         (__arm_vqdmulltq_m_n_s16): Remove.
15534         (__arm_vqdmulltq_m_s32): Remove.
15535         (__arm_vqdmulltq_m_s16): Remove.
15536         (__arm_vqdmulltq): Remove.
15537         (__arm_vqdmullbq): Remove.
15538         (__arm_vqdmullbq_m): Remove.
15539         (__arm_vqdmulltq_m): Remove.
15541 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15543         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
15544         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
15545         (mve_insn): Add vqdmullb, vqdmullt.
15546         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
15547         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
15548         VQDMULLTQ_N_S.
15549         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
15550         (mve_vqdmulltq_n_s<mode>): Merge into ...
15551         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15552         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
15553         (@mve_<mve_insn>q_<supf><mode>): ... this.
15554         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
15555         ...
15556         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15557         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
15558         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15560 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
15562         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
15563         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
15565 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
15567         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
15568         Drop unused parameter.
15569         (riscv_select_multilib): Ditto.
15570         (riscv_compute_multilib): Update call site of
15571         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
15573 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
15575         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
15576         * config/riscv/riscv-protos.h (expand_vec_init): New function.
15577         * config/riscv/riscv-v.cc (class rvv_builder): New class.
15578         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
15579         (rvv_builder::get_merged_repeating_sequence): Ditto.
15580         (expand_vector_init_insert_elems): Ditto.
15581         (expand_vec_init): Ditto.
15582         * config/riscv/vector-iterators.md: New attribute.
15584 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
15586         * config/rs6000/rs6000-builtins.def
15587         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
15588         to xsiexpdp_di.
15589         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
15590         xsiexpdpf to xsiexpdpf_di.
15591         * config/rs6000/vsx.md (xsiexpdp): Rename to...
15592         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
15593         replace TARGET_64BIT with TARGET_POWERPC64.
15594         (xsiexpdpf): Rename to...
15595         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
15596         replace TARGET_64BIT with TARGET_POWERPC64.
15598 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
15600         * config/rs6000/rs6000-builtins.def
15601         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
15602         long long.
15603         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
15604         TARGET_POWERPC64.
15606 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
15608         * config/rs6000/rs6000-builtins.def
15609         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
15610         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
15611         to power9 catalog.
15612         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
15613         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
15614         TARGET_64BIT check.
15615         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
15616         requirement when it has a 64-bit argument.
15618 2023-05-12  Pan Li  <pan2.li@intel.com>
15619             Richard Sandiford  <richard.sandiford@arm.com>
15620             Richard Biener  <rguenther@suse.de>
15621             Jakub Jelinek  <jakub@redhat.com>
15623         * mux-utils.h: Add overload operator == and != for pointer_mux.
15624         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
15625         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
15626         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
15627         (dv_as_decl): Ditto.
15628         (dv_as_opaque): Removed due to unnecessary.
15629         (struct variable_hasher): Take decl_or_value as compare_type.
15630         (variable_hasher::equal): Diito.
15631         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
15632         (dv_from_value): Ditto.
15633         (attrs_list_member):  Ditto.
15634         (vars_copy): Ditto.
15635         (var_reg_decl_set): Ditto.
15636         (var_reg_delete_and_set): Ditto.
15637         (find_loc_in_1pdv): Ditto.
15638         (canonicalize_values_star): Ditto.
15639         (variable_post_merge_new_vals): Ditto.
15640         (dump_onepart_variable_differences): Ditto.
15641         (variable_different_p): Ditto.
15642         (set_slot_part): Ditto.
15643         (clobber_slot_part): Ditto.
15644         (clobber_variable_part): Ditto.
15646 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
15648         * match.pd: simplify vector shift + bit_and + multiply.
15650 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
15652         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
15653         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
15654         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
15655         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
15656         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
15657         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
15658         * config/arm/arm-mve-builtins.cc
15659         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
15660         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
15661         * config/arm/arm_mve.h (vqrdmlashq): Remove.
15662         (vqrdmlahq): Remove.
15663         (vqdmlashq): Remove.
15664         (vqdmlahq): Remove.
15665         (vmlasq): Remove.
15666         (vmlaq): Remove.
15667         (vmlaq_m): Remove.
15668         (vmlasq_m): Remove.
15669         (vqdmlashq_m): Remove.
15670         (vqdmlahq_m): Remove.
15671         (vqrdmlahq_m): Remove.
15672         (vqrdmlashq_m): Remove.
15673         (vmlasq_n_u8): Remove.
15674         (vmlaq_n_u8): Remove.
15675         (vqrdmlashq_n_s8): Remove.
15676         (vqrdmlahq_n_s8): Remove.
15677         (vqdmlahq_n_s8): Remove.
15678         (vqdmlashq_n_s8): Remove.
15679         (vmlasq_n_s8): Remove.
15680         (vmlaq_n_s8): Remove.
15681         (vmlasq_n_u16): Remove.
15682         (vmlaq_n_u16): Remove.
15683         (vqrdmlashq_n_s16): Remove.
15684         (vqrdmlahq_n_s16): Remove.
15685         (vqdmlashq_n_s16): Remove.
15686         (vqdmlahq_n_s16): Remove.
15687         (vmlasq_n_s16): Remove.
15688         (vmlaq_n_s16): Remove.
15689         (vmlasq_n_u32): Remove.
15690         (vmlaq_n_u32): Remove.
15691         (vqrdmlashq_n_s32): Remove.
15692         (vqrdmlahq_n_s32): Remove.
15693         (vqdmlashq_n_s32): Remove.
15694         (vqdmlahq_n_s32): Remove.
15695         (vmlasq_n_s32): Remove.
15696         (vmlaq_n_s32): Remove.
15697         (vmlaq_m_n_s8): Remove.
15698         (vmlaq_m_n_s32): Remove.
15699         (vmlaq_m_n_s16): Remove.
15700         (vmlaq_m_n_u8): Remove.
15701         (vmlaq_m_n_u32): Remove.
15702         (vmlaq_m_n_u16): Remove.
15703         (vmlasq_m_n_s8): Remove.
15704         (vmlasq_m_n_s32): Remove.
15705         (vmlasq_m_n_s16): Remove.
15706         (vmlasq_m_n_u8): Remove.
15707         (vmlasq_m_n_u32): Remove.
15708         (vmlasq_m_n_u16): Remove.
15709         (vqdmlashq_m_n_s8): Remove.
15710         (vqdmlashq_m_n_s32): Remove.
15711         (vqdmlashq_m_n_s16): Remove.
15712         (vqdmlahq_m_n_s8): Remove.
15713         (vqdmlahq_m_n_s32): Remove.
15714         (vqdmlahq_m_n_s16): Remove.
15715         (vqrdmlahq_m_n_s8): Remove.
15716         (vqrdmlahq_m_n_s32): Remove.
15717         (vqrdmlahq_m_n_s16): Remove.
15718         (vqrdmlashq_m_n_s8): Remove.
15719         (vqrdmlashq_m_n_s32): Remove.
15720         (vqrdmlashq_m_n_s16): Remove.
15721         (__arm_vmlasq_n_u8): Remove.
15722         (__arm_vmlaq_n_u8): Remove.
15723         (__arm_vqrdmlashq_n_s8): Remove.
15724         (__arm_vqdmlashq_n_s8): Remove.
15725         (__arm_vqrdmlahq_n_s8): Remove.
15726         (__arm_vqdmlahq_n_s8): Remove.
15727         (__arm_vmlasq_n_s8): Remove.
15728         (__arm_vmlaq_n_s8): Remove.
15729         (__arm_vmlasq_n_u16): Remove.
15730         (__arm_vmlaq_n_u16): Remove.
15731         (__arm_vqrdmlashq_n_s16): Remove.
15732         (__arm_vqdmlashq_n_s16): Remove.
15733         (__arm_vqrdmlahq_n_s16): Remove.
15734         (__arm_vqdmlahq_n_s16): Remove.
15735         (__arm_vmlasq_n_s16): Remove.
15736         (__arm_vmlaq_n_s16): Remove.
15737         (__arm_vmlasq_n_u32): Remove.
15738         (__arm_vmlaq_n_u32): Remove.
15739         (__arm_vqrdmlashq_n_s32): Remove.
15740         (__arm_vqdmlashq_n_s32): Remove.
15741         (__arm_vqrdmlahq_n_s32): Remove.
15742         (__arm_vqdmlahq_n_s32): Remove.
15743         (__arm_vmlasq_n_s32): Remove.
15744         (__arm_vmlaq_n_s32): Remove.
15745         (__arm_vmlaq_m_n_s8): Remove.
15746         (__arm_vmlaq_m_n_s32): Remove.
15747         (__arm_vmlaq_m_n_s16): Remove.
15748         (__arm_vmlaq_m_n_u8): Remove.
15749         (__arm_vmlaq_m_n_u32): Remove.
15750         (__arm_vmlaq_m_n_u16): Remove.
15751         (__arm_vmlasq_m_n_s8): Remove.
15752         (__arm_vmlasq_m_n_s32): Remove.
15753         (__arm_vmlasq_m_n_s16): Remove.
15754         (__arm_vmlasq_m_n_u8): Remove.
15755         (__arm_vmlasq_m_n_u32): Remove.
15756         (__arm_vmlasq_m_n_u16): Remove.
15757         (__arm_vqdmlahq_m_n_s8): Remove.
15758         (__arm_vqdmlahq_m_n_s32): Remove.
15759         (__arm_vqdmlahq_m_n_s16): Remove.
15760         (__arm_vqrdmlahq_m_n_s8): Remove.
15761         (__arm_vqrdmlahq_m_n_s32): Remove.
15762         (__arm_vqrdmlahq_m_n_s16): Remove.
15763         (__arm_vqrdmlashq_m_n_s8): Remove.
15764         (__arm_vqrdmlashq_m_n_s32): Remove.
15765         (__arm_vqrdmlashq_m_n_s16): Remove.
15766         (__arm_vqdmlashq_m_n_s8): Remove.
15767         (__arm_vqdmlashq_m_n_s16): Remove.
15768         (__arm_vqdmlashq_m_n_s32): Remove.
15769         (__arm_vmlasq): Remove.
15770         (__arm_vmlaq): Remove.
15771         (__arm_vqrdmlashq): Remove.
15772         (__arm_vqdmlashq): Remove.
15773         (__arm_vqrdmlahq): Remove.
15774         (__arm_vqdmlahq): Remove.
15775         (__arm_vmlaq_m): Remove.
15776         (__arm_vmlasq_m): Remove.
15777         (__arm_vqdmlahq_m): Remove.
15778         (__arm_vqrdmlahq_m): Remove.
15779         (__arm_vqrdmlashq_m): Remove.
15780         (__arm_vqdmlashq_m): Remove.
15782 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
15784         * config/arm/iterators.md (MVE_VMLxQ_N): New.
15785         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
15786         vqrdmlash.
15787         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
15788         VQRDMLASHQ_N_S.
15789         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
15790         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
15791         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
15792         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
15793         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15795 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
15797         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
15798         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
15800 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
15802         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
15803         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
15804         (vqrdmlsdhxq): New.
15805         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
15806         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
15807         (vqrdmlsdhxq): New.
15808         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
15809         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
15810         (vqrdmlsdhxq): New.
15811         * config/arm/arm-mve-builtins.cc
15812         (function_instance::has_inactive_argument): Handle vqrdmladhq,
15813         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
15814         vqdmlsdhq, vqdmlsdhxq.
15815         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
15816         (vqrdmlsdhq): Remove.
15817         (vqrdmladhxq): Remove.
15818         (vqrdmladhq): Remove.
15819         (vqdmlsdhxq): Remove.
15820         (vqdmlsdhq): Remove.
15821         (vqdmladhxq): Remove.
15822         (vqdmladhq): Remove.
15823         (vqdmladhq_m): Remove.
15824         (vqdmladhxq_m): Remove.
15825         (vqdmlsdhq_m): Remove.
15826         (vqdmlsdhxq_m): Remove.
15827         (vqrdmladhq_m): Remove.
15828         (vqrdmladhxq_m): Remove.
15829         (vqrdmlsdhq_m): Remove.
15830         (vqrdmlsdhxq_m): Remove.
15831         (vqrdmlsdhxq_s8): Remove.
15832         (vqrdmlsdhq_s8): Remove.
15833         (vqrdmladhxq_s8): Remove.
15834         (vqrdmladhq_s8): Remove.
15835         (vqdmlsdhxq_s8): Remove.
15836         (vqdmlsdhq_s8): Remove.
15837         (vqdmladhxq_s8): Remove.
15838         (vqdmladhq_s8): Remove.
15839         (vqrdmlsdhxq_s16): Remove.
15840         (vqrdmlsdhq_s16): Remove.
15841         (vqrdmladhxq_s16): Remove.
15842         (vqrdmladhq_s16): Remove.
15843         (vqdmlsdhxq_s16): Remove.
15844         (vqdmlsdhq_s16): Remove.
15845         (vqdmladhxq_s16): Remove.
15846         (vqdmladhq_s16): Remove.
15847         (vqrdmlsdhxq_s32): Remove.
15848         (vqrdmlsdhq_s32): Remove.
15849         (vqrdmladhxq_s32): Remove.
15850         (vqrdmladhq_s32): Remove.
15851         (vqdmlsdhxq_s32): Remove.
15852         (vqdmlsdhq_s32): Remove.
15853         (vqdmladhxq_s32): Remove.
15854         (vqdmladhq_s32): Remove.
15855         (vqdmladhq_m_s8): Remove.
15856         (vqdmladhq_m_s32): Remove.
15857         (vqdmladhq_m_s16): Remove.
15858         (vqdmladhxq_m_s8): Remove.
15859         (vqdmladhxq_m_s32): Remove.
15860         (vqdmladhxq_m_s16): Remove.
15861         (vqdmlsdhq_m_s8): Remove.
15862         (vqdmlsdhq_m_s32): Remove.
15863         (vqdmlsdhq_m_s16): Remove.
15864         (vqdmlsdhxq_m_s8): Remove.
15865         (vqdmlsdhxq_m_s32): Remove.
15866         (vqdmlsdhxq_m_s16): Remove.
15867         (vqrdmladhq_m_s8): Remove.
15868         (vqrdmladhq_m_s32): Remove.
15869         (vqrdmladhq_m_s16): Remove.
15870         (vqrdmladhxq_m_s8): Remove.
15871         (vqrdmladhxq_m_s32): Remove.
15872         (vqrdmladhxq_m_s16): Remove.
15873         (vqrdmlsdhq_m_s8): Remove.
15874         (vqrdmlsdhq_m_s32): Remove.
15875         (vqrdmlsdhq_m_s16): Remove.
15876         (vqrdmlsdhxq_m_s8): Remove.
15877         (vqrdmlsdhxq_m_s32): Remove.
15878         (vqrdmlsdhxq_m_s16): Remove.
15879         (__arm_vqrdmlsdhxq_s8): Remove.
15880         (__arm_vqrdmlsdhq_s8): Remove.
15881         (__arm_vqrdmladhxq_s8): Remove.
15882         (__arm_vqrdmladhq_s8): Remove.
15883         (__arm_vqdmlsdhxq_s8): Remove.
15884         (__arm_vqdmlsdhq_s8): Remove.
15885         (__arm_vqdmladhxq_s8): Remove.
15886         (__arm_vqdmladhq_s8): Remove.
15887         (__arm_vqrdmlsdhxq_s16): Remove.
15888         (__arm_vqrdmlsdhq_s16): Remove.
15889         (__arm_vqrdmladhxq_s16): Remove.
15890         (__arm_vqrdmladhq_s16): Remove.
15891         (__arm_vqdmlsdhxq_s16): Remove.
15892         (__arm_vqdmlsdhq_s16): Remove.
15893         (__arm_vqdmladhxq_s16): Remove.
15894         (__arm_vqdmladhq_s16): Remove.
15895         (__arm_vqrdmlsdhxq_s32): Remove.
15896         (__arm_vqrdmlsdhq_s32): Remove.
15897         (__arm_vqrdmladhxq_s32): Remove.
15898         (__arm_vqrdmladhq_s32): Remove.
15899         (__arm_vqdmlsdhxq_s32): Remove.
15900         (__arm_vqdmlsdhq_s32): Remove.
15901         (__arm_vqdmladhxq_s32): Remove.
15902         (__arm_vqdmladhq_s32): Remove.
15903         (__arm_vqdmladhq_m_s8): Remove.
15904         (__arm_vqdmladhq_m_s32): Remove.
15905         (__arm_vqdmladhq_m_s16): Remove.
15906         (__arm_vqdmladhxq_m_s8): Remove.
15907         (__arm_vqdmladhxq_m_s32): Remove.
15908         (__arm_vqdmladhxq_m_s16): Remove.
15909         (__arm_vqdmlsdhq_m_s8): Remove.
15910         (__arm_vqdmlsdhq_m_s32): Remove.
15911         (__arm_vqdmlsdhq_m_s16): Remove.
15912         (__arm_vqdmlsdhxq_m_s8): Remove.
15913         (__arm_vqdmlsdhxq_m_s32): Remove.
15914         (__arm_vqdmlsdhxq_m_s16): Remove.
15915         (__arm_vqrdmladhq_m_s8): Remove.
15916         (__arm_vqrdmladhq_m_s32): Remove.
15917         (__arm_vqrdmladhq_m_s16): Remove.
15918         (__arm_vqrdmladhxq_m_s8): Remove.
15919         (__arm_vqrdmladhxq_m_s32): Remove.
15920         (__arm_vqrdmladhxq_m_s16): Remove.
15921         (__arm_vqrdmlsdhq_m_s8): Remove.
15922         (__arm_vqrdmlsdhq_m_s32): Remove.
15923         (__arm_vqrdmlsdhq_m_s16): Remove.
15924         (__arm_vqrdmlsdhxq_m_s8): Remove.
15925         (__arm_vqrdmlsdhxq_m_s32): Remove.
15926         (__arm_vqrdmlsdhxq_m_s16): Remove.
15927         (__arm_vqrdmlsdhxq): Remove.
15928         (__arm_vqrdmlsdhq): Remove.
15929         (__arm_vqrdmladhxq): Remove.
15930         (__arm_vqrdmladhq): Remove.
15931         (__arm_vqdmlsdhxq): Remove.
15932         (__arm_vqdmlsdhq): Remove.
15933         (__arm_vqdmladhxq): Remove.
15934         (__arm_vqdmladhq): Remove.
15935         (__arm_vqdmladhq_m): Remove.
15936         (__arm_vqdmladhxq_m): Remove.
15937         (__arm_vqdmlsdhq_m): Remove.
15938         (__arm_vqdmlsdhxq_m): Remove.
15939         (__arm_vqrdmladhq_m): Remove.
15940         (__arm_vqrdmladhxq_m): Remove.
15941         (__arm_vqrdmlsdhq_m): Remove.
15942         (__arm_vqrdmlsdhxq_m): Remove.
15944 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
15946         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
15947         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
15948         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
15949         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
15950         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
15951         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
15952         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
15953         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
15954         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
15955         (mve_vqdmladhq_s<mode>): Merge into ...
15956         (@mve_<mve_insn>q_<supf><mode>): ... this.
15958 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
15960         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
15961         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
15963 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
15965         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
15966         (vmlsldavaq, vmlsldavaxq): New.
15967         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
15968         (vmlsldavaq, vmlsldavaxq): New.
15969         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
15970         (vmlsldavaq, vmlsldavaxq): New.
15971         * config/arm/arm_mve.h (vmlaldavaq): Remove.
15972         (vmlaldavaxq): Remove.
15973         (vmlsldavaq): Remove.
15974         (vmlsldavaxq): Remove.
15975         (vmlaldavaq_p): Remove.
15976         (vmlaldavaxq_p): Remove.
15977         (vmlsldavaq_p): Remove.
15978         (vmlsldavaxq_p): Remove.
15979         (vmlaldavaq_s16): Remove.
15980         (vmlaldavaxq_s16): Remove.
15981         (vmlsldavaq_s16): Remove.
15982         (vmlsldavaxq_s16): Remove.
15983         (vmlaldavaq_u16): Remove.
15984         (vmlaldavaq_s32): Remove.
15985         (vmlaldavaxq_s32): Remove.
15986         (vmlsldavaq_s32): Remove.
15987         (vmlsldavaxq_s32): Remove.
15988         (vmlaldavaq_u32): Remove.
15989         (vmlaldavaq_p_s32): Remove.
15990         (vmlaldavaq_p_s16): Remove.
15991         (vmlaldavaq_p_u32): Remove.
15992         (vmlaldavaq_p_u16): Remove.
15993         (vmlaldavaxq_p_s32): Remove.
15994         (vmlaldavaxq_p_s16): Remove.
15995         (vmlsldavaq_p_s32): Remove.
15996         (vmlsldavaq_p_s16): Remove.
15997         (vmlsldavaxq_p_s32): Remove.
15998         (vmlsldavaxq_p_s16): Remove.
15999         (__arm_vmlaldavaq_s16): Remove.
16000         (__arm_vmlaldavaxq_s16): Remove.
16001         (__arm_vmlsldavaq_s16): Remove.
16002         (__arm_vmlsldavaxq_s16): Remove.
16003         (__arm_vmlaldavaq_u16): Remove.
16004         (__arm_vmlaldavaq_s32): Remove.
16005         (__arm_vmlaldavaxq_s32): Remove.
16006         (__arm_vmlsldavaq_s32): Remove.
16007         (__arm_vmlsldavaxq_s32): Remove.
16008         (__arm_vmlaldavaq_u32): Remove.
16009         (__arm_vmlaldavaq_p_s32): Remove.
16010         (__arm_vmlaldavaq_p_s16): Remove.
16011         (__arm_vmlaldavaq_p_u32): Remove.
16012         (__arm_vmlaldavaq_p_u16): Remove.
16013         (__arm_vmlaldavaxq_p_s32): Remove.
16014         (__arm_vmlaldavaxq_p_s16): Remove.
16015         (__arm_vmlsldavaq_p_s32): Remove.
16016         (__arm_vmlsldavaq_p_s16): Remove.
16017         (__arm_vmlsldavaxq_p_s32): Remove.
16018         (__arm_vmlsldavaxq_p_s16): Remove.
16019         (__arm_vmlaldavaq): Remove.
16020         (__arm_vmlaldavaxq): Remove.
16021         (__arm_vmlsldavaq): Remove.
16022         (__arm_vmlsldavaxq): Remove.
16023         (__arm_vmlaldavaq_p): Remove.
16024         (__arm_vmlaldavaxq_p): Remove.
16025         (__arm_vmlsldavaq_p): Remove.
16026         (__arm_vmlsldavaxq_p): Remove.
16028 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16030         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
16031         New.
16032         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
16033         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
16034         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
16035         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
16036         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
16037         (mve_vmlaldavaxq_s<mode>): Merge into ...
16038         (@mve_<mve_insn>q_<supf><mode>): ... this.
16039         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
16040         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
16041         ...
16042         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
16044 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16046         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
16047         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
16049 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16051         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
16052         (vrmlsldavhq, vrmlsldavhxq): New.
16053         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
16054         (vrmlsldavhq, vrmlsldavhxq): New.
16055         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
16056         (vrmlsldavhq, vrmlsldavhxq): New.
16057         * config/arm/arm-mve-builtins-functions.h
16058         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
16059         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
16060         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
16061         (vrmlsldavhxq): Remove.
16062         (vrmlsldavhq): Remove.
16063         (vrmlaldavhxq): Remove.
16064         (vrmlaldavhq_p): Remove.
16065         (vrmlaldavhxq_p): Remove.
16066         (vrmlsldavhq_p): Remove.
16067         (vrmlsldavhxq_p): Remove.
16068         (vrmlaldavhq_u32): Remove.
16069         (vrmlsldavhxq_s32): Remove.
16070         (vrmlsldavhq_s32): Remove.
16071         (vrmlaldavhxq_s32): Remove.
16072         (vrmlaldavhq_s32): Remove.
16073         (vrmlaldavhq_p_s32): Remove.
16074         (vrmlaldavhxq_p_s32): Remove.
16075         (vrmlsldavhq_p_s32): Remove.
16076         (vrmlsldavhxq_p_s32): Remove.
16077         (vrmlaldavhq_p_u32): Remove.
16078         (__arm_vrmlaldavhq_u32): Remove.
16079         (__arm_vrmlsldavhxq_s32): Remove.
16080         (__arm_vrmlsldavhq_s32): Remove.
16081         (__arm_vrmlaldavhxq_s32): Remove.
16082         (__arm_vrmlaldavhq_s32): Remove.
16083         (__arm_vrmlaldavhq_p_s32): Remove.
16084         (__arm_vrmlaldavhxq_p_s32): Remove.
16085         (__arm_vrmlsldavhq_p_s32): Remove.
16086         (__arm_vrmlsldavhxq_p_s32): Remove.
16087         (__arm_vrmlaldavhq_p_u32): Remove.
16088         (__arm_vrmlaldavhq): Remove.
16089         (__arm_vrmlsldavhxq): Remove.
16090         (__arm_vrmlsldavhq): Remove.
16091         (__arm_vrmlaldavhxq): Remove.
16092         (__arm_vrmlaldavhq_p): Remove.
16093         (__arm_vrmlaldavhxq_p): Remove.
16094         (__arm_vrmlsldavhq_p): Remove.
16095         (__arm_vrmlsldavhxq_p): Remove.
16097 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16099         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
16100         New.
16101         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
16102         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
16103         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
16104         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
16105         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
16106         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
16107         (@mve_<mve_insn>q_<supf>v4si): ... this.
16108         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
16109         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
16110         into ...
16111         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
16113 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16115         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
16116         (vmlsldavq, vmlsldavxq): New.
16117         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
16118         (vmlsldavq, vmlsldavxq): New.
16119         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
16120         (vmlsldavq, vmlsldavxq): New.
16121         * config/arm/arm_mve.h (vmlaldavq): Remove.
16122         (vmlsldavxq): Remove.
16123         (vmlsldavq): Remove.
16124         (vmlaldavxq): Remove.
16125         (vmlaldavq_p): Remove.
16126         (vmlaldavxq_p): Remove.
16127         (vmlsldavq_p): Remove.
16128         (vmlsldavxq_p): Remove.
16129         (vmlaldavq_u16): Remove.
16130         (vmlsldavxq_s16): Remove.
16131         (vmlsldavq_s16): Remove.
16132         (vmlaldavxq_s16): Remove.
16133         (vmlaldavq_s16): Remove.
16134         (vmlaldavq_u32): Remove.
16135         (vmlsldavxq_s32): Remove.
16136         (vmlsldavq_s32): Remove.
16137         (vmlaldavxq_s32): Remove.
16138         (vmlaldavq_s32): Remove.
16139         (vmlaldavq_p_s16): Remove.
16140         (vmlaldavxq_p_s16): Remove.
16141         (vmlsldavq_p_s16): Remove.
16142         (vmlsldavxq_p_s16): Remove.
16143         (vmlaldavq_p_u16): Remove.
16144         (vmlaldavq_p_s32): Remove.
16145         (vmlaldavxq_p_s32): Remove.
16146         (vmlsldavq_p_s32): Remove.
16147         (vmlsldavxq_p_s32): Remove.
16148         (vmlaldavq_p_u32): Remove.
16149         (__arm_vmlaldavq_u16): Remove.
16150         (__arm_vmlsldavxq_s16): Remove.
16151         (__arm_vmlsldavq_s16): Remove.
16152         (__arm_vmlaldavxq_s16): Remove.
16153         (__arm_vmlaldavq_s16): Remove.
16154         (__arm_vmlaldavq_u32): Remove.
16155         (__arm_vmlsldavxq_s32): Remove.
16156         (__arm_vmlsldavq_s32): Remove.
16157         (__arm_vmlaldavxq_s32): Remove.
16158         (__arm_vmlaldavq_s32): Remove.
16159         (__arm_vmlaldavq_p_s16): Remove.
16160         (__arm_vmlaldavxq_p_s16): Remove.
16161         (__arm_vmlsldavq_p_s16): Remove.
16162         (__arm_vmlsldavxq_p_s16): Remove.
16163         (__arm_vmlaldavq_p_u16): Remove.
16164         (__arm_vmlaldavq_p_s32): Remove.
16165         (__arm_vmlaldavxq_p_s32): Remove.
16166         (__arm_vmlsldavq_p_s32): Remove.
16167         (__arm_vmlsldavxq_p_s32): Remove.
16168         (__arm_vmlaldavq_p_u32): Remove.
16169         (__arm_vmlaldavq): Remove.
16170         (__arm_vmlsldavxq): Remove.
16171         (__arm_vmlsldavq): Remove.
16172         (__arm_vmlaldavxq): Remove.
16173         (__arm_vmlaldavq_p): Remove.
16174         (__arm_vmlaldavxq_p): Remove.
16175         (__arm_vmlsldavq_p): Remove.
16176         (__arm_vmlsldavxq_p): Remove.
16178 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16180         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
16181         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
16182         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
16183         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
16184         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
16185         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
16186         (mve_vmlsldavxq_s<mode>): Merge into ...
16187         (@mve_<mve_insn>q_<supf><mode>): ... this.
16188         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
16189         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
16190         ...
16191         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
16193 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16195         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
16196         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
16198 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16200         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
16201         * config/arm/arm-mve-builtins-base.def (vabavq): New.
16202         * config/arm/arm-mve-builtins-base.h (vabavq): New.
16203         * config/arm/arm_mve.h (vabavq): Remove.
16204         (vabavq_p): Remove.
16205         (vabavq_s8): Remove.
16206         (vabavq_s16): Remove.
16207         (vabavq_s32): Remove.
16208         (vabavq_u8): Remove.
16209         (vabavq_u16): Remove.
16210         (vabavq_u32): Remove.
16211         (vabavq_p_s8): Remove.
16212         (vabavq_p_u8): Remove.
16213         (vabavq_p_s16): Remove.
16214         (vabavq_p_u16): Remove.
16215         (vabavq_p_s32): Remove.
16216         (vabavq_p_u32): Remove.
16217         (__arm_vabavq_s8): Remove.
16218         (__arm_vabavq_s16): Remove.
16219         (__arm_vabavq_s32): Remove.
16220         (__arm_vabavq_u8): Remove.
16221         (__arm_vabavq_u16): Remove.
16222         (__arm_vabavq_u32): Remove.
16223         (__arm_vabavq_p_s8): Remove.
16224         (__arm_vabavq_p_u8): Remove.
16225         (__arm_vabavq_p_s16): Remove.
16226         (__arm_vabavq_p_u16): Remove.
16227         (__arm_vabavq_p_s32): Remove.
16228         (__arm_vabavq_p_u32): Remove.
16229         (__arm_vabavq): Remove.
16230         (__arm_vabavq_p): Remove.
16232 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16234         * config/arm/iterators.md (mve_insn): Add vabav.
16235         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
16236         (@mve_<mve_insn>q_<supf><mode>): ... this,.
16237         (mve_vabavq_p_<supf><mode>): Rename into ...
16238         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
16240 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16242         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
16243         (vmlsdavaq, vmlsdavaxq): New.
16244         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
16245         (vmlsdavaq, vmlsdavaxq): New.
16246         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
16247         (vmlsdavaq, vmlsdavaxq): New.
16248         * config/arm/arm_mve.h (vmladavaq): Remove.
16249         (vmlsdavaxq): Remove.
16250         (vmlsdavaq): Remove.
16251         (vmladavaxq): Remove.
16252         (vmladavaq_p): Remove.
16253         (vmladavaxq_p): Remove.
16254         (vmlsdavaq_p): Remove.
16255         (vmlsdavaxq_p): Remove.
16256         (vmladavaq_u8): Remove.
16257         (vmlsdavaxq_s8): Remove.
16258         (vmlsdavaq_s8): Remove.
16259         (vmladavaxq_s8): Remove.
16260         (vmladavaq_s8): Remove.
16261         (vmladavaq_u16): Remove.
16262         (vmlsdavaxq_s16): Remove.
16263         (vmlsdavaq_s16): Remove.
16264         (vmladavaxq_s16): Remove.
16265         (vmladavaq_s16): Remove.
16266         (vmladavaq_u32): Remove.
16267         (vmlsdavaxq_s32): Remove.
16268         (vmlsdavaq_s32): Remove.
16269         (vmladavaxq_s32): Remove.
16270         (vmladavaq_s32): Remove.
16271         (vmladavaq_p_s8): Remove.
16272         (vmladavaq_p_s32): Remove.
16273         (vmladavaq_p_s16): Remove.
16274         (vmladavaq_p_u8): Remove.
16275         (vmladavaq_p_u32): Remove.
16276         (vmladavaq_p_u16): Remove.
16277         (vmladavaxq_p_s8): Remove.
16278         (vmladavaxq_p_s32): Remove.
16279         (vmladavaxq_p_s16): Remove.
16280         (vmlsdavaq_p_s8): Remove.
16281         (vmlsdavaq_p_s32): Remove.
16282         (vmlsdavaq_p_s16): Remove.
16283         (vmlsdavaxq_p_s8): Remove.
16284         (vmlsdavaxq_p_s32): Remove.
16285         (vmlsdavaxq_p_s16): Remove.
16286         (__arm_vmladavaq_u8): Remove.
16287         (__arm_vmlsdavaxq_s8): Remove.
16288         (__arm_vmlsdavaq_s8): Remove.
16289         (__arm_vmladavaxq_s8): Remove.
16290         (__arm_vmladavaq_s8): Remove.
16291         (__arm_vmladavaq_u16): Remove.
16292         (__arm_vmlsdavaxq_s16): Remove.
16293         (__arm_vmlsdavaq_s16): Remove.
16294         (__arm_vmladavaxq_s16): Remove.
16295         (__arm_vmladavaq_s16): Remove.
16296         (__arm_vmladavaq_u32): Remove.
16297         (__arm_vmlsdavaxq_s32): Remove.
16298         (__arm_vmlsdavaq_s32): Remove.
16299         (__arm_vmladavaxq_s32): Remove.
16300         (__arm_vmladavaq_s32): Remove.
16301         (__arm_vmladavaq_p_s8): Remove.
16302         (__arm_vmladavaq_p_s32): Remove.
16303         (__arm_vmladavaq_p_s16): Remove.
16304         (__arm_vmladavaq_p_u8): Remove.
16305         (__arm_vmladavaq_p_u32): Remove.
16306         (__arm_vmladavaq_p_u16): Remove.
16307         (__arm_vmladavaxq_p_s8): Remove.
16308         (__arm_vmladavaxq_p_s32): Remove.
16309         (__arm_vmladavaxq_p_s16): Remove.
16310         (__arm_vmlsdavaq_p_s8): Remove.
16311         (__arm_vmlsdavaq_p_s32): Remove.
16312         (__arm_vmlsdavaq_p_s16): Remove.
16313         (__arm_vmlsdavaxq_p_s8): Remove.
16314         (__arm_vmlsdavaxq_p_s32): Remove.
16315         (__arm_vmlsdavaxq_p_s16): Remove.
16316         (__arm_vmladavaq): Remove.
16317         (__arm_vmlsdavaxq): Remove.
16318         (__arm_vmlsdavaq): Remove.
16319         (__arm_vmladavaxq): Remove.
16320         (__arm_vmladavaq_p): Remove.
16321         (__arm_vmladavaxq_p): Remove.
16322         (__arm_vmlsdavaq_p): Remove.
16323         (__arm_vmlsdavaxq_p): Remove.
16325 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16327         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
16328         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
16330 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16332         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
16333         (vmlsdavq, vmlsdavxq): New.
16334         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
16335         (vmlsdavq, vmlsdavxq): New.
16336         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
16337         (vmlsdavq, vmlsdavxq): New.
16338         * config/arm/arm_mve.h (vmladavq): Remove.
16339         (vmlsdavxq): Remove.
16340         (vmlsdavq): Remove.
16341         (vmladavxq): Remove.
16342         (vmladavq_p): Remove.
16343         (vmlsdavxq_p): Remove.
16344         (vmlsdavq_p): Remove.
16345         (vmladavxq_p): Remove.
16346         (vmladavq_u8): Remove.
16347         (vmlsdavxq_s8): Remove.
16348         (vmlsdavq_s8): Remove.
16349         (vmladavxq_s8): Remove.
16350         (vmladavq_s8): Remove.
16351         (vmladavq_u16): Remove.
16352         (vmlsdavxq_s16): Remove.
16353         (vmlsdavq_s16): Remove.
16354         (vmladavxq_s16): Remove.
16355         (vmladavq_s16): Remove.
16356         (vmladavq_u32): Remove.
16357         (vmlsdavxq_s32): Remove.
16358         (vmlsdavq_s32): Remove.
16359         (vmladavxq_s32): Remove.
16360         (vmladavq_s32): Remove.
16361         (vmladavq_p_u8): Remove.
16362         (vmlsdavxq_p_s8): Remove.
16363         (vmlsdavq_p_s8): Remove.
16364         (vmladavxq_p_s8): Remove.
16365         (vmladavq_p_s8): Remove.
16366         (vmladavq_p_u16): Remove.
16367         (vmlsdavxq_p_s16): Remove.
16368         (vmlsdavq_p_s16): Remove.
16369         (vmladavxq_p_s16): Remove.
16370         (vmladavq_p_s16): Remove.
16371         (vmladavq_p_u32): Remove.
16372         (vmlsdavxq_p_s32): Remove.
16373         (vmlsdavq_p_s32): Remove.
16374         (vmladavxq_p_s32): Remove.
16375         (vmladavq_p_s32): Remove.
16376         (__arm_vmladavq_u8): Remove.
16377         (__arm_vmlsdavxq_s8): Remove.
16378         (__arm_vmlsdavq_s8): Remove.
16379         (__arm_vmladavxq_s8): Remove.
16380         (__arm_vmladavq_s8): Remove.
16381         (__arm_vmladavq_u16): Remove.
16382         (__arm_vmlsdavxq_s16): Remove.
16383         (__arm_vmlsdavq_s16): Remove.
16384         (__arm_vmladavxq_s16): Remove.
16385         (__arm_vmladavq_s16): Remove.
16386         (__arm_vmladavq_u32): Remove.
16387         (__arm_vmlsdavxq_s32): Remove.
16388         (__arm_vmlsdavq_s32): Remove.
16389         (__arm_vmladavxq_s32): Remove.
16390         (__arm_vmladavq_s32): Remove.
16391         (__arm_vmladavq_p_u8): Remove.
16392         (__arm_vmlsdavxq_p_s8): Remove.
16393         (__arm_vmlsdavq_p_s8): Remove.
16394         (__arm_vmladavxq_p_s8): Remove.
16395         (__arm_vmladavq_p_s8): Remove.
16396         (__arm_vmladavq_p_u16): Remove.
16397         (__arm_vmlsdavxq_p_s16): Remove.
16398         (__arm_vmlsdavq_p_s16): Remove.
16399         (__arm_vmladavxq_p_s16): Remove.
16400         (__arm_vmladavq_p_s16): Remove.
16401         (__arm_vmladavq_p_u32): Remove.
16402         (__arm_vmlsdavxq_p_s32): Remove.
16403         (__arm_vmlsdavq_p_s32): Remove.
16404         (__arm_vmladavxq_p_s32): Remove.
16405         (__arm_vmladavq_p_s32): Remove.
16406         (__arm_vmladavq): Remove.
16407         (__arm_vmlsdavxq): Remove.
16408         (__arm_vmlsdavq): Remove.
16409         (__arm_vmladavxq): Remove.
16410         (__arm_vmladavq_p): Remove.
16411         (__arm_vmlsdavxq_p): Remove.
16412         (__arm_vmlsdavq_p): Remove.
16413         (__arm_vmladavxq_p): Remove.
16415 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16417         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
16418         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
16419         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
16420         vmlsdavax, vmlsdav, vmlsdavx.
16421         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
16422         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
16423         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
16424         VMLSDAVXQ_S.
16425         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
16426         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
16427         (mve_vmlsdavxq_s<mode>): Merge into ...
16428         (@mve_<mve_insn>q_<supf><mode>): ... this.
16429         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
16430         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
16431         ...
16432         (@mve_<mve_insn>q_<supf><mode>): ... this.
16433         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
16434         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
16435         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
16436         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
16437         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
16438         ...
16439         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
16441 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16443         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
16444         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
16446 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16448         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
16449         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
16450         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
16451         * config/arm/arm_mve.h (vaddlvaq): Remove.
16452         (vaddlvaq_p): Remove.
16453         (vaddlvaq_u32): Remove.
16454         (vaddlvaq_s32): Remove.
16455         (vaddlvaq_p_s32): Remove.
16456         (vaddlvaq_p_u32): Remove.
16457         (__arm_vaddlvaq_u32): Remove.
16458         (__arm_vaddlvaq_s32): Remove.
16459         (__arm_vaddlvaq_p_s32): Remove.
16460         (__arm_vaddlvaq_p_u32): Remove.
16461         (__arm_vaddlvaq): Remove.
16462         (__arm_vaddlvaq_p): Remove.
16464 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16466         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
16467         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
16469 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16471         * config/arm/iterators.md (mve_insn): Add vaddlva.
16472         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
16473         (@mve_<mve_insn>q_<supf>v4si): ... this.
16474         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
16475         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
16477 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
16479         PR target/109807
16480         * config/i386/i386.cc (ix86_widen_mult_cost):
16481         Handle V4HImode and V2SImode.
16483 2023-05-11  Andrew Pinski  <apinski@marvell.com>
16485         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
16486         defined by a phi node with more than one uses, allow for the
16487         only uses are in that same defining statement.
16489 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
16491         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
16492         vector constants.
16494 2023-05-11  Pan Li  <pan2.li@intel.com>
16496         * config/riscv/vector.md: Add comments for simplifying to vmset.
16498 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
16500         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
16501         pattern.
16502         (v<optab><mode>3): Add vector shift pattern.
16503         * config/riscv/vector-iterators.md: New iterator.
16505 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
16507         * config/riscv/autovec.md: Use renamed functions.
16508         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
16509         (emit_vlmax_reg_op): To this.
16510         (emit_nonvlmax_op): Rename.
16511         (emit_len_op): To this.
16512         (emit_nonvlmax_binop): Rename.
16513         (emit_len_binop): To this.
16514         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
16515         (emit_pred_binop): Remove vlmax_p.
16516         (emit_vlmax_op): Rename.
16517         (emit_vlmax_reg_op): To this.
16518         (emit_nonvlmax_op): Rename.
16519         (emit_len_op): To this.
16520         (emit_nonvlmax_binop): Rename.
16521         (emit_len_binop): To this.
16522         (sew64_scalar_helper): Use renamed functions.
16523         (expand_tuple_move): Use renamed functions.
16524         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
16525         renamed functions.
16526         * config/riscv/vector.md: Use renamed functions.
16528 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
16529             Michael Collison  <collison@rivosinc.com>
16531         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
16532         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
16533         * config/riscv/riscv-v.cc (emit_pred_op): New function.
16534         (set_expander_dest_and_mask): New function.
16535         (emit_pred_binop): New function.
16536         (emit_nonvlmax_binop): New function.
16538 2023-05-11  Pan Li  <pan2.li@intel.com>
16540         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
16541         * gimple-loop-interchange.cc
16542         (tree_loop_interchange::map_inductions_to_loop): Ditto.
16543         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
16544         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
16545         * tree-ssa-loop-manip.cc (create_iv): Ditto.
16546         (tree_transform_and_unroll_loop): Ditto.
16547         (canonicalize_loop_ivs): Ditto.
16548         * tree-ssa-loop-manip.h (create_iv): Ditto.
16549         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
16550         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
16551         Ditto.
16552         (vect_set_loop_condition_normal): Ditto.
16553         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
16554         * tree-vect-stmts.cc (vectorizable_store): Ditto.
16555         (vectorizable_load): Ditto.
16557 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16559         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
16560         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
16561         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
16562         * config/arm/arm_mve.h (vmovlbq): Remove.
16563         (vmovltq): Remove.
16564         (vmovlbq_m): Remove.
16565         (vmovltq_m): Remove.
16566         (vmovlbq_x): Remove.
16567         (vmovltq_x): Remove.
16568         (vmovlbq_s8): Remove.
16569         (vmovlbq_s16): Remove.
16570         (vmovltq_s8): Remove.
16571         (vmovltq_s16): Remove.
16572         (vmovltq_u8): Remove.
16573         (vmovltq_u16): Remove.
16574         (vmovlbq_u8): Remove.
16575         (vmovlbq_u16): Remove.
16576         (vmovlbq_m_s8): Remove.
16577         (vmovltq_m_s8): Remove.
16578         (vmovlbq_m_u8): Remove.
16579         (vmovltq_m_u8): Remove.
16580         (vmovlbq_m_s16): Remove.
16581         (vmovltq_m_s16): Remove.
16582         (vmovlbq_m_u16): Remove.
16583         (vmovltq_m_u16): Remove.
16584         (vmovlbq_x_s8): Remove.
16585         (vmovlbq_x_s16): Remove.
16586         (vmovlbq_x_u8): Remove.
16587         (vmovlbq_x_u16): Remove.
16588         (vmovltq_x_s8): Remove.
16589         (vmovltq_x_s16): Remove.
16590         (vmovltq_x_u8): Remove.
16591         (vmovltq_x_u16): Remove.
16592         (__arm_vmovlbq_s8): Remove.
16593         (__arm_vmovlbq_s16): Remove.
16594         (__arm_vmovltq_s8): Remove.
16595         (__arm_vmovltq_s16): Remove.
16596         (__arm_vmovltq_u8): Remove.
16597         (__arm_vmovltq_u16): Remove.
16598         (__arm_vmovlbq_u8): Remove.
16599         (__arm_vmovlbq_u16): Remove.
16600         (__arm_vmovlbq_m_s8): Remove.
16601         (__arm_vmovltq_m_s8): Remove.
16602         (__arm_vmovlbq_m_u8): Remove.
16603         (__arm_vmovltq_m_u8): Remove.
16604         (__arm_vmovlbq_m_s16): Remove.
16605         (__arm_vmovltq_m_s16): Remove.
16606         (__arm_vmovlbq_m_u16): Remove.
16607         (__arm_vmovltq_m_u16): Remove.
16608         (__arm_vmovlbq_x_s8): Remove.
16609         (__arm_vmovlbq_x_s16): Remove.
16610         (__arm_vmovlbq_x_u8): Remove.
16611         (__arm_vmovlbq_x_u16): Remove.
16612         (__arm_vmovltq_x_s8): Remove.
16613         (__arm_vmovltq_x_s16): Remove.
16614         (__arm_vmovltq_x_u8): Remove.
16615         (__arm_vmovltq_x_u16): Remove.
16616         (__arm_vmovlbq): Remove.
16617         (__arm_vmovltq): Remove.
16618         (__arm_vmovlbq_m): Remove.
16619         (__arm_vmovltq_m): Remove.
16620         (__arm_vmovlbq_x): Remove.
16621         (__arm_vmovltq_x): Remove.
16623 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16625         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
16626         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
16628 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16630         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
16631         (VMOVLBQ, VMOVLTQ): Merge into ...
16632         (VMOVLxQ): ... this.
16633         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
16634         (VMOVLxQ_M): ... this.
16635         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
16636         (mve_vmovlbq_<supf><mode>): Merge into ...
16637         (@mve_<mve_insn>q_<supf><mode>): ... this.
16638         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
16639         into ...
16640         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
16642 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16644         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
16645         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
16646         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
16647         * config/arm/arm-mve-builtins-functions.h
16648         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
16649         * config/arm/arm_mve.h (vaddlvq): Remove.
16650         (vaddlvq_p): Remove.
16651         (vaddlvq_s32): Remove.
16652         (vaddlvq_u32): Remove.
16653         (vaddlvq_p_s32): Remove.
16654         (vaddlvq_p_u32): Remove.
16655         (__arm_vaddlvq_s32): Remove.
16656         (__arm_vaddlvq_u32): Remove.
16657         (__arm_vaddlvq_p_s32): Remove.
16658         (__arm_vaddlvq_p_u32): Remove.
16659         (__arm_vaddlvq): Remove.
16660         (__arm_vaddlvq_p): Remove.
16662 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16664         * config/arm/iterators.md (mve_insn): Add vaddlv.
16665         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
16666         (@mve_<mve_insn>q_<supf>v4si): ... this.
16667         (mve_vaddlvq_p_<supf>v4si): Rename into ...
16668         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
16670 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16672         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
16673         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
16675 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16677         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
16678         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
16679         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
16680         * config/arm/arm_mve.h (vaddvaq): Remove.
16681         (vaddvaq_p): Remove.
16682         (vaddvaq_u8): Remove.
16683         (vaddvaq_s8): Remove.
16684         (vaddvaq_u16): Remove.
16685         (vaddvaq_s16): Remove.
16686         (vaddvaq_u32): Remove.
16687         (vaddvaq_s32): Remove.
16688         (vaddvaq_p_u8): Remove.
16689         (vaddvaq_p_s8): Remove.
16690         (vaddvaq_p_u16): Remove.
16691         (vaddvaq_p_s16): Remove.
16692         (vaddvaq_p_u32): Remove.
16693         (vaddvaq_p_s32): Remove.
16694         (__arm_vaddvaq_u8): Remove.
16695         (__arm_vaddvaq_s8): Remove.
16696         (__arm_vaddvaq_u16): Remove.
16697         (__arm_vaddvaq_s16): Remove.
16698         (__arm_vaddvaq_u32): Remove.
16699         (__arm_vaddvaq_s32): Remove.
16700         (__arm_vaddvaq_p_u8): Remove.
16701         (__arm_vaddvaq_p_s8): Remove.
16702         (__arm_vaddvaq_p_u16): Remove.
16703         (__arm_vaddvaq_p_s16): Remove.
16704         (__arm_vaddvaq_p_u32): Remove.
16705         (__arm_vaddvaq_p_s32): Remove.
16706         (__arm_vaddvaq): Remove.
16707         (__arm_vaddvaq_p): Remove.
16709 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16711         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
16712         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
16714 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16716         * config/arm/iterators.md (mve_insn): Add vaddva.
16717         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
16718         (@mve_<mve_insn>q_<supf><mode>): ... this.
16719         (mve_vaddvaq_p_<supf><mode>): Rename into ...
16720         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
16722 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16724         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
16725         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
16726         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
16727         * config/arm/arm_mve.h (vaddvq): Remove.
16728         (vaddvq_p): Remove.
16729         (vaddvq_s8): Remove.
16730         (vaddvq_s16): Remove.
16731         (vaddvq_s32): Remove.
16732         (vaddvq_u8): Remove.
16733         (vaddvq_u16): Remove.
16734         (vaddvq_u32): Remove.
16735         (vaddvq_p_u8): Remove.
16736         (vaddvq_p_s8): Remove.
16737         (vaddvq_p_u16): Remove.
16738         (vaddvq_p_s16): Remove.
16739         (vaddvq_p_u32): Remove.
16740         (vaddvq_p_s32): Remove.
16741         (__arm_vaddvq_s8): Remove.
16742         (__arm_vaddvq_s16): Remove.
16743         (__arm_vaddvq_s32): Remove.
16744         (__arm_vaddvq_u8): Remove.
16745         (__arm_vaddvq_u16): Remove.
16746         (__arm_vaddvq_u32): Remove.
16747         (__arm_vaddvq_p_u8): Remove.
16748         (__arm_vaddvq_p_s8): Remove.
16749         (__arm_vaddvq_p_u16): Remove.
16750         (__arm_vaddvq_p_s16): Remove.
16751         (__arm_vaddvq_p_u32): Remove.
16752         (__arm_vaddvq_p_s32): Remove.
16753         (__arm_vaddvq): Remove.
16754         (__arm_vaddvq_p): Remove.
16756 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16758         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
16759         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
16761 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16763         * config/arm/iterators.md (mve_insn): Add vaddv.
16764         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
16765         (@mve_<mve_insn>q_<supf><mode>): ... this.
16766         (mve_vaddvq_p_<supf><mode>): Rename into ...
16767         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
16768         * config/arm/vec-common.md: Use gen_mve_q instead of
16769         gen_mve_vaddvq.
16771 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16773         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
16774         (vdupq): New.
16775         * config/arm/arm-mve-builtins-base.def (vdupq): New.
16776         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
16777         * config/arm/arm_mve.h (vdupq_n): Remove.
16778         (vdupq_m): Remove.
16779         (vdupq_n_f16): Remove.
16780         (vdupq_n_f32): Remove.
16781         (vdupq_n_s8): Remove.
16782         (vdupq_n_s16): Remove.
16783         (vdupq_n_s32): Remove.
16784         (vdupq_n_u8): Remove.
16785         (vdupq_n_u16): Remove.
16786         (vdupq_n_u32): Remove.
16787         (vdupq_m_n_u8): Remove.
16788         (vdupq_m_n_s8): Remove.
16789         (vdupq_m_n_u16): Remove.
16790         (vdupq_m_n_s16): Remove.
16791         (vdupq_m_n_u32): Remove.
16792         (vdupq_m_n_s32): Remove.
16793         (vdupq_m_n_f16): Remove.
16794         (vdupq_m_n_f32): Remove.
16795         (vdupq_x_n_s8): Remove.
16796         (vdupq_x_n_s16): Remove.
16797         (vdupq_x_n_s32): Remove.
16798         (vdupq_x_n_u8): Remove.
16799         (vdupq_x_n_u16): Remove.
16800         (vdupq_x_n_u32): Remove.
16801         (vdupq_x_n_f16): Remove.
16802         (vdupq_x_n_f32): Remove.
16803         (__arm_vdupq_n_s8): Remove.
16804         (__arm_vdupq_n_s16): Remove.
16805         (__arm_vdupq_n_s32): Remove.
16806         (__arm_vdupq_n_u8): Remove.
16807         (__arm_vdupq_n_u16): Remove.
16808         (__arm_vdupq_n_u32): Remove.
16809         (__arm_vdupq_m_n_u8): Remove.
16810         (__arm_vdupq_m_n_s8): Remove.
16811         (__arm_vdupq_m_n_u16): Remove.
16812         (__arm_vdupq_m_n_s16): Remove.
16813         (__arm_vdupq_m_n_u32): Remove.
16814         (__arm_vdupq_m_n_s32): Remove.
16815         (__arm_vdupq_x_n_s8): Remove.
16816         (__arm_vdupq_x_n_s16): Remove.
16817         (__arm_vdupq_x_n_s32): Remove.
16818         (__arm_vdupq_x_n_u8): Remove.
16819         (__arm_vdupq_x_n_u16): Remove.
16820         (__arm_vdupq_x_n_u32): Remove.
16821         (__arm_vdupq_n_f16): Remove.
16822         (__arm_vdupq_n_f32): Remove.
16823         (__arm_vdupq_m_n_f16): Remove.
16824         (__arm_vdupq_m_n_f32): Remove.
16825         (__arm_vdupq_x_n_f16): Remove.
16826         (__arm_vdupq_x_n_f32): Remove.
16827         (__arm_vdupq_n): Remove.
16828         (__arm_vdupq_m): Remove.
16830 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16832         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
16833         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
16835 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16837         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
16838         (MVE_FP_N_VDUPQ_ONLY): New.
16839         (mve_insn): Add vdupq.
16840         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
16841         (@mve_<mve_insn>q_n_f<mode>): ... this.
16842         (mve_vdupq_n_<supf><mode>): Rename into ...
16843         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
16844         (mve_vdupq_m_n_<supf><mode>): Rename into ...
16845         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16846         (mve_vdupq_m_n_f<mode>): Rename into ...
16847         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
16849 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16851         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
16852         New.
16853         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
16854         (vrev64q): New.
16855         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
16856         (vrev64q): New.
16857         * config/arm/arm_mve.h (vrev16q): Remove.
16858         (vrev32q): Remove.
16859         (vrev64q): Remove.
16860         (vrev64q_m): Remove.
16861         (vrev16q_m): Remove.
16862         (vrev32q_m): Remove.
16863         (vrev16q_x): Remove.
16864         (vrev32q_x): Remove.
16865         (vrev64q_x): Remove.
16866         (vrev64q_f16): Remove.
16867         (vrev64q_f32): Remove.
16868         (vrev32q_f16): Remove.
16869         (vrev16q_s8): Remove.
16870         (vrev32q_s8): Remove.
16871         (vrev32q_s16): Remove.
16872         (vrev64q_s8): Remove.
16873         (vrev64q_s16): Remove.
16874         (vrev64q_s32): Remove.
16875         (vrev64q_u8): Remove.
16876         (vrev64q_u16): Remove.
16877         (vrev64q_u32): Remove.
16878         (vrev32q_u8): Remove.
16879         (vrev32q_u16): Remove.
16880         (vrev16q_u8): Remove.
16881         (vrev64q_m_u8): Remove.
16882         (vrev64q_m_s8): Remove.
16883         (vrev64q_m_u16): Remove.
16884         (vrev64q_m_s16): Remove.
16885         (vrev64q_m_u32): Remove.
16886         (vrev64q_m_s32): Remove.
16887         (vrev16q_m_s8): Remove.
16888         (vrev32q_m_f16): Remove.
16889         (vrev16q_m_u8): Remove.
16890         (vrev32q_m_s8): Remove.
16891         (vrev64q_m_f16): Remove.
16892         (vrev32q_m_u8): Remove.
16893         (vrev32q_m_s16): Remove.
16894         (vrev64q_m_f32): Remove.
16895         (vrev32q_m_u16): Remove.
16896         (vrev16q_x_s8): Remove.
16897         (vrev16q_x_u8): Remove.
16898         (vrev32q_x_s8): Remove.
16899         (vrev32q_x_s16): Remove.
16900         (vrev32q_x_u8): Remove.
16901         (vrev32q_x_u16): Remove.
16902         (vrev64q_x_s8): Remove.
16903         (vrev64q_x_s16): Remove.
16904         (vrev64q_x_s32): Remove.
16905         (vrev64q_x_u8): Remove.
16906         (vrev64q_x_u16): Remove.
16907         (vrev64q_x_u32): Remove.
16908         (vrev32q_x_f16): Remove.
16909         (vrev64q_x_f16): Remove.
16910         (vrev64q_x_f32): Remove.
16911         (__arm_vrev16q_s8): Remove.
16912         (__arm_vrev32q_s8): Remove.
16913         (__arm_vrev32q_s16): Remove.
16914         (__arm_vrev64q_s8): Remove.
16915         (__arm_vrev64q_s16): Remove.
16916         (__arm_vrev64q_s32): Remove.
16917         (__arm_vrev64q_u8): Remove.
16918         (__arm_vrev64q_u16): Remove.
16919         (__arm_vrev64q_u32): Remove.
16920         (__arm_vrev32q_u8): Remove.
16921         (__arm_vrev32q_u16): Remove.
16922         (__arm_vrev16q_u8): Remove.
16923         (__arm_vrev64q_m_u8): Remove.
16924         (__arm_vrev64q_m_s8): Remove.
16925         (__arm_vrev64q_m_u16): Remove.
16926         (__arm_vrev64q_m_s16): Remove.
16927         (__arm_vrev64q_m_u32): Remove.
16928         (__arm_vrev64q_m_s32): Remove.
16929         (__arm_vrev16q_m_s8): Remove.
16930         (__arm_vrev16q_m_u8): Remove.
16931         (__arm_vrev32q_m_s8): Remove.
16932         (__arm_vrev32q_m_u8): Remove.
16933         (__arm_vrev32q_m_s16): Remove.
16934         (__arm_vrev32q_m_u16): Remove.
16935         (__arm_vrev16q_x_s8): Remove.
16936         (__arm_vrev16q_x_u8): Remove.
16937         (__arm_vrev32q_x_s8): Remove.
16938         (__arm_vrev32q_x_s16): Remove.
16939         (__arm_vrev32q_x_u8): Remove.
16940         (__arm_vrev32q_x_u16): Remove.
16941         (__arm_vrev64q_x_s8): Remove.
16942         (__arm_vrev64q_x_s16): Remove.
16943         (__arm_vrev64q_x_s32): Remove.
16944         (__arm_vrev64q_x_u8): Remove.
16945         (__arm_vrev64q_x_u16): Remove.
16946         (__arm_vrev64q_x_u32): Remove.
16947         (__arm_vrev64q_f16): Remove.
16948         (__arm_vrev64q_f32): Remove.
16949         (__arm_vrev32q_f16): Remove.
16950         (__arm_vrev32q_m_f16): Remove.
16951         (__arm_vrev64q_m_f16): Remove.
16952         (__arm_vrev64q_m_f32): Remove.
16953         (__arm_vrev32q_x_f16): Remove.
16954         (__arm_vrev64q_x_f16): Remove.
16955         (__arm_vrev64q_x_f32): Remove.
16956         (__arm_vrev16q): Remove.
16957         (__arm_vrev32q): Remove.
16958         (__arm_vrev64q): Remove.
16959         (__arm_vrev64q_m): Remove.
16960         (__arm_vrev16q_m): Remove.
16961         (__arm_vrev32q_m): Remove.
16962         (__arm_vrev16q_x): Remove.
16963         (__arm_vrev32q_x): Remove.
16964         (__arm_vrev64q_x): Remove.
16966 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16968         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
16969         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
16970         (MVE_FP_M_VREV32Q_ONLY): New iterators.
16971         (mve_insn): Add vrev16q, vrev32q, vrev64q.
16972         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
16973         (@mve_<mve_insn>q_f<mode>): ... this
16974         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
16975         (mve_vrev64q_<supf><mode>): Rename into ...
16976         (@mve_<mve_insn>q_<supf><mode>): ... this.
16977         (mve_vrev32q_<supf><mode>): Rename into
16978         @mve_<mve_insn>q_<supf><mode>.
16979         (mve_vrev16q_<supf>v16qi): Rename into
16980         @mve_<mve_insn>q_<supf><mode>.
16981         (mve_vrev64q_m_<supf><mode>): Rename into
16982         @mve_<mve_insn>q_m_<supf><mode>.
16983         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
16984         (mve_vrev32q_m_<supf><mode>): Rename into
16985         @mve_<mve_insn>q_m_<supf><mode>.
16986         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
16987         (mve_vrev16q_m_<supf>v16qi): Rename into
16988         @mve_<mve_insn>q_m_<supf><mode>.
16990 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
16992         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
16993         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
16994         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
16995         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
16996         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
16997         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
16998         * config/arm/arm-mve-builtins-functions.h (class
16999         unspec_based_mve_function_exact_insn_vcmp): New.
17000         * config/arm/arm-mve-builtins.cc
17001         (function_instance::has_inactive_argument): Handle vcmp.
17002         * config/arm/arm_mve.h (vcmpneq): Remove.
17003         (vcmphiq): Remove.
17004         (vcmpeqq): Remove.
17005         (vcmpcsq): Remove.
17006         (vcmpltq): Remove.
17007         (vcmpleq): Remove.
17008         (vcmpgtq): Remove.
17009         (vcmpgeq): Remove.
17010         (vcmpneq_m): Remove.
17011         (vcmphiq_m): Remove.
17012         (vcmpeqq_m): Remove.
17013         (vcmpcsq_m): Remove.
17014         (vcmpcsq_m_n): Remove.
17015         (vcmpltq_m): Remove.
17016         (vcmpleq_m): Remove.
17017         (vcmpgtq_m): Remove.
17018         (vcmpgeq_m): Remove.
17019         (vcmpneq_s8): Remove.
17020         (vcmpneq_s16): Remove.
17021         (vcmpneq_s32): Remove.
17022         (vcmpneq_u8): Remove.
17023         (vcmpneq_u16): Remove.
17024         (vcmpneq_u32): Remove.
17025         (vcmpneq_n_u8): Remove.
17026         (vcmphiq_u8): Remove.
17027         (vcmphiq_n_u8): Remove.
17028         (vcmpeqq_u8): Remove.
17029         (vcmpeqq_n_u8): Remove.
17030         (vcmpcsq_u8): Remove.
17031         (vcmpcsq_n_u8): Remove.
17032         (vcmpneq_n_s8): Remove.
17033         (vcmpltq_s8): Remove.
17034         (vcmpltq_n_s8): Remove.
17035         (vcmpleq_s8): Remove.
17036         (vcmpleq_n_s8): Remove.
17037         (vcmpgtq_s8): Remove.
17038         (vcmpgtq_n_s8): Remove.
17039         (vcmpgeq_s8): Remove.
17040         (vcmpgeq_n_s8): Remove.
17041         (vcmpeqq_s8): Remove.
17042         (vcmpeqq_n_s8): Remove.
17043         (vcmpneq_n_u16): Remove.
17044         (vcmphiq_u16): Remove.
17045         (vcmphiq_n_u16): Remove.
17046         (vcmpeqq_u16): Remove.
17047         (vcmpeqq_n_u16): Remove.
17048         (vcmpcsq_u16): Remove.
17049         (vcmpcsq_n_u16): Remove.
17050         (vcmpneq_n_s16): Remove.
17051         (vcmpltq_s16): Remove.
17052         (vcmpltq_n_s16): Remove.
17053         (vcmpleq_s16): Remove.
17054         (vcmpleq_n_s16): Remove.
17055         (vcmpgtq_s16): Remove.
17056         (vcmpgtq_n_s16): Remove.
17057         (vcmpgeq_s16): Remove.
17058         (vcmpgeq_n_s16): Remove.
17059         (vcmpeqq_s16): Remove.
17060         (vcmpeqq_n_s16): Remove.
17061         (vcmpneq_n_u32): Remove.
17062         (vcmphiq_u32): Remove.
17063         (vcmphiq_n_u32): Remove.
17064         (vcmpeqq_u32): Remove.
17065         (vcmpeqq_n_u32): Remove.
17066         (vcmpcsq_u32): Remove.
17067         (vcmpcsq_n_u32): Remove.
17068         (vcmpneq_n_s32): Remove.
17069         (vcmpltq_s32): Remove.
17070         (vcmpltq_n_s32): Remove.
17071         (vcmpleq_s32): Remove.
17072         (vcmpleq_n_s32): Remove.
17073         (vcmpgtq_s32): Remove.
17074         (vcmpgtq_n_s32): Remove.
17075         (vcmpgeq_s32): Remove.
17076         (vcmpgeq_n_s32): Remove.
17077         (vcmpeqq_s32): Remove.
17078         (vcmpeqq_n_s32): Remove.
17079         (vcmpneq_n_f16): Remove.
17080         (vcmpneq_f16): Remove.
17081         (vcmpltq_n_f16): Remove.
17082         (vcmpltq_f16): Remove.
17083         (vcmpleq_n_f16): Remove.
17084         (vcmpleq_f16): Remove.
17085         (vcmpgtq_n_f16): Remove.
17086         (vcmpgtq_f16): Remove.
17087         (vcmpgeq_n_f16): Remove.
17088         (vcmpgeq_f16): Remove.
17089         (vcmpeqq_n_f16): Remove.
17090         (vcmpeqq_f16): Remove.
17091         (vcmpneq_n_f32): Remove.
17092         (vcmpneq_f32): Remove.
17093         (vcmpltq_n_f32): Remove.
17094         (vcmpltq_f32): Remove.
17095         (vcmpleq_n_f32): Remove.
17096         (vcmpleq_f32): Remove.
17097         (vcmpgtq_n_f32): Remove.
17098         (vcmpgtq_f32): Remove.
17099         (vcmpgeq_n_f32): Remove.
17100         (vcmpgeq_f32): Remove.
17101         (vcmpeqq_n_f32): Remove.
17102         (vcmpeqq_f32): Remove.
17103         (vcmpeqq_m_f16): Remove.
17104         (vcmpeqq_m_f32): Remove.
17105         (vcmpneq_m_u8): Remove.
17106         (vcmpneq_m_n_u8): Remove.
17107         (vcmphiq_m_u8): Remove.
17108         (vcmphiq_m_n_u8): Remove.
17109         (vcmpeqq_m_u8): Remove.
17110         (vcmpeqq_m_n_u8): Remove.
17111         (vcmpcsq_m_u8): Remove.
17112         (vcmpcsq_m_n_u8): Remove.
17113         (vcmpneq_m_s8): Remove.
17114         (vcmpneq_m_n_s8): Remove.
17115         (vcmpltq_m_s8): Remove.
17116         (vcmpltq_m_n_s8): Remove.
17117         (vcmpleq_m_s8): Remove.
17118         (vcmpleq_m_n_s8): Remove.
17119         (vcmpgtq_m_s8): Remove.
17120         (vcmpgtq_m_n_s8): Remove.
17121         (vcmpgeq_m_s8): Remove.
17122         (vcmpgeq_m_n_s8): Remove.
17123         (vcmpeqq_m_s8): Remove.
17124         (vcmpeqq_m_n_s8): Remove.
17125         (vcmpneq_m_u16): Remove.
17126         (vcmpneq_m_n_u16): Remove.
17127         (vcmphiq_m_u16): Remove.
17128         (vcmphiq_m_n_u16): Remove.
17129         (vcmpeqq_m_u16): Remove.
17130         (vcmpeqq_m_n_u16): Remove.
17131         (vcmpcsq_m_u16): Remove.
17132         (vcmpcsq_m_n_u16): Remove.
17133         (vcmpneq_m_s16): Remove.
17134         (vcmpneq_m_n_s16): Remove.
17135         (vcmpltq_m_s16): Remove.
17136         (vcmpltq_m_n_s16): Remove.
17137         (vcmpleq_m_s16): Remove.
17138         (vcmpleq_m_n_s16): Remove.
17139         (vcmpgtq_m_s16): Remove.
17140         (vcmpgtq_m_n_s16): Remove.
17141         (vcmpgeq_m_s16): Remove.
17142         (vcmpgeq_m_n_s16): Remove.
17143         (vcmpeqq_m_s16): Remove.
17144         (vcmpeqq_m_n_s16): Remove.
17145         (vcmpneq_m_u32): Remove.
17146         (vcmpneq_m_n_u32): Remove.
17147         (vcmphiq_m_u32): Remove.
17148         (vcmphiq_m_n_u32): Remove.
17149         (vcmpeqq_m_u32): Remove.
17150         (vcmpeqq_m_n_u32): Remove.
17151         (vcmpcsq_m_u32): Remove.
17152         (vcmpcsq_m_n_u32): Remove.
17153         (vcmpneq_m_s32): Remove.
17154         (vcmpneq_m_n_s32): Remove.
17155         (vcmpltq_m_s32): Remove.
17156         (vcmpltq_m_n_s32): Remove.
17157         (vcmpleq_m_s32): Remove.
17158         (vcmpleq_m_n_s32): Remove.
17159         (vcmpgtq_m_s32): Remove.
17160         (vcmpgtq_m_n_s32): Remove.
17161         (vcmpgeq_m_s32): Remove.
17162         (vcmpgeq_m_n_s32): Remove.
17163         (vcmpeqq_m_s32): Remove.
17164         (vcmpeqq_m_n_s32): Remove.
17165         (vcmpeqq_m_n_f16): Remove.
17166         (vcmpgeq_m_f16): Remove.
17167         (vcmpgeq_m_n_f16): Remove.
17168         (vcmpgtq_m_f16): Remove.
17169         (vcmpgtq_m_n_f16): Remove.
17170         (vcmpleq_m_f16): Remove.
17171         (vcmpleq_m_n_f16): Remove.
17172         (vcmpltq_m_f16): Remove.
17173         (vcmpltq_m_n_f16): Remove.
17174         (vcmpneq_m_f16): Remove.
17175         (vcmpneq_m_n_f16): Remove.
17176         (vcmpeqq_m_n_f32): Remove.
17177         (vcmpgeq_m_f32): Remove.
17178         (vcmpgeq_m_n_f32): Remove.
17179         (vcmpgtq_m_f32): Remove.
17180         (vcmpgtq_m_n_f32): Remove.
17181         (vcmpleq_m_f32): Remove.
17182         (vcmpleq_m_n_f32): Remove.
17183         (vcmpltq_m_f32): Remove.
17184         (vcmpltq_m_n_f32): Remove.
17185         (vcmpneq_m_f32): Remove.
17186         (vcmpneq_m_n_f32): Remove.
17187         (__arm_vcmpneq_s8): Remove.
17188         (__arm_vcmpneq_s16): Remove.
17189         (__arm_vcmpneq_s32): Remove.
17190         (__arm_vcmpneq_u8): Remove.
17191         (__arm_vcmpneq_u16): Remove.
17192         (__arm_vcmpneq_u32): Remove.
17193         (__arm_vcmpneq_n_u8): Remove.
17194         (__arm_vcmphiq_u8): Remove.
17195         (__arm_vcmphiq_n_u8): Remove.
17196         (__arm_vcmpeqq_u8): Remove.
17197         (__arm_vcmpeqq_n_u8): Remove.
17198         (__arm_vcmpcsq_u8): Remove.
17199         (__arm_vcmpcsq_n_u8): Remove.
17200         (__arm_vcmpneq_n_s8): Remove.
17201         (__arm_vcmpltq_s8): Remove.
17202         (__arm_vcmpltq_n_s8): Remove.
17203         (__arm_vcmpleq_s8): Remove.
17204         (__arm_vcmpleq_n_s8): Remove.
17205         (__arm_vcmpgtq_s8): Remove.
17206         (__arm_vcmpgtq_n_s8): Remove.
17207         (__arm_vcmpgeq_s8): Remove.
17208         (__arm_vcmpgeq_n_s8): Remove.
17209         (__arm_vcmpeqq_s8): Remove.
17210         (__arm_vcmpeqq_n_s8): Remove.
17211         (__arm_vcmpneq_n_u16): Remove.
17212         (__arm_vcmphiq_u16): Remove.
17213         (__arm_vcmphiq_n_u16): Remove.
17214         (__arm_vcmpeqq_u16): Remove.
17215         (__arm_vcmpeqq_n_u16): Remove.
17216         (__arm_vcmpcsq_u16): Remove.
17217         (__arm_vcmpcsq_n_u16): Remove.
17218         (__arm_vcmpneq_n_s16): Remove.
17219         (__arm_vcmpltq_s16): Remove.
17220         (__arm_vcmpltq_n_s16): Remove.
17221         (__arm_vcmpleq_s16): Remove.
17222         (__arm_vcmpleq_n_s16): Remove.
17223         (__arm_vcmpgtq_s16): Remove.
17224         (__arm_vcmpgtq_n_s16): Remove.
17225         (__arm_vcmpgeq_s16): Remove.
17226         (__arm_vcmpgeq_n_s16): Remove.
17227         (__arm_vcmpeqq_s16): Remove.
17228         (__arm_vcmpeqq_n_s16): Remove.
17229         (__arm_vcmpneq_n_u32): Remove.
17230         (__arm_vcmphiq_u32): Remove.
17231         (__arm_vcmphiq_n_u32): Remove.
17232         (__arm_vcmpeqq_u32): Remove.
17233         (__arm_vcmpeqq_n_u32): Remove.
17234         (__arm_vcmpcsq_u32): Remove.
17235         (__arm_vcmpcsq_n_u32): Remove.
17236         (__arm_vcmpneq_n_s32): Remove.
17237         (__arm_vcmpltq_s32): Remove.
17238         (__arm_vcmpltq_n_s32): Remove.
17239         (__arm_vcmpleq_s32): Remove.
17240         (__arm_vcmpleq_n_s32): Remove.
17241         (__arm_vcmpgtq_s32): Remove.
17242         (__arm_vcmpgtq_n_s32): Remove.
17243         (__arm_vcmpgeq_s32): Remove.
17244         (__arm_vcmpgeq_n_s32): Remove.
17245         (__arm_vcmpeqq_s32): Remove.
17246         (__arm_vcmpeqq_n_s32): Remove.
17247         (__arm_vcmpneq_m_u8): Remove.
17248         (__arm_vcmpneq_m_n_u8): Remove.
17249         (__arm_vcmphiq_m_u8): Remove.
17250         (__arm_vcmphiq_m_n_u8): Remove.
17251         (__arm_vcmpeqq_m_u8): Remove.
17252         (__arm_vcmpeqq_m_n_u8): Remove.
17253         (__arm_vcmpcsq_m_u8): Remove.
17254         (__arm_vcmpcsq_m_n_u8): Remove.
17255         (__arm_vcmpneq_m_s8): Remove.
17256         (__arm_vcmpneq_m_n_s8): Remove.
17257         (__arm_vcmpltq_m_s8): Remove.
17258         (__arm_vcmpltq_m_n_s8): Remove.
17259         (__arm_vcmpleq_m_s8): Remove.
17260         (__arm_vcmpleq_m_n_s8): Remove.
17261         (__arm_vcmpgtq_m_s8): Remove.
17262         (__arm_vcmpgtq_m_n_s8): Remove.
17263         (__arm_vcmpgeq_m_s8): Remove.
17264         (__arm_vcmpgeq_m_n_s8): Remove.
17265         (__arm_vcmpeqq_m_s8): Remove.
17266         (__arm_vcmpeqq_m_n_s8): Remove.
17267         (__arm_vcmpneq_m_u16): Remove.
17268         (__arm_vcmpneq_m_n_u16): Remove.
17269         (__arm_vcmphiq_m_u16): Remove.
17270         (__arm_vcmphiq_m_n_u16): Remove.
17271         (__arm_vcmpeqq_m_u16): Remove.
17272         (__arm_vcmpeqq_m_n_u16): Remove.
17273         (__arm_vcmpcsq_m_u16): Remove.
17274         (__arm_vcmpcsq_m_n_u16): Remove.
17275         (__arm_vcmpneq_m_s16): Remove.
17276         (__arm_vcmpneq_m_n_s16): Remove.
17277         (__arm_vcmpltq_m_s16): Remove.
17278         (__arm_vcmpltq_m_n_s16): Remove.
17279         (__arm_vcmpleq_m_s16): Remove.
17280         (__arm_vcmpleq_m_n_s16): Remove.
17281         (__arm_vcmpgtq_m_s16): Remove.
17282         (__arm_vcmpgtq_m_n_s16): Remove.
17283         (__arm_vcmpgeq_m_s16): Remove.
17284         (__arm_vcmpgeq_m_n_s16): Remove.
17285         (__arm_vcmpeqq_m_s16): Remove.
17286         (__arm_vcmpeqq_m_n_s16): Remove.
17287         (__arm_vcmpneq_m_u32): Remove.
17288         (__arm_vcmpneq_m_n_u32): Remove.
17289         (__arm_vcmphiq_m_u32): Remove.
17290         (__arm_vcmphiq_m_n_u32): Remove.
17291         (__arm_vcmpeqq_m_u32): Remove.
17292         (__arm_vcmpeqq_m_n_u32): Remove.
17293         (__arm_vcmpcsq_m_u32): Remove.
17294         (__arm_vcmpcsq_m_n_u32): Remove.
17295         (__arm_vcmpneq_m_s32): Remove.
17296         (__arm_vcmpneq_m_n_s32): Remove.
17297         (__arm_vcmpltq_m_s32): Remove.
17298         (__arm_vcmpltq_m_n_s32): Remove.
17299         (__arm_vcmpleq_m_s32): Remove.
17300         (__arm_vcmpleq_m_n_s32): Remove.
17301         (__arm_vcmpgtq_m_s32): Remove.
17302         (__arm_vcmpgtq_m_n_s32): Remove.
17303         (__arm_vcmpgeq_m_s32): Remove.
17304         (__arm_vcmpgeq_m_n_s32): Remove.
17305         (__arm_vcmpeqq_m_s32): Remove.
17306         (__arm_vcmpeqq_m_n_s32): Remove.
17307         (__arm_vcmpneq_n_f16): Remove.
17308         (__arm_vcmpneq_f16): Remove.
17309         (__arm_vcmpltq_n_f16): Remove.
17310         (__arm_vcmpltq_f16): Remove.
17311         (__arm_vcmpleq_n_f16): Remove.
17312         (__arm_vcmpleq_f16): Remove.
17313         (__arm_vcmpgtq_n_f16): Remove.
17314         (__arm_vcmpgtq_f16): Remove.
17315         (__arm_vcmpgeq_n_f16): Remove.
17316         (__arm_vcmpgeq_f16): Remove.
17317         (__arm_vcmpeqq_n_f16): Remove.
17318         (__arm_vcmpeqq_f16): Remove.
17319         (__arm_vcmpneq_n_f32): Remove.
17320         (__arm_vcmpneq_f32): Remove.
17321         (__arm_vcmpltq_n_f32): Remove.
17322         (__arm_vcmpltq_f32): Remove.
17323         (__arm_vcmpleq_n_f32): Remove.
17324         (__arm_vcmpleq_f32): Remove.
17325         (__arm_vcmpgtq_n_f32): Remove.
17326         (__arm_vcmpgtq_f32): Remove.
17327         (__arm_vcmpgeq_n_f32): Remove.
17328         (__arm_vcmpgeq_f32): Remove.
17329         (__arm_vcmpeqq_n_f32): Remove.
17330         (__arm_vcmpeqq_f32): Remove.
17331         (__arm_vcmpeqq_m_f16): Remove.
17332         (__arm_vcmpeqq_m_f32): Remove.
17333         (__arm_vcmpeqq_m_n_f16): Remove.
17334         (__arm_vcmpgeq_m_f16): Remove.
17335         (__arm_vcmpgeq_m_n_f16): Remove.
17336         (__arm_vcmpgtq_m_f16): Remove.
17337         (__arm_vcmpgtq_m_n_f16): Remove.
17338         (__arm_vcmpleq_m_f16): Remove.
17339         (__arm_vcmpleq_m_n_f16): Remove.
17340         (__arm_vcmpltq_m_f16): Remove.
17341         (__arm_vcmpltq_m_n_f16): Remove.
17342         (__arm_vcmpneq_m_f16): Remove.
17343         (__arm_vcmpneq_m_n_f16): Remove.
17344         (__arm_vcmpeqq_m_n_f32): Remove.
17345         (__arm_vcmpgeq_m_f32): Remove.
17346         (__arm_vcmpgeq_m_n_f32): Remove.
17347         (__arm_vcmpgtq_m_f32): Remove.
17348         (__arm_vcmpgtq_m_n_f32): Remove.
17349         (__arm_vcmpleq_m_f32): Remove.
17350         (__arm_vcmpleq_m_n_f32): Remove.
17351         (__arm_vcmpltq_m_f32): Remove.
17352         (__arm_vcmpltq_m_n_f32): Remove.
17353         (__arm_vcmpneq_m_f32): Remove.
17354         (__arm_vcmpneq_m_n_f32): Remove.
17355         (__arm_vcmpneq): Remove.
17356         (__arm_vcmphiq): Remove.
17357         (__arm_vcmpeqq): Remove.
17358         (__arm_vcmpcsq): Remove.
17359         (__arm_vcmpltq): Remove.
17360         (__arm_vcmpleq): Remove.
17361         (__arm_vcmpgtq): Remove.
17362         (__arm_vcmpgeq): Remove.
17363         (__arm_vcmpneq_m): Remove.
17364         (__arm_vcmphiq_m): Remove.
17365         (__arm_vcmpeqq_m): Remove.
17366         (__arm_vcmpcsq_m): Remove.
17367         (__arm_vcmpltq_m): Remove.
17368         (__arm_vcmpleq_m): Remove.
17369         (__arm_vcmpgtq_m): Remove.
17370         (__arm_vcmpgeq_m): Remove.
17372 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
17374         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
17375         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
17377 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
17379         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
17380         (MVE_CMP_M_N_F, mve_cmp_op1): New.
17381         (isu): Add VCMP*
17382         (supf): Likewise.
17383         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
17384         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
17385         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
17386         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
17387         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
17388         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
17389         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
17390         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
17391         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
17392         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
17393         ...
17394         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
17395         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
17396         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
17397         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
17398         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
17399         into ...
17400         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
17401         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
17402         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
17403         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
17404         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
17406 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
17408         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
17409         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
17410         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
17411         vice versa.
17413 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
17415         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
17416         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
17417         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
17418         Simplify parity(rotate(x,y)) as parity(x).
17420 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17422         * config/riscv/autovec.md (@vec_series<mode>): New pattern
17423         * config/riscv/riscv-protos.h (expand_vec_series): New function.
17424         * config/riscv/riscv-v.cc (emit_binop): Ditto.
17425         (emit_index_op): Ditto.
17426         (expand_vec_series): Ditto.
17427         (expand_const_vector): Add series vector handling.
17428         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
17430 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
17432         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
17433         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
17434         (*concat<mode><dwi>3_2): Likewise.
17435         (*concat<mode><dwi>3_3): Likewise.
17436         (*concat<mode><dwi>3_4): Likewise.
17437         (*concat<mode><dwi>3_5): Likewise.
17438         (*concat<mode><dwi>3_6): Likewise.
17439         (*concat<mode><dwi>3_7): Likewise.
17441 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
17443         PR target/92658
17444         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
17445         (<insn>v4qiv4hi2): New expander.
17446         (<insn>v2hiv2si2): Ditto.
17447         (<insn>v2qiv2si2): Ditto.
17448         (<insn>v2qiv2hi2): Ditto.
17450 2023-05-10  Jeff Law  <jlaw@ventanamicro>
17452         * config/h8300/constraints.md (Q): Make this a special memory
17453         constraint.
17454         (Zz): Similarly.
17456 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
17458         PR fortran/109788
17459         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
17460         if t is void_list_node.
17462 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17464         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
17465         (aarch64_sqmovun<mode>_insn_be): Delete.
17466         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
17467         (aarch64_sqmovun<mode>): Delete expander.
17469 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17471         PR target/99195
17472         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
17473         Rename to...
17474         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
17475         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
17476         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
17478 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17480         PR target/99195
17481         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
17482         Rename to...
17483         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
17484         (aarch64_<sur>qadd<mode>): Rename to...
17485         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
17487 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17489         * config/aarch64/aarch64-simd.md
17490         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
17491         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
17492         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
17493         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
17495 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17497         PR target/99195
17498         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
17499         (aarch64_xtn<mode>_insn_be): Likewise.
17500         (trunc<mode><Vnarrowq>2): Rename to...
17501         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
17502         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
17503         (aarch64_<su>qmovn<mode>): Likewise.
17504         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
17505         (aarch64_<su>qmovn<mode>_insn_le): Delete.
17506         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
17508 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
17510         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
17511         intruction replace null avl with (const_int 0).
17513 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17515         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
17516         incorrect codes.
17518 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17520         PR target/109773
17521         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
17522         (source_equal_p): Fix dead loop in vsetvl avl checking.
17524 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
17526         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
17527         of modeadjusted_dccr.
17529 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17531         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
17532         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
17533         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
17534         * config/arm/arm-mve-builtins.cc
17535         (function_instance::has_inactive_argument): Handle vmaxaq and
17536         vminaq.
17537         * config/arm/arm_mve.h (vminaq): Remove.
17538         (vmaxaq): Remove.
17539         (vminaq_m): Remove.
17540         (vmaxaq_m): Remove.
17541         (vminaq_s8): Remove.
17542         (vmaxaq_s8): Remove.
17543         (vminaq_s16): Remove.
17544         (vmaxaq_s16): Remove.
17545         (vminaq_s32): Remove.
17546         (vmaxaq_s32): Remove.
17547         (vminaq_m_s8): Remove.
17548         (vmaxaq_m_s8): Remove.
17549         (vminaq_m_s16): Remove.
17550         (vmaxaq_m_s16): Remove.
17551         (vminaq_m_s32): Remove.
17552         (vmaxaq_m_s32): Remove.
17553         (__arm_vminaq_s8): Remove.
17554         (__arm_vmaxaq_s8): Remove.
17555         (__arm_vminaq_s16): Remove.
17556         (__arm_vmaxaq_s16): Remove.
17557         (__arm_vminaq_s32): Remove.
17558         (__arm_vmaxaq_s32): Remove.
17559         (__arm_vminaq_m_s8): Remove.
17560         (__arm_vmaxaq_m_s8): Remove.
17561         (__arm_vminaq_m_s16): Remove.
17562         (__arm_vmaxaq_m_s16): Remove.
17563         (__arm_vminaq_m_s32): Remove.
17564         (__arm_vmaxaq_m_s32): Remove.
17565         (__arm_vminaq): Remove.
17566         (__arm_vmaxaq): Remove.
17567         (__arm_vminaq_m): Remove.
17568         (__arm_vmaxaq_m): Remove.
17570 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17572         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
17573         New.
17574         (mve_insn): Add vmaxa, vmina.
17575         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
17576         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
17577         Merge into ...
17578         (@mve_<mve_insn>q_<supf><mode>): ... this.
17579         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
17580         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
17582 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17584         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
17585         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
17587 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17589         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
17590         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
17591         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
17592         * config/arm/arm-mve-builtins.cc
17593         (function_instance::has_inactive_argument): Handle vmaxnmaq and
17594         vminnmaq.
17595         * config/arm/arm_mve.h (vminnmaq): Remove.
17596         (vmaxnmaq): Remove.
17597         (vmaxnmaq_m): Remove.
17598         (vminnmaq_m): Remove.
17599         (vminnmaq_f16): Remove.
17600         (vmaxnmaq_f16): Remove.
17601         (vminnmaq_f32): Remove.
17602         (vmaxnmaq_f32): Remove.
17603         (vmaxnmaq_m_f16): Remove.
17604         (vminnmaq_m_f16): Remove.
17605         (vmaxnmaq_m_f32): Remove.
17606         (vminnmaq_m_f32): Remove.
17607         (__arm_vminnmaq_f16): Remove.
17608         (__arm_vmaxnmaq_f16): Remove.
17609         (__arm_vminnmaq_f32): Remove.
17610         (__arm_vmaxnmaq_f32): Remove.
17611         (__arm_vmaxnmaq_m_f16): Remove.
17612         (__arm_vminnmaq_m_f16): Remove.
17613         (__arm_vmaxnmaq_m_f32): Remove.
17614         (__arm_vminnmaq_m_f32): Remove.
17615         (__arm_vminnmaq): Remove.
17616         (__arm_vmaxnmaq): Remove.
17617         (__arm_vmaxnmaq_m): Remove.
17618         (__arm_vminnmaq_m): Remove.
17620 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17622         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
17623         (MVE_VMAXNMA_VMINNMAQ_M): New.
17624         (mve_insn): Add vmaxnma, vminnma.
17625         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
17626         Merge into ...
17627         (@mve_<mve_insn>q_f<mode>): ... this.
17628         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
17629         (@mve_<mve_insn>q_m_f<mode>): ... this.
17631 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17633         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
17634         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
17635         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
17636         (vminnmavq, vminnmvq): New.
17637         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
17638         (vminnmavq, vminnmvq): New.
17639         * config/arm/arm_mve.h (vminnmvq): Remove.
17640         (vminnmavq): Remove.
17641         (vmaxnmvq): Remove.
17642         (vmaxnmavq): Remove.
17643         (vmaxnmavq_p): Remove.
17644         (vmaxnmvq_p): Remove.
17645         (vminnmavq_p): Remove.
17646         (vminnmvq_p): Remove.
17647         (vminnmvq_f16): Remove.
17648         (vminnmavq_f16): Remove.
17649         (vmaxnmvq_f16): Remove.
17650         (vmaxnmavq_f16): Remove.
17651         (vminnmvq_f32): Remove.
17652         (vminnmavq_f32): Remove.
17653         (vmaxnmvq_f32): Remove.
17654         (vmaxnmavq_f32): Remove.
17655         (vmaxnmavq_p_f16): Remove.
17656         (vmaxnmvq_p_f16): Remove.
17657         (vminnmavq_p_f16): Remove.
17658         (vminnmvq_p_f16): Remove.
17659         (vmaxnmavq_p_f32): Remove.
17660         (vmaxnmvq_p_f32): Remove.
17661         (vminnmavq_p_f32): Remove.
17662         (vminnmvq_p_f32): Remove.
17663         (__arm_vminnmvq_f16): Remove.
17664         (__arm_vminnmavq_f16): Remove.
17665         (__arm_vmaxnmvq_f16): Remove.
17666         (__arm_vmaxnmavq_f16): Remove.
17667         (__arm_vminnmvq_f32): Remove.
17668         (__arm_vminnmavq_f32): Remove.
17669         (__arm_vmaxnmvq_f32): Remove.
17670         (__arm_vmaxnmavq_f32): Remove.
17671         (__arm_vmaxnmavq_p_f16): Remove.
17672         (__arm_vmaxnmvq_p_f16): Remove.
17673         (__arm_vminnmavq_p_f16): Remove.
17674         (__arm_vminnmvq_p_f16): Remove.
17675         (__arm_vmaxnmavq_p_f32): Remove.
17676         (__arm_vmaxnmvq_p_f32): Remove.
17677         (__arm_vminnmavq_p_f32): Remove.
17678         (__arm_vminnmvq_p_f32): Remove.
17679         (__arm_vminnmvq): Remove.
17680         (__arm_vminnmavq): Remove.
17681         (__arm_vmaxnmvq): Remove.
17682         (__arm_vmaxnmavq): Remove.
17683         (__arm_vmaxnmavq_p): Remove.
17684         (__arm_vmaxnmvq_p): Remove.
17685         (__arm_vminnmavq_p): Remove.
17686         (__arm_vminnmvq_p): Remove.
17687         (__arm_vmaxnmavq_m): Remove.
17688         (__arm_vmaxnmvq_m): Remove.
17690 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17692         * config/arm/arm-mve-builtins-functions.h
17693         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
17695 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17697         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
17698         (MVE_VMAXNMxV_MINNMxVQ_P): New.
17699         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
17700         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
17701         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
17702         (@mve_<mve_insn>q_f<mode>): ... this.
17703         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
17704         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
17705         (@mve_<mve_insn>q_p_f<mode>): ... this.
17707 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17709         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
17710         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
17711         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
17712         * config/arm/arm_mve.h (vminnmq): Remove.
17713         (vmaxnmq): Remove.
17714         (vmaxnmq_m): Remove.
17715         (vminnmq_m): Remove.
17716         (vminnmq_x): Remove.
17717         (vmaxnmq_x): Remove.
17718         (vminnmq_f16): Remove.
17719         (vmaxnmq_f16): Remove.
17720         (vminnmq_f32): Remove.
17721         (vmaxnmq_f32): Remove.
17722         (vmaxnmq_m_f32): Remove.
17723         (vmaxnmq_m_f16): Remove.
17724         (vminnmq_m_f32): Remove.
17725         (vminnmq_m_f16): Remove.
17726         (vminnmq_x_f16): Remove.
17727         (vminnmq_x_f32): Remove.
17728         (vmaxnmq_x_f16): Remove.
17729         (vmaxnmq_x_f32): Remove.
17730         (__arm_vminnmq_f16): Remove.
17731         (__arm_vmaxnmq_f16): Remove.
17732         (__arm_vminnmq_f32): Remove.
17733         (__arm_vmaxnmq_f32): Remove.
17734         (__arm_vmaxnmq_m_f32): Remove.
17735         (__arm_vmaxnmq_m_f16): Remove.
17736         (__arm_vminnmq_m_f32): Remove.
17737         (__arm_vminnmq_m_f16): Remove.
17738         (__arm_vminnmq_x_f16): Remove.
17739         (__arm_vminnmq_x_f32): Remove.
17740         (__arm_vmaxnmq_x_f16): Remove.
17741         (__arm_vmaxnmq_x_f32): Remove.
17742         (__arm_vminnmq): Remove.
17743         (__arm_vmaxnmq): Remove.
17744         (__arm_vmaxnmq_m): Remove.
17745         (__arm_vminnmq_m): Remove.
17746         (__arm_vminnmq_x): Remove.
17747         (__arm_vmaxnmq_x): Remove.
17749 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17751         * config/arm/iterators.md (MAX_MIN_F): New.
17752         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
17753         (mve_insn): Add vmaxnm, vminnm.
17754         (max_min_f_str): New.
17755         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
17756         Merge into ...
17757         (@mve_<max_min_f_str>q_f<mode>): ... this.
17758         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
17759         (@mve_<mve_insn>q_m_f<mode>): ... this.
17761 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17763         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
17764         (smax<mode>3): Likewise.
17766 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17768         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
17769         (FUNCTION_PRED_P_S): New.
17770         (vmaxavq, vminavq, vmaxvq, vminvq): New.
17771         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
17772         (vminvq): New.
17773         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
17774         (vminvq): New.
17775         * config/arm/arm_mve.h (vminvq): Remove.
17776         (vmaxvq): Remove.
17777         (vminvq_p): Remove.
17778         (vmaxvq_p): Remove.
17779         (vminvq_u8): Remove.
17780         (vmaxvq_u8): Remove.
17781         (vminvq_s8): Remove.
17782         (vmaxvq_s8): Remove.
17783         (vminvq_u16): Remove.
17784         (vmaxvq_u16): Remove.
17785         (vminvq_s16): Remove.
17786         (vmaxvq_s16): Remove.
17787         (vminvq_u32): Remove.
17788         (vmaxvq_u32): Remove.
17789         (vminvq_s32): Remove.
17790         (vmaxvq_s32): Remove.
17791         (vminvq_p_u8): Remove.
17792         (vmaxvq_p_u8): Remove.
17793         (vminvq_p_s8): Remove.
17794         (vmaxvq_p_s8): Remove.
17795         (vminvq_p_u16): Remove.
17796         (vmaxvq_p_u16): Remove.
17797         (vminvq_p_s16): Remove.
17798         (vmaxvq_p_s16): Remove.
17799         (vminvq_p_u32): Remove.
17800         (vmaxvq_p_u32): Remove.
17801         (vminvq_p_s32): Remove.
17802         (vmaxvq_p_s32): Remove.
17803         (__arm_vminvq_u8): Remove.
17804         (__arm_vmaxvq_u8): Remove.
17805         (__arm_vminvq_s8): Remove.
17806         (__arm_vmaxvq_s8): Remove.
17807         (__arm_vminvq_u16): Remove.
17808         (__arm_vmaxvq_u16): Remove.
17809         (__arm_vminvq_s16): Remove.
17810         (__arm_vmaxvq_s16): Remove.
17811         (__arm_vminvq_u32): Remove.
17812         (__arm_vmaxvq_u32): Remove.
17813         (__arm_vminvq_s32): Remove.
17814         (__arm_vmaxvq_s32): Remove.
17815         (__arm_vminvq_p_u8): Remove.
17816         (__arm_vmaxvq_p_u8): Remove.
17817         (__arm_vminvq_p_s8): Remove.
17818         (__arm_vmaxvq_p_s8): Remove.
17819         (__arm_vminvq_p_u16): Remove.
17820         (__arm_vmaxvq_p_u16): Remove.
17821         (__arm_vminvq_p_s16): Remove.
17822         (__arm_vmaxvq_p_s16): Remove.
17823         (__arm_vminvq_p_u32): Remove.
17824         (__arm_vmaxvq_p_u32): Remove.
17825         (__arm_vminvq_p_s32): Remove.
17826         (__arm_vmaxvq_p_s32): Remove.
17827         (__arm_vminvq): Remove.
17828         (__arm_vmaxvq): Remove.
17829         (__arm_vminvq_p): Remove.
17830         (__arm_vmaxvq_p): Remove.
17831         (vminavq): Remove.
17832         (vmaxavq): Remove.
17833         (vminavq_p): Remove.
17834         (vmaxavq_p): Remove.
17835         (vminavq_s8): Remove.
17836         (vmaxavq_s8): Remove.
17837         (vminavq_s16): Remove.
17838         (vmaxavq_s16): Remove.
17839         (vminavq_s32): Remove.
17840         (vmaxavq_s32): Remove.
17841         (vminavq_p_s8): Remove.
17842         (vmaxavq_p_s8): Remove.
17843         (vminavq_p_s16): Remove.
17844         (vmaxavq_p_s16): Remove.
17845         (vminavq_p_s32): Remove.
17846         (vmaxavq_p_s32): Remove.
17847         (__arm_vminavq_s8): Remove.
17848         (__arm_vmaxavq_s8): Remove.
17849         (__arm_vminavq_s16): Remove.
17850         (__arm_vmaxavq_s16): Remove.
17851         (__arm_vminavq_s32): Remove.
17852         (__arm_vmaxavq_s32): Remove.
17853         (__arm_vminavq_p_s8): Remove.
17854         (__arm_vmaxavq_p_s8): Remove.
17855         (__arm_vminavq_p_s16): Remove.
17856         (__arm_vmaxavq_p_s16): Remove.
17857         (__arm_vminavq_p_s32): Remove.
17858         (__arm_vmaxavq_p_s32): Remove.
17859         (__arm_vminavq): Remove.
17860         (__arm_vmaxavq): Remove.
17861         (__arm_vminavq_p): Remove.
17862         (__arm_vmaxavq_p): Remove.
17864 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17866         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
17867         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
17868         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
17869         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
17870         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
17871         (@mve_<mve_insn>q_<supf><mode>): ... this.
17872         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
17873         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
17874         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
17876 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17878         * config/arm/arm-mve-builtins-functions.h (class
17879         unspec_mve_function_exact_insn_pred_p): New.
17881 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17883         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
17884         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
17886 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17888         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
17889         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
17891 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
17893         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
17894         Declare.
17895         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
17896         (ADJUST_REG_ALLOC_ORDER): Likewise.
17897         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
17898         function.
17899         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
17900         Upa rather than Upl for unpredicated movprfx alternatives.
17902 2023-05-09  Jeff Law  <jlaw@ventanamicro>
17904         * config/h8300/testcompare.md: Add peephole2 which uses a memory
17905         load to set flags, thus eliminating a compare against zero.
17907 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17909         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
17910         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
17911         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
17912         * config/arm/arm_mve.h (vshlltq): Remove.
17913         (vshllbq): Remove.
17914         (vshllbq_m): Remove.
17915         (vshlltq_m): Remove.
17916         (vshllbq_x): Remove.
17917         (vshlltq_x): Remove.
17918         (vshlltq_n_u8): Remove.
17919         (vshllbq_n_u8): Remove.
17920         (vshlltq_n_s8): Remove.
17921         (vshllbq_n_s8): Remove.
17922         (vshlltq_n_u16): Remove.
17923         (vshllbq_n_u16): Remove.
17924         (vshlltq_n_s16): Remove.
17925         (vshllbq_n_s16): Remove.
17926         (vshllbq_m_n_s8): Remove.
17927         (vshllbq_m_n_s16): Remove.
17928         (vshllbq_m_n_u8): Remove.
17929         (vshllbq_m_n_u16): Remove.
17930         (vshlltq_m_n_s8): Remove.
17931         (vshlltq_m_n_s16): Remove.
17932         (vshlltq_m_n_u8): Remove.
17933         (vshlltq_m_n_u16): Remove.
17934         (vshllbq_x_n_s8): Remove.
17935         (vshllbq_x_n_s16): Remove.
17936         (vshllbq_x_n_u8): Remove.
17937         (vshllbq_x_n_u16): Remove.
17938         (vshlltq_x_n_s8): Remove.
17939         (vshlltq_x_n_s16): Remove.
17940         (vshlltq_x_n_u8): Remove.
17941         (vshlltq_x_n_u16): Remove.
17942         (__arm_vshlltq_n_u8): Remove.
17943         (__arm_vshllbq_n_u8): Remove.
17944         (__arm_vshlltq_n_s8): Remove.
17945         (__arm_vshllbq_n_s8): Remove.
17946         (__arm_vshlltq_n_u16): Remove.
17947         (__arm_vshllbq_n_u16): Remove.
17948         (__arm_vshlltq_n_s16): Remove.
17949         (__arm_vshllbq_n_s16): Remove.
17950         (__arm_vshllbq_m_n_s8): Remove.
17951         (__arm_vshllbq_m_n_s16): Remove.
17952         (__arm_vshllbq_m_n_u8): Remove.
17953         (__arm_vshllbq_m_n_u16): Remove.
17954         (__arm_vshlltq_m_n_s8): Remove.
17955         (__arm_vshlltq_m_n_s16): Remove.
17956         (__arm_vshlltq_m_n_u8): Remove.
17957         (__arm_vshlltq_m_n_u16): Remove.
17958         (__arm_vshllbq_x_n_s8): Remove.
17959         (__arm_vshllbq_x_n_s16): Remove.
17960         (__arm_vshllbq_x_n_u8): Remove.
17961         (__arm_vshllbq_x_n_u16): Remove.
17962         (__arm_vshlltq_x_n_s8): Remove.
17963         (__arm_vshlltq_x_n_s16): Remove.
17964         (__arm_vshlltq_x_n_u8): Remove.
17965         (__arm_vshlltq_x_n_u16): Remove.
17966         (__arm_vshlltq): Remove.
17967         (__arm_vshllbq): Remove.
17968         (__arm_vshllbq_m): Remove.
17969         (__arm_vshlltq_m): Remove.
17970         (__arm_vshllbq_x): Remove.
17971         (__arm_vshlltq_x): Remove.
17973 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17975         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
17976         (VSHLLBQ_N, VSHLLTQ_N): Remove.
17977         (VSHLLxQ_N): New.
17978         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
17979         (VSHLLxQ_M_N): New.
17980         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
17981         (mve_vshlltq_n_<supf><mode>): Merge into ...
17982         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
17983         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
17984         Merge into ...
17985         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
17987 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17989         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
17990         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
17992 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
17994         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
17995         (vqmovntq, vqmovunbq, vqmovuntq): New.
17996         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
17997         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
17998         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
17999         (vqmovntq, vqmovunbq, vqmovuntq): New.
18000         * config/arm/arm-mve-builtins.cc
18001         (function_instance::has_inactive_argument): Handle vmovnbq,
18002         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
18003         * config/arm/arm_mve.h (vqmovntq): Remove.
18004         (vqmovnbq): Remove.
18005         (vqmovnbq_m): Remove.
18006         (vqmovntq_m): Remove.
18007         (vqmovntq_u16): Remove.
18008         (vqmovnbq_u16): Remove.
18009         (vqmovntq_s16): Remove.
18010         (vqmovnbq_s16): Remove.
18011         (vqmovntq_u32): Remove.
18012         (vqmovnbq_u32): Remove.
18013         (vqmovntq_s32): Remove.
18014         (vqmovnbq_s32): Remove.
18015         (vqmovnbq_m_s16): Remove.
18016         (vqmovntq_m_s16): Remove.
18017         (vqmovnbq_m_u16): Remove.
18018         (vqmovntq_m_u16): Remove.
18019         (vqmovnbq_m_s32): Remove.
18020         (vqmovntq_m_s32): Remove.
18021         (vqmovnbq_m_u32): Remove.
18022         (vqmovntq_m_u32): Remove.
18023         (__arm_vqmovntq_u16): Remove.
18024         (__arm_vqmovnbq_u16): Remove.
18025         (__arm_vqmovntq_s16): Remove.
18026         (__arm_vqmovnbq_s16): Remove.
18027         (__arm_vqmovntq_u32): Remove.
18028         (__arm_vqmovnbq_u32): Remove.
18029         (__arm_vqmovntq_s32): Remove.
18030         (__arm_vqmovnbq_s32): Remove.
18031         (__arm_vqmovnbq_m_s16): Remove.
18032         (__arm_vqmovntq_m_s16): Remove.
18033         (__arm_vqmovnbq_m_u16): Remove.
18034         (__arm_vqmovntq_m_u16): Remove.
18035         (__arm_vqmovnbq_m_s32): Remove.
18036         (__arm_vqmovntq_m_s32): Remove.
18037         (__arm_vqmovnbq_m_u32): Remove.
18038         (__arm_vqmovntq_m_u32): Remove.
18039         (__arm_vqmovntq): Remove.
18040         (__arm_vqmovnbq): Remove.
18041         (__arm_vqmovnbq_m): Remove.
18042         (__arm_vqmovntq_m): Remove.
18043         (vmovntq): Remove.
18044         (vmovnbq): Remove.
18045         (vmovnbq_m): Remove.
18046         (vmovntq_m): Remove.
18047         (vmovntq_u16): Remove.
18048         (vmovnbq_u16): Remove.
18049         (vmovntq_s16): Remove.
18050         (vmovnbq_s16): Remove.
18051         (vmovntq_u32): Remove.
18052         (vmovnbq_u32): Remove.
18053         (vmovntq_s32): Remove.
18054         (vmovnbq_s32): Remove.
18055         (vmovnbq_m_s16): Remove.
18056         (vmovntq_m_s16): Remove.
18057         (vmovnbq_m_u16): Remove.
18058         (vmovntq_m_u16): Remove.
18059         (vmovnbq_m_s32): Remove.
18060         (vmovntq_m_s32): Remove.
18061         (vmovnbq_m_u32): Remove.
18062         (vmovntq_m_u32): Remove.
18063         (__arm_vmovntq_u16): Remove.
18064         (__arm_vmovnbq_u16): Remove.
18065         (__arm_vmovntq_s16): Remove.
18066         (__arm_vmovnbq_s16): Remove.
18067         (__arm_vmovntq_u32): Remove.
18068         (__arm_vmovnbq_u32): Remove.
18069         (__arm_vmovntq_s32): Remove.
18070         (__arm_vmovnbq_s32): Remove.
18071         (__arm_vmovnbq_m_s16): Remove.
18072         (__arm_vmovntq_m_s16): Remove.
18073         (__arm_vmovnbq_m_u16): Remove.
18074         (__arm_vmovntq_m_u16): Remove.
18075         (__arm_vmovnbq_m_s32): Remove.
18076         (__arm_vmovntq_m_s32): Remove.
18077         (__arm_vmovnbq_m_u32): Remove.
18078         (__arm_vmovntq_m_u32): Remove.
18079         (__arm_vmovntq): Remove.
18080         (__arm_vmovnbq): Remove.
18081         (__arm_vmovnbq_m): Remove.
18082         (__arm_vmovntq_m): Remove.
18083         (vqmovuntq): Remove.
18084         (vqmovunbq): Remove.
18085         (vqmovunbq_m): Remove.
18086         (vqmovuntq_m): Remove.
18087         (vqmovuntq_s16): Remove.
18088         (vqmovunbq_s16): Remove.
18089         (vqmovuntq_s32): Remove.
18090         (vqmovunbq_s32): Remove.
18091         (vqmovunbq_m_s16): Remove.
18092         (vqmovuntq_m_s16): Remove.
18093         (vqmovunbq_m_s32): Remove.
18094         (vqmovuntq_m_s32): Remove.
18095         (__arm_vqmovuntq_s16): Remove.
18096         (__arm_vqmovunbq_s16): Remove.
18097         (__arm_vqmovuntq_s32): Remove.
18098         (__arm_vqmovunbq_s32): Remove.
18099         (__arm_vqmovunbq_m_s16): Remove.
18100         (__arm_vqmovuntq_m_s16): Remove.
18101         (__arm_vqmovunbq_m_s32): Remove.
18102         (__arm_vqmovuntq_m_s32): Remove.
18103         (__arm_vqmovuntq): Remove.
18104         (__arm_vqmovunbq): Remove.
18105         (__arm_vqmovunbq_m): Remove.
18106         (__arm_vqmovuntq_m): Remove.
18108 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
18110         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
18111         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
18112         vqmovunt.
18113         (isu): Likewise.
18114         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
18115         VQMOVUNTQ_S.
18116         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
18117         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
18118         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
18119         (mve_vqmovuntq_s<mode>): Merge into ...
18120         (@mve_<mve_insn>q_<supf><mode>): ... this.
18121         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
18122         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
18123         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
18124         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
18126 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
18128         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
18129         (binary_move_narrow_unsigned): New.
18130         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
18131         (binary_move_narrow_unsigned): New.
18133 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
18135         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
18136         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
18137         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
18138         (vrndpq, vrndq, vrndxq): New.
18139         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
18140         (vrndpq, vrndq, vrndxq): New.
18141         * config/arm/arm_mve.h (vrndxq): Remove.
18142         (vrndq): Remove.
18143         (vrndpq): Remove.
18144         (vrndnq): Remove.
18145         (vrndmq): Remove.
18146         (vrndaq): Remove.
18147         (vrndaq_m): Remove.
18148         (vrndmq_m): Remove.
18149         (vrndnq_m): Remove.
18150         (vrndpq_m): Remove.
18151         (vrndq_m): Remove.
18152         (vrndxq_m): Remove.
18153         (vrndq_x): Remove.
18154         (vrndnq_x): Remove.
18155         (vrndmq_x): Remove.
18156         (vrndpq_x): Remove.
18157         (vrndaq_x): Remove.
18158         (vrndxq_x): Remove.
18159         (vrndxq_f16): Remove.
18160         (vrndxq_f32): Remove.
18161         (vrndq_f16): Remove.
18162         (vrndq_f32): Remove.
18163         (vrndpq_f16): Remove.
18164         (vrndpq_f32): Remove.
18165         (vrndnq_f16): Remove.
18166         (vrndnq_f32): Remove.
18167         (vrndmq_f16): Remove.
18168         (vrndmq_f32): Remove.
18169         (vrndaq_f16): Remove.
18170         (vrndaq_f32): Remove.
18171         (vrndaq_m_f16): Remove.
18172         (vrndmq_m_f16): Remove.
18173         (vrndnq_m_f16): Remove.
18174         (vrndpq_m_f16): Remove.
18175         (vrndq_m_f16): Remove.
18176         (vrndxq_m_f16): Remove.
18177         (vrndaq_m_f32): Remove.
18178         (vrndmq_m_f32): Remove.
18179         (vrndnq_m_f32): Remove.
18180         (vrndpq_m_f32): Remove.
18181         (vrndq_m_f32): Remove.
18182         (vrndxq_m_f32): Remove.
18183         (vrndq_x_f16): Remove.
18184         (vrndq_x_f32): Remove.
18185         (vrndnq_x_f16): Remove.
18186         (vrndnq_x_f32): Remove.
18187         (vrndmq_x_f16): Remove.
18188         (vrndmq_x_f32): Remove.
18189         (vrndpq_x_f16): Remove.
18190         (vrndpq_x_f32): Remove.
18191         (vrndaq_x_f16): Remove.
18192         (vrndaq_x_f32): Remove.
18193         (vrndxq_x_f16): Remove.
18194         (vrndxq_x_f32): Remove.
18195         (__arm_vrndxq_f16): Remove.
18196         (__arm_vrndxq_f32): Remove.
18197         (__arm_vrndq_f16): Remove.
18198         (__arm_vrndq_f32): Remove.
18199         (__arm_vrndpq_f16): Remove.
18200         (__arm_vrndpq_f32): Remove.
18201         (__arm_vrndnq_f16): Remove.
18202         (__arm_vrndnq_f32): Remove.
18203         (__arm_vrndmq_f16): Remove.
18204         (__arm_vrndmq_f32): Remove.
18205         (__arm_vrndaq_f16): Remove.
18206         (__arm_vrndaq_f32): Remove.
18207         (__arm_vrndaq_m_f16): Remove.
18208         (__arm_vrndmq_m_f16): Remove.
18209         (__arm_vrndnq_m_f16): Remove.
18210         (__arm_vrndpq_m_f16): Remove.
18211         (__arm_vrndq_m_f16): Remove.
18212         (__arm_vrndxq_m_f16): Remove.
18213         (__arm_vrndaq_m_f32): Remove.
18214         (__arm_vrndmq_m_f32): Remove.
18215         (__arm_vrndnq_m_f32): Remove.
18216         (__arm_vrndpq_m_f32): Remove.
18217         (__arm_vrndq_m_f32): Remove.
18218         (__arm_vrndxq_m_f32): Remove.
18219         (__arm_vrndq_x_f16): Remove.
18220         (__arm_vrndq_x_f32): Remove.
18221         (__arm_vrndnq_x_f16): Remove.
18222         (__arm_vrndnq_x_f32): Remove.
18223         (__arm_vrndmq_x_f16): Remove.
18224         (__arm_vrndmq_x_f32): Remove.
18225         (__arm_vrndpq_x_f16): Remove.
18226         (__arm_vrndpq_x_f32): Remove.
18227         (__arm_vrndaq_x_f16): Remove.
18228         (__arm_vrndaq_x_f32): Remove.
18229         (__arm_vrndxq_x_f16): Remove.
18230         (__arm_vrndxq_x_f32): Remove.
18231         (__arm_vrndxq): Remove.
18232         (__arm_vrndq): Remove.
18233         (__arm_vrndpq): Remove.
18234         (__arm_vrndnq): Remove.
18235         (__arm_vrndmq): Remove.
18236         (__arm_vrndaq): Remove.
18237         (__arm_vrndaq_m): Remove.
18238         (__arm_vrndmq_m): Remove.
18239         (__arm_vrndnq_m): Remove.
18240         (__arm_vrndpq_m): Remove.
18241         (__arm_vrndq_m): Remove.
18242         (__arm_vrndxq_m): Remove.
18243         (__arm_vrndq_x): Remove.
18244         (__arm_vrndnq_x): Remove.
18245         (__arm_vrndmq_x): Remove.
18246         (__arm_vrndpq_x): Remove.
18247         (__arm_vrndaq_x): Remove.
18248         (__arm_vrndxq_x): Remove.
18250 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
18252         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
18253         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
18254         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
18255         (vclzq, vqabsq, vqnegq): New.
18256         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
18257         (vqabsq, vqnegq): New.
18258         * config/arm/arm_mve.h (vabsq): Remove.
18259         (vabsq_m): Remove.
18260         (vabsq_x): Remove.
18261         (vabsq_f16): Remove.
18262         (vabsq_f32): Remove.
18263         (vabsq_s8): Remove.
18264         (vabsq_s16): Remove.
18265         (vabsq_s32): Remove.
18266         (vabsq_m_s8): Remove.
18267         (vabsq_m_s16): Remove.
18268         (vabsq_m_s32): Remove.
18269         (vabsq_m_f16): Remove.
18270         (vabsq_m_f32): Remove.
18271         (vabsq_x_s8): Remove.
18272         (vabsq_x_s16): Remove.
18273         (vabsq_x_s32): Remove.
18274         (vabsq_x_f16): Remove.
18275         (vabsq_x_f32): Remove.
18276         (__arm_vabsq_s8): Remove.
18277         (__arm_vabsq_s16): Remove.
18278         (__arm_vabsq_s32): Remove.
18279         (__arm_vabsq_m_s8): Remove.
18280         (__arm_vabsq_m_s16): Remove.
18281         (__arm_vabsq_m_s32): Remove.
18282         (__arm_vabsq_x_s8): Remove.
18283         (__arm_vabsq_x_s16): Remove.
18284         (__arm_vabsq_x_s32): Remove.
18285         (__arm_vabsq_f16): Remove.
18286         (__arm_vabsq_f32): Remove.
18287         (__arm_vabsq_m_f16): Remove.
18288         (__arm_vabsq_m_f32): Remove.
18289         (__arm_vabsq_x_f16): Remove.
18290         (__arm_vabsq_x_f32): Remove.
18291         (__arm_vabsq): Remove.
18292         (__arm_vabsq_m): Remove.
18293         (__arm_vabsq_x): Remove.
18294         (vnegq): Remove.
18295         (vnegq_m): Remove.
18296         (vnegq_x): Remove.
18297         (vnegq_f16): Remove.
18298         (vnegq_f32): Remove.
18299         (vnegq_s8): Remove.
18300         (vnegq_s16): Remove.
18301         (vnegq_s32): Remove.
18302         (vnegq_m_s8): Remove.
18303         (vnegq_m_s16): Remove.
18304         (vnegq_m_s32): Remove.
18305         (vnegq_m_f16): Remove.
18306         (vnegq_m_f32): Remove.
18307         (vnegq_x_s8): Remove.
18308         (vnegq_x_s16): Remove.
18309         (vnegq_x_s32): Remove.
18310         (vnegq_x_f16): Remove.
18311         (vnegq_x_f32): Remove.
18312         (__arm_vnegq_s8): Remove.
18313         (__arm_vnegq_s16): Remove.
18314         (__arm_vnegq_s32): Remove.
18315         (__arm_vnegq_m_s8): Remove.
18316         (__arm_vnegq_m_s16): Remove.
18317         (__arm_vnegq_m_s32): Remove.
18318         (__arm_vnegq_x_s8): Remove.
18319         (__arm_vnegq_x_s16): Remove.
18320         (__arm_vnegq_x_s32): Remove.
18321         (__arm_vnegq_f16): Remove.
18322         (__arm_vnegq_f32): Remove.
18323         (__arm_vnegq_m_f16): Remove.
18324         (__arm_vnegq_m_f32): Remove.
18325         (__arm_vnegq_x_f16): Remove.
18326         (__arm_vnegq_x_f32): Remove.
18327         (__arm_vnegq): Remove.
18328         (__arm_vnegq_m): Remove.
18329         (__arm_vnegq_x): Remove.
18330         (vclsq): Remove.
18331         (vclsq_m): Remove.
18332         (vclsq_x): Remove.
18333         (vclsq_s8): Remove.
18334         (vclsq_s16): Remove.
18335         (vclsq_s32): Remove.
18336         (vclsq_m_s8): Remove.
18337         (vclsq_m_s16): Remove.
18338         (vclsq_m_s32): Remove.
18339         (vclsq_x_s8): Remove.
18340         (vclsq_x_s16): Remove.
18341         (vclsq_x_s32): Remove.
18342         (__arm_vclsq_s8): Remove.
18343         (__arm_vclsq_s16): Remove.
18344         (__arm_vclsq_s32): Remove.
18345         (__arm_vclsq_m_s8): Remove.
18346         (__arm_vclsq_m_s16): Remove.
18347         (__arm_vclsq_m_s32): Remove.
18348         (__arm_vclsq_x_s8): Remove.
18349         (__arm_vclsq_x_s16): Remove.
18350         (__arm_vclsq_x_s32): Remove.
18351         (__arm_vclsq): Remove.
18352         (__arm_vclsq_m): Remove.
18353         (__arm_vclsq_x): Remove.
18354         (vclzq): Remove.
18355         (vclzq_m): Remove.
18356         (vclzq_x): Remove.
18357         (vclzq_s8): Remove.
18358         (vclzq_s16): Remove.
18359         (vclzq_s32): Remove.
18360         (vclzq_u8): Remove.
18361         (vclzq_u16): Remove.
18362         (vclzq_u32): Remove.
18363         (vclzq_m_u8): Remove.
18364         (vclzq_m_s8): Remove.
18365         (vclzq_m_u16): Remove.
18366         (vclzq_m_s16): Remove.
18367         (vclzq_m_u32): Remove.
18368         (vclzq_m_s32): Remove.
18369         (vclzq_x_s8): Remove.
18370         (vclzq_x_s16): Remove.
18371         (vclzq_x_s32): Remove.
18372         (vclzq_x_u8): Remove.
18373         (vclzq_x_u16): Remove.
18374         (vclzq_x_u32): Remove.
18375         (__arm_vclzq_s8): Remove.
18376         (__arm_vclzq_s16): Remove.
18377         (__arm_vclzq_s32): Remove.
18378         (__arm_vclzq_u8): Remove.
18379         (__arm_vclzq_u16): Remove.
18380         (__arm_vclzq_u32): Remove.
18381         (__arm_vclzq_m_u8): Remove.
18382         (__arm_vclzq_m_s8): Remove.
18383         (__arm_vclzq_m_u16): Remove.
18384         (__arm_vclzq_m_s16): Remove.
18385         (__arm_vclzq_m_u32): Remove.
18386         (__arm_vclzq_m_s32): Remove.
18387         (__arm_vclzq_x_s8): Remove.
18388         (__arm_vclzq_x_s16): Remove.
18389         (__arm_vclzq_x_s32): Remove.
18390         (__arm_vclzq_x_u8): Remove.
18391         (__arm_vclzq_x_u16): Remove.
18392         (__arm_vclzq_x_u32): Remove.
18393         (__arm_vclzq): Remove.
18394         (__arm_vclzq_m): Remove.
18395         (__arm_vclzq_x): Remove.
18396         (vqabsq): Remove.
18397         (vqnegq): Remove.
18398         (vqnegq_m): Remove.
18399         (vqabsq_m): Remove.
18400         (vqabsq_s8): Remove.
18401         (vqabsq_s16): Remove.
18402         (vqabsq_s32): Remove.
18403         (vqnegq_s8): Remove.
18404         (vqnegq_s16): Remove.
18405         (vqnegq_s32): Remove.
18406         (vqnegq_m_s8): Remove.
18407         (vqabsq_m_s8): Remove.
18408         (vqnegq_m_s16): Remove.
18409         (vqabsq_m_s16): Remove.
18410         (vqnegq_m_s32): Remove.
18411         (vqabsq_m_s32): Remove.
18412         (__arm_vqabsq_s8): Remove.
18413         (__arm_vqabsq_s16): Remove.
18414         (__arm_vqabsq_s32): Remove.
18415         (__arm_vqnegq_s8): Remove.
18416         (__arm_vqnegq_s16): Remove.
18417         (__arm_vqnegq_s32): Remove.
18418         (__arm_vqnegq_m_s8): Remove.
18419         (__arm_vqabsq_m_s8): Remove.
18420         (__arm_vqnegq_m_s16): Remove.
18421         (__arm_vqabsq_m_s16): Remove.
18422         (__arm_vqnegq_m_s32): Remove.
18423         (__arm_vqabsq_m_s32): Remove.
18424         (__arm_vqabsq): Remove.
18425         (__arm_vqnegq): Remove.
18426         (__arm_vqnegq_m): Remove.
18427         (__arm_vqabsq_m): Remove.
18429 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
18431         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
18432         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
18433         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
18434         vrndm, vrndn, vrndp, vrnd, vrndx.
18435         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
18436         VQABSQ_M_S, VQNEGQ_M_S.
18437         (mve_mnemo): New.
18438         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
18439         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
18440         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
18441         (@mve_<mve_insn>q_f<mode>): ... this.
18442         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
18443         (mve_v<absneg_str>q_f<mode>): ... this.
18444         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
18445         (mve_v<absneg_str>q_s<mode>): ... this.
18446         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
18447         (@mve_<mve_insn>q_<supf><mode>): ... this.
18448         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
18449         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
18450         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
18451         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
18452         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
18453         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
18454         (mve_vrndxq_m_f<mode>): Merge into ...
18455         (@mve_<mve_insn>q_m_f<mode>): ... this.
18457 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
18459         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
18460         * config/arm/arm-mve-builtins-shapes.h (unary): New.
18462 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
18464         * mux-utils.h: Fix comment typo, avoides -> avoids.
18466 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
18468         PR tree-optimization/109778
18469         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
18470         wi::zext (x, width) rather than x if width != precision, rather
18471         than using wi::zext (right, width) after the shift.
18472         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
18473         of wi::lrotate or wi::rrotate.
18475 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
18477         * genmatch.cc (get_out_file): Make static and rename to ...
18478         (choose_output): ... this. Reimplement. Update all uses ...
18479         (decision_tree::gen): ... here and ...
18480         (main): ... here.
18482 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
18484         * genmatch.cc (showUsage): Reimplement as ...
18485         (usage): ...this.  Adjust all uses.
18486         (main): Print usage when no arguments.  Add missing 'return 1'.
18488 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
18490         * genmatch.cc (header_file): Make static.
18491         (emit_func): Rename to...
18492         (fp_decl): ... this.  Adjust all uses.
18493         (fp_decl_done): New function.  Use it...
18494         (decision_tree::gen): ... here and...
18495         (write_predicate): ... here.
18496         (main): Adjust.
18498 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
18500         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
18501         earlyclobbers.
18503 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
18504             Uros Bizjak  <ubizjak@gmail.com>
18506         * config/i386/i386.md (any_or_plus): Move definition earlier.
18507         (*insvti_highpart_1): New define_insn_and_split to overwrite
18508         (insv) the highpart of a TImode register/memory.
18510 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
18512         * auto-profile.cc (auto_profile): Check todo from early_inline
18513         to see if cleanup_tree_vfg needs to be called.
18514         (early_inline): Return todo from early_inliner.
18516 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
18518         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
18519         New.
18520         (pass_vsetvl::get_block_info): New.
18521         (pass_vsetvl::update_vector_info): New.
18522         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
18523         (pass_vsetvl::compute_local_backward_infos): Ditto.
18524         (pass_vsetvl::transfer_before): Ditto.
18525         (pass_vsetvl::transfer_after): Ditto.
18526         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
18527         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
18528         (pass_vsetvl::cleanup_insns): Ditto.
18529         (pass_vsetvl::compute_local_backward_infos): Use
18530         update_vector_info.
18532 2023-05-08  Jeff Law  <jlaw@ventanamicro>
18534         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
18536 2023-05-08  Richard Biener  <rguenther@suse.de>
18537             Michael Meissner  <meissner@linux.ibm.com>
18539         PR middle-end/108623
18540         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
18541         Align bit fields > 1 bit to at least an 8-bit boundary.
18543 2023-05-08  Andrew Pinski  <apinski@marvell.com>
18545         PR tree-optimization/109424
18546         PR tree-optimization/59424
18547         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
18548         (factor_out_conditional_operation): This and add support for all unary
18549         operations.
18550         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
18551         to call factor_out_conditional_operation instead.
18553 2023-05-08  Andrew Pinski  <apinski@marvell.com>
18555         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
18556         over factor_out_conditional_conversion.
18558 2023-05-08  Andrew Pinski  <apinski@marvell.com>
18560         PR tree-optimization/49959
18561         PR tree-optimization/103771
18562         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
18563         Diamond shapped bb form for factor_out_conditional_conversion.
18565 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18567         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
18568         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
18569         (riscv_vector_get_mask_mode): Ditto.
18570         (get_mask_policy_no_pred): Ditto.
18571         (get_tail_policy_no_pred): Ditto.
18572         (get_mask_mode): New function.
18573         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
18574         (get_tail_policy_no_pred): Ditto.
18575         (riscv_vector_mask_mode_p): Ditto.
18576         (riscv_vector_get_mask_mode): Ditto.
18577         (get_mask_mode): New function.
18578         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
18579         global extern.
18580         (get_tail_policy_for_pred): Ditto.
18581         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
18582         (get_mask_policy_for_pred): Ditto
18583         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
18585 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
18587         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
18588         (riscv_select_multilib): New.
18589         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
18590         also handle select_by_abi.
18591         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
18592         to select_by_abi_arch_cmodel from 1.
18593         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
18594         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
18596 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
18598         * Makefile.in: (gimple-match-head.o-warn): Remove.
18599         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
18600         gimple-match-exports.cc.
18601         (gimple-match-auto.h): Only depend on s-gimple-match.
18602         (generic-match-auto.h): Likewise.
18604 2023-05-08  Andrew Pinski  <apinski@marvell.com>
18606         PR tree-optimization/109691
18607         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
18608         argument.
18609         If the removed statement can throw, have need_eh_cleanup
18610         include the bb of that statement.
18611         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
18612         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
18613         num_dce.
18614         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
18615         Initialize dceworklist instead of stmts_to_remove.
18616         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
18617         Destore dceworklist instead of stmts_to_remove.
18618         (substitute_and_fold_dom_walker::before_dom_children):
18619         Set dceworklist instead of adding to stmts_to_remove.
18620         (substitute_and_fold_engine::substitute_and_fold):
18621         Call simple_dce_from_worklist instead of poping
18622         from the list.
18623         Don't update the stat on removal statements.
18625 2023-05-07  Andrew Pinski  <apinski@marvell.com>
18627         PR target/109762
18628         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
18629         Change argument type to aarch64_feature_flags.
18630         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
18631         constructor argument type to aarch64_feature_flags.
18632         Change m_old_asm_isa_flags to be aarch64_feature_flags.
18634 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
18636         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
18637         more parallel code if can_create_pseudo_p.
18639 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
18641         PR target/43644
18642         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
18643         immediately before moving a multi-word register by parts.
18645 2023-05-06  Jeff Law  <jlaw@ventanamicro>
18647         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
18649 2023-05-06  Michael Collison  <collison@rivosinc.com>
18651         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
18652         Check that GET_MODE_NUNITS is a multiple of 2.
18654 2023-05-06  Michael Collison  <collison@rivosinc.com>
18656         * config/riscv/riscv.cc
18657         (riscv_estimated_poly_value): Implement
18658         TARGET_ESTIMATED_POLY_VALUE.
18659         (riscv_preferred_simd_mode): Implement
18660         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
18661         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
18662         (riscv_empty_mask_is_expensive): Implement
18663         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
18664         (riscv_vectorize_create_costs): Implement
18665         TARGET_VECTORIZE_CREATE_COSTS.
18666         (riscv_support_vector_misalignment): Implement
18667         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
18668         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
18669         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
18670         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
18671         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
18673 2023-05-06  Jeff Law  <jlaw@ventanamicro>
18675         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
18676         duplicate definition.
18678 2023-05-06  Michael Collison  <collison@rivosinc.com>
18680         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
18681         (riscv_vector_preferred_simd_mode): Ditto.
18682         (get_mask_policy_no_pred): Ditto.
18683         (get_tail_policy_no_pred): Ditto.
18684         (riscv_vector_mask_mode_p): Ditto.
18685         (riscv_vector_get_mask_mode): Ditto.
18687 2023-05-06  Michael Collison  <collison@rivosinc.com>
18689         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
18690         Remove static declaration to to make externally visible.
18691         (get_mask_policy_for_pred): Ditto.
18692         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
18693         New external declaration.
18694         (get_mask_policy_for_pred): Ditto.
18696 2023-05-06  Michael Collison  <collison@rivosinc.com>
18698         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
18699         (riscv_vector_get_mask_mode): Ditto.
18700         (get_mask_policy_no_pred): Ditto.
18701         (get_tail_policy_no_pred): Ditto.
18703 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
18705         * config/loongarch/loongarch.h (struct machine_function): Add
18706         reg_is_wrapped_separately array for register wrapping
18707         information.
18708         * config/loongarch/loongarch.cc
18709         (loongarch_get_separate_components): New function.
18710         (loongarch_components_for_bb): Likewise.
18711         (loongarch_disqualify_components): Likewise.
18712         (loongarch_process_components): Likewise.
18713         (loongarch_emit_prologue_components): Likewise.
18714         (loongarch_emit_epilogue_components): Likewise.
18715         (loongarch_set_handled_components): Likewise.
18716         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
18717         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
18718         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
18719         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
18720         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
18721         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
18722         (loongarch_for_each_saved_reg): Skip registers that are wrapped
18723         separately.
18725 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
18727         PR other/109522
18728         * Makefile.in (s-macro_list): Pass -nostdinc to
18729         $(GCC_FOR_TARGET).
18731 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18733         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
18734         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
18735         (preferred_simd_mode): Ditto.
18736         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
18737         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
18738         (riscv_preferred_simd_mode): New function.
18739         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
18740         * config/riscv/vector.md: Add autovec.md.
18741         * config/riscv/autovec.md: New file.
18743 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
18745         * real.h (dconst_pi): Define.
18746         (dconst_e_ptr): Formatting fix.
18747         (dconst_pi_ptr): Declare.
18748         * real.cc (dconst_pi_ptr): New function.
18749         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
18750         boundaries range with range computed from sin/cos of the particular
18751         bounds if the argument range is shorter than 2*pi.
18752         (cfn_sincos::op1_range): Take bulps into account when determining
18753         which result ranges are always invalid or behave like known NAN.
18755 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
18757         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
18758         pass type to vrange_storage::equal_p.
18759         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
18760         (irange_storage::equal_p): Same.
18761         (frange_storage::equal_p): Same.
18762         * value-range-storage.h (class frange_storage): Same.
18764 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18766         PR target/109748
18767         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
18768         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
18770 2023-05-06  liuhongt  <hongtao.liu@intel.com>
18772         * combine.cc (maybe_swap_commutative_operands): Canonicalize
18773         vec_merge when mask is constant.
18774         * doc/md.texi: Document vec_merge canonicalization.
18776 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
18778         * value-range.h (frange_arithmetic): Declare.
18779         * range-op-float.cc (frange_arithmetic): No longer static.
18780         * gimple-range-op.cc (frange_mpfr_arg1): New function.
18781         (cfn_sqrt::fold_range): Intersect the generic boundaries range
18782         with range computed from sqrt of the particular bounds.
18783         (cfn_sqrt::op1_range): Intersect the generic boundaries range
18784         with range computed from squared particular bounds.
18786 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
18788         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
18789         earlier with helper variables also renamed.
18790         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
18791         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
18792         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
18794 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
18796         * config/cris/cris.md (splitop): Add PLUS.
18797         * config/cris/cris.cc (cris_split_constant): Also handle
18798         PLUS when a split into two insns may be useful.
18800 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
18802         * config/cris/cris.md (movandsplit1): New define_peephole2.
18804 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
18806         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
18808 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
18810         * doc/md.texi (define_peephole2): Document order of scanning.
18812 2023-05-05  Pan Li  <pan2.li@intel.com>
18813             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18815         * config/riscv/vector.md: Allow const as the operand of RVV
18816         indexed load/store.
18818 2023-05-05  Pan Li  <pan2.li@intel.com>
18820         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
18821         consumed by simplify_rtx.
18823 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
18825         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
18826         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
18827         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
18828         * config/arm/arm_mve.h (vshrq): Remove.
18829         (vrshrq): Remove.
18830         (vrshrq_m): Remove.
18831         (vshrq_m): Remove.
18832         (vrshrq_x): Remove.
18833         (vshrq_x): Remove.
18834         (vshrq_n_s8): Remove.
18835         (vshrq_n_s16): Remove.
18836         (vshrq_n_s32): Remove.
18837         (vshrq_n_u8): Remove.
18838         (vshrq_n_u16): Remove.
18839         (vshrq_n_u32): Remove.
18840         (vrshrq_n_u8): Remove.
18841         (vrshrq_n_s8): Remove.
18842         (vrshrq_n_u16): Remove.
18843         (vrshrq_n_s16): Remove.
18844         (vrshrq_n_u32): Remove.
18845         (vrshrq_n_s32): Remove.
18846         (vrshrq_m_n_s8): Remove.
18847         (vrshrq_m_n_s32): Remove.
18848         (vrshrq_m_n_s16): Remove.
18849         (vrshrq_m_n_u8): Remove.
18850         (vrshrq_m_n_u32): Remove.
18851         (vrshrq_m_n_u16): Remove.
18852         (vshrq_m_n_s8): Remove.
18853         (vshrq_m_n_s32): Remove.
18854         (vshrq_m_n_s16): Remove.
18855         (vshrq_m_n_u8): Remove.
18856         (vshrq_m_n_u32): Remove.
18857         (vshrq_m_n_u16): Remove.
18858         (vrshrq_x_n_s8): Remove.
18859         (vrshrq_x_n_s16): Remove.
18860         (vrshrq_x_n_s32): Remove.
18861         (vrshrq_x_n_u8): Remove.
18862         (vrshrq_x_n_u16): Remove.
18863         (vrshrq_x_n_u32): Remove.
18864         (vshrq_x_n_s8): Remove.
18865         (vshrq_x_n_s16): Remove.
18866         (vshrq_x_n_s32): Remove.
18867         (vshrq_x_n_u8): Remove.
18868         (vshrq_x_n_u16): Remove.
18869         (vshrq_x_n_u32): Remove.
18870         (__arm_vshrq_n_s8): Remove.
18871         (__arm_vshrq_n_s16): Remove.
18872         (__arm_vshrq_n_s32): Remove.
18873         (__arm_vshrq_n_u8): Remove.
18874         (__arm_vshrq_n_u16): Remove.
18875         (__arm_vshrq_n_u32): Remove.
18876         (__arm_vrshrq_n_u8): Remove.
18877         (__arm_vrshrq_n_s8): Remove.
18878         (__arm_vrshrq_n_u16): Remove.
18879         (__arm_vrshrq_n_s16): Remove.
18880         (__arm_vrshrq_n_u32): Remove.
18881         (__arm_vrshrq_n_s32): Remove.
18882         (__arm_vrshrq_m_n_s8): Remove.
18883         (__arm_vrshrq_m_n_s32): Remove.
18884         (__arm_vrshrq_m_n_s16): Remove.
18885         (__arm_vrshrq_m_n_u8): Remove.
18886         (__arm_vrshrq_m_n_u32): Remove.
18887         (__arm_vrshrq_m_n_u16): Remove.
18888         (__arm_vshrq_m_n_s8): Remove.
18889         (__arm_vshrq_m_n_s32): Remove.
18890         (__arm_vshrq_m_n_s16): Remove.
18891         (__arm_vshrq_m_n_u8): Remove.
18892         (__arm_vshrq_m_n_u32): Remove.
18893         (__arm_vshrq_m_n_u16): Remove.
18894         (__arm_vrshrq_x_n_s8): Remove.
18895         (__arm_vrshrq_x_n_s16): Remove.
18896         (__arm_vrshrq_x_n_s32): Remove.
18897         (__arm_vrshrq_x_n_u8): Remove.
18898         (__arm_vrshrq_x_n_u16): Remove.
18899         (__arm_vrshrq_x_n_u32): Remove.
18900         (__arm_vshrq_x_n_s8): Remove.
18901         (__arm_vshrq_x_n_s16): Remove.
18902         (__arm_vshrq_x_n_s32): Remove.
18903         (__arm_vshrq_x_n_u8): Remove.
18904         (__arm_vshrq_x_n_u16): Remove.
18905         (__arm_vshrq_x_n_u32): Remove.
18906         (__arm_vshrq): Remove.
18907         (__arm_vrshrq): Remove.
18908         (__arm_vrshrq_m): Remove.
18909         (__arm_vshrq_m): Remove.
18910         (__arm_vrshrq_x): Remove.
18911         (__arm_vshrq_x): Remove.
18913 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
18915         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
18916         (mve_insn): Add vrshr, vshr.
18917         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
18918         (mve_vrshrq_n_<supf><mode>): Merge into ...
18919         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
18920         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
18921         into ...
18922         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
18924 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
18926         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
18927         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
18929 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
18931         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
18932         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
18933         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
18934         (vqrshrunbq, vqrshruntq): New.
18935         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
18936         (vqrshrunbq, vqrshruntq): New.
18937         * config/arm/arm-mve-builtins.cc
18938         (function_instance::has_inactive_argument): Handle vqshrunbq,
18939         vqshruntq, vqrshrunbq, vqrshruntq.
18940         * config/arm/arm_mve.h (vqrshrunbq): Remove.
18941         (vqrshruntq): Remove.
18942         (vqrshrunbq_m): Remove.
18943         (vqrshruntq_m): Remove.
18944         (vqrshrunbq_n_s16): Remove.
18945         (vqrshrunbq_n_s32): Remove.
18946         (vqrshruntq_n_s16): Remove.
18947         (vqrshruntq_n_s32): Remove.
18948         (vqrshrunbq_m_n_s32): Remove.
18949         (vqrshrunbq_m_n_s16): Remove.
18950         (vqrshruntq_m_n_s32): Remove.
18951         (vqrshruntq_m_n_s16): Remove.
18952         (__arm_vqrshrunbq_n_s16): Remove.
18953         (__arm_vqrshrunbq_n_s32): Remove.
18954         (__arm_vqrshruntq_n_s16): Remove.
18955         (__arm_vqrshruntq_n_s32): Remove.
18956         (__arm_vqrshrunbq_m_n_s32): Remove.
18957         (__arm_vqrshrunbq_m_n_s16): Remove.
18958         (__arm_vqrshruntq_m_n_s32): Remove.
18959         (__arm_vqrshruntq_m_n_s16): Remove.
18960         (__arm_vqrshrunbq): Remove.
18961         (__arm_vqrshruntq): Remove.
18962         (__arm_vqrshrunbq_m): Remove.
18963         (__arm_vqrshruntq_m): Remove.
18964         (vqshrunbq): Remove.
18965         (vqshruntq): Remove.
18966         (vqshrunbq_m): Remove.
18967         (vqshruntq_m): Remove.
18968         (vqshrunbq_n_s16): Remove.
18969         (vqshruntq_n_s16): Remove.
18970         (vqshrunbq_n_s32): Remove.
18971         (vqshruntq_n_s32): Remove.
18972         (vqshrunbq_m_n_s32): Remove.
18973         (vqshrunbq_m_n_s16): Remove.
18974         (vqshruntq_m_n_s32): Remove.
18975         (vqshruntq_m_n_s16): Remove.
18976         (__arm_vqshrunbq_n_s16): Remove.
18977         (__arm_vqshruntq_n_s16): Remove.
18978         (__arm_vqshrunbq_n_s32): Remove.
18979         (__arm_vqshruntq_n_s32): Remove.
18980         (__arm_vqshrunbq_m_n_s32): Remove.
18981         (__arm_vqshrunbq_m_n_s16): Remove.
18982         (__arm_vqshruntq_m_n_s32): Remove.
18983         (__arm_vqshruntq_m_n_s16): Remove.
18984         (__arm_vqshrunbq): Remove.
18985         (__arm_vqshruntq): Remove.
18986         (__arm_vqshrunbq_m): Remove.
18987         (__arm_vqshruntq_m): Remove.
18989 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
18991         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
18992         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
18993         (MVE_SHRN_M_N): Likewise.
18994         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
18995         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
18996         (supf): Likewise.
18997         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
18998         (mve_vqrshruntq_n_s<mode>): Remove.
18999         (mve_vqshrunbq_n_s<mode>): Remove.
19000         (mve_vqshruntq_n_s<mode>): Remove.
19001         (mve_vqrshrunbq_m_n_s<mode>): Remove.
19002         (mve_vqrshruntq_m_n_s<mode>): Remove.
19003         (mve_vqshrunbq_m_n_s<mode>): Remove.
19004         (mve_vqshruntq_m_n_s<mode>): Remove.
19006 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19008         * config/arm/arm-mve-builtins-shapes.cc
19009         (binary_rshift_narrow_unsigned): New.
19010         * config/arm/arm-mve-builtins-shapes.h
19011         (binary_rshift_narrow_unsigned): New.
19013 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19015         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
19016         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
19017         (vqrshrnbq, vqrshrntq): New.
19018         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
19019         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
19020         New.
19021         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
19022         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
19023         * config/arm/arm-mve-builtins.cc
19024         (function_instance::has_inactive_argument): Handle vshrnbq,
19025         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
19026         vqrshrntq.
19027         * config/arm/arm_mve.h (vshrnbq): Remove.
19028         (vshrntq): Remove.
19029         (vshrnbq_m): Remove.
19030         (vshrntq_m): Remove.
19031         (vshrnbq_n_s16): Remove.
19032         (vshrntq_n_s16): Remove.
19033         (vshrnbq_n_u16): Remove.
19034         (vshrntq_n_u16): Remove.
19035         (vshrnbq_n_s32): Remove.
19036         (vshrntq_n_s32): Remove.
19037         (vshrnbq_n_u32): Remove.
19038         (vshrntq_n_u32): Remove.
19039         (vshrnbq_m_n_s32): Remove.
19040         (vshrnbq_m_n_s16): Remove.
19041         (vshrnbq_m_n_u32): Remove.
19042         (vshrnbq_m_n_u16): Remove.
19043         (vshrntq_m_n_s32): Remove.
19044         (vshrntq_m_n_s16): Remove.
19045         (vshrntq_m_n_u32): Remove.
19046         (vshrntq_m_n_u16): Remove.
19047         (__arm_vshrnbq_n_s16): Remove.
19048         (__arm_vshrntq_n_s16): Remove.
19049         (__arm_vshrnbq_n_u16): Remove.
19050         (__arm_vshrntq_n_u16): Remove.
19051         (__arm_vshrnbq_n_s32): Remove.
19052         (__arm_vshrntq_n_s32): Remove.
19053         (__arm_vshrnbq_n_u32): Remove.
19054         (__arm_vshrntq_n_u32): Remove.
19055         (__arm_vshrnbq_m_n_s32): Remove.
19056         (__arm_vshrnbq_m_n_s16): Remove.
19057         (__arm_vshrnbq_m_n_u32): Remove.
19058         (__arm_vshrnbq_m_n_u16): Remove.
19059         (__arm_vshrntq_m_n_s32): Remove.
19060         (__arm_vshrntq_m_n_s16): Remove.
19061         (__arm_vshrntq_m_n_u32): Remove.
19062         (__arm_vshrntq_m_n_u16): Remove.
19063         (__arm_vshrnbq): Remove.
19064         (__arm_vshrntq): Remove.
19065         (__arm_vshrnbq_m): Remove.
19066         (__arm_vshrntq_m): Remove.
19067         (vrshrnbq): Remove.
19068         (vrshrntq): Remove.
19069         (vrshrnbq_m): Remove.
19070         (vrshrntq_m): Remove.
19071         (vrshrnbq_n_s16): Remove.
19072         (vrshrntq_n_s16): Remove.
19073         (vrshrnbq_n_u16): Remove.
19074         (vrshrntq_n_u16): Remove.
19075         (vrshrnbq_n_s32): Remove.
19076         (vrshrntq_n_s32): Remove.
19077         (vrshrnbq_n_u32): Remove.
19078         (vrshrntq_n_u32): Remove.
19079         (vrshrnbq_m_n_s32): Remove.
19080         (vrshrnbq_m_n_s16): Remove.
19081         (vrshrnbq_m_n_u32): Remove.
19082         (vrshrnbq_m_n_u16): Remove.
19083         (vrshrntq_m_n_s32): Remove.
19084         (vrshrntq_m_n_s16): Remove.
19085         (vrshrntq_m_n_u32): Remove.
19086         (vrshrntq_m_n_u16): Remove.
19087         (__arm_vrshrnbq_n_s16): Remove.
19088         (__arm_vrshrntq_n_s16): Remove.
19089         (__arm_vrshrnbq_n_u16): Remove.
19090         (__arm_vrshrntq_n_u16): Remove.
19091         (__arm_vrshrnbq_n_s32): Remove.
19092         (__arm_vrshrntq_n_s32): Remove.
19093         (__arm_vrshrnbq_n_u32): Remove.
19094         (__arm_vrshrntq_n_u32): Remove.
19095         (__arm_vrshrnbq_m_n_s32): Remove.
19096         (__arm_vrshrnbq_m_n_s16): Remove.
19097         (__arm_vrshrnbq_m_n_u32): Remove.
19098         (__arm_vrshrnbq_m_n_u16): Remove.
19099         (__arm_vrshrntq_m_n_s32): Remove.
19100         (__arm_vrshrntq_m_n_s16): Remove.
19101         (__arm_vrshrntq_m_n_u32): Remove.
19102         (__arm_vrshrntq_m_n_u16): Remove.
19103         (__arm_vrshrnbq): Remove.
19104         (__arm_vrshrntq): Remove.
19105         (__arm_vrshrnbq_m): Remove.
19106         (__arm_vrshrntq_m): Remove.
19107         (vqshrnbq): Remove.
19108         (vqshrntq): Remove.
19109         (vqshrnbq_m): Remove.
19110         (vqshrntq_m): Remove.
19111         (vqshrnbq_n_s16): Remove.
19112         (vqshrntq_n_s16): Remove.
19113         (vqshrnbq_n_u16): Remove.
19114         (vqshrntq_n_u16): Remove.
19115         (vqshrnbq_n_s32): Remove.
19116         (vqshrntq_n_s32): Remove.
19117         (vqshrnbq_n_u32): Remove.
19118         (vqshrntq_n_u32): Remove.
19119         (vqshrnbq_m_n_s32): Remove.
19120         (vqshrnbq_m_n_s16): Remove.
19121         (vqshrnbq_m_n_u32): Remove.
19122         (vqshrnbq_m_n_u16): Remove.
19123         (vqshrntq_m_n_s32): Remove.
19124         (vqshrntq_m_n_s16): Remove.
19125         (vqshrntq_m_n_u32): Remove.
19126         (vqshrntq_m_n_u16): Remove.
19127         (__arm_vqshrnbq_n_s16): Remove.
19128         (__arm_vqshrntq_n_s16): Remove.
19129         (__arm_vqshrnbq_n_u16): Remove.
19130         (__arm_vqshrntq_n_u16): Remove.
19131         (__arm_vqshrnbq_n_s32): Remove.
19132         (__arm_vqshrntq_n_s32): Remove.
19133         (__arm_vqshrnbq_n_u32): Remove.
19134         (__arm_vqshrntq_n_u32): Remove.
19135         (__arm_vqshrnbq_m_n_s32): Remove.
19136         (__arm_vqshrnbq_m_n_s16): Remove.
19137         (__arm_vqshrnbq_m_n_u32): Remove.
19138         (__arm_vqshrnbq_m_n_u16): Remove.
19139         (__arm_vqshrntq_m_n_s32): Remove.
19140         (__arm_vqshrntq_m_n_s16): Remove.
19141         (__arm_vqshrntq_m_n_u32): Remove.
19142         (__arm_vqshrntq_m_n_u16): Remove.
19143         (__arm_vqshrnbq): Remove.
19144         (__arm_vqshrntq): Remove.
19145         (__arm_vqshrnbq_m): Remove.
19146         (__arm_vqshrntq_m): Remove.
19147         (vqrshrnbq): Remove.
19148         (vqrshrntq): Remove.
19149         (vqrshrnbq_m): Remove.
19150         (vqrshrntq_m): Remove.
19151         (vqrshrnbq_n_s16): Remove.
19152         (vqrshrnbq_n_u16): Remove.
19153         (vqrshrnbq_n_s32): Remove.
19154         (vqrshrnbq_n_u32): Remove.
19155         (vqrshrntq_n_s16): Remove.
19156         (vqrshrntq_n_u16): Remove.
19157         (vqrshrntq_n_s32): Remove.
19158         (vqrshrntq_n_u32): Remove.
19159         (vqrshrnbq_m_n_s32): Remove.
19160         (vqrshrnbq_m_n_s16): Remove.
19161         (vqrshrnbq_m_n_u32): Remove.
19162         (vqrshrnbq_m_n_u16): Remove.
19163         (vqrshrntq_m_n_s32): Remove.
19164         (vqrshrntq_m_n_s16): Remove.
19165         (vqrshrntq_m_n_u32): Remove.
19166         (vqrshrntq_m_n_u16): Remove.
19167         (__arm_vqrshrnbq_n_s16): Remove.
19168         (__arm_vqrshrnbq_n_u16): Remove.
19169         (__arm_vqrshrnbq_n_s32): Remove.
19170         (__arm_vqrshrnbq_n_u32): Remove.
19171         (__arm_vqrshrntq_n_s16): Remove.
19172         (__arm_vqrshrntq_n_u16): Remove.
19173         (__arm_vqrshrntq_n_s32): Remove.
19174         (__arm_vqrshrntq_n_u32): Remove.
19175         (__arm_vqrshrnbq_m_n_s32): Remove.
19176         (__arm_vqrshrnbq_m_n_s16): Remove.
19177         (__arm_vqrshrnbq_m_n_u32): Remove.
19178         (__arm_vqrshrnbq_m_n_u16): Remove.
19179         (__arm_vqrshrntq_m_n_s32): Remove.
19180         (__arm_vqrshrntq_m_n_s16): Remove.
19181         (__arm_vqrshrntq_m_n_u32): Remove.
19182         (__arm_vqrshrntq_m_n_u16): Remove.
19183         (__arm_vqrshrnbq): Remove.
19184         (__arm_vqrshrntq): Remove.
19185         (__arm_vqrshrnbq_m): Remove.
19186         (__arm_vqrshrntq_m): Remove.
19188 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19190         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
19191         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
19192         vrshrnt, vshrnb, vshrnt.
19193         (isu): New.
19194         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
19195         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
19196         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
19197         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
19198         (mve_vshrntq_n_<supf><mode>): Merge into ...
19199         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
19200         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
19201         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
19202         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
19203         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
19204         Merge into ...
19205         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
19207 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19209         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
19210         New.
19211         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
19213 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19215         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
19216         (vmaxq, vminq): New.
19217         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
19218         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
19219         * config/arm/arm_mve.h (vminq): Remove.
19220         (vmaxq): Remove.
19221         (vmaxq_m): Remove.
19222         (vminq_m): Remove.
19223         (vminq_x): Remove.
19224         (vmaxq_x): Remove.
19225         (vminq_u8): Remove.
19226         (vmaxq_u8): Remove.
19227         (vminq_s8): Remove.
19228         (vmaxq_s8): Remove.
19229         (vminq_u16): Remove.
19230         (vmaxq_u16): Remove.
19231         (vminq_s16): Remove.
19232         (vmaxq_s16): Remove.
19233         (vminq_u32): Remove.
19234         (vmaxq_u32): Remove.
19235         (vminq_s32): Remove.
19236         (vmaxq_s32): Remove.
19237         (vmaxq_m_s8): Remove.
19238         (vmaxq_m_s32): Remove.
19239         (vmaxq_m_s16): Remove.
19240         (vmaxq_m_u8): Remove.
19241         (vmaxq_m_u32): Remove.
19242         (vmaxq_m_u16): Remove.
19243         (vminq_m_s8): Remove.
19244         (vminq_m_s32): Remove.
19245         (vminq_m_s16): Remove.
19246         (vminq_m_u8): Remove.
19247         (vminq_m_u32): Remove.
19248         (vminq_m_u16): Remove.
19249         (vminq_x_s8): Remove.
19250         (vminq_x_s16): Remove.
19251         (vminq_x_s32): Remove.
19252         (vminq_x_u8): Remove.
19253         (vminq_x_u16): Remove.
19254         (vminq_x_u32): Remove.
19255         (vmaxq_x_s8): Remove.
19256         (vmaxq_x_s16): Remove.
19257         (vmaxq_x_s32): Remove.
19258         (vmaxq_x_u8): Remove.
19259         (vmaxq_x_u16): Remove.
19260         (vmaxq_x_u32): Remove.
19261         (__arm_vminq_u8): Remove.
19262         (__arm_vmaxq_u8): Remove.
19263         (__arm_vminq_s8): Remove.
19264         (__arm_vmaxq_s8): Remove.
19265         (__arm_vminq_u16): Remove.
19266         (__arm_vmaxq_u16): Remove.
19267         (__arm_vminq_s16): Remove.
19268         (__arm_vmaxq_s16): Remove.
19269         (__arm_vminq_u32): Remove.
19270         (__arm_vmaxq_u32): Remove.
19271         (__arm_vminq_s32): Remove.
19272         (__arm_vmaxq_s32): Remove.
19273         (__arm_vmaxq_m_s8): Remove.
19274         (__arm_vmaxq_m_s32): Remove.
19275         (__arm_vmaxq_m_s16): Remove.
19276         (__arm_vmaxq_m_u8): Remove.
19277         (__arm_vmaxq_m_u32): Remove.
19278         (__arm_vmaxq_m_u16): Remove.
19279         (__arm_vminq_m_s8): Remove.
19280         (__arm_vminq_m_s32): Remove.
19281         (__arm_vminq_m_s16): Remove.
19282         (__arm_vminq_m_u8): Remove.
19283         (__arm_vminq_m_u32): Remove.
19284         (__arm_vminq_m_u16): Remove.
19285         (__arm_vminq_x_s8): Remove.
19286         (__arm_vminq_x_s16): Remove.
19287         (__arm_vminq_x_s32): Remove.
19288         (__arm_vminq_x_u8): Remove.
19289         (__arm_vminq_x_u16): Remove.
19290         (__arm_vminq_x_u32): Remove.
19291         (__arm_vmaxq_x_s8): Remove.
19292         (__arm_vmaxq_x_s16): Remove.
19293         (__arm_vmaxq_x_s32): Remove.
19294         (__arm_vmaxq_x_u8): Remove.
19295         (__arm_vmaxq_x_u16): Remove.
19296         (__arm_vmaxq_x_u32): Remove.
19297         (__arm_vminq): Remove.
19298         (__arm_vmaxq): Remove.
19299         (__arm_vmaxq_m): Remove.
19300         (__arm_vminq_m): Remove.
19301         (__arm_vminq_x): Remove.
19302         (__arm_vmaxq_x): Remove.
19304 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19306         * config/arm/iterators.md (MAX_MIN_SU): New.
19307         (max_min_su_str): New.
19308         (max_min_supf): New.
19309         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
19310         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
19311         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
19313 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19315         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
19316         (vqshlq, vshlq): New.
19317         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
19318         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
19319         * config/arm/arm_mve.h (vshlq): Remove.
19320         (vshlq_r): Remove.
19321         (vshlq_n): Remove.
19322         (vshlq_m_r): Remove.
19323         (vshlq_m): Remove.
19324         (vshlq_m_n): Remove.
19325         (vshlq_x): Remove.
19326         (vshlq_x_n): Remove.
19327         (vshlq_s8): Remove.
19328         (vshlq_s16): Remove.
19329         (vshlq_s32): Remove.
19330         (vshlq_u8): Remove.
19331         (vshlq_u16): Remove.
19332         (vshlq_u32): Remove.
19333         (vshlq_r_u8): Remove.
19334         (vshlq_n_u8): Remove.
19335         (vshlq_r_s8): Remove.
19336         (vshlq_n_s8): Remove.
19337         (vshlq_r_u16): Remove.
19338         (vshlq_n_u16): Remove.
19339         (vshlq_r_s16): Remove.
19340         (vshlq_n_s16): Remove.
19341         (vshlq_r_u32): Remove.
19342         (vshlq_n_u32): Remove.
19343         (vshlq_r_s32): Remove.
19344         (vshlq_n_s32): Remove.
19345         (vshlq_m_r_u8): Remove.
19346         (vshlq_m_r_s8): Remove.
19347         (vshlq_m_r_u16): Remove.
19348         (vshlq_m_r_s16): Remove.
19349         (vshlq_m_r_u32): Remove.
19350         (vshlq_m_r_s32): Remove.
19351         (vshlq_m_u8): Remove.
19352         (vshlq_m_s8): Remove.
19353         (vshlq_m_u16): Remove.
19354         (vshlq_m_s16): Remove.
19355         (vshlq_m_u32): Remove.
19356         (vshlq_m_s32): Remove.
19357         (vshlq_m_n_s8): Remove.
19358         (vshlq_m_n_s32): Remove.
19359         (vshlq_m_n_s16): Remove.
19360         (vshlq_m_n_u8): Remove.
19361         (vshlq_m_n_u32): Remove.
19362         (vshlq_m_n_u16): Remove.
19363         (vshlq_x_s8): Remove.
19364         (vshlq_x_s16): Remove.
19365         (vshlq_x_s32): Remove.
19366         (vshlq_x_u8): Remove.
19367         (vshlq_x_u16): Remove.
19368         (vshlq_x_u32): Remove.
19369         (vshlq_x_n_s8): Remove.
19370         (vshlq_x_n_s16): Remove.
19371         (vshlq_x_n_s32): Remove.
19372         (vshlq_x_n_u8): Remove.
19373         (vshlq_x_n_u16): Remove.
19374         (vshlq_x_n_u32): Remove.
19375         (__arm_vshlq_s8): Remove.
19376         (__arm_vshlq_s16): Remove.
19377         (__arm_vshlq_s32): Remove.
19378         (__arm_vshlq_u8): Remove.
19379         (__arm_vshlq_u16): Remove.
19380         (__arm_vshlq_u32): Remove.
19381         (__arm_vshlq_r_u8): Remove.
19382         (__arm_vshlq_n_u8): Remove.
19383         (__arm_vshlq_r_s8): Remove.
19384         (__arm_vshlq_n_s8): Remove.
19385         (__arm_vshlq_r_u16): Remove.
19386         (__arm_vshlq_n_u16): Remove.
19387         (__arm_vshlq_r_s16): Remove.
19388         (__arm_vshlq_n_s16): Remove.
19389         (__arm_vshlq_r_u32): Remove.
19390         (__arm_vshlq_n_u32): Remove.
19391         (__arm_vshlq_r_s32): Remove.
19392         (__arm_vshlq_n_s32): Remove.
19393         (__arm_vshlq_m_r_u8): Remove.
19394         (__arm_vshlq_m_r_s8): Remove.
19395         (__arm_vshlq_m_r_u16): Remove.
19396         (__arm_vshlq_m_r_s16): Remove.
19397         (__arm_vshlq_m_r_u32): Remove.
19398         (__arm_vshlq_m_r_s32): Remove.
19399         (__arm_vshlq_m_u8): Remove.
19400         (__arm_vshlq_m_s8): Remove.
19401         (__arm_vshlq_m_u16): Remove.
19402         (__arm_vshlq_m_s16): Remove.
19403         (__arm_vshlq_m_u32): Remove.
19404         (__arm_vshlq_m_s32): Remove.
19405         (__arm_vshlq_m_n_s8): Remove.
19406         (__arm_vshlq_m_n_s32): Remove.
19407         (__arm_vshlq_m_n_s16): Remove.
19408         (__arm_vshlq_m_n_u8): Remove.
19409         (__arm_vshlq_m_n_u32): Remove.
19410         (__arm_vshlq_m_n_u16): Remove.
19411         (__arm_vshlq_x_s8): Remove.
19412         (__arm_vshlq_x_s16): Remove.
19413         (__arm_vshlq_x_s32): Remove.
19414         (__arm_vshlq_x_u8): Remove.
19415         (__arm_vshlq_x_u16): Remove.
19416         (__arm_vshlq_x_u32): Remove.
19417         (__arm_vshlq_x_n_s8): Remove.
19418         (__arm_vshlq_x_n_s16): Remove.
19419         (__arm_vshlq_x_n_s32): Remove.
19420         (__arm_vshlq_x_n_u8): Remove.
19421         (__arm_vshlq_x_n_u16): Remove.
19422         (__arm_vshlq_x_n_u32): Remove.
19423         (__arm_vshlq): Remove.
19424         (__arm_vshlq_r): Remove.
19425         (__arm_vshlq_n): Remove.
19426         (__arm_vshlq_m_r): Remove.
19427         (__arm_vshlq_m): Remove.
19428         (__arm_vshlq_m_n): Remove.
19429         (__arm_vshlq_x): Remove.
19430         (__arm_vshlq_x_n): Remove.
19431         (vqshlq): Remove.
19432         (vqshlq_r): Remove.
19433         (vqshlq_n): Remove.
19434         (vqshlq_m_r): Remove.
19435         (vqshlq_m_n): Remove.
19436         (vqshlq_m): Remove.
19437         (vqshlq_u8): Remove.
19438         (vqshlq_r_u8): Remove.
19439         (vqshlq_n_u8): Remove.
19440         (vqshlq_s8): Remove.
19441         (vqshlq_r_s8): Remove.
19442         (vqshlq_n_s8): Remove.
19443         (vqshlq_u16): Remove.
19444         (vqshlq_r_u16): Remove.
19445         (vqshlq_n_u16): Remove.
19446         (vqshlq_s16): Remove.
19447         (vqshlq_r_s16): Remove.
19448         (vqshlq_n_s16): Remove.
19449         (vqshlq_u32): Remove.
19450         (vqshlq_r_u32): Remove.
19451         (vqshlq_n_u32): Remove.
19452         (vqshlq_s32): Remove.
19453         (vqshlq_r_s32): Remove.
19454         (vqshlq_n_s32): Remove.
19455         (vqshlq_m_r_u8): Remove.
19456         (vqshlq_m_r_s8): Remove.
19457         (vqshlq_m_r_u16): Remove.
19458         (vqshlq_m_r_s16): Remove.
19459         (vqshlq_m_r_u32): Remove.
19460         (vqshlq_m_r_s32): Remove.
19461         (vqshlq_m_n_s8): Remove.
19462         (vqshlq_m_n_s32): Remove.
19463         (vqshlq_m_n_s16): Remove.
19464         (vqshlq_m_n_u8): Remove.
19465         (vqshlq_m_n_u32): Remove.
19466         (vqshlq_m_n_u16): Remove.
19467         (vqshlq_m_s8): Remove.
19468         (vqshlq_m_s32): Remove.
19469         (vqshlq_m_s16): Remove.
19470         (vqshlq_m_u8): Remove.
19471         (vqshlq_m_u32): Remove.
19472         (vqshlq_m_u16): Remove.
19473         (__arm_vqshlq_u8): Remove.
19474         (__arm_vqshlq_r_u8): Remove.
19475         (__arm_vqshlq_n_u8): Remove.
19476         (__arm_vqshlq_s8): Remove.
19477         (__arm_vqshlq_r_s8): Remove.
19478         (__arm_vqshlq_n_s8): Remove.
19479         (__arm_vqshlq_u16): Remove.
19480         (__arm_vqshlq_r_u16): Remove.
19481         (__arm_vqshlq_n_u16): Remove.
19482         (__arm_vqshlq_s16): Remove.
19483         (__arm_vqshlq_r_s16): Remove.
19484         (__arm_vqshlq_n_s16): Remove.
19485         (__arm_vqshlq_u32): Remove.
19486         (__arm_vqshlq_r_u32): Remove.
19487         (__arm_vqshlq_n_u32): Remove.
19488         (__arm_vqshlq_s32): Remove.
19489         (__arm_vqshlq_r_s32): Remove.
19490         (__arm_vqshlq_n_s32): Remove.
19491         (__arm_vqshlq_m_r_u8): Remove.
19492         (__arm_vqshlq_m_r_s8): Remove.
19493         (__arm_vqshlq_m_r_u16): Remove.
19494         (__arm_vqshlq_m_r_s16): Remove.
19495         (__arm_vqshlq_m_r_u32): Remove.
19496         (__arm_vqshlq_m_r_s32): Remove.
19497         (__arm_vqshlq_m_n_s8): Remove.
19498         (__arm_vqshlq_m_n_s32): Remove.
19499         (__arm_vqshlq_m_n_s16): Remove.
19500         (__arm_vqshlq_m_n_u8): Remove.
19501         (__arm_vqshlq_m_n_u32): Remove.
19502         (__arm_vqshlq_m_n_u16): Remove.
19503         (__arm_vqshlq_m_s8): Remove.
19504         (__arm_vqshlq_m_s32): Remove.
19505         (__arm_vqshlq_m_s16): Remove.
19506         (__arm_vqshlq_m_u8): Remove.
19507         (__arm_vqshlq_m_u32): Remove.
19508         (__arm_vqshlq_m_u16): Remove.
19509         (__arm_vqshlq): Remove.
19510         (__arm_vqshlq_r): Remove.
19511         (__arm_vqshlq_n): Remove.
19512         (__arm_vqshlq_m_r): Remove.
19513         (__arm_vqshlq_m_n): Remove.
19514         (__arm_vqshlq_m): Remove.
19516 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19518         * config/arm/arm-mve-builtins-functions.h (class
19519         unspec_mve_function_exact_insn_vshl): New.
19521 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19523         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
19524         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
19526 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19528         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
19529         (finish_opt_n_resolution): Handle MODE_r.
19530         * config/arm/arm-mve-builtins.def (r): New mode.
19532 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19534         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
19535         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
19537 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19539         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
19540         (vabdq): New.
19541         * config/arm/arm-mve-builtins-base.def (vabdq): New.
19542         * config/arm/arm-mve-builtins-base.h (vabdq): New.
19543         * config/arm/arm_mve.h (vabdq): Remove.
19544         (vabdq_m): Remove.
19545         (vabdq_x): Remove.
19546         (vabdq_u8): Remove.
19547         (vabdq_s8): Remove.
19548         (vabdq_u16): Remove.
19549         (vabdq_s16): Remove.
19550         (vabdq_u32): Remove.
19551         (vabdq_s32): Remove.
19552         (vabdq_f16): Remove.
19553         (vabdq_f32): Remove.
19554         (vabdq_m_s8): Remove.
19555         (vabdq_m_s32): Remove.
19556         (vabdq_m_s16): Remove.
19557         (vabdq_m_u8): Remove.
19558         (vabdq_m_u32): Remove.
19559         (vabdq_m_u16): Remove.
19560         (vabdq_m_f32): Remove.
19561         (vabdq_m_f16): Remove.
19562         (vabdq_x_s8): Remove.
19563         (vabdq_x_s16): Remove.
19564         (vabdq_x_s32): Remove.
19565         (vabdq_x_u8): Remove.
19566         (vabdq_x_u16): Remove.
19567         (vabdq_x_u32): Remove.
19568         (vabdq_x_f16): Remove.
19569         (vabdq_x_f32): Remove.
19570         (__arm_vabdq_u8): Remove.
19571         (__arm_vabdq_s8): Remove.
19572         (__arm_vabdq_u16): Remove.
19573         (__arm_vabdq_s16): Remove.
19574         (__arm_vabdq_u32): Remove.
19575         (__arm_vabdq_s32): Remove.
19576         (__arm_vabdq_m_s8): Remove.
19577         (__arm_vabdq_m_s32): Remove.
19578         (__arm_vabdq_m_s16): Remove.
19579         (__arm_vabdq_m_u8): Remove.
19580         (__arm_vabdq_m_u32): Remove.
19581         (__arm_vabdq_m_u16): Remove.
19582         (__arm_vabdq_x_s8): Remove.
19583         (__arm_vabdq_x_s16): Remove.
19584         (__arm_vabdq_x_s32): Remove.
19585         (__arm_vabdq_x_u8): Remove.
19586         (__arm_vabdq_x_u16): Remove.
19587         (__arm_vabdq_x_u32): Remove.
19588         (__arm_vabdq_f16): Remove.
19589         (__arm_vabdq_f32): Remove.
19590         (__arm_vabdq_m_f32): Remove.
19591         (__arm_vabdq_m_f16): Remove.
19592         (__arm_vabdq_x_f16): Remove.
19593         (__arm_vabdq_x_f32): Remove.
19594         (__arm_vabdq): Remove.
19595         (__arm_vabdq_m): Remove.
19596         (__arm_vabdq_x): Remove.
19598 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19600         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
19601         (MVE_FP_VABDQ_ONLY): New.
19602         (mve_insn): Add vabd.
19603         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
19604         (@mve_<mve_insn>q_f<mode>): ... this.
19605         (mve_vabdq_m_f<mode>): Remove.
19607 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19609         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
19610         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
19611         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
19612         * config/arm/arm_mve.h (vqrdmulhq): Remove.
19613         (vqrdmulhq_m): Remove.
19614         (vqrdmulhq_s8): Remove.
19615         (vqrdmulhq_n_s8): Remove.
19616         (vqrdmulhq_s16): Remove.
19617         (vqrdmulhq_n_s16): Remove.
19618         (vqrdmulhq_s32): Remove.
19619         (vqrdmulhq_n_s32): Remove.
19620         (vqrdmulhq_m_n_s8): Remove.
19621         (vqrdmulhq_m_n_s32): Remove.
19622         (vqrdmulhq_m_n_s16): Remove.
19623         (vqrdmulhq_m_s8): Remove.
19624         (vqrdmulhq_m_s32): Remove.
19625         (vqrdmulhq_m_s16): Remove.
19626         (__arm_vqrdmulhq_s8): Remove.
19627         (__arm_vqrdmulhq_n_s8): Remove.
19628         (__arm_vqrdmulhq_s16): Remove.
19629         (__arm_vqrdmulhq_n_s16): Remove.
19630         (__arm_vqrdmulhq_s32): Remove.
19631         (__arm_vqrdmulhq_n_s32): Remove.
19632         (__arm_vqrdmulhq_m_n_s8): Remove.
19633         (__arm_vqrdmulhq_m_n_s32): Remove.
19634         (__arm_vqrdmulhq_m_n_s16): Remove.
19635         (__arm_vqrdmulhq_m_s8): Remove.
19636         (__arm_vqrdmulhq_m_s32): Remove.
19637         (__arm_vqrdmulhq_m_s16): Remove.
19638         (__arm_vqrdmulhq): Remove.
19639         (__arm_vqrdmulhq_m): Remove.
19641 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19643         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
19644         (MVE_SHIFT_N, MVE_SHIFT_R): New.
19645         (mve_insn): Add vqshl, vshl.
19646         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
19647         (mve_vshlq_n_<supf><mode>): Merge into ...
19648         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
19649         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
19650         ...
19651         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
19652         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
19653         into ...
19654         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
19655         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
19656         into ...
19657         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
19658         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
19659         into ...
19660         (@mve_<mve_insn>q_<supf><mode>): ... this.
19662 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19664         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
19665         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
19666         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
19667         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
19668         vqrshlq, vrshlq.
19669         * config/arm/arm_mve.h (vrshlq): Remove.
19670         (vrshlq_m_n): Remove.
19671         (vrshlq_m): Remove.
19672         (vrshlq_x): Remove.
19673         (vrshlq_u8): Remove.
19674         (vrshlq_n_u8): Remove.
19675         (vrshlq_s8): Remove.
19676         (vrshlq_n_s8): Remove.
19677         (vrshlq_u16): Remove.
19678         (vrshlq_n_u16): Remove.
19679         (vrshlq_s16): Remove.
19680         (vrshlq_n_s16): Remove.
19681         (vrshlq_u32): Remove.
19682         (vrshlq_n_u32): Remove.
19683         (vrshlq_s32): Remove.
19684         (vrshlq_n_s32): Remove.
19685         (vrshlq_m_n_u8): Remove.
19686         (vrshlq_m_n_s8): Remove.
19687         (vrshlq_m_n_u16): Remove.
19688         (vrshlq_m_n_s16): Remove.
19689         (vrshlq_m_n_u32): Remove.
19690         (vrshlq_m_n_s32): Remove.
19691         (vrshlq_m_s8): Remove.
19692         (vrshlq_m_s32): Remove.
19693         (vrshlq_m_s16): Remove.
19694         (vrshlq_m_u8): Remove.
19695         (vrshlq_m_u32): Remove.
19696         (vrshlq_m_u16): Remove.
19697         (vrshlq_x_s8): Remove.
19698         (vrshlq_x_s16): Remove.
19699         (vrshlq_x_s32): Remove.
19700         (vrshlq_x_u8): Remove.
19701         (vrshlq_x_u16): Remove.
19702         (vrshlq_x_u32): Remove.
19703         (__arm_vrshlq_u8): Remove.
19704         (__arm_vrshlq_n_u8): Remove.
19705         (__arm_vrshlq_s8): Remove.
19706         (__arm_vrshlq_n_s8): Remove.
19707         (__arm_vrshlq_u16): Remove.
19708         (__arm_vrshlq_n_u16): Remove.
19709         (__arm_vrshlq_s16): Remove.
19710         (__arm_vrshlq_n_s16): Remove.
19711         (__arm_vrshlq_u32): Remove.
19712         (__arm_vrshlq_n_u32): Remove.
19713         (__arm_vrshlq_s32): Remove.
19714         (__arm_vrshlq_n_s32): Remove.
19715         (__arm_vrshlq_m_n_u8): Remove.
19716         (__arm_vrshlq_m_n_s8): Remove.
19717         (__arm_vrshlq_m_n_u16): Remove.
19718         (__arm_vrshlq_m_n_s16): Remove.
19719         (__arm_vrshlq_m_n_u32): Remove.
19720         (__arm_vrshlq_m_n_s32): Remove.
19721         (__arm_vrshlq_m_s8): Remove.
19722         (__arm_vrshlq_m_s32): Remove.
19723         (__arm_vrshlq_m_s16): Remove.
19724         (__arm_vrshlq_m_u8): Remove.
19725         (__arm_vrshlq_m_u32): Remove.
19726         (__arm_vrshlq_m_u16): Remove.
19727         (__arm_vrshlq_x_s8): Remove.
19728         (__arm_vrshlq_x_s16): Remove.
19729         (__arm_vrshlq_x_s32): Remove.
19730         (__arm_vrshlq_x_u8): Remove.
19731         (__arm_vrshlq_x_u16): Remove.
19732         (__arm_vrshlq_x_u32): Remove.
19733         (__arm_vrshlq): Remove.
19734         (__arm_vrshlq_m_n): Remove.
19735         (__arm_vrshlq_m): Remove.
19736         (__arm_vrshlq_x): Remove.
19737         (vqrshlq): Remove.
19738         (vqrshlq_m_n): Remove.
19739         (vqrshlq_m): Remove.
19740         (vqrshlq_u8): Remove.
19741         (vqrshlq_n_u8): Remove.
19742         (vqrshlq_s8): Remove.
19743         (vqrshlq_n_s8): Remove.
19744         (vqrshlq_u16): Remove.
19745         (vqrshlq_n_u16): Remove.
19746         (vqrshlq_s16): Remove.
19747         (vqrshlq_n_s16): Remove.
19748         (vqrshlq_u32): Remove.
19749         (vqrshlq_n_u32): Remove.
19750         (vqrshlq_s32): Remove.
19751         (vqrshlq_n_s32): Remove.
19752         (vqrshlq_m_n_u8): Remove.
19753         (vqrshlq_m_n_s8): Remove.
19754         (vqrshlq_m_n_u16): Remove.
19755         (vqrshlq_m_n_s16): Remove.
19756         (vqrshlq_m_n_u32): Remove.
19757         (vqrshlq_m_n_s32): Remove.
19758         (vqrshlq_m_s8): Remove.
19759         (vqrshlq_m_s32): Remove.
19760         (vqrshlq_m_s16): Remove.
19761         (vqrshlq_m_u8): Remove.
19762         (vqrshlq_m_u32): Remove.
19763         (vqrshlq_m_u16): Remove.
19764         (__arm_vqrshlq_u8): Remove.
19765         (__arm_vqrshlq_n_u8): Remove.
19766         (__arm_vqrshlq_s8): Remove.
19767         (__arm_vqrshlq_n_s8): Remove.
19768         (__arm_vqrshlq_u16): Remove.
19769         (__arm_vqrshlq_n_u16): Remove.
19770         (__arm_vqrshlq_s16): Remove.
19771         (__arm_vqrshlq_n_s16): Remove.
19772         (__arm_vqrshlq_u32): Remove.
19773         (__arm_vqrshlq_n_u32): Remove.
19774         (__arm_vqrshlq_s32): Remove.
19775         (__arm_vqrshlq_n_s32): Remove.
19776         (__arm_vqrshlq_m_n_u8): Remove.
19777         (__arm_vqrshlq_m_n_s8): Remove.
19778         (__arm_vqrshlq_m_n_u16): Remove.
19779         (__arm_vqrshlq_m_n_s16): Remove.
19780         (__arm_vqrshlq_m_n_u32): Remove.
19781         (__arm_vqrshlq_m_n_s32): Remove.
19782         (__arm_vqrshlq_m_s8): Remove.
19783         (__arm_vqrshlq_m_s32): Remove.
19784         (__arm_vqrshlq_m_s16): Remove.
19785         (__arm_vqrshlq_m_u8): Remove.
19786         (__arm_vqrshlq_m_u32): Remove.
19787         (__arm_vqrshlq_m_u16): Remove.
19788         (__arm_vqrshlq): Remove.
19789         (__arm_vqrshlq_m_n): Remove.
19790         (__arm_vqrshlq_m): Remove.
19792 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19794         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
19795         (mve_insn): Add vqrshl, vrshl.
19796         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
19797         (mve_vrshlq_n_<supf><mode>): Merge into ...
19798         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
19799         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
19800         into ...
19801         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
19803 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
19805         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
19806         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
19808 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19810         PR target/109615
19811         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
19812         denegrate PHI optmization.
19814 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
19816         * config/i386/predicates.md (register_no_SP_operand):
19817         Rename from index_register_operand.
19818         (call_register_operand): Update for rename.
19819         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
19821 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
19823         PR bootstrap/84402
19824         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
19825         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
19826         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
19827         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
19828         (s-match): Split into s-generic-match and s-gimple-match.
19829         * configure.ac (with-matchpd-partitions,
19830         DEFAULT_MATCHPD_PARTITIONS): New.
19831         * configure: Regenerate.
19833 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
19835         PR bootstrap/84402
19836         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
19837         (decision_tree::gen): Accept list of files instead of single and update
19838         to write function definition to header and main file.
19839         (write_predicate): Likewise.
19840         (write_header): Emit pragmas and new includes.
19841         (main): Create file buffers and cleanup.
19842         (showUsage, write_header_includes): New.
19844 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
19846         PR bootstrap/84402
19847         * Makefile.in (OBJS): Add gimple-match-exports.o.
19848         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
19849         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
19850         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
19851         gimple_resimplify5, constant_for_folding, convert_conditional_op,
19852         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
19853         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
19854         do_valueize, try_conditional_simplification, gimple_extract,
19855         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
19856         commutative_ternary_op_p, first_commutative_argument,
19857         associative_binary_op_p, directly_supported_p,
19858         get_conditional_internal_fn): Moved to gimple-match-exports.cc
19859         * gimple-match-exports.cc: New file.
19861 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
19863         PR bootstrap/84402
19864         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
19865         debug_dump var.
19866         (dt_simplify::gen_1): Use it.
19868 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
19870         PR bootstrap/84402
19871         * genmatch.cc (output_line_directive): Only emit commented directive
19872         when -vv.
19874 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
19876         PR bootstrap/84402
19877         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
19879 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
19881         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
19882         unused in_mode/in_n variables.
19884 2023-05-05  Richard Biener  <rguenther@suse.de>
19886         PR tree-optimization/109735
19887         * tree-vect-stmts.cc (vectorizable_operation): Perform
19888         conversion for POINTER_DIFF_EXPR unconditionally.
19890 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
19892         * config/i386/mmx.md (mulv2si3): New expander.
19893         (*mulv2si3): New insn pattern.
19895 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
19896             Thomas Schwinge  <thomas@codesourcery.com>
19898         PR libgomp/108098
19899         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
19900         alongside reverse-offload function table to prevent NULL values
19901         of the function addresses.
19903 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
19905         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
19906         mpft_t -> mpfr_t.
19907         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
19909 2023-05-05  Andrew Pinski  <apinski@marvell.com>
19911         PR tree-optimization/109732
19912         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
19913         of the argtrue/argfalse.
19915 2023-05-05  Andrew Pinski  <apinski@marvell.com>
19917         PR tree-optimization/109722
19918         * match.pd: Extend the `ABS<a> == 0` pattern
19919         to cover `ABSU<a> == 0` too.
19921 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
19923         PR target/109733
19924         * config/i386/predicates.md (index_reg_operand): New predicate.
19925         * config/i386/i386.md (ashift to lea spliter): Use
19926         general_reg_operand and index_reg_operand predicates.
19928 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19930         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
19931         Rename and reimplement with RTL codes to...
19932         (aarch64_<optab>hn2<mode>_insn_le): .. This.
19933         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
19934         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
19935         codes to...
19936         (aarch64_<optab>hn2<mode>_insn_be): ... This.
19937         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
19938         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
19939         (aarch64_<optab>hn2<mode>): ... This.
19940         (aarch64_r<optab>hn2<mode>): New expander.
19941         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
19942         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
19943         (ADDSUBHN): Delete.
19944         (sur): Remove handling of the above.
19945         (addsub): Likewise.
19947 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19949         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
19950         Delete.
19951         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
19952         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
19953         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
19954         (aarch64_<sur><addsub>hn<mode>): Delete.
19955         (aarch64_<optab>hn<mode>): New define_expand.
19956         (aarch64_r<optab>hn<mode>): Likewise.
19957         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
19958         New predicate.
19960 2023-05-04  Andrew Pinski  <apinski@marvell.com>
19962         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
19963         diamond form bb with forwarder only empty blocks better.
19965 2023-05-04  Andrew Pinski  <apinski@marvell.com>
19967         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
19968         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
19969         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
19970         of an inline version of it.
19971         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
19972         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
19974 2023-05-04  Andrew Pinski  <apinski@marvell.com>
19976         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
19977         the default argument value for dce_ssa_names to nullptr.
19978         Check to make sure dce_ssa_names is a non-nullptr before
19979         calling simple_dce_from_worklist.
19981 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
19983         * config/i386/predicates.md (index_register_operand): Reject
19984         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
19985         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
19986         (call_register_no_elim_operand): Rewrite as ...
19987         (call_register_operand): ... this.
19988         (call_insn_operand): Use call_register_operand predicate.
19990 2023-05-04  Richard Biener  <rguenther@suse.de>
19992         PR tree-optimization/109721
19993         * tree-vect-stmts.cc (vectorizable_operation): Make sure
19994         to test word_mode for all !target_support_p operations.
19996 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19998         PR target/99195
19999         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
20000         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
20001         (aarch64_mla<mode>): Rename to...
20002         (aarch64_mla<mode><vczle><vczbe>): ... This.
20003         (*aarch64_mla_elt<mode>): Rename to...
20004         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
20005         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
20006         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
20007         (aarch64_mla_n<mode>): Rename to...
20008         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
20009         (aarch64_mls<mode>): Rename to...
20010         (aarch64_mls<mode><vczle><vczbe>): ... This.
20011         (*aarch64_mls_elt<mode>): Rename to...
20012         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
20013         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
20014         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
20015         (aarch64_mls_n<mode>): Rename to...
20016         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
20017         (fma<mode>4): Rename to...
20018         (fma<mode>4<vczle><vczbe>): ... This.
20019         (*aarch64_fma4_elt<mode>): Rename to...
20020         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
20021         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
20022         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
20023         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
20024         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
20025         (fnma<mode>4): Rename to...
20026         (fnma<mode>4<vczle><vczbe>): ... This.
20027         (*aarch64_fnma4_elt<mode>): Rename to...
20028         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
20029         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
20030         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
20031         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
20032         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
20033         (aarch64_simd_bsl<mode>_internal): Rename to...
20034         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
20035         (*aarch64_simd_bsl<mode>_alt): Rename to...
20036         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
20038 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20040         PR target/99195
20041         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
20042         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
20043         (fabd<mode>3): Rename to...
20044         (fabd<mode>3<vczle><vczbe>): ... This.
20045         (aarch64_<optab>p<mode>): Rename to...
20046         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
20047         (aarch64_faddp<mode>): Rename to...
20048         (aarch64_faddp<mode><vczle><vczbe>): ... This.
20050 2023-05-04  Martin Liska  <mliska@suse.cz>
20052         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
20053         (print_version): Use it.
20054         (generate_results): Likewise.
20056 2023-05-04  Richard Biener  <rguenther@suse.de>
20058         * tree-cfg.h (last_stmt): Rename to ...
20059         (last_nondebug_stmt): ... this.
20060         * tree-cfg.cc (last_stmt): Rename to ...
20061         (last_nondebug_stmt): ... this.
20062         (assign_discriminators): Adjust.
20063         (group_case_labels_stmt): Likewise.
20064         (gimple_can_duplicate_bb_p): Likewise.
20065         (execute_fixup_cfg): Likewise.
20066         * auto-profile.cc (afdo_propagate_circuit): Likewise.
20067         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
20068         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
20069         (determine_parallel_type): Likewise.
20070         (adjust_context_and_scope): Likewise.
20071         (expand_task_call): Likewise.
20072         (remove_exit_barrier): Likewise.
20073         (expand_omp_taskreg): Likewise.
20074         (expand_omp_for_init_counts): Likewise.
20075         (expand_omp_for_init_vars): Likewise.
20076         (expand_omp_for_static_chunk): Likewise.
20077         (expand_omp_simd): Likewise.
20078         (expand_oacc_for): Likewise.
20079         (expand_omp_for): Likewise.
20080         (expand_omp_sections): Likewise.
20081         (expand_omp_atomic_fetch_op): Likewise.
20082         (expand_omp_atomic_cas): Likewise.
20083         (expand_omp_atomic): Likewise.
20084         (expand_omp_target): Likewise.
20085         (expand_omp): Likewise.
20086         (omp_make_gimple_edges): Likewise.
20087         * trans-mem.cc (tm_region_init): Likewise.
20088         * tree-inline.cc (redirect_all_calls): Likewise.
20089         * tree-parloops.cc (gen_parallel_loop): Likewise.
20090         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
20091         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
20092         Likewise.
20093         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
20094         (may_eliminate_iv): Likewise.
20095         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
20096         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
20097         Likewise.
20098         (estimate_numbers_of_iterations): Likewise.
20099         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
20100         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
20101         (set_predicates_for_bb): Likewise.
20102         (init_loop_unswitch_info): Likewise.
20103         (hoist_guard): Likewise.
20104         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
20105         (minmax_replacement): Likewise.
20106         * tree-ssa-reassoc.cc (update_range_test): Likewise.
20107         (optimize_range_tests_to_bit_test): Likewise.
20108         (optimize_range_tests_var_bound): Likewise.
20109         (optimize_range_tests): Likewise.
20110         (no_side_effect_bb): Likewise.
20111         (suitable_cond_bb): Likewise.
20112         (maybe_optimize_range_tests): Likewise.
20113         (reassociate_bb): Likewise.
20114         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
20116 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
20118         PR debug/109676
20119         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
20120         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
20121         for it only if it still has TImode.  Don't decide whether to call
20122         fix_debug_reg_uses based on whether SRC is ever set or not.
20124 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
20126         * config/cris/cris.cc (cris_split_constant): New function.
20127         * config/cris/cris.md (splitop): New iterator.
20128         (opsplit1): New define_peephole2.
20129         * config/cris/cris-protos.h (cris_split_constant): Declare.
20130         (cris_splittable_constant_p): New macro.
20132 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
20134         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
20135         to ALL_REGS.
20137 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
20139         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
20140         lra_in_progress, not reload_in_progress.
20141         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
20142         * config/cris/constraints.md ("Q"): Ditto.
20144 2023-05-03  Andrew Pinski  <apinski@marvell.com>
20146         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
20147         stats on removed number of statements and phis.
20149 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
20151         PR tree-optimization/109711
20152         * value-range.cc (irange::verify_range): Allow types of
20153         error_mark_node.
20155 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
20157         PR sanitizer/90746
20158         * calls.cc (can_implement_as_sibling_call_p): Reject calls
20159         to __sanitizer_cov_trace_pc.
20161 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
20163         PR target/109661
20164         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
20165         a new ABI break parameter for GCC 14.  Set it to the alignment
20166         of enums that have an underlying type.  Take the true alignment
20167         of such enums from the TYPE_ALIGN of the underlying type's
20168         TYPE_MAIN_VARIANT.
20169         (aarch64_function_arg_boundary): Update accordingly.
20170         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
20171         Warn about ABI differences.
20173 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
20175         PR target/109661
20176         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
20177         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
20178         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
20179         (aarch64_gimplify_va_arg_expr): Likewise.
20181 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20183         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
20184         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
20185         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
20186         (vrmulhq): New.
20187         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
20188         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
20189         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
20190         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
20191         * config/arm/arm_mve.h (vhsubq): Remove.
20192         (vhaddq): Remove.
20193         (vhaddq_m): Remove.
20194         (vhsubq_m): Remove.
20195         (vhaddq_x): Remove.
20196         (vhsubq_x): Remove.
20197         (vhsubq_u8): Remove.
20198         (vhsubq_n_u8): Remove.
20199         (vhaddq_u8): Remove.
20200         (vhaddq_n_u8): Remove.
20201         (vhsubq_s8): Remove.
20202         (vhsubq_n_s8): Remove.
20203         (vhaddq_s8): Remove.
20204         (vhaddq_n_s8): Remove.
20205         (vhsubq_u16): Remove.
20206         (vhsubq_n_u16): Remove.
20207         (vhaddq_u16): Remove.
20208         (vhaddq_n_u16): Remove.
20209         (vhsubq_s16): Remove.
20210         (vhsubq_n_s16): Remove.
20211         (vhaddq_s16): Remove.
20212         (vhaddq_n_s16): Remove.
20213         (vhsubq_u32): Remove.
20214         (vhsubq_n_u32): Remove.
20215         (vhaddq_u32): Remove.
20216         (vhaddq_n_u32): Remove.
20217         (vhsubq_s32): Remove.
20218         (vhsubq_n_s32): Remove.
20219         (vhaddq_s32): Remove.
20220         (vhaddq_n_s32): Remove.
20221         (vhaddq_m_n_s8): Remove.
20222         (vhaddq_m_n_s32): Remove.
20223         (vhaddq_m_n_s16): Remove.
20224         (vhaddq_m_n_u8): Remove.
20225         (vhaddq_m_n_u32): Remove.
20226         (vhaddq_m_n_u16): Remove.
20227         (vhaddq_m_s8): Remove.
20228         (vhaddq_m_s32): Remove.
20229         (vhaddq_m_s16): Remove.
20230         (vhaddq_m_u8): Remove.
20231         (vhaddq_m_u32): Remove.
20232         (vhaddq_m_u16): Remove.
20233         (vhsubq_m_n_s8): Remove.
20234         (vhsubq_m_n_s32): Remove.
20235         (vhsubq_m_n_s16): Remove.
20236         (vhsubq_m_n_u8): Remove.
20237         (vhsubq_m_n_u32): Remove.
20238         (vhsubq_m_n_u16): Remove.
20239         (vhsubq_m_s8): Remove.
20240         (vhsubq_m_s32): Remove.
20241         (vhsubq_m_s16): Remove.
20242         (vhsubq_m_u8): Remove.
20243         (vhsubq_m_u32): Remove.
20244         (vhsubq_m_u16): Remove.
20245         (vhaddq_x_n_s8): Remove.
20246         (vhaddq_x_n_s16): Remove.
20247         (vhaddq_x_n_s32): Remove.
20248         (vhaddq_x_n_u8): Remove.
20249         (vhaddq_x_n_u16): Remove.
20250         (vhaddq_x_n_u32): Remove.
20251         (vhaddq_x_s8): Remove.
20252         (vhaddq_x_s16): Remove.
20253         (vhaddq_x_s32): Remove.
20254         (vhaddq_x_u8): Remove.
20255         (vhaddq_x_u16): Remove.
20256         (vhaddq_x_u32): Remove.
20257         (vhsubq_x_n_s8): Remove.
20258         (vhsubq_x_n_s16): Remove.
20259         (vhsubq_x_n_s32): Remove.
20260         (vhsubq_x_n_u8): Remove.
20261         (vhsubq_x_n_u16): Remove.
20262         (vhsubq_x_n_u32): Remove.
20263         (vhsubq_x_s8): Remove.
20264         (vhsubq_x_s16): Remove.
20265         (vhsubq_x_s32): Remove.
20266         (vhsubq_x_u8): Remove.
20267         (vhsubq_x_u16): Remove.
20268         (vhsubq_x_u32): Remove.
20269         (__arm_vhsubq_u8): Remove.
20270         (__arm_vhsubq_n_u8): Remove.
20271         (__arm_vhaddq_u8): Remove.
20272         (__arm_vhaddq_n_u8): Remove.
20273         (__arm_vhsubq_s8): Remove.
20274         (__arm_vhsubq_n_s8): Remove.
20275         (__arm_vhaddq_s8): Remove.
20276         (__arm_vhaddq_n_s8): Remove.
20277         (__arm_vhsubq_u16): Remove.
20278         (__arm_vhsubq_n_u16): Remove.
20279         (__arm_vhaddq_u16): Remove.
20280         (__arm_vhaddq_n_u16): Remove.
20281         (__arm_vhsubq_s16): Remove.
20282         (__arm_vhsubq_n_s16): Remove.
20283         (__arm_vhaddq_s16): Remove.
20284         (__arm_vhaddq_n_s16): Remove.
20285         (__arm_vhsubq_u32): Remove.
20286         (__arm_vhsubq_n_u32): Remove.
20287         (__arm_vhaddq_u32): Remove.
20288         (__arm_vhaddq_n_u32): Remove.
20289         (__arm_vhsubq_s32): Remove.
20290         (__arm_vhsubq_n_s32): Remove.
20291         (__arm_vhaddq_s32): Remove.
20292         (__arm_vhaddq_n_s32): Remove.
20293         (__arm_vhaddq_m_n_s8): Remove.
20294         (__arm_vhaddq_m_n_s32): Remove.
20295         (__arm_vhaddq_m_n_s16): Remove.
20296         (__arm_vhaddq_m_n_u8): Remove.
20297         (__arm_vhaddq_m_n_u32): Remove.
20298         (__arm_vhaddq_m_n_u16): Remove.
20299         (__arm_vhaddq_m_s8): Remove.
20300         (__arm_vhaddq_m_s32): Remove.
20301         (__arm_vhaddq_m_s16): Remove.
20302         (__arm_vhaddq_m_u8): Remove.
20303         (__arm_vhaddq_m_u32): Remove.
20304         (__arm_vhaddq_m_u16): Remove.
20305         (__arm_vhsubq_m_n_s8): Remove.
20306         (__arm_vhsubq_m_n_s32): Remove.
20307         (__arm_vhsubq_m_n_s16): Remove.
20308         (__arm_vhsubq_m_n_u8): Remove.
20309         (__arm_vhsubq_m_n_u32): Remove.
20310         (__arm_vhsubq_m_n_u16): Remove.
20311         (__arm_vhsubq_m_s8): Remove.
20312         (__arm_vhsubq_m_s32): Remove.
20313         (__arm_vhsubq_m_s16): Remove.
20314         (__arm_vhsubq_m_u8): Remove.
20315         (__arm_vhsubq_m_u32): Remove.
20316         (__arm_vhsubq_m_u16): Remove.
20317         (__arm_vhaddq_x_n_s8): Remove.
20318         (__arm_vhaddq_x_n_s16): Remove.
20319         (__arm_vhaddq_x_n_s32): Remove.
20320         (__arm_vhaddq_x_n_u8): Remove.
20321         (__arm_vhaddq_x_n_u16): Remove.
20322         (__arm_vhaddq_x_n_u32): Remove.
20323         (__arm_vhaddq_x_s8): Remove.
20324         (__arm_vhaddq_x_s16): Remove.
20325         (__arm_vhaddq_x_s32): Remove.
20326         (__arm_vhaddq_x_u8): Remove.
20327         (__arm_vhaddq_x_u16): Remove.
20328         (__arm_vhaddq_x_u32): Remove.
20329         (__arm_vhsubq_x_n_s8): Remove.
20330         (__arm_vhsubq_x_n_s16): Remove.
20331         (__arm_vhsubq_x_n_s32): Remove.
20332         (__arm_vhsubq_x_n_u8): Remove.
20333         (__arm_vhsubq_x_n_u16): Remove.
20334         (__arm_vhsubq_x_n_u32): Remove.
20335         (__arm_vhsubq_x_s8): Remove.
20336         (__arm_vhsubq_x_s16): Remove.
20337         (__arm_vhsubq_x_s32): Remove.
20338         (__arm_vhsubq_x_u8): Remove.
20339         (__arm_vhsubq_x_u16): Remove.
20340         (__arm_vhsubq_x_u32): Remove.
20341         (__arm_vhsubq): Remove.
20342         (__arm_vhaddq): Remove.
20343         (__arm_vhaddq_m): Remove.
20344         (__arm_vhsubq_m): Remove.
20345         (__arm_vhaddq_x): Remove.
20346         (__arm_vhsubq_x): Remove.
20347         (vmulhq): Remove.
20348         (vmulhq_m): Remove.
20349         (vmulhq_x): Remove.
20350         (vmulhq_u8): Remove.
20351         (vmulhq_s8): Remove.
20352         (vmulhq_u16): Remove.
20353         (vmulhq_s16): Remove.
20354         (vmulhq_u32): Remove.
20355         (vmulhq_s32): Remove.
20356         (vmulhq_m_s8): Remove.
20357         (vmulhq_m_s32): Remove.
20358         (vmulhq_m_s16): Remove.
20359         (vmulhq_m_u8): Remove.
20360         (vmulhq_m_u32): Remove.
20361         (vmulhq_m_u16): Remove.
20362         (vmulhq_x_s8): Remove.
20363         (vmulhq_x_s16): Remove.
20364         (vmulhq_x_s32): Remove.
20365         (vmulhq_x_u8): Remove.
20366         (vmulhq_x_u16): Remove.
20367         (vmulhq_x_u32): Remove.
20368         (__arm_vmulhq_u8): Remove.
20369         (__arm_vmulhq_s8): Remove.
20370         (__arm_vmulhq_u16): Remove.
20371         (__arm_vmulhq_s16): Remove.
20372         (__arm_vmulhq_u32): Remove.
20373         (__arm_vmulhq_s32): Remove.
20374         (__arm_vmulhq_m_s8): Remove.
20375         (__arm_vmulhq_m_s32): Remove.
20376         (__arm_vmulhq_m_s16): Remove.
20377         (__arm_vmulhq_m_u8): Remove.
20378         (__arm_vmulhq_m_u32): Remove.
20379         (__arm_vmulhq_m_u16): Remove.
20380         (__arm_vmulhq_x_s8): Remove.
20381         (__arm_vmulhq_x_s16): Remove.
20382         (__arm_vmulhq_x_s32): Remove.
20383         (__arm_vmulhq_x_u8): Remove.
20384         (__arm_vmulhq_x_u16): Remove.
20385         (__arm_vmulhq_x_u32): Remove.
20386         (__arm_vmulhq): Remove.
20387         (__arm_vmulhq_m): Remove.
20388         (__arm_vmulhq_x): Remove.
20389         (vqsubq): Remove.
20390         (vqaddq): Remove.
20391         (vqaddq_m): Remove.
20392         (vqsubq_m): Remove.
20393         (vqsubq_u8): Remove.
20394         (vqsubq_n_u8): Remove.
20395         (vqaddq_u8): Remove.
20396         (vqaddq_n_u8): Remove.
20397         (vqsubq_s8): Remove.
20398         (vqsubq_n_s8): Remove.
20399         (vqaddq_s8): Remove.
20400         (vqaddq_n_s8): Remove.
20401         (vqsubq_u16): Remove.
20402         (vqsubq_n_u16): Remove.
20403         (vqaddq_u16): Remove.
20404         (vqaddq_n_u16): Remove.
20405         (vqsubq_s16): Remove.
20406         (vqsubq_n_s16): Remove.
20407         (vqaddq_s16): Remove.
20408         (vqaddq_n_s16): Remove.
20409         (vqsubq_u32): Remove.
20410         (vqsubq_n_u32): Remove.
20411         (vqaddq_u32): Remove.
20412         (vqaddq_n_u32): Remove.
20413         (vqsubq_s32): Remove.
20414         (vqsubq_n_s32): Remove.
20415         (vqaddq_s32): Remove.
20416         (vqaddq_n_s32): Remove.
20417         (vqaddq_m_n_s8): Remove.
20418         (vqaddq_m_n_s32): Remove.
20419         (vqaddq_m_n_s16): Remove.
20420         (vqaddq_m_n_u8): Remove.
20421         (vqaddq_m_n_u32): Remove.
20422         (vqaddq_m_n_u16): Remove.
20423         (vqaddq_m_s8): Remove.
20424         (vqaddq_m_s32): Remove.
20425         (vqaddq_m_s16): Remove.
20426         (vqaddq_m_u8): Remove.
20427         (vqaddq_m_u32): Remove.
20428         (vqaddq_m_u16): Remove.
20429         (vqsubq_m_n_s8): Remove.
20430         (vqsubq_m_n_s32): Remove.
20431         (vqsubq_m_n_s16): Remove.
20432         (vqsubq_m_n_u8): Remove.
20433         (vqsubq_m_n_u32): Remove.
20434         (vqsubq_m_n_u16): Remove.
20435         (vqsubq_m_s8): Remove.
20436         (vqsubq_m_s32): Remove.
20437         (vqsubq_m_s16): Remove.
20438         (vqsubq_m_u8): Remove.
20439         (vqsubq_m_u32): Remove.
20440         (vqsubq_m_u16): Remove.
20441         (__arm_vqsubq_u8): Remove.
20442         (__arm_vqsubq_n_u8): Remove.
20443         (__arm_vqaddq_u8): Remove.
20444         (__arm_vqaddq_n_u8): Remove.
20445         (__arm_vqsubq_s8): Remove.
20446         (__arm_vqsubq_n_s8): Remove.
20447         (__arm_vqaddq_s8): Remove.
20448         (__arm_vqaddq_n_s8): Remove.
20449         (__arm_vqsubq_u16): Remove.
20450         (__arm_vqsubq_n_u16): Remove.
20451         (__arm_vqaddq_u16): Remove.
20452         (__arm_vqaddq_n_u16): Remove.
20453         (__arm_vqsubq_s16): Remove.
20454         (__arm_vqsubq_n_s16): Remove.
20455         (__arm_vqaddq_s16): Remove.
20456         (__arm_vqaddq_n_s16): Remove.
20457         (__arm_vqsubq_u32): Remove.
20458         (__arm_vqsubq_n_u32): Remove.
20459         (__arm_vqaddq_u32): Remove.
20460         (__arm_vqaddq_n_u32): Remove.
20461         (__arm_vqsubq_s32): Remove.
20462         (__arm_vqsubq_n_s32): Remove.
20463         (__arm_vqaddq_s32): Remove.
20464         (__arm_vqaddq_n_s32): Remove.
20465         (__arm_vqaddq_m_n_s8): Remove.
20466         (__arm_vqaddq_m_n_s32): Remove.
20467         (__arm_vqaddq_m_n_s16): Remove.
20468         (__arm_vqaddq_m_n_u8): Remove.
20469         (__arm_vqaddq_m_n_u32): Remove.
20470         (__arm_vqaddq_m_n_u16): Remove.
20471         (__arm_vqaddq_m_s8): Remove.
20472         (__arm_vqaddq_m_s32): Remove.
20473         (__arm_vqaddq_m_s16): Remove.
20474         (__arm_vqaddq_m_u8): Remove.
20475         (__arm_vqaddq_m_u32): Remove.
20476         (__arm_vqaddq_m_u16): Remove.
20477         (__arm_vqsubq_m_n_s8): Remove.
20478         (__arm_vqsubq_m_n_s32): Remove.
20479         (__arm_vqsubq_m_n_s16): Remove.
20480         (__arm_vqsubq_m_n_u8): Remove.
20481         (__arm_vqsubq_m_n_u32): Remove.
20482         (__arm_vqsubq_m_n_u16): Remove.
20483         (__arm_vqsubq_m_s8): Remove.
20484         (__arm_vqsubq_m_s32): Remove.
20485         (__arm_vqsubq_m_s16): Remove.
20486         (__arm_vqsubq_m_u8): Remove.
20487         (__arm_vqsubq_m_u32): Remove.
20488         (__arm_vqsubq_m_u16): Remove.
20489         (__arm_vqsubq): Remove.
20490         (__arm_vqaddq): Remove.
20491         (__arm_vqaddq_m): Remove.
20492         (__arm_vqsubq_m): Remove.
20493         (vqdmulhq): Remove.
20494         (vqdmulhq_m): Remove.
20495         (vqdmulhq_s8): Remove.
20496         (vqdmulhq_n_s8): Remove.
20497         (vqdmulhq_s16): Remove.
20498         (vqdmulhq_n_s16): Remove.
20499         (vqdmulhq_s32): Remove.
20500         (vqdmulhq_n_s32): Remove.
20501         (vqdmulhq_m_n_s8): Remove.
20502         (vqdmulhq_m_n_s32): Remove.
20503         (vqdmulhq_m_n_s16): Remove.
20504         (vqdmulhq_m_s8): Remove.
20505         (vqdmulhq_m_s32): Remove.
20506         (vqdmulhq_m_s16): Remove.
20507         (__arm_vqdmulhq_s8): Remove.
20508         (__arm_vqdmulhq_n_s8): Remove.
20509         (__arm_vqdmulhq_s16): Remove.
20510         (__arm_vqdmulhq_n_s16): Remove.
20511         (__arm_vqdmulhq_s32): Remove.
20512         (__arm_vqdmulhq_n_s32): Remove.
20513         (__arm_vqdmulhq_m_n_s8): Remove.
20514         (__arm_vqdmulhq_m_n_s32): Remove.
20515         (__arm_vqdmulhq_m_n_s16): Remove.
20516         (__arm_vqdmulhq_m_s8): Remove.
20517         (__arm_vqdmulhq_m_s32): Remove.
20518         (__arm_vqdmulhq_m_s16): Remove.
20519         (__arm_vqdmulhq): Remove.
20520         (__arm_vqdmulhq_m): Remove.
20521         (vrhaddq): Remove.
20522         (vrhaddq_m): Remove.
20523         (vrhaddq_x): Remove.
20524         (vrhaddq_u8): Remove.
20525         (vrhaddq_s8): Remove.
20526         (vrhaddq_u16): Remove.
20527         (vrhaddq_s16): Remove.
20528         (vrhaddq_u32): Remove.
20529         (vrhaddq_s32): Remove.
20530         (vrhaddq_m_s8): Remove.
20531         (vrhaddq_m_s32): Remove.
20532         (vrhaddq_m_s16): Remove.
20533         (vrhaddq_m_u8): Remove.
20534         (vrhaddq_m_u32): Remove.
20535         (vrhaddq_m_u16): Remove.
20536         (vrhaddq_x_s8): Remove.
20537         (vrhaddq_x_s16): Remove.
20538         (vrhaddq_x_s32): Remove.
20539         (vrhaddq_x_u8): Remove.
20540         (vrhaddq_x_u16): Remove.
20541         (vrhaddq_x_u32): Remove.
20542         (__arm_vrhaddq_u8): Remove.
20543         (__arm_vrhaddq_s8): Remove.
20544         (__arm_vrhaddq_u16): Remove.
20545         (__arm_vrhaddq_s16): Remove.
20546         (__arm_vrhaddq_u32): Remove.
20547         (__arm_vrhaddq_s32): Remove.
20548         (__arm_vrhaddq_m_s8): Remove.
20549         (__arm_vrhaddq_m_s32): Remove.
20550         (__arm_vrhaddq_m_s16): Remove.
20551         (__arm_vrhaddq_m_u8): Remove.
20552         (__arm_vrhaddq_m_u32): Remove.
20553         (__arm_vrhaddq_m_u16): Remove.
20554         (__arm_vrhaddq_x_s8): Remove.
20555         (__arm_vrhaddq_x_s16): Remove.
20556         (__arm_vrhaddq_x_s32): Remove.
20557         (__arm_vrhaddq_x_u8): Remove.
20558         (__arm_vrhaddq_x_u16): Remove.
20559         (__arm_vrhaddq_x_u32): Remove.
20560         (__arm_vrhaddq): Remove.
20561         (__arm_vrhaddq_m): Remove.
20562         (__arm_vrhaddq_x): Remove.
20563         (vrmulhq): Remove.
20564         (vrmulhq_m): Remove.
20565         (vrmulhq_x): Remove.
20566         (vrmulhq_u8): Remove.
20567         (vrmulhq_s8): Remove.
20568         (vrmulhq_u16): Remove.
20569         (vrmulhq_s16): Remove.
20570         (vrmulhq_u32): Remove.
20571         (vrmulhq_s32): Remove.
20572         (vrmulhq_m_s8): Remove.
20573         (vrmulhq_m_s32): Remove.
20574         (vrmulhq_m_s16): Remove.
20575         (vrmulhq_m_u8): Remove.
20576         (vrmulhq_m_u32): Remove.
20577         (vrmulhq_m_u16): Remove.
20578         (vrmulhq_x_s8): Remove.
20579         (vrmulhq_x_s16): Remove.
20580         (vrmulhq_x_s32): Remove.
20581         (vrmulhq_x_u8): Remove.
20582         (vrmulhq_x_u16): Remove.
20583         (vrmulhq_x_u32): Remove.
20584         (__arm_vrmulhq_u8): Remove.
20585         (__arm_vrmulhq_s8): Remove.
20586         (__arm_vrmulhq_u16): Remove.
20587         (__arm_vrmulhq_s16): Remove.
20588         (__arm_vrmulhq_u32): Remove.
20589         (__arm_vrmulhq_s32): Remove.
20590         (__arm_vrmulhq_m_s8): Remove.
20591         (__arm_vrmulhq_m_s32): Remove.
20592         (__arm_vrmulhq_m_s16): Remove.
20593         (__arm_vrmulhq_m_u8): Remove.
20594         (__arm_vrmulhq_m_u32): Remove.
20595         (__arm_vrmulhq_m_u16): Remove.
20596         (__arm_vrmulhq_x_s8): Remove.
20597         (__arm_vrmulhq_x_s16): Remove.
20598         (__arm_vrmulhq_x_s32): Remove.
20599         (__arm_vrmulhq_x_u8): Remove.
20600         (__arm_vrmulhq_x_u16): Remove.
20601         (__arm_vrmulhq_x_u32): Remove.
20602         (__arm_vrmulhq): Remove.
20603         (__arm_vrmulhq_m): Remove.
20604         (__arm_vrmulhq_x): Remove.
20606 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20608         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
20609         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
20610         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
20611         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
20612         * config/arm/mve.md (mve_vabdq_<supf><mode>)
20613         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
20614         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
20615         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
20616         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
20617         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
20618         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
20619         ...
20620         (@mve_<mve_insn>q_<supf><mode>): ... this.
20621         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
20622         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
20623         gen_mve_vhaddq / gen_mve_vrhaddq.
20625 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20627         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
20628         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
20629         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
20630         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
20631         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
20632         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
20633         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
20634         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
20635         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
20636         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
20637         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
20638         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
20639         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
20641 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20643         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
20644         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
20645         vqsubq.
20646         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
20647         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
20648         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
20649         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
20650         (mve_vqsubq_n_<supf><mode>): Merge into ...
20651         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
20653 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20655         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
20656         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
20657         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
20658         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
20659         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
20660         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
20661         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
20662         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
20663         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
20664         (mve_vshlq_m_<supf><mode>): Merged into
20665         @mve_<mve_insn>q_m_<supf><mode>.
20666         (mve_vabdq_m_<supf><mode>): Likewise.
20667         (mve_vhaddq_m_<supf><mode>): Likewise.
20668         (mve_vhsubq_m_<supf><mode>): Likewise.
20669         (mve_vmaxq_m_<supf><mode>): Likewise.
20670         (mve_vminq_m_<supf><mode>): Likewise.
20671         (mve_vmulhq_m_<supf><mode>): Likewise.
20672         (mve_vqaddq_m_<supf><mode>): Likewise.
20673         (mve_vqrshlq_m_<supf><mode>): Likewise.
20674         (mve_vqshlq_m_<supf><mode>): Likewise.
20675         (mve_vqsubq_m_<supf><mode>): Likewise.
20676         (mve_vrhaddq_m_<supf><mode>): Likewise.
20677         (mve_vrmulhq_m_<supf><mode>): Likewise.
20678         (mve_vrshlq_m_<supf><mode>): Likewise.
20679         (mve_vqdmladhq_m_s<mode>): Likewise.
20680         (mve_vqdmladhxq_m_s<mode>): Likewise.
20681         (mve_vqdmlsdhq_m_s<mode>): Likewise.
20682         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
20683         (mve_vqdmulhq_m_s<mode>): Likewise.
20684         (mve_vqrdmladhq_m_s<mode>): Likewise.
20685         (mve_vqrdmladhxq_m_s<mode>): Likewise.
20686         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
20687         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
20688         (mve_vqrdmulhq_m_s<mode>): Likewise.
20690 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20692         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
20693         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
20694         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
20695         * config/arm/arm_mve.h (vcreateq_f16): Remove.
20696         (vcreateq_f32): Remove.
20697         (vcreateq_u8): Remove.
20698         (vcreateq_u16): Remove.
20699         (vcreateq_u32): Remove.
20700         (vcreateq_u64): Remove.
20701         (vcreateq_s8): Remove.
20702         (vcreateq_s16): Remove.
20703         (vcreateq_s32): Remove.
20704         (vcreateq_s64): Remove.
20705         (__arm_vcreateq_u8): Remove.
20706         (__arm_vcreateq_u16): Remove.
20707         (__arm_vcreateq_u32): Remove.
20708         (__arm_vcreateq_u64): Remove.
20709         (__arm_vcreateq_s8): Remove.
20710         (__arm_vcreateq_s16): Remove.
20711         (__arm_vcreateq_s32): Remove.
20712         (__arm_vcreateq_s64): Remove.
20713         (__arm_vcreateq_f16): Remove.
20714         (__arm_vcreateq_f32): Remove.
20716 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20718         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
20719         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
20720         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
20721         (@mve_<mve_insn>q_f<mode>): ... this.
20722         (mve_vcreateq_<supf><mode>): Rename into ...
20723         (@mve_<mve_insn>q_<supf><mode>): ... this.
20725 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20727         * config/arm/arm-mve-builtins-shapes.cc (create): New.
20728         * config/arm/arm-mve-builtins-shapes.h: (create): New.
20730 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20732         * config/arm/arm-mve-builtins-functions.h (class
20733         unspec_mve_function_exact_insn): New.
20735 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20737         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
20738         (vorrq): New.
20739         * config/arm/arm-mve-builtins-base.def (vorrq): New.
20740         * config/arm/arm-mve-builtins-base.h (vorrq): New.
20741         * config/arm/arm-mve-builtins.cc
20742         (function_instance::has_inactive_argument): Handle vorrq.
20743         * config/arm/arm_mve.h (vorrq): Remove.
20744         (vorrq_m_n): Remove.
20745         (vorrq_m): Remove.
20746         (vorrq_x): Remove.
20747         (vorrq_u8): Remove.
20748         (vorrq_s8): Remove.
20749         (vorrq_u16): Remove.
20750         (vorrq_s16): Remove.
20751         (vorrq_u32): Remove.
20752         (vorrq_s32): Remove.
20753         (vorrq_n_u16): Remove.
20754         (vorrq_f16): Remove.
20755         (vorrq_n_s16): Remove.
20756         (vorrq_n_u32): Remove.
20757         (vorrq_f32): Remove.
20758         (vorrq_n_s32): Remove.
20759         (vorrq_m_n_s16): Remove.
20760         (vorrq_m_n_u16): Remove.
20761         (vorrq_m_n_s32): Remove.
20762         (vorrq_m_n_u32): Remove.
20763         (vorrq_m_s8): Remove.
20764         (vorrq_m_s32): Remove.
20765         (vorrq_m_s16): Remove.
20766         (vorrq_m_u8): Remove.
20767         (vorrq_m_u32): Remove.
20768         (vorrq_m_u16): Remove.
20769         (vorrq_m_f32): Remove.
20770         (vorrq_m_f16): Remove.
20771         (vorrq_x_s8): Remove.
20772         (vorrq_x_s16): Remove.
20773         (vorrq_x_s32): Remove.
20774         (vorrq_x_u8): Remove.
20775         (vorrq_x_u16): Remove.
20776         (vorrq_x_u32): Remove.
20777         (vorrq_x_f16): Remove.
20778         (vorrq_x_f32): Remove.
20779         (__arm_vorrq_u8): Remove.
20780         (__arm_vorrq_s8): Remove.
20781         (__arm_vorrq_u16): Remove.
20782         (__arm_vorrq_s16): Remove.
20783         (__arm_vorrq_u32): Remove.
20784         (__arm_vorrq_s32): Remove.
20785         (__arm_vorrq_n_u16): Remove.
20786         (__arm_vorrq_n_s16): Remove.
20787         (__arm_vorrq_n_u32): Remove.
20788         (__arm_vorrq_n_s32): Remove.
20789         (__arm_vorrq_m_n_s16): Remove.
20790         (__arm_vorrq_m_n_u16): Remove.
20791         (__arm_vorrq_m_n_s32): Remove.
20792         (__arm_vorrq_m_n_u32): Remove.
20793         (__arm_vorrq_m_s8): Remove.
20794         (__arm_vorrq_m_s32): Remove.
20795         (__arm_vorrq_m_s16): Remove.
20796         (__arm_vorrq_m_u8): Remove.
20797         (__arm_vorrq_m_u32): Remove.
20798         (__arm_vorrq_m_u16): Remove.
20799         (__arm_vorrq_x_s8): Remove.
20800         (__arm_vorrq_x_s16): Remove.
20801         (__arm_vorrq_x_s32): Remove.
20802         (__arm_vorrq_x_u8): Remove.
20803         (__arm_vorrq_x_u16): Remove.
20804         (__arm_vorrq_x_u32): Remove.
20805         (__arm_vorrq_f16): Remove.
20806         (__arm_vorrq_f32): Remove.
20807         (__arm_vorrq_m_f32): Remove.
20808         (__arm_vorrq_m_f16): Remove.
20809         (__arm_vorrq_x_f16): Remove.
20810         (__arm_vorrq_x_f32): Remove.
20811         (__arm_vorrq): Remove.
20812         (__arm_vorrq_m_n): Remove.
20813         (__arm_vorrq_m): Remove.
20814         (__arm_vorrq_x): Remove.
20816 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20818         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
20819         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
20820         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
20821         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
20823 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20825         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
20826         (vandq,veorq): New.
20827         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
20828         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
20829         * config/arm/arm_mve.h (vandq): Remove.
20830         (vandq_m): Remove.
20831         (vandq_x): Remove.
20832         (vandq_u8): Remove.
20833         (vandq_s8): Remove.
20834         (vandq_u16): Remove.
20835         (vandq_s16): Remove.
20836         (vandq_u32): Remove.
20837         (vandq_s32): Remove.
20838         (vandq_f16): Remove.
20839         (vandq_f32): Remove.
20840         (vandq_m_s8): Remove.
20841         (vandq_m_s32): Remove.
20842         (vandq_m_s16): Remove.
20843         (vandq_m_u8): Remove.
20844         (vandq_m_u32): Remove.
20845         (vandq_m_u16): Remove.
20846         (vandq_m_f32): Remove.
20847         (vandq_m_f16): Remove.
20848         (vandq_x_s8): Remove.
20849         (vandq_x_s16): Remove.
20850         (vandq_x_s32): Remove.
20851         (vandq_x_u8): Remove.
20852         (vandq_x_u16): Remove.
20853         (vandq_x_u32): Remove.
20854         (vandq_x_f16): Remove.
20855         (vandq_x_f32): Remove.
20856         (__arm_vandq_u8): Remove.
20857         (__arm_vandq_s8): Remove.
20858         (__arm_vandq_u16): Remove.
20859         (__arm_vandq_s16): Remove.
20860         (__arm_vandq_u32): Remove.
20861         (__arm_vandq_s32): Remove.
20862         (__arm_vandq_m_s8): Remove.
20863         (__arm_vandq_m_s32): Remove.
20864         (__arm_vandq_m_s16): Remove.
20865         (__arm_vandq_m_u8): Remove.
20866         (__arm_vandq_m_u32): Remove.
20867         (__arm_vandq_m_u16): Remove.
20868         (__arm_vandq_x_s8): Remove.
20869         (__arm_vandq_x_s16): Remove.
20870         (__arm_vandq_x_s32): Remove.
20871         (__arm_vandq_x_u8): Remove.
20872         (__arm_vandq_x_u16): Remove.
20873         (__arm_vandq_x_u32): Remove.
20874         (__arm_vandq_f16): Remove.
20875         (__arm_vandq_f32): Remove.
20876         (__arm_vandq_m_f32): Remove.
20877         (__arm_vandq_m_f16): Remove.
20878         (__arm_vandq_x_f16): Remove.
20879         (__arm_vandq_x_f32): Remove.
20880         (__arm_vandq): Remove.
20881         (__arm_vandq_m): Remove.
20882         (__arm_vandq_x): Remove.
20883         (veorq_m): Remove.
20884         (veorq_x): Remove.
20885         (veorq_u8): Remove.
20886         (veorq_s8): Remove.
20887         (veorq_u16): Remove.
20888         (veorq_s16): Remove.
20889         (veorq_u32): Remove.
20890         (veorq_s32): Remove.
20891         (veorq_f16): Remove.
20892         (veorq_f32): Remove.
20893         (veorq_m_s8): Remove.
20894         (veorq_m_s32): Remove.
20895         (veorq_m_s16): Remove.
20896         (veorq_m_u8): Remove.
20897         (veorq_m_u32): Remove.
20898         (veorq_m_u16): Remove.
20899         (veorq_m_f32): Remove.
20900         (veorq_m_f16): Remove.
20901         (veorq_x_s8): Remove.
20902         (veorq_x_s16): Remove.
20903         (veorq_x_s32): Remove.
20904         (veorq_x_u8): Remove.
20905         (veorq_x_u16): Remove.
20906         (veorq_x_u32): Remove.
20907         (veorq_x_f16): Remove.
20908         (veorq_x_f32): Remove.
20909         (__arm_veorq_u8): Remove.
20910         (__arm_veorq_s8): Remove.
20911         (__arm_veorq_u16): Remove.
20912         (__arm_veorq_s16): Remove.
20913         (__arm_veorq_u32): Remove.
20914         (__arm_veorq_s32): Remove.
20915         (__arm_veorq_m_s8): Remove.
20916         (__arm_veorq_m_s32): Remove.
20917         (__arm_veorq_m_s16): Remove.
20918         (__arm_veorq_m_u8): Remove.
20919         (__arm_veorq_m_u32): Remove.
20920         (__arm_veorq_m_u16): Remove.
20921         (__arm_veorq_x_s8): Remove.
20922         (__arm_veorq_x_s16): Remove.
20923         (__arm_veorq_x_s32): Remove.
20924         (__arm_veorq_x_u8): Remove.
20925         (__arm_veorq_x_u16): Remove.
20926         (__arm_veorq_x_u32): Remove.
20927         (__arm_veorq_f16): Remove.
20928         (__arm_veorq_f32): Remove.
20929         (__arm_veorq_m_f32): Remove.
20930         (__arm_veorq_m_f16): Remove.
20931         (__arm_veorq_x_f16): Remove.
20932         (__arm_veorq_x_f32): Remove.
20933         (__arm_veorq): Remove.
20934         (__arm_veorq_m): Remove.
20935         (__arm_veorq_x): Remove.
20937 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20939         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
20940         (MVE_FP_M_BINARY_LOGIC): New.
20941         (MVE_INT_M_N_BINARY_LOGIC): New.
20942         (MVE_INT_N_BINARY_LOGIC): New.
20943         (mve_insn): Add vand, veor, vorr, vbic.
20944         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
20945         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
20946         (mve_vbicq_m_<supf><mode>): Merge into ...
20947         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
20948         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
20949         (mve_vbicq_m_f<mode>): Merge into ...
20950         (@mve_<mve_insn>q_m_f<mode>): ... this.
20951         (mve_vorrq_n_<supf><mode>)
20952         (mve_vbicq_n_<supf><mode>): Merge into ...
20953         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
20954         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
20955         into ...
20956         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
20958 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20960         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
20961         * config/arm/arm-mve-builtins-shapes.h (binary): New.
20963 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
20965         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
20966         New.
20967         (vaddq, vmulq, vsubq): New.
20968         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
20969         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
20970         * config/arm/arm_mve.h (vaddq): Remove.
20971         (vaddq_m): Remove.
20972         (vaddq_x): Remove.
20973         (vaddq_n_u8): Remove.
20974         (vaddq_n_s8): Remove.
20975         (vaddq_n_u16): Remove.
20976         (vaddq_n_s16): Remove.
20977         (vaddq_n_u32): Remove.
20978         (vaddq_n_s32): Remove.
20979         (vaddq_n_f16): Remove.
20980         (vaddq_n_f32): Remove.
20981         (vaddq_m_n_s8): Remove.
20982         (vaddq_m_n_s32): Remove.
20983         (vaddq_m_n_s16): Remove.
20984         (vaddq_m_n_u8): Remove.
20985         (vaddq_m_n_u32): Remove.
20986         (vaddq_m_n_u16): Remove.
20987         (vaddq_m_s8): Remove.
20988         (vaddq_m_s32): Remove.
20989         (vaddq_m_s16): Remove.
20990         (vaddq_m_u8): Remove.
20991         (vaddq_m_u32): Remove.
20992         (vaddq_m_u16): Remove.
20993         (vaddq_m_f32): Remove.
20994         (vaddq_m_f16): Remove.
20995         (vaddq_m_n_f32): Remove.
20996         (vaddq_m_n_f16): Remove.
20997         (vaddq_s8): Remove.
20998         (vaddq_s16): Remove.
20999         (vaddq_s32): Remove.
21000         (vaddq_u8): Remove.
21001         (vaddq_u16): Remove.
21002         (vaddq_u32): Remove.
21003         (vaddq_f16): Remove.
21004         (vaddq_f32): Remove.
21005         (vaddq_x_s8): Remove.
21006         (vaddq_x_s16): Remove.
21007         (vaddq_x_s32): Remove.
21008         (vaddq_x_n_s8): Remove.
21009         (vaddq_x_n_s16): Remove.
21010         (vaddq_x_n_s32): Remove.
21011         (vaddq_x_u8): Remove.
21012         (vaddq_x_u16): Remove.
21013         (vaddq_x_u32): Remove.
21014         (vaddq_x_n_u8): Remove.
21015         (vaddq_x_n_u16): Remove.
21016         (vaddq_x_n_u32): Remove.
21017         (vaddq_x_f16): Remove.
21018         (vaddq_x_f32): Remove.
21019         (vaddq_x_n_f16): Remove.
21020         (vaddq_x_n_f32): Remove.
21021         (__arm_vaddq_n_u8): Remove.
21022         (__arm_vaddq_n_s8): Remove.
21023         (__arm_vaddq_n_u16): Remove.
21024         (__arm_vaddq_n_s16): Remove.
21025         (__arm_vaddq_n_u32): Remove.
21026         (__arm_vaddq_n_s32): Remove.
21027         (__arm_vaddq_m_n_s8): Remove.
21028         (__arm_vaddq_m_n_s32): Remove.
21029         (__arm_vaddq_m_n_s16): Remove.
21030         (__arm_vaddq_m_n_u8): Remove.
21031         (__arm_vaddq_m_n_u32): Remove.
21032         (__arm_vaddq_m_n_u16): Remove.
21033         (__arm_vaddq_m_s8): Remove.
21034         (__arm_vaddq_m_s32): Remove.
21035         (__arm_vaddq_m_s16): Remove.
21036         (__arm_vaddq_m_u8): Remove.
21037         (__arm_vaddq_m_u32): Remove.
21038         (__arm_vaddq_m_u16): Remove.
21039         (__arm_vaddq_s8): Remove.
21040         (__arm_vaddq_s16): Remove.
21041         (__arm_vaddq_s32): Remove.
21042         (__arm_vaddq_u8): Remove.
21043         (__arm_vaddq_u16): Remove.
21044         (__arm_vaddq_u32): Remove.
21045         (__arm_vaddq_x_s8): Remove.
21046         (__arm_vaddq_x_s16): Remove.
21047         (__arm_vaddq_x_s32): Remove.
21048         (__arm_vaddq_x_n_s8): Remove.
21049         (__arm_vaddq_x_n_s16): Remove.
21050         (__arm_vaddq_x_n_s32): Remove.
21051         (__arm_vaddq_x_u8): Remove.
21052         (__arm_vaddq_x_u16): Remove.
21053         (__arm_vaddq_x_u32): Remove.
21054         (__arm_vaddq_x_n_u8): Remove.
21055         (__arm_vaddq_x_n_u16): Remove.
21056         (__arm_vaddq_x_n_u32): Remove.
21057         (__arm_vaddq_n_f16): Remove.
21058         (__arm_vaddq_n_f32): Remove.
21059         (__arm_vaddq_m_f32): Remove.
21060         (__arm_vaddq_m_f16): Remove.
21061         (__arm_vaddq_m_n_f32): Remove.
21062         (__arm_vaddq_m_n_f16): Remove.
21063         (__arm_vaddq_f16): Remove.
21064         (__arm_vaddq_f32): Remove.
21065         (__arm_vaddq_x_f16): Remove.
21066         (__arm_vaddq_x_f32): Remove.
21067         (__arm_vaddq_x_n_f16): Remove.
21068         (__arm_vaddq_x_n_f32): Remove.
21069         (__arm_vaddq): Remove.
21070         (__arm_vaddq_m): Remove.
21071         (__arm_vaddq_x): Remove.
21072         (vmulq): Remove.
21073         (vmulq_m): Remove.
21074         (vmulq_x): Remove.
21075         (vmulq_u8): Remove.
21076         (vmulq_n_u8): Remove.
21077         (vmulq_s8): Remove.
21078         (vmulq_n_s8): Remove.
21079         (vmulq_u16): Remove.
21080         (vmulq_n_u16): Remove.
21081         (vmulq_s16): Remove.
21082         (vmulq_n_s16): Remove.
21083         (vmulq_u32): Remove.
21084         (vmulq_n_u32): Remove.
21085         (vmulq_s32): Remove.
21086         (vmulq_n_s32): Remove.
21087         (vmulq_n_f16): Remove.
21088         (vmulq_f16): Remove.
21089         (vmulq_n_f32): Remove.
21090         (vmulq_f32): Remove.
21091         (vmulq_m_n_s8): Remove.
21092         (vmulq_m_n_s32): Remove.
21093         (vmulq_m_n_s16): Remove.
21094         (vmulq_m_n_u8): Remove.
21095         (vmulq_m_n_u32): Remove.
21096         (vmulq_m_n_u16): Remove.
21097         (vmulq_m_s8): Remove.
21098         (vmulq_m_s32): Remove.
21099         (vmulq_m_s16): Remove.
21100         (vmulq_m_u8): Remove.
21101         (vmulq_m_u32): Remove.
21102         (vmulq_m_u16): Remove.
21103         (vmulq_m_f32): Remove.
21104         (vmulq_m_f16): Remove.
21105         (vmulq_m_n_f32): Remove.
21106         (vmulq_m_n_f16): Remove.
21107         (vmulq_x_s8): Remove.
21108         (vmulq_x_s16): Remove.
21109         (vmulq_x_s32): Remove.
21110         (vmulq_x_n_s8): Remove.
21111         (vmulq_x_n_s16): Remove.
21112         (vmulq_x_n_s32): Remove.
21113         (vmulq_x_u8): Remove.
21114         (vmulq_x_u16): Remove.
21115         (vmulq_x_u32): Remove.
21116         (vmulq_x_n_u8): Remove.
21117         (vmulq_x_n_u16): Remove.
21118         (vmulq_x_n_u32): Remove.
21119         (vmulq_x_f16): Remove.
21120         (vmulq_x_f32): Remove.
21121         (vmulq_x_n_f16): Remove.
21122         (vmulq_x_n_f32): Remove.
21123         (__arm_vmulq_u8): Remove.
21124         (__arm_vmulq_n_u8): Remove.
21125         (__arm_vmulq_s8): Remove.
21126         (__arm_vmulq_n_s8): Remove.
21127         (__arm_vmulq_u16): Remove.
21128         (__arm_vmulq_n_u16): Remove.
21129         (__arm_vmulq_s16): Remove.
21130         (__arm_vmulq_n_s16): Remove.
21131         (__arm_vmulq_u32): Remove.
21132         (__arm_vmulq_n_u32): Remove.
21133         (__arm_vmulq_s32): Remove.
21134         (__arm_vmulq_n_s32): Remove.
21135         (__arm_vmulq_m_n_s8): Remove.
21136         (__arm_vmulq_m_n_s32): Remove.
21137         (__arm_vmulq_m_n_s16): Remove.
21138         (__arm_vmulq_m_n_u8): Remove.
21139         (__arm_vmulq_m_n_u32): Remove.
21140         (__arm_vmulq_m_n_u16): Remove.
21141         (__arm_vmulq_m_s8): Remove.
21142         (__arm_vmulq_m_s32): Remove.
21143         (__arm_vmulq_m_s16): Remove.
21144         (__arm_vmulq_m_u8): Remove.
21145         (__arm_vmulq_m_u32): Remove.
21146         (__arm_vmulq_m_u16): Remove.
21147         (__arm_vmulq_x_s8): Remove.
21148         (__arm_vmulq_x_s16): Remove.
21149         (__arm_vmulq_x_s32): Remove.
21150         (__arm_vmulq_x_n_s8): Remove.
21151         (__arm_vmulq_x_n_s16): Remove.
21152         (__arm_vmulq_x_n_s32): Remove.
21153         (__arm_vmulq_x_u8): Remove.
21154         (__arm_vmulq_x_u16): Remove.
21155         (__arm_vmulq_x_u32): Remove.
21156         (__arm_vmulq_x_n_u8): Remove.
21157         (__arm_vmulq_x_n_u16): Remove.
21158         (__arm_vmulq_x_n_u32): Remove.
21159         (__arm_vmulq_n_f16): Remove.
21160         (__arm_vmulq_f16): Remove.
21161         (__arm_vmulq_n_f32): Remove.
21162         (__arm_vmulq_f32): Remove.
21163         (__arm_vmulq_m_f32): Remove.
21164         (__arm_vmulq_m_f16): Remove.
21165         (__arm_vmulq_m_n_f32): Remove.
21166         (__arm_vmulq_m_n_f16): Remove.
21167         (__arm_vmulq_x_f16): Remove.
21168         (__arm_vmulq_x_f32): Remove.
21169         (__arm_vmulq_x_n_f16): Remove.
21170         (__arm_vmulq_x_n_f32): Remove.
21171         (__arm_vmulq): Remove.
21172         (__arm_vmulq_m): Remove.
21173         (__arm_vmulq_x): Remove.
21174         (vsubq): Remove.
21175         (vsubq_m): Remove.
21176         (vsubq_x): Remove.
21177         (vsubq_n_f16): Remove.
21178         (vsubq_n_f32): Remove.
21179         (vsubq_u8): Remove.
21180         (vsubq_n_u8): Remove.
21181         (vsubq_s8): Remove.
21182         (vsubq_n_s8): Remove.
21183         (vsubq_u16): Remove.
21184         (vsubq_n_u16): Remove.
21185         (vsubq_s16): Remove.
21186         (vsubq_n_s16): Remove.
21187         (vsubq_u32): Remove.
21188         (vsubq_n_u32): Remove.
21189         (vsubq_s32): Remove.
21190         (vsubq_n_s32): Remove.
21191         (vsubq_f16): Remove.
21192         (vsubq_f32): Remove.
21193         (vsubq_m_s8): Remove.
21194         (vsubq_m_u8): Remove.
21195         (vsubq_m_s16): Remove.
21196         (vsubq_m_u16): Remove.
21197         (vsubq_m_s32): Remove.
21198         (vsubq_m_u32): Remove.
21199         (vsubq_m_n_s8): Remove.
21200         (vsubq_m_n_s32): Remove.
21201         (vsubq_m_n_s16): Remove.
21202         (vsubq_m_n_u8): Remove.
21203         (vsubq_m_n_u32): Remove.
21204         (vsubq_m_n_u16): Remove.
21205         (vsubq_m_f32): Remove.
21206         (vsubq_m_f16): Remove.
21207         (vsubq_m_n_f32): Remove.
21208         (vsubq_m_n_f16): Remove.
21209         (vsubq_x_s8): Remove.
21210         (vsubq_x_s16): Remove.
21211         (vsubq_x_s32): Remove.
21212         (vsubq_x_n_s8): Remove.
21213         (vsubq_x_n_s16): Remove.
21214         (vsubq_x_n_s32): Remove.
21215         (vsubq_x_u8): Remove.
21216         (vsubq_x_u16): Remove.
21217         (vsubq_x_u32): Remove.
21218         (vsubq_x_n_u8): Remove.
21219         (vsubq_x_n_u16): Remove.
21220         (vsubq_x_n_u32): Remove.
21221         (vsubq_x_f16): Remove.
21222         (vsubq_x_f32): Remove.
21223         (vsubq_x_n_f16): Remove.
21224         (vsubq_x_n_f32): Remove.
21225         (__arm_vsubq_u8): Remove.
21226         (__arm_vsubq_n_u8): Remove.
21227         (__arm_vsubq_s8): Remove.
21228         (__arm_vsubq_n_s8): Remove.
21229         (__arm_vsubq_u16): Remove.
21230         (__arm_vsubq_n_u16): Remove.
21231         (__arm_vsubq_s16): Remove.
21232         (__arm_vsubq_n_s16): Remove.
21233         (__arm_vsubq_u32): Remove.
21234         (__arm_vsubq_n_u32): Remove.
21235         (__arm_vsubq_s32): Remove.
21236         (__arm_vsubq_n_s32): Remove.
21237         (__arm_vsubq_m_s8): Remove.
21238         (__arm_vsubq_m_u8): Remove.
21239         (__arm_vsubq_m_s16): Remove.
21240         (__arm_vsubq_m_u16): Remove.
21241         (__arm_vsubq_m_s32): Remove.
21242         (__arm_vsubq_m_u32): Remove.
21243         (__arm_vsubq_m_n_s8): Remove.
21244         (__arm_vsubq_m_n_s32): Remove.
21245         (__arm_vsubq_m_n_s16): Remove.
21246         (__arm_vsubq_m_n_u8): Remove.
21247         (__arm_vsubq_m_n_u32): Remove.
21248         (__arm_vsubq_m_n_u16): Remove.
21249         (__arm_vsubq_x_s8): Remove.
21250         (__arm_vsubq_x_s16): Remove.
21251         (__arm_vsubq_x_s32): Remove.
21252         (__arm_vsubq_x_n_s8): Remove.
21253         (__arm_vsubq_x_n_s16): Remove.
21254         (__arm_vsubq_x_n_s32): Remove.
21255         (__arm_vsubq_x_u8): Remove.
21256         (__arm_vsubq_x_u16): Remove.
21257         (__arm_vsubq_x_u32): Remove.
21258         (__arm_vsubq_x_n_u8): Remove.
21259         (__arm_vsubq_x_n_u16): Remove.
21260         (__arm_vsubq_x_n_u32): Remove.
21261         (__arm_vsubq_n_f16): Remove.
21262         (__arm_vsubq_n_f32): Remove.
21263         (__arm_vsubq_f16): Remove.
21264         (__arm_vsubq_f32): Remove.
21265         (__arm_vsubq_m_f32): Remove.
21266         (__arm_vsubq_m_f16): Remove.
21267         (__arm_vsubq_m_n_f32): Remove.
21268         (__arm_vsubq_m_n_f16): Remove.
21269         (__arm_vsubq_x_f16): Remove.
21270         (__arm_vsubq_x_f32): Remove.
21271         (__arm_vsubq_x_n_f16): Remove.
21272         (__arm_vsubq_x_n_f32): Remove.
21273         (__arm_vsubq): Remove.
21274         (__arm_vsubq_m): Remove.
21275         (__arm_vsubq_x): Remove.
21276         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
21277         Remove.
21278         (vmulq_u, vmulq_s, vmulq_f): Remove.
21279         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
21280         (mve_vmulq_<supf><mode>): Remove.
21282 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
21284         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
21285         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
21286         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
21287         iterators.
21288         * config/arm/mve.md
21289         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
21290         Factorize into ...
21291         (@mve_<mve_insn>q_n_f<mode>): ... this.
21292         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
21293         (mve_vsubq_n_<supf><mode>): Factorize into ...
21294         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
21295         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
21296         into ...
21297         (mve_<mve_addsubmul>q<mode>): ... this.
21298         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
21299         Factorize into ...
21300         (mve_<mve_addsubmul>q_f<mode>): ... this.
21301         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
21302         (mve_vsubq_m_<supf><mode>): Factorize into ...
21303         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
21304         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
21305         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
21306         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
21307         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
21308         Factorize into ...
21309         (@mve_<mve_insn>q_m_f<mode>): ... this.
21310         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
21311         (mve_vsubq_m_n_f<mode>): Factorize into ...
21312         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
21314 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
21316         * config/arm/arm-mve-builtins-functions.h (class
21317         unspec_based_mve_function_base): New.
21318         (class unspec_based_mve_function_exact_insn): New.
21320 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
21322         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
21323         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
21325 2023-05-03  Murray Steele  <murray.steele@arm.com>
21326             Christophe Lyon  <christophe.lyon@arm.com>
21328         * config/arm/arm-mve-builtins-base.cc (class
21329         vuninitializedq_impl): New.
21330         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
21331         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
21332         declaration.
21333         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
21334         * config/arm/arm-mve-builtins-shapes.h (inherent): New
21335         declaration.
21336         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
21337         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
21338         (__arm_vuninitializedq_u8): Remove.
21339         (__arm_vuninitializedq_u16): Remove.
21340         (__arm_vuninitializedq_u32): Remove.
21341         (__arm_vuninitializedq_u64): Remove.
21342         (__arm_vuninitializedq_s8): Remove.
21343         (__arm_vuninitializedq_s16): Remove.
21344         (__arm_vuninitializedq_s32): Remove.
21345         (__arm_vuninitializedq_s64): Remove.
21346         (__arm_vuninitializedq_f16): Remove.
21347         (__arm_vuninitializedq_f32): Remove.
21349 2023-05-03  Murray Steele  <murray.steele@arm.com>
21350             Christophe Lyon  <christophe.lyon@arm.com>
21352         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
21353         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
21354         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
21355         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
21356         (parse_type): Likewise.
21357         (parse_signature): Likewise.
21358         (build_one): Likewise.
21359         (build_all): Likewise.
21360         (overloaded_base): New struct.
21361         (unary_convert_def): Likewise.
21362         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
21363         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
21364         macro.
21365         (TYPES_reinterpret_unsigned1): Likewise.
21366         (TYPES_reinterpret_integer): Likewise.
21367         (TYPES_reinterpret_integer1): Likewise.
21368         (TYPES_reinterpret_float1): Likewise.
21369         (TYPES_reinterpret_float): Likewise.
21370         (reinterpret_integer): New.
21371         (reinterpret_float): New.
21372         (handle_arm_mve_h): Register builtins.
21373         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
21374         (vreinterpretq_s32): Likewise.
21375         (vreinterpretq_s64): Likewise.
21376         (vreinterpretq_s8): Likewise.
21377         (vreinterpretq_u16): Likewise.
21378         (vreinterpretq_u32): Likewise.
21379         (vreinterpretq_u64): Likewise.
21380         (vreinterpretq_u8): Likewise.
21381         (vreinterpretq_f16): Likewise.
21382         (vreinterpretq_f32): Likewise.
21383         (vreinterpretq_s16_s32): Likewise.
21384         (vreinterpretq_s16_s64): Likewise.
21385         (vreinterpretq_s16_s8): Likewise.
21386         (vreinterpretq_s16_u16): Likewise.
21387         (vreinterpretq_s16_u32): Likewise.
21388         (vreinterpretq_s16_u64): Likewise.
21389         (vreinterpretq_s16_u8): Likewise.
21390         (vreinterpretq_s32_s16): Likewise.
21391         (vreinterpretq_s32_s64): Likewise.
21392         (vreinterpretq_s32_s8): Likewise.
21393         (vreinterpretq_s32_u16): Likewise.
21394         (vreinterpretq_s32_u32): Likewise.
21395         (vreinterpretq_s32_u64): Likewise.
21396         (vreinterpretq_s32_u8): Likewise.
21397         (vreinterpretq_s64_s16): Likewise.
21398         (vreinterpretq_s64_s32): Likewise.
21399         (vreinterpretq_s64_s8): Likewise.
21400         (vreinterpretq_s64_u16): Likewise.
21401         (vreinterpretq_s64_u32): Likewise.
21402         (vreinterpretq_s64_u64): Likewise.
21403         (vreinterpretq_s64_u8): Likewise.
21404         (vreinterpretq_s8_s16): Likewise.
21405         (vreinterpretq_s8_s32): Likewise.
21406         (vreinterpretq_s8_s64): Likewise.
21407         (vreinterpretq_s8_u16): Likewise.
21408         (vreinterpretq_s8_u32): Likewise.
21409         (vreinterpretq_s8_u64): Likewise.
21410         (vreinterpretq_s8_u8): Likewise.
21411         (vreinterpretq_u16_s16): Likewise.
21412         (vreinterpretq_u16_s32): Likewise.
21413         (vreinterpretq_u16_s64): Likewise.
21414         (vreinterpretq_u16_s8): Likewise.
21415         (vreinterpretq_u16_u32): Likewise.
21416         (vreinterpretq_u16_u64): Likewise.
21417         (vreinterpretq_u16_u8): Likewise.
21418         (vreinterpretq_u32_s16): Likewise.
21419         (vreinterpretq_u32_s32): Likewise.
21420         (vreinterpretq_u32_s64): Likewise.
21421         (vreinterpretq_u32_s8): Likewise.
21422         (vreinterpretq_u32_u16): Likewise.
21423         (vreinterpretq_u32_u64): Likewise.
21424         (vreinterpretq_u32_u8): Likewise.
21425         (vreinterpretq_u64_s16): Likewise.
21426         (vreinterpretq_u64_s32): Likewise.
21427         (vreinterpretq_u64_s64): Likewise.
21428         (vreinterpretq_u64_s8): Likewise.
21429         (vreinterpretq_u64_u16): Likewise.
21430         (vreinterpretq_u64_u32): Likewise.
21431         (vreinterpretq_u64_u8): Likewise.
21432         (vreinterpretq_u8_s16): Likewise.
21433         (vreinterpretq_u8_s32): Likewise.
21434         (vreinterpretq_u8_s64): Likewise.
21435         (vreinterpretq_u8_s8): Likewise.
21436         (vreinterpretq_u8_u16): Likewise.
21437         (vreinterpretq_u8_u32): Likewise.
21438         (vreinterpretq_u8_u64): Likewise.
21439         (vreinterpretq_s32_f16): Likewise.
21440         (vreinterpretq_s32_f32): Likewise.
21441         (vreinterpretq_u16_f16): Likewise.
21442         (vreinterpretq_u16_f32): Likewise.
21443         (vreinterpretq_u32_f16): Likewise.
21444         (vreinterpretq_u32_f32): Likewise.
21445         (vreinterpretq_u64_f16): Likewise.
21446         (vreinterpretq_u64_f32): Likewise.
21447         (vreinterpretq_u8_f16): Likewise.
21448         (vreinterpretq_u8_f32): Likewise.
21449         (vreinterpretq_f16_f32): Likewise.
21450         (vreinterpretq_f16_s16): Likewise.
21451         (vreinterpretq_f16_s32): Likewise.
21452         (vreinterpretq_f16_s64): Likewise.
21453         (vreinterpretq_f16_s8): Likewise.
21454         (vreinterpretq_f16_u16): Likewise.
21455         (vreinterpretq_f16_u32): Likewise.
21456         (vreinterpretq_f16_u64): Likewise.
21457         (vreinterpretq_f16_u8): Likewise.
21458         (vreinterpretq_f32_f16): Likewise.
21459         (vreinterpretq_f32_s16): Likewise.
21460         (vreinterpretq_f32_s32): Likewise.
21461         (vreinterpretq_f32_s64): Likewise.
21462         (vreinterpretq_f32_s8): Likewise.
21463         (vreinterpretq_f32_u16): Likewise.
21464         (vreinterpretq_f32_u32): Likewise.
21465         (vreinterpretq_f32_u64): Likewise.
21466         (vreinterpretq_f32_u8): Likewise.
21467         (vreinterpretq_s16_f16): Likewise.
21468         (vreinterpretq_s16_f32): Likewise.
21469         (vreinterpretq_s64_f16): Likewise.
21470         (vreinterpretq_s64_f32): Likewise.
21471         (vreinterpretq_s8_f16): Likewise.
21472         (vreinterpretq_s8_f32): Likewise.
21473         (__arm_vreinterpretq_f16): Likewise.
21474         (__arm_vreinterpretq_f32): Likewise.
21475         (__arm_vreinterpretq_s16): Likewise.
21476         (__arm_vreinterpretq_s32): Likewise.
21477         (__arm_vreinterpretq_s64): Likewise.
21478         (__arm_vreinterpretq_s8): Likewise.
21479         (__arm_vreinterpretq_u16): Likewise.
21480         (__arm_vreinterpretq_u32): Likewise.
21481         (__arm_vreinterpretq_u64): Likewise.
21482         (__arm_vreinterpretq_u8): Likewise.
21483         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
21484         (__arm_vreinterpretq_s16_s64): Likewise.
21485         (__arm_vreinterpretq_s16_s8): Likewise.
21486         (__arm_vreinterpretq_s16_u16): Likewise.
21487         (__arm_vreinterpretq_s16_u32): Likewise.
21488         (__arm_vreinterpretq_s16_u64): Likewise.
21489         (__arm_vreinterpretq_s16_u8): Likewise.
21490         (__arm_vreinterpretq_s32_s16): Likewise.
21491         (__arm_vreinterpretq_s32_s64): Likewise.
21492         (__arm_vreinterpretq_s32_s8): Likewise.
21493         (__arm_vreinterpretq_s32_u16): Likewise.
21494         (__arm_vreinterpretq_s32_u32): Likewise.
21495         (__arm_vreinterpretq_s32_u64): Likewise.
21496         (__arm_vreinterpretq_s32_u8): Likewise.
21497         (__arm_vreinterpretq_s64_s16): Likewise.
21498         (__arm_vreinterpretq_s64_s32): Likewise.
21499         (__arm_vreinterpretq_s64_s8): Likewise.
21500         (__arm_vreinterpretq_s64_u16): Likewise.
21501         (__arm_vreinterpretq_s64_u32): Likewise.
21502         (__arm_vreinterpretq_s64_u64): Likewise.
21503         (__arm_vreinterpretq_s64_u8): Likewise.
21504         (__arm_vreinterpretq_s8_s16): Likewise.
21505         (__arm_vreinterpretq_s8_s32): Likewise.
21506         (__arm_vreinterpretq_s8_s64): Likewise.
21507         (__arm_vreinterpretq_s8_u16): Likewise.
21508         (__arm_vreinterpretq_s8_u32): Likewise.
21509         (__arm_vreinterpretq_s8_u64): Likewise.
21510         (__arm_vreinterpretq_s8_u8): Likewise.
21511         (__arm_vreinterpretq_u16_s16): Likewise.
21512         (__arm_vreinterpretq_u16_s32): Likewise.
21513         (__arm_vreinterpretq_u16_s64): Likewise.
21514         (__arm_vreinterpretq_u16_s8): Likewise.
21515         (__arm_vreinterpretq_u16_u32): Likewise.
21516         (__arm_vreinterpretq_u16_u64): Likewise.
21517         (__arm_vreinterpretq_u16_u8): Likewise.
21518         (__arm_vreinterpretq_u32_s16): Likewise.
21519         (__arm_vreinterpretq_u32_s32): Likewise.
21520         (__arm_vreinterpretq_u32_s64): Likewise.
21521         (__arm_vreinterpretq_u32_s8): Likewise.
21522         (__arm_vreinterpretq_u32_u16): Likewise.
21523         (__arm_vreinterpretq_u32_u64): Likewise.
21524         (__arm_vreinterpretq_u32_u8): Likewise.
21525         (__arm_vreinterpretq_u64_s16): Likewise.
21526         (__arm_vreinterpretq_u64_s32): Likewise.
21527         (__arm_vreinterpretq_u64_s64): Likewise.
21528         (__arm_vreinterpretq_u64_s8): Likewise.
21529         (__arm_vreinterpretq_u64_u16): Likewise.
21530         (__arm_vreinterpretq_u64_u32): Likewise.
21531         (__arm_vreinterpretq_u64_u8): Likewise.
21532         (__arm_vreinterpretq_u8_s16): Likewise.
21533         (__arm_vreinterpretq_u8_s32): Likewise.
21534         (__arm_vreinterpretq_u8_s64): Likewise.
21535         (__arm_vreinterpretq_u8_s8): Likewise.
21536         (__arm_vreinterpretq_u8_u16): Likewise.
21537         (__arm_vreinterpretq_u8_u32): Likewise.
21538         (__arm_vreinterpretq_u8_u64): Likewise.
21539         (__arm_vreinterpretq_s32_f16): Likewise.
21540         (__arm_vreinterpretq_s32_f32): Likewise.
21541         (__arm_vreinterpretq_s16_f16): Likewise.
21542         (__arm_vreinterpretq_s16_f32): Likewise.
21543         (__arm_vreinterpretq_s64_f16): Likewise.
21544         (__arm_vreinterpretq_s64_f32): Likewise.
21545         (__arm_vreinterpretq_s8_f16): Likewise.
21546         (__arm_vreinterpretq_s8_f32): Likewise.
21547         (__arm_vreinterpretq_u16_f16): Likewise.
21548         (__arm_vreinterpretq_u16_f32): Likewise.
21549         (__arm_vreinterpretq_u32_f16): Likewise.
21550         (__arm_vreinterpretq_u32_f32): Likewise.
21551         (__arm_vreinterpretq_u64_f16): Likewise.
21552         (__arm_vreinterpretq_u64_f32): Likewise.
21553         (__arm_vreinterpretq_u8_f16): Likewise.
21554         (__arm_vreinterpretq_u8_f32): Likewise.
21555         (__arm_vreinterpretq_f16_f32): Likewise.
21556         (__arm_vreinterpretq_f16_s16): Likewise.
21557         (__arm_vreinterpretq_f16_s32): Likewise.
21558         (__arm_vreinterpretq_f16_s64): Likewise.
21559         (__arm_vreinterpretq_f16_s8): Likewise.
21560         (__arm_vreinterpretq_f16_u16): Likewise.
21561         (__arm_vreinterpretq_f16_u32): Likewise.
21562         (__arm_vreinterpretq_f16_u64): Likewise.
21563         (__arm_vreinterpretq_f16_u8): Likewise.
21564         (__arm_vreinterpretq_f32_f16): Likewise.
21565         (__arm_vreinterpretq_f32_s16): Likewise.
21566         (__arm_vreinterpretq_f32_s32): Likewise.
21567         (__arm_vreinterpretq_f32_s64): Likewise.
21568         (__arm_vreinterpretq_f32_s8): Likewise.
21569         (__arm_vreinterpretq_f32_u16): Likewise.
21570         (__arm_vreinterpretq_f32_u32): Likewise.
21571         (__arm_vreinterpretq_f32_u64): Likewise.
21572         (__arm_vreinterpretq_f32_u8): Likewise.
21573         (__arm_vreinterpretq_s16): Likewise.
21574         (__arm_vreinterpretq_s32): Likewise.
21575         (__arm_vreinterpretq_s64): Likewise.
21576         (__arm_vreinterpretq_s8): Likewise.
21577         (__arm_vreinterpretq_u16): Likewise.
21578         (__arm_vreinterpretq_u32): Likewise.
21579         (__arm_vreinterpretq_u64): Likewise.
21580         (__arm_vreinterpretq_u8): Likewise.
21581         (__arm_vreinterpretq_f16): Likewise.
21582         (__arm_vreinterpretq_f32): Likewise.
21583         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
21584         * config/arm/unspecs.md: (REINTERPRET): New unspec.
21586 2023-05-03  Murray Steele  <murray.steele@arm.com>
21587             Christophe Lyon  <christophe.lyon@arm.com>
21588             Christophe Lyon   <christophe.lyon@arm.com
21590         * config.gcc: Add arm-mve-builtins-base.o and
21591         arm-mve-builtins-shapes.o to extra_objs.
21592         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
21593         numberspace.
21594         (arm_expand_builtin): Likewise
21595         (arm_check_builtin_call): Likewise
21596         (arm_describe_resolver): Likewise.
21597         * config/arm/arm-builtins.h (enum resolver_ident): Add
21598         arm_mve_resolver.
21599         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
21600         (arm_resolve_overloaded_builtin): Handle MVE builtins.
21601         (arm_register_target_pragmas): Register arm_check_builtin_call.
21602         * config/arm/arm-mve-builtins.cc (class registered_function): New
21603         class.
21604         (struct registered_function_hasher): New struct.
21605         (pred_suffixes): New table.
21606         (mode_suffixes): New table.
21607         (type_suffix_info): New table.
21608         (TYPES_float16): New.
21609         (TYPES_all_float): New.
21610         (TYPES_integer_8): New.
21611         (TYPES_integer_8_16): New.
21612         (TYPES_integer_16_32): New.
21613         (TYPES_integer_32): New.
21614         (TYPES_signed_16_32): New.
21615         (TYPES_signed_32): New.
21616         (TYPES_all_signed): New.
21617         (TYPES_all_unsigned): New.
21618         (TYPES_all_integer): New.
21619         (TYPES_all_integer_with_64): New.
21620         (DEF_VECTOR_TYPE): New.
21621         (DEF_DOUBLE_TYPE): New.
21622         (DEF_MVE_TYPES_ARRAY): New.
21623         (all_integer): New.
21624         (all_integer_with_64): New.
21625         (float16): New.
21626         (all_float): New.
21627         (all_signed): New.
21628         (all_unsigned): New.
21629         (integer_8): New.
21630         (integer_8_16): New.
21631         (integer_16_32): New.
21632         (integer_32): New.
21633         (signed_16_32): New.
21634         (signed_32): New.
21635         (register_vector_type): Use void_type_node for mve.fp-only types when
21636         mve.fp is not enabled.
21637         (register_builtin_tuple_types): Likewise.
21638         (handle_arm_mve_h): New function..
21639         (matches_type_p): Likewise..
21640         (report_out_of_range): Likewise.
21641         (report_not_enum): Likewise.
21642         (report_missing_float): Likewise.
21643         (report_non_ice): Likewise.
21644         (check_requires_float): Likewise.
21645         (function_instance::hash): Likewise
21646         (function_instance::call_properties): Likewise.
21647         (function_instance::reads_global_state_p): Likewise.
21648         (function_instance::modifies_global_state_p): Likewise.
21649         (function_instance::could_trap_p): Likewise.
21650         (function_instance::has_inactive_argument): Likewise.
21651         (registered_function_hasher::hash): Likewise.
21652         (registered_function_hasher::equal): Likewise.
21653         (function_builder::function_builder): Likewise.
21654         (function_builder::~function_builder): Likewise.
21655         (function_builder::append_name): Likewise.
21656         (function_builder::finish_name): Likewise.
21657         (function_builder::get_name): Likewise.
21658         (add_attribute): Likewise.
21659         (function_builder::get_attributes): Likewise.
21660         (function_builder::add_function): Likewise.
21661         (function_builder::add_unique_function): Likewise.
21662         (function_builder::add_overloaded_function): Likewise.
21663         (function_builder::add_overloaded_functions): Likewise.
21664         (function_builder::register_function_group): Likewise.
21665         (function_call_info::function_call_info): Likewise.
21666         (function_resolver::function_resolver): Likewise.
21667         (function_resolver::get_vector_type): Likewise.
21668         (function_resolver::get_scalar_type_name): Likewise.
21669         (function_resolver::get_argument_type): Likewise.
21670         (function_resolver::scalar_argument_p): Likewise.
21671         (function_resolver::report_no_such_form): Likewise.
21672         (function_resolver::lookup_form): Likewise.
21673         (function_resolver::resolve_to): Likewise.
21674         (function_resolver::infer_vector_or_tuple_type): Likewise.
21675         (function_resolver::infer_vector_type): Likewise.
21676         (function_resolver::require_vector_or_scalar_type): Likewise.
21677         (function_resolver::require_vector_type): Likewise.
21678         (function_resolver::require_matching_vector_type): Likewise.
21679         (function_resolver::require_derived_vector_type): Likewise.
21680         (function_resolver::require_derived_scalar_type): Likewise.
21681         (function_resolver::require_integer_immediate): Likewise.
21682         (function_resolver::require_scalar_type): Likewise.
21683         (function_resolver::check_num_arguments): Likewise.
21684         (function_resolver::check_gp_argument): Likewise.
21685         (function_resolver::finish_opt_n_resolution): Likewise.
21686         (function_resolver::resolve_unary): Likewise.
21687         (function_resolver::resolve_unary_n): Likewise.
21688         (function_resolver::resolve_uniform): Likewise.
21689         (function_resolver::resolve_uniform_opt_n): Likewise.
21690         (function_resolver::resolve): Likewise.
21691         (function_checker::function_checker): Likewise.
21692         (function_checker::argument_exists_p): Likewise.
21693         (function_checker::require_immediate): Likewise.
21694         (function_checker::require_immediate_enum): Likewise.
21695         (function_checker::require_immediate_range): Likewise.
21696         (function_checker::check): Likewise.
21697         (gimple_folder::gimple_folder): Likewise.
21698         (gimple_folder::fold): Likewise.
21699         (function_expander::function_expander): Likewise.
21700         (function_expander::direct_optab_handler): Likewise.
21701         (function_expander::get_fallback_value): Likewise.
21702         (function_expander::get_reg_target): Likewise.
21703         (function_expander::add_output_operand): Likewise.
21704         (function_expander::add_input_operand): Likewise.
21705         (function_expander::add_integer_operand): Likewise.
21706         (function_expander::generate_insn): Likewise.
21707         (function_expander::use_exact_insn): Likewise.
21708         (function_expander::use_unpred_insn): Likewise.
21709         (function_expander::use_pred_x_insn): Likewise.
21710         (function_expander::use_cond_insn): Likewise.
21711         (function_expander::map_to_rtx_codes): Likewise.
21712         (function_expander::expand): Likewise.
21713         (resolve_overloaded_builtin): Likewise.
21714         (check_builtin_call): Likewise.
21715         (gimple_fold_builtin): Likewise.
21716         (expand_builtin): Likewise.
21717         (gt_ggc_mx): Likewise.
21718         (gt_pch_nx): Likewise.
21719         (gt_pch_nx): Likewise.
21720         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
21721         (s16): Likewise.
21722         (s32): Likewise.
21723         (s64): Likewise.
21724         (u8): Likewise.
21725         (u16): Likewise.
21726         (u32): Likewise.
21727         (u64): Likewise.
21728         (f16): Likewise.
21729         (f32): Likewise.
21730         (n): New mode.
21731         (offset): New mode.
21732         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
21733         (CP_READ_FPCR): Likewise.
21734         (CP_RAISE_FP_EXCEPTIONS): Likewise.
21735         (CP_READ_MEMORY): Likewise.
21736         (CP_WRITE_MEMORY): Likewise.
21737         (enum units_index): New enum.
21738         (enum predication_index): New.
21739         (enum type_class_index): New.
21740         (enum mode_suffix_index): New enum.
21741         (enum type_suffix_index): New.
21742         (struct mode_suffix_info): New struct.
21743         (struct type_suffix_info): New.
21744         (struct function_group_info): Likewise.
21745         (class function_instance): Likewise.
21746         (class registered_function): Likewise.
21747         (class function_builder): Likewise.
21748         (class function_call_info): Likewise.
21749         (class function_resolver): Likewise.
21750         (class function_checker): Likewise.
21751         (class gimple_folder): Likewise.
21752         (class function_expander): Likewise.
21753         (get_mve_pred16_t): Likewise.
21754         (find_mode_suffix): New function.
21755         (class function_base): Likewise.
21756         (class function_shape): Likewise.
21757         (function_instance::operator==): New function.
21758         (function_instance::operator!=): Likewise.
21759         (function_instance::vectors_per_tuple): Likewise.
21760         (function_instance::mode_suffix): Likewise.
21761         (function_instance::type_suffix): Likewise.
21762         (function_instance::scalar_type): Likewise.
21763         (function_instance::vector_type): Likewise.
21764         (function_instance::tuple_type): Likewise.
21765         (function_instance::vector_mode): Likewise.
21766         (function_call_info::function_returns_void_p): Likewise.
21767         (function_base::call_properties): Likewise.
21768         * config/arm/arm-protos.h (enum arm_builtin_class): Add
21769         ARM_BUILTIN_MVE.
21770         (handle_arm_mve_h): New.
21771         (resolve_overloaded_builtin): New.
21772         (check_builtin_call): New.
21773         (gimple_fold_builtin): New.
21774         (expand_builtin): New.
21775         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
21776         arm_gimple_fold_builtin.
21777         (arm_gimple_fold_builtin): New function.
21778         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
21779         * config/arm/predicates.md (arm_any_register_operand): New predicate.
21780         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
21781         (arm-mve-builtins-shapes.o): New target.
21782         (arm-mve-builtins-base.o): New target.
21783         * config/arm/arm-mve-builtins-base.cc: New file.
21784         * config/arm/arm-mve-builtins-base.def: New file.
21785         * config/arm/arm-mve-builtins-base.h: New file.
21786         * config/arm/arm-mve-builtins-functions.h: New file.
21787         * config/arm/arm-mve-builtins-shapes.cc: New file.
21788         * config/arm/arm-mve-builtins-shapes.h: New file.
21790 2023-05-03  Murray Steele  <murray.steele@arm.com>
21791             Christophe Lyon  <christophe.lyon@arm.com>
21792             Christophe Lyon   <christophe.lyon@arm.com>
21794         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
21795         New function.
21796         (arm_init_builtin): Use arm_general_add_builtin_function instead
21797         of arm_add_builtin_function.
21798         (arm_init_acle_builtins): Likewise.
21799         (arm_init_mve_builtins): Likewise.
21800         (arm_init_crypto_builtins): Likewise.
21801         (arm_init_builtins): Likewise.
21802         (arm_general_builtin_decl): New function.
21803         (arm_builtin_decl): Defer to numberspace-specialized functions.
21804         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
21805         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
21806         (arm_general_expand_builtin_1): ... specialize for general builtins.
21807         (arm_expand_acle_builtin): Use arm_general_expand_builtin
21808         instead of arm_expand_builtin.
21809         (arm_expand_mve_builtin): Likewise.
21810         (arm_expand_neon_builtin): Likewise.
21811         (arm_expand_vfp_builtin): Likewise.
21812         (arm_general_expand_builtin): New function.
21813         (arm_expand_builtin): Specialize for general builtins.
21814         (arm_general_check_builtin_call): New function.
21815         (arm_check_builtin_call): Specialize for general builtins.
21816         (arm_describe_resolver): Validate numberspace.
21817         (arm_cde_end_args): Likewise.
21818         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
21819         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
21821 2023-05-03  Martin Liska  <mliska@suse.cz>
21823         PR target/109713
21824         * config/riscv/sync.md: Add gcc_unreachable to a switch.
21826 2023-05-03  Richard Biener  <rguenther@suse.de>
21828         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
21829         (patch_loop_exit): Likewise.
21830         (connect_loops): Likewise.
21831         (split_loop): Likewise.
21832         (control_dep_semi_invariant_p): Likewise.
21833         (do_split_loop_on_cond): Likewise.
21834         (split_loop_on_cond): Likewise.
21835         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
21836         Likewise.
21837         (simplify_loop_version): Likewise.
21838         (evaluate_bbs): Likewise.
21839         (find_loop_guard): Likewise.
21840         (clean_up_after_unswitching): Likewise.
21841         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
21842         Likewise.
21843         (optimize_spaceship): Take a gcond * argument, avoid
21844         last_stmt.
21845         (math_opts_dom_walker::after_dom_children): Adjust call to
21846         optimize_spaceship.
21847         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
21848         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
21849         Likewise.
21851 2023-05-03  Andreas Schwab  <schwab@suse.de>
21853         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
21855 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21857         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
21858         New function.
21859         (class vlseg): New class.
21860         (class vsseg): Ditto.
21861         (class vlsseg): Ditto.
21862         (class vssseg): Ditto.
21863         (class seg_indexed_load): Ditto.
21864         (class seg_indexed_store): Ditto.
21865         (class vlsegff): Ditto.
21866         (BASE): Ditto.
21867         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21868         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
21869         Ditto.
21870         (vsseg): Ditto.
21871         (vlsseg): Ditto.
21872         (vssseg): Ditto.
21873         (vluxseg): Ditto.
21874         (vloxseg): Ditto.
21875         (vsuxseg): Ditto.
21876         (vsoxseg): Ditto.
21877         (vlsegff): Ditto.
21878         * config/riscv/riscv-vector-builtins-shapes.cc (struct
21879         seg_loadstore_def): Ditto.
21880         (struct seg_indexed_loadstore_def): Ditto.
21881         (struct seg_fault_load_def): Ditto.
21882         (SHAPE): Ditto.
21883         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21884         * config/riscv/riscv-vector-builtins.cc
21885         (function_builder::append_nf): New function.
21886         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
21887         Change ptr from double into float.
21888         (vfloat32m1x3_t): Ditto.
21889         (vfloat32m1x4_t): Ditto.
21890         (vfloat32m1x5_t): Ditto.
21891         (vfloat32m1x6_t): Ditto.
21892         (vfloat32m1x7_t): Ditto.
21893         (vfloat32m1x8_t): Ditto.
21894         (vfloat32m2x2_t): Ditto.
21895         (vfloat32m2x3_t): Ditto.
21896         (vfloat32m2x4_t): Ditto.
21897         (vfloat32m4x2_t): Ditto.
21898         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
21899         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
21900         segment ff load.
21901         * config/riscv/riscv.md: Add segment instructions.
21902         * config/riscv/vector-iterators.md: Support segment intrinsics.
21903         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
21904         pattern.
21905         (@pred_unit_strided_store<mode>): Ditto.
21906         (@pred_strided_load<mode>): Ditto.
21907         (@pred_strided_store<mode>): Ditto.
21908         (@pred_fault_load<mode>): Ditto.
21909         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
21910         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
21911         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
21912         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
21913         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
21914         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
21915         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
21916         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
21917         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
21918         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
21919         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
21920         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
21921         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
21922         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
21924 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21926         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
21927         tuple type support.
21928         (inttype): Ditto.
21929         (floattype): Ditto.
21930         (main): Ditto.
21931         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
21932         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
21933         tuple type vset.
21934         (vget): Add tuple type vget.
21935         * config/riscv/riscv-vector-builtins-types.def
21936         (DEF_RVV_TUPLE_OPS): New macro.
21937         (vint8mf8x2_t): Ditto.
21938         (vuint8mf8x2_t): Ditto.
21939         (vint8mf8x3_t): Ditto.
21940         (vuint8mf8x3_t): Ditto.
21941         (vint8mf8x4_t): Ditto.
21942         (vuint8mf8x4_t): Ditto.
21943         (vint8mf8x5_t): Ditto.
21944         (vuint8mf8x5_t): Ditto.
21945         (vint8mf8x6_t): Ditto.
21946         (vuint8mf8x6_t): Ditto.
21947         (vint8mf8x7_t): Ditto.
21948         (vuint8mf8x7_t): Ditto.
21949         (vint8mf8x8_t): Ditto.
21950         (vuint8mf8x8_t): Ditto.
21951         (vint8mf4x2_t): Ditto.
21952         (vuint8mf4x2_t): Ditto.
21953         (vint8mf4x3_t): Ditto.
21954         (vuint8mf4x3_t): Ditto.
21955         (vint8mf4x4_t): Ditto.
21956         (vuint8mf4x4_t): Ditto.
21957         (vint8mf4x5_t): Ditto.
21958         (vuint8mf4x5_t): Ditto.
21959         (vint8mf4x6_t): Ditto.
21960         (vuint8mf4x6_t): Ditto.
21961         (vint8mf4x7_t): Ditto.
21962         (vuint8mf4x7_t): Ditto.
21963         (vint8mf4x8_t): Ditto.
21964         (vuint8mf4x8_t): Ditto.
21965         (vint8mf2x2_t): Ditto.
21966         (vuint8mf2x2_t): Ditto.
21967         (vint8mf2x3_t): Ditto.
21968         (vuint8mf2x3_t): Ditto.
21969         (vint8mf2x4_t): Ditto.
21970         (vuint8mf2x4_t): Ditto.
21971         (vint8mf2x5_t): Ditto.
21972         (vuint8mf2x5_t): Ditto.
21973         (vint8mf2x6_t): Ditto.
21974         (vuint8mf2x6_t): Ditto.
21975         (vint8mf2x7_t): Ditto.
21976         (vuint8mf2x7_t): Ditto.
21977         (vint8mf2x8_t): Ditto.
21978         (vuint8mf2x8_t): Ditto.
21979         (vint8m1x2_t): Ditto.
21980         (vuint8m1x2_t): Ditto.
21981         (vint8m1x3_t): Ditto.
21982         (vuint8m1x3_t): Ditto.
21983         (vint8m1x4_t): Ditto.
21984         (vuint8m1x4_t): Ditto.
21985         (vint8m1x5_t): Ditto.
21986         (vuint8m1x5_t): Ditto.
21987         (vint8m1x6_t): Ditto.
21988         (vuint8m1x6_t): Ditto.
21989         (vint8m1x7_t): Ditto.
21990         (vuint8m1x7_t): Ditto.
21991         (vint8m1x8_t): Ditto.
21992         (vuint8m1x8_t): Ditto.
21993         (vint8m2x2_t): Ditto.
21994         (vuint8m2x2_t): Ditto.
21995         (vint8m2x3_t): Ditto.
21996         (vuint8m2x3_t): Ditto.
21997         (vint8m2x4_t): Ditto.
21998         (vuint8m2x4_t): Ditto.
21999         (vint8m4x2_t): Ditto.
22000         (vuint8m4x2_t): Ditto.
22001         (vint16mf4x2_t): Ditto.
22002         (vuint16mf4x2_t): Ditto.
22003         (vint16mf4x3_t): Ditto.
22004         (vuint16mf4x3_t): Ditto.
22005         (vint16mf4x4_t): Ditto.
22006         (vuint16mf4x4_t): Ditto.
22007         (vint16mf4x5_t): Ditto.
22008         (vuint16mf4x5_t): Ditto.
22009         (vint16mf4x6_t): Ditto.
22010         (vuint16mf4x6_t): Ditto.
22011         (vint16mf4x7_t): Ditto.
22012         (vuint16mf4x7_t): Ditto.
22013         (vint16mf4x8_t): Ditto.
22014         (vuint16mf4x8_t): Ditto.
22015         (vint16mf2x2_t): Ditto.
22016         (vuint16mf2x2_t): Ditto.
22017         (vint16mf2x3_t): Ditto.
22018         (vuint16mf2x3_t): Ditto.
22019         (vint16mf2x4_t): Ditto.
22020         (vuint16mf2x4_t): Ditto.
22021         (vint16mf2x5_t): Ditto.
22022         (vuint16mf2x5_t): Ditto.
22023         (vint16mf2x6_t): Ditto.
22024         (vuint16mf2x6_t): Ditto.
22025         (vint16mf2x7_t): Ditto.
22026         (vuint16mf2x7_t): Ditto.
22027         (vint16mf2x8_t): Ditto.
22028         (vuint16mf2x8_t): Ditto.
22029         (vint16m1x2_t): Ditto.
22030         (vuint16m1x2_t): Ditto.
22031         (vint16m1x3_t): Ditto.
22032         (vuint16m1x3_t): Ditto.
22033         (vint16m1x4_t): Ditto.
22034         (vuint16m1x4_t): Ditto.
22035         (vint16m1x5_t): Ditto.
22036         (vuint16m1x5_t): Ditto.
22037         (vint16m1x6_t): Ditto.
22038         (vuint16m1x6_t): Ditto.
22039         (vint16m1x7_t): Ditto.
22040         (vuint16m1x7_t): Ditto.
22041         (vint16m1x8_t): Ditto.
22042         (vuint16m1x8_t): Ditto.
22043         (vint16m2x2_t): Ditto.
22044         (vuint16m2x2_t): Ditto.
22045         (vint16m2x3_t): Ditto.
22046         (vuint16m2x3_t): Ditto.
22047         (vint16m2x4_t): Ditto.
22048         (vuint16m2x4_t): Ditto.
22049         (vint16m4x2_t): Ditto.
22050         (vuint16m4x2_t): Ditto.
22051         (vint32mf2x2_t): Ditto.
22052         (vuint32mf2x2_t): Ditto.
22053         (vint32mf2x3_t): Ditto.
22054         (vuint32mf2x3_t): Ditto.
22055         (vint32mf2x4_t): Ditto.
22056         (vuint32mf2x4_t): Ditto.
22057         (vint32mf2x5_t): Ditto.
22058         (vuint32mf2x5_t): Ditto.
22059         (vint32mf2x6_t): Ditto.
22060         (vuint32mf2x6_t): Ditto.
22061         (vint32mf2x7_t): Ditto.
22062         (vuint32mf2x7_t): Ditto.
22063         (vint32mf2x8_t): Ditto.
22064         (vuint32mf2x8_t): Ditto.
22065         (vint32m1x2_t): Ditto.
22066         (vuint32m1x2_t): Ditto.
22067         (vint32m1x3_t): Ditto.
22068         (vuint32m1x3_t): Ditto.
22069         (vint32m1x4_t): Ditto.
22070         (vuint32m1x4_t): Ditto.
22071         (vint32m1x5_t): Ditto.
22072         (vuint32m1x5_t): Ditto.
22073         (vint32m1x6_t): Ditto.
22074         (vuint32m1x6_t): Ditto.
22075         (vint32m1x7_t): Ditto.
22076         (vuint32m1x7_t): Ditto.
22077         (vint32m1x8_t): Ditto.
22078         (vuint32m1x8_t): Ditto.
22079         (vint32m2x2_t): Ditto.
22080         (vuint32m2x2_t): Ditto.
22081         (vint32m2x3_t): Ditto.
22082         (vuint32m2x3_t): Ditto.
22083         (vint32m2x4_t): Ditto.
22084         (vuint32m2x4_t): Ditto.
22085         (vint32m4x2_t): Ditto.
22086         (vuint32m4x2_t): Ditto.
22087         (vint64m1x2_t): Ditto.
22088         (vuint64m1x2_t): Ditto.
22089         (vint64m1x3_t): Ditto.
22090         (vuint64m1x3_t): Ditto.
22091         (vint64m1x4_t): Ditto.
22092         (vuint64m1x4_t): Ditto.
22093         (vint64m1x5_t): Ditto.
22094         (vuint64m1x5_t): Ditto.
22095         (vint64m1x6_t): Ditto.
22096         (vuint64m1x6_t): Ditto.
22097         (vint64m1x7_t): Ditto.
22098         (vuint64m1x7_t): Ditto.
22099         (vint64m1x8_t): Ditto.
22100         (vuint64m1x8_t): Ditto.
22101         (vint64m2x2_t): Ditto.
22102         (vuint64m2x2_t): Ditto.
22103         (vint64m2x3_t): Ditto.
22104         (vuint64m2x3_t): Ditto.
22105         (vint64m2x4_t): Ditto.
22106         (vuint64m2x4_t): Ditto.
22107         (vint64m4x2_t): Ditto.
22108         (vuint64m4x2_t): Ditto.
22109         (vfloat32mf2x2_t): Ditto.
22110         (vfloat32mf2x3_t): Ditto.
22111         (vfloat32mf2x4_t): Ditto.
22112         (vfloat32mf2x5_t): Ditto.
22113         (vfloat32mf2x6_t): Ditto.
22114         (vfloat32mf2x7_t): Ditto.
22115         (vfloat32mf2x8_t): Ditto.
22116         (vfloat32m1x2_t): Ditto.
22117         (vfloat32m1x3_t): Ditto.
22118         (vfloat32m1x4_t): Ditto.
22119         (vfloat32m1x5_t): Ditto.
22120         (vfloat32m1x6_t): Ditto.
22121         (vfloat32m1x7_t): Ditto.
22122         (vfloat32m1x8_t): Ditto.
22123         (vfloat32m2x2_t): Ditto.
22124         (vfloat32m2x3_t): Ditto.
22125         (vfloat32m2x4_t): Ditto.
22126         (vfloat32m4x2_t): Ditto.
22127         (vfloat64m1x2_t): Ditto.
22128         (vfloat64m1x3_t): Ditto.
22129         (vfloat64m1x4_t): Ditto.
22130         (vfloat64m1x5_t): Ditto.
22131         (vfloat64m1x6_t): Ditto.
22132         (vfloat64m1x7_t): Ditto.
22133         (vfloat64m1x8_t): Ditto.
22134         (vfloat64m2x2_t): Ditto.
22135         (vfloat64m2x3_t): Ditto.
22136         (vfloat64m2x4_t): Ditto.
22137         (vfloat64m4x2_t): Ditto.
22138         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
22139         Ditto.
22140         (DEF_RVV_TYPE_INDEX): Ditto.
22141         (rvv_arg_type_info::get_tuple_subpart_type): New function.
22142         (DEF_RVV_TUPLE_TYPE): New macro.
22143         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
22144         Adapt for tuple vget/vset support.
22145         (vint8mf4_t): Ditto.
22146         (vuint8mf4_t): Ditto.
22147         (vint8mf2_t): Ditto.
22148         (vuint8mf2_t): Ditto.
22149         (vint8m1_t): Ditto.
22150         (vuint8m1_t): Ditto.
22151         (vint8m2_t): Ditto.
22152         (vuint8m2_t): Ditto.
22153         (vint8m4_t): Ditto.
22154         (vuint8m4_t): Ditto.
22155         (vint8m8_t): Ditto.
22156         (vuint8m8_t): Ditto.
22157         (vint16mf4_t): Ditto.
22158         (vuint16mf4_t): Ditto.
22159         (vint16mf2_t): Ditto.
22160         (vuint16mf2_t): Ditto.
22161         (vint16m1_t): Ditto.
22162         (vuint16m1_t): Ditto.
22163         (vint16m2_t): Ditto.
22164         (vuint16m2_t): Ditto.
22165         (vint16m4_t): Ditto.
22166         (vuint16m4_t): Ditto.
22167         (vint16m8_t): Ditto.
22168         (vuint16m8_t): Ditto.
22169         (vint32mf2_t): Ditto.
22170         (vuint32mf2_t): Ditto.
22171         (vint32m1_t): Ditto.
22172         (vuint32m1_t): Ditto.
22173         (vint32m2_t): Ditto.
22174         (vuint32m2_t): Ditto.
22175         (vint32m4_t): Ditto.
22176         (vuint32m4_t): Ditto.
22177         (vint32m8_t): Ditto.
22178         (vuint32m8_t): Ditto.
22179         (vint64m1_t): Ditto.
22180         (vuint64m1_t): Ditto.
22181         (vint64m2_t): Ditto.
22182         (vuint64m2_t): Ditto.
22183         (vint64m4_t): Ditto.
22184         (vuint64m4_t): Ditto.
22185         (vint64m8_t): Ditto.
22186         (vuint64m8_t): Ditto.
22187         (vfloat32mf2_t): Ditto.
22188         (vfloat32m1_t): Ditto.
22189         (vfloat32m2_t): Ditto.
22190         (vfloat32m4_t): Ditto.
22191         (vfloat32m8_t): Ditto.
22192         (vfloat64m1_t): Ditto.
22193         (vfloat64m2_t): Ditto.
22194         (vfloat64m4_t): Ditto.
22195         (vfloat64m8_t): Ditto.
22196         (tuple_subpart): Add tuple subpart base type.
22197         * config/riscv/riscv-vector-builtins.h (struct
22198         rvv_arg_type_info): Ditto.
22199         (tuple_type_field): New function.
22201 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22203         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
22204         (RVV_TUPLE_PARTIAL_MODES): Ditto.
22205         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
22206         function.
22207         (get_nf): Ditto.
22208         (get_subpart_mode): Ditto.
22209         (get_tuple_mode): Ditto.
22210         (expand_tuple_move): Ditto.
22211         * config/riscv/riscv-v.cc (ENTRY): New macro.
22212         (TUPLE_ENTRY): Ditto.
22213         (get_nf): New function.
22214         (get_subpart_mode): Ditto.
22215         (get_tuple_mode): Ditto.
22216         (expand_tuple_move): Ditto.
22217         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
22218         New macro.
22219         (register_tuple_type): New function
22220         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
22221         New macro.
22222         (vint8mf8x2_t): New macro.
22223         (vuint8mf8x2_t): Ditto.
22224         (vint8mf8x3_t): Ditto.
22225         (vuint8mf8x3_t): Ditto.
22226         (vint8mf8x4_t): Ditto.
22227         (vuint8mf8x4_t): Ditto.
22228         (vint8mf8x5_t): Ditto.
22229         (vuint8mf8x5_t): Ditto.
22230         (vint8mf8x6_t): Ditto.
22231         (vuint8mf8x6_t): Ditto.
22232         (vint8mf8x7_t): Ditto.
22233         (vuint8mf8x7_t): Ditto.
22234         (vint8mf8x8_t): Ditto.
22235         (vuint8mf8x8_t): Ditto.
22236         (vint8mf4x2_t): Ditto.
22237         (vuint8mf4x2_t): Ditto.
22238         (vint8mf4x3_t): Ditto.
22239         (vuint8mf4x3_t): Ditto.
22240         (vint8mf4x4_t): Ditto.
22241         (vuint8mf4x4_t): Ditto.
22242         (vint8mf4x5_t): Ditto.
22243         (vuint8mf4x5_t): Ditto.
22244         (vint8mf4x6_t): Ditto.
22245         (vuint8mf4x6_t): Ditto.
22246         (vint8mf4x7_t): Ditto.
22247         (vuint8mf4x7_t): Ditto.
22248         (vint8mf4x8_t): Ditto.
22249         (vuint8mf4x8_t): Ditto.
22250         (vint8mf2x2_t): Ditto.
22251         (vuint8mf2x2_t): Ditto.
22252         (vint8mf2x3_t): Ditto.
22253         (vuint8mf2x3_t): Ditto.
22254         (vint8mf2x4_t): Ditto.
22255         (vuint8mf2x4_t): Ditto.
22256         (vint8mf2x5_t): Ditto.
22257         (vuint8mf2x5_t): Ditto.
22258         (vint8mf2x6_t): Ditto.
22259         (vuint8mf2x6_t): Ditto.
22260         (vint8mf2x7_t): Ditto.
22261         (vuint8mf2x7_t): Ditto.
22262         (vint8mf2x8_t): Ditto.
22263         (vuint8mf2x8_t): Ditto.
22264         (vint8m1x2_t): Ditto.
22265         (vuint8m1x2_t): Ditto.
22266         (vint8m1x3_t): Ditto.
22267         (vuint8m1x3_t): Ditto.
22268         (vint8m1x4_t): Ditto.
22269         (vuint8m1x4_t): Ditto.
22270         (vint8m1x5_t): Ditto.
22271         (vuint8m1x5_t): Ditto.
22272         (vint8m1x6_t): Ditto.
22273         (vuint8m1x6_t): Ditto.
22274         (vint8m1x7_t): Ditto.
22275         (vuint8m1x7_t): Ditto.
22276         (vint8m1x8_t): Ditto.
22277         (vuint8m1x8_t): Ditto.
22278         (vint8m2x2_t): Ditto.
22279         (vuint8m2x2_t): Ditto.
22280         (vint8m2x3_t): Ditto.
22281         (vuint8m2x3_t): Ditto.
22282         (vint8m2x4_t): Ditto.
22283         (vuint8m2x4_t): Ditto.
22284         (vint8m4x2_t): Ditto.
22285         (vuint8m4x2_t): Ditto.
22286         (vint16mf4x2_t): Ditto.
22287         (vuint16mf4x2_t): Ditto.
22288         (vint16mf4x3_t): Ditto.
22289         (vuint16mf4x3_t): Ditto.
22290         (vint16mf4x4_t): Ditto.
22291         (vuint16mf4x4_t): Ditto.
22292         (vint16mf4x5_t): Ditto.
22293         (vuint16mf4x5_t): Ditto.
22294         (vint16mf4x6_t): Ditto.
22295         (vuint16mf4x6_t): Ditto.
22296         (vint16mf4x7_t): Ditto.
22297         (vuint16mf4x7_t): Ditto.
22298         (vint16mf4x8_t): Ditto.
22299         (vuint16mf4x8_t): Ditto.
22300         (vint16mf2x2_t): Ditto.
22301         (vuint16mf2x2_t): Ditto.
22302         (vint16mf2x3_t): Ditto.
22303         (vuint16mf2x3_t): Ditto.
22304         (vint16mf2x4_t): Ditto.
22305         (vuint16mf2x4_t): Ditto.
22306         (vint16mf2x5_t): Ditto.
22307         (vuint16mf2x5_t): Ditto.
22308         (vint16mf2x6_t): Ditto.
22309         (vuint16mf2x6_t): Ditto.
22310         (vint16mf2x7_t): Ditto.
22311         (vuint16mf2x7_t): Ditto.
22312         (vint16mf2x8_t): Ditto.
22313         (vuint16mf2x8_t): Ditto.
22314         (vint16m1x2_t): Ditto.
22315         (vuint16m1x2_t): Ditto.
22316         (vint16m1x3_t): Ditto.
22317         (vuint16m1x3_t): Ditto.
22318         (vint16m1x4_t): Ditto.
22319         (vuint16m1x4_t): Ditto.
22320         (vint16m1x5_t): Ditto.
22321         (vuint16m1x5_t): Ditto.
22322         (vint16m1x6_t): Ditto.
22323         (vuint16m1x6_t): Ditto.
22324         (vint16m1x7_t): Ditto.
22325         (vuint16m1x7_t): Ditto.
22326         (vint16m1x8_t): Ditto.
22327         (vuint16m1x8_t): Ditto.
22328         (vint16m2x2_t): Ditto.
22329         (vuint16m2x2_t): Ditto.
22330         (vint16m2x3_t): Ditto.
22331         (vuint16m2x3_t): Ditto.
22332         (vint16m2x4_t): Ditto.
22333         (vuint16m2x4_t): Ditto.
22334         (vint16m4x2_t): Ditto.
22335         (vuint16m4x2_t): Ditto.
22336         (vint32mf2x2_t): Ditto.
22337         (vuint32mf2x2_t): Ditto.
22338         (vint32mf2x3_t): Ditto.
22339         (vuint32mf2x3_t): Ditto.
22340         (vint32mf2x4_t): Ditto.
22341         (vuint32mf2x4_t): Ditto.
22342         (vint32mf2x5_t): Ditto.
22343         (vuint32mf2x5_t): Ditto.
22344         (vint32mf2x6_t): Ditto.
22345         (vuint32mf2x6_t): Ditto.
22346         (vint32mf2x7_t): Ditto.
22347         (vuint32mf2x7_t): Ditto.
22348         (vint32mf2x8_t): Ditto.
22349         (vuint32mf2x8_t): Ditto.
22350         (vint32m1x2_t): Ditto.
22351         (vuint32m1x2_t): Ditto.
22352         (vint32m1x3_t): Ditto.
22353         (vuint32m1x3_t): Ditto.
22354         (vint32m1x4_t): Ditto.
22355         (vuint32m1x4_t): Ditto.
22356         (vint32m1x5_t): Ditto.
22357         (vuint32m1x5_t): Ditto.
22358         (vint32m1x6_t): Ditto.
22359         (vuint32m1x6_t): Ditto.
22360         (vint32m1x7_t): Ditto.
22361         (vuint32m1x7_t): Ditto.
22362         (vint32m1x8_t): Ditto.
22363         (vuint32m1x8_t): Ditto.
22364         (vint32m2x2_t): Ditto.
22365         (vuint32m2x2_t): Ditto.
22366         (vint32m2x3_t): Ditto.
22367         (vuint32m2x3_t): Ditto.
22368         (vint32m2x4_t): Ditto.
22369         (vuint32m2x4_t): Ditto.
22370         (vint32m4x2_t): Ditto.
22371         (vuint32m4x2_t): Ditto.
22372         (vint64m1x2_t): Ditto.
22373         (vuint64m1x2_t): Ditto.
22374         (vint64m1x3_t): Ditto.
22375         (vuint64m1x3_t): Ditto.
22376         (vint64m1x4_t): Ditto.
22377         (vuint64m1x4_t): Ditto.
22378         (vint64m1x5_t): Ditto.
22379         (vuint64m1x5_t): Ditto.
22380         (vint64m1x6_t): Ditto.
22381         (vuint64m1x6_t): Ditto.
22382         (vint64m1x7_t): Ditto.
22383         (vuint64m1x7_t): Ditto.
22384         (vint64m1x8_t): Ditto.
22385         (vuint64m1x8_t): Ditto.
22386         (vint64m2x2_t): Ditto.
22387         (vuint64m2x2_t): Ditto.
22388         (vint64m2x3_t): Ditto.
22389         (vuint64m2x3_t): Ditto.
22390         (vint64m2x4_t): Ditto.
22391         (vuint64m2x4_t): Ditto.
22392         (vint64m4x2_t): Ditto.
22393         (vuint64m4x2_t): Ditto.
22394         (vfloat32mf2x2_t): Ditto.
22395         (vfloat32mf2x3_t): Ditto.
22396         (vfloat32mf2x4_t): Ditto.
22397         (vfloat32mf2x5_t): Ditto.
22398         (vfloat32mf2x6_t): Ditto.
22399         (vfloat32mf2x7_t): Ditto.
22400         (vfloat32mf2x8_t): Ditto.
22401         (vfloat32m1x2_t): Ditto.
22402         (vfloat32m1x3_t): Ditto.
22403         (vfloat32m1x4_t): Ditto.
22404         (vfloat32m1x5_t): Ditto.
22405         (vfloat32m1x6_t): Ditto.
22406         (vfloat32m1x7_t): Ditto.
22407         (vfloat32m1x8_t): Ditto.
22408         (vfloat32m2x2_t): Ditto.
22409         (vfloat32m2x3_t): Ditto.
22410         (vfloat32m2x4_t): Ditto.
22411         (vfloat32m4x2_t): Ditto.
22412         (vfloat64m1x2_t): Ditto.
22413         (vfloat64m1x3_t): Ditto.
22414         (vfloat64m1x4_t): Ditto.
22415         (vfloat64m1x5_t): Ditto.
22416         (vfloat64m1x6_t): Ditto.
22417         (vfloat64m1x7_t): Ditto.
22418         (vfloat64m1x8_t): Ditto.
22419         (vfloat64m2x2_t): Ditto.
22420         (vfloat64m2x3_t): Ditto.
22421         (vfloat64m2x4_t): Ditto.
22422         (vfloat64m4x2_t): Ditto.
22423         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
22424         Ditto.
22425         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
22426         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
22427         function.
22428         (TUPLE_ENTRY): Ditto.
22429         (riscv_v_ext_mode_p): New function.
22430         (riscv_v_adjust_nunits): Add tuple mode adjustment.
22431         (riscv_classify_address): Ditto.
22432         (riscv_binary_cost): Ditto.
22433         (riscv_rtx_costs): Ditto.
22434         (riscv_secondary_memory_needed): Ditto.
22435         (riscv_hard_regno_nregs): Ditto.
22436         (riscv_hard_regno_mode_ok): Ditto.
22437         (riscv_vector_mode_supported_p): Ditto.
22438         (riscv_regmode_natural_size): Ditto.
22439         (riscv_array_mode): New function.
22440         (TARGET_ARRAY_MODE): New target hook.
22441         * config/riscv/riscv.md: Add tuple modes.
22442         * config/riscv/vector-iterators.md: Ditto.
22443         * config/riscv/vector.md (mov<mode>): Add tuple modes data
22444         movement.
22445         (*mov<VT:mode>_<P:mode>): Ditto.
22447 2023-05-03  Richard Biener  <rguenther@suse.de>
22449         * cse.cc (cse_insn): Track an equivalence to the destination
22450         separately and delay using src_related for it.
22452 2023-05-03  Richard Biener  <rguenther@suse.de>
22454         * cse.cc (HASH): Turn into inline function and mix
22455         in another HASH_SHIFT bits.
22456         (SAFE_HASH): Likewise.
22458 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22460         PR target/99195
22461         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
22462         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
22464 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22466         PR target/99195
22467         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
22468         (add<mode>3<vczle><vczbe>): ... This.
22469         (sub<mode>3): Rename to...
22470         (sub<mode>3<vczle><vczbe>): ... This.
22471         (mul<mode>3): Rename to...
22472         (mul<mode>3<vczle><vczbe>): ... This.
22473         (*div<mode>3): Rename to...
22474         (*div<mode>3<vczle><vczbe>): ... This.
22475         (neg<mode>2): Rename to...
22476         (neg<mode>2<vczle><vczbe>): ... This.
22477         (abs<mode>2): Rename to...
22478         (abs<mode>2<vczle><vczbe>): ... This.
22479         (<frint_pattern><mode>2): Rename to...
22480         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
22481         (<fmaxmin><mode>3): Rename to...
22482         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
22483         (*sqrt<mode>2): Rename to...
22484         (*sqrt<mode>2<vczle><vczbe>): ... This.
22486 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
22488         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
22490 2023-05-03  Martin Liska  <mliska@suse.cz>
22492         PR tree-optimization/109693
22493         * value-range-storage.cc (vrange_allocator::vrange_allocator):
22494         Remove unused field.
22495         * value-range-storage.h: Likewise.
22497 2023-05-02  Andrew Pinski  <apinski@marvell.com>
22499         * tree-ssa-phiopt.cc (move_stmt): New function.
22500         (match_simplify_replacement): Use move_stmt instead
22501         of the inlined version.
22503 2023-05-02  Andrew Pinski  <apinski@marvell.com>
22505         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
22506         pattern.
22508 2023-05-02  Andrew Pinski  <apinski@marvell.com>
22510         PR tree-optimization/109702
22511         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
22512         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
22514 2023-05-02  Andrew Pinski  <apinski@marvell.com>
22516         PR target/109657
22517         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
22518         insn_and_split pattern.
22520 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22522         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
22523         load mapping.
22525 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22527         * config/riscv/sync.md (mem_thread_fence_1): Change fence
22528         depending on the given memory model.
22530 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22532         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
22533         riscv_union_memmodels function to sync.md.
22534         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
22535         get the union of two memmodels in sync.md.
22536         (riscv_print_operand): Add %I and %J flags that output the
22537         optimal LR/SC flag bits for a given memory model.
22538         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
22539         bits on SC op and replace with optimized %I, %J flags.
22541 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22543         * config/riscv/riscv.cc
22544         (riscv_memmodel_needs_amo_release): Change function name.
22545         (riscv_print_operand): Remove unneeded %F case.
22546         * config/riscv/sync.md: Remove unneeded fences.
22548 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22550         PR target/89835
22551         * config/riscv/sync.md (atomic_store<mode>): Use simple store
22552         instruction in combination with fence(s).
22554 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22556         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
22557         of %A to include release bits.
22559 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22561         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
22562         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
22563         pair.
22565 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22567         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
22568         sequentially consistent LR.aqrl/SC.rl pairs.
22570 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
22572         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
22573         sanitize memmodel input with memmodel_base.
22575 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
22576             Pan Li  <pan2.li@intel.com>
22578         PR target/109617
22579         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
22581 2023-05-02  Romain Naour  <romain.naour@gmail.com>
22583         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
22584         the namespace.
22586 2023-05-02  Martin Liska  <mliska@suse.cz>
22588         * doc/invoke.texi: Update documentation based on param.opt file.
22590 2023-05-02  Richard Biener  <rguenther@suse.de>
22592         PR tree-optimization/109672
22593         * tree-vect-stmts.cc (vectorizable_operation): For plus,
22594         minus and negate always check the vector mode is word mode.
22596 2023-05-01  Andrew Pinski  <apinski@marvell.com>
22598         * tree-ssa-phiopt.cc: Update comment about
22599         how the transformation are implemented.
22601 2023-05-01  Jeff Law  <jlaw@ventanamicro>
22603         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
22605 2023-05-01  Jeff Law  <jlaw@ventanamicro>
22607         * config/cris/cris.cc (TARGET_LRA_P): Remove.
22608         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
22609         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
22610         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
22611         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
22612         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
22614 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
22616         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
22617         * print-tree.cc (print_decl_identifier): Implement it.
22618         * toplev.cc (output_stack_usage_1): Use it.
22620 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22622         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
22623         friends.
22625 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22627         * value-range.h (irange::set_nonzero): Inline.
22629 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22631         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
22632         precision.
22633         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
22634         invalid_range, as it is an inverse range.
22635         * tree-vrp.cc (find_case_label_range): Avoid trees.
22636         * value-range.cc (irange::irange_set): Delete.
22637         (irange::irange_set_1bit_anti_range): Delete.
22638         (irange::irange_set_anti_range): Delete.
22639         (irange::set): Cleanup.
22640         * value-range.h (class irange): Remove irange_set,
22641         irange_set_anti_range, irange_set_1bit_anti_range.
22642         (irange::set_undefined): Remove set to m_type.
22644 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22646         * range-op.cc (update_known_bitmask): Adjust for irange containing
22647         wide_ints internally.
22648         * tree-ssanames.cc (set_nonzero_bits): Same.
22649         * tree-ssanames.h (set_nonzero_bits): Same.
22650         * value-range-storage.cc (irange_storage::set_irange): Same.
22651         (irange_storage::get_irange): Same.
22652         * value-range.cc (irange::operator=): Same.
22653         (irange::irange_set): Same.
22654         (irange::irange_set_1bit_anti_range): Same.
22655         (irange::irange_set_anti_range): Same.
22656         (irange::set): Same.
22657         (irange::verify_range): Same.
22658         (irange::contains_p): Same.
22659         (irange::irange_single_pair_union): Same.
22660         (irange::union_): Same.
22661         (irange::irange_contains_p): Same.
22662         (irange::intersect): Same.
22663         (irange::invert): Same.
22664         (irange::set_range_from_nonzero_bits): Same.
22665         (irange::set_nonzero_bits): Same.
22666         (mask_to_wi): Same.
22667         (irange::intersect_nonzero_bits): Same.
22668         (irange::union_nonzero_bits): Same.
22669         (gt_ggc_mx): Same.
22670         (gt_pch_nx): Same.
22671         (tree_range): Same.
22672         (range_tests_strict_enum): Same.
22673         (range_tests_misc): Same.
22674         (range_tests_nonzero_bits): Same.
22675         * value-range.h (irange::type): Same.
22676         (irange::varying_compatible_p): Same.
22677         (irange::irange): Same.
22678         (int_range::int_range): Same.
22679         (irange::set_undefined): Same.
22680         (irange::set_varying): Same.
22681         (irange::lower_bound): Same.
22682         (irange::upper_bound): Same.
22684 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22686         * gimple-range-fold.cc (tree_lower_bound): Delete.
22687         (tree_upper_bound): Delete.
22688         (vrp_val_max): Delete.
22689         (vrp_val_min): Delete.
22690         (fold_using_range::range_of_ssa_name_with_loop_info): Call
22691         range_of_var_in_loop.
22692         * vr-values.cc (valid_value_p): Delete.
22693         (fix_overflow): Delete.
22694         (get_scev_info): New.
22695         (bounds_of_var_in_loop): Refactor into...
22696         (induction_variable_may_overflow_p): ...this,
22697         (range_from_loop_direction): ...and this,
22698         (range_of_var_in_loop): ...and this.
22699         * vr-values.h (bounds_of_var_in_loop): Delete.
22700         (range_of_var_in_loop): New.
22702 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22704         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
22705         irange_val*.
22706         (vrp_val_max): New.
22707         (vrp_val_min): New.
22708         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
22709         * range-op.cc (max_limit): Same.
22710         (min_limit): Same.
22711         (plus_minus_ranges): Same.
22712         (operator_rshift::op1_range): Same.
22713         (operator_cast::inside_domain_p): Same.
22714         * value-range.cc (vrp_val_is_max): Delete.
22715         (vrp_val_is_min): Delete.
22716         (range_tests_misc): Use irange_val_*.
22717         * value-range.h (vrp_val_is_min): Delete.
22718         (vrp_val_is_max): Delete.
22719         (vrp_val_max): Delete.
22720         (irange_val_min): New.
22721         (vrp_val_min): Delete.
22722         (irange_val_max): New.
22723         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
22725 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22727         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
22728         * gimple-fold.cc (size_must_be_zero_p): Same.
22729         * gimple-loop-versioning.cc
22730         (loop_versioning::prune_loop_conditions): Same.
22731         * gimple-range-edge.cc (gcond_edge_range): Same.
22732         (gimple_outgoing_range::calc_switch_ranges): Same.
22733         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
22734         (adjust_realpart_expr): Same.
22735         (fold_using_range::range_of_address): Same.
22736         (fold_using_range::relation_fold_and_or): Same.
22737         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
22738         (range_is_either_true_or_false): Same.
22739         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
22740         (cfn_clz::fold_range): Same.
22741         (cfn_ctz::fold_range): Same.
22742         * gimple-range-tests.cc (class test_expr_eval): Same.
22743         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
22744         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
22745         (propagate_vr_across_jump_function): Same.
22746         (decide_whether_version_node): Same.
22747         * ipa-prop.cc (ipa_get_value_range): Same.
22748         * ipa-prop.h (ipa_range_set_and_normalize): Same.
22749         * range-op.cc (get_shift_range): Same.
22750         (value_range_from_overflowed_bounds): Same.
22751         (value_range_with_overflow): Same.
22752         (create_possibly_reversed_range): Same.
22753         (equal_op1_op2_relation): Same.
22754         (not_equal_op1_op2_relation): Same.
22755         (lt_op1_op2_relation): Same.
22756         (le_op1_op2_relation): Same.
22757         (gt_op1_op2_relation): Same.
22758         (ge_op1_op2_relation): Same.
22759         (operator_mult::op1_range): Same.
22760         (operator_exact_divide::op1_range): Same.
22761         (operator_lshift::op1_range): Same.
22762         (operator_rshift::op1_range): Same.
22763         (operator_cast::op1_range): Same.
22764         (operator_logical_and::fold_range): Same.
22765         (set_nonzero_range_from_mask): Same.
22766         (operator_bitwise_or::op1_range): Same.
22767         (operator_bitwise_xor::op1_range): Same.
22768         (operator_addr_expr::fold_range): Same.
22769         (pointer_plus_operator::wi_fold): Same.
22770         (pointer_or_operator::op1_range): Same.
22771         (INT): Same.
22772         (UINT): Same.
22773         (INT16): Same.
22774         (UINT16): Same.
22775         (SCHAR): Same.
22776         (UCHAR): Same.
22777         (range_op_cast_tests): Same.
22778         (range_op_lshift_tests): Same.
22779         (range_op_rshift_tests): Same.
22780         (range_op_bitwise_and_tests): Same.
22781         (range_relational_tests): Same.
22782         * range.cc (range_zero): Same.
22783         (range_nonzero): Same.
22784         * range.h (range_true): Same.
22785         (range_false): Same.
22786         (range_true_and_false): Same.
22787         * tree-data-ref.cc (split_constant_offset_1): Same.
22788         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
22789         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
22790         (find_unswitching_predicates_for_bb): Same.
22791         * tree-ssa-phiopt.cc (value_replacement): Same.
22792         * tree-ssa-threadbackward.cc
22793         (back_threader::find_taken_edge_cond): Same.
22794         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
22795         * tree-vrp.cc (find_case_label_range): Same.
22796         * value-query.cc (range_query::get_tree_range): Same.
22797         * value-range.cc (irange::set_nonnegative): Same.
22798         (frange::contains_p): Same.
22799         (frange::singleton_p): Same.
22800         (frange::internal_singleton_p): Same.
22801         (irange::irange_set): Same.
22802         (irange::irange_set_1bit_anti_range): Same.
22803         (irange::irange_set_anti_range): Same.
22804         (irange::set): Same.
22805         (irange::operator==): Same.
22806         (irange::singleton_p): Same.
22807         (irange::contains_p): Same.
22808         (irange::set_range_from_nonzero_bits): Same.
22809         (DEFINE_INT_RANGE_INSTANCE): Same.
22810         (INT): Same.
22811         (UINT): Same.
22812         (SCHAR): Same.
22813         (UINT128): Same.
22814         (UCHAR): Same.
22815         (range): New.
22816         (tree_range): New.
22817         (range_int): New.
22818         (range_uint): New.
22819         (range_uint128): New.
22820         (range_uchar): New.
22821         (range_char): New.
22822         (build_range3): Convert to irange wide_int API.
22823         (range_tests_irange3): Same.
22824         (range_tests_int_range_max): Same.
22825         (range_tests_strict_enum): Same.
22826         (range_tests_misc): Same.
22827         (range_tests_nonzero_bits): Same.
22828         (range_tests_nan): Same.
22829         (range_tests_signed_zeros): Same.
22830         * value-range.h (Value_Range::Value_Range): Same.
22831         (irange::set): Same.
22832         (irange::nonzero_p): Same.
22833         (irange::contains_p): Same.
22834         (range_includes_zero_p): Same.
22835         (irange::set_nonzero): Same.
22836         (irange::set_zero): Same.
22837         (contains_zero_p): Same.
22838         (frange::contains_p): Same.
22839         * vr-values.cc
22840         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
22841         (bounds_of_var_in_loop): Same.
22842         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
22844 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22846         * value-range.cc (irange::irange_union): Rename to...
22847         (irange::union_): ...this.
22848         (irange::irange_intersect): Rename to...
22849         (irange::intersect): ...this.
22850         * value-range.h (irange::union_): Delete.
22851         (irange::intersect): Delete.
22853 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22855         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
22857 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22859         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
22860         ranger API.
22861         (compare_ranges): Delete.
22862         (compare_range_with_value): Delete.
22863         (bounds_of_var_in_loop): Tidy up by using ranger API.
22864         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
22865         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
22866         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
22867         strict_overflow_p and only_ranges.
22868         (simplify_using_ranges::legacy_fold_cond): Adjust call to
22869         legacy_fold_cond_overflow.
22870         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
22871         rename.
22872         (range_fits_type_p): Rename value_range to irange.
22873         * vr-values.h (range_fits_type_p): Adjust prototype.
22875 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22877         * value-range.cc (irange::irange_set_anti_range): Remove uses of
22878         tree_lower_bound and tree_upper_bound.
22879         (irange::verify_range): Same.
22880         (irange::operator==): Same.
22881         (irange::singleton_p): Same.
22882         * value-range.h (irange::tree_lower_bound): Delete.
22883         (irange::tree_upper_bound): Delete.
22884         (irange::lower_bound): Delete.
22885         (irange::upper_bound): Delete.
22886         (irange::zero_p): Remove uses of tree_lower_bound and
22887         tree_upper_bound.
22889 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22891         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
22892         kind() call.
22893         (determine_value_range): Same.
22894         (record_nonwrapping_iv): Same.
22895         (infer_loop_bounds_from_signedness): Same.
22896         (scev_var_range_cant_overflow): Same.
22897         * tree-vrp.cc (operand_less_p): Delete.
22898         * tree-vrp.h (operand_less_p): Delete.
22899         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
22900         (irange::value_inside_range): Delete.
22901         * value-range.h (vrange::kind): Delete.
22902         (irange::num_pairs): Remove check of m_kind.
22903         (irange::min): Delete.
22904         (irange::max): Delete.
22906 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
22908         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
22909         for vrange_storage.
22910         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
22911         (sbr_vector::grow): Same.
22912         (sbr_vector::set_bb_range): Same.
22913         (sbr_vector::get_bb_range): Same.
22914         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
22915         (sbr_sparse_bitmap::set_bb_range): Same.
22916         (sbr_sparse_bitmap::get_bb_range): Same.
22917         (block_range_cache::block_range_cache): Same.
22918         (ssa_global_cache::ssa_global_cache): Same.
22919         (ssa_global_cache::get_global_range): Same.
22920         (ssa_global_cache::set_global_range): Same.
22921         * gimple-range-cache.h: Same.
22922         * gimple-range-edge.cc
22923         (gimple_outgoing_range::gimple_outgoing_range): Same.
22924         (gimple_outgoing_range::switch_edge_range): Same.
22925         (gimple_outgoing_range::calc_switch_ranges): Same.
22926         * gimple-range-edge.h: Same.
22927         * gimple-range-infer.cc
22928         (infer_range_manager::infer_range_manager): Same.
22929         (infer_range_manager::get_nonzero): Same.
22930         (infer_range_manager::maybe_adjust_range): Same.
22931         (infer_range_manager::add_range): Same.
22932         * gimple-range-infer.h: Rename obstack_vrange_allocator to
22933         vrange_allocator.
22934         * tree-core.h (struct irange_storage_slot): Remove.
22935         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
22936         range_info a pointer to vrange_storage.
22937         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
22938         (range_info_alloc): Same.
22939         (range_info_free): Same.
22940         (range_info_get_range): Same.
22941         (range_info_set_range): Same.
22942         (get_nonzero_bits): Same.
22943         * value-query.cc (get_ssa_name_range_info): Same.
22944         * value-range-storage.cc (class vrange_internal_alloc): New.
22945         (class vrange_obstack_alloc): New.
22946         (class vrange_ggc_alloc): New.
22947         (vrange_allocator::vrange_allocator): New.
22948         (vrange_allocator::~vrange_allocator): New.
22949         (vrange_storage::alloc_slot): New.
22950         (vrange_allocator::alloc): New.
22951         (vrange_allocator::free): New.
22952         (vrange_allocator::clone): New.
22953         (vrange_allocator::clone_varying): New.
22954         (vrange_allocator::clone_undefined): New.
22955         (vrange_storage::alloc): New.
22956         (vrange_storage::set_vrange): Remove slot argument.
22957         (vrange_storage::get_vrange): Same.
22958         (vrange_storage::fits_p): Same.
22959         (vrange_storage::equal_p): New.
22960         (irange_storage::write_lengths_address): New.
22961         (irange_storage::lengths_address): New.
22962         (irange_storage_slot::alloc_slot): Remove.
22963         (irange_storage::alloc): New.
22964         (irange_storage_slot::irange_storage_slot): Remove.
22965         (irange_storage::irange_storage): New.
22966         (write_wide_int): New.
22967         (irange_storage_slot::set_irange): Remove.
22968         (irange_storage::set_irange): New.
22969         (read_wide_int): New.
22970         (irange_storage_slot::get_irange): Remove.
22971         (irange_storage::get_irange): New.
22972         (irange_storage_slot::size): Remove.
22973         (irange_storage::equal_p): New.
22974         (irange_storage_slot::num_wide_ints_needed): Remove.
22975         (irange_storage::size): New.
22976         (irange_storage_slot::fits_p): Remove.
22977         (irange_storage::fits_p): New.
22978         (irange_storage_slot::dump): Remove.
22979         (irange_storage::dump): New.
22980         (frange_storage_slot::alloc_slot): Remove.
22981         (frange_storage::alloc): New.
22982         (frange_storage_slot::set_frange): Remove.
22983         (frange_storage::set_frange): New.
22984         (frange_storage_slot::get_frange): Remove.
22985         (frange_storage::get_frange): New.
22986         (frange_storage_slot::fits_p): Remove.
22987         (frange_storage::equal_p): New.
22988         (frange_storage::fits_p): New.
22989         (ggc_vrange_allocator): New.
22990         (ggc_alloc_vrange_storage): New.
22991         * value-range-storage.h (class vrange_storage): Rewrite.
22992         (class irange_storage): Rewrite.
22993         (class frange_storage): Rewrite.
22994         (class obstack_vrange_allocator): Remove.
22995         (class ggc_vrange_allocator): Remove.
22996         (vrange_allocator::alloc_vrange): Remove.
22997         (vrange_allocator::alloc_irange): Remove.
22998         (vrange_allocator::alloc_frange): Remove.
22999         (ggc_alloc_vrange_storage): New.
23000         * value-range.h (class irange): Rename vrange_allocator to
23001         irange_storage.
23002         (class frange): Same.
23004 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
23006         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
23007         inc to avoid clobbering the carry flag.
23009 2023-04-30  Andrew Pinski  <apinski@marvell.com>
23011         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
23012         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
23014 2023-04-30  Andrew Pinski  <apinski@marvell.com>
23016         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
23017         Allow some builtin/internal function calls which
23018         are known not to trap/throw.
23019         (phiopt_worker::match_simplify_replacement):
23020         Use name instead of getting the lhs again.
23022 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
23024         * configure: Regenerate.
23025         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
23027 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
23029         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
23030         emit_insn_if_valid_for_reload.
23031         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
23032         to be recognized, also try emitting a parallel that clobbers
23033         TARGET_FLAGS_REGNUM, as applicable.
23035 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
23037         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
23038         to a define_insn.
23039         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
23040         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
23042 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
23044         * config/stormy16/stormy16.md (any_lshift): New code iterator.
23045         (any_or_plus): Likewise.
23046         (any_rotate): Likewise.
23047         (*<any_lshift>_and_internal): New define_insn_and_split to
23048         recognize a logical shift followed by an AND, and split it
23049         again after reload.
23050         (*swpn): New define_insn matching xstormy16's swpn.
23051         (*swpn_zext): New define_insn recognizing swpn followed by
23052         zero_extendqihi2, i.e. with the high byte set to zero.
23053         (*swpn_sext): Likewise, for swpn followed by cbw.
23054         (*swpn_sext_2): Likewise, for an alternate RTL form.
23055         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
23056         sequence is split in the correct place to recognize the *swpn_zext
23057         followed by any_or_plus (ior, xor or plus) instruction.
23059 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
23061         PR target/105525
23062         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
23063         (lm32-*-uclinux*): Likewise.
23065 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
23067         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
23068         for riscv_use_save_libcall.
23069         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
23070         (riscv_compute_frame_info): restructure to decouple stack allocation
23071         for rv32e w/o save-restore.
23073 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
23075         * doc/install.texi: Fix documentation typo
23077 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
23079         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
23080         (u): Add div/udiv cases.
23081         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
23082         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
23083         divmod expansion.
23084         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
23085         (thead_c906_tune_info): Likewise.
23086         (optimize_size_tune_info): Likewise.
23087         (riscv_use_divmod_expander): New function.
23088         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
23090 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
23092         * config/riscv/bitmanip.md: Added clmulr instruction.
23093         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
23094         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
23095         (type): Add clmul
23096         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
23097         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
23098         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
23099         functions to riscv-cmo.def.
23100         * config/riscv/generic.md: Add clmul to list of instructions
23101         using the generic_imul reservation.
23103 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
23105         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
23107 2023-04-28  Andrew Pinski  <apinski@marvell.com>
23109         PR tree-optimization/100958
23110         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
23111         (pass_phiopt::execute): Don't call two_value_replacement.
23112         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
23113         handle what two_value_replacement did.
23115 2023-04-28  Andrew Pinski  <apinski@marvell.com>
23117         * match.pd: Add patterns for
23118         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
23120 2023-04-28  Andrew Pinski  <apinski@marvell.com>
23122         * match.pd: Factor out the deciding the min/max from
23123         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
23124         pattern to ...
23125         * fold-const.cc (minmax_from_comparison): this new function.
23126         * fold-const.h (minmax_from_comparison): New prototype.
23128 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
23130         PR rtl-optimization/109476
23131         * lower-subreg.cc: Include explow.h for force_reg.
23132         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
23133         If decomposing a suitable LSHIFTRT and we're not splitting
23134         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
23135         instead of setting a high part SUBREG to zero, which helps combine.
23136         (decompose_multiword_subregs): Update call to resolve_shift_zext.
23138 2023-04-28  Richard Biener  <rguenther@suse.de>
23140         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
23141         consider scatters.
23142         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
23143         gather-scatter info and cost emulated scatters accordingly.
23144         (get_load_store_type): Support emulated scatters.
23145         (vectorizable_store): Likewise.  Emulate them by extracting
23146         scalar offsets and data, doing scalar stores.
23148 2023-04-28  Richard Biener  <rguenther@suse.de>
23150         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
23151         Tame down element extracts and scalar loads for gather/scatter
23152         similar to elementwise strided accesses.
23154 2023-04-28  Pan Li  <pan2.li@intel.com>
23155             kito-cheng  <kito.cheng@sifive.com>
23157         * config/riscv/vector.md: Add new define split to perform
23158         the simplification.
23160 2023-04-28  Richard Biener  <rguenther@suse.de>
23162         PR ipa/109652
23163         * ipa-param-manipulation.cc
23164         (ipa_param_body_adjustments::modify_expression): Allow
23165         conversion of a register to a non-register type.  Elide
23166         conversions inside BIT_FIELD_REFs.
23168 2023-04-28  Richard Biener  <rguenther@suse.de>
23170         PR tree-optimization/109644
23171         * tree-cfg.cc (verify_types_in_gimple_reference): Check
23172         register constraints on the outermost VIEW_CONVERT_EXPR
23173         only.  Do not allow register or invariant bases on
23174         multi-level or possibly variable index handled components.
23176 2023-04-28  Richard Biener  <rguenther@suse.de>
23178         * gimplify.cc (gimplify_compound_lval): When there's a
23179         non-register type produced by one of the handled component
23180         operations make sure we get a non-register base.
23182 2023-04-28  Richard Biener  <rguenther@suse.de>
23184         PR tree-optimization/108752
23185         * tree-vect-generic.cc (build_replicated_const): Rename
23186         to build_replicated_int_cst and move to tree.{h,cc}.
23187         (do_plus_minus): Adjust.
23188         (do_negate): Likewise.
23189         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
23190         arithmetic vector operations in lowered form.
23191         * tree.h (build_replicated_int_cst): Declare.
23192         * tree.cc (build_replicated_int_cst): Moved from
23193         tree-vect-generic.cc build_replicated_const.
23195 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23197         PR target/99195
23198         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
23199         (aarch64_rbit<mode><vczle><vczbe>): ... This.
23200         (neg<mode>2): Rename to...
23201         (neg<mode>2<vczle><vczbe>): ... This.
23202         (abs<mode>2): Rename to...
23203         (abs<mode>2<vczle><vczbe>): ... This.
23204         (aarch64_abs<mode>): Rename to...
23205         (aarch64_abs<mode><vczle><vczbe>): ... This.
23206         (one_cmpl<mode>2): Rename to...
23207         (one_cmpl<mode>2<vczle><vczbe>): ... This.
23208         (clrsb<mode>2): Rename to...
23209         (clrsb<mode>2<vczle><vczbe>): ... This.
23210         (clz<mode>2): Rename to...
23211         (clz<mode>2<vczle><vczbe>): ... This.
23212         (popcount<mode>2): Rename to...
23213         (popcount<mode>2<vczle><vczbe>): ... This.
23215 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
23217         * gimple-range-op.cc (class cfn_sqrt): New type.
23218         (op_cfn_sqrt): New variable.
23219         (gimple_range_op_handler::maybe_builtin_call): Handle
23220         CASE_CFN_SQRT{,_FN}.
23222 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
23223             Jakub Jelinek  <jakub@redhat.com>
23225         * value-range.h (frange_nextafter): Declare.
23226         * gimple-range-op.cc (class cfn_sincos): New.
23227         (op_cfn_sin, op_cfn_cos): New variables.
23228         (gimple_range_op_handler::maybe_builtin_call): Handle
23229         CASE_CFN_{SIN,COS}{,_FN}.
23231 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
23233         * target.def (libm_function_max_error): New target hook.
23234         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
23235         * doc/tm.texi: Regenerated.
23236         * targhooks.h (default_libm_function_max_error,
23237         glibc_linux_libm_function_max_error): Declare.
23238         * targhooks.cc: Include case-cfn-macros.h.
23239         (default_libm_function_max_error,
23240         glibc_linux_libm_function_max_error): New functions.
23241         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
23242         * config/linux-protos.h (linux_libm_function_max_error): Declare.
23243         * config/linux.cc: Include target.h and targhooks.h.
23244         (linux_libm_function_max_error): New function.
23245         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
23246         (arc_libm_function_max_error): New function.
23247         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
23248         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
23249         (ix86_libm_function_max_error): New function.
23250         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
23251         * config/rs6000/rs6000-protos.h
23252         (rs6000_linux_libm_function_max_error): Declare.
23253         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
23254         and case-cfn-macros.h.
23255         (rs6000_linux_libm_function_max_error): New function.
23256         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
23257         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
23258         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
23259         (or1k_libm_function_max_error): New function.
23260         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
23262 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
23264         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
23265         Move detach value calls...
23266         (pass_harden_conditional_branches::execute): ... here.
23267         (pass_harden_compares::execute): Detach values before
23268         compares.
23270 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
23272         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
23273         (cml<addsub_as><mode>4): Likewise.
23274         (vec_addsub<mode>3): Likewise.
23275         (cadd<rot><mode>3): Likewise.
23276         (vec_fmaddsub<mode>4): Likewise.
23277         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
23279 2023-04-27  Andrew Pinski  <apinski@marvell.com>
23281         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
23282         up to 2 min/max expressions in the sequence/match code.
23284 2023-04-27  Andrew Pinski  <apinski@marvell.com>
23286         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
23287         COMPARISON.
23288         * tree-eh.cc (operation_could_trap_helper_p): Treate
23289         MIN_EXPR/MAX_EXPR similar as other comparisons.
23291 2023-04-27  Andrew Pinski  <apinski@marvell.com>
23293         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
23294         prototype.
23295         (cond_if_else_store_replacement): Likewise.
23296         (get_non_trapping): Likewise.
23297         (store_elim_worker): Move into ...
23298         (pass_cselim::execute): This.
23300 2023-04-27  Andrew Pinski  <apinski@marvell.com>
23302         * tree-ssa-phiopt.cc (two_value_replacement): Remove
23303         prototype.
23304         (match_simplify_replacement): Likewise.
23305         (factor_out_conditional_conversion): Likewise.
23306         (value_replacement): Likewise.
23307         (minmax_replacement): Likewise.
23308         (spaceship_replacement): Likewise.
23309         (cond_removal_in_builtin_zero_pattern): Likewise.
23310         (hoist_adjacent_loads): Likewise.
23311         (tree_ssa_phiopt_worker): Move into ...
23312         (pass_phiopt::execute): this.
23314 2023-04-27  Andrew Pinski  <apinski@marvell.com>
23316         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
23317         do_store_elim argument and split that part out to ...
23318         (store_elim_worker): This new function.
23319         (pass_cselim::execute): Call store_elim_worker.
23320         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
23322 2023-04-27  Jan Hubicka  <jh@suse.cz>
23324         * cfgloopmanip.h (unloop_loops): Export.
23325         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
23326         that no longer loop.
23327         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
23328         vectors of loops to unloop.
23329         (canonicalize_induction_variables): Free vectors here.
23330         (tree_unroll_loops_completely): Free vectors here.
23332 2023-04-27  Richard Biener  <rguenther@suse.de>
23334         PR tree-optimization/109170
23335         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
23336         Handle __builtin_expect and similar via cfn_pass_through_arg1
23337         and inspecting the calls fnspec.
23338         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
23339         and BUILT_IN_EXPECT_WITH_PROBABILITY.
23341 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
23343         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
23345 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
23347         PR tree-optimization/109639
23348         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
23349         (propagate_vr_across_jump_function): Same.
23350         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
23351         * ipa-prop.h (ipa_range_set_and_normalize): New.
23352         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
23354 2023-04-27  Richard Biener  <rguenther@suse.de>
23356         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
23357         create a CTOR operand in the result when simplifying GIMPLE.
23359 2023-04-27  Richard Biener  <rguenther@suse.de>
23361         * gimplify.cc (gimplify_compound_lval): When the base
23362         gimplified to a register make sure to split up chains
23363         of operations.
23365 2023-04-27  Richard Biener  <rguenther@suse.de>
23367         PR ipa/109607
23368         * ipa-param-manipulation.h
23369         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
23370         argument.
23371         * ipa-param-manipulation.cc
23372         (ipa_param_body_adjustments::modify_expression): Likewise.
23373         When we need a conversion and the replacement is a register
23374         split the conversion out.
23375         (ipa_param_body_adjustments::modify_assignment): Pass
23376         extra_stmts to RHS modify_expression.
23378 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
23380         * doc/extend.texi (Zero Length): Describe example.
23382 2023-04-27  Richard Biener  <rguenther@suse.de>
23384         PR tree-optimization/109594
23385         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
23386         what we rewrite to a register based on the above.
23388 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
23390         * config/riscv/riscv.cc: Fix whitespace.
23391         * config/riscv/sync.md: Fix whitespace.
23393 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
23395         PR tree-optimization/108697
23396         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
23397         not clear the vector on an out of range query.
23398         (ssa_cache::dump): Use dump_range_query instead of get_range.
23399         (ssa_cache::dump_range_query): New.
23400         (ssa_lazy_cache::dump_range_query): New.
23401         (ssa_lazy_cache::set_range): New.
23402         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
23403         (class ssa_lazy_cache): New.
23404         (ssa_lazy_cache::ssa_lazy_cache): New.
23405         (ssa_lazy_cache::~ssa_lazy_cache): New.
23406         (ssa_lazy_cache::get_range): New.
23407         (ssa_lazy_cache::clear_range): New.
23408         (ssa_lazy_cache::clear): New.
23409         (ssa_lazy_cache::dump): New.
23410         * gimple-range-path.cc (path_range_query::path_range_query): Do
23411         not allocate a ssa_cache object nor has_cache bitmap.
23412         (path_range_query::~path_range_query): Do not free objects.
23413         (path_range_query::clear_cache): Remove.
23414         (path_range_query::get_cache): Adjust.
23415         (path_range_query::set_cache): Remove.
23416         (path_range_query::dump): Don't call through a pointer.
23417         (path_range_query::internal_range_of_expr): Set cache directly.
23418         (path_range_query::reset_path): Clear cache directly.
23419         (path_range_query::ssa_range_in_phi): Fold with globals only.
23420         (path_range_query::compute_ranges_in_phis): Simply set range.
23421         (path_range_query::compute_ranges_in_block): Call cache directly.
23422         * gimple-range-path.h (class path_range_query): Replace bitmap
23423         and cache pointer with lazy cache object.
23424         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
23426 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
23428         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
23429         (ssa_cache::~ssa_cache): Rename.
23430         (ssa_cache::has_range): New.
23431         (ssa_cache::get_range): Rename.
23432         (ssa_cache::set_range): Rename.
23433         (ssa_cache::clear_range): Rename.
23434         (ssa_cache::clear): Rename.
23435         (ssa_cache::dump): Rename and use get_range.
23436         (ranger_cache::get_global_range): Use get_range and set_range.
23437         (ranger_cache::range_of_def): Use get_range.
23438         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
23439         (class ranger_cache): Use ssa_cache.
23440         * gimple-range-path.cc (path_range_query::path_range_query): Use
23441         ssa_cache.
23442         (path_range_query::get_cache): Use get_range.
23443         (path_range_query::set_cache): Use set_range.
23444         * gimple-range-path.h (class path_range_query): Use ssa_cache.
23445         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
23446         (assume_query::range_of_expr): Use get_range.
23447         (assume_query::assume_query): Use set_range.
23448         (assume_query::calculate_op): Use get_range and set_range.
23449         * gimple-range.h (class assume_query): Use ssa_cache.
23451 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
23453         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
23454         and local to optionally zero memory.
23455         (br_vector::grow): Only zero memory if flag is set.
23456         (class sbr_lazy_vector): New.
23457         (sbr_lazy_vector::sbr_lazy_vector): New.
23458         (sbr_lazy_vector::set_bb_range): New.
23459         (sbr_lazy_vector::get_bb_range): New.
23460         (sbr_lazy_vector::bb_range_p): New.
23461         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
23462         * gimple-range-gori.cc (gori_map::calculate_gori): Use
23463         param_vrp_switch_limit.
23464         (gori_compute::gori_compute): Use param_vrp_switch_limit.
23465         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
23466         (vrp_switch_limit): Rename from evrp_switch_limit.
23467         (vrp_vector_threshold): New.
23469 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
23471         * value-relation.cc (dom_oracle::query_relation): Check early for lack
23472         of any relation.
23473         * value-relation.h (equiv_oracle::has_equiv_p): New.
23475 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
23477         PR tree-optimization/109417
23478         * gimple-range-gori.cc (range_def_chain::register_dependency):
23479         Save the ssa version number, not the pointer.
23480         (gori_compute::may_recompute_p): No need to check if a dependency
23481         is in the free list.
23482         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
23483         fields to be unsigned int instead of trees.
23484         (ange_def_chain::depend1): Adjust.
23485         (ange_def_chain::depend2): Adjust.
23486         * gimple-range.h: Include "ssa.h" to inline ssa_name().
23488 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
23490         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
23491         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
23492         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
23494 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
23496         PR target/104338
23497         * config/riscv/riscv-protos.h: Add helper function stubs.
23498         * config/riscv/riscv.cc: Add helper functions for subword masking.
23499         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
23500         -mno-inline-atomics.
23501         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
23502         fetch_and_nand, CAS, and exchange ops.
23503         * doc/invoke.texi: Add blurb regarding new command-line flags
23504         -minline-atomics and -mno-inline-atomics.
23506 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23508         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
23509         Reimplement using standard RTL codes instead of unspec.
23510         (aarch64_rshrn2<mode>_insn_be): Likewise.
23511         (aarch64_rshrn2<mode>): Adjust for the above.
23512         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
23514 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23516         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
23517         with standard RTL codes instead of an UNSPEC.
23518         (aarch64_rshrn<mode>_insn_be): Likewise.
23519         (aarch64_rshrn<mode>): Adjust for the above.
23520         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
23522 2023-04-26  Pan Li  <pan2.li@intel.com>
23523             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23525         * config/riscv/riscv.cc (riscv_classify_address): Allow
23526         const0_rtx for the RVV load/store.
23528 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23530         * range-op.cc (range_op_cast_tests): Remove legacy support.
23531         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
23532         * value-range.cc (irange::operator=): Same.
23533         (get_legacy_range): Same.
23534         (irange::copy_legacy_to_multi_range): Delete.
23535         (irange::copy_to_legacy): Delete.
23536         (irange::irange_set_anti_range): Delete.
23537         (irange::set): Remove legacy support.
23538         (irange::verify_range): Same.
23539         (irange::legacy_lower_bound): Delete.
23540         (irange::legacy_upper_bound): Delete.
23541         (irange::legacy_equal_p): Delete.
23542         (irange::operator==): Remove legacy support.
23543         (irange::singleton_p): Same.
23544         (irange::value_inside_range): Same.
23545         (irange::contains_p): Same.
23546         (intersect_ranges): Delete.
23547         (irange::legacy_intersect): Delete.
23548         (union_ranges): Delete.
23549         (irange::legacy_union): Delete.
23550         (irange::legacy_verbose_union_): Delete.
23551         (irange::legacy_verbose_intersect): Delete.
23552         (irange::irange_union): Remove legacy support.
23553         (irange::irange_intersect): Same.
23554         (irange::intersect): Same.
23555         (irange::invert): Same.
23556         (ranges_from_anti_range): Delete.
23557         (gt_pch_nx): Adjust for legacy removal.
23558         (gt_ggc_mx): Same.
23559         (range_tests_legacy): Delete.
23560         (range_tests_misc): Adjust for legacy removal.
23561         (range_tests): Same.
23562         * value-range.h (class irange): Same.
23563         (irange::legacy_mode_p): Delete.
23564         (ranges_from_anti_range): Delete.
23565         (irange::nonzero_p): Adjust for legacy removal.
23566         (irange::lower_bound): Same.
23567         (irange::upper_bound): Same.
23568         (irange::union_): Same.
23569         (irange::intersect): Same.
23570         (irange::set_nonzero): Same.
23571         (irange::set_zero): Same.
23572         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
23574 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23576         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
23577         of range_has_numeric_bounds_p with irange API.
23578         (range_has_numeric_bounds_p): Delete.
23579         * value-range.h (range_has_numeric_bounds_p): Delete.
23581 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23583         * tree-data-ref.cc (compute_distributive_range): Replace uses of
23584         range_int_cst_p with irange API.
23585         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
23586         * tree-vrp.h (range_int_cst_p): Delete.
23587         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
23588         range_int_cst_p with irange API.
23589         (vr_set_zero_nonzero_bits): Same.
23590         (range_fits_type_p): Same.
23591         (simplify_using_ranges::simplify_casted_cond): Same.
23592         * tree-vrp.cc (range_int_cst_p): Remove.
23594 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23596         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
23598 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23600         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
23601         API uses to new API.
23602         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
23603         * internal-fn.cc (get_min_precision): Same.
23604         * match.pd: Same.
23605         * tree-affine.cc (expr_to_aff_combination): Same.
23606         * tree-data-ref.cc (dr_step_indicator): Same.
23607         * tree-dfa.cc (get_ref_base_and_extent): Same.
23608         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
23609         * tree-ssa-phiopt.cc (two_value_replacement): Same.
23610         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
23611         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
23612         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
23613         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
23614         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
23615         * tree.cc (get_range_pos_neg): Same.
23617 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23619         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
23620         vrange::dump instead of ad-hoc dumper.
23621         * tree-ssa-strlen.cc (dump_strlen_info): Same.
23622         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
23623         dump_generic_node.
23625 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23627         * range-op.cc (operator_cast::op1_range): Use
23628         create_possibly_reversed_range.
23629         (operator_bitwise_and::simple_op1_range_solver): Same.
23630         * value-range.cc (swap_out_of_order_endpoints): Delete.
23631         (irange::set): Remove call to swap_out_of_order_endpoints.
23633 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23635         * builtins.cc (determine_block_size): Convert use of legacy API to
23636         get_legacy_range.
23637         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
23638         (array_bounds_checker::check_array_ref): Same.
23639         * gimple-ssa-warn-restrict.cc
23640         (builtin_memref::extend_offset_range): Same.
23641         * ipa-cp.cc (ipcp_store_vr_results): Same.
23642         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
23643         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
23644         (ipa_write_jump_function): Same.
23645         * pointer-query.cc (get_size_range): Same.
23646         * tree-data-ref.cc (split_constant_offset): Same.
23647         * tree-ssa-strlen.cc (get_range): Same.
23648         (maybe_diag_stxncpy_trunc): Same.
23649         (strlen_pass::get_len_or_size): Same.
23650         (strlen_pass::count_nonzero_bytes_addr): Same.
23651         * tree-vect-patterns.cc (vect_get_range_info): Same.
23652         * value-range.cc (irange::maybe_anti_range): Remove.
23653         (get_legacy_range): New.
23654         (irange::copy_to_legacy): Use get_legacy_range.
23655         (ranges_from_anti_range): Same.
23656         * value-range.h (class irange): Remove maybe_anti_range.
23657         (get_legacy_range): New.
23658         * vr-values.cc (check_for_binary_op_overflow): Convert use of
23659         legacy API to get_legacy_range.
23660         (compare_ranges): Same.
23661         (compare_range_with_value): Same.
23662         (bounds_of_var_in_loop): Same.
23663         (find_case_label_ranges): Same.
23664         (simplify_using_ranges::simplify_switch_using_ranges): Same.
23666 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23668         * value-range-pretty-print.cc (vrange_printer::visit): Remove
23669         constant_p use.
23670         * value-range.cc (irange::constant_p): Remove.
23671         (irange::get_nonzero_bits_from_range): Remove constant_p use.
23672         * value-range.h (class irange): Remove constant_p.
23673         (irange::num_pairs): Remove constant_p use.
23675 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23677         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
23678         symbolics support.
23679         (irange::set): Same.
23680         (irange::legacy_lower_bound): Same.
23681         (irange::legacy_upper_bound): Same.
23682         (irange::contains_p): Same.
23683         (range_tests_legacy): Same.
23684         (irange::normalize_addresses): Remove.
23685         (irange::normalize_symbolics): Remove.
23686         (irange::symbolic_p): Remove.
23687         * value-range.h (class irange): Remove symbolic_p,
23688         normalize_symbolics, and normalize_addresses.
23689         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
23690         Remove symbolics support.
23692 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23694         * value-range.cc (irange::may_contain_p): Remove.
23695         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
23696         usage with contains_p.
23697         * vr-values.cc (compare_range_with_value): Same.
23699 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23701         * tree-vrp.cc (supported_types_p): Remove.
23702         (defined_ranges_p): Remove.
23703         (range_fold_binary_expr): Remove.
23704         (range_fold_unary_expr): Remove.
23705         * tree-vrp.h (range_fold_unary_expr): Remove.
23706         (range_fold_binary_expr): Remove.
23708 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23710         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
23711         (ipa_value_range_from_jfunc): Same.
23712         (propagate_vr_across_jump_function): Same.
23713         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
23714         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
23715         * vr-values.cc (bounds_of_var_in_loop): Same.
23717 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23719         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
23720         Add irange argument.
23721         (check_out_of_bounds_and_warn): Remove check for vr.
23722         (array_bounds_checker::check_array_ref): Remove pointer qualifier
23723         for vr and adjust accordingly.
23724         * gimple-array-bounds.h (get_value_range): Add irange argument.
23725         * value-query.cc (class equiv_allocator): Delete.
23726         (range_query::get_value_range): Delete.
23727         (range_query::range_query): Remove allocator access.
23728         (range_query::~range_query): Same.
23729         * value-query.h (get_value_range): Delete.
23730         * vr-values.cc
23731         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
23732         call to get_value_range.
23733         (check_for_binary_op_overflow): Same.
23734         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
23735         (simplify_using_ranges::simplify_abs_using_ranges): Same.
23736         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
23737         (simplify_using_ranges::simplify_casted_cond): Same.
23738         (simplify_using_ranges::simplify_switch_using_ranges): Same.
23739         (simplify_using_ranges::two_valued_val_range_p): Same.
23741 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23743         * vr-values.cc
23744         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
23745         Rename to...
23746         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
23747         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
23748         (simplify_using_ranges::legacy_fold_cond): ...this.
23749         (simplify_using_ranges::fold_cond): Rename
23750         vrp_evaluate_conditional_warnv_with_ops to
23751         legacy_fold_cond_overflow.
23752         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
23753         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
23754         legacy_fold_cond_overflow respectively.
23756 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
23758         * vr-values.cc (get_vr_for_comparison): Remove.
23759         (compare_name_with_value): Same.
23760         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
23761         compare_name_with_value.
23762         * vr-values.h: Remove compare_name_with_value.
23763         Remove get_vr_for_comparison.
23765 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
23767         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
23768         (bswapsi2): New define_insn.
23769         (swaphi): New define_insn to exchange two registers (swpw).
23770         (define_peephole2): Recognize exchange of registers as swaphi.
23772 2023-04-26  Richard Biener  <rguenther@suse.de>
23774         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
23775         Avoid last_stmt.
23776         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
23777         * predict.cc (apply_return_prediction): Likewise.
23778         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
23779         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
23780         (make_edges_bb): Likewise.
23781         (make_cond_expr_edges): Likewise.
23782         (end_recording_case_labels): Likewise.
23783         (make_gimple_asm_edges): Likewise.
23784         (cleanup_dead_labels): Likewise.
23785         (group_case_labels): Likewise.
23786         (gimple_can_merge_blocks_p): Likewise.
23787         (gimple_merge_blocks): Likewise.
23788         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
23789         (gimple_duplicate_sese_tail): Avoid last_stmt.
23790         (find_loop_dist_alias): Likewise.
23791         (gimple_block_ends_with_condjump_p): Likewise.
23792         (gimple_purge_dead_eh_edges): Likewise.
23793         (gimple_purge_dead_abnormal_call_edges): Likewise.
23794         (pass_warn_function_return::execute): Likewise.
23795         (execute_fixup_cfg): Likewise.
23796         * tree-eh.cc (redirect_eh_edge_1): Likewise.
23797         (pass_lower_resx::execute): Likewise.
23798         (pass_lower_eh_dispatch::execute): Likewise.
23799         (cleanup_empty_eh): Likewise.
23800         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
23801         (predicate_bbs): Likewise.
23802         (ifcvt_split_critical_edges): Likewise.
23803         * tree-loop-distribution.cc (create_edge_for_control_dependence):
23804         Likewise.
23805         (loop_distribution::transform_reduction_loop): Likewise.
23806         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
23807         (try_transform_to_exit_first_loop_alt): Likewise.
23808         (transform_to_exit_first_loop): Likewise.
23809         (create_parallel_loop): Likewise.
23810         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
23811         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
23812         (eliminate_unnecessary_stmts): Likewise.
23813         * tree-ssa-dom.cc
23814         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
23815         Likewise.
23816         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
23817         (pass_tree_ifcombine::execute): Likewise.
23818         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
23819         (should_duplicate_loop_header_p): Likewise.
23820         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
23821         (tree_estimate_loop_size): Likewise.
23822         (try_unroll_loop_completely): Likewise.
23823         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
23824         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
23825         (canonicalize_loop_ivs): Likewise.
23826         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
23827         (bound_difference): Likewise.
23828         (number_of_iterations_popcount): Likewise.
23829         (number_of_iterations_cltz): Likewise.
23830         (number_of_iterations_cltz_complement): Likewise.
23831         (simplify_using_initial_conditions): Likewise.
23832         (number_of_iterations_exit_assumptions): Likewise.
23833         (loop_niter_by_eval): Likewise.
23834         (estimate_numbers_of_iterations): Likewise.
23836 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23838         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
23840 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
23842         PR target/108758
23843         * config/rs6000/rs6000-builtins.def
23844         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
23845         __builtin_vsx_scalar_cmp_exp_qp_lt,
23846         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
23847         to power9-vector.
23849 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
23851         PR target/109069
23852         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
23853         easy_vector_constant with const_vector_each_byte_same, add
23854         handlings in preparation for !easy_vector_constant, and update
23855         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
23856         * config/rs6000/predicates.md (const_vector_each_byte_same): New
23857         predicate.
23859 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23861         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
23862         (*pred_ltge<mode>_merge_tie_mask): Ditto.
23863         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
23864         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
23865         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
23866         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
23867         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
23869 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23871         * config/riscv/vector.md: Fix redundant vmv1r.v.
23873 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23875         * config/riscv/vector.md: Fix RA constraint.
23877 2023-04-26  Pan Li  <pan2.li@intel.com>
23879         PR target/109272
23880         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
23881         check for vn_reference equal.
23883 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23885         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
23886         auto-vectorization preference.
23887         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
23888         auto-vectorization.
23889         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
23891 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
23893         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
23894         and bclridisi_nottwobits patterns.
23895         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
23896         predicate to avoid splitting arith constants.
23897         (const_nottwobits_not_arith_operand): New predicate.
23899 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
23901         * recog.cc (peep2_attempt, peep2_update_life): Correct
23902         head-comment description of parameter match_len.
23904 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
23906         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
23907         riscv_split_symbol() drop in_splitter arg.
23908         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
23909         riscv_split_symbol() drop in_splitter arg.
23910         riscv_force_temporary() drop in_splitter arg.
23911         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
23912         riscv_split_symbol() drop in_splitter arg.
23914 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
23916         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
23917         superfluous debug temporaries for single GIMPLE assignments.
23919 2023-04-25  Richard Biener  <rguenther@suse.de>
23921         PR tree-optimization/109609
23922         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
23923         Clarify semantics.
23924         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
23925         the size given by arg_max_access_size_given_by_arg_p as
23926         maximum, not exact, size.
23928 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23930         PR target/99195
23931         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
23932         (orn<mode>3<vczle><vczbe>): ... This.
23933         (bic<mode>3): Rename to...
23934         (bic<mode>3<vczle><vczbe>): ... This.
23935         (<su><maxmin><mode>3): Rename to...
23936         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
23938 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23940         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
23941         * config/aarch64/iterators.md (VQDIV): New mode iterator.
23942         (vnx2di): New mode attribute.
23944 2023-04-25  Richard Biener  <rguenther@suse.de>
23946         PR rtl-optimization/109585
23947         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
23949 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
23951         PR target/109566
23952         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
23953         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
23954         is larger than signed int maximum.
23956 2023-04-25  Martin Liska  <mliska@suse.cz>
23958         * doc/gcov.texi: Document the new "calls" field and document
23959         the API bump. Mention also "block_ids" for lines.
23960         * gcov.cc (output_intermediate_json_line): Output info about
23961         calls and extend branches as well.
23962         (generate_results): Bump version to 2.
23963         (output_line_details): Use block ID instead of a non-sensual
23964         index.
23966 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
23968         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
23969         length attribute for the first (memory operand) alternative.
23971 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
23973         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
23974         * config/aarch64/constraints.md: Make "Umn" relaxed memory
23975         constraint.
23976         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
23978 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
23980         * value-range.cc (frange::set): Adjust constructor.
23981         * value-range.h (nan_state::nan_state): Replace default
23982         constructor with one taking an argument.
23984 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
23986         * ipa-cp.cc (ipa_range_contains_p): New.
23987         (decide_whether_version_node): Use it.
23989 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
23991         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
23992         simplify two successive VEC_PERM_EXPRs with same VLA mask,
23993         where mask chooses elements in reverse order.
23995 2023-04-24  Andrew Pinski  <apinski@marvell.com>
23997         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
23998         and support diamond shaped basic block form.
23999         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
24001 2023-04-24  Andrew Pinski  <apinski@marvell.com>
24003         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
24004         Instead of calling last_and_only_stmt, look for the last statement
24005         manually.
24007 2023-04-24  Andrew Pinski  <apinski@marvell.com>
24009         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
24010         New function.
24011         (match_simplify_replacement): Call
24012         empty_bb_or_one_feeding_into_p instead of doing it inline.
24014 2023-04-24  Andrew Pinski  <apinski@marvell.com>
24016         PR tree-optimization/68894
24017         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
24018         continue for the do_hoist_loads diamond case.
24020 2023-04-24  Andrew Pinski  <apinski@marvell.com>
24022         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
24023         code for better code readability.
24025 2023-04-24  Andrew Pinski  <apinski@marvell.com>
24027         PR tree-optimization/109604
24028         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
24029         diamond form check from ...
24030         (minmax_replacement): Here.
24032 2023-04-24  Patrick Palka  <ppalka@redhat.com>
24034         * tree.cc (strip_array_types): Don't define here.
24035         (is_typedef_decl): Don't define here.
24036         (typedef_variant_p): Don't define here.
24037         * tree.h (strip_array_types): Define here.
24038         (is_typedef_decl): Define here.
24039         (typedef_variant_p): Define here.
24041 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
24043         * doc/generic.texi (OpenMP): Add != to allowed
24044         conditions and state that vars can be unsigned.
24045         * tree.def (OMP_FOR): Likewise.
24047 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24049         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
24051 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
24053         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
24054         Remove explicit Solaris 11 references.
24055         Markup fixes.
24056         (Options specification, --with-gnu-as): as and gas always differ
24057         on Solaris.
24058         Remove /usr/ccs/bin reference.
24059         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
24060         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
24061         (*-*-solaris2*): ... here.
24062         Update bundled GCC versions.
24063         Don't refer to pre-built binaries.
24064         Remove /bin/sh warning.
24065         Update assembler, linker recommendations.
24066         Document GNAT bootstrap compiler.
24067         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
24068         (sparc64-*-solaris2*): Move content...
24069         (sparcv9-*-solaris2*): ...here.
24070         Add GDC for 64-bit bootstrap compilers.
24072 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24074         PR target/109406
24075         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
24076         case.
24077         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
24078         pattern.
24080 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24082         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
24083         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
24084         (aarch64_<su>abal2<mode>): New define_expand.
24085         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
24086         (aarch64_rtx_costs): Handle ABD rtxes.
24087         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
24088         * config/aarch64/iterators.md (ABAL2): Delete.
24089         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
24091 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24093         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
24094         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
24095         (<sur>sadv16qi): Rename to...
24096         (<su>sadv16qi): ... This.  Adjust for the above.
24097         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
24098         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
24099         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
24100         * config/aarch64/iterators.md (ABAL): Delete.
24101         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
24103 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24105         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
24106         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
24107         (aarch64_<su>abdl2<mode>): New define_expand.
24108         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
24109         * config/aarch64/iterators.md (ABDL2): Delete.
24110         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
24112 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24114         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
24115         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
24116         unspec.
24117         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
24118         * config/aarch64/iterators.md (ABDL): Delete.
24119         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
24121 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24123         * config/aarch64/aarch64-simd.md
24124         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
24126 2023-04-24  Richard Biener  <rguenther@suse.de>
24128         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
24129         last_stmt.
24130         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
24131         Likewise.
24132         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
24133         (set_switch_stmt_execution_predicate): Likewise.
24134         (phi_result_unknown_predicate): Likewise.
24135         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
24136         (ipa_analyze_indirect_call_uses): Likewise.
24137         * predict.cc (predict_iv_comparison): Likewise.
24138         (predict_extra_loop_exits): Likewise.
24139         (predict_loops): Likewise.
24140         (tree_predict_by_opcode): Likewise.
24141         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
24142         Likewise.
24143         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
24144         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
24145         (replace_phi_edge_with_variable): Likewise.
24146         (two_value_replacement): Likewise.
24147         (value_replacement): Likewise.
24148         (minmax_replacement): Likewise.
24149         (spaceship_replacement): Likewise.
24150         (cond_removal_in_builtin_zero_pattern): Likewise.
24151         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
24152         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
24153         (vn_phi_lookup): Likewise.
24154         (vn_phi_insert): Likewise.
24155         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
24156         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
24157         Likewise.
24158         (back_threader_profitability::possibly_profitable_path_p):
24159         Likewise.
24160         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
24161         Likewise.
24162         * tree-switch-conversion.cc (pass_convert_switch::execute):
24163         Likewise.
24164         (pass_lower_switch<O0>::execute): Likewise.
24165         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
24166         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
24167         * tree-vect-slp.cc (vect_slp_function): Likewise.
24168         * tree-vect-stmts.cc (cfun_returns): Likewise.
24169         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
24170         (vect_loop_dist_alias_call): Likewise.
24172 2023-04-24  Richard Biener  <rguenther@suse.de>
24174         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
24176 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24178         * config/riscv/riscv-vsetvl.cc
24179         (vector_infos_manager::all_avail_in_compatible_p): New function.
24180         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
24181         * config/riscv/riscv-vsetvl.h: New function.
24183 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24185         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
24186         comment for cleanup_insns.
24188 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24190         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
24191         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
24192         with the fault first load property.
24194 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24196         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
24197         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
24199 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24201         PR target/99195
24202         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
24203         (aarch64_addp<mode><vczle><vczbe>): ... This.
24205 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
24207         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
24208         provide reasonable values for common arithmetic operations and
24209         immediate operands (in several machine modes).
24211 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
24213         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
24214         format specifier to output high_part register name of SImode reg.
24215         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
24216         (zero_extendqihi2): Fix lengths, consistent formatting and add
24217         "and Rx,#255" alternative, for documentation purposes.
24218         (zero_extendhisi2): New define_insn.
24220 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
24222         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
24223         SImode shifts by two by performing a single bit SImode shift twice.
24225 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
24227         PR tree-optimization/109593
24228         * value-range.cc (frange::operator==): Handle NANs.
24230 2023-04-23  liuhongt  <hongtao.liu@intel.com>
24232         PR rtl-optimization/108707
24233         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
24234         GENERAL_REGS when preferred reg_class is not known.
24236 2023-04-22  Andrew Pinski  <apinski@marvell.com>
24238         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
24239         Change the code around slightly to move diamond
24240         handling for do_store_elim/do_hoist_loads out of
24241         the big if/else.
24243 2023-04-22  Andrew Pinski  <apinski@marvell.com>
24245         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
24246         Remove check on empty_block_p.
24248 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
24250         PR bootstrap/109589
24251         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
24252         * realmpfr.h (class auto_mpfr): Likewise.
24254 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
24256         PR tree-optimization/109583
24257         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
24258         if vec_mode is not VECTOR_MODE_P.
24260 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
24261             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
24263         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
24264         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
24265         loop profile and bounds after header duplication.
24266         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
24267         Break out from try_peel_loop; fix handling of 0 iterations.
24268         (try_peel_loop): Use adjust_loop_info_after_peeling.
24270 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
24272         PR tree-optimization/109546
24273         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
24274         not fold conditions with ADDR_EXPR early.
24276 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24278         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
24279         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
24280         for umax.
24281         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
24282         (*aarch64_<optab><mode>3_zero): Define.
24283         (*aarch64_<optab><mode>3_cssc): Likewise.
24284         * config/aarch64/iterators.md (maxminand): New code attribute.
24286 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24288         PR target/108779
24289         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
24290         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
24291         Define prototype.
24292         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
24293         (aarch64_override_options_internal): Handle the above.
24294         (aarch64_output_load_tp): New function.
24295         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
24296         aarch64_output_load_tp.
24297         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
24298         (mtp=): New option.
24299         * doc/invoke.texi (AArch64 Options): Document -mtp=.
24301 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24303         PR target/99195
24304         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
24305         (add_vec_concat_subst_be): Likewise.
24306         (vczle): Likewise.
24307         (vczbe): Likewise.
24308         (add<mode>3): Rename to...
24309         (add<mode>3<vczle><vczbe>): ... This.
24310         (sub<mode>3): Rename to...
24311         (sub<mode>3<vczle><vczbe>): ... This.
24312         (mul<mode>3): Rename to...
24313         (mul<mode>3<vczle><vczbe>): ... This.
24314         (and<mode>3): Rename to...
24315         (and<mode>3<vczle><vczbe>): ... This.
24316         (ior<mode>3): Rename to...
24317         (ior<mode>3<vczle><vczbe>): ... This.
24318         (xor<mode>3): Rename to...
24319         (xor<mode>3<vczle><vczbe>): ... This.
24320         * config/aarch64/iterators.md (VDZ): Define.
24322 2023-04-21  Patrick Palka  <ppalka@redhat.com>
24324         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
24325         and type_p.
24327 2023-04-21  Jan Hubicka  <jh@suse.cz>
24329         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
24330         commit.
24332 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
24334         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
24335         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
24337 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
24339         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
24340         force_reg instead of copy_to_mode_reg.
24341         (aarch64_expand_vector_init): Likewise.
24343 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
24345         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
24346         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
24347         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
24348         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
24349         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
24350         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
24351         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
24352         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
24353         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
24354         * config/i386/predicates.md (index_register_operand):
24355         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
24356         * config/i386/i386.cc (ix86_legitimate_address_p): Use
24357         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
24358         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
24360 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
24361             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
24363         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
24364         latch.
24366 2023-04-21  Richard Biener  <rguenther@suse.de>
24368         * is-a.h (safe_is_a): New.
24370 2023-04-21  Richard Biener  <rguenther@suse.de>
24372         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
24373         (gphi_iterator::operator*): Likewise.
24375 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
24376             Michal Jires  <michal@jires.eu>
24378         * ipa-inline.cc (class inline_badness): New class.
24379         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
24380         of sreal.
24381         (update_edge_key): Update.
24382         (lookup_recursive_calls): Likewise.
24383         (recursive_inlining): Likewise.
24384         (add_new_edges_to_heap): Likewise.
24385         (inline_small_functions): Likewise.
24387 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
24389         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
24391 2023-04-21  Richard Biener  <rguenther@suse.de>
24393         PR tree-optimization/109573
24394         * tree-vect-loop.cc (vectorizable_live_operation): Allow
24395         unhandled SSA copy as well.  Demote assert to checking only.
24397 2023-04-21  Richard Biener  <rguenther@suse.de>
24399         * df-core.cc (df_analyze): Compute RPO on the reverse graph
24400         for DF_BACKWARD problems.
24401         (loop_post_order_compute): Rename to ...
24402         (loop_rev_post_order_compute): ... this, compute a RPO.
24403         (loop_inverted_post_order_compute): Rename to ...
24404         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
24405         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
24406         problems, RPO on the inverted graph for DF_BACKWARD.
24408 2023-04-21  Richard Biener  <rguenther@suse.de>
24410         * cfganal.h (inverted_rev_post_order_compute): Rename
24411         from ...
24412         (inverted_post_order_compute): ... this.  Add struct function
24413         argument, change allocation to a C array.
24414         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
24415         * lcm.cc (compute_antinout_edge): Adjust.
24416         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
24417         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
24418         * tree-ssa-pre.cc (compute_antic): Likewise.
24420 2023-04-21  Richard Biener  <rguenther@suse.de>
24422         * df.h (df_d::postorder_inverted): Change back to int *,
24423         clarify comments.
24424         * df-core.cc (rest_of_handle_df_finish): Adjust.
24425         (df_analyze_1): Likewise.
24426         (df_analyze): For DF_FORWARD problems use RPO on the forward
24427         graph.  Adjust.
24428         (loop_inverted_post_order_compute): Adjust API.
24429         (df_analyze_loop): Adjust.
24430         (df_get_n_blocks): Likewise.
24431         (df_get_postorder): Likewise.
24433 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24435         PR target/108270
24436         * config/riscv/riscv-vsetvl.cc
24437         (vector_infos_manager::all_empty_predecessor_p): New function.
24438         (pass_vsetvl::backward_demand_fusion): Ditto.
24439         * config/riscv/riscv-vsetvl.h: Ditto.
24441 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
24443         PR target/109582
24444         * config/riscv/generic.md: Change standard names to insn names.
24446 2023-04-21  Richard Biener  <rguenther@suse.de>
24448         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
24449         (compute_laterin): Use RPO.
24450         (compute_available): Likewise.
24452 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
24454         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
24456 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24458         PR target/109547
24459         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
24460         (vector_insn_info::skip_avl_compatible_p): Ditto.
24461         (vector_insn_info::merge): Remove default value.
24462         (pass_vsetvl::compute_local_backward_infos): Ditto.
24463         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
24464         * config/riscv/riscv-vsetvl.h: Ditto.
24466 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
24468         * doc/extend.texi (Common Function Attributes): Remove duplicate
24469         word.
24471 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
24473         PR tree-optimization/109564
24474         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
24475         UNDEFINED range names when deciding if all PHI arguments are the same,
24477 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
24479         PR tree-optimization/109011
24480         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
24481         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
24482         .CTZ (X) = PREC - .POPCOUNT (X | -X).
24484 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
24486         * lra-constraints.cc (match_reload): Exclude some hard regs for
24487         multi-reg inout reload pseudos used in asm in different mode.
24489 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
24491         * config/arm/arm.cc (thumb1_legitimate_address_p):
24492         Use VIRTUAL_REGISTER_P predicate.
24493         (arm_eliminable_register): Ditto.
24494         * config/avr/avr.md (push<mode>_1): Ditto.
24495         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
24496         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
24497         * config/i386/predicates.md (register_no_elim_operand): Ditto.
24498         * config/iq2000/predicates.md (call_insn_operand): Ditto.
24499         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
24501 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
24503         PR target/78952
24504         * config/i386/predicates.md (extract_operator): New predicate.
24505         * config/i386/i386.md (any_extract): Remove code iterator.
24506         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
24507         (*cmpqi_ext<mode>_1): Ditto.
24508         (*cmpqi_ext<mode>_2): Ditto.
24509         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
24510         (*cmpqi_ext<mode>_3): Ditto.
24511         (*cmpqi_ext<mode>_4): Ditto.
24512         (*extzvqi_mem_rex64): Ditto.
24513         (*extzvqi): Ditto.
24514         (*insvqi_2): Ditto.
24515         (*extendqi<SWI24:mode>_ext_1): Ditto.
24516         (*addqi_ext<mode>_0): Ditto.
24517         (*addqi_ext<mode>_1): Ditto.
24518         (*addqi_ext<mode>_2): Ditto.
24519         (*subqi_ext<mode>_0): Ditto.
24520         (*subqi_ext<mode>_2): Ditto.
24521         (*testqi_ext<mode>_1): Ditto.
24522         (*testqi_ext<mode>_2): Ditto.
24523         (*andqi_ext<mode>_0): Ditto.
24524         (*andqi_ext<mode>_1): Ditto.
24525         (*andqi_ext<mode>_1_cc): Ditto.
24526         (*andqi_ext<mode>_2): Ditto.
24527         (*<any_or:code>qi_ext<mode>_0): Ditto.
24528         (*<any_or:code>qi_ext<mode>_1): Ditto.
24529         (*<any_or:code>qi_ext<mode>_2): Ditto.
24530         (*xorqi_ext<mode>_1_cc): Ditto.
24531         (*negqi_ext<mode>_2): Ditto.
24532         (*ashlqi_ext<mode>_2): Ditto.
24533         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
24535 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
24537         PR target/108248
24538         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
24539         <bitmanip_insn> as the type to allow for fine grained control of
24540         scheduling these insns.
24541         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
24542         min, max.
24543         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
24544         pcnt, signed and unsigned min/max.
24546 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24547             kito-cheng  <kito.cheng@sifive.com>
24549         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
24551 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24552             kito-cheng  <kito.cheng@sifive.com>
24554         PR target/109535
24555         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
24556         (pass_vsetvl::cleanup_insns): Fix bug.
24558 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
24560         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
24561         (ldexp<mode>3): Delete.
24562         (ldexp<mode>3<exec>): Change "B" to "A".
24564 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
24565             Jonathan Wakely  <jwakely@redhat.com>
24567         * tree.h (built_in_function_equal_p): New helper function.
24568         (fndecl_built_in_p): Turn into variadic template to support
24569         1 or more built_in_function arguments.
24570         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
24571         * gimplify.cc (goa_stabilize_expr): Likewise.
24572         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
24573         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
24574         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
24575         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
24576         cgraph_update_edges_for_call_stmt_node,
24577         cgraph_edge::verify_corresponds_to_fndecl,
24578         cgraph_node::verify_node): Likewise.
24579         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
24580         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
24581         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
24583 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
24585         PR tree-optimization/109011
24586         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
24587         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
24588         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
24589         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
24590         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
24591         case.
24592         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
24594 2023-04-20  Richard Biener  <rguenther@suse.de>
24596         * df-core.cc (rest_of_handle_df_initialize): Remove
24597         computation of df->postorder, df->postorder_inverted and
24598         df->n_blocks.
24600 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
24602         * common/config/i386/i386-common.cc
24603         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
24604         (ix86_handle_option): Set AVX flag for VAES.
24605         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
24606         Add OPTION_MASK_ISA2_VAES_UNSET.
24607         (def_builtin): Share builtin between AES and VAES.
24608         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
24609         Ditto.
24610         * config/i386/i386.md (aes): New isa attribute.
24611         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
24612         (aesenclast): Ditto.
24613         (aesdec): Ditto.
24614         (aesdeclast): Ditto.
24615         * config/i386/vaesintrin.h: Remove redundant avx target push.
24616         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
24617         (_mm_aesdeclast_si128): Ditto.
24618         (_mm_aesenc_si128): Ditto.
24619         (_mm_aesenclast_si128): Ditto.
24621 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
24623         * config/i386/avx2intrin.h
24624         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
24625         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
24626         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
24627         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
24628         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
24629         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
24630         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
24631         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
24632         (_mm_reduce_add_epi16): New instrinsics.
24633         (_mm_reduce_mul_epi16): Ditto.
24634         (_mm_reduce_and_epi16): Ditto.
24635         (_mm_reduce_or_epi16): Ditto.
24636         (_mm_reduce_max_epi16): Ditto.
24637         (_mm_reduce_max_epu16): Ditto.
24638         (_mm_reduce_min_epi16): Ditto.
24639         (_mm_reduce_min_epu16): Ditto.
24640         (_mm256_reduce_add_epi16): Ditto.
24641         (_mm256_reduce_mul_epi16): Ditto.
24642         (_mm256_reduce_and_epi16): Ditto.
24643         (_mm256_reduce_or_epi16): Ditto.
24644         (_mm256_reduce_max_epi16): Ditto.
24645         (_mm256_reduce_max_epu16): Ditto.
24646         (_mm256_reduce_min_epi16): Ditto.
24647         (_mm256_reduce_min_epu16): Ditto.
24648         (_mm_reduce_add_epi8): Ditto.
24649         (_mm_reduce_mul_epi8): Ditto.
24650         (_mm_reduce_and_epi8): Ditto.
24651         (_mm_reduce_or_epi8): Ditto.
24652         (_mm_reduce_max_epi8): Ditto.
24653         (_mm_reduce_max_epu8): Ditto.
24654         (_mm_reduce_min_epi8): Ditto.
24655         (_mm_reduce_min_epu8): Ditto.
24656         (_mm256_reduce_add_epi8): Ditto.
24657         (_mm256_reduce_mul_epi8): Ditto.
24658         (_mm256_reduce_and_epi8): Ditto.
24659         (_mm256_reduce_or_epi8): Ditto.
24660         (_mm256_reduce_max_epi8): Ditto.
24661         (_mm256_reduce_max_epu8): Ditto.
24662         (_mm256_reduce_min_epi8): Ditto.
24663         (_mm256_reduce_min_epu8): Ditto.
24664         * config/i386/avx512vlbwintrin.h:
24665         (_mm_mask_reduce_add_epi16): Ditto.
24666         (_mm_mask_reduce_mul_epi16): Ditto.
24667         (_mm_mask_reduce_and_epi16): Ditto.
24668         (_mm_mask_reduce_or_epi16): Ditto.
24669         (_mm_mask_reduce_max_epi16): Ditto.
24670         (_mm_mask_reduce_max_epu16): Ditto.
24671         (_mm_mask_reduce_min_epi16): Ditto.
24672         (_mm_mask_reduce_min_epu16): Ditto.
24673         (_mm256_mask_reduce_add_epi16): Ditto.
24674         (_mm256_mask_reduce_mul_epi16): Ditto.
24675         (_mm256_mask_reduce_and_epi16): Ditto.
24676         (_mm256_mask_reduce_or_epi16): Ditto.
24677         (_mm256_mask_reduce_max_epi16): Ditto.
24678         (_mm256_mask_reduce_max_epu16): Ditto.
24679         (_mm256_mask_reduce_min_epi16): Ditto.
24680         (_mm256_mask_reduce_min_epu16): Ditto.
24681         (_mm_mask_reduce_add_epi8): Ditto.
24682         (_mm_mask_reduce_mul_epi8): Ditto.
24683         (_mm_mask_reduce_and_epi8): Ditto.
24684         (_mm_mask_reduce_or_epi8): Ditto.
24685         (_mm_mask_reduce_max_epi8): Ditto.
24686         (_mm_mask_reduce_max_epu8): Ditto.
24687         (_mm_mask_reduce_min_epi8): Ditto.
24688         (_mm_mask_reduce_min_epu8): Ditto.
24689         (_mm256_mask_reduce_add_epi8): Ditto.
24690         (_mm256_mask_reduce_mul_epi8): Ditto.
24691         (_mm256_mask_reduce_and_epi8): Ditto.
24692         (_mm256_mask_reduce_or_epi8): Ditto.
24693         (_mm256_mask_reduce_max_epi8): Ditto.
24694         (_mm256_mask_reduce_max_epu8): Ditto.
24695         (_mm256_mask_reduce_min_epi8): Ditto.
24696         (_mm256_mask_reduce_min_epu8): Ditto.
24698 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
24700         * common/config/i386/i386-common.cc
24701         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
24702         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
24703         (OPTION_MASK_ISA_AVX_UNSET):
24704         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
24705         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
24706         * config/i386/i386.md (vpclmulqdqvl): New.
24707         * config/i386/sse.md (pclmulqdq): Add evex encoding.
24708         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
24709         push.
24711 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
24713         * config/i386/avx512vlbwintrin.h
24714         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
24715         (_mm_mask_blend_epi8): Ditto.
24716         (_mm256_mask_blend_epi16): Ditto.
24717         (_mm256_mask_blend_epi8): Ditto.
24718         * config/i386/avx512vlintrin.h
24719         (_mm256_mask_blend_pd): Ditto.
24720         (_mm256_mask_blend_ps): Ditto.
24721         (_mm256_mask_blend_epi64): Ditto.
24722         (_mm256_mask_blend_epi32): Ditto.
24723         (_mm_mask_blend_pd): Ditto.
24724         (_mm_mask_blend_ps): Ditto.
24725         (_mm_mask_blend_epi64): Ditto.
24726         (_mm_mask_blend_epi32): Ditto.
24727         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
24728         (VF_AVX512HFBFVL): Move it before the first usage.
24729         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
24730         to VF_AVX512HFBFVL.
24732 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
24734         * common/config/i386/i386-common.cc
24735         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
24736         to OPTION_MASK_ISA_AVX512BW_SET.
24737         (OPTION_MASK_ISA_AVX512F_UNSET):
24738         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
24739         (OPTION_MASK_ISA_AVX512BW_UNSET):
24740         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
24741         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
24742         * config/i386/avx512vbmi2vlintrin.h: Ditto.
24743         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
24744         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
24745         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
24746         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
24747         VI12_AVX512VL.
24748         (compressstore<mode>_mask): Ditto.
24749         (expand<mode>_mask): Ditto.
24750         (expand<mode>_maskz): Ditto.
24751         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
24752         VI12_VI48F_AVX512VL.
24754 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
24756         * common/config/i386/i386-common.cc
24757         (OPTION_MASK_ISA_AVX512BITALG_SET):
24758         Change OPTION_MASK_ISA_AVX512F_SET
24759         to OPTION_MASK_ISA_AVX512BW_SET.
24760         (OPTION_MASK_ISA_AVX512F_UNSET):
24761         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
24762         (OPTION_MASK_ISA_AVX512BW_UNSET):
24763         Add OPTION_MASK_ISA_AVX512BITALG_SET.
24764         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
24765         * config/i386/i386-builtin.def:
24766         Remove redundant OPTION_MASK_ISA_AVX512BW.
24767         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
24768         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
24769         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
24771 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
24773         * config/i386/i386-expand.cc
24774         (ix86_check_builtin_isa_match): Correct wrong comments.
24775         Add a new macro SHARE_BUILTIN and refactor the current if
24776         clauses to macro.
24778 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
24780         * config/i386/cpuid.h: Open a new section for Extended Features
24781         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
24782         %ecx == 1).
24784 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
24786         * config/i386/sse.md: Modify insn vperm{i,f}
24787         and vshuf{i,f}.
24789 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
24791         * config/xtensa/xtensa-opts.h: New header.
24792         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
24793         xtensa_strict_align.
24794         * config/xtensa/xtensa.cc (xtensa_option_override): When
24795         -m[no-]strict-align is not specified in the command line set
24796         xtensa_strict_align to 0 if the hardware supports both unaligned
24797         loads and stores or to 1 otherwise.
24798         * config/xtensa/xtensa.opt (mstrict-align): New option.
24799         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
24801 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
24803         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
24804         function.
24806 2023-04-19  Andrew Pinski  <apinski@marvell.com>
24808         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
24810 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24812         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
24813         (VECTOR_BOOL_MODE): Ditto.
24814         (ADJUST_NUNITS): Ditto.
24815         (ADJUST_ALIGNMENT): Ditto.
24816         (ADJUST_BYTESIZE): Ditto.
24817         (ADJUST_PRECISION): Ditto.
24818         (RVV_MODES): Ditto.
24819         (VECTOR_MODE_WITH_PREFIX): Ditto.
24820         * config/riscv/riscv-v.cc (ENTRY): Ditto.
24821         (get_vlmul): Ditto.
24822         (get_ratio): Ditto.
24823         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
24824         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
24825         (vbool64_t): Ditto.
24826         (vbool32_t): Ditto.
24827         (vbool16_t): Ditto.
24828         (vbool8_t): Ditto.
24829         (vbool4_t): Ditto.
24830         (vbool2_t): Ditto.
24831         (vbool1_t): Ditto.
24832         (vint8mf8_t): Ditto.
24833         (vuint8mf8_t): Ditto.
24834         (vint8mf4_t): Ditto.
24835         (vuint8mf4_t): Ditto.
24836         (vint8mf2_t): Ditto.
24837         (vuint8mf2_t): Ditto.
24838         (vint8m1_t): Ditto.
24839         (vuint8m1_t): Ditto.
24840         (vint8m2_t): Ditto.
24841         (vuint8m2_t): Ditto.
24842         (vint8m4_t): Ditto.
24843         (vuint8m4_t): Ditto.
24844         (vint8m8_t): Ditto.
24845         (vuint8m8_t): Ditto.
24846         (vint16mf4_t): Ditto.
24847         (vuint16mf4_t): Ditto.
24848         (vint16mf2_t): Ditto.
24849         (vuint16mf2_t): Ditto.
24850         (vint16m1_t): Ditto.
24851         (vuint16m1_t): Ditto.
24852         (vint16m2_t): Ditto.
24853         (vuint16m2_t): Ditto.
24854         (vint16m4_t): Ditto.
24855         (vuint16m4_t): Ditto.
24856         (vint16m8_t): Ditto.
24857         (vuint16m8_t): Ditto.
24858         (vint32mf2_t): Ditto.
24859         (vuint32mf2_t): Ditto.
24860         (vint32m1_t): Ditto.
24861         (vuint32m1_t): Ditto.
24862         (vint32m2_t): Ditto.
24863         (vuint32m2_t): Ditto.
24864         (vint32m4_t): Ditto.
24865         (vuint32m4_t): Ditto.
24866         (vint32m8_t): Ditto.
24867         (vuint32m8_t): Ditto.
24868         (vint64m1_t): Ditto.
24869         (vuint64m1_t): Ditto.
24870         (vint64m2_t): Ditto.
24871         (vuint64m2_t): Ditto.
24872         (vint64m4_t): Ditto.
24873         (vuint64m4_t): Ditto.
24874         (vint64m8_t): Ditto.
24875         (vuint64m8_t): Ditto.
24876         (vfloat32mf2_t): Ditto.
24877         (vfloat32m1_t): Ditto.
24878         (vfloat32m2_t): Ditto.
24879         (vfloat32m4_t): Ditto.
24880         (vfloat32m8_t): Ditto.
24881         (vfloat64m1_t): Ditto.
24882         (vfloat64m2_t): Ditto.
24883         (vfloat64m4_t): Ditto.
24884         (vfloat64m8_t): Ditto.
24885         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
24886         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
24887         (riscv_convert_vector_bits): Ditto.
24888         * config/riscv/riscv.md:
24889         * config/riscv/vector-iterators.md:
24890         * config/riscv/vector.md
24891         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
24892         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
24893         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
24894         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
24895         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
24896         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
24897         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
24898         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
24899         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
24901 2023-04-19  Pan Li  <pan2.li@intel.com>
24903         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
24904         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
24906 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
24908         PR target/78904
24909         PR target/78952
24910         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
24911         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
24912         for operand 0. Use any_extract code iterator.
24913         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
24914         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
24915         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
24916         (*cmpqi_ext<mode>_1): Use general_operand predicate
24917         for operand 1. Use any_extract code iterator.
24918         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
24919         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
24921 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
24923         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
24924         (aarch64_uaddw2<mode>): Delete.
24925         (aarch64_ssubw2<mode>): Delete.
24926         (aarch64_usubw2<mode>): Delete.
24927         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
24929 2023-04-19  Richard Biener  <rguenther@suse.de>
24931         * tree-ssa-structalias.cc (do_ds_constraint): Use
24932         solve_add_graph_edge.
24934 2023-04-19  Richard Biener  <rguenther@suse.de>
24936         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
24937         split out from ...
24938         (do_sd_constraint): ... here.
24940 2023-04-19  Richard Biener  <rguenther@suse.de>
24942         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
24943         rejecting the merge when A contains only a non-local label.
24945 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
24947         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
24948         (VIRTUAL_REGISTER_NUM_P): Ditto.
24949         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
24950         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
24951         * function.cc (instantiate_decl_rtl): Ditto.
24952         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
24953         (nonzero_address_p): Ditto.
24954         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
24956 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
24958         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
24960 2023-04-19  Richard Biener  <rguenther@suse.de>
24962         * system.h (auto_mpz::operator->()): New.
24963         * realmpfr.h (auto_mpfr::operator->()): New.
24964         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
24965         * real.cc (real_from_string): Likewise.
24966         (dconst_e_ptr): Likewise.
24967         (dconst_sqrt2_ptr): Likewise.
24968         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
24969         Use auto_mpz.
24970         (bound_difference_of_offsetted_base): Likewise.
24971         (number_of_iterations_ne): Likewise.
24972         (number_of_iterations_lt_to_ne): Likewise.
24973         * ubsan.cc: Include realmpfr.h.
24974         (ubsan_instrument_float_cast): Use auto_mpfr.
24976 2023-04-19  Richard Biener  <rguenther@suse.de>
24978         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
24979         edges, remove edges from escaped after special-casing them.
24981 2023-04-19  Richard Biener  <rguenther@suse.de>
24983         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
24984         special casing.
24986 2023-04-19  Richard Biener  <rguenther@suse.de>
24988         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
24989         to the LHS varinfo solution member.
24991 2023-04-19  Richard Biener  <rguenther@suse.de>
24993         * tree-ssa-structalias.cc (topo_visit): Look at the real
24994         destination of edges.
24996 2023-04-19  Richard Biener  <rguenther@suse.de>
24998         PR tree-optimization/44794
24999         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
25000         If an epilogue loop is required set its iteration upper bound.
25002 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
25004         PR target/109465
25005         * config/loongarch/loongarch-protos.h
25006         (loongarch_expand_block_move): Add a parameter as alignment RTX.
25007         * config/loongarch/loongarch.h:
25008         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
25009         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
25010         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
25011         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
25012         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
25013         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
25014         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
25015         Take the alignment from the parameter, but set it to
25016         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
25017         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
25018         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
25019         (loongarch_block_move_straight): When there are left-over bytes,
25020         half the mode size instead of falling back to byte mode at once.
25021         (loongarch_block_move_loop): Limit the length of loop body with
25022         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
25023         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
25024         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
25025         to loongarch_expand_block_move.
25027 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
25029         * config/loongarch/loongarch.cc
25030         (loongarch_setup_incoming_varargs): Don't save more GARs than
25031         cfun->va_list_gpr_size / UNITS_PER_WORD.
25033 2023-04-19  Richard Biener  <rguenther@suse.de>
25035         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
25036         no epilogue condition.
25038 2023-04-19  Richard Biener  <rguenther@suse.de>
25040         * gimple.h (gimple_assign_load): Outline...
25041         * gimple.cc (gimple_assign_load): ... here.  Avoid
25042         get_base_address and instead just strip the outermost
25043         handled component, treating a remaining handled component
25044         as load.
25046 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25048         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
25049         definition.
25050         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
25052 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
25054         PR tree-optimization/109011
25055         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
25056         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
25057         CLZ, CTZ and FFS.  Remove vargs variable, use
25058         gimple_build_call_internal rather than gimple_build_call_internal_vec.
25059         (vect_vect_recog_func_ptrs): Adjust popcount entry.
25061 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
25063         PR target/109040
25064         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
25065         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
25066         a new REG rather than the SUBREG.
25068 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
25070         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
25071         New pattern.
25073 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25075         PR target/108840
25076         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
25077         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
25079 2023-04-19  Richard Biener  <rguenther@suse.de>
25081         PR rtl-optimization/109237
25082         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
25083         TREE_VISITED on INSN_VAR_LOCATION_DECL.
25084         (delete_trivially_dead_insns): Maintain TREE_VISITED on
25085         active debug bind INSN_VAR_LOCATION_DECL.
25087 2023-04-19  Richard Biener  <rguenther@suse.de>
25089         PR rtl-optimization/109237
25090         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
25092 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
25094         * doc/install.texi (enable-decimal-float): Add AArch64.
25096 2023-04-19  liuhongt  <hongtao.liu@intel.com>
25098         PR rtl-optimization/109351
25099         * ira.cc (setup_class_subset_and_memory_move_costs): Check
25100         hard_regno_mode_ok before setting lowest memory move cost for
25101         the mode with different reg classes.
25103 2023-04-18  Jason Merrill  <jason@redhat.com>
25105         * doc/invoke.texi: Remove stray @gol.
25107 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
25109         * ifcvt.cc (cond_move_process_if_block): Consider the result of
25110         targetm.noce_conversion_profitable_p() when replacing the original
25111         sequence with the converted one.
25113 2023-04-18  Mark Harmstone  <mark@harmstone.com>
25115         * common.opt (gcodeview): Add new option.
25116         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
25117         * opts.cc (command_handle_option): Similarly.
25118         * doc/invoke.texi: Add documentation for -gcodeview.
25120 2023-04-18  Andrew Pinski  <apinski@marvell.com>
25122         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
25123         (make_pass_phiopt): Make execute out of line.
25124         (tree_ssa_cs_elim): Move code into ...
25125         (pass_cselim::execute): here.
25127 2023-04-18  Sam James  <sam@gentoo.org>
25129         * system.h: Drop unused INCLUDE_PTHREAD_H.
25131 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
25133         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
25134         condition.
25136 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
25138         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
25139         (bswapdi2, bswapsi2): Similarly.
25141 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
25143         PR target/94908
25144         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
25145         Use CODE_FOR_sse4_1_insertps_v4sf.
25146         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
25147         (expand_vec_perm_1): Call expand_vec_per_insertps.
25148         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
25149         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
25150         (@sse4_1_insertps_<mode>): New insn pattern.
25151         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
25152         pattern from sse4_1_insertps using VI4F_128 mode iterator.
25154 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
25156         * value-range.cc (gt_ggc_mx): New.
25157         (gt_pch_nx): New.
25158         * value-range.h (class vrange): Add GTY marker.
25159         (class frange): Same.
25160         (gt_ggc_mx): Remove.
25161         (gt_pch_nx): Remove.
25163 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
25165         * lra-constraints.cc (constraint_unique): New.
25166         (process_address_1): Apply constraint_unique test.
25167         * recog.cc (constrain_operands): Allow relaxed memory
25168         constaints.
25170 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
25172         * doc/extend.texi (Target Builtins): Add RISC-V Vector
25173         Intrinsics.
25174         (RISC-V Vector Intrinsics): Document GCC implemented which
25175         version of RISC-V vector intrinsics and its reference.
25177 2023-04-18  Richard Biener  <rguenther@suse.de>
25179         PR middle-end/108786
25180         * bitmap.h (bitmap_clear_first_set_bit): New.
25181         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
25182         bitmap_first_set_bit and add optional clearing of the bit.
25183         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
25184         (bitmap_clear_first_set_bit): Likewise.
25185         * df-core.cc (df_worklist_dataflow_doublequeue): Use
25186         bitmap_clear_first_set_bit.
25187         * graphite-scop-detection.cc (scop_detection::merge_sese):
25188         Likewise.
25189         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
25190         (sanitize_asan_mark_poison): Likewise.
25191         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
25192         * tree-into-ssa.cc (rewrite_blocks): Likewise.
25193         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
25194         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
25196 2023-04-18  Richard Biener  <rguenther@suse.de>
25198         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
25199         (dump_sa_points_to_info): ... this function.
25200         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
25201         and call dump_sa_stats guarded with TDF_STATS.
25202         (ipa_pta_execute): Likewise.
25203         (compute_may_aliases): Guard dump_alias_info with
25204         TDF_DETAILS|TDF_ALIAS.
25206 2023-04-18  Andrew Pinski  <apinski@marvell.com>
25208         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
25209         the expression that is being tried when TDF_FOLDING
25210         is true.
25211         (phiopt_worker::match_simplify_replacement): Dump
25212         the sequence which was created by gimple_simplify_phiopt
25213         when TDF_FOLDING is true.
25215 2023-04-18  Andrew Pinski  <apinski@marvell.com>
25217         * tree-ssa-phiopt.cc (match_simplify_replacement):
25218         Simplify code that does the movement slightly.
25220 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25222         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
25223         define_expand.
25224         (rev16<mode>2): Rename to...
25225         (aarch64_rev16<mode>2_alt1): ... This.
25226         (rev16<mode>2_alt): Rename to...
25227         (*aarch64_rev16<mode>2_alt2): ... This.
25229 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
25231         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
25232         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
25233         declaration.
25234         * range-op-float.cc (zero_range): Use dconstm0.
25235         (zero_to_inf_range): Same.
25236         * real.h (dconstm0): New.
25237         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
25238         (frange::set_zero): Do not declare dconstm0.
25240 2023-04-18  Richard Biener  <rguenther@suse.de>
25242         * system.h (class auto_mpz): New,
25243         * realmpfr.h (class auto_mpfr): Likewise.
25244         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
25245         (do_mpfr_arg2): Likewise.
25246         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
25248 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25250         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
25251         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
25253 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
25255         * value-range.cc (frange::operator==): Adjust for NAN.
25256         (range_tests_nan): Remove some NAN tests.
25258 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
25260         * inchash.cc (hash::add_real_value): New.
25261         * inchash.h (class hash): Add add_real_value.
25262         * value-range.cc (add_vrange): New.
25263         * value-range.h (inchash::add_vrange): New.
25265 2023-04-18  Richard Biener  <rguenther@suse.de>
25267         PR tree-optimization/109539
25268         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
25269         Re-implement pointer relatedness for PHIs.
25271 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
25273         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
25274         (SV_FP): New iterator.
25275         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
25276         (recip<mode>2): Unify the two patterns using SV_FP.
25277         (div_scale<mode><exec_vcc>): New insn.
25278         (div_fmas<mode><exec>): New insn.
25279         (div_fixup<mode><exec>): New insn.
25280         (div<mode>3): Unify the two expanders and rewrite using hardfp.
25281         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
25282         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
25283         and UNSPEC_DIV_FIXUP.
25284         (vccwait): New attribute.
25286 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25288         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
25289         if the argument matches that.
25291 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
25293         * config/aarch64/atomics.md
25294         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
25295         Use SD_HSDI for destination mode iterator.
25297 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
25299         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
25300         of z-extensions and s-extensions.
25301         (riscv_subset_list::parse): Likewise.
25303 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
25305         PR tree-optimization/109240
25306         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
25307         first vec_perm operand and minus as second using fneg/fadd and
25308         minus as first vec_perm operand and plus as second using fneg/fsub.
25310 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
25312         * data-streamer.cc (bp_pack_real_value): New.
25313         (bp_unpack_real_value): New.
25314         * data-streamer.h (bp_pack_real_value):  New.
25315         (bp_unpack_real_value): New.
25316         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
25317         bp_unpack_real_value.
25318         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
25319         bp_pack_real_value.
25321 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
25323         * wide-int.h (WIDE_INT_MAX_HWIS): New.
25324         (class fixed_wide_int_storage): Use it.
25325         (trailing_wide_ints <N>::set_precision): Use it.
25326         (trailing_wide_ints <N>::extra_size): Use it.
25328 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
25330         * config/loongarch/loongarch-protos.h
25331         (loongarch_addu16i_imm12_operand_p): New function prototype.
25332         (loongarch_split_plus_constant): Likewise.
25333         * config/loongarch/loongarch.cc
25334         (loongarch_addu16i_imm12_operand_p): New function.
25335         (loongarch_split_plus_constant): Likewise.
25336         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
25337         (DUAL_IMM12_OPERAND): Likewise.
25338         (DUAL_ADDU16I_OPERAND): Likewise.
25339         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
25340         constraint.
25341         * config/loongarch/predicates.md (const_dual_imm12_operand): New
25342         predicate.
25343         (const_addu16i_operand): Likewise.
25344         (const_addu16i_imm12_di_operand): Likewise.
25345         (const_addu16i_imm12_si_operand): Likewise.
25346         (plus_di_operand): Likewise.
25347         (plus_si_operand): Likewise.
25348         (plus_si_extend_operand): Likewise.
25349         * config/loongarch/loongarch.md (add<mode>3): Convert to
25350         define_insn_and_split.  Use plus_<mode>_operand predicate
25351         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
25352         and Le constraints.
25353         (*addsi3_extended): Convert to define_insn_and_split.  Use
25354         plus_si_extend_operand instead of arith_operand.  Add
25355         alternatives for La and Le alternatives.
25357 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
25359         * value-range.h (Value_Range::Value_Range): New.
25360         (Value_Range::contains_p): New.
25362 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
25364         * value-range.h (class vrange): Make m_discriminator const.
25365         (class irange): Make m_max_ranges const.  Adjust constructors
25366         accordingly.
25367         (class unsupported_range): Construct vrange appropriately.
25368         (class frange): Same.
25370 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
25372         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
25373         definition.
25375 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
25377         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
25379 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
25381         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
25382         readable.
25383         (riscv_expand_epilogue): Likewise.
25385 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
25387         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
25388         stack allocation.
25389         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
25391 2023-04-17  Andrew Pinski  <apinski@marvell.com>
25393         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
25394         prototype.
25396 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
25398         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
25399         global ranges.
25401 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
25403         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
25404         parameter remaining_size.
25405         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
25406         (riscv_expand_prologue): Likewise.
25407         (riscv_expand_epilogue): Likewise.
25409 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
25411         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
25412         roriw for constant counts.
25413         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
25414         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
25415         (simplify_context::simplify_binary_operation_1): Use it.
25416         * expmed.cc (expand_shift_1): Likewise.
25418 2023-04-17  Martin Jambor  <mjambor@suse.cz>
25420         PR ipa/107769
25421         PR ipa/109318
25422         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
25423         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
25424         (ipa_zap_jf_refdesc): New function.
25425         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
25426         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
25427         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
25428         the new parameter of find_reference.
25429         (adjust_references_in_caller): Likewise. Make sure the constant jump
25430         function is not used to decrement a refdec counter again.  Only
25431         decrement refdesc counters when the pass_through jump function allows
25432         it.  Added a detailed dump when decrementing refdesc counters.
25433         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
25434         (ipa_set_jf_simple_pass_through): Initialize the new flag.
25435         (ipa_set_jf_unary_pass_through): Likewise.
25436         (ipa_set_jf_arith_pass_through): Likewise.
25437         (remove_described_reference): Provide a value for the new parameter of
25438         find_reference.
25439         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
25440         the previous pass_through had a flag mandating that we do so.
25441         (propagate_controlled_uses): Likewise.  Only decrement refdesc
25442         counters when the pass_through jump function allows it.
25443         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
25444         parameter of find_reference.
25445         (ipa_write_jump_function): Assert the new flag does not have to be
25446         streamed.
25447         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
25448         it in searching.
25450 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
25451             Di Zhao  <di.zhao@amperecomputing.com>
25453         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
25454         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
25455         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
25456         Check for the above tuning option when processing loads.
25458 2023-04-17  Richard Biener  <rguenther@suse.de>
25460         PR tree-optimization/109524
25461         * tree-vrp.cc (remove_unreachable::m_list): Change to a
25462         vector of pairs of block indices.
25463         (remove_unreachable::maybe_register_block): Adjust.
25464         (remove_unreachable::remove_and_update_globals): Likewise.
25465         Deal with removed blocks.
25467 2023-04-16  Jeff Law  <jlaw@ventanamicro>
25469         PR target/109508
25470         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
25471         TARGET_SFB_ALU, force the true arm into a register.
25473 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
25475         PR target/104989
25476         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
25477         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
25478         size is zero.
25479         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
25480         (pa_function_arg_size): Change return type to int.  Return zero
25481         for arguments larger than 1 GB.  Update comments.
25483 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
25485         PR tree-optimization/109154
25486         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
25487         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
25489 2023-04-15  Jason Merrill  <jason@redhat.com>
25491         PR c++/109514
25492         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
25493         Overhaul lhs_ref.ref analysis.
25495 2023-04-14  Richard Biener  <rguenther@suse.de>
25497         PR tree-optimization/109502
25498         * tree-vect-stmts.cc (vectorizable_assignment): Fix
25499         check for conversion between mask and non-mask types.
25501 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
25502             Jakub Jelinek  <jakub@redhat.com>
25504         PR target/108947
25505         PR target/109040
25506         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
25507         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
25508         smaller than word_mode.
25509         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
25510         <case AND>: Likewise.
25512 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
25514         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
25515         of GEN_INT.
25517 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
25519         PR tree-optimization/108139
25520         PR tree-optimization/109462
25521         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
25522         equivalency check for PHI nodes.
25523         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
25524         does not dominate single-arg equivalency edges.
25526 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
25528         PR target/108910
25529         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
25530         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
25532 2023-04-13  Richard Biener  <rguenther@suse.de>
25534         PR tree-optimization/109491
25535         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
25536         NULL operands test.
25538 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25540         PR target/109479
25541         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
25542         (vint16mf4_t): Ditto.
25543         (vint32mf2_t): Ditto.
25544         (vint64m1_t): Ditto.
25545         (vint64m2_t): Ditto.
25546         (vint64m4_t): Ditto.
25547         (vint64m8_t): Ditto.
25548         (vuint8mf8_t): Ditto.
25549         (vuint16mf4_t): Ditto.
25550         (vuint32mf2_t): Ditto.
25551         (vuint64m1_t): Ditto.
25552         (vuint64m2_t): Ditto.
25553         (vuint64m4_t): Ditto.
25554         (vuint64m8_t): Ditto.
25555         (vfloat32mf2_t): Ditto.
25556         (vbool64_t): Ditto.
25557         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
25558         (register_vector_type): Ditto.
25559         (check_required_extensions): Fix condition.
25560         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
25561         (RVV_REQUIRE_ELEN_64): New define.
25562         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
25563         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
25564         (TARGET_VECTOR_FP64): Ditto.
25565         (ENTRY): Fix predicate.
25566         * config/riscv/vector-iterators.md: Fix predicate.
25568 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
25570         PR tree-optimization/109410
25571         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
25572         block if first statement of the function is a call to returns_twice
25573         function.
25575 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
25577         PR target/109458
25578         * config/i386/i386.cc: Include rtl-error.h.
25579         (ix86_print_operand): For z modifier warning, use warning_for_asm
25580         if this_is_asm_operands.  For Z modifier errors, use %c and code
25581         instead of hardcoded Z.
25583 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
25585         * config/i386/x-mingw32-utf8: Remove extrataneous $@
25587 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
25589         PR tree-optimization/109462
25590         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
25591         check for equivalences if NAME is a phi node.
25593 2023-04-12  Richard Biener  <rguenther@suse.de>
25595         PR tree-optimization/109473
25596         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
25597         Convert scalar result to the computation type before performing
25598         the reduction adjustment.
25600 2023-04-12  Richard Biener  <rguenther@suse.de>
25602         PR tree-optimization/109469
25603         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
25604         a returns-twice call.
25606 2023-04-12  Richard Biener  <rguenther@suse.de>
25608         PR tree-optimization/109434
25609         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
25610         handle possibly throwing calls when processing the LHS
25611         and may-defs are not OK.
25613 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
25615         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
25616         predicate to avoid splitting arith constants.
25618 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
25619             Pan Li  <pan2.li@intel.com>
25620             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25621             Kito Cheng  <kito.cheng@sifive.com>
25623         PR target/109104
25624         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
25625         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
25626         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
25627         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
25628         (riscv_zero_call_used_regs): New.
25629         (TARGET_ZERO_CALL_USED_REGS): New.
25631 2023-04-11  Martin Liska  <mliska@suse.cz>
25633         PR driver/108241
25634         * opts.cc (finish_options): Drop also
25635         x_flag_var_tracking_assignments.
25637 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25639         PR tree-optimization/108888
25640         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
25642 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
25644         PR target/108812
25645         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
25646         (vsx_sign_extend_v16qi_<mode>): ... this.
25647         (vsx_sign_extend_hi_<mode>): Rename to...
25648         (vsx_sign_extend_v8hi_<mode>): ... this.
25649         (vsx_sign_extend_si_v2di): Rename to...
25650         (vsx_sign_extend_v4si_v2di): ... this.
25651         (vsignextend_qi_<mode>): Remove.
25652         (vsignextend_hi_<mode>): Remove.
25653         (vsignextend_si_v2di): Remove.
25654         (vsignextend_v2di_v1ti): Remove.
25655         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
25656         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
25657         with gen_vsx_sign_extend_v16qi_v4si.
25658         * config/rs6000/rs6000.md (split for DI constant generation):
25659         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
25660         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
25661         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
25662         with gen_vsx_sign_extend_v16qi_si.
25663         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
25664         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
25665         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
25666         vsx_sign_extend_v16qi_v4si.
25667         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
25668         vsx_sign_extend_v8hi_v2di.
25669         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
25670         vsx_sign_extend_v8hi_v4si.
25671         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
25672         vsx_sign_extend_si_v2di.
25673         (__builtin_altivec_vsignext): Set bif-pattern to
25674         vsx_sign_extend_v2di_v1ti.
25675         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
25676         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
25677         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
25678         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
25680 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
25682         PR target/70243
25683         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
25684         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
25686 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
25688         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
25690 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
25692         * common/config/i386/cpuinfo.h (get_available_features):
25693         Detect AMX-COMPLEX.
25694         * common/config/i386/i386-common.cc
25695         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
25696         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
25697         (ix86_handle_option): Handle -mamx-complex.
25698         * common/config/i386/i386-cpuinfo.h (enum processor_features):
25699         Add FEATURE_AMX_COMPLEX.
25700         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
25701         amx-complex.
25702         * config.gcc: Add amxcomplexintrin.h.
25703         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
25704         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
25705         __AMX_COMPLEX__.
25706         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
25707         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
25708         Handle amx-complex.
25709         * config/i386/i386.opt: Add option -mamx-complex.
25710         * config/i386/immintrin.h: Include amxcomplexintrin.h.
25711         * doc/extend.texi: Document amx-complex.
25712         * doc/invoke.texi: Document -mamx-complex.
25713         * doc/sourcebuild.texi: Document target amx-complex.
25714         * config/i386/amxcomplexintrin.h: New file.
25716 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
25718         PR tree-optimization/109392
25719         * tree-vect-generic.cc (tree_vec_extract): Handle failure
25720         of maybe_push_res_to_seq better.
25722 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
25724         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
25725         poly-int-types.h.
25726         (SYSTEM_H): Depend on $(HASHTAB_H).
25727         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
25728         dependency on $(RTL_BASE_H), remove redundant dependency on
25729         insn-modes.h.
25731 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
25733         PR target/107674
25734         * config/arm/arm.cc (arm_effective_regno): New function.
25735         (mve_vector_mem_operand): Use it.
25737 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
25739         PR tree-optimization/109417
25740         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
25741         dependency is in SSA_NAME_FREE_LIST.
25743 2023-04-06  Andrew Pinski  <apinski@marvell.com>
25745         PR tree-optimization/109427
25746         * params.opt (-param=vect-induction-float=):
25747         Fix option attribute typo for IntegerRange.
25749 2023-04-05  Jeff Law  <jlaw@ventanamicro>
25751         PR target/108892
25752         * combine.cc (combine_instructions): Force re-recognition when
25753         after restoring the body of an insn to its original form.
25755 2023-04-05  Martin Jambor  <mjambor@suse.cz>
25757         PR ipa/108959
25758         * ipa-sra.cc (zap_useless_ipcp_results): New function.
25759         (process_isra_node_results): Call it.
25761 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25763         * config/riscv/vector.md: Fix incorrect operand order.
25765 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25767         * config/riscv/riscv-vsetvl.cc
25768         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
25769         demand fusion.
25771 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
25773         * config/riscv/riscv-vector-builtins.def: Fix typo.
25774         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
25775         * config/riscv/vector-iterators.md: Ditto.
25777 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
25779         * doc/md.texi (Including Patterns): Fix page break.
25781 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
25783         PR tree-optimization/109386
25784         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
25785         foperator_le::op1_range, foperator_le::op2_range,
25786         foperator_gt::op1_range, foperator_gt::op2_range,
25787         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
25788         BRS_FALSE case even if the other op is maybe_isnan, not just
25789         known_isnan.
25790         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
25791         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
25792         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
25793         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
25794         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
25795         not just known_isnan.
25797 2023-04-04  Marek Polacek  <polacek@redhat.com>
25799         PR sanitizer/109107
25800         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
25801         when associating.
25802         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
25804 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
25806         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
25807         (mve_vcreateq_f<mode>): Swap operands.
25809 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
25811         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
25813 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
25815         PR target/109384
25816         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
25817         Reword diagnostics about zfinx conflict with f, formatting fixes.
25819 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
25821         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
25823 2023-04-04  Richard Biener  <rguenther@suse.de>
25825         PR tree-optimization/109304
25826         * tree-profile.cc (tree_profiling): Use symtab node
25827         availability to decide whether to skip adjusting calls.
25828         Do not adjust calls to internal functions.
25830 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
25832         PR target/108807
25833         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
25834         function for permutation control vector by considering big endianness.
25836 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
25838         PR target/108699
25839         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
25840         (rs6000_vprtyb<mode>2): ... this.
25841         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
25842         rs6000_vprtybv2di2.
25843         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
25844         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
25845         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
25846         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
25848 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
25849             Sandra Loosemore  <sandra@codesourcery.com>
25851         * doc/md.texi (Insn Splitting): Tweak wording for readability.
25853 2023-04-03  Martin Jambor  <mjambor@suse.cz>
25855         PR ipa/109303
25856         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
25857         offset + size will be representable in unsigned int.
25859 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
25861         * configure.ac (ZSTD_LIB): Move before zstd.h check.
25862         Unset gcc_cv_header_zstd_h without libzstd.
25863         * configure: Regenerate.
25865 2023-04-03  Martin Liska  <mliska@suse.cz>
25867         * doc/invoke.texi: Document new param.
25869 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
25871         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
25872         new check_effective_target function.
25874 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
25876         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
25877         (vfloat32m8_t): Likewise
25879 2023-04-03  liuhongt  <hongtao.liu@intel.com>
25881         * doc/md.texi: Document signbitm2.
25883 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25884             kito-cheng  <kito.cheng@sifive.com>
25886         * config/riscv/vector.md: Fix RA constraint.
25888 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25890         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
25891         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
25892         * config/riscv/vector.md: Fix scalar move bug.
25894 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
25896         * range-op-float.cc (foperator_equal::fold_range): If at least
25897         one of the op ranges is not singleton and neither is NaN and all
25898         4 bounds are zero, return [1, 1].
25899         (foperator_not_equal::fold_range): In the same case return [0, 0].
25901 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
25903         * range-op-float.cc (foperator_equal::fold_range): Perform the
25904         non-singleton handling regardless of maybe_isnan (op1, op2).
25905         (foperator_not_equal::fold_range): Likewise.
25906         (foperator_lt::fold_range, foperator_le::fold_range,
25907         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
25908         real_* comparison check which results in range_false (type)
25909         even if maybe_isnan (op1, op2).  Simplify.
25910         (foperator_ltgt): New class.
25911         (fop_ltgt): New variable.
25912         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
25913         fop_ltgt.
25915 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
25917         PR target/109254
25918         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
25919         returns VOIDmode, handle it like if the register isn't used for
25920         passing arguments at all.
25921         (apply_result_size): If targetm.calls.get_raw_result_mode returns
25922         VOIDmode, handle it like if the register isn't used for returning
25923         results at all.
25924         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
25925         means to return VOIDmode.
25926         * doc/tm.texi: Regenerated.
25927         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
25928         TARGET_SVE for P0_REGNUM.
25929         (aarch64_function_arg_regno_p): Also return true for p0-p3.
25930         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
25932 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
25934         * lra-constraints.cc: (combine_reload_insn): New function.
25936 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
25938         PR tree-optimization/91645
25939         * range-op-float.cc (foperator_unordered_lt::fold_range,
25940         foperator_unordered_le::fold_range,
25941         foperator_unordered_gt::fold_range,
25942         foperator_unordered_ge::fold_range,
25943         foperator_unordered_equal::fold_range): Call the ordered
25944         fold_range on ranges with cleared NaNs.
25945         * value-query.cc (range_query::get_tree_range): Handle also
25946         COMPARISON_CLASS_P trees.
25948 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
25949             Andrew Pinski  <pinskia@gmail.com>
25951         PR target/109328
25952         * config/riscv/t-riscv: Add missing dependencies.
25954 2023-03-31  liuhongt  <hongtao.liu@intel.com>
25956         * config/i386/i386.cc (inline_memory_move_cost): Return 100
25957         for MASK_REGS when MODE_SIZE > 8.
25959 2023-03-31  liuhongt  <hongtao.liu@intel.com>
25961         PR target/85048
25962         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
25963         ufloat/ufix to floatuns/fixuns.
25964         * config/i386/i386-expand.cc
25965         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
25966         * config/i386/sse.md
25967         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
25968         Renamed to ..
25969         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
25970         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
25971         Renamed to ..
25972         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
25973         .. this.
25974         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
25975         Renamed to ..
25976         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
25977         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
25978         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
25979         (ufloatv2siv2df2<mask_name>): Renamed to ..
25980         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
25981         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
25982         Renamed to ..
25983         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
25984         .. this.
25985         (ufix_notruncv2dfv2si2): Renamed to ..
25986         (fixuns_notruncv2dfv2si2):.. this.
25987         (ufix_notruncv2dfv2si2_mask): Renamed to ..
25988         (fixuns_notruncv2dfv2si2_mask): .. this.
25989         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
25990         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
25991         (ufix_truncv2dfv2si2): Renamed to ..
25992         (*fixuns_truncv2dfv2si2): .. this.
25993         (ufix_truncv2dfv2si2_mask): Renamed to ..
25994         (fixuns_truncv2dfv2si2_mask): .. this.
25995         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
25996         (*fixuns_truncv2dfv2si2_mask_1): .. this.
25997         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
25998         (fixuns_truncv4dfv4si2<mask_name>): .. this.
25999         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
26000         Renamed to ..
26001         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
26002         .. this.
26003         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
26004         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
26005         .. this.
26007 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
26009         PR tree-optimization/109154
26010         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
26011         * gimple-range-gori.h (may_recompute_p): Add depth param.
26012         * params.opt (ranger-recompute-depth): New param.
26014 2023-03-30  Jason Merrill  <jason@redhat.com>
26016         PR c++/107897
26017         PR c++/108887
26018         * cgraph.h: Move reset() from cgraph_node to symtab_node.
26019         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
26020         remove_from_same_comdat_group.
26022 2023-03-30  Richard Biener  <rguenther@suse.de>
26024         PR tree-optimization/107561
26025         * gimple-ssa-warn-access.cc (get_size_range): Add flags
26026         argument and pass it on.
26027         (check_access): When querying for the size range pass
26028         SR_ALLOW_ZERO when the known destination size is zero.
26030 2023-03-30  Richard Biener  <rguenther@suse.de>
26032         PR tree-optimization/109342
26033         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
26034         overload for edge.  When that edge is a backedge use
26035         dominated_by_p directly.
26037 2023-03-30  liuhongt  <hongtao.liu@intel.com>
26039         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
26040         vpblendd instead of vpblendw for V4SI under avx2.
26042 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
26044         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
26045         for many quick operands, for register-sized modes.
26047 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
26049         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
26050         New check.
26052 2023-03-29  Martin Liska  <mliska@suse.cz>
26054         PR bootstrap/109310
26055         * configure.ac: Emit a warning for deprecated option
26056         --enable-link-mutex.
26057         * configure: Regenerate.
26059 2023-03-29  Richard Biener  <rguenther@suse.de>
26061         PR tree-optimization/109331
26062         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
26063         discover a taken edge make sure to cleanup the CFG.
26065 2023-03-29  Richard Biener  <rguenther@suse.de>
26067         PR tree-optimization/109327
26068         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
26069         already removed stmts when draining to_remove.
26071 2023-03-29  Richard Biener  <rguenther@suse.de>
26073         PR ipa/106124
26074         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
26075         so we can re-create the DIE for the type if required.
26077 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
26078             Richard Biener  <rguenther@suse.de>
26080         PR tree-optimization/109301
26081         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
26082         properties_provided from PROP_gimple_opt_math to 0.
26083         (pass_data_expand_powcabs): Change properties_provided from 0 to
26084         PROP_gimple_opt_math.
26086 2023-03-29  Richard Biener  <rguenther@suse.de>
26088         PR tree-optimization/109154
26089         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
26090         inverted condition specially by inverting at the caller.
26091         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
26093 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
26095         PR c/107002
26096         * diagnostic-show-locus.cc (column_range::column_range): Factor
26097         out assertion conditional into...
26098         (column_range::valid_p): ...this new function.
26099         (line_corrections::add_hint): Don't attempt to consolidate hints
26100         if it would lead to invalid column_range instances.
26102 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
26104         PR target/109312
26105         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
26106         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
26107         minor refactor.
26109 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
26111         PR rtl-optimization/109187
26112         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
26113         subtraction in three-way comparison.
26115 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
26117         PR tree-optimization/109265
26118         PR tree-optimization/109274
26119         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
26120         not create a relation record is op1 and op2 are the same symbol.
26121         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
26122         handler for this stmt, but create a new record only if this statement
26123         generates a relation based on the ranges.
26124         (gori_compute::compute_operand2_range): Ditto.
26125         * value-relation.h (value_relation::set_relation): Always create the
26126         record that is requested.
26128 2023-03-28  Richard Biener  <rguenther@suse.de>
26130         PR tree-optimization/107087
26131         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
26132         executable regions to avoid useless work and to better
26133         propagate degenerate PHIs.
26135 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
26137         * config/i386/x-mingw32-utf8: update comments.
26139 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
26141         PR target/109072
26142         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
26143         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
26144         variable.
26145         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
26146         New function.
26147         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
26148         after inlining.  Record which decls are loaded from.  Fix handling
26149         of vops for loads and stores.
26150         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
26151         (aarch64_accesses_vector_load_decl_p): Likewise.
26152         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
26153         variable.
26154         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
26155         that loads from a decl, treat vector stores to those decls as
26156         zero cost.
26157         (aarch64_vector_costs::finish_cost): ...and in that case,
26158         if the vector code does nothing more than a store, give the
26159         prologue a zero cost as well.
26161 2023-03-28  Richard Biener  <rguenther@suse.de>
26163         PR bootstrap/84402
26164         PR tree-optimization/108129
26165         * genmatch.cc (lower_for): For (match ...) delay
26166         substituting into the match operator if possible.
26167         (dt_operand::gen_gimple_expr): For user_id look at the
26168         first substitute for determining how to access operands.
26169         (dt_operand::gen_generic_expr): Likewise.
26170         (dt_node::gen_kids): Properly sort user_ids according
26171         to their substitutes.
26172         (dt_node::gen_kids_1): Code-generate user_id matching.
26174 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
26175             Jonathan Wakely  <jwakely@redhat.com>
26177         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
26178         Use subcommand rather than sub-command in function comments.
26180 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
26182         PR tree-optimization/109154
26183         * value-range.h (frange::flush_denormals_to_zero): Make it public
26184         rather than private.
26185         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
26186         here.
26187         * range-op-float.cc (range_operator_float::fold_range): Call
26188         flush_denormals_to_zero.
26190 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
26192         PR middle-end/106190
26193         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
26194         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
26196 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
26198         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
26199         as 4th argument to set to avoid clear_nan and union_ calls.
26201 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
26203         PR target/109276
26204         * config/i386/i386.cc (assign_386_stack_local): For DImode
26205         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
26206         align 32 rather than 0 to assign_stack_local.
26208 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
26210         PR target/109140
26211         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
26212         on operand #3 to get the final condition code.  Use std::swap.
26213         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
26214         (fucmp<gcond:code>8<P:mode>_vis): Move around.
26215         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
26216         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
26218 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
26220         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
26221         top-level sections.
26223 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
26225         * config.host: Pull in i386/x-mingw32-utf8 Makefile
26226         fragment and reference utf8rc-mingw32.o explicitly
26227         for mingw hosts.
26228         * config/i386/sym-mingw32.cc: prevent name mangling of
26229         stub symbol.
26230         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
26231         depend on manifest file explicitly.
26233 2023-03-28  Richard Biener  <rguenther@suse.de>
26235         Revert:
26236         2023-03-27  Richard Biener  <rguenther@suse.de>
26238         PR rtl-optimization/109237
26239         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
26241 2023-03-28  Richard Biener  <rguenther@suse.de>
26243         * common.opt (gdwarf): Remove Negative(gdwarf-).
26245 2023-03-28  Richard Biener  <rguenther@suse.de>
26247         * common.opt (gdwarf): Add RejectNegative.
26248         (gdwarf-): Likewise.
26249         (ggdb): Likewise.
26250         (gvms): Likewise.
26252 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
26254         * config/cris/constraints.md ("T"): Correct to
26255         define_memory_constraint.
26257 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
26259         * config/cris/cris.md (BW2): New mode-iterator.
26260         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
26261         peephole2s.
26263 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
26265         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
26266         for possible eliminable compares.
26268 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
26270         * config/cris/constraints.md ("R"): Remove unused constraint.
26272 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
26274         PR gcov-profile/109297
26275         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
26276         (merge_stream_usage): Likewise.
26277         (overlap_usage): Likewise.
26279 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
26281         PR target/109296
26282         * config/riscv/thead.md: Add missing mode specifiers.
26284 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
26285             Jiangning Liu  <jiangning.liu@amperecomputing.com>
26286             Manolis Tsamis  <manolis.tsamis@vrull.eu>
26288         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
26290 2023-03-27  Richard Biener  <rguenther@suse.de>
26292         PR rtl-optimization/109237
26293         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
26295 2023-03-27  Richard Biener  <rguenther@suse.de>
26297         PR lto/109263
26298         * lto-wrapper.cc (run_gcc): Parse alternate debug options
26299         as well, they always enable debug.
26301 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
26303         PR target/109167
26304         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
26305         from ...
26306         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
26308 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
26310         PR target/109082
26311         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
26312         than zero when calling vec_sld.
26313         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
26314         zero when calling vec_sld.
26315         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
26316         than zero when calling vec_sld.
26318 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
26320         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
26321         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
26322         loops are represented and which fields are vectors.  Add
26323         documentation for OMP_FOR_PRE_BODY field.  Document internal
26324         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
26325         * tree.def (OMP_FOR): Make documentation consistent with the
26326         Texinfo manual, to fill some gaps and correct errors.
26328 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
26330         PR target/106282
26331         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
26332         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
26333         (handle_move_double): Call it before handle_movsi.
26334         * config/m68k/m68k-protos.h: Declare it.
26336 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
26338         PR tree-optimization/109230
26339         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
26341 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
26343         PR ipa/105685
26344         * predict.cc (compute_function_frequency): Don't call
26345         warn_function_cold if function already has cold attribute.
26347 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
26349         * doc/install.texi: Remove anachronistic note
26350         related to languages built and separate source tarballs.
26352 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
26354         PR analyzer/109098
26355         * diagnostic-format-sarif.cc (read_until_eof): Delete.
26356         (maybe_read_file): Delete.
26357         (sarif_builder::maybe_make_artifact_content_object): Use
26358         get_source_file_content rather than maybe_read_file.
26359         Reject it if it's not valid UTF-8.
26360         * input.cc (file_cache_slot::get_full_file_content): New.
26361         (get_source_file_content): New.
26362         (selftest::check_cpp_valid_utf8_p): New.
26363         (selftest::test_cpp_valid_utf8_p): New.
26364         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
26365         * input.h (get_source_file_content): New prototype.
26367 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
26369         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
26370         debugging options.
26371         (Special Functions for Debugging the Analyzer): Convert to a
26372         table, and rewrite in places.
26373         (Other Debugging Techniques): Add notes on how to compare two
26374         different exploded graphs.
26376 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
26378         PR other/109163
26379         * json.cc: Update comments to indicate that we now preserve
26380         insertion order of keys within objects.
26381         (object::print): Traverse keys in insertion order.
26382         (object::set): Preserve insertion order of keys.
26383         (selftest::test_writing_objects): Add an additional key to verify
26384         that we preserve insertion order.
26385         * json.h (object::m_keys): New field.
26387 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
26389         PR tree-optimization/109238
26390         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
26391         predecessors which this block dominates.
26393 2023-03-24  Richard Biener  <rguenther@suse.de>
26395         PR tree-optimization/106912
26396         * tree-profile.cc (tree_profiling): Update stmts only when
26397         profiling or testing coverage.  Make sure to update calls
26398         fntype, stripping 'const' there.
26400 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
26402         PR middle-end/109258
26403         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
26404         if target == const0_rtx.
26406 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
26408         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
26409         Document options and effective targets.
26411 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
26413         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
26414         optional.
26416 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
26418         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
26419         non-earlyclobber alternative.
26421 2023-03-23  Andrew Pinski  <apinski@marvell.com>
26423         PR c/84900
26424         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
26425         as a lvalue.
26427 2023-03-23  Richard Biener  <rguenther@suse.de>
26429         PR tree-optimization/107569
26430         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
26431         Do not push SSA names with zero uses as available leader.
26432         (process_bb): Likewise.
26434 2023-03-23  Richard Biener  <rguenther@suse.de>
26436         PR tree-optimization/109262
26437         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
26438         combining a piecewise complex load avoid touching loads
26439         that throw internally.  Use fun, not cfun throughout.
26441 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
26443         * value-range.cc (irange::irange_union, irange::intersect): Fix
26444         comment spelling bugs.
26445         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
26446         * gimple-range-trace.h: Likewise.
26447         * gimple-range-edge.cc: Likewise.
26448         (gimple_outgoing_range_stmt_p,
26449         gimple_outgoing_range::switch_edge_range,
26450         gimple_outgoing_range::edge_range_p): Likewise.
26451         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
26452         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
26453         assume_query::assume_query, assume_query::calculate_phi): Likewise.
26454         * gimple-range-edge.h: Likewise.
26455         * value-range.h (Value_Range::set, Value_Range::lower_bound,
26456         Value_Range::upper_bound, frange::set_undefined): Likewise.
26457         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
26458         gori_compute): Likewise.
26459         * gimple-range-fold.h (fold_using_range): Likewise.
26460         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
26461         Likewise.
26462         * gimple-range-gori.cc (range_def_chain::in_chain_p,
26463         range_def_chain::dump, gori_map::calculate_gori,
26464         gori_compute::compute_operand_range_switch,
26465         gori_compute::logical_combine, gori_compute::refine_using_relation,
26466         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
26467         Likewise.
26468         * gimple-range.h: Likewise.
26469         (enable_ranger): Likewise.
26470         * range-op.h (empty_range_varying): Likewise.
26471         * value-query.h (value_query): Likewise.
26472         * gimple-range-cache.cc (block_range_cache::set_bb_range,
26473         block_range_cache::dump, ssa_global_cache::clear_global_range,
26474         temporal_cache::temporal_value, temporal_cache::current_p,
26475         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
26476         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
26477         Likewise.
26478         * gimple-range-fold.cc (fur_edge::get_phi_operand,
26479         fur_stmt::get_operand, gimple_range_adjustment,
26480         fold_using_range::range_of_phi,
26481         fold_using_range::relation_fold_and_or): Likewise.
26482         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
26483         * value-query.cc (range_query::value_of_expr,
26484         range_query::value_on_edge, range_query::query_relation): Likewise.
26485         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
26486         intersect_range_with_nonzero_bits): Likewise.
26487         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
26488         exit_range): Likewise.
26489         * value-relation.h: Likewise.
26490         (equiv_oracle, relation_trio::relation_trio, value_relation,
26491         value_relation::value_relation, pe_min): Likewise.
26492         * range-op-float.cc (range_operator_float::rv_fold,
26493         frange_arithmetic, foperator_unordered_equal::op1_range,
26494         foperator_div::rv_fold): Likewise.
26495         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
26496         * value-relation.cc (equiv_oracle::query_relation,
26497         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
26498         value_relation::apply_transitive, relation_chain_head::find_relation,
26499         dom_oracle::query_relation, dom_oracle::find_relation_block,
26500         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
26501         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
26502         create_possibly_reversed_range, adjust_op1_for_overflow,
26503         operator_mult::wi_fold, operator_exact_divide::op1_range,
26504         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
26505         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
26506         range_op_lshift_tests): Likewise.
26508 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
26510         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
26511         (move_callee_saved_registers): Detect the bug condition early.
26513 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
26515         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
26516         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
26517         (V_2REG_ALT): New.
26518         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
26519         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
26520         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
26521         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
26522         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
26524 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
26526         PR tree-optimization/109176
26527         * tree-vect-generic.cc (expand_vector_condition): If a has
26528         vector boolean type and is a comparison, also check if both
26529         the comparison and VEC_COND_EXPR could be successfully expanded
26530         individually.
26532 2023-03-23  Pan Li  <pan2.li@intel.com>
26533             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26535         PR target/108654
26536         PR target/108185
26537         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
26538         for vector mask modes.
26539         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
26540         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
26542 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
26544         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
26546 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26548         PR target/109244
26549         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
26550         (emit_vlmax_op): Ditto.
26551         * config/riscv/riscv-v.cc (get_sew): New function.
26552         (emit_vlmax_vsetvl): Adapt function.
26553         (emit_pred_op): Ditto.
26554         (emit_vlmax_op): Ditto.
26555         (emit_nonvlmax_op): Ditto.
26556         (legitimize_move): Fix LRA ICE.
26557         (gen_no_side_effects_vsetvl_rtx): Adapt function.
26558         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
26559         (@mov<VB:mode><P:mode>_lra): Ditto.
26560         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
26561         (*mov<VB:mode><P:mode>_lra): Ditto.
26563 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26565         PR target/109228
26566         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
26567         __riscv_vlenb support.
26568         (BASE): Ditto.
26569         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26570         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
26571         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
26572         (SHAPE): Ditto.
26573         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
26574         * config/riscv/riscv-vector-builtins.cc: Ditto.
26576 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26577             kito-cheng  <kito.cheng@sifive.com>
26579         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
26580         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
26581         (pass_vsetvl::need_vsetvl): Fix bugs.
26582         (pass_vsetvl::backward_demand_fusion): Fix bugs.
26583         (pass_vsetvl::demand_fusion): Fix bugs.
26584         (eliminate_insn): Fix bugs.
26585         (insert_vsetvl): Ditto.
26586         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
26587         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
26588         * config/riscv/vector.md: Ditto.
26590 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26591             kito-cheng  <kito.cheng@sifive.com>
26593         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
26594         * config/riscv/vector-iterators.md (nmsac): Ditto.
26595         (nmsub): Ditto.
26596         (msac): Ditto.
26597         (msub): Ditto.
26598         (nmadd): Ditto.
26599         (nmacc): Ditto.
26600         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
26601         (@pred_mul_plus<mode>): Ditto.
26602         (*pred_madd<mode>): Ditto.
26603         (*pred_macc<mode>): Ditto.
26604         (*pred_mul_plus<mode>): Ditto.
26605         (@pred_mul_plus<mode>_scalar): Ditto.
26606         (*pred_madd<mode>_scalar): Ditto.
26607         (*pred_macc<mode>_scalar): Ditto.
26608         (*pred_mul_plus<mode>_scalar): Ditto.
26609         (*pred_madd<mode>_extended_scalar): Ditto.
26610         (*pred_macc<mode>_extended_scalar): Ditto.
26611         (*pred_mul_plus<mode>_extended_scalar): Ditto.
26612         (@pred_minus_mul<mode>): Ditto.
26613         (*pred_<madd_nmsub><mode>): Ditto.
26614         (*pred_nmsub<mode>): Ditto.
26615         (*pred_<macc_nmsac><mode>): Ditto.
26616         (*pred_nmsac<mode>): Ditto.
26617         (*pred_mul_<optab><mode>): Ditto.
26618         (*pred_minus_mul<mode>): Ditto.
26619         (@pred_mul_<optab><mode>_scalar): Ditto.
26620         (@pred_minus_mul<mode>_scalar): Ditto.
26621         (*pred_<madd_nmsub><mode>_scalar): Ditto.
26622         (*pred_nmsub<mode>_scalar): Ditto.
26623         (*pred_<macc_nmsac><mode>_scalar): Ditto.
26624         (*pred_nmsac<mode>_scalar): Ditto.
26625         (*pred_mul_<optab><mode>_scalar): Ditto.
26626         (*pred_minus_mul<mode>_scalar): Ditto.
26627         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
26628         (*pred_nmsub<mode>_extended_scalar): Ditto.
26629         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
26630         (*pred_nmsac<mode>_extended_scalar): Ditto.
26631         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
26632         (*pred_minus_mul<mode>_extended_scalar): Ditto.
26633         (*pred_<madd_msub><mode>): Ditto.
26634         (*pred_<macc_msac><mode>): Ditto.
26635         (*pred_<madd_msub><mode>_scalar): Ditto.
26636         (*pred_<macc_msac><mode>_scalar): Ditto.
26637         (@pred_neg_mul_<optab><mode>): Ditto.
26638         (@pred_mul_neg_<optab><mode>): Ditto.
26639         (*pred_<nmadd_msub><mode>): Ditto.
26640         (*pred_<nmsub_nmadd><mode>): Ditto.
26641         (*pred_<nmacc_msac><mode>): Ditto.
26642         (*pred_<nmsac_nmacc><mode>): Ditto.
26643         (*pred_neg_mul_<optab><mode>): Ditto.
26644         (*pred_mul_neg_<optab><mode>): Ditto.
26645         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
26646         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
26647         (*pred_<nmadd_msub><mode>_scalar): Ditto.
26648         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
26649         (*pred_<nmacc_msac><mode>_scalar): Ditto.
26650         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
26651         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
26652         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
26653         (@pred_widen_neg_mul_<optab><mode>): Ditto.
26654         (@pred_widen_mul_neg_<optab><mode>): Ditto.
26655         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
26656         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
26658 2023-03-23  liuhongt  <hongtao.liu@intel.com>
26660         * builtins.cc (builtin_memset_read_str): Replace
26661         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
26662         (builtin_memset_gen_str): Ditto.
26663         * config/i386/i386-expand.cc
26664         (ix86_convert_const_wide_int_to_broadcast): Replace
26665         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
26666         (ix86_expand_vector_move): Ditto.
26667         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
26668         Removed.
26669         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
26670         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
26671         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
26672         * doc/tm.texi.in: Ditto.
26673         * target.def: Ditto.
26675 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
26677         * lra.cc (lra): Do not repeat inheritance and live range splitting
26678         when asm error is found.
26680 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
26682         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
26683         (gcn_expand_dpp_distribute_even_insn)
26684         (gcn_expand_dpp_distribute_odd_insn): Declare.
26685         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
26686         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
26687         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
26688         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
26689         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
26690         (fms<mode>4_negop2): New patterns.
26691         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
26692         (gcn_expand_dpp_distribute_even_insn)
26693         (gcn_expand_dpp_distribute_odd_insn): New functions.
26694         * config/gcn/gcn.md: Add entries to unspec enum.
26696 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
26698         PR tree-optimization/109008
26699         * value-range.cc (frange::set): Add nan_state argument.
26700         * value-range.h (class nan_state): New.
26701         (frange::get_nan_state): New.
26703 2023-03-22  Martin Liska  <mliska@suse.cz>
26705         * configure: Regenerate.
26707 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
26709         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
26710         to variants.
26712 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
26714         PR tree-optimization/109192
26715         * gimple-range-gori.cc (gori_compute::compute_operand_range):
26716         Terminate gori calculations if a relation is not relevant.
26717         * value-relation.h (value_relation::set_relation): Allow
26718         equality between op1 and op2 if they are the same.
26720 2023-03-21  Richard Biener  <rguenther@suse.de>
26722         PR tree-optimization/109219
26723         * tree-vect-loop.cc (vectorizable_reduction): Check
26724         slp_node, not STMT_SLP_TYPE.
26725         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
26726         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
26727         Remove assertion on STMT_SLP_TYPE.
26729 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
26731         PR tree-optimization/109215
26732         * tree.h (enum special_array_member): Adjust comments for int_0
26733         and trail_0.
26734         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
26735         has zero sized element type and the array has variable number of
26736         elements or constant one or more elements.
26737         (component_ref_size): Adjust comments, formatting fix.
26739 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
26741         * configure.ac: Add check for the Texinfo 6.8
26742         CONTENTS_OUTPUT_LOCATION customization variable and set it if
26743         supported.
26744         * configure: Regenerate.
26745         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
26746         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
26747         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
26748         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
26750 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
26752         * doc/extend.texi: Associate use_hazard_barrier_return index
26753         entry with its attribute.
26754         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
26755         its attribute
26757 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
26759         * doc/implement-c.texi: Remove usage of @gol.
26760         * doc/invoke.texi: Ditto.
26761         * doc/sourcebuild.texi: Ditto.
26762         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
26763         texinfo.tex versions, the bug it was working around appears to
26764         be gone.
26766 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
26768         * doc/include/texinfo.tex: Update to 2023-01-17.19.
26770 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
26772         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
26773         @enddefbuiltin for defining built-in functions.
26774         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
26775         places where it should be used.
26777 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
26779         * doc/extend.texi (Formatted Output Function Checking): New
26780         subsection for  grouping together printf et al.
26781         (Exception handling) Fix missing @ sign before copyright
26782         header, which lead to the copyright line leaking into
26783         '(gcc)Exception handling'.
26784         * doc/gcc.texi: Set document language to en_US.
26785         (@copying): Wrap front cover texts in quotations, move in manual
26786         description text.
26788 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
26790         * doc/gcc.texi: Add the Indices appendix, to make texinfo
26791         generate nice indices overview page.
26793 2023-03-21  Richard Biener  <rguenther@suse.de>
26795         PR tree-optimization/109170
26796         * gimple-range-op.cc (cfn_pass_through_arg1): New.
26797         (gimple_range_op_handler::maybe_builtin_call): Handle
26798         __builtin_expect via cfn_pass_through_arg1.
26800 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
26802         PR target/109067
26803         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
26804         (init_float128_ieee): Delete code to switch complex multiply and divide
26805         for long double.
26806         (complex_multiply_builtin_code): New helper function.
26807         (complex_divide_builtin_code): Likewise.
26808         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
26809         of complex 128-bit multiply and divide built-in functions.
26811 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
26813         PR target/109178
26814         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
26816 2023-03-19  Jonny Grant  <jg@jguk.org>
26818         * doc/extend.texi (Common Function Attributes) <nonnull>:
26819         Correct typo.
26821 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
26823         PR rtl-optimization/109179
26824         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
26825         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
26827 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
26829         PR target/105554
26830         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
26831         to false.
26832         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
26833         to allocate_struct_function instead of false.
26834         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
26835         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
26836         push_struct_function.  Call targetm.target_option.relayout_function
26837         after it.
26838         (tree_function_versioning): Formatting fix.
26840 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
26842         * lra-constraints.cc: Include hooks.h.
26843         (combine_reload_insn): New function.
26844         (lra_constraints): Call it.
26846 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26847             kito-cheng  <kito.cheng@sifive.com>
26849         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
26850         as legitimate value.
26851         * config/riscv/riscv-vector-builtins.cc
26852         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
26853         (function_expander::use_widen_ternop_insn): Ditto.
26854         * config/riscv/vector.md (@vundefined<mode>): New pattern.
26855         (pred_mul_<optab><mode>_undef_merge): Remove.
26856         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
26857         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
26858         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
26859         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
26861 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26863         PR target/109092
26864         * config/riscv/riscv.md: Fix subreg bug.
26866 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
26868         PR middle-end/108685
26869         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
26870         use its loop_father rather than BODY_BB's loop_father.
26871         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
26872         If broken_loop with ordered > collapse and at least one of those
26873         extra loops aren't guaranteed to have at least one iteration, change
26874         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
26875         loop_father to l0_bb's loop_father rather than l1_bb's.
26877 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
26879         PR plugins/108634
26880         * gdbhooks.py (TreePrinter.to_string): Wrap
26881         gdb.parse_and_eval('tree_code_type') in a try block, parse
26882         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
26883         raises exception.  Update comments for the recent tree_code_type
26884         changes.
26886 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
26888         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
26889         issues.  Add more line breaks to example so it doesn't overflow
26890         the margins.
26892 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
26894         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
26895         line breaks in examples.
26896         <malloc>: Fix bad line breaks in running text, also copy-edit
26897         for consistency.
26898         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
26899         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
26900         @gol.
26901         (C++ Dialect Options) <-fcontracts>: Add line break in example.
26902         <-Wctad-maybe-unsupported>: Likewise.
26903         <-Winvalid-constexpr>: Likewise.
26904         (Warning Options) <-Wdangling-pointer>: Likewise.
26905         <-Winterference-size>: Likewise.
26906         <-Wvla-parameter>: Likewise.
26907         (Static Analyzer Options): Fix bad line breaks in running text,
26908         plus add some missing markup.
26909         (Optimize Options) <openacc-privatization>: Fix more bad line
26910         breaks in running text.
26912 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
26914         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
26915         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
26916         (expand_vec_perm_2perm_pblendv): Ditto.
26918 2023-03-16  Martin Liska  <mliska@suse.cz>
26920         PR middle-end/106133
26921         * gcc.cc (driver_handle_option): Use x_main_input_basename
26922         if x_dump_base_name is null.
26923         * opts.cc (common_handle_option): Likewise.
26925 2023-03-16  Richard Biener  <rguenther@suse.de>
26927         PR tree-optimization/109123
26928         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
26929         Do not emit -Wuse-after-free late.
26930         (pass_waccess::check_call): Always check call pointer uses.
26932 2023-03-16  Richard Biener  <rguenther@suse.de>
26934         PR tree-optimization/109141
26935         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
26936         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
26937         out from ...
26938         (renumber_gimple_stmt_uids): ... here and
26939         (renumber_gimple_stmt_uids_in_blocks): ... here.
26940         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
26941         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
26942         to PHIs.
26943         (pass_waccess::check_pointer_uses): Process all PHIs.
26945 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
26947         PR analyzer/109097
26948         * diagnostic-format-sarif.cc (class sarif_invocation): New.
26949         (class sarif_ice_notification): New.
26950         (sarif_builder::m_invocation_obj): New field.
26951         (sarif_invocation::add_notification_for_ice): New.
26952         (sarif_invocation::prepare_to_flush): New.
26953         (sarif_ice_notification::sarif_ice_notification): New.
26954         (sarif_builder::sarif_builder): Add m_invocation_obj.
26955         (sarif_builder::end_diagnostic): Special-case DK_ICE and
26956         DK_ICE_NOBT.
26957         (sarif_builder::flush_to_file): Call prepare_to_flush on
26958         m_invocation_obj.  Pass the latter to make_top_level_object.
26959         (sarif_builder::make_result_object): Move creation of "locations"
26960         array to...
26961         (sarif_builder::make_locations_arr): ...this new function.
26962         (sarif_builder::make_top_level_object): Add "invocation_obj" param
26963         and pass it to make_run_object.
26964         (sarif_builder::make_run_object): Add "invocation_obj" param and
26965         use it.
26966         (sarif_ice_handler): New callback.
26967         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
26968         * diagnostic.cc (diagnostic_initialize): Initialize new field
26969         "ice_handler_cb".
26970         (diagnostic_action_after_output): If it is set, make one attempt
26971         to call ice_handler_cb.
26972         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
26974 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
26976         * config/i386/i386-expand.cc (expand_vec_perm_blend):
26977         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
26978         and fix V2HImode handling.
26979         (expand_vec_perm_1): Try to emit BLEND instruction
26980         before MOVSS/MOVSD.
26981         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
26983 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
26985         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
26987 2023-03-15  Richard Biener  <rguenther@suse.de>
26989         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
26990         Do not diagnose clobbers.
26992 2023-03-15  Richard Biener  <rguenther@suse.de>
26994         PR tree-optimization/109139
26995         * tree-ssa-live.cc (remove_unused_locals): Look at the
26996         base address for unused decls on the LHS of .DEFERRED_INIT.
26998 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
27000         PR other/109086
27001         * builtins.cc (inline_string_cmp): Force the character
27002         difference into "result" pseudo-register, instead of reassign
27003         the pseudo-register.
27005 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27007         * config.gcc: Add thead.o to RISC-V extra_objs.
27008         * config/riscv/peephole.md: Add mempair peephole passes.
27009         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
27010         prototype.
27011         (th_mempair_operands_p): Likewise.
27012         (th_mempair_order_operands): Likewise.
27013         (th_mempair_prepare_save_restore_operands): Likewise.
27014         (th_mempair_save_restore_regs): Likewise.
27015         (th_mempair_output_move): Likewise.
27016         * config/riscv/riscv.cc (riscv_save_reg): Move code.
27017         (riscv_restore_reg): Move code.
27018         (riscv_for_each_saved_reg): Add code to emit mempair insns.
27019         * config/riscv/t-riscv: Add thead.cc.
27020         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
27021         New insn.
27022         (*th_mempair_store_<GPR:mode>2): Likewise.
27023         (*th_mempair_load_extendsidi2): Likewise.
27024         (*th_mempair_load_zero_extendsidi2): Likewise.
27025         * config/riscv/thead.cc: New file.
27027 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27029         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
27030         New constraint "th_f_fmv".
27031         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
27032         "th_r_fmv".
27033         * config/riscv/riscv.cc (riscv_split_doubleword_move):
27034         Add split code for XTheadFmv.
27035         (riscv_secondary_memory_needed): XTheadFmv does not need
27036         secondary memory.
27037         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
27038         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
27039         movdf_hardfloat_rv32.
27040         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
27041         (th_fmv_x_w): New INSN.
27042         (th_fmv_x_hw): New INSN.
27044 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27046         * config/riscv/riscv.md (maddhisi4): New expand.
27047         (msubhisi4): New expand.
27048         * config/riscv/thead.md (*th_mula<mode>): New pattern.
27049         (*th_mulawsi): New pattern.
27050         (*th_mulawsi2): New pattern.
27051         (*th_maddhisi4): New pattern.
27052         (*th_sextw_maddhisi4): New pattern.
27053         (*th_muls<mode>): New pattern.
27054         (*th_mulswsi): New pattern.
27055         (*th_mulswsi2): New pattern.
27056         (*th_msubhisi4): New pattern.
27057         (*th_sextw_msubhisi4): New pattern.
27059 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27061         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
27062         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
27063         Add prototype.
27064         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
27065         XTheadCondMov.
27066         (riscv_expand_conditional_move): New function.
27067         (riscv_expand_conditional_move_onesided): New function.
27068         * config/riscv/riscv.md: Add support for XTheadCondMov.
27069         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
27070         support for XTheadCondMov.
27071         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
27073 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27075         * config/riscv/bitmanip.md (clzdi2): New expand.
27076         (clzsi2): New expand.
27077         (ctz<mode>2): New expand.
27078         (popcount<mode>2): New expand.
27079         (<bitmanip_optab>si2): Rename INSN.
27080         (*<bitmanip_optab>si2): Hide INSN name.
27081         (<bitmanip_optab>di2): Rename INSN.
27082         (*<bitmanip_optab>di2): Hide INSN name.
27083         (rotrsi3): Remove INSN.
27084         (rotr<mode>3): Add expand.
27085         (*rotrsi3): New INSN.
27086         (rotrdi3): Rename INSN.
27087         (*rotrdi3): Hide INSN name.
27088         (rotrsi3_sext): Rename INSN.
27089         (*rotrsi3_sext): Hide INSN name.
27090         (bswap<mode>2): Remove INSN.
27091         (bswapdi2): Add expand.
27092         (bswapsi2): Add expand.
27093         (*bswap<mode>2): Hide INSN name.
27094         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
27095         extraction.
27096         * config/riscv/riscv.md (extv<mode>): New expand.
27097         (extzv<mode>): New expand.
27098         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
27099         (*th_ext<mode>): New INSN.
27100         (*th_extu<mode>): New INSN.
27101         (*th_clz<mode>2): New INSN.
27102         (*th_rev<mode>2): New INSN.
27104 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27106         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
27107         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
27109 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27111         * config/riscv/riscv.md: Include thead.md
27112         * config/riscv/thead.md: New file.
27114 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27116         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
27118 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
27120         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
27121         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
27122         (MASK_XTHEADBB): New.
27123         (MASK_XTHEADBS): New.
27124         (MASK_XTHEADCMO): New.
27125         (MASK_XTHEADCONDMOV): New.
27126         (MASK_XTHEADFMEMIDX): New.
27127         (MASK_XTHEADFMV): New.
27128         (MASK_XTHEADINT): New.
27129         (MASK_XTHEADMAC): New.
27130         (MASK_XTHEADMEMIDX): New.
27131         (MASK_XTHEADMEMPAIR): New.
27132         (MASK_XTHEADSYNC): New.
27133         (TARGET_XTHEADBA): New.
27134         (TARGET_XTHEADBB): New.
27135         (TARGET_XTHEADBS): New.
27136         (TARGET_XTHEADCMO): New.
27137         (TARGET_XTHEADCONDMOV): New.
27138         (TARGET_XTHEADFMEMIDX): New.
27139         (TARGET_XTHEADFMV): New.
27140         (TARGET_XTHEADINT): New.
27141         (TARGET_XTHEADMAC): New.
27142         (TARGET_XTHEADMEMIDX): New.
27143         (TARGET_XTHEADMEMPAIR): new.
27144         (TARGET_XTHEADSYNC): New.
27145         * config/riscv/riscv.opt: Add riscv_xthead_subext.
27147 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
27149         PR target/109117
27150         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
27151         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
27152         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
27154 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
27156         PR target/109109
27157         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
27158         when lo is equal to dhi and hi is a MEM which uses dlo register.
27160 2023-03-14  Martin Jambor  <mjambor@suse.cz>
27162         PR ipa/107925
27163         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
27164         global0 instead of zeroing when it does not have as many counts as
27165         it should.
27167 2023-03-14  Martin Jambor  <mjambor@suse.cz>
27169         PR ipa/107925
27170         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
27171         ipa count, remove assert, lenient_count_portion_handling, dump
27172         also orig_node_count.
27174 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
27176         * config/i386/i386-expand.cc (expand_vec_perm_movs):
27177         Handle V2SImode for TARGET_MMX_WITH_SSE.
27178         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
27179         using V2FI mode iterator to handle both V2SI and V2SF modes.
27181 2023-03-14  Sam James  <sam@gentoo.org>
27183         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
27184         including <sstream> earlier.
27185         * system.h: Add INCLUDE_SSTREAM.
27187 2023-03-14  Richard Biener  <rguenther@suse.de>
27189         * tree-ssa-live.cc (remove_unused_locals): Do not treat
27190         the .DEFERRED_INIT of a variable as use, instead remove
27191         that if it is the only use.
27193 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
27195         PR rtl-optimization/107762
27196         * expr.cc (emit_group_store): Revert latest change.
27198 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
27200         PR tree-optimization/109005
27201         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
27202         aggregate type check.
27204 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
27206         PR tree-optimization/109115
27207         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
27208         r.upper_bound () on r.undefined_p () range.
27210 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
27212         PR tree-optimization/106896
27213         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
27214         implementatoin with probability_in; avoid some asserts.
27216 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
27218         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
27220 2023-03-13  Sean Bright  <sean@seanbright.com>
27222         * doc/invoke.texi (Warning Options): Remove errant 'See'
27223         before @xref.
27225 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
27227         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
27228         REG_OK_FOR_BASE_P): Remove.
27230 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27232         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
27233         (=vd,vd,vr,vr): Ditto.
27234         * config/riscv/vector.md: Ditto.
27236 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27238         * config/riscv/riscv-vector-builtins.cc
27239         (function_expander::use_compare_insn): Add operand predicate check.
27241 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27243         * config/riscv/vector.md: Fine tune RA constraints.
27245 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
27247         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
27248         hsaco assemble/link.
27250 2023-03-13  Richard Biener  <rguenther@suse.de>
27252         PR tree-optimization/109046
27253         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
27254         piecewise complex loads.
27256 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
27258         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
27259         (aarch64_bf16_ptr_type_node): Adjust comment.
27260         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
27261         bfloat16_type_node rather than aarch64_bf16_type_node.
27262         (aarch64_libgcc_floating_mode_supported_p,
27263         aarch64_scalar_mode_supported_p): Also support BFmode.
27264         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
27265         (aarch64_invalid_binary_op): Remove BFmode related rejections.
27266         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
27267         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
27268         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
27269         aarch64_bf16_type_node.
27270         (aarch64_init_simd_builtin_types): Likewise.
27271         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
27272         which is created in tree.cc already.
27273         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
27275 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
27277         PR middle-end/109031
27278         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
27279         ensure that the type of x is as wide or wider than the type of a.
27281 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
27283         PR target/108583
27284         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
27285         (*bitmask_shift_plus<mode>): New.
27286         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
27287         (@aarch64_bitmask_udiv<mode>3): Remove.
27288         * config/aarch64/aarch64.cc
27289         (aarch64_vectorize_can_special_div_by_constant,
27290         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
27291         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
27292         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
27294 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
27296         PR target/108583
27297         * target.def (preferred_div_as_shifts_over_mult): New.
27298         * doc/tm.texi.in: Document it.
27299         * doc/tm.texi: Regenerate.
27300         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
27301         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
27302         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
27304 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
27305             Richard Sandiford  <richard.sandiford@arm.com>
27307         PR target/108583
27308         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
27309         single use.
27311 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
27312             Andrew MacLeod  <amacleod@redhat.com>
27314         PR target/108583
27315         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
27316         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
27317         Use it.
27318         (gimple_range_op_handler::maybe_non_standard): New.
27319         * range-op.cc (class operator_widen_plus_signed,
27320         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
27321         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
27322         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
27323         operator_widen_mult_unsigned::wi_fold,
27324         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
27325         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
27326         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
27327         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
27329 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
27331         PR target/108583
27332         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
27333         * doc/tm.texi.in: Likewise.
27334         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
27335         * expmed.cc (expand_divmod): Likewise.
27336         * expmed.h (expand_divmod): Likewise.
27337         * expr.cc (force_operand, expand_expr_divmod): Likewise.
27338         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
27339         * target.def (can_special_div_by_const): Remove.
27340         * target.h: Remove tree-core.h include
27341         * targhooks.cc (default_can_special_div_by_const): Remove.
27342         * targhooks.h (default_can_special_div_by_const): Remove.
27343         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
27344         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
27345         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
27347 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
27349         * doc/install.texi2html: Fix issue number typo in comment.
27351 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
27353         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
27354         bool.
27356 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
27358         * doc/invoke.texi (Optimize Options):  Add markup to
27359         description of asan-kernel-mem-intrinsic-prefix, and clarify
27360         wording slightly.
27362 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
27364         * doc/extend.texi (Named Address Spaces): Drop a redundant link
27365         to AVR-LibC.
27367 2023-03-11  Jeff Law  <jlaw@ventanamicro>
27369         PR web/88860
27370         * doc/extend.texi: Clarify Attribute Syntax a bit.
27372 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
27374         * doc/install.texi (Prerequisites): Suggest using newer versions
27375         of Texinfo.
27376         (Final install): Clean up and modernize discussion of how to
27377         build or obtain the GCC manuals.
27378         * doc/install.texi2html: Update comment to point to the PR instead
27379         of "makeinfo 4.7 brokenness" (it's not specific to that version).
27381 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
27383         PR target/107703
27384         * optabs.cc (expand_fix): For conversions from BFmode to integral,
27385         use shifts to convert it to SFmode first and then convert SFmode
27386         to integral.
27388 2023-03-10  Andrew Pinski  <apinski@marvell.com>
27390         * config/aarch64/aarch64.md: Add a new define_split
27391         to help combine.
27393 2023-03-10  Richard Biener  <rguenther@suse.de>
27395         * tree-ssa-structalias.cc (solve_graph): Immediately
27396         iterate self-cycles.
27398 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
27400         PR tree-optimization/109008
27401         * range-op-float.cc (float_widen_lhs_range): If not
27402         -frounding-math and not IBM double double format, extend lhs
27403         range just by 0.5ulp rather than 1ulp in each direction.
27405 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
27407         PR target/107998
27408         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
27409         $tmake_file.
27410         * config/i386/t-cygwin-w64: Remove.
27412 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
27414         PR plugins/108634
27415         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
27416         C++14, don't declare as extern const arrays.
27417         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
27418         static constexpr member arrays for C++11 or C++14.
27419         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
27420         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
27421         (TREE_CODE_LENGTH): For C++11 or C++14 use
27422         tree_code_length_tmpl <0>::tree_code_length instead of
27423         tree_code_length.
27424         * tree.cc (tree_code_type, tree_code_length): Remove.
27426 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
27428         PR other/108464
27429         * common.opt (fcanon-prefix-map): New option.
27430         * opts.cc: Include file-prefix-map.h.
27431         (flag_canon_prefix_map): New variable.
27432         (common_handle_option): Handle OPT_fcanon_prefix_map.
27433         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
27434         * file-prefix-map.h (flag_canon_prefix_map): Declare.
27435         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
27436         member.
27437         (add_prefix_map): Initialize canonicalize member from
27438         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
27439         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
27440         use lrealpath result only for map->canonicalize map entries.
27441         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
27442         * opts-global.cc (handle_common_deferred_options): Clear
27443         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
27444         * doc/invoke.texi (-fcanon-prefix-map): Document.
27445         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
27446         see also for -fcanon-prefix-map.
27447         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
27449 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
27451         PR c/108079
27452         * cgraphunit.cc (check_global_declaration): Don't warn for unused
27453         variables which have OPT_Wunused_variable warning suppressed.
27455 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
27457         PR tree-optimization/109008
27458         * range-op-float.cc (float_widen_lhs_range): If lb is
27459         minimum representable finite number or ub is maximum
27460         representable finite number, instead of widening it to
27461         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
27462         Temporarily clear flag_finite_math_only when canonicalizing
27463         the widened range.
27465 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27467         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
27468         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
27469         (gimple_fold_builtin):  Ditto.
27470         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
27471         (class vleff): Ditto.
27472         (BASE): Ditto.
27473         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27474         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
27475         (vleff): Ditto.
27476         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
27477         (struct fault_load_def): Ditto.
27478         (SHAPE): Ditto.
27479         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
27480         * config/riscv/riscv-vector-builtins.cc
27481         (rvv_arg_type_info::get_tree_type): Add size_ptr.
27482         (gimple_folder::gimple_folder): New class.
27483         (gimple_folder::fold): Ditto.
27484         (gimple_fold_builtin): New function.
27485         (get_read_vl_instance): Ditto.
27486         (get_read_vl_decl): Ditto.
27487         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
27488         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
27489         (get_read_vl_instance): New function.
27490         (get_read_vl_decl):  Ditto.
27491         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
27492         (read_vl_insn_p): Ditto.
27493         (available_occurrence_p): Ditto.
27494         (backward_propagate_worthwhile_p): Ditto.
27495         (gen_vsetvl_pat): Adapt for vleff support.
27496         (get_forward_read_vl_insn): New function.
27497         (get_backward_fault_first_load_insn): Ditto.
27498         (source_equal_p): Adapt for vleff support.
27499         (first_ratio_invalid_for_second_sew_p): Remove.
27500         (first_ratio_invalid_for_second_lmul_p): Ditto.
27501         (first_lmul_less_than_second_lmul_p): Ditto.
27502         (first_ratio_less_than_second_ratio_p): Ditto.
27503         (support_relaxed_compatible_p): New function.
27504         (vector_insn_info::operator>): Remove.
27505         (vector_insn_info::operator>=): Refine.
27506         (vector_insn_info::parse_insn): Adapt for vleff support.
27507         (vector_insn_info::compatible_p): Ditto.
27508         (vector_insn_info::update_fault_first_load_avl): New function.
27509         (pass_vsetvl::transfer_after): Adapt for vleff support.
27510         (pass_vsetvl::demand_fusion): Ditto.
27511         (pass_vsetvl::cleanup_insns): Ditto.
27512         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
27513         redundant condtions.
27514         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
27515         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
27516         * config/riscv/riscv.md: Adapt for vleff support.
27517         * config/riscv/t-riscv: Ditto.
27518         * config/riscv/vector-iterators.md: New iterator.
27519         * config/riscv/vector.md (read_vlsi): New pattern.
27520         (read_vldi_zero_extend): Ditto.
27521         (@pred_fault_load<mode>): Ditto.
27523 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27525         * config/riscv/riscv-vector-builtins.cc
27526         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
27527         (function_expander::use_widen_ternop_insn): Ditto.
27528         * optabs.cc (maybe_gen_insn): Extend nops handling.
27530 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27532         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
27533         patterns according to RVV ISA.
27534         * config/riscv/vector-iterators.md: New iterators.
27535         * config/riscv/vector.md
27536         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
27537         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
27538         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
27539         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
27540         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
27541         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
27542         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
27543         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
27544         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
27545         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
27546         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
27547         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
27548         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
27549         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
27551 2023-03-10  Michael Collison  <collison@rivosinc.com>
27553         * tree-vect-loop-manip.cc (vect_do_peeling): Use
27554         result of constant_lower_bound instead of vf for the lower
27555         bound of the epilog loop trip count.
27557 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
27559         * passes.cc (emergency_dump_function): Finish graph generation.
27561 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
27563         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
27564         and bottom bit only.
27566 2023-03-09  Andrew Pinski  <apinski@marvell.com>
27568         PR tree-optimization/108980
27569         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
27570         Reorgnize the call to warning for not strict flexible arrays
27571         to be before the check of warned.
27573 2023-03-09  Jason Merrill  <jason@redhat.com>
27575         * doc/extend.texi: Comment out __is_deducible docs.
27577 2023-03-09  Jason Merrill  <jason@redhat.com>
27579         PR c++/105841
27580         * doc/extend.texi (Type Traits):: Document __is_deducible.
27582 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
27584         PR driver/108865
27585         * config.host: add object for x86_64-*-mingw*.
27586         * config/i386/sym-mingw32.cc: dummy file to attach
27587         symbol.
27588         * config/i386/utf8-mingw32.rc: windres resource file.
27589         * config/i386/winnt-utf8.manifest: XML manifest to
27590         enable UTF-8.
27591         * config/i386/x-mingw32: reference to x-mingw32-utf8.
27592         * config/i386/x-mingw32-utf8: Makefile fragment to
27593         embed UTF-8 manifest.
27595 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
27597         * lra-constraints.cc (process_alt_operands): Use operand modes for
27598         clobbered regs instead of the biggest access mode.
27600 2023-03-09  Richard Biener  <rguenther@suse.de>
27602         PR middle-end/108995
27603         * fold-const.cc (extract_muldiv_1): Avoid folding
27604         (CST * b) / CST2 when sanitizing overflow and we rely on
27605         overflow being undefined.
27607 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
27608             Richard Biener  <rguenther@suse.de>
27610         PR tree-optimization/109008
27611         * range-op-float.cc (float_widen_lhs_range): New function.
27612         (foperator_plus::op1_range, foperator_minus::op1_range,
27613         foperator_minus::op2_range, foperator_mult::op1_range,
27614         foperator_div::op1_range, foperator_div::op2_range): Use it.
27616 2023-03-07  Jonathan Grant  <jg@jguk.org>
27618         PR sanitizer/81649
27619         * doc/invoke.texi (Instrumentation Options):  Clarify
27620         LeakSanitizer behavior.
27622 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
27624         * doc/install.texi (Prerequisites): Add link to gmplib.org.
27626 2023-03-07  Pan Li  <pan2.li@intel.com>
27627             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27629         PR target/108185
27630         PR target/108654
27631         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
27632         modes.
27633         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
27634         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
27635         * genmodes.cc (adj_precision): New.
27636         (ADJUST_PRECISION): New.
27637         (emit_mode_adjustments): Handle ADJUST_PRECISION.
27639 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
27641         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
27643 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
27645         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
27646         {s|u}{max|min} in QI, HI and DI modes.
27647         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
27648         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
27649         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
27650         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
27651         saved in SGPRs.
27653 2023-03-06  Richard Biener  <rguenther@suse.de>
27655         PR tree-optimization/109025
27656         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
27657         the inner LC PHI use is the inner loop PHI latch definition
27658         before classifying an outer PHI as double reduction.
27660 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
27662         PR target/108429
27663         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
27664         generic.
27665         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
27666         (X86_TUNE_USE_SCATTER): Likewise.
27668 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
27670         PR target/109000
27671         * config/loongarch/loongarch.h (FP_RETURN): Use
27672         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
27673         (UNITS_PER_FP_ARG): Likewise.
27675 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27677         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
27678         (pass_vsetvl::backward_demand_fusion): Ditto.
27680 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
27681             SiYu Wu  <siyu@isrc.iscas.ac.cn>
27683         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
27684         instructions.
27685         (riscv_sm3p1_<mode>): New.
27686         (riscv_sm4ed_<mode>): New.
27687         (riscv_sm4ks_<mode>): New.
27688         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
27689         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
27690         ZKSH's built-in functions.
27692 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
27693             SiYu Wu  <siyu@isrc.iscas.ac.cn>
27695         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
27696         (riscv_sha256sig1_<mode>): New.
27697         (riscv_sha256sum0_<mode>): New.
27698         (riscv_sha256sum1_<mode>): New.
27699         (riscv_sha512sig0h): New.
27700         (riscv_sha512sig0l): New.
27701         (riscv_sha512sig1h): New.
27702         (riscv_sha512sig1l): New.
27703         (riscv_sha512sum0r): New.
27704         (riscv_sha512sum1r): New.
27705         (riscv_sha512sig0): New.
27706         (riscv_sha512sig1): New.
27707         (riscv_sha512sum0): New.
27708         (riscv_sha512sum1): New.
27709         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
27710         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
27711         built-in functions.
27712         (DIRECT_BUILTIN): Add new.
27714 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
27715             SiYu Wu  <siyu@isrc.iscas.ac.cn>
27717         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
27718         (DsA): New.
27719         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
27720         (riscv_aes32dsmi): New.
27721         (riscv_aes64ds): New.
27722         (riscv_aes64dsm): New.
27723         (riscv_aes64im): New.
27724         (riscv_aes64ks1i): New.
27725         (riscv_aes64ks2): New.
27726         (riscv_aes32esi): New.
27727         (riscv_aes32esmi): New.
27728         (riscv_aes64es): New.
27729         (riscv_aes64esm): New.
27730         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
27731         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
27732         ZKNE's built-in functions.
27734 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
27735             SiYu Wu  <siyu@isrc.iscas.ac.cn>
27737         * config/riscv/bitmanip.md: Add ZBKB's instructions.
27738         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
27739         * config/riscv/riscv.md: Add new type for crypto instructions.
27740         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
27741         description file.
27742         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
27743         extension's built-in function file.
27745 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
27746             SiYu Wu  <siyu@isrc.iscas.ac.cn>
27748         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
27749         (RISCV_FTYPE_NAME3): New.
27750         (RISCV_ATYPE_QI): New.
27751         (RISCV_ATYPE_HI): New.
27752         (RISCV_FTYPE_ATYPES2): New.
27753         (RISCV_FTYPE_ATYPES3): New.
27754         * config/riscv/riscv-ftypes.def (2): New.
27755         (3): New.
27757 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
27759         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
27760         use exact_log2().
27762 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27763             kito-cheng  <kito.cheng@sifive.com>
27765         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
27766         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
27767         (riscv_register_pragmas): Add builtin function check call.
27768         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
27769         (check_builtin_call): New function.
27770         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
27771         (class vreinterpret): Ditto.
27772         (class vlmul_ext): Ditto.
27773         (class vlmul_trunc): Ditto.
27774         (class vset): Ditto.
27775         (class vget): Ditto.
27776         (BASE): Ditto.
27777         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
27778         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
27779         (vluxei16): Ditto.
27780         (vluxei32): Ditto.
27781         (vluxei64): Ditto.
27782         (vloxei8): Ditto.
27783         (vloxei16): Ditto.
27784         (vloxei32): Ditto.
27785         (vloxei64): Ditto.
27786         (vsuxei8): Ditto.
27787         (vsuxei16): Ditto.
27788         (vsuxei32): Ditto.
27789         (vsuxei64): Ditto.
27790         (vsoxei8): Ditto.
27791         (vsoxei16): Ditto.
27792         (vsoxei32): Ditto.
27793         (vsoxei64): Ditto.
27794         (vundefined): Add new intrinsic.
27795         (vreinterpret): Ditto.
27796         (vlmul_ext): Ditto.
27797         (vlmul_trunc): Ditto.
27798         (vset): Ditto.
27799         (vget): Ditto.
27800         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
27801         (struct narrow_alu_def): Ditto.
27802         (struct reduc_alu_def): Ditto.
27803         (struct vundefined_def): Ditto.
27804         (struct misc_def): Ditto.
27805         (struct vset_def): Ditto.
27806         (struct vget_def): Ditto.
27807         (SHAPE): Ditto.
27808         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
27809         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
27810         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
27811         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
27812         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
27813         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
27814         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
27815         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
27816         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
27817         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
27818         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
27819         (DEF_RVV_LMUL1_OPS): Ditto.
27820         (DEF_RVV_LMUL2_OPS): Ditto.
27821         (DEF_RVV_LMUL4_OPS): Ditto.
27822         (vint16mf4_t): Ditto.
27823         (vint16mf2_t): Ditto.
27824         (vint16m1_t): Ditto.
27825         (vint16m2_t): Ditto.
27826         (vint16m4_t): Ditto.
27827         (vint16m8_t): Ditto.
27828         (vint32mf2_t): Ditto.
27829         (vint32m1_t): Ditto.
27830         (vint32m2_t): Ditto.
27831         (vint32m4_t): Ditto.
27832         (vint32m8_t): Ditto.
27833         (vint64m1_t): Ditto.
27834         (vint64m2_t): Ditto.
27835         (vint64m4_t): Ditto.
27836         (vint64m8_t): Ditto.
27837         (vuint16mf4_t): Ditto.
27838         (vuint16mf2_t): Ditto.
27839         (vuint16m1_t): Ditto.
27840         (vuint16m2_t): Ditto.
27841         (vuint16m4_t): Ditto.
27842         (vuint16m8_t): Ditto.
27843         (vuint32mf2_t): Ditto.
27844         (vuint32m1_t): Ditto.
27845         (vuint32m2_t): Ditto.
27846         (vuint32m4_t): Ditto.
27847         (vuint32m8_t): Ditto.
27848         (vuint64m1_t): Ditto.
27849         (vuint64m2_t): Ditto.
27850         (vuint64m4_t): Ditto.
27851         (vuint64m8_t): Ditto.
27852         (vint8mf4_t): Ditto.
27853         (vint8mf2_t): Ditto.
27854         (vint8m1_t): Ditto.
27855         (vint8m2_t): Ditto.
27856         (vint8m4_t): Ditto.
27857         (vint8m8_t): Ditto.
27858         (vuint8mf4_t): Ditto.
27859         (vuint8mf2_t): Ditto.
27860         (vuint8m1_t): Ditto.
27861         (vuint8m2_t): Ditto.
27862         (vuint8m4_t): Ditto.
27863         (vuint8m8_t): Ditto.
27864         (vint8mf8_t): Ditto.
27865         (vuint8mf8_t): Ditto.
27866         (vfloat32mf2_t): Ditto.
27867         (vfloat32m1_t): Ditto.
27868         (vfloat32m2_t): Ditto.
27869         (vfloat32m4_t): Ditto.
27870         (vfloat64m1_t): Ditto.
27871         (vfloat64m2_t): Ditto.
27872         (vfloat64m4_t): Ditto.
27873         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
27874         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
27875         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
27876         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
27877         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
27878         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
27879         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
27880         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
27881         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
27882         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
27883         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
27884         (DEF_RVV_LMUL1_OPS): Ditto.
27885         (DEF_RVV_LMUL2_OPS): Ditto.
27886         (DEF_RVV_LMUL4_OPS): Ditto.
27887         (DEF_RVV_TYPE_INDEX): Ditto.
27888         (required_extensions_p): Adapt for new intrinsic support/
27889         (get_required_extensions): New function.
27890         (check_required_extensions): Ditto.
27891         (unsigned_base_type_p): Remove.
27892         (rvv_arg_type_info::get_scalar_ptr_type): New function.
27893         (get_mode_for_bitsize): Remove.
27894         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
27895         (rvv_arg_type_info::get_base_vector_type): Ditto.
27896         (rvv_arg_type_info::get_function_type_index): Ditto.
27897         (DEF_RVV_BASE_TYPE): New def.
27898         (function_builder::apply_predication): New class.
27899         (function_expander::mask_mode): Ditto.
27900         (function_checker::function_checker): Ditto.
27901         (function_checker::report_non_ice): Ditto.
27902         (function_checker::report_out_of_range): Ditto.
27903         (function_checker::require_immediate): Ditto.
27904         (function_checker::require_immediate_range): Ditto.
27905         (function_checker::check): Ditto.
27906         (check_builtin_call): Ditto.
27907         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
27908         (DEF_RVV_BASE_TYPE): Ditto.
27909         (DEF_RVV_TYPE_INDEX): Ditto.
27910         (vbool64_t): Ditto.
27911         (vbool32_t): Ditto.
27912         (vbool16_t): Ditto.
27913         (vbool8_t): Ditto.
27914         (vbool4_t): Ditto.
27915         (vbool2_t): Ditto.
27916         (vbool1_t): Ditto.
27917         (vuint8mf8_t): Ditto.
27918         (vuint8mf4_t): Ditto.
27919         (vuint8mf2_t): Ditto.
27920         (vuint8m1_t): Ditto.
27921         (vuint8m2_t): Ditto.
27922         (vint8m4_t): Ditto.
27923         (vuint8m4_t): Ditto.
27924         (vint8m8_t): Ditto.
27925         (vuint8m8_t): Ditto.
27926         (vint16mf4_t): Ditto.
27927         (vuint16mf2_t): Ditto.
27928         (vuint16m1_t): Ditto.
27929         (vuint16m2_t): Ditto.
27930         (vuint16m4_t): Ditto.
27931         (vuint16m8_t): Ditto.
27932         (vint32mf2_t): Ditto.
27933         (vuint32m1_t): Ditto.
27934         (vuint32m2_t): Ditto.
27935         (vuint32m4_t): Ditto.
27936         (vuint32m8_t): Ditto.
27937         (vuint64m1_t): Ditto.
27938         (vuint64m2_t): Ditto.
27939         (vuint64m4_t): Ditto.
27940         (vuint64m8_t): Ditto.
27941         (vfloat32mf2_t): Ditto.
27942         (vfloat32m1_t): Ditto.
27943         (vfloat32m2_t): Ditto.
27944         (vfloat32m4_t): Ditto.
27945         (vfloat32m8_t): Ditto.
27946         (vfloat64m1_t): Ditto.
27947         (vfloat64m4_t): Ditto.
27948         (vector): Move it def.
27949         (scalar): Ditto.
27950         (mask): Ditto.
27951         (signed_vector): Ditto.
27952         (unsigned_vector): Ditto.
27953         (unsigned_scalar): Ditto.
27954         (vector_ptr): Ditto.
27955         (scalar_ptr): Ditto.
27956         (scalar_const_ptr): Ditto.
27957         (void): Ditto.
27958         (size): Ditto.
27959         (ptrdiff): Ditto.
27960         (unsigned_long): Ditto.
27961         (long): Ditto.
27962         (eew8_index): Ditto.
27963         (eew16_index): Ditto.
27964         (eew32_index): Ditto.
27965         (eew64_index): Ditto.
27966         (shift_vector): Ditto.
27967         (double_trunc_vector): Ditto.
27968         (quad_trunc_vector): Ditto.
27969         (oct_trunc_vector): Ditto.
27970         (double_trunc_scalar): Ditto.
27971         (double_trunc_signed_vector): Ditto.
27972         (double_trunc_unsigned_vector): Ditto.
27973         (double_trunc_unsigned_scalar): Ditto.
27974         (double_trunc_float_vector): Ditto.
27975         (float_vector): Ditto.
27976         (lmul1_vector): Ditto.
27977         (widen_lmul1_vector): Ditto.
27978         (eew8_interpret): Ditto.
27979         (eew16_interpret): Ditto.
27980         (eew32_interpret): Ditto.
27981         (eew64_interpret): Ditto.
27982         (vlmul_ext_x2): Ditto.
27983         (vlmul_ext_x4): Ditto.
27984         (vlmul_ext_x8): Ditto.
27985         (vlmul_ext_x16): Ditto.
27986         (vlmul_ext_x32): Ditto.
27987         (vlmul_ext_x64): Ditto.
27988         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
27989         (struct function_type_info): New function.
27990         (struct rvv_arg_type_info): Ditto.
27991         (class function_checker): New class.
27992         (rvv_arg_type_info::get_scalar_type): New function.
27993         (rvv_arg_type_info::get_vector_type): Ditto.
27994         (function_expander::ret_mode): New function.
27995         (function_checker::arg_mode): Ditto.
27996         (function_checker::ret_mode): Ditto.
27997         * config/riscv/t-riscv: Add generator.
27998         * config/riscv/vector-iterators.md: New iterators.
27999         * config/riscv/vector.md (vundefined<mode>): New pattern.
28000         (@vundefined<mode>): Ditto.
28001         (@vreinterpret<mode>): Ditto.
28002         (@vlmul_extx2<mode>): Ditto.
28003         (@vlmul_extx4<mode>): Ditto.
28004         (@vlmul_extx8<mode>): Ditto.
28005         (@vlmul_extx16<mode>): Ditto.
28006         (@vlmul_extx32<mode>): Ditto.
28007         (@vlmul_extx64<mode>): Ditto.
28008         (*vlmul_extx2<mode>): Ditto.
28009         (*vlmul_extx4<mode>): Ditto.
28010         (*vlmul_extx8<mode>): Ditto.
28011         (*vlmul_extx16<mode>): Ditto.
28012         (*vlmul_extx32<mode>): Ditto.
28013         (*vlmul_extx64<mode>): Ditto.
28014         * config/riscv/genrvv-type-indexer.cc: New file.
28016 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28018         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
28019         (slide1_sew64_helper): New function.
28020         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
28021         (get_unknown_min_value): Ditto.
28022         (force_vector_length_operand): Ditto.
28023         (gen_no_side_effects_vsetvl_rtx): Ditto.
28024         (get_vl_x2_rtx): Ditto.
28025         (slide1_sew64_helper): Ditto.
28026         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
28027         (class vrgather): Ditto.
28028         (class vrgatherei16): Ditto.
28029         (class vcompress): Ditto.
28030         (BASE): Ditto.
28031         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28032         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
28033         (vslidedown): Ditto.
28034         (vslide1up): Ditto.
28035         (vslide1down): Ditto.
28036         (vfslide1up): Ditto.
28037         (vfslide1down): Ditto.
28038         (vrgather): Ditto.
28039         (vrgatherei16): Ditto.
28040         (vcompress): Ditto.
28041         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
28042         (vint8mf8_t): Ditto.
28043         (vint8mf4_t): Ditto.
28044         (vint8mf2_t): Ditto.
28045         (vint8m1_t): Ditto.
28046         (vint8m2_t): Ditto.
28047         (vint8m4_t): Ditto.
28048         (vint16mf4_t): Ditto.
28049         (vint16mf2_t): Ditto.
28050         (vint16m1_t): Ditto.
28051         (vint16m2_t): Ditto.
28052         (vint16m4_t): Ditto.
28053         (vint16m8_t): Ditto.
28054         (vint32mf2_t): Ditto.
28055         (vint32m1_t): Ditto.
28056         (vint32m2_t): Ditto.
28057         (vint32m4_t): Ditto.
28058         (vint32m8_t): Ditto.
28059         (vint64m1_t): Ditto.
28060         (vint64m2_t): Ditto.
28061         (vint64m4_t): Ditto.
28062         (vint64m8_t): Ditto.
28063         (vuint8mf8_t): Ditto.
28064         (vuint8mf4_t): Ditto.
28065         (vuint8mf2_t): Ditto.
28066         (vuint8m1_t): Ditto.
28067         (vuint8m2_t): Ditto.
28068         (vuint8m4_t): Ditto.
28069         (vuint16mf4_t): Ditto.
28070         (vuint16mf2_t): Ditto.
28071         (vuint16m1_t): Ditto.
28072         (vuint16m2_t): Ditto.
28073         (vuint16m4_t): Ditto.
28074         (vuint16m8_t): Ditto.
28075         (vuint32mf2_t): Ditto.
28076         (vuint32m1_t): Ditto.
28077         (vuint32m2_t): Ditto.
28078         (vuint32m4_t): Ditto.
28079         (vuint32m8_t): Ditto.
28080         (vuint64m1_t): Ditto.
28081         (vuint64m2_t): Ditto.
28082         (vuint64m4_t): Ditto.
28083         (vuint64m8_t): Ditto.
28084         (vfloat32mf2_t): Ditto.
28085         (vfloat32m1_t): Ditto.
28086         (vfloat32m2_t): Ditto.
28087         (vfloat32m4_t): Ditto.
28088         (vfloat32m8_t): Ditto.
28089         (vfloat64m1_t): Ditto.
28090         (vfloat64m2_t): Ditto.
28091         (vfloat64m4_t): Ditto.
28092         (vfloat64m8_t): Ditto.
28093         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
28094         * config/riscv/riscv.md: Adjust RVV instruction types.
28095         * config/riscv/vector-iterators.md (down): New iterator.
28096         (=vd,vr): New attribute.
28097         (UNSPEC_VSLIDE1UP): New unspec.
28098         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
28099         (*pred_slide<ud><mode>): Ditto.
28100         (*pred_slide<ud><mode>_extended): Ditto.
28101         (@pred_gather<mode>): Ditto.
28102         (@pred_gather<mode>_scalar): Ditto.
28103         (@pred_gatherei16<mode>): Ditto.
28104         (@pred_compress<mode>): Ditto.
28106 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28108         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
28110 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28112         * config/riscv/constraints.md (Wb1): New constraint.
28113         * config/riscv/predicates.md
28114         (vector_least_significant_set_mask_operand): New predicate.
28115         (vector_broadcast_mask_operand): Ditto.
28116         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
28117         (gen_scalar_move_mask): New function.
28118         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
28119         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
28120         (class vmv_s): Ditto.
28121         (BASE): Ditto.
28122         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28123         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
28124         (vmv_s): Ditto.
28125         (vfmv_f): Ditto.
28126         (vfmv_s): Ditto.
28127         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
28128         (SHAPE): Ditto.
28129         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
28130         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
28131         (function_expander::use_exact_insn): New function.
28132         (function_expander::use_contiguous_load_insn): New function.
28133         (function_expander::use_contiguous_store_insn): New function.
28134         (function_expander::use_ternop_insn): New function.
28135         (function_expander::use_widen_ternop_insn): New function.
28136         (function_expander::use_scalar_move_insn): New function.
28137         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
28138         * config/riscv/riscv-vector-builtins.h
28139         (function_expander::add_scalar_move_mask_operand): New class.
28140         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
28141         (scalar_move_insn_p): Ditto.
28142         (has_vsetvl_killed_avl_p): Ditto.
28143         (anticipatable_occurrence_p): Ditto.
28144         (insert_vsetvl): Ditto.
28145         (get_vl_vtype_info): Ditto.
28146         (calculate_sew): Ditto.
28147         (calculate_vlmul): Ditto.
28148         (incompatible_avl_p): Ditto.
28149         (different_sew_p): Ditto.
28150         (different_lmul_p): Ditto.
28151         (different_ratio_p): Ditto.
28152         (different_tail_policy_p): Ditto.
28153         (different_mask_policy_p): Ditto.
28154         (possible_zero_avl_p): Ditto.
28155         (first_ratio_invalid_for_second_sew_p): Ditto.
28156         (first_ratio_invalid_for_second_lmul_p): Ditto.
28157         (second_ratio_invalid_for_first_sew_p): Ditto.
28158         (second_ratio_invalid_for_first_lmul_p): Ditto.
28159         (second_sew_less_than_first_sew_p): Ditto.
28160         (first_sew_less_than_second_sew_p): Ditto.
28161         (compare_lmul): Ditto.
28162         (second_lmul_less_than_first_lmul_p): Ditto.
28163         (first_lmul_less_than_second_lmul_p): Ditto.
28164         (first_ratio_less_than_second_ratio_p): Ditto.
28165         (second_ratio_less_than_first_ratio_p): Ditto.
28166         (DEF_INCOMPATIBLE_COND): Ditto.
28167         (greatest_sew): Ditto.
28168         (first_sew): Ditto.
28169         (second_sew): Ditto.
28170         (first_vlmul): Ditto.
28171         (second_vlmul): Ditto.
28172         (first_ratio): Ditto.
28173         (second_ratio): Ditto.
28174         (vlmul_for_first_sew_second_ratio): Ditto.
28175         (ratio_for_second_sew_first_vlmul): Ditto.
28176         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
28177         (always_unavailable): Ditto.
28178         (avl_unavailable_p): Ditto.
28179         (sew_unavailable_p): Ditto.
28180         (lmul_unavailable_p): Ditto.
28181         (ge_sew_unavailable_p): Ditto.
28182         (ge_sew_lmul_unavailable_p): Ditto.
28183         (ge_sew_ratio_unavailable_p): Ditto.
28184         (DEF_UNAVAILABLE_COND): Ditto.
28185         (same_sew_lmul_demand_p): Ditto.
28186         (propagate_avl_across_demands_p): Ditto.
28187         (reg_available_p): Ditto.
28188         (avl_info::has_non_zero_avl): Ditto.
28189         (vl_vtype_info::has_non_zero_avl): Ditto.
28190         (vector_insn_info::operator>=): Refactor.
28191         (vector_insn_info::parse_insn): Adjust for scalar move.
28192         (vector_insn_info::demand_vl_vtype): Remove.
28193         (vector_insn_info::compatible_p): New function.
28194         (vector_insn_info::compatible_avl_p): Ditto.
28195         (vector_insn_info::compatible_vtype_p): Ditto.
28196         (vector_insn_info::available_p): Ditto.
28197         (vector_insn_info::merge): Ditto.
28198         (vector_insn_info::fuse_avl): Ditto.
28199         (vector_insn_info::fuse_sew_lmul): Ditto.
28200         (vector_insn_info::fuse_tail_policy): Ditto.
28201         (vector_insn_info::fuse_mask_policy): Ditto.
28202         (vector_insn_info::dump): Ditto.
28203         (vector_infos_manager::release): Ditto.
28204         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
28205         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
28206         (pass_vsetvl::hard_empty_block_p): Ditto.
28207         (pass_vsetvl::backward_demand_fusion): Ditto.
28208         (pass_vsetvl::forward_demand_fusion): Ditto.
28209         (pass_vsetvl::refine_vsetvls): Ditto.
28210         (pass_vsetvl::cleanup_vsetvls): Ditto.
28211         (pass_vsetvl::commit_vsetvls): Ditto.
28212         (pass_vsetvl::propagate_avl): Ditto.
28213         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
28214         (struct demands_pair): Ditto.
28215         (struct demands_cond): Ditto.
28216         (struct demands_fuse_rule): Ditto.
28217         * config/riscv/vector-iterators.md: New iterator.
28218         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
28219         (*pred_broadcast<mode>): Ditto.
28220         (*pred_broadcast<mode>_extended_scalar): Ditto.
28221         (@pred_extract_first<mode>): Ditto.
28222         (*pred_extract_first<mode>): Ditto.
28223         (@pred_extract_first_trunc<mode>): Ditto.
28224         * config/riscv/riscv-vsetvl.def: New file.
28226 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
28228         * config/riscv/bitmanip.md: allow 0 constant in max/min
28229         pattern.
28231 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
28233         * config/riscv/bitmanip.md: Fix wrong index in the check.
28235 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
28237         PR middle-end/109006
28238         * vec.cc (test_auto_alias): Adjust comment for removal of
28239         m_vecdata.
28240         * read-rtl-function.cc (function_reader::parse_block): Likewise.
28241         * gdbhooks.py: Likewise.
28243 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
28245         PR testsuite/108973
28246         * selftest-diagnostic.cc
28247         (test_diagnostic_context::test_diagnostic_context): Set
28248         caret_max_width to 80.
28250 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
28252         * gimple-ssa-warn-access.cc
28253         (pass_waccess::check_dangling_stores): Skip non-stores.
28255 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
28257         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
28258         after vmsr and vmrs, and lower the case of P0.
28260 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
28262         PR middle-end/109006
28263         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
28265 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
28267         PR middle-end/109006
28268         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
28270 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
28272         PR c/108986
28273         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
28274         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
28275         suppressed on stmt.  For [static %E] warning, print access_nelts
28276         rather than access_size.  Fix up comment wording.
28278 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
28280         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
28281         arch14 instead of z16.
28283 2023-03-03  Anthony Green  <green@moxielogic.com>
28285         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
28287 2023-03-03  Anthony Green  <green@moxielogic.com>
28289         * config/moxie/constraints.md (A, B, W): Change
28290         define_constraint to define_memory_constraint.
28292 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
28294         * toplev.cc (process_options): Fix the spelling of
28295         "-fstack-clash-protection".
28297 2023-03-03  Richard Biener  <rguenther@suse.de>
28299         PR tree-optimization/109002
28300         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
28301         PHI-translate ANTIC_IN.
28303 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
28305         PR tree-optimization/108988
28306         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
28307         size_type_node before passing it as argument to fwrite.  Formatting
28308         fixes.
28310 2023-03-03  Richard Biener  <rguenther@suse.de>
28312         PR target/108738
28313         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
28314         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
28315         * config/i386/i386-features.h (scalar_chain::max_visits): New.
28316         (scalar_chain::build): Add bitmap parameter, return boolean.
28317         (scalar_chain::add_insn): Likewise.
28318         (scalar_chain::analyze_register_chain): Likewise.
28319         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
28320         Initialize max_visits.
28321         (scalar_chain::analyze_register_chain): When we exhaust
28322         max_visits, abort.  Also abort when running into any
28323         disallowed insn.
28324         (scalar_chain::add_insn): Propagate abort.
28325         (scalar_chain::build): Likewise.  When aborting amend
28326         the set of disallowed insn with the insns set.
28327         (convert_scalars_to_vector): Adjust.  Do not convert aborted
28328         chains.
28330 2023-03-03  Richard Biener  <rguenther@suse.de>
28332         PR debug/108772
28333         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
28334         generate a DIE for a function scope static.
28336 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
28338         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
28340 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
28342         PR target/108883
28343         * target.h (emit_support_tinfos_callback): New typedef.
28344         * targhooks.h (default_emit_support_tinfos): Declare.
28345         * targhooks.cc (default_emit_support_tinfos): New function.
28346         * target.def (emit_support_tinfos): New target hook.
28347         * doc/tm.texi.in (emit_support_tinfos): Document it.
28348         * doc/tm.texi: Regenerated.
28349         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
28350         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
28352 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
28354         * ira-costs.cc: Include print-rtl.h.
28355         (record_reg_classes, scan_one_insn): Add code to print debug info.
28356         (record_operand_costs): Find and use smaller cost for hard reg
28357         move.
28359 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
28360             Paul-Antoine Arras  <pa@codesourcery.com>
28362         * builtins.cc (mathfn_built_in_explicit): New.
28363         * config/gcn/gcn.cc: Include case-cfn-macros.h.
28364         (mathfn_built_in_explicit): Add prototype.
28365         (gcn_vectorize_builtin_vectorized_function): New.
28366         (gcn_libc_has_function): New.
28367         (TARGET_LIBC_HAS_FUNCTION): Define.
28368         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
28370 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
28372         PR tree-optimization/108979
28373         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
28374         operations on invariants.
28376 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
28378         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
28379         * config/s390/s390.cc (s390_option_override_internal): Make
28380         partial vector usage the default from z13 on.
28381         * config/s390/vector.md (len_load_v16qi): Add.
28382         (len_store_v16qi): Add.
28384 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
28386         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
28387         of constant 0 offset.
28389 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
28391         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
28392         instead of long.
28393         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
28395 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
28397         * config.gcc: add -with-{no-}msa build option.
28398         * config/mips/mips.h: Likewise.
28399         * doc/install.texi: Likewise.
28401 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
28403         PR tree-optimization/108603
28404         * explow.cc (convert_memory_address_addr_space_1): Only wrap
28405         the result of a recursive call in a CONST if no instructions
28406         were emitted.
28408 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
28410         PR tree-optimization/108430
28411         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
28412         of inverted condition.
28414 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
28416         PR c++/108934
28417         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
28418         comparison copy the bytes from ptr to a temporary buffer and clearing
28419         padding bits in there.
28421 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
28423         PR middle-end/108545
28424         * gimplify.cc (struct tree_operand_hash_no_se): New.
28425         (omp_index_mapping_groups_1, omp_index_mapping_groups,
28426         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
28427         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
28428         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
28429         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
28430         of tree_operand_hash.
28432 2023-03-01  LIU Hao  <lh_mouse@126.com>
28434         PR pch/14940
28435         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
28436         Remove the size limit `pch_VA_max_size`
28438 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
28440         PR middle-end/108546
28441         * omp-low.cc (lower_omp_target): Remove optional handling
28442         on the receiver side, i.e. inside target (data), for
28443         use_device_ptr.
28445 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
28447         PR debug/108967
28448         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
28449         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
28451 2023-03-01  Richard Biener  <rguenther@suse.de>
28453         PR tree-optimization/108970
28454         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
28455         Check we can copy the BBs.
28456         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
28457         check.
28458         (vect_do_peeling): Streamline error handling.
28460 2023-03-01  Richard Biener  <rguenther@suse.de>
28462         PR tree-optimization/108950
28463         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
28464         Check oprnd0 is defined in the loop.
28465         * tree-vect-loop.cc (vectorizable_reduction): Record all
28466         operands vector types, compute that of invariants and
28467         properly update their SLP nodes.
28469 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
28471         PR target/108240
28472         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
28473         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
28475 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
28477         PR middle-end/107411
28478         PR middle-end/107411
28479         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
28480         xasprintf.
28481         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
28482         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
28484 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
28486         PR sanitizer/108894
28487         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
28488         comparison rather than index > bound.
28489         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
28490         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
28491         * doc/invoke.texi (-fsanitize=bounds): Document that whether
28492         flexible array member-like arrays are instrumented or not depends
28493         on -fstrict-flex-arrays* options of strict_flex_array attributes.
28494         (-fsanitize=bounds-strict): Document that flexible array members
28495         are not instrumented.
28497 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
28499         PR target/108922
28500         Revert:
28501         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
28502         (fmod<mode>3): Ditto.
28503         (fpremxf4_i387): Ditto.
28504         (reminderxf3): Ditto.
28505         (reminder<mode>3): Ditto.
28506         (fprem1xf4_i387): Ditto.
28508 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
28510         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
28511         generating FFS with mismatched operand and result modes, by using
28512         an explicit SIGN_EXTEND/ZERO_EXTEND.
28513         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
28514         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
28516 2023-02-27  Patrick Palka  <ppalka@redhat.com>
28518         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
28519         * lra-int.h (lra_change_class): Likewise.
28520         * recog.h (which_op_alt): Likewise.
28521         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
28522         instead of static.
28524 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
28526         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
28527         New prototype.
28528         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
28529         New function.
28530         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
28531         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
28533 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
28535         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
28536         (xtensa_get_config_v3): New functions.
28538 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28540         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
28542 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
28544         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
28545         the macro to 0x1000000000.
28547 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
28549         PR modula2/108261
28550         * doc/gm2.texi (-fm2-pathname): New option documented.
28551         (-fm2-pathnameI): New option documented.
28552         (-fm2-prefix=): New option documented.
28553         (-fruntime-modules=): Update default module list.
28555 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
28557         PR target/108919
28558         * config/xtensa/xtensa-protos.h
28559         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
28560         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
28561         to xtensa_expand_call.
28562         (xtensa_expand_call): Emit the call and add a clobber expression
28563         for the static chain to it in case of windowed ABI.
28564         * config/xtensa/xtensa.md (call, call_value, sibcall)
28565         (sibcall_value): Call xtensa_expand_call and complete expansion
28566         right after that call.
28568 2023-02-24  Richard Biener  <rguenther@suse.de>
28570         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
28571         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
28572         changing alignment of vec<T, A, vl_embed> and simplifying
28573         address.
28574         (vec<T, A, vl_embed>::address): Compute as this + 1.
28575         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
28576         vector instead of the offset of the m_vecdata member.
28577         (auto_vec<T, N>::m_data): Turn storage into
28578         uninitialized unsigned char.
28579         (auto_vec<T, N>::auto_vec): Allow allocation of one
28580         stack member.  Initialize m_vec in a special way to
28581         avoid later stringop overflow diagnostics.
28582         * vec.cc (test_auto_alias): New.
28583         (vec_cc_tests): Call it.
28585 2023-02-24  Richard Biener  <rguenther@suse.de>
28587         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
28588         take a const reference to the object, use address to
28589         access data.
28590         (vec<T, A, vl_embed>::contains): Use address to access data.
28591         (vec<T, A, vl_embed>::operator[]): Use address instead of
28592         m_vecdata to access data.
28593         (vec<T, A, vl_embed>::iterate): Likewise.
28594         (vec<T, A, vl_embed>::copy): Likewise.
28595         (vec<T, A, vl_embed>::quick_push): Likewise.
28596         (vec<T, A, vl_embed>::pop): Likewise.
28597         (vec<T, A, vl_embed>::quick_insert): Likewise.
28598         (vec<T, A, vl_embed>::ordered_remove): Likewise.
28599         (vec<T, A, vl_embed>::unordered_remove): Likewise.
28600         (vec<T, A, vl_embed>::block_remove): Likewise.
28601         (vec<T, A, vl_heap>::address): Likewise.
28603 2023-02-24  Martin Liska  <mliska@suse.cz>
28605         PR sanitizer/108834
28606         * asan.cc (asan_add_global): Use proper TU name for normal
28607         global variables (and aux_base_name for the artificial one).
28609 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
28611         * config/i386/i386-builtin.def: Update description of BDESC
28612         and BDESC_FIRST in file comment to include mask2.
28614 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28616         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
28618 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
28620         PR middle-end/108854
28621         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
28622         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
28623         nodes and adjust their DECL_CONTEXT.
28625 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
28627         PR target/108881
28628         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
28629         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
28630         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
28631         __builtin_ia32_cvtne2ps2bf16_v8bf,
28632         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
28633         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
28634         __builtin_ia32_cvtneps2bf16_v8sf_mask,
28635         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
28636         __builtin_ia32_cvtneps2bf16_v4sf_mask,
28637         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
28638         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
28639         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
28640         __builtin_ia32_dpbf16ps_v4sf_mask,
28641         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
28642         OPTION_MASK_ISA_AVX512VL.
28644 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
28646         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
28647         Add non-compact 32-bit multilibs.
28649 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
28651         * config/mips/mips.md (*clo<mode>2): New pattern.
28653 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
28655         * config/mips/mips.h (machine_function): New variable
28656         use_hazard_barrier_return_p.
28657         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
28658         (mips_hb_return_internal): New insn pattern.
28659         * config/mips/mips.cc (mips_attribute_table): Add attribute
28660         use_hazard_barrier_return.
28661         (mips_use_hazard_barrier_return_p): New static function.
28662         (mips_function_attr_inlinable_p): Likewise.
28663         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
28664         Emit error for unsupported architecture choice.
28665         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
28666         Return false for use_hazard_barrier_return.
28667         (mips_expand_epilogue): Emit hazard barrier return.
28668         * doc/extend.texi: Document use_hazard_barrier_return.
28670 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
28672         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
28673         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
28674         for the gcc-internal headers.
28676 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
28678         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
28679         and $(POSTCOMPILE) instead of manual dependency listing.
28680         * config/xtensa/xtensa-dynconfig.c: Rename to ...
28681         * config/xtensa/xtensa-dynconfig.cc: ... this.
28683 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
28685         * doc/cfg.texi: Reorder index entries around @items.
28686         * doc/cpp.texi: Ditto.
28687         * doc/cppenv.texi: Ditto.
28688         * doc/cppopts.texi: Ditto.
28689         * doc/generic.texi: Ditto.
28690         * doc/install.texi: Ditto.
28691         * doc/extend.texi: Ditto.
28692         * doc/invoke.texi: Ditto.
28693         * doc/md.texi: Ditto.
28694         * doc/rtl.texi: Ditto.
28695         * doc/tm.texi.in: Ditto.
28696         * doc/trouble.texi: Ditto.
28697         * doc/tm.texi: Regenerate.
28699 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
28701         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
28702         the occurrence of general-purpose register used only once and for
28703         transferring intermediate value.
28705 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
28707         * config/xtensa/xtensa.cc (machine_function): Add new member
28708         'eliminated_callee_saved_bmp'.
28709         (xtensa_can_eliminate_callee_saved_reg_p): New function to
28710         determine whether the register can be eliminated or not.
28711         (xtensa_expand_prologue): Add invoking the above function and
28712         elimination the use of callee-saved register by using its stack
28713         slot through the stack pointer (or the frame pointer if needed)
28714         directly.
28715         (xtensa_expand_prologue): Modify to not emit register restoration
28716         insn from its stack slot if the register is already eliminated.
28718 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
28720         PR translation/108890
28721         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
28722         around fatal_error format strings.
28724 2023-02-23  Richard Biener  <rguenther@suse.de>
28726         * tree-ssa-structalias.cc (handle_lhs_call): Do not
28727         re-create rhsc, only truncate it.
28729 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
28731         PR middle-end/106258
28732         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
28733         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
28735 2023-02-23  Richard Biener  <rguenther@suse.de>
28737         * tree-if-conv.cc (tree_if_conversion): Properly manage
28738         memory of refs and the contained data references.
28740 2023-02-23  Richard Biener  <rguenther@suse.de>
28742         PR tree-optimization/108888
28743         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
28744         calls to predicate.
28745         (predicate_statements): Only predicate calls with PLF_2.
28747 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
28749         * config/xtensa/xtensa.md
28750         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
28751         Add missing "SI:" to PLUS RTXes.
28753 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
28755         PR target/108876
28756         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
28757         Emit (use (reg:SI A0_REG)) at the end in the sibling call
28758         (i.e. the same place as (return) in the normal call).
28760 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
28762         Revert:
28763         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
28765         PR target/108876
28766         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
28767         for A0_REG.
28768         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
28769         (sibcall_value, sibcall_value_internal): Add 'use' expression
28770         for A0_REG.
28772 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
28774         * doc/cppdiropts.texi: Reorder @opindex commands to precede
28775         @items they relate to.
28776         * doc/cppopts.texi: Ditto.
28777         * doc/cppwarnopts.texi: Ditto.
28778         * doc/invoke.texi: Ditto.
28779         * doc/lto.texi: Ditto.
28781 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
28783         * internal-fn.cc (expand_MASK_CALL): New.
28784         * internal-fn.def (MASK_CALL): New.
28785         * internal-fn.h (expand_MASK_CALL): New prototype.
28786         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
28787         for mask arguments also.
28788         * tree-if-conv.cc: Include cgraph.h.
28789         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
28790         (predicate_statements): Convert functions to IFN_MASK_CALL.
28791         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
28792         IFN_MASK_CALL as a SIMD function call.
28793         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
28794         IFN_MASK_CALL as an inbranch SIMD function call.
28795         Generate the mask vector arguments.
28797 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28799         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
28800         (class widen_reducop): Ditto.
28801         (class freducop): Ditto.
28802         (class widen_freducop): Ditto.
28803         (BASE): Ditto.
28804         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
28805         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
28806         (vredmaxu): Ditto.
28807         (vredmax): Ditto.
28808         (vredminu): Ditto.
28809         (vredmin): Ditto.
28810         (vredand): Ditto.
28811         (vredor): Ditto.
28812         (vredxor): Ditto.
28813         (vwredsum): Ditto.
28814         (vwredsumu): Ditto.
28815         (vfredusum): Ditto.
28816         (vfredosum): Ditto.
28817         (vfredmax): Ditto.
28818         (vfredmin): Ditto.
28819         (vfwredosum): Ditto.
28820         (vfwredusum): Ditto.
28821         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
28822         (SHAPE): Ditto.
28823         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
28824         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
28825         (DEF_RVV_WU_OPS): Ditto.
28826         (DEF_RVV_WF_OPS): Ditto.
28827         (vint8mf8_t): Ditto.
28828         (vint8mf4_t): Ditto.
28829         (vint8mf2_t): Ditto.
28830         (vint8m1_t): Ditto.
28831         (vint8m2_t): Ditto.
28832         (vint8m4_t): Ditto.
28833         (vint8m8_t): Ditto.
28834         (vint16mf4_t): Ditto.
28835         (vint16mf2_t): Ditto.
28836         (vint16m1_t): Ditto.
28837         (vint16m2_t): Ditto.
28838         (vint16m4_t): Ditto.
28839         (vint16m8_t): Ditto.
28840         (vint32mf2_t): Ditto.
28841         (vint32m1_t): Ditto.
28842         (vint32m2_t): Ditto.
28843         (vint32m4_t): Ditto.
28844         (vint32m8_t): Ditto.
28845         (vuint8mf8_t): Ditto.
28846         (vuint8mf4_t): Ditto.
28847         (vuint8mf2_t): Ditto.
28848         (vuint8m1_t): Ditto.
28849         (vuint8m2_t): Ditto.
28850         (vuint8m4_t): Ditto.
28851         (vuint8m8_t): Ditto.
28852         (vuint16mf4_t): Ditto.
28853         (vuint16mf2_t): Ditto.
28854         (vuint16m1_t): Ditto.
28855         (vuint16m2_t): Ditto.
28856         (vuint16m4_t): Ditto.
28857         (vuint16m8_t): Ditto.
28858         (vuint32mf2_t): Ditto.
28859         (vuint32m1_t): Ditto.
28860         (vuint32m2_t): Ditto.
28861         (vuint32m4_t): Ditto.
28862         (vuint32m8_t): Ditto.
28863         (vfloat32mf2_t): Ditto.
28864         (vfloat32m1_t): Ditto.
28865         (vfloat32m2_t): Ditto.
28866         (vfloat32m4_t): Ditto.
28867         (vfloat32m8_t): Ditto.
28868         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
28869         (DEF_RVV_WU_OPS): Ditto.
28870         (DEF_RVV_WF_OPS): Ditto.
28871         (required_extensions_p): Add reduction support.
28872         (rvv_arg_type_info::get_base_vector_type): Ditto.
28873         (rvv_arg_type_info::get_tree_type): Ditto.
28874         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
28875         * config/riscv/riscv.md: Ditto.
28876         * config/riscv/vector-iterators.md (minu): Ditto.
28877         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
28878         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
28879         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
28880         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
28881         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
28882         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
28883         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
28885 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28887         * config/riscv/iterators.md: New iterator.
28888         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
28889         (enum ternop_type): New enum.
28890         (class vmacc): New class.
28891         (class imac): Ditto.
28892         (class vnmsac): Ditto.
28893         (enum widen_ternop_type): New enum.
28894         (class vmadd): Ditto.
28895         (class vnmsub): Ditto.
28896         (class iwmac): Ditto.
28897         (class vwmacc): Ditto.
28898         (class vwmaccu): Ditto.
28899         (class vwmaccsu): Ditto.
28900         (class vwmaccus): Ditto.
28901         (class reverse_binop): Ditto.
28902         (class vfmacc): Ditto.
28903         (class vfnmsac): Ditto.
28904         (class vfmadd): Ditto.
28905         (class vfnmsub): Ditto.
28906         (class vfnmacc): Ditto.
28907         (class vfmsac): Ditto.
28908         (class vfnmadd): Ditto.
28909         (class vfmsub): Ditto.
28910         (class vfwmacc): Ditto.
28911         (class vfwnmacc): Ditto.
28912         (class vfwmsac): Ditto.
28913         (class vfwnmsac): Ditto.
28914         (class float_misc): Ditto.
28915         (class fcmp): Ditto.
28916         (class vfclass): Ditto.
28917         (class vfcvt_x): Ditto.
28918         (class vfcvt_rtz_x): Ditto.
28919         (class vfcvt_f): Ditto.
28920         (class vfwcvt_x): Ditto.
28921         (class vfwcvt_rtz_x): Ditto.
28922         (class vfwcvt_f): Ditto.
28923         (class vfncvt_x): Ditto.
28924         (class vfncvt_rtz_x): Ditto.
28925         (class vfncvt_f): Ditto.
28926         (class vfncvt_rod_f): Ditto.
28927         (BASE): Ditto.
28928         * config/riscv/riscv-vector-builtins-bases.h:
28929         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
28930         (vsext): Ditto.
28931         (vfadd): Ditto.
28932         (vfsub): Ditto.
28933         (vfrsub): Ditto.
28934         (vfwadd): Ditto.
28935         (vfwsub): Ditto.
28936         (vfmul): Ditto.
28937         (vfdiv): Ditto.
28938         (vfrdiv): Ditto.
28939         (vfwmul): Ditto.
28940         (vfmacc): Ditto.
28941         (vfnmsac): Ditto.
28942         (vfmadd): Ditto.
28943         (vfnmsub): Ditto.
28944         (vfnmacc): Ditto.
28945         (vfmsac): Ditto.
28946         (vfnmadd): Ditto.
28947         (vfmsub): Ditto.
28948         (vfwmacc): Ditto.
28949         (vfwnmacc): Ditto.
28950         (vfwmsac): Ditto.
28951         (vfwnmsac): Ditto.
28952         (vfsqrt): Ditto.
28953         (vfrsqrt7): Ditto.
28954         (vfrec7): Ditto.
28955         (vfmin): Ditto.
28956         (vfmax): Ditto.
28957         (vfsgnj): Ditto.
28958         (vfsgnjn): Ditto.
28959         (vfsgnjx): Ditto.
28960         (vfneg): Ditto.
28961         (vfabs): Ditto.
28962         (vmfeq): Ditto.
28963         (vmfne): Ditto.
28964         (vmflt): Ditto.
28965         (vmfle): Ditto.
28966         (vmfgt): Ditto.
28967         (vmfge): Ditto.
28968         (vfclass): Ditto.
28969         (vfmerge): Ditto.
28970         (vfmv_v): Ditto.
28971         (vfcvt_x): Ditto.
28972         (vfcvt_xu): Ditto.
28973         (vfcvt_rtz_x): Ditto.
28974         (vfcvt_rtz_xu): Ditto.
28975         (vfcvt_f): Ditto.
28976         (vfwcvt_x): Ditto.
28977         (vfwcvt_xu): Ditto.
28978         (vfwcvt_rtz_x): Ditto.
28979         (vfwcvt_rtz_xu): Ditto.
28980         (vfwcvt_f): Ditto.
28981         (vfncvt_x): Ditto.
28982         (vfncvt_xu): Ditto.
28983         (vfncvt_rtz_x): Ditto.
28984         (vfncvt_rtz_xu): Ditto.
28985         (vfncvt_f): Ditto.
28986         (vfncvt_rod_f): Ditto.
28987         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
28988         (struct move_def): Ditto.
28989         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
28990         (DEF_RVV_CONVERT_I_OPS): Ditto.
28991         (DEF_RVV_CONVERT_U_OPS): Ditto.
28992         (DEF_RVV_WCONVERT_I_OPS): Ditto.
28993         (DEF_RVV_WCONVERT_U_OPS): Ditto.
28994         (DEF_RVV_WCONVERT_F_OPS): Ditto.
28995         (vfloat64m1_t): Ditto.
28996         (vfloat64m2_t): Ditto.
28997         (vfloat64m4_t): Ditto.
28998         (vfloat64m8_t): Ditto.
28999         (vint32mf2_t): Ditto.
29000         (vint32m1_t): Ditto.
29001         (vint32m2_t): Ditto.
29002         (vint32m4_t): Ditto.
29003         (vint32m8_t): Ditto.
29004         (vint64m1_t): Ditto.
29005         (vint64m2_t): Ditto.
29006         (vint64m4_t): Ditto.
29007         (vint64m8_t): Ditto.
29008         (vuint32mf2_t): Ditto.
29009         (vuint32m1_t): Ditto.
29010         (vuint32m2_t): Ditto.
29011         (vuint32m4_t): Ditto.
29012         (vuint32m8_t): Ditto.
29013         (vuint64m1_t): Ditto.
29014         (vuint64m2_t): Ditto.
29015         (vuint64m4_t): Ditto.
29016         (vuint64m8_t): Ditto.
29017         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
29018         (DEF_RVV_CONVERT_U_OPS): Ditto.
29019         (DEF_RVV_WCONVERT_I_OPS): Ditto.
29020         (DEF_RVV_WCONVERT_U_OPS): Ditto.
29021         (DEF_RVV_WCONVERT_F_OPS): Ditto.
29022         (DEF_RVV_F_OPS): Ditto.
29023         (DEF_RVV_WEXTF_OPS): Ditto.
29024         (required_extensions_p): Adjust for floating-point support.
29025         (check_required_extensions): Ditto.
29026         (unsigned_base_type_p): Ditto.
29027         (get_mode_for_bitsize): Ditto.
29028         (rvv_arg_type_info::get_base_vector_type): Ditto.
29029         (rvv_arg_type_info::get_tree_type): Ditto.
29030         * config/riscv/riscv-vector-builtins.def (v_f): New define.
29031         (f): New define.
29032         (f_v): New define.
29033         (xu_v): New define.
29034         (f_w): New define.
29035         (xu_w): New define.
29036         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
29037         (function_expander::arg_mode): New function.
29038         * config/riscv/vector-iterators.md (sof): New iterator.
29039         (vfrecp): Ditto.
29040         (copysign): Ditto.
29041         (n): Ditto.
29042         (msac): Ditto.
29043         (msub): Ditto.
29044         (fixuns_trunc): Ditto.
29045         (floatuns): Ditto.
29046         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
29047         (@pred_<optab><mode>): Ditto.
29048         (@pred_<optab><mode>_scalar): Ditto.
29049         (@pred_<optab><mode>_reverse_scalar): Ditto.
29050         (@pred_<copysign><mode>): Ditto.
29051         (@pred_<copysign><mode>_scalar): Ditto.
29052         (@pred_mul_<optab><mode>): Ditto.
29053         (pred_mul_<optab><mode>_undef_merge): Ditto.
29054         (*pred_<madd_nmsub><mode>): Ditto.
29055         (*pred_<macc_nmsac><mode>): Ditto.
29056         (*pred_mul_<optab><mode>): Ditto.
29057         (@pred_mul_<optab><mode>_scalar): Ditto.
29058         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
29059         (*pred_<madd_nmsub><mode>_scalar): Ditto.
29060         (*pred_<macc_nmsac><mode>_scalar): Ditto.
29061         (*pred_mul_<optab><mode>_scalar): Ditto.
29062         (@pred_neg_mul_<optab><mode>): Ditto.
29063         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
29064         (*pred_<nmadd_msub><mode>): Ditto.
29065         (*pred_<nmacc_msac><mode>): Ditto.
29066         (*pred_neg_mul_<optab><mode>): Ditto.
29067         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
29068         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
29069         (*pred_<nmadd_msub><mode>_scalar): Ditto.
29070         (*pred_<nmacc_msac><mode>_scalar): Ditto.
29071         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
29072         (@pred_<misc_op><mode>): Ditto.
29073         (@pred_class<mode>): Ditto.
29074         (@pred_dual_widen_<optab><mode>): Ditto.
29075         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
29076         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
29077         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
29078         (@pred_widen_mul_<optab><mode>): Ditto.
29079         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
29080         (@pred_widen_neg_mul_<optab><mode>): Ditto.
29081         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
29082         (@pred_cmp<mode>): Ditto.
29083         (*pred_cmp<mode>): Ditto.
29084         (*pred_cmp<mode>_narrow): Ditto.
29085         (@pred_cmp<mode>_scalar): Ditto.
29086         (*pred_cmp<mode>_scalar): Ditto.
29087         (*pred_cmp<mode>_scalar_narrow): Ditto.
29088         (@pred_eqne<mode>_scalar): Ditto.
29089         (*pred_eqne<mode>_scalar): Ditto.
29090         (*pred_eqne<mode>_scalar_narrow): Ditto.
29091         (@pred_merge<mode>_scalar): Ditto.
29092         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
29093         (@pred_<fix_cvt><mode>): Ditto.
29094         (@pred_<float_cvt><mode>): Ditto.
29095         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
29096         (@pred_widen_<fix_cvt><mode>): Ditto.
29097         (@pred_widen_<float_cvt><mode>): Ditto.
29098         (@pred_extend<mode>): Ditto.
29099         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
29100         (@pred_narrow_<fix_cvt><mode>): Ditto.
29101         (@pred_narrow_<float_cvt><mode>): Ditto.
29102         (@pred_trunc<mode>): Ditto.
29103         (@pred_rod_trunc<mode>): Ditto.
29105 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
29107         PR middle-end/106258
29108         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
29109         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
29110         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
29111         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
29113 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
29115         * common.opt (-Wcomplain-wrong-lang): New.
29116         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
29117         * opts-common.cc (prune_options): Handle it.
29118         * opts-global.cc (complain_wrong_lang): Use it.
29120 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
29122         PR analyzer/108830
29123         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
29125 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
29127         PR target/108876
29128         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
29129         for A0_REG.
29130         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
29131         (sibcall_value, sibcall_value_internal): Add 'use' expression
29132         for A0_REG.
29134 2023-02-21  Richard Biener  <rguenther@suse.de>
29136         PR tree-optimization/108691
29137         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
29138         assert about calls_setjmp not becoming true when it was false.
29140 2023-02-21  Richard Biener  <rguenther@suse.de>
29142         PR tree-optimization/108793
29143         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
29144         Use convert operands to niter_type when computing num.
29146 2023-02-21  Richard Biener  <rguenther@suse.de>
29148         Revert:
29149         2023-02-13  Richard Biener  <rguenther@suse.de>
29151         PR tree-optimization/108691
29152         * tree-cfg.cc (notice_special_calls): When the CFG is built
29153         honor gimple_call_ctrl_altering_p.
29154         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
29155         temporarily if the call is not control-altering.
29156         * calls.cc (emit_call_1): Do not add REG_SETJMP if
29157         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
29159 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
29161         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
29162         true if register A0 (return address register) when -Og is specified.
29164 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
29166         * config/i386/predicates.md
29167         (general_x64constmem_operand): New predicate.
29168         * config/i386/i386.md (*cmpqi_ext<mode>_1):
29169         Use nonimm_x64constmem_operand.
29170         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
29171         (*addqi_ext<mode>_1): Ditto.
29172         (*testqi_ext<mode>_1): Ditto.
29173         (*andqi_ext<mode>_1): Ditto.
29174         (*andqi_ext<mode>_1_cc): Ditto.
29175         (*<any_or:code>qi_ext<mode>_1): Ditto.
29176         (*xorqi_ext<mode>_1_cc): Ditto.
29178 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
29180         PR target/108862
29181         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
29182         gen_umadddi4_highpart{,_le}.
29184 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
29186         * config/riscv/riscv.md (prefetch): Use r instead of p for the
29187         address operand.
29188         (riscv_prefetchi_<mode>): Ditto.
29190 2023-02-20  Richard Biener  <rguenther@suse.de>
29192         PR tree-optimization/108816
29193         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
29194         versioning condition split prerequesite, assert required
29195         invariant.
29197 2023-02-20  Richard Biener  <rguenther@suse.de>
29199         PR tree-optimization/108825
29200         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
29201         loop-local verfication only verify there's no pending SSA
29202         update.
29204 2023-02-20  Richard Biener  <rguenther@suse.de>
29206         PR tree-optimization/108819
29207         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
29208         we have an SSA name as iv_2 as expected.
29210 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
29212         PR tree-optimization/108819
29213         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
29215 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
29217         PR target/108832
29218         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
29219         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
29220         function.
29221         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
29222         with ix86_replace_reg_with_reg.
29224 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
29226         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
29228 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
29230         * config.gcc (triplet_abi): Set its value based on $with_abi,
29231         instead of $target.
29232         (la_canonical_triplet): Set it after $triplet_abi is set
29233         correctly.
29234         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
29235         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
29236         "f64" suffix).
29238 2023-02-18  Andrew Pinski  <apinski@marvell.com>
29240         * match.pd: Remove #if GIMPLE around the
29241         "1 - a" pattern
29243 2023-02-18  Andrew Pinski  <apinski@marvell.com>
29245         * value-query.h (get_range_query): Return the global ranges
29246         for a nullptr func.
29248 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
29250         * doc/invoke.texi (@item -Wall): Fix typo in
29251         -Wuse-after-free.
29253 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
29255         PR target/108831
29256         * config/i386/predicates.md
29257         (nonimm_x64constmem_operand): New predicate.
29258         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
29259         (*subqi_ext<mode>_0): Ditto.
29260         (*andqi_ext<mode>_0): Ditto.
29261         (*<any_or:code>qi_ext<mode>_0): Ditto.
29263 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
29265         PR target/108805
29266         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
29267         int_outermode instead of GET_MODE (tem) to prevent
29268         VOIDmode from entering simplify_gen_subreg.
29270 2023-02-17  Richard Biener  <rguenther@suse.de>
29272         PR tree-optimization/108821
29273         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
29274         move volatile accesses.
29276 2023-02-17  Richard Biener  <rguenther@suse.de>
29278         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
29279         called on virtual operands.
29280         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
29281         ssa_undefined_value_p calls.
29282         (vn_phi_insert): Likewise.
29283         (set_ssa_val_to): Likewise.
29284         (visit_phi): Avoid extra work with equivalences for
29285         virtual operand PHIs.
29287 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29289         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
29290         class.
29291         (class mask_nlogic): Ditto.
29292         (class mask_notlogic): Ditto.
29293         (class vmmv): Ditto.
29294         (class vmclr): Ditto.
29295         (class vmset): Ditto.
29296         (class vmnot): Ditto.
29297         (class vcpop): Ditto.
29298         (class vfirst): Ditto.
29299         (class mask_misc): Ditto.
29300         (class viota): Ditto.
29301         (class vid): Ditto.
29302         (BASE): Ditto.
29303         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29304         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
29305         (vmnand): Ditto.
29306         (vmandn): Ditto.
29307         (vmxor): Ditto.
29308         (vmor): Ditto.
29309         (vmnor): Ditto.
29310         (vmorn): Ditto.
29311         (vmxnor): Ditto.
29312         (vmmv): Ditto.
29313         (vmclr): Ditto.
29314         (vmset): Ditto.
29315         (vmnot): Ditto.
29316         (vcpop): Ditto.
29317         (vfirst): Ditto.
29318         (vmsbf): Ditto.
29319         (vmsif): Ditto.
29320         (vmsof): Ditto.
29321         (viota): Ditto.
29322         (vid): Ditto.
29323         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
29324         (struct mask_alu_def): Ditto.
29325         (SHAPE): Ditto.
29326         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
29327         * config/riscv/riscv-vector-builtins.cc: Ditto.
29328         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
29329         for dest it scalar RVV intrinsics.
29330         * config/riscv/vector-iterators.md (sof): New iterator.
29331         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
29332         (@pred_<optab>not<mode>): New pattern.
29333         (@pred_popcount<VB:mode><P:mode>): New pattern.
29334         (@pred_ffs<VB:mode><P:mode>): New pattern.
29335         (@pred_<misc_op><mode>): New pattern.
29336         (@pred_iota<mode>): New pattern.
29337         (@pred_series<mode>): New pattern.
29339 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29341         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
29342         (vsbc): Ditto.
29343         (vmerge): Ditto.
29344         (vmv_v): Ditto.
29345         * config/riscv/riscv-vector-builtins.cc: Ditto.
29347 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29348             kito-cheng  <kito.cheng@sifive.com>
29350         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
29351         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
29352         (sew64_scalar_helper): New function.
29353         * config/riscv/vector.md: Normalization.
29355 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29357         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
29358         (vsm): Ditto.
29359         (vsse): Ditto.
29360         (vsoxei64): Ditto.
29361         (vsub): Ditto.
29362         (vand): Ditto.
29363         (vor): Ditto.
29364         (vxor): Ditto.
29365         (vsll): Ditto.
29366         (vsra): Ditto.
29367         (vsrl): Ditto.
29368         (vmin): Ditto.
29369         (vmax): Ditto.
29370         (vminu): Ditto.
29371         (vmaxu): Ditto.
29372         (vmul): Ditto.
29373         (vmulh): Ditto.
29374         (vmulhu): Ditto.
29375         (vmulhsu): Ditto.
29376         (vdiv): Ditto.
29377         (vrem): Ditto.
29378         (vdivu): Ditto.
29379         (vremu): Ditto.
29380         (vnot): Ditto.
29381         (vsext): Ditto.
29382         (vzext): Ditto.
29383         (vwadd): Ditto.
29384         (vwsub): Ditto.
29385         (vwmul): Ditto.
29386         (vwmulu): Ditto.
29387         (vwmulsu): Ditto.
29388         (vwaddu): Ditto.
29389         (vwsubu): Ditto.
29390         (vsbc): Ditto.
29391         (vmsbc): Ditto.
29392         (vnsra): Ditto.
29393         (vmerge): Ditto.
29394         (vmv_v): Ditto.
29395         (vmsne): Ditto.
29396         (vmslt): Ditto.
29397         (vmsgt): Ditto.
29398         (vmsle): Ditto.
29399         (vmsge): Ditto.
29400         (vmsltu): Ditto.
29401         (vmsgtu): Ditto.
29402         (vmsleu): Ditto.
29403         (vmsgeu): Ditto.
29404         (vnmsac): Ditto.
29405         (vmadd): Ditto.
29406         (vnmsub): Ditto.
29407         (vwmacc): Ditto.
29408         (vsadd): Ditto.
29409         (vssub): Ditto.
29410         (vssubu): Ditto.
29411         (vaadd): Ditto.
29412         (vasub): Ditto.
29413         (vasubu): Ditto.
29414         (vsmul): Ditto.
29415         (vssra): Ditto.
29416         (vssrl): Ditto.
29417         (vnclip): Ditto.
29419 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29421         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
29422         (@pred_<optab><mode>_scalar): Ditto.
29423         (*pred_<optab><mode>_scalar): Ditto.
29424         (*pred_<optab><mode>_extended_scalar): Ditto.
29426 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29428         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
29429         (init_builtins): Ditto.
29430         (mangle_builtin_type): Ditto.
29431         (verify_type_context): Ditto.
29432         (handle_pragma_vector):  Ditto.
29433         (builtin_decl): Ditto.
29434         (expand_builtin): Ditto.
29435         (const_vec_all_same_in_range_p): Ditto.
29436         (legitimize_move): Ditto.
29437         (emit_vlmax_op): Ditto.
29438         (emit_nonvlmax_op): Ditto.
29439         (get_vlmul): Ditto.
29440         (get_ratio): Ditto.
29441         (get_ta): Ditto.
29442         (get_ma): Ditto.
29443         (get_avl_type): Ditto.
29444         (calculate_ratio): Ditto.
29445         (enum vlmul_type): Ditto.
29446         (simm5_p): Ditto.
29447         (neg_simm5_p): Ditto.
29448         (has_vi_variant_p): Ditto.
29450 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29452         * config/riscv/riscv-protos.h (simm32_p): Remove.
29453         * config/riscv/riscv-v.cc (simm32_p): Ditto.
29454         * config/riscv/vector.md: Use immediate_operand
29455         instead of riscv_vector::simm32_p.
29457 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
29459         * doc/invoke.texi (Optimize Options): Reword the explanation
29460         getting minimal, maximal and default values of a parameter.
29462 2023-02-16  Patrick Palka  <ppalka@redhat.com>
29464         * addresses.h: Mechanically drop 'static' from 'static inline'
29465         functions via s/^static inline/inline/g.
29466         * asan.h: Likewise.
29467         * attribs.h: Likewise.
29468         * basic-block.h: Likewise.
29469         * bitmap.h: Likewise.
29470         * cfghooks.h: Likewise.
29471         * cfgloop.h: Likewise.
29472         * cgraph.h: Likewise.
29473         * cselib.h: Likewise.
29474         * data-streamer.h: Likewise.
29475         * debug.h: Likewise.
29476         * df.h: Likewise.
29477         * diagnostic.h: Likewise.
29478         * dominance.h: Likewise.
29479         * dumpfile.h: Likewise.
29480         * emit-rtl.h: Likewise.
29481         * except.h: Likewise.
29482         * expmed.h: Likewise.
29483         * expr.h: Likewise.
29484         * fixed-value.h: Likewise.
29485         * gengtype.h: Likewise.
29486         * gimple-expr.h: Likewise.
29487         * gimple-iterator.h: Likewise.
29488         * gimple-predict.h: Likewise.
29489         * gimple-range-fold.h: Likewise.
29490         * gimple-ssa.h: Likewise.
29491         * gimple.h: Likewise.
29492         * graphite.h: Likewise.
29493         * hard-reg-set.h: Likewise.
29494         * hash-map.h: Likewise.
29495         * hash-set.h: Likewise.
29496         * hash-table.h: Likewise.
29497         * hwint.h: Likewise.
29498         * input.h: Likewise.
29499         * insn-addr.h: Likewise.
29500         * internal-fn.h: Likewise.
29501         * ipa-fnsummary.h: Likewise.
29502         * ipa-icf-gimple.h: Likewise.
29503         * ipa-inline.h: Likewise.
29504         * ipa-modref.h: Likewise.
29505         * ipa-prop.h: Likewise.
29506         * ira-int.h: Likewise.
29507         * ira.h: Likewise.
29508         * lra-int.h: Likewise.
29509         * lra.h: Likewise.
29510         * lto-streamer.h: Likewise.
29511         * memmodel.h: Likewise.
29512         * omp-general.h: Likewise.
29513         * optabs-query.h: Likewise.
29514         * optabs.h: Likewise.
29515         * plugin.h: Likewise.
29516         * pretty-print.h: Likewise.
29517         * range.h: Likewise.
29518         * read-md.h: Likewise.
29519         * recog.h: Likewise.
29520         * regs.h: Likewise.
29521         * rtl-iter.h: Likewise.
29522         * rtl.h: Likewise.
29523         * sbitmap.h: Likewise.
29524         * sched-int.h: Likewise.
29525         * sel-sched-ir.h: Likewise.
29526         * sese.h: Likewise.
29527         * sparseset.h: Likewise.
29528         * ssa-iterators.h: Likewise.
29529         * system.h: Likewise.
29530         * target-globals.h: Likewise.
29531         * target.h: Likewise.
29532         * timevar.h: Likewise.
29533         * tree-chrec.h: Likewise.
29534         * tree-data-ref.h: Likewise.
29535         * tree-iterator.h: Likewise.
29536         * tree-outof-ssa.h: Likewise.
29537         * tree-phinodes.h: Likewise.
29538         * tree-scalar-evolution.h: Likewise.
29539         * tree-sra.h: Likewise.
29540         * tree-ssa-alias.h: Likewise.
29541         * tree-ssa-live.h: Likewise.
29542         * tree-ssa-loop-manip.h: Likewise.
29543         * tree-ssa-loop.h: Likewise.
29544         * tree-ssa-operands.h: Likewise.
29545         * tree-ssa-propagate.h: Likewise.
29546         * tree-ssa-sccvn.h: Likewise.
29547         * tree-ssa.h: Likewise.
29548         * tree-ssanames.h: Likewise.
29549         * tree-streamer.h: Likewise.
29550         * tree-switch-conversion.h: Likewise.
29551         * tree-vectorizer.h: Likewise.
29552         * tree.h: Likewise.
29553         * wide-int.h: Likewise.
29555 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
29557         PR tree-optimization/108657
29558         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
29559         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
29560         is a call to internal or builtin function.
29562 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
29564         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
29565         using-declaration to unhide functions.
29567 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
29569         PR tree-optimization/108783
29570         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
29571         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
29572         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
29573         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
29575 2023-02-16  Richard Biener  <rguenther@suse.de>
29577         PR tree-optimization/108791
29578         * tree-ssa-forwprop.cc (optimize_vector_load): Build
29579         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
29580         type.
29582 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
29584         PR target/90458
29585         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
29586         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
29587         (ix86_expand_prologue): Likewise.
29589 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
29591         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
29593 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
29595         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
29596         int248_register_operand predicate in zero_extract sub-RTX.
29597         (*cmpqi_ext<mode>_2): Ditto.
29598         (*cmpqi_ext<mode>_3): Ditto.
29599         (*cmpqi_ext<mode>_4): Ditto.
29600         (*extzvqi_mem_rex64): Ditto.
29601         (*extzvqi): Ditto.
29602         (*insvqi_1_mem_rex64): Ditto.
29603         (@insv<mode>_1): Ditto.
29604         (*insvqi_1): Ditto.
29605         (*insvqi_2): Ditto.
29606         (*insvqi_3): Ditto.
29607         (*extendqi<SWI24:mode>_ext_1): Ditto.
29608         (*addqi_ext<mode>_1): Ditto.
29609         (*addqi_ext<mode>_2): Ditto.
29610         (*subqi_ext<mode>_2): Ditto.
29611         (*testqi_ext<mode>_1): Ditto.
29612         (*testqi_ext<mode>_2): Ditto.
29613         (*andqi_ext<mode>_1): Ditto.
29614         (*andqi_ext<mode>_1_cc): Ditto.
29615         (*andqi_ext<mode>_2): Ditto.
29616         (*<any_or:code>qi_ext<mode>_1): Ditto.
29617         (*<any_or:code>qi_ext<mode>_2): Ditto.
29618         (*xorqi_ext<mode>_1_cc): Ditto.
29619         (*negqi_ext<mode>_2): Ditto.
29620         (*ashlqi_ext<mode>_2): Ditto.
29621         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
29623 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
29625         * config/i386/predicates.md (int248_register_operand):
29626         Rename from extr_register_operand.
29627         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
29628         (*extzx<mode>): Ditto.
29629         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
29630         (*ashl<mode>3_mask): Ditto.
29631         (*<any_shiftrt:insn><mode>3_mask): Ditto.
29632         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
29633         (*<any_rotate:insn><mode>3_mask): Ditto.
29634         (*<btsc><mode>_mask): Ditto.
29635         (*btr<mode>_mask): Ditto.
29636         (*jcc_bt<mode>_mask_1): Ditto.
29638 2023-02-15  Richard Biener  <rguenther@suse.de>
29640         PR middle-end/26854
29641         * df-core.cc (df_worklist_propagate_forward): Put later
29642         blocks on worklist and only earlier blocks on pending.
29643         (df_worklist_propagate_backward): Likewise.
29644         (df_worklist_dataflow_doublequeue): Change the iteration
29645         to process new blocks in the same iteration if that
29646         maintains the iteration order.
29648 2023-02-15  Marek Polacek  <polacek@redhat.com>
29650         PR middle-end/106080
29651         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
29652         instead.
29654 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29656         * config/riscv/predicates.md: Refine codes.
29657         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
29658         * config/riscv/riscv-v.cc: Refine codes.
29659         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
29660         enum.
29661         (class imac): New class.
29662         (enum widen_ternop_type): New enum.
29663         (class iwmac): New class.
29664         (BASE): New class.
29665         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29666         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
29667         (vnmsac): Ditto.
29668         (vmadd): Ditto.
29669         (vnmsub): Ditto.
29670         (vwmacc): Ditto.
29671         (vwmaccu): Ditto.
29672         (vwmaccsu): Ditto.
29673         (vwmaccus): Ditto.
29674         * config/riscv/riscv-vector-builtins.cc
29675         (function_builder::apply_predication): Adjust for multiply-add support.
29676         (function_expander::add_vundef_operand): Refine codes.
29677         (function_expander::use_ternop_insn): New function.
29678         (function_expander::use_widen_ternop_insn): Ditto.
29679         * config/riscv/riscv-vector-builtins.h: New function.
29680         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
29681         (pred_mul_<optab><mode>_undef_merge): Ditto.
29682         (*pred_<madd_nmsub><mode>): Ditto.
29683         (*pred_<macc_nmsac><mode>): Ditto.
29684         (*pred_mul_<optab><mode>): Ditto.
29685         (@pred_mul_<optab><mode>_scalar): Ditto.
29686         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
29687         (*pred_<madd_nmsub><mode>_scalar): Ditto.
29688         (*pred_<macc_nmsac><mode>_scalar): Ditto.
29689         (*pred_mul_<optab><mode>_scalar): Ditto.
29690         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
29691         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
29692         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
29693         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
29694         (@pred_widen_mul_plus<su><mode>): Ditto.
29695         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
29696         (@pred_widen_mul_plussu<mode>): Ditto.
29697         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
29698         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
29700 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29702         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
29703         (vector_all_trues_mask_operand): New predicate.
29704         (vector_undef_operand): New predicate.
29705         (ltge_operator): New predicate.
29706         (comparison_except_ltge_operator): New predicate.
29707         (comparison_except_eqge_operator): New predicate.
29708         (ge_operator): New predicate.
29709         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
29710         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
29711         (BASE): Ditto.
29712         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29713         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
29714         (vmsne): Ditto.
29715         (vmslt): Ditto.
29716         (vmsgt): Ditto.
29717         (vmsle): Ditto.
29718         (vmsge): Ditto.
29719         (vmsltu): Ditto.
29720         (vmsgtu): Ditto.
29721         (vmsleu): Ditto.
29722         (vmsgeu): Ditto.
29723         * config/riscv/riscv-vector-builtins-shapes.cc
29724         (struct return_mask_def): Adjust for compare support.
29725         * config/riscv/riscv-vector-builtins.cc
29726         (function_expander::use_compare_insn): New function.
29727         * config/riscv/riscv-vector-builtins.h
29728         (function_expander::add_integer_operand): Ditto.
29729         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
29730         * config/riscv/riscv.md: Add vector min/max attributes.
29731         * config/riscv/vector-iterators.md (xnor): New iterator.
29732         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
29733         (*pred_cmp<mode>): Ditto.
29734         (*pred_cmp<mode>_narrow): Ditto.
29735         (@pred_ltge<mode>): Ditto.
29736         (*pred_ltge<mode>): Ditto.
29737         (*pred_ltge<mode>_narrow): Ditto.
29738         (@pred_cmp<mode>_scalar): Ditto.
29739         (*pred_cmp<mode>_scalar): Ditto.
29740         (*pred_cmp<mode>_scalar_narrow): Ditto.
29741         (@pred_eqne<mode>_scalar): Ditto.
29742         (*pred_eqne<mode>_scalar): Ditto.
29743         (*pred_eqne<mode>_scalar_narrow): Ditto.
29744         (*pred_cmp<mode>_extended_scalar): Ditto.
29745         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
29746         (*pred_eqne<mode>_extended_scalar): Ditto.
29747         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
29748         (@pred_ge<mode>_scalar): Ditto.
29749         (@pred_<optab><mode>): Ditto.
29750         (@pred_n<optab><mode>): Ditto.
29751         (@pred_<optab>n<mode>): Ditto.
29752         (@pred_not<mode>): Ditto.
29754 2023-02-15  Martin Jambor  <mjambor@suse.cz>
29756         PR ipa/108679
29757         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
29758         creation of non-scalar replacements even if IPA-CP knows their
29759         contents.
29761 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
29763         PR target/108787
29764         PR target/103109
29765         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
29766         expander, change operand 3 to be TImode, emit maddlddi4 and
29767         umadddi4_highpart{,_le} with its low half and finally add the high
29768         half to the result.
29770 2023-02-15  Martin Liska  <mliska@suse.cz>
29772         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
29774 2023-02-15  Richard Biener  <rguenther@suse.de>
29776         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
29777         for with_poison and alias worklist to it.
29778         (sanitize_asan_mark_poison): Likewise.
29780 2023-02-15  Richard Biener  <rguenther@suse.de>
29782         PR target/108738
29783         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
29784         Combine bitmap test and set.
29785         (scalar_chain::add_insn): Likewise.
29786         (scalar_chain::analyze_register_chain): Remove redundant
29787         attempt to add to queue and instead strengthen assert.
29788         Sink common attempts to mark the def dual-mode.
29789         (scalar_chain::add_to_queue): Remove redundant insn bitmap
29790         check.
29792 2023-02-15  Richard Biener  <rguenther@suse.de>
29794         PR target/108738
29795         * config/i386/i386-features.cc (convert_scalars_to_vector):
29796         Switch candidates bitmaps to tree view before building the chains.
29798 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
29800         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
29801         "failure trying to reload" call.
29803 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
29805         * gdbinit.in (phrs): New command.
29806         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
29807         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
29809 2023-02-14  David Faust  <david.faust@oracle.com>
29811         PR target/108790
29812         * config/bpf/constraints.md (q): New memory constraint.
29813         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
29814         (zero_extendqidi2): Likewise.
29815         (zero_extendsidi2): Likewise.
29816         (*mov<MM:mode>): Likewise.
29818 2023-02-14  Andrew Pinski  <apinski@marvell.com>
29820         PR tree-optimization/108355
29821         PR tree-optimization/96921
29822         * match.pd: Add pattern for "1 - bool_val".
29824 2023-02-14  Richard Biener  <rguenther@suse.de>
29826         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
29827         basic block index hashing on the availability of ->cclhs.
29828         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
29829         rely on ->cclhs availability.
29830         (vn_phi_lookup): Set ->cclhs only when we are eventually
29831         going to CSE the PHI.
29832         (vn_phi_insert): Likewise.
29834 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
29836         * gimplify.cc (gimplify_save_expr): Add missing guard.
29838 2023-02-14  Richard Biener  <rguenther@suse.de>
29840         PR tree-optimization/108782
29841         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
29842         Make sure we're not vectorizing an inner loop.
29844 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
29846         PR sanitizer/108777
29847         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
29848         * asan.h (asan_memfn_rtl): Declare.
29849         * asan.cc (asan_memfn_rtls): New variable.
29850         (asan_memfn_rtl): New function.
29851         * builtins.cc (expand_builtin): If
29852         param_asan_kernel_mem_intrinsic_prefix and function is
29853         kernel-{,hw}address sanitized, emit calls to
29854         __{,hw}asan_{memcpy,memmove,memset} rather than
29855         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
29856         instead of flag_sanitize & SANITIZE_ADDRESS to check if
29857         asan_intercepted_p functions shouldn't be expanded inline.
29859 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
29861         PR tree-optimization/96373
29862         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
29863         operations on the loop mask.  Reject partial vectors if this isn't
29864         possible.
29866 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
29868         PR rtl-optimization/108681
29869         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
29870         code to handle bare uses and clobbers.
29872 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
29874         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
29875         caller_save_p flag when clearing defined_p flag.
29876         (setup_reg_equiv): Ditto.
29877         * lra-constraints.cc (lra_constraints): Ditto.
29879 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
29881         PR target/108516
29882         * config/i386/predicates.md (extr_register_operand):
29883         New special predicate.
29884         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
29885         as operand 1 predicate.
29886         (*exzv<mode>): Ditto.
29887         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
29889 2023-02-13  Richard Biener  <rguenther@suse.de>
29891         PR tree-optimization/28614
29892         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
29893         walking all edges in most cases.
29894         (vn_nary_op_insert_pieces_predicated): Avoid repeated
29895         calls to can_track_predicate_on_edge unless checking is
29896         enabled.
29897         (process_bb): Instead call it once here for each edge
29898         we register possibly multiple predicates on.
29900 2023-02-13  Richard Biener  <rguenther@suse.de>
29902         PR tree-optimization/108691
29903         * tree-cfg.cc (notice_special_calls): When the CFG is built
29904         honor gimple_call_ctrl_altering_p.
29905         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
29906         temporarily if the call is not control-altering.
29907         * calls.cc (emit_call_1): Do not add REG_SETJMP if
29908         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
29910 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
29912         PR target/108102
29913         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
29914         (struct s390_sched_state): Initialise to zero.
29915         (s390_sched_variable_issue): For better debuggability also emit
29916         the current side.
29917         (s390_sched_init): Unconditionally reset scheduler state.
29919 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
29921         * ifcvt.h (noce_if_info::cond_inverted): New field.
29922         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
29923         values when cond_inverted is true.
29924         (noce_find_if_block): Allow the condition to be inverted when
29925         handling conditional moves.
29927 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
29929         * config/s390/predicates.md (execute_operation): Use
29930         constrain_operands instead of extract_constrain_insn in order to
29931         determine wheter there exists a valid alternative.
29933 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
29935         * common/config/arc/arc-common.cc (arc_option_optimization_table):
29936         Remove millicode from list.
29938 2023-02-13  Martin Liska  <mliska@suse.cz>
29940         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
29942 2023-02-13  Richard Biener  <rguenther@suse.de>
29944         PR tree-optimization/106722
29945         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
29946         whether we marked a stmt.
29947         (mark_control_dependent_edges_necessary): When
29948         mark_last_stmt_necessary didn't mark any stmt make sure
29949         to mark its control dependent edges.
29950         (propagate_necessity): Likewise.
29952 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
29954         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
29955         (DWARF_FRAME_REGISTERS): New.
29956         (DWARF_REG_TO_UNWIND_COLUMN): New.
29958 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
29960         * doc/sourcebuild.texi: Remove (broken) direct reference to
29961         "The GNU configure and build system".
29963 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
29965         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
29966         gen_add3_insn to gen_rtx_SET.
29967         (riscv_adjust_libcall_cfi_epilogue): Likewise.
29969 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29971         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
29972         (class vnclip): Ditto.
29973         (BASE): Ditto.
29974         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
29975         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
29976         (vasub): Ditto.
29977         (vaaddu): Ditto.
29978         (vasubu): Ditto.
29979         (vsmul): Ditto.
29980         (vssra): Ditto.
29981         (vssrl): Ditto.
29982         (vnclipu): Ditto.
29983         (vnclip): Ditto.
29984         * config/riscv/vector-iterators.md (su): Add instruction.
29985         (aadd): Ditto.
29986         (vaalu): Ditto.
29987         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
29988         (@pred_<sat_op><mode>_scalar): Ditto.
29989         (*pred_<sat_op><mode>_scalar): Ditto.
29990         (*pred_<sat_op><mode>_extended_scalar): Ditto.
29991         (@pred_narrow_clip<v_su><mode>): Ditto.
29992         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
29994 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29996         * config/riscv/constraints.md (Wbr): Remove unused constraint.
29997         * config/riscv/predicates.md: Fix move operand predicate.
29998         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
29999         (class vncvt_x): Ditto.
30000         (class vmerge): Ditto.
30001         (class vmv_v): Ditto.
30002         (BASE): Ditto.
30003         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30004         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
30005         (vsrl): Ditto.
30006         (vnsrl): Ditto.
30007         (vnsra): Ditto.
30008         (vncvt_x): Ditto.
30009         (vmerge): Ditto.
30010         (vmv_v): Ditto.
30011         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
30012         (struct move_def): Ditto.
30013         (SHAPE): Ditto.
30014         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
30015         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
30016         (DEF_RVV_WEXTU_OPS): Ditto
30017         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
30018         (v_v): Ditto.
30019         (v_x): Ditto.
30020         (x_w): Ditto.
30021         (x): Ditto.
30022         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
30023         * config/riscv/vector-iterators.md (nmsac):New iterator.
30024         (nmsub): New iterator.
30025         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
30026         (@pred_merge<mode>_scalar): New pattern.
30027         (*pred_merge<mode>_scalar): New pattern.
30028         (*pred_merge<mode>_extended_scalar): New pattern.
30029         (@pred_narrow_<optab><mode>): New pattern.
30030         (@pred_narrow_<optab><mode>_scalar): New pattern.
30031         (@pred_trunc<mode>): New pattern.
30033 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30035         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
30036         (class vmsbc): Ditto.
30037         (BASE): Define new class.
30038         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30039         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
30040         (vmsbc): Ditto.
30041         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
30042         New class.
30043         (SHAPE): Ditto.
30044         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
30045         * config/riscv/riscv-vector-builtins.cc
30046         (function_expander::use_exact_insn): Adjust for new support
30047         * config/riscv/riscv-vector-builtins.h
30048         (function_base::has_merge_operand_p): New function.
30049         * config/riscv/vector-iterators.md: New iterator.
30050         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
30051         (@pred_msbc<mode>): Ditto.
30052         (@pred_madc<mode>_scalar): Ditto.
30053         (@pred_msbc<mode>_scalar): Ditto.
30054         (*pred_madc<mode>_scalar): Ditto.
30055         (*pred_madc<mode>_extended_scalar): Ditto.
30056         (*pred_msbc<mode>_scalar): Ditto.
30057         (*pred_msbc<mode>_extended_scalar): Ditto.
30058         (@pred_madc<mode>_overflow): Ditto.
30059         (@pred_msbc<mode>_overflow): Ditto.
30060         (@pred_madc<mode>_overflow_scalar): Ditto.
30061         (@pred_msbc<mode>_overflow_scalar): Ditto.
30062         (*pred_madc<mode>_overflow_scalar): Ditto.
30063         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
30064         (*pred_msbc<mode>_overflow_scalar): Ditto.
30065         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
30067 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30069         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
30070         * config/riscv/riscv-v.cc (simm32_p): Ditto.
30071         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
30072         (class vsbc): Ditto.
30073         (BASE): Ditto.
30074         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30075         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
30076         (vsbc): Ditto.
30077         * config/riscv/riscv-vector-builtins-shapes.cc
30078         (struct no_mask_policy_def): Ditto.
30079         (SHAPE): Ditto.
30080         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
30081         * config/riscv/riscv-vector-builtins.cc
30082         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
30083         (rvv_arg_type_info::get_tree_type): Ditto.
30084         (function_expander::use_exact_insn): Ditto.
30085         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
30086         (function_base::use_mask_predication_p): New function.
30087         * config/riscv/vector-iterators.md: New iterator.
30088         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
30089         (@pred_sbc<mode>): Ditto.
30090         (@pred_adc<mode>_scalar): Ditto.
30091         (@pred_sbc<mode>_scalar): Ditto.
30092         (*pred_adc<mode>_scalar): Ditto.
30093         (*pred_adc<mode>_extended_scalar): Ditto.
30094         (*pred_sbc<mode>_scalar): Ditto.
30095         (*pred_sbc<mode>_extended_scalar): Ditto.
30097 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30099         * config/riscv/vector.md: use "zero" reg.
30101 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30103         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
30104         class.
30105         (class vwmulsu): Ditto.
30106         (class vwcvt): Ditto.
30107         (BASE): Add integer widening support.
30108         * config/riscv/riscv-vector-builtins-bases.h: Ditto
30109         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
30110         (vwsub): New class.
30111         (vwmul): New class.
30112         (vwmulu): New class.
30113         (vwmulsu): New class.
30114         (vwaddu): New class.
30115         (vwsubu): New class.
30116         (vwcvt_x): New class.
30117         (vwcvtu_x): New class.
30118         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
30119         class.
30120         (struct widen_alu_def): New class.
30121         (SHAPE): New class.
30122         * config/riscv/riscv-vector-builtins-shapes.h: New class.
30123         * config/riscv/riscv-vector-builtins.cc
30124         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
30125         (rvv_arg_type_info::get_tree_type): Ditto.
30126         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
30127         (x_v): Ditto.
30128         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
30129         widening support.
30130         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
30131         * config/riscv/riscv.h (X0_REGNUM): New constant.
30132         * config/riscv/vector-iterators.md: New iterators.
30133         * config/riscv/vector.md
30134         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
30135         pattern.
30136         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
30137         Ditto.
30138         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
30139         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
30140         Ditto.
30141         (@pred_widen_mulsu<mode>): Ditto.
30142         (@pred_widen_mulsu<mode>_scalar): Ditto.
30143         (@pred_<optab><mode>): Ditto.
30145 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30146             kito-cheng  <kito.cheng@sifive.com>
30148         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
30149         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
30150         (BASE): Ditto.
30151         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30152         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
30153         API support.
30154         (vmulhu): Ditto.
30155         (vmulhsu): Ditto.
30156         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
30157         New macro.
30158         (DEF_RVV_FULL_V_U_OPS): Ditto.
30159         (vint8mf8_t): Ditto.
30160         (vint8mf4_t): Ditto.
30161         (vint8mf2_t): Ditto.
30162         (vint8m1_t): Ditto.
30163         (vint8m2_t): Ditto.
30164         (vint8m4_t): Ditto.
30165         (vint8m8_t): Ditto.
30166         (vint16mf4_t): Ditto.
30167         (vint16mf2_t): Ditto.
30168         (vint16m1_t): Ditto.
30169         (vint16m2_t): Ditto.
30170         (vint16m4_t): Ditto.
30171         (vint16m8_t): Ditto.
30172         (vint32mf2_t): Ditto.
30173         (vint32m1_t): Ditto.
30174         (vint32m2_t): Ditto.
30175         (vint32m4_t): Ditto.
30176         (vint32m8_t): Ditto.
30177         (vint64m1_t): Ditto.
30178         (vint64m2_t): Ditto.
30179         (vint64m4_t): Ditto.
30180         (vint64m8_t): Ditto.
30181         (vuint8mf8_t): Ditto.
30182         (vuint8mf4_t): Ditto.
30183         (vuint8mf2_t): Ditto.
30184         (vuint8m1_t): Ditto.
30185         (vuint8m2_t): Ditto.
30186         (vuint8m4_t): Ditto.
30187         (vuint8m8_t): Ditto.
30188         (vuint16mf4_t): Ditto.
30189         (vuint16mf2_t): Ditto.
30190         (vuint16m1_t): Ditto.
30191         (vuint16m2_t): Ditto.
30192         (vuint16m4_t): Ditto.
30193         (vuint16m8_t): Ditto.
30194         (vuint32mf2_t): Ditto.
30195         (vuint32m1_t): Ditto.
30196         (vuint32m2_t): Ditto.
30197         (vuint32m4_t): Ditto.
30198         (vuint32m8_t): Ditto.
30199         (vuint64m1_t): Ditto.
30200         (vuint64m2_t): Ditto.
30201         (vuint64m4_t): Ditto.
30202         (vuint64m8_t): Ditto.
30203         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
30204         (DEF_RVV_FULL_V_U_OPS): Ditto.
30205         (check_required_extensions): Add vmulh support.
30206         (rvv_arg_type_info::get_tree_type): Ditto.
30207         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
30208         (enum rvv_base_type): Ditto.
30209         * config/riscv/riscv.opt: Add 'V' extension flag.
30210         * config/riscv/vector-iterators.md (su): New iterator.
30211         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
30212         (@pred_mulh<v_su><mode>_scalar): Ditto.
30213         (*pred_mulh<v_su><mode>_scalar): Ditto.
30214         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
30216 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30218         * config/riscv/iterators.md: Add sign_extend/zero_extend.
30219         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
30220         (BASE): Ditto.
30221         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
30222         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
30223         define.
30224         (vzext): Ditto.
30225         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
30226         for vsext/vzext support.
30227         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
30228         macro define.
30229         (DEF_RVV_QEXTI_OPS): Ditto.
30230         (DEF_RVV_OEXTI_OPS): Ditto.
30231         (DEF_RVV_WEXTU_OPS): Ditto.
30232         (DEF_RVV_QEXTU_OPS): Ditto.
30233         (DEF_RVV_OEXTU_OPS): Ditto.
30234         (vint16mf4_t): Ditto.
30235         (vint16mf2_t): Ditto.
30236         (vint16m1_t): Ditto.
30237         (vint16m2_t): Ditto.
30238         (vint16m4_t): Ditto.
30239         (vint16m8_t): Ditto.
30240         (vint32mf2_t): Ditto.
30241         (vint32m1_t): Ditto.
30242         (vint32m2_t): Ditto.
30243         (vint32m4_t): Ditto.
30244         (vint32m8_t): Ditto.
30245         (vint64m1_t): Ditto.
30246         (vint64m2_t): Ditto.
30247         (vint64m4_t): Ditto.
30248         (vint64m8_t): Ditto.
30249         (vuint16mf4_t): Ditto.
30250         (vuint16mf2_t): Ditto.
30251         (vuint16m1_t): Ditto.
30252         (vuint16m2_t): Ditto.
30253         (vuint16m4_t): Ditto.
30254         (vuint16m8_t): Ditto.
30255         (vuint32mf2_t): Ditto.
30256         (vuint32m1_t): Ditto.
30257         (vuint32m2_t): Ditto.
30258         (vuint32m4_t): Ditto.
30259         (vuint32m8_t): Ditto.
30260         (vuint64m1_t): Ditto.
30261         (vuint64m2_t): Ditto.
30262         (vuint64m4_t): Ditto.
30263         (vuint64m8_t): Ditto.
30264         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
30265         (DEF_RVV_QEXTI_OPS): Ditto.
30266         (DEF_RVV_OEXTI_OPS): Ditto.
30267         (DEF_RVV_WEXTU_OPS): Ditto.
30268         (DEF_RVV_QEXTU_OPS): Ditto.
30269         (DEF_RVV_OEXTU_OPS): Ditto.
30270         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
30271         support.
30272         (rvv_arg_type_info::get_tree_type): Ditto.
30273         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
30274         * config/riscv/vector-iterators.md (z): New attribute.
30275         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
30276         (@pred_<optab><mode>_vf4): Ditto.
30277         (@pred_<optab><mode>_vf8): Ditto.
30279 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30281         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
30282         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
30283         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
30284         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30285         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
30286         (vssub): Ditto.
30287         (vsaddu): Ditto.
30288         (vssubu): Ditto.
30289         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
30290         support.
30291         (sll.vv): Ditto.
30292         (%3,%v4): Ditto.
30293         (%3,%4): Ditto.
30294         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
30295         (@pred_<optab><mode>_scalar): New pattern.
30296         (*pred_<optab><mode>_scalar): New pattern.
30297         (*pred_<optab><mode>_extended_scalar): New pattern.
30299 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30301         * config/riscv/iterators.md: Add neg and not.
30302         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
30303         (BASE): Ditto.
30304         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30305         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
30306         into alu.
30307         (vsub): Ditto.
30308         (vand): Ditto.
30309         (vor): Ditto.
30310         (vxor): Ditto.
30311         (vsll): Ditto.
30312         (vsra): Ditto.
30313         (vsrl): Ditto.
30314         (vmin): Ditto.
30315         (vmax): Ditto.
30316         (vminu): Ditto.
30317         (vmaxu): Ditto.
30318         (vmul): Ditto.
30319         (vdiv): Ditto.
30320         (vrem): Ditto.
30321         (vdivu): Ditto.
30322         (vremu): Ditto.
30323         (vrsub): Ditto.
30324         (vneg): Ditto.
30325         (vnot): Ditto.
30326         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
30327         (struct alu_def): Ditto.
30328         (SHAPE): Ditto.
30329         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
30330         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
30331         * config/riscv/vector-iterators.md: New iterator.
30332         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
30334 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30336         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
30338 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
30340         PR ipa/108605
30341         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
30342         item->offset bit position is too large to be representable as
30343         unsigned int byte position.
30345 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
30347         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
30349 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
30351         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
30352         valid_combine only when ira_use_lra_p is true.
30354 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
30356         * params.opt (ira-simple-lra-insn-threshold): Add new param.
30357         * ira.cc (ira): Use the param to switch on simple LRA.
30359 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
30361         PR tree-optimization/108687
30362         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
30363         back to RFD_NONE mode for calculations.
30364         (ranger_cache::propagate_cache): Call the internal edge range API
30365         with RFD_READ_ONLY instead of changing the external routine.
30367 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
30369         PR tree-optimization/108520
30370         * gimple-range-infer.cc (check_assume_func): Invoke
30371         gimple_range_global directly instead using global_range_query.
30372         * value-query.cc (get_range_global): Add function context and
30373         avoid calling nonnull_arg_p if not cfun.
30374         (gimple_range_global): Add function context pointer.
30375         * value-query.h (imple_range_global): Add function context.
30377 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30379         * config/riscv/constraints.md (Wdm): Adjust constraint.
30380         (Wbr): New constraint.
30381         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
30382         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
30383         (emit_vlmax_op): New function.
30384         (emit_nonvlmax_op): Ditto.
30385         (simm32_p): Ditto.
30386         (neg_simm5_p): Ditto.
30387         (has_vi_variant_p): Ditto.
30388         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
30389         (emit_vlmax_op): New function.
30390         (emit_nonvlmax_op): Ditto.
30391         (expand_const_vector): Adjust function.
30392         (legitimize_move): Ditto.
30393         (simm32_p): New function.
30394         (simm5_p): Ditto.
30395         (neg_simm5_p): Ditto.
30396         (has_vi_variant_p): Ditto.
30397         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
30398         (BASE): Ditto.
30399         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
30400         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
30401         unsigned cases.
30402         (vmax): Ditto.
30403         (vminu): Remove signed cases.
30404         (vmaxu): Ditto.
30405         (vdiv): Remove unsigned cases.
30406         (vrem): Ditto.
30407         (vdivu): Remove signed cases.
30408         (vremu): Ditto.
30409         (vadd): Adjust.
30410         (vsub): Ditto.
30411         (vrsub): New class.
30412         (vand): Adjust.
30413         (vor): Ditto.
30414         (vxor): Ditto.
30415         (vmul): Ditto.
30416         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
30417         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
30418         * config/riscv/vector-iterators.md: New iterators.
30419         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
30420         support.
30421         (@pred_<optab><mode>_scalar): New pattern.
30422         (@pred_sub<mode>_reverse_scalar): Ditto.
30423         (*pred_<optab><mode>_scalar): Ditto.
30424         (*pred_<optab><mode>_extended_scalar): Ditto.
30425         (*pred_sub<mode>_reverse_scalar): Ditto.
30426         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
30428 2023-02-10  Richard Biener  <rguenther@suse.de>
30430         PR tree-optimization/108724
30431         * tree-vect-stmts.cc (vectorizable_operation): Avoid
30432         using word_mode vectors when vector lowering will
30433         decompose them to elementwise operations.
30435 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
30437         Revert:
30438         2023-02-09  Martin Liska  <mliska@suse.cz>
30440         PR target/100758
30441         * doc/extend.texi: Document that the function
30442         does not work correctly for old VIA processors.
30444 2023-02-10  Andrew Pinski  <apinski@marvell.com>
30445             Andrew Macleod   <amacleod@redhat.com>
30447         PR tree-optimization/108684
30448         * tree-ssa-dce.cc (simple_dce_from_worklist):
30449         Check all ssa names and not just non-vdef ones
30450         before accepting the inline-asm.
30451         Call unlink_stmt_vdef on the statement before
30452         removing it.
30454 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
30456         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
30457         * ira.cc (validate_equiv_mem): Check memref address variance.
30458         (no_equiv): Clear caller_save_p flag.
30459         (update_equiv_regs): Define caller save equivalence for
30460         valid_combine.
30461         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
30462         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
30463         call_save_p.  Use caller save equivalence depending on the arg.
30464         (split_reg): Adjust the call.
30466 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
30468         PR target/100758
30469         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
30470         (cpu_indicator_init): Call get_available_features for all CPUs with
30471         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
30472         fixes.
30474 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
30476         PR tree-optimization/108688
30477         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
30478         of BIT_INSERT_EXPR extracting exactly all inserted bits even
30479         when without mode precision.  Formatting fixes.
30481 2023-02-09  Andrew Pinski  <apinski@marvell.com>
30483         PR tree-optimization/108688
30484         * match.pd (bit_field_ref [bit_insert]): Avoid generating
30485         BIT_FIELD_REFs of non-mode-precision integral operands.
30487 2023-02-09  Martin Liska  <mliska@suse.cz>
30489         PR target/100758
30490         * doc/extend.texi: Document that the function
30491         does not work correctly for old VIA processors.
30493 2023-02-09  Andreas Schwab  <schwab@suse.de>
30495         * lto-wrapper.cc (merge_and_complain): Handle
30496         -funwind-tables and -fasynchronous-unwind-tables.
30497         (append_compiler_options): Likewise.
30499 2023-02-09  Richard Biener  <rguenther@suse.de>
30501         PR tree-optimization/26854
30502         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
30503         view around insert_updated_phi_nodes_for.
30504         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
30505         in tree view.
30506         (walk_aliased_vdefs_1): Likewise.
30508 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
30510         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
30512 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
30514         PR target/108505
30515         * config.gcc (tm_mlib_file): Define new variable.
30517 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
30519         PR tree-optimization/108692
30520         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
30521         widened_code which is different from code, don't call
30522         vect_look_through_possible_promotion but instead just check op is
30523         SSA_NAME with integral type for which vect_is_simple_use is true
30524         and call set_op on this_unprom.
30526 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
30528         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
30529         declaration.
30530         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
30531         definition.
30532         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
30533         to 'aarch_ra_sign_key'.
30534         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
30535         declaration.
30536         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
30537         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
30538         * config/arm/arm.opt: Define.
30540 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
30542         PR tree-optimization/108316
30543         * tree-vect-stmts.cc (get_load_store_type): When using
30544         internal functions for gather/scatter, make sure that the type
30545         of the offset argument is consistent with the offset vector type.
30547 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
30549         Revert:
30550         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
30552         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
30553         * ira.cc (validate_equiv_mem): Check memref address variance.
30554         (update_equiv_regs): Define caller save equivalence for
30555         valid_combine.
30556         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
30557         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
30558         call_save_p.  Use caller save equivalence depending on the arg.
30559         (split_reg): Adjust the call.
30561 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
30563         * tree.def (SAD_EXPR): Remove outdated comment about missing
30564         WIDEN_MINUS_EXPR.
30566 2023-02-07  Marek Polacek  <polacek@redhat.com>
30568         * doc/invoke.texi: Update -fchar8_t documentation.
30570 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
30572         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
30573         * ira.cc (validate_equiv_mem): Check memref address variance.
30574         (update_equiv_regs): Define caller save equivalence for
30575         valid_combine.
30576         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
30577         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
30578         call_save_p.  Use caller save equivalence depending on the arg.
30579         (split_reg): Adjust the call.
30581 2023-02-07  Richard Biener  <rguenther@suse.de>
30583         PR tree-optimization/26854
30584         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
30585         instead of immediate uses.
30587 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
30589         PR tree-optimization/106923
30590         * ipa-split.cc (execute_split_functions): Don't split returns_twice
30591         functions.
30593 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
30595         PR tree-optimization/106433
30596         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
30597         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
30599 2023-02-07  Jan Hubicka  <jh@suse.cz>
30601         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
30602         for znver4.
30604 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
30606         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
30607         (process_asm): Create a constructor for GCN_STACK_SIZE.
30608         (main): Parse the -mstack-size option.
30610 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
30612         PR target/104921
30613         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
30614         Use correct constraint for operand 3.
30616 2023-02-06  Martin Jambor  <mjambor@suse.cz>
30618         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
30620 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
30622         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
30623         New define_int_iterator.
30624         (bytepick_d_ashift_amount): Likewise.
30625         (bytepick_imm): New define_int_attr.
30626         (bytepick_w_lshiftrt_amount): Likewise.
30627         (bytepick_d_lshiftrt_amount): Likewise.
30628         (bytepick_w_<bytepick_imm>): New define_insn template.
30629         (bytepick_w_<bytepick_imm>_extend): Likewise.
30630         (bytepick_d_<bytepick_imm>): Likewise.
30631         (bytepick_w): Remove unused define_insn.
30632         (bytepick_d): Likewise.
30633         (UNSPEC_BYTEPICK_W): Remove unused unspec.
30634         (UNSPEC_BYTEPICK_D): Likewise.
30635         * config/loongarch/predicates.md (const_0_to_3_operand):
30636         Remove unused define_predicate.
30637         (const_0_to_7_operand): Likewise.
30639 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
30641         PR tree-optimization/108655
30642         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
30643         or -fsanitize=unreachable -fsanitize-trap=unreachable return
30644         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
30646 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
30648         * doc/install.texi (Specific): Remove PW32.
30650 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
30652         PR tree-optimization/108647
30653         * range-op.cc (operator_equal::op1_range,
30654         operator_not_equal::op1_range): Don't test op2 bound
30655         equality if op2.undefined_p (), instead set_varying.
30656         (operator_lt::op1_range, operator_le::op1_range,
30657         operator_gt::op1_range, operator_ge::op1_range): Return false if
30658         op2.undefined_p ().
30659         (operator_lt::op2_range, operator_le::op2_range,
30660         operator_gt::op2_range, operator_ge::op2_range): Return false if
30661         op1.undefined_p ().
30663 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
30665         PR tree-optimization/108639
30666         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
30667         widest_int.
30668         (irange::operator==): Same.
30670 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
30672         PR tree-optimization/108647
30673         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
30674         (foperator_lt::op2_range): Same.
30675         (foperator_le::op1_range): Same.
30676         (foperator_le::op2_range): Same.
30677         (foperator_gt::op1_range): Same.
30678         (foperator_gt::op2_range): Same.
30679         (foperator_ge::op1_range): Same.
30680         (foperator_ge::op2_range): Same.
30681         (foperator_unordered_lt::op1_range): Same.
30682         (foperator_unordered_lt::op2_range): Same.
30683         (foperator_unordered_le::op1_range): Same.
30684         (foperator_unordered_le::op2_range): Same.
30685         (foperator_unordered_gt::op1_range): Same.
30686         (foperator_unordered_gt::op2_range): Same.
30687         (foperator_unordered_ge::op1_range): Same.
30688         (foperator_unordered_ge::op2_range): Same.
30690 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
30692         PR tree-optimization/107570
30693         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
30695 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
30697         * doc/gm2.texi (Internals): Remove from menu.
30698         (Using): Comment out ifnohtml conditional.
30699         (Documentation): Use gcc url.
30700         (License): Node simplified.
30701         (Copying): New node.  Include gpl_v3_without_node.
30702         (Contributing): Node simplified.
30703         (Internals): Commented out.
30704         (Libraries): Node simplified.
30705         (Indices): Ditto.
30706         (Contents): Ditto.
30707         (Functions): Ditto.
30709 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
30711         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
30712         attribute.
30713         (mve_vqshluq_m_n_s<mode>): Likewise.
30714         (mve_vshlq_m_<supf><mode>): Likewise.
30715         (mve_vsriq_m_n_<supf><mode>): Likewise.
30716         (mve_vsubq_m_<supf><mode>): Likewise.
30718 2023-02-03  Martin Jambor  <mjambor@suse.cz>
30720         PR ipa/108384
30721         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
30722         when comparing to an IPA-CP value.
30723         (dump_list_of_param_indices): New function.
30724         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
30725         Dump removed candidates using dump_list_of_param_indices.
30726         * ipa-param-manipulation.cc
30727         (ipa_param_body_adjustments::modify_expression): Add assert checking
30728         sizes of a VIEW_CONVERT_EXPR will match.
30729         (ipa_param_body_adjustments::modify_assignment): Likewise.
30731 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
30733         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
30734         * config/riscv/riscv.cc: Ditto.
30736 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30738         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
30739         (sll.vv): Ditto.
30740         (%3,%4): Ditto.
30741         (%3,%v4): Ditto.
30742         * config/riscv/vector.md: Ditto.
30744 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30746         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
30747         * config/riscv/riscv-vector-builtins-bases.cc: New class.
30748         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
30749         (vsra): Ditto.
30750         (vsrl): Ditto.
30751         * config/riscv/riscv-vector-builtins.cc: Ditto.
30752         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
30754 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
30756         * toplev.cc (toplev::main): Only print the version information header
30757         from toplevel main().
30759 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
30761         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
30762         cond_{ashl|ashr|lshr}
30764 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
30766         PR rtl-optimization/108086
30767         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
30768         Adjust size-related commentary accordingly.
30770 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
30772         PR rtl-optimization/108508
30773         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
30774         the splay tree search gives the first clobber in the second group,
30775         make sure that the root of the first clobber group is updated
30776         correctly.  Enter the new clobber group into the definition splay
30777         tree.
30779 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
30781         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
30782         Fix finding best match score.
30784 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
30786         PR debug/106746
30787         PR rtl-optimization/108463
30788         PR target/108484
30789         * cselib.cc (cselib_current_insn): Move declaration earlier.
30790         (cselib_hasher::equal): For debug only locs, temporarily override
30791         cselib_current_insn to their l->setting_insn for the
30792         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
30793         promote some debug locs.
30794         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
30795         when using cselib call cselib_lookup_from_insn on the address but
30796         don't substitute it.
30798 2023-02-02  Richard Biener  <rguenther@suse.de>
30800         PR middle-end/108625
30801         * genmatch.cc (expr::gen_transform): Also disallow resimplification
30802         from pushing to lseq with force_leaf.
30803         (dt_simplify::gen_1): Likewise.
30805 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
30807         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
30808         (struct kernargs): Replace the common content with kernargs_abi.
30809         (struct heap): Delete.
30810         (main): Read GCN_STACK_SIZE envvar.
30811         Allocate space for the device stacks.
30812         Write the new kernargs fields.
30813         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
30814         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
30815         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
30816         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
30817         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
30818         Set up the stacks from the values in the kernargs, not private.
30819         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
30820         (gcn_hsa_declare_function_name): Turn off the private segment.
30821         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
30822         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
30823         * config/gcn/gcn.opt (mstack-size): Change the description.
30825 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
30827         PR target/108443
30828         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
30829         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
30830         addressing MVE predicate modes.
30831         (mve_bool_vec_to_const): Change to represent correct MVE predicate
30832         format.
30833         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
30834         modes.
30835         (arm_vector_mode_supported_p): Likewise.
30836         (arm_mode_to_pred_mode): Add V2QI.
30837         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
30838         qualifier.
30839         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
30840         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
30841         (v2qi_UP): New macro.
30842         (v4bi_UP): New macro.
30843         (v8bi_UP): New macro.
30844         (v16bi_UP): New macro.
30845         (arm_expand_builtin_args): Make it able to expand the new predicate
30846         modes.
30847         * config/arm/arm-modes.def (V2QI): New mode.
30848         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
30849         Pred4x4_t): Remove unused predicate builtin types.
30850         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
30851         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
30852         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
30853         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
30854         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
30855         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
30856         of MODE_VECTOR_BOOL.
30857         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
30858         (MVE_VPRED): Likewise.
30859         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
30860         (MVE_vctp): New mode attribute.
30861         (mode1): Remove.
30862         (VCTPQ): Remove.
30863         (VCTPQ_M): Remove.
30864         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
30865         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
30866         attributes.
30867         (mve_vpnothi): Rename this...
30868         (mve_vpnotv16bi): ... to this.
30869         (mve_vctp<mode1>q_mhi): Rename this...
30870         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
30871         (mve_vldrdq_gather_base_z_<supf>v2di,
30872         mve_vldrdq_gather_offset_z_<supf>v2di,
30873         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
30874         mve_vstrdq_scatter_base_p_<supf>v2di,
30875         mve_vstrdq_scatter_offset_p_<supf>v2di,
30876         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
30877         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
30878         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
30879         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
30880         mve_vldrdq_gather_base_wb_z_<supf>v2di,
30881         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
30882         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
30883         predicates.
30884         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
30885         these...
30886         (VCTP): ... with this.
30887         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
30888         (VCTP_M): ... with this.
30889         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
30890         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
30892 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
30894         PR target/107674
30895         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
30896         (arm_modes_tieable_p): Make MVE predicate modes tieable.
30897         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
30898         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
30899         simplify_subreg to simplify subregs where the outermode is not scalar.
30901 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
30903         PR target/107674
30904         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
30905         new qualifiers parameter and use unsigned short type for MVE predicate.
30906         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
30907         parameter.
30908         (arm_init_crypto_builtins): Likewise.
30910 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
30912         PR ipa/107300
30913         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
30914         * internal-fn.def (TRAP): Remove.
30915         * internal-fn.cc (expand_TRAP): Remove.
30916         * tree.cc (build_common_builtin_nodes): Define
30917         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
30918         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
30919         instead of BUILT_IN_TRAP.
30920         * gimple.cc (gimple_build_builtin_unreachable): Remove
30921         emitting internal function for BUILT_IN_TRAP.
30922         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
30923         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
30924         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
30925         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
30926         BUILT_IN_UNREACHABLE_TRAP.
30927         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
30928         * tree-cfg.cc (verify_gimple_call,
30929         pass_warn_function_return::execute): Likewise.
30930         * attribs.cc (decl_attributes): Don't report exclusions on
30931         BUILT_IN_UNREACHABLE_TRAP either.
30933 2023-02-02  liuhongt  <hongtao.liu@intel.com>
30935         PR tree-optimization/108601
30936         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
30937         * tree-vect-loop.cc
30938         (vectorizable_nonlinear_induction): Remove
30939         vect_can_peel_nonlinear_iv_p.
30940         (vect_can_peel_nonlinear_iv_p): Don't peel
30941         nonlinear iv(mult or shift) for epilog when vf is not
30942         constant and moved the defination to ..
30943         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
30944         .. Here.
30946 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
30948         PR middle-end/108435
30949         * tree-nested.cc (convert_nonlocal_omp_clauses)
30950         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
30951         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
30952         before calling declare_vars.
30953         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
30954         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
30955         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
30956         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
30958 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
30960         * common/config/aarch64/aarch64-common.cc
30961         (struct aarch64_option_extension): Add native_detect and document struct
30962         a bit more.
30963         (all_extensions): Set new field native_detect.
30964         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
30965         unused struct.
30967 2023-02-01  Martin Liska  <mliska@suse.cz>
30969         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
30970         value if set.
30972 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
30974         PR tree-optimization/108356
30975         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
30976         do a search of the DOM tree for a range.
30978 2023-02-01  Martin Liska  <mliska@suse.cz>
30980         PR ipa/108509
30981         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
30982         ony non-null values.
30983         * ipa.cc (walk_polymorphic_call_targets): Likewise.
30985 2023-02-01  Martin Liska  <mliska@suse.cz>
30987         PR driver/108572
30988         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
30989         -gz=zstd.
30991 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
30993         PR debug/108573
30994         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
30995         subregs in DEBUG_INSNs.
30997 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
30999         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
31001 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
31003         * config/s390/s390.cc (s390_restore_gpr_p): New function.
31004         (s390_preserve_gpr_arg_in_range_p): New function.
31005         (s390_preserve_gpr_arg_p): New function.
31006         (s390_preserve_fpr_arg_p): New function.
31007         (s390_register_info_stdarg_fpr): Rename to ...
31008         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
31009         (s390_register_info_stdarg_gpr): Rename to ...
31010         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
31011         (s390_register_info): Use the renamed functions above.
31012         (s390_optimize_register_info): Likewise.
31013         (save_fpr): Generate CFI for -mpreserve-args.
31014         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
31015         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
31016         (s390_optimize_prologue): Likewise.
31017         * config/s390/s390.opt: New option -mpreserve-args
31019 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
31021         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
31022         (restore_gprs): Likewise.
31023         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
31024         frame pointer if a frame-pointer is used.
31025         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
31026         * config/s390/s390.md (stack_tie): Add a register operand and
31027         rename to ...
31028         (@stack_tie<mode>): ... this.
31030 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
31032         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
31033         EMIT_CFI parameter.
31034         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
31035         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
31037 2023-02-01  Richard Biener  <rguenther@suse.de>
31039         PR middle-end/108500
31040         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
31041         with tree traversal algorithm.
31043 2023-02-01  Jason Merrill  <jason@redhat.com>
31045         * doc/invoke.texi: Document -Wno-changes-meaning.
31047 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
31049         * doc/invoke.texi (Static Analyzer Options): Add notes about
31050         limitations of -fanalyzer.
31052 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31054         * config/riscv/constraints.md (vj): New.
31055         (vk): Ditto
31056         * config/riscv/iterators.md: Add more opcode.
31057         * config/riscv/predicates.md (vector_arith_operand): New.
31058         (vector_neg_arith_operand): New.
31059         (vector_shift_operand): New.
31060         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
31061         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
31062         (vsub): Ditto.
31063         (vand): Ditto.
31064         (vor): Ditto.
31065         (vxor): Ditto.
31066         (vsll): Ditto.
31067         (vsra): Ditto.
31068         (vsrl): Ditto.
31069         (vmin): Ditto.
31070         (vmax): Ditto.
31071         (vminu): Ditto.
31072         (vmaxu): Ditto.
31073         (vmul): Ditto.
31074         (vdiv): Ditto.
31075         (vrem): Ditto.
31076         (vdivu): Ditto.
31077         (vremu): Ditto.
31078         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
31079         (vsub): Ditto.
31080         (vand): Ditto.
31081         (vor): Ditto.
31082         (vxor): Ditto.
31083         (vsll): Ditto.
31084         (vsra): Ditto.
31085         (vsrl): Ditto.
31086         (vmin): Ditto.
31087         (vmax): Ditto.
31088         (vminu): Ditto.
31089         (vmaxu): Ditto.
31090         (vmul): Ditto.
31091         (vdiv): Ditto.
31092         (vrem): Ditto.
31093         (vdivu): Ditto.
31094         (vremu): Ditto.
31095         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
31096         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
31097         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
31098         (DEF_RVV_U_OPS): New.
31099         (rvv_arg_type_info::get_base_vector_type): Handle
31100         RVV_BASE_shift_vector.
31101         (rvv_arg_type_info::get_tree_type): Ditto.
31102         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
31103         RVV_BASE_shift_vector.
31104         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
31105         * config/riscv/vector-iterators.md: Handle more opcode.
31106         * config/riscv/vector.md (@pred_<optab><mode>): New.
31108 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
31110         PR target/108589
31111         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
31112         REG_P on SET_DEST.
31114 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
31116         PR tree-optimization/108608
31117         * tree-vect-loop.cc (vect_transform_reduction): Handle single
31118         def-use cycles that involve function calls rather than tree codes.
31120 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
31122         PR tree-optimization/108385
31123         * gimple-range-gori.cc (gori_compute::compute_operand_range):
31124         Allow VARYING computations to continue if there is a relation.
31125         * range-op.cc (pointer_plus_operator::op2_range): New.
31127 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
31129         PR tree-optimization/108359
31130         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
31131         (range_operator::fold_range): If op1 is equivalent to op2 then
31132         invoke new fold_in_parts_equiv to operate on sub-components.
31133         * range-op.h (wi_fold_in_parts_equiv): New prototype.
31135 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
31137         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
31138         not abort calculations if there is a valid relation available.
31139         (gori_compute::refine_using_relation): Pass correct relation trio.
31140         (gori_compute::compute_operand1_range): Create trio and use it.
31141         (gori_compute::compute_operand2_range): Ditto.
31142         * range-op.cc (operator_plus::op1_range): Use correct trio member.
31143         (operator_minus::op1_range): Use correct trio member.
31144         * value-relation.cc (value_relation::create_trio): New.
31145         * value-relation.h (value_relation::create_trio): New prototype.
31147 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
31149         PR target/108599
31150         * config/i386/i386-expand.cc
31151         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
31152         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
31153         equal to bitsize of mode.
31155 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
31157         PR rtl-optimization/108596
31158         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
31159         ends with asm goto and has a crossing fallthrough edge to the same bb
31160         that contains at least one of its labels by restoring EDGE_CROSSING
31161         flag even on possible edge from cur_bb to new_bb successor.
31163 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
31165         PR c++/105593
31166         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
31167         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
31168         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
31169         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
31170         uninitialized automatic variable __W.
31172 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
31174         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
31176 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31178         * config/riscv/riscv-protos.h (get_vector_mode): New function.
31179         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
31180         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
31181         (class loadstore): Adjust for indexed loads/stores support.
31182         (BASE): Ditto.
31183         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
31184         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
31185         (vluxei16): Ditto.
31186         (vluxei32): Ditto.
31187         (vluxei64): Ditto.
31188         (vloxei8): Ditto.
31189         (vloxei16): Ditto.
31190         (vloxei32): Ditto.
31191         (vloxei64): Ditto.
31192         (vsuxei8): Ditto.
31193         (vsuxei16): Ditto.
31194         (vsuxei32): Ditto.
31195         (vsuxei64): Ditto.
31196         (vsoxei8): Ditto.
31197         (vsoxei16): Ditto.
31198         (vsoxei32): Ditto.
31199         (vsoxei64): Ditto.
31200         * config/riscv/riscv-vector-builtins-shapes.cc
31201         (struct indexed_loadstore_def): New class.
31202         (SHAPE): Ditto.
31203         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
31204         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
31205         for indexed loads/stores support.
31206         (check_required_extensions): Ditto.
31207         (rvv_arg_type_info::get_base_vector_type): New function.
31208         (rvv_arg_type_info::get_tree_type): Ditto.
31209         (function_builder::add_unique_function): Adjust for indexed loads/stores
31210         support.
31211         (function_expander::use_exact_insn): New function.
31212         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
31213         indexed loads/stores support.
31214         (struct rvv_arg_type_info): Ditto.
31215         (function_expander::index_mode): New function.
31216         (function_base::apply_tail_policy_p): Ditto.
31217         (function_base::apply_mask_policy_p): Ditto.
31218         * config/riscv/vector-iterators.md (unspec): New unspec.
31219         * config/riscv/vector.md (unspec): Ditto.
31220         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
31221         pattern.
31222         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
31223         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
31224         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
31225         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
31226         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
31227         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
31228         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
31229         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
31230         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
31231         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
31232         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
31233         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
31234         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
31236 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
31238         * config.gcc: Recognize x86_64-*-gnu* targets and include
31239         i386/gnu64.h.
31240         * config/i386/gnu64.h: Define configuration for new target
31241         including ld.so location.
31243 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
31245         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
31246         ampere1a to include SM4.
31248 2023-01-30  Andrew Pinski  <apinski@marvell.com>
31250         PR tree-optimization/108582
31251         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
31252         for middlebb to have no phi nodes.
31254 2023-01-30  Richard Biener  <rguenther@suse.de>
31256         PR tree-optimization/108574
31257         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
31258         sameval and def, ignore the equivalence if there's the
31259         danger of oscillating between two values.
31261 2023-01-30  Andreas Schwab  <schwab@suse.de>
31263         * common/config/riscv/riscv-common.cc
31264         (riscv_option_optimization_table)
31265         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
31266         -fasynchronous-unwind-tables and -funwind-tables.
31267         * config.gcc (riscv*-*-linux*): Define
31268         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
31270 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
31272         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
31273         value of includedir.
31275 2023-01-30  Richard Biener  <rguenther@suse.de>
31277         PR ipa/108511
31278         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
31279         assert.
31281 2023-01-30  liuhongt  <hongtao.liu@intel.com>
31283         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
31284         * doc/invoke.texi: Ditto.
31286 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
31288         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
31289         (stmt_may_terminate_function_p): If assuming return or EH
31290         volatile asm is safe.
31291         (find_always_executed_bbs): Fix handling of terminating BBS and
31292         infinite loops; add debug output.
31293         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
31295 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
31297         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
31298         off-by-one in checking the permissible shift-amount.
31300 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
31302         * doc/extend.texi (Named Address Spaces): Update link to the
31303         AVR-Libc manual.
31305 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
31307         * doc/standards.texi (Standards): Fix markup.
31309 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
31311         * doc/standards.texi (Standards): Update link to Objective-C book.
31313 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
31315         * doc/invoke.texi (Instrumentation Options): Update reference to
31316         AddressSanitizer.
31318 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
31320         * doc/standards.texi: Update Go1 link.
31322 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31324         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
31325         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
31326         Support vlse/vsse.
31327         (BASE): Ditto.
31328         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
31329         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
31330         (vsse): New class.
31331         * config/riscv/riscv-vector-builtins.cc
31332         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
31333         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
31334         (@pred_strided_store<mode>): Ditto.
31336 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31338         * config/riscv/vector.md (tail_policy_op_idx): Remove.
31339         (mask_policy_op_idx): Remove.
31340         (avl_type_op_idx): Remove.
31342 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
31344         PR tree-optimization/96373
31345         * tree.h (sign_mask_for): Declare.
31346         * tree.cc (sign_mask_for): New function.
31347         (signed_or_unsigned_type_for): For vector types, try to use the
31348         related_int_vector_mode.
31349         * genmatch.cc (commutative_op): Handle conditional internal functions.
31350         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
31352 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
31354         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
31355         Use the likely minimum VF when bounding the denominators to
31356         the estimated number of iterations.
31358 2023-01-27  Richard Biener  <rguenther@suse.de>
31360         PR target/55522
31361         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
31362         and -Ofast FP environment side-effects.
31364 2023-01-27  Richard Biener  <rguenther@suse.de>
31366         PR target/55522
31367         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
31368         Don't add crtfastmath.o for -shared.
31370 2023-01-27  Richard Biener  <rguenther@suse.de>
31372         PR target/55522
31373         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
31374         for -shared.
31376 2023-01-27  Richard Biener  <rguenther@suse.de>
31378         PR target/55522
31379         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
31380         crtfastmath.o for -shared.
31382 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
31384         PR tree-optimization/108306
31385         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
31386         varying for shifts that are always out of void range.
31387         (operator_rshift::fold_range): Return [0, 0] not
31388         varying for shifts that are always out of void range.
31390 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
31392         PR tree-optimization/108447
31393         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
31394         Do not attempt to fold HONOR_NAN types.
31396 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31398         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
31399         Remove _m suffix for "vop_m" C++ overloaded API name.
31401 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31403         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
31404         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
31405         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
31406         (vsm): Ditto.
31407         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
31408         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
31409         (vbool64_t): Ditto.
31410         (vbool32_t): Ditto.
31411         (vbool16_t): Ditto.
31412         (vbool8_t): Ditto.
31413         (vbool4_t): Ditto.
31414         (vbool2_t): Ditto.
31415         (vbool1_t): Ditto.
31416         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
31417         (rvv_arg_type_info::get_tree_type): Ditto.
31418         (function_expander::use_contiguous_load_insn): Ditto.
31419         * config/riscv/vector.md (@pred_store<mode>): Ditto.
31421 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31423         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
31424         (vsetvl_discard_result_insn_p): New function.
31425         (reg_killed_by_bb_p): rename to find_reg_killed_by.
31426         (find_reg_killed_by): New name.
31427         (get_vl): allow it to be called by more functions.
31428         (has_vsetvl_killed_avl_p): Add condition.
31429         (get_avl): allow it to be called by more functions.
31430         (insn_should_be_added_p): New function.
31431         (get_all_nonphi_defs): Refine function.
31432         (get_all_sets): Ditto.
31433         (get_same_bb_set): New function.
31434         (any_insn_in_bb_p): Ditto.
31435         (any_set_in_bb_p): Ditto.
31436         (get_vl_vtype_info): Add VLMAX forward optimization.
31437         (source_equal_p): Fix issues.
31438         (extract_single_source): Refine.
31439         (avl_info::multiple_source_equal_p): New function.
31440         (avl_info::operator==): Adjust for final version.
31441         (vl_vtype_info::operator==): Ditto.
31442         (vl_vtype_info::same_avl_p): Ditto.
31443         (vector_insn_info::parse_insn): Ditto.
31444         (vector_insn_info::available_p): New function.
31445         (vector_insn_info::merge): Adjust for final version.
31446         (vector_insn_info::dump): Add hard_empty.
31447         (pass_vsetvl::hard_empty_block_p): New function.
31448         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
31449         (pass_vsetvl::forward_demand_fusion): Ditto.
31450         (pass_vsetvl::demand_fusion): Ditto.
31451         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
31452         (pass_vsetvl::compute_local_properties): Adjust for final version.
31453         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
31454         (pass_vsetvl::refine_vsetvls): Ditto.
31455         (pass_vsetvl::commit_vsetvls): Ditto.
31456         (pass_vsetvl::propagate_avl): New function.
31457         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
31458         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
31460 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
31462         PR other/108560
31463         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
31464         from size_t to int.
31466 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
31468         PR ipa/106061
31469         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
31470         redirection of calls to __builtin_trap in addition to redirection
31471         to __builtin_unreachable.
31473 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31475         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
31477 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31479         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
31480         (emit_vsetvl_insn): Ditto.
31482 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31484         * config/riscv/vector.md: Fix constraints.
31486 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31488         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
31490 2023-01-27  Patrick Palka  <ppalka@redhat.com>
31491             Jakub Jelinek  <jakub@redhat.com>
31493         * tree-core.h (tree_code_type, tree_code_length): For
31494         C++17 and later, add inline keyword, otherwise don't define
31495         the arrays, but declare extern arrays.
31496         * tree.cc (tree_code_type, tree_code_length): Define these
31497         arrays for C++14 and older.
31499 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31501         * config/riscv/riscv-vsetvl.h: Change it into public.
31503 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31505         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
31506         pass.
31508 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31510         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
31512 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31514         * config/riscv/vector.md: Fix incorrect attributes.
31516 2023-01-27  Richard Biener  <rguenther@suse.de>
31518         PR target/55522
31519         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
31520         Don't add crtfastmath.o for -shared.
31522 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
31524         * doc/options.texi (option, RejectNegative): Mention that
31525         -g-started options are also implicitly negatable.
31527 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
31529         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
31530         Use get_typenode_from_name to get fixed-width integer type
31531         nodes.
31532         * config/riscv/riscv-vector-builtins.def: Update define with
31533         fixed-width integer type nodes.
31535 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31537         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
31538         (real_insn_and_same_bb_p): New function.
31539         (same_bb_and_after_or_equal_p): Remove it.
31540         (before_p): New function.
31541         (reg_killed_by_bb_p): Ditto.
31542         (has_vsetvl_killed_avl_p): Ditto.
31543         (get_vl): Move location so that we can call it.
31544         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
31545         (available_occurrence_p): Ditto.
31546         (dominate_probability_p): Remove it.
31547         (can_backward_propagate_p): Remove it.
31548         (get_all_nonphi_defs): New function.
31549         (get_all_predecessors): Ditto.
31550         (any_insn_in_bb_p): Ditto.
31551         (insert_vsetvl): Adjust AVL REG.
31552         (source_equal_p): New function.
31553         (extract_single_source): Ditto.
31554         (avl_info::single_source_equal_p): Ditto.
31555         (avl_info::operator==): Adjust for AVL=REG.
31556         (vl_vtype_info::same_avl_p): Ditto.
31557         (vector_insn_info::set_demand_info): Remove it.
31558         (vector_insn_info::compatible_p): Adjust for AVL=REG.
31559         (vector_insn_info::compatible_avl_p): New function.
31560         (vector_insn_info::merge): Adjust AVL=REG.
31561         (vector_insn_info::dump): Ditto.
31562         (pass_vsetvl::merge_successors): Remove it.
31563         (enum fusion_type): New enum.
31564         (pass_vsetvl::get_backward_fusion_type): New function.
31565         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
31566         (pass_vsetvl::forward_demand_fusion): Ditto.
31567         (pass_vsetvl::demand_fusion): Ditto.
31568         (pass_vsetvl::prune_expressions): Ditto.
31569         (pass_vsetvl::compute_local_properties): Ditto.
31570         (pass_vsetvl::cleanup_vsetvls): Ditto.
31571         (pass_vsetvl::commit_vsetvls): Ditto.
31572         (pass_vsetvl::init): Ditto.
31573         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
31574         (enum merge_type): New enum.
31576 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31578         * config/riscv/riscv-vsetvl.cc
31579         (vector_infos_manager::vector_infos_manager): Add probability.
31580         (vector_infos_manager::dump): Ditto.
31581         (pass_vsetvl::compute_probabilities): Ditto.
31582         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
31584 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31586         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
31587         (vector_insn_info::merge): Ditto.
31588         (vector_insn_info::dump): Ditto.
31589         (pass_vsetvl::merge_successors): Ditto.
31590         (pass_vsetvl::backward_demand_fusion): Ditto.
31591         (pass_vsetvl::forward_demand_fusion): Ditto.
31592         (pass_vsetvl::commit_vsetvls): Ditto.
31593         * config/riscv/riscv-vsetvl.h: Ditto.
31595 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31597         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
31598         rinsn.
31600 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31602         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
31604 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31606         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
31607         Add pre-check for redundant flow.
31609 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31611         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
31612         (vector_infos_manager::free_bitmap_vectors): Ditto.
31613         (pass_vsetvl::pre_vsetvl): Adjust codes.
31614         * config/riscv/riscv-vsetvl.h: New function declaration.
31616 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31618         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
31619         (vector_insn_info::set_demand_info): New function.
31620         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
31621         (pass_vsetvl::merge_successors): Ditto.
31622         (pass_vsetvl::compute_global_backward_infos): Ditto.
31623         (pass_vsetvl::backward_demand_fusion): Ditto.
31624         (pass_vsetvl::forward_demand_fusion): Ditto.
31625         (pass_vsetvl::demand_fusion): New function.
31626         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
31627         * config/riscv/riscv-vsetvl.h: New function declaration.
31629 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31631         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
31633 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31635         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
31636         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
31638 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31640         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
31641         (backward_propagate_worthwhile_p): Fix non-worthwhile.
31643 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31645         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
31647 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31649         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
31650         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
31651         (pass_vsetvl::commit_vsetvls): Ditto.
31652         * config/riscv/riscv-vsetvl.h: New function declaration.
31654 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31656         * config/riscv/vector.md:
31658 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31660         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
31661         pred_store for vse.
31662         * config/riscv/riscv-vector-builtins.cc
31663         (function_expander::add_mem_operand): Refine function.
31664         (function_expander::use_contiguous_load_insn): Adjust new
31665         implementation.
31666         (function_expander::use_contiguous_store_insn): Ditto.
31667         * config/riscv/riscv-vector-builtins.h: Refine function.
31668         * config/riscv/vector.md (@pred_store<mode>): New pattern.
31670 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31672         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
31674 2023-01-26  Marek Polacek  <polacek@redhat.com>
31676         PR middle-end/108543
31677         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
31678         if it was previously set.
31680 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
31682         PR tree-optimization/108540
31683         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
31684         are singletons, use range_true even if op1 != op2
31685         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
31686         even if intersection of the ranges is empty and one has
31687         zero low bound and another zero high bound, use range_true_and_false
31688         rather than range_false.
31689         (foperator_not_equal::fold_range): If both op1 and op2
31690         are singletons, use range_false even if op1 != op2
31691         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
31692         even if intersection of the ranges is empty and one has
31693         zero low bound and another zero high bound, use range_true_and_false
31694         rather than range_true.
31696 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
31698         * value-relation.cc (kind_string): Add const.
31699         (rr_negate_table, rr_swap_table, rr_intersect_table,
31700         rr_union_table, rr_transitive_table): Add static const, change
31701         element type from relation_kind to unsigned char.
31702         (relation_negate, relation_swap, relation_intersect, relation_union,
31703         relation_transitive): Cast rr_*_table element to relation_kind.
31704         (relation_to_code): Add static const.
31705         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
31707 2023-01-26  Richard Biener  <rguenther@suse.de>
31709         PR tree-optimization/108547
31710         * gimple-predicate-analysis.cc (value_sat_pred_p):
31711         Use widest_int.
31713 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
31715         PR tree-optimization/108522
31716         * tree-object-size.cc (compute_object_offset): Make EXPR
31717         argument non-const.  Call component_ref_field_offset.
31719 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31721         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
31722         FEATURE_STRING field.
31724 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
31726         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
31728 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
31730         PR modula2/102343
31731         PR modula2/108182
31732         * gcc.cc: Provide default specs for Modula-2 so that when the
31733         language is not built-in better diagnostics are emitted for
31734         attempts to use .mod or .m2i file extensions.
31736 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
31738         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
31740 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
31742         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
31744 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
31746         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
31747         Fix spacing.
31749 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
31751         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
31753 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
31755         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
31757 2023-01-25  Richard Biener  <rguenther@suse.de>
31759         PR tree-optimization/108523
31760         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
31761         backedge value for the result when using predication to
31762         prove equivalence.
31764 2023-01-25  Richard Biener  <rguenther@suse.de>
31766         * doc/lto.texi (Command line options): Reword and update reference
31767         to removed lto_read_all_file_options.
31769 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
31771         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
31772         tests.
31774 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
31776         * doc/contrib.texi: Add Jose E. Marchesi.
31778 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
31780         PR tree-optimization/108498
31781         * gimple-ssa-store-merging.cc (class store_operand_info):
31782         End coment with full stop rather than comma.
31783         (split_group): Likewise.
31784         (merged_store_group::apply_stores): Clear string_concatenation if
31785         start or end aren't on a byte boundary.
31787 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
31788             Jakub Jelinek  <jakub@redhat.com>
31790         PR tree-optimization/108522
31791         * tree-object-size.cc (compute_object_offset): Use
31792         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
31794 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
31796         * config/xtensa/xtensa.md:
31797         Fix exit from loops detecting references before overwriting in the
31798         split pattern.
31800 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
31802         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
31803         do elimination but only for hard register.
31804         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
31805         calls of get_hard_regno.
31807 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
31809         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
31810         of CPU version.
31812 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
31814         PR target/108177
31815         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
31816         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
31817         as input operand.
31819 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
31821         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
31822         and only include 'csky/t-csky-linux' when enable multilib.
31823         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
31824         define it when disable multilib.
31826 2023-01-24  Richard Biener  <rguenther@suse.de>
31828         PR tree-optimization/108500
31829         * dominance.h (calculate_dominance_info): Add parameter
31830         to indicate fast-query compute, defaulted to true.
31831         * dominance.cc (calculate_dominance_info): Honor
31832         fast-query compute parameter.
31833         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
31834         not compute the dominator fast-query DFS numbers.
31836 2023-01-24  Eric Biggers  <ebiggers@google.com>
31838         PR bootstrap/90543
31839         * optc-save-gen.awk: Fix copy-and-paste error.
31841 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
31843         PR c++/108474
31844         * cgraphbuild.cc: Include gimplify.h.
31845         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
31846         their corresponding DECL_VALUE_EXPR expressions after unsharing.
31848 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
31850         PR target/108505
31851         * config.gcc (tm_file): Move the variable out of loop.
31853 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
31854             Yang Yujie  <yangyujie@loongson.cn>
31856         PR target/107731
31857         * config/loongarch/loongarch.cc (loongarch_classify_address):
31858         Add precessint for CONST_INT.
31859         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
31860         (loongarch_print_operand): Increase the processing of '%c'.
31861         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
31862         And port the public operand modifiers information to this document.
31864 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
31866         * doc/invoke.texi (-mbranch-protection): Update documentation.
31868 2023-01-23  Richard Biener  <rguenther@suse.de>
31870         PR target/55522
31871         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
31872         for -shared.
31873         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
31874         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
31875         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
31876         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
31878 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
31880         * config/arm/aout.h (ra_auth_code): Add entry in enum.
31881         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
31882         to dwarf frame expression.
31883         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
31884         (arm_expand_prologue): Update frame related information and reg notes
31885         for pac/pacbit insn.
31886         (arm_regno_class): Check for pac pseudo reigster.
31887         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
31888         (arm_init_machine_status): Set pacspval_needed to zero.
31889         (arm_debugger_regno): Check for PAC register.
31890         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
31891         register.
31892         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
31893         (arm_unwind_emit): Update REG_CFA_REGISTER case._
31894         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
31895         (DWARF_PAC_REGNUM): Define.
31896         (IS_PAC_REGNUM): Likewise.
31897         (enum reg_class): Add PAC_REG entry.
31898         (machine_function): Add pacbti_needed state to structure.
31899         * config/arm/arm.md (RA_AUTH_CODE): Define.
31901 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
31903         * config.gcc ($tm_file): Update variable.
31904         * config/arm/arm-mlib.h: Create new header file.
31905         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
31906         multilib arch directory.
31907         (MULTILIB_REUSE): Add multilib reuse rules.
31908         (MULTILIB_MATCHES): Add multilib match rules.
31910 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
31912         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
31913         * config/arm/arm-tables.opt: Regenerate.
31914         * config/arm/arm-tune.md: Likewise.
31915         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
31916         * (-mfix-cmse-cve-2021-35465): Likewise.
31918 2023-01-23  Richard Biener  <rguenther@suse.de>
31920         PR tree-optimization/108482
31921         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
31922         .LOOP_DIST_ALIAS calls.
31924 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
31926         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
31927         * config/arm/arm-protos.h: Update.
31928         * config/arm/aarch-common-protos.h: Declare
31929         'aarch_bti_arch_check'.
31930         * config/arm/arm.cc (aarch_bti_enabled) Update.
31931         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
31932         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
31933         * config/arm/arm.md (bti_nop): New insn.
31934         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
31935         (aarch-bti-insert.o): New target.
31936         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
31937         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
31938         compatibility.
31939         (gate): Make use of 'aarch_bti_arch_check'.
31940         * config/arm/arm-passes.def: New file.
31941         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
31943 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
31945         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
31946         'aarch-bti-insert.o'.
31947         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
31948         proto.
31949         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
31950         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
31951         (aarch64_output_mi_thunk)
31952         (aarch64_print_patchable_function_entry)
31953         (aarch64_file_end_indicate_exec_stack): Update renamed function
31954         calls to renamed functions.
31955         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
31956         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
31957         target.
31958         * config/aarch64/aarch64-bti-insert.cc: Delete.
31959         * config/arm/aarch-bti-insert.cc: New file including and
31960         generalizing code from aarch64-bti-insert.cc.
31961         * config/arm/aarch-common-protos.h: Update.
31963 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
31965         * config/arm/arm.h (arm_arch8m_main): Declare it.
31966         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
31967         Declare it.
31968         * config/arm/arm.cc (arm_arch8m_main): Define it.
31969         (arm_option_reconfigure_globals): Set arm_arch8m_main.
31970         (arm_compute_frame_layout, arm_expand_prologue)
31971         (thumb2_expand_return, arm_expand_epilogue)
31972         (arm_conditional_register_usage): Update for pac codegen.
31973         (arm_current_function_pac_enabled_p): New function.
31974         (aarch_bti_enabled) New function.
31975         (use_return_insn): Return zero when pac is enabled.
31976         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
31977         Add new patterns.
31978         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
31979         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
31981 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
31983         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
31984         mbranch-protection.
31986 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
31987             Tejas Belagod   <tbelagod@arm.com>
31989         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
31990         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
31992 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
31993             Tejas Belagod   <tbelagod@arm.com>
31994             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
31996         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
31997         new pseudo register class _UVRSC_PAC.
31999 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
32000             Tejas Belagod   <tbelagod@arm.com>
32002         * config/arm/arm-c.cc (arm_cpu_builtins): Define
32003         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
32004         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
32006 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
32007             Tejas Belagod   <tbelagod@arm.com>
32009         * doc/sourcebuild.texi: Document arm_pacbti_hw.
32011 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
32012             Tejas Belagod   <tbelagod@arm.com>
32013             Richard Earnshaw  <Richard.Earnshaw@arm.com>
32015         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
32016         -mbranch-protection option and initialize appropriate data structures.
32017         * config/arm/arm.opt (-mbranch-protection): New option.
32018         * doc/invoke.texi (Arm Options): Document it.
32020 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
32021             Tejas Belagod   <tbelagod@arm.com>
32023         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
32024         * config/arm/arm-cpus.in (pacbti): New feature.
32025         * doc/invoke.texi (Arm Options): Document it.
32027 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
32028             Tejas Belagod   <tbelagod@arm.com>
32030         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
32031         (all_architectures): Fix comment.
32032         (aarch64_parse_extension): Rename return type, enum value names.
32033         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
32034         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
32035         Also rename corresponding enum values.
32036         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
32037         out aarch64_function_type and move it to common code as
32038         aarch_function_type in aarch-common.h.
32039         * config/aarch64/aarch64-protos.h: Include common types header,
32040         move out types aarch64_parse_opt_result and aarch64_key_type to
32041         aarch-common.h
32042         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
32043         and functions out into aarch-common.h and aarch-common.cc.  Fix up
32044         all the name changes resulting from the move.
32045         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
32046         and enum value.
32047         * config/aarch64/aarch64.opt: Include aarch-common.h to import
32048         type move.  Fix up name changes from factoring out common code and
32049         data.
32050         * config/arm/aarch-common-protos.h: Export factored out routines to both
32051         backends.
32052         * config/arm/aarch-common.cc: Include newly factored out types.
32053         Move all mbranch-protection code and data structures from
32054         aarch64.cc.
32055         * config/arm/aarch-common.h: New header that declares types shared
32056         between aarch32 and aarch64 backends.
32057         * config/arm/arm-protos.h: Declare types and variables that are
32058         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
32059         aarch_ra_sign_scope and aarch_enable_bti.
32060         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
32061         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
32062         * config/arm/arm.cc: Add missing includes.
32064 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
32066         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
32068 2023-01-23  Richard Biener  <rguenther@suse.de>
32070         PR tree-optimization/108449
32071         * cgraphunit.cc (check_global_declaration): Do not turn
32072         undefined statics into externs.
32074 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
32076         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
32077         and HI input modes.
32078         * config/pru/pru.md (clz): Fix generated code for QI and HI
32079         input modes.
32081 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
32083         * config/v850/v850.cc (v850_select_section): Put const volatile
32084         objects into read-only sections.
32086 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
32088         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
32089         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
32090         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
32092 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
32094         PR tree-optimization/108457
32095         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
32096         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
32097         argument instead of a temporary.  Formatting fixes.
32099 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
32101         PR tree-optimization/108447
32102         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
32103         (relation_tests): Add self-tests for relation_{intersect,union}
32104         commutativity.
32105         * selftest.h (relation_tests): Declare.
32106         * function-tests.cc (test_ranges): Call it.
32108 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
32110         PR target/108436
32111         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
32112         invalid third argument to __builtin_ia32_prefetch.
32114 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
32116         PR middle-end/108459
32117         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
32118         than fold_unary for NEGATE_EXPR.
32120 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
32122         PR target/108411
32123         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
32124         comment. Move assert about alignment a bit later.
32126 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
32128         PR tree-optimization/108440
32129         * tree-ssa-forwprop.cc: Include gimple-range.h.
32130         (simplify_rotate): For the forms with T2 wider than T and shift counts of
32131         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
32132         to B.  For the forms with T2 wider than T and shift counts of
32133         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
32134         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
32135         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
32136         pass specific ranger instead of get_global_range_query.
32137         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
32138         been created.
32140 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32142         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
32143         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
32144         the pattern.
32145         (aarch64_simd_vec_copy_lane<mode>): Likewise.
32146         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
32148 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
32150         PR debug/106746
32151         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
32152         within debug insns.
32154 2023-01-18  Martin Jambor  <mjambor@suse.cz>
32156         PR ipa/107944
32157         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
32158         lcone_of chain also do not need the body.
32160 2023-01-18  Richard Biener  <rguenther@suse.de>
32162         Revert:
32163         2022-12-16  Richard Biener  <rguenther@suse.de>
32165         PR middle-end/108086
32166         * tree-inline.cc (remap_ssa_name): Do not unshare the
32167         result from the decl_map.
32169 2023-01-18  Murray Steele  <murray.steele@arm.com>
32171         PR target/108442
32172         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
32173         function.
32174         (__arm_vst1q_p_s8): Likewise.
32175         (__arm_vld1q_z_u8): Likewise.
32176         (__arm_vld1q_z_s8): Likewise.
32177         (__arm_vst1q_p_u16): Likewise.
32178         (__arm_vst1q_p_s16): Likewise.
32179         (__arm_vld1q_z_u16): Likewise.
32180         (__arm_vld1q_z_s16): Likewise.
32181         (__arm_vst1q_p_u32): Likewise.
32182         (__arm_vst1q_p_s32): Likewise.
32183         (__arm_vld1q_z_u32): Likewise.
32184         (__arm_vld1q_z_s32): Likewise.
32185         (__arm_vld1q_z_f16): Likewise.
32186         (__arm_vst1q_p_f16): Likewise.
32187         (__arm_vld1q_z_f32): Likewise.
32188         (__arm_vst1q_p_f32): Likewise.
32190 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32192         * config/xtensa/xtensa.md (xorsi3_internal):
32193         Rename from the original of "xorsi3".
32194         (xorsi3): New expansion pattern that emits addition rather than
32195         bitwise-XOR when the second source is a constant of -2147483648
32196         if TARGET_DENSITY.
32198 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
32199             Andrew Pinski  <apinski@marvell.com>
32201         PR target/108396
32202         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
32203         vec_vsubcuqP with vec_vsubcuq.
32205 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
32207         PR target/108348
32208         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
32209         support for invalid uses of MMA opaque type in function arguments.
32211 2023-01-18  liuhongt  <hongtao.liu@intel.com>
32213         PR target/55522
32214         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
32215         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
32216         -share or -mno-daz-ftz is specified.
32217         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
32218         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
32220 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
32222         * config/bpf/bpf.cc (bpf_option_override): Disable
32223         -fstack-protector.
32225 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
32227         PR tree-optimization/106523
32228         * tree-ssa-forwprop.cc (simplify_rotate): For the
32229         patterns with (-Y) & (B - 1) in one operand's shift
32230         count and Y in another, if T2 has wider precision than T,
32231         punt if Y could have a value in [B, B2 - 1] range.
32233 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
32235         PR target/105980
32236         * config/i386/i386.cc (x86_output_mi_thunk): Disable
32237         -mforce-indirect-call for PIC in 32-bit mode.
32239 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
32241         PR ipa/106077
32242         * ipa-modref.cc (modref_access_analysis::analyze): Use
32243         find_always_executed_bbs.
32244         * ipa-sra.cc (process_scan_results): Likewise.
32245         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
32246         (find_always_executed_bbs): New function.
32247         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
32248         (find_always_executed_bbs): Declare.
32250 2023-01-16  Jan Hubicka  <jh@suse.cz>
32252         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
32253         by TARGET_USE_SCATTER.
32254         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
32255         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
32256         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
32257         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
32258         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
32259         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
32261 2023-01-16  Richard Biener  <rguenther@suse.de>
32263         PR target/55522
32264         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
32266 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
32268         PR target/96795
32269         PR target/107515
32270         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
32271         (__ARM_mve_coerce3): Likewise.
32273 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
32275         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
32277 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
32279         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
32280         (number_of_iterations_bitcount): Add call to the above.
32281         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
32282         c[lt]z idiom recognition.
32284 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
32286         * doc/sourcebuild.texi: Add missing target attributes.
32288 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
32290         PR tree-optimization/94793
32291         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
32292         for c[lt]z optabs.
32293         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
32294         (number_of_iterations_cltz_complement): New.
32295         (number_of_iterations_bitcount): Add call to the above.
32297 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
32299         * doc/extend.texi (Common Function Attributes): Fix grammar.
32301 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
32303         PR other/108413
32304         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
32305         * config/riscv/riscv-vsetvl.cc: Likewise.
32307 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
32309         PR c++/105593
32310         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
32311         disable -Winit-self using pragma GCC diagnostic ignored.
32312         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
32313         Likewise.
32314         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
32315         _mm256_undefined_si256): Likewise.
32316         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
32317         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
32318         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
32319         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
32321 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
32323         PR target/108272
32324         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
32325         support for invalid uses in inline asm, factor out the checking and
32326         erroring to lambda function check_and_error_invalid_use.
32328 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
32330         PR tree-optimization/107608
32331         * range-op-float.cc (range_operator_float::fold_range): Avoid
32332         folding into INF when flag_trapping_math.
32333         * value-range.h (frange::known_isinf): Return false for possible NANs.
32335 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
32337         * config.gcc (csky-*-*): Support --with-float=softfp.
32339 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32341         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
32342         Rename to xtensa_adjust_reg_alloc_order.
32343         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
32344         Ditto.  And also remove code to reorder register numbers for
32345         leaf functions, rename the tables, and adjust the allocation
32346         order for the call0 ABI to use register A0 more.
32347         (xtensa_leaf_regs): Remove.
32348         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
32349         (order_regs_for_local_alloc): Rename as the above.
32350         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
32352 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32354         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
32355         Change to define_insn_and_split to fold ldr+dup to ld1rq.
32356         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
32358 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
32360         * hash-table.h (is_deleted): Precheck !is_empty.
32361         (mark_deleted): Postcheck !is_empty.
32362         (copy constructor): Test is_empty before is_deleted.
32364 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
32366         PR target/40457
32367         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
32368         moves.
32370 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
32372         PR rtl-optimization/108274
32373         * function.cc (thread_prologue_and_epilogue_insns): Also update the
32374         DF information for calls in a few more cases.
32376 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
32378         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
32379         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
32380         define.
32381         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
32382         (MAX_SYNC_LIBFUNC_SIZE): Define.
32383         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
32384         enabled.
32385         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
32386         libcall when sync libcalls are disabled.
32387         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
32388         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
32389         are disabled on 32-bit target.
32390         * config/pa/pa.opt (matomic-libcalls): New option.
32391         * doc/invoke.texi (HPPA Options): Update.
32393 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
32395         PR rtl-optimization/108117
32396         PR rtl-optimization/108132
32397         * sched-deps.cc (deps_analyze_insn): Do not schedule across
32398         calls before reload.
32400 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
32402         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
32403         options for -mlibarch.
32404         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
32405         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
32407 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
32409         * attribs.cc (strict_flex_array_level_of): Move this function to ...
32410         * attribs.h (strict_flex_array_level_of): Remove the declaration.
32411         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
32412         replace the referece to strict_flex_array_level_of with
32413         DECL_NOT_FLEXARRAY.
32414         * tree.cc (component_ref_size): Likewise.
32416 2023-01-13  Richard Biener  <rguenther@suse.de>
32418         PR target/55522
32419         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
32420         crtfastmath.o for -shared.
32421         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
32423 2023-01-13  Richard Biener  <rguenther@suse.de>
32425         PR target/55522
32426         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
32427         crtfastmath.o for -shared.
32428         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
32429         Likewise.
32430         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
32431         Likewise.
32433 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
32435         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
32436         function.
32437         (TARGET_DWARF_FRAME_REG_MODE): Define.
32439 2023-01-13  Richard Biener  <rguenther@suse.de>
32441         PR target/107209
32442         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
32443         update EH info on the fly.
32445 2023-01-13  Richard Biener  <rguenther@suse.de>
32447         PR tree-optimization/108387
32448         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
32449         value before inserting expression into the tables.
32451 2023-01-12  Andrew Pinski  <apinski@marvell.com>
32452             Roger Sayle  <roger@nextmovesoftware.com>
32454         PR tree-optimization/92342
32455         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
32456         Use tcc_comparison and :c for the multiply.
32457         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
32459 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
32460             Richard Sandiford  <richard.sandiford@arm.com>
32462         PR target/105549
32463         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
32464         Check DECL_PACKED for bitfield.
32465         (aarch64_layout_arg): Warn when parameter passing ABI changes.
32466         (aarch64_function_arg_boundary): Do not warn here.
32467         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
32468         changes.
32470 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
32471             Richard Sandiford  <richard.sandiford@arm.com>
32473         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
32474         comment.
32475         (aarch64_layout_arg): Factorize warning conditions.
32476         (aarch64_function_arg_boundary): Fix typo.
32477         * function.cc (currently_expanding_function_start): New variable.
32478         (expand_function_start): Handle
32479         currently_expanding_function_start.
32480         * function.h (currently_expanding_function_start): Declare.
32482 2023-01-12  Richard Biener  <rguenther@suse.de>
32484         PR tree-optimization/99412
32485         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
32486         (swap_ops_for_binary_stmt): Remove reduction handling.
32487         (rewrite_expr_tree_parallel): Adjust.
32488         (reassociate_bb): Likewise.
32489         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
32491 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32493         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
32494         Rearrange the emitting codes.
32496 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32498         * config/xtensa/xtensa.md (*btrue):
32499         Correct value of the attribute "length" that depends on
32500         TARGET_DENSITY and operands, and add '?' character to the register
32501         constraint of the compared operand.
32503 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
32505         * hash-table.h (expand): Check elements and deleted counts.
32506         (verify): Likewise.
32508 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
32510         PR tree-optimization/71343
32511         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
32512         the value number of the expression X << C the same as the value
32513         number for the multiplication X * (1<<C).
32515 2023-01-11  David Faust  <david.faust@oracle.com>
32517         PR target/108293
32518         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
32519         floating point modes.
32521 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
32523         PR tree-optimization/108199
32524         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
32525         for bit-field references.
32527 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
32529         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
32530         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
32531         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
32532         OPTION_MASK_P10_FUSION.
32534 2023-01-11  Richard Biener  <rguenther@suse.de>
32536         PR tree-optimization/107767
32537         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
32538         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
32539         * tree-switch-conversion.cc (switch_conversion::collect):
32540         Count unique non-default targets accounting for later
32541         merging opportunities.
32543 2023-01-11  Martin Liska  <mliska@suse.cz>
32545         PR middle-end/107976
32546         * params.opt: Limit JT params.
32547         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
32549 2023-01-11  Richard Biener  <rguenther@suse.de>
32551         PR tree-optimization/108352
32552         * tree-ssa-threadbackward.cc
32553         (back_threader_profitability::profitable_path_p): Adjust
32554         heuristic that allows non-multi-way branch threads creating
32555         irreducible loops.
32556         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
32557         (--param fsm-scale-path-stmts): Adjust.
32558         * params.opt (--param=fsm-scale-path-blocks=): Remove.
32559         (-param=fsm-scale-path-stmts=): Adjust description.
32561 2023-01-11  Richard Biener  <rguenther@suse.de>
32563         PR tree-optimization/108353
32564         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
32565         Remove.
32566         (add_ssa_edge): Simplify.
32567         (add_control_edge): Likewise.
32568         (ssa_prop_init): Likewise.
32569         (ssa_prop_fini): Likewise.
32570         (ssa_propagation_engine::ssa_propagate): Likewise.
32572 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
32574         * config/s390/s390.md (*not<mode>): New pattern.
32576 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32578         * config/xtensa/xtensa.cc (xtensa_insn_cost):
32579         Let insn cost for size be obtained by applying COSTS_N_INSNS()
32580         to instruction length and then dividing by 3.
32582 2023-01-10  Richard Biener  <rguenther@suse.de>
32584         PR tree-optimization/106293
32585         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
32586         process degenerate PHI defs.
32588 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
32590         PR rtl-optimization/106421
32591         * cprop.cc (bypass_block): Check that DEST is local to this
32592         function (non-NULL) before calling find_edge.
32594 2023-01-10  Martin Jambor  <mjambor@suse.cz>
32596         PR ipa/108110
32597         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
32598         sort_replacements, lookup_first_base_replacement and
32599         m_sorted_replacements_p.
32600         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
32601         (ipa_param_body_adjustments::register_replacement): Set
32602         m_sorted_replacements_p to false.
32603         (compare_param_body_replacement): New function.
32604         (ipa_param_body_adjustments::sort_replacements): Likewise.
32605         (ipa_param_body_adjustments::common_initialization): Call
32606         sort_replacements.
32607         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
32608         m_sorted_replacements_p.
32609         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
32610         std::lower_bound.
32611         (ipa_param_body_adjustments::lookup_first_base_replacement): New
32612         function.
32613         (ipa_param_body_adjustments::modify_call_stmt): Use
32614         lookup_first_base_replacement.
32615         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
32616         adjustments->sort_replacements.
32618 2023-01-10  Richard Biener  <rguenther@suse.de>
32620         PR tree-optimization/108314
32621         * tree-vect-stmts.cc (vectorizable_condition): Do not
32622         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
32624 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
32626         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
32628 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
32630         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
32632 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
32634         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
32635         defines for soft float abi.
32637 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
32639         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
32640         (smart_bclri): Likewise.
32641         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
32642         (fast_bclri): Likewise.
32643         (fast_cmpnesi_i): Likewise.
32644         (*fast_cmpltsi_i): Likewise.
32645         (*fast_cmpgeusi_i): Likewise.
32647 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
32649         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
32650         flag_fp_int_builtin_inexact || !flag_trapping_math.
32651         (<frm_pattern><mode>2): Likewise.
32653 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
32655         * config/s390/s390.cc (s390_register_info): Check call_used_regs
32656         instead of hard-coding the register numbers for call saved
32657         registers.
32658         (s390_optimize_register_info): Likewise.
32660 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
32662         * doc/gm2.texi (Overview): Fix @node markers.
32663         (Using): Likewise.  Remove subsections that were moved to Overview
32664         from the menu and move others around.
32666 2023-01-09  Richard Biener  <rguenther@suse.de>
32668         PR middle-end/108209
32669         * genmatch.cc (commutative_op): Fix return value for
32670         user-id with non-commutative first replacement.
32672 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
32674         PR target/107453
32675         * calls.cc (expand_call): For calls with
32676         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
32677         Formatting fix.
32679 2023-01-09  Richard Biener  <rguenther@suse.de>
32681         PR middle-end/69482
32682         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
32683         qualified accesses also force objects to memory.
32685 2023-01-09  Martin Liska  <mliska@suse.cz>
32687         PR lto/108330
32688         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
32689         NULL (deleleted value) to a hash_set.
32691 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32693         * config/xtensa/xtensa.md (*splice_bits):
32694         New insn_and_split pattern.
32696 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
32698         * config/xtensa/xtensa.cc
32699         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
32700         New helper functions.
32701         (xtensa_set_return_address, xtensa_output_mi_thunk):
32702         Change to use the helper function.
32703         (xtensa_emit_adjust_stack_ptr): Ditto.
32704         And also change to try reusing the content of scratch register
32705         A9 if the register is not modified in the function body.
32707 2023-01-07  LIU Hao  <lh_mouse@126.com>
32709         PR middle-end/108300
32710         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
32711         before <windows.h>.
32712         * diagnostic-color.cc: Likewise.
32713         * plugin.cc: Likewise.
32714         * prefix.cc: Likewise.
32716 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
32718         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
32719         for handling real integer types.
32721 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
32723         Revert:
32724         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
32726         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
32727         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
32728         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
32729         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
32730         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
32731         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
32732         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
32733         (aarch64_simd_dupv2hf): New.
32734         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
32735         Add E_V2HFmode.
32736         * config/aarch64/iterators.md (VHSDF_P): New.
32737         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
32738         Vel, q, vp): Add V2HF.
32739         * config/arm/types.md (neon_fp_reduc_add_h): New.
32741 2023-01-06  Martin Liska  <mliska@suse.cz>
32743         PR middle-end/107966
32744         * doc/options.texi: Fix Var documentation in internal manual.
32746 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
32748         Revert:
32749         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
32751         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
32752         RTL expansion to allow condition (mask) to be shared/reused,
32753         by avoiding overwriting pseudos and adding REG_EQUAL notes.
32755 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
32757         * common.opt: Add -static-libgm2.
32758         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
32759         * doc/gm2.texi: Document static-libgm2.
32760         * gcc.cc (driver_handle_option): Allow static-libgm2.
32762 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
32764         * common/config/i386/i386-common.cc (processor_alias_table):
32765         Use CPU_ZNVER4 for znver4.
32766         * config/i386/i386.md: Add znver4.md.
32767         * config/i386/znver4.md: New.
32769 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
32771         PR tree-optimization/108253
32772         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
32773         types.
32775 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
32777         PR middle-end/108237
32778         * generic-match-head.cc: Include tree-pass.h.
32779         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
32780         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
32781         resp. PROP_gimple_lvec property set.
32783 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
32785         PR sanitizer/108256
32786         * convert.cc (do_narrow): Punt for MULT_EXPR if original
32787         type doesn't wrap around and -fsanitize=signed-integer-overflow
32788         is on.
32789         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
32791 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
32793         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
32794         * common/config/i386/i386-common.cc: Add Emeraldrapids.
32796 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
32798         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
32799         for meteorlake.
32801 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
32803         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
32804         default constructor to initialize it.
32805         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
32806         for last and iterate to handle recursive calls.  Delete leftover
32807         candidates at the end.
32808         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
32809         on local clones.
32810         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
32811         gc_candidate bit when a clone is used.
32813 2023-01-03  Florian Weimer  <fweimer@redhat.com>
32815         Revert:
32816         2023-01-02  Florian Weimer  <fweimer@redhat.com>
32818         * dwarf2cfi.cc (init_return_column_size): Remove.
32819         (init_one_dwarf_reg_size): Adjust.
32820         (generate_dwarf_reg_sizes): New function.  Extracted
32821         from expand_builtin_init_dwarf_reg_sizes.
32822         (expand_builtin_init_dwarf_reg_sizes): Call
32823         generate_dwarf_reg_sizes.
32824         * target.def (init_dwarf_reg_sizes_extra): Adjust
32825         hook signature.
32826         * config/msp430/msp430.cc
32827         (msp430_init_dwarf_reg_sizes_extra): Adjust.
32828         * config/rs6000/rs6000.cc
32829         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
32830         * doc/tm.texi: Update.
32832 2023-01-03  Florian Weimer  <fweimer@redhat.com>
32834         Revert:
32835         2023-01-02  Florian Weimer  <fweimer@redhat.com>
32837         * debug.h (dwarf_reg_sizes_constant): Declare.
32838         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
32840 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
32842         PR tree-optimization/105043
32843         * doc/extend.texi (Object Size Checking): Split out into two
32844         subsections and mention _FORTIFY_SOURCE.
32846 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
32848         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
32849         RTL expansion to allow condition (mask) to be shared/reused,
32850         by avoiding overwriting pseudos and adding REG_EQUAL notes.
32852 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
32854         PR target/108229
32855         * config/i386/i386-features.cc
32856         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
32857         the gain/cost of converting a MEM operand.
32859 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
32861         PR middle-end/108264
32862         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
32863         from source which doesn't have scalar integral mode first convert
32864         it to outer_mode.
32866 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
32868         PR rtl-optimization/108263
32869         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
32870         asm goto to EXIT.
32872 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
32874         PR target/87832
32875         * config/i386/lujiazui.md (lujiazui_div): New automaton.
32876         (lua_div): New unit.
32877         (lua_idiv_qi): Correct unit in the reservation.
32878         (lua_idiv_qi_load): Ditto.
32879         (lua_idiv_hi): Ditto.
32880         (lua_idiv_hi_load): Ditto.
32881         (lua_idiv_si): Ditto.
32882         (lua_idiv_si_load): Ditto.
32883         (lua_idiv_di): Ditto.
32884         (lua_idiv_di_load): Ditto.
32885         (lua_fdiv_SF): Ditto.
32886         (lua_fdiv_SF_load): Ditto.
32887         (lua_fdiv_DF): Ditto.
32888         (lua_fdiv_DF_load): Ditto.
32889         (lua_fdiv_XF): Ditto.
32890         (lua_fdiv_XF_load): Ditto.
32891         (lua_ssediv_SF): Ditto.
32892         (lua_ssediv_load_SF): Ditto.
32893         (lua_ssediv_V4SF): Ditto.
32894         (lua_ssediv_load_V4SF): Ditto.
32895         (lua_ssediv_V8SF): Ditto.
32896         (lua_ssediv_load_V8SF): Ditto.
32897         (lua_ssediv_SD): Ditto.
32898         (lua_ssediv_load_SD): Ditto.
32899         (lua_ssediv_V2DF): Ditto.
32900         (lua_ssediv_load_V2DF): Ditto.
32901         (lua_ssediv_V4DF): Ditto.
32902         (lua_ssediv_load_V4DF): Ditto.
32904 2023-01-02  Florian Weimer  <fweimer@redhat.com>
32906         * debug.h (dwarf_reg_sizes_constant): Declare.
32907         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
32909 2023-01-02  Florian Weimer  <fweimer@redhat.com>
32911         * dwarf2cfi.cc (init_return_column_size): Remove.
32912         (init_one_dwarf_reg_size): Adjust.
32913         (generate_dwarf_reg_sizes): New function.  Extracted
32914         from expand_builtin_init_dwarf_reg_sizes.
32915         (expand_builtin_init_dwarf_reg_sizes): Call
32916         generate_dwarf_reg_sizes.
32917         * target.def (init_dwarf_reg_sizes_extra): Adjust
32918         hook signature.
32919         * config/msp430/msp430.cc
32920         (msp430_init_dwarf_reg_sizes_extra): Adjust.
32921         * config/rs6000/rs6000.cc
32922         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
32923         * doc/tm.texi: Update.
32925 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
32927         * gcc.cc (process_command): Update copyright notice dates.
32928         * gcov-dump.cc (print_version): Ditto.
32929         * gcov.cc (print_version): Ditto.
32930         * gcov-tool.cc (print_version): Ditto.
32931         * gengtype.cc (create_file): Ditto.
32932         * doc/cpp.texi: Bump @copying's copyright year.
32933         * doc/cppinternals.texi: Ditto.
32934         * doc/gcc.texi: Ditto.
32935         * doc/gccint.texi: Ditto.
32936         * doc/gcov.texi: Ditto.
32937         * doc/install.texi: Ditto.
32938         * doc/invoke.texi: Ditto.
32940 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
32941             Uroš Bizjak  <ubizjak@gmail.com>
32943         * config/i386/i386.md (extendditi2): New define_insn.
32944         (define_split): Use DWIH mode iterator to treat new extendditi2
32945         identically to existing extendsidi2_1.
32946         (define_peephole2): Likewise.
32947         (define_peephole2): Likewise.
32948         (define_Split): Likewise.
32951 Copyright (C) 2023 Free Software Foundation, Inc.
32953 Copying and distribution of this file, with or without modification,
32954 are permitted in any medium without royalty provided the copyright
32955 notice and this notice are preserved.